From ca6b3d0bacf47a9934d55e154e2e813d382ab72a Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 25 Aug 2021 01:32:39 +0200 Subject: [PATCH] [ts] Modularize spine-canvas, fixup rollup setup --- .gitignore | 2 + spine-ts/build/spine-all.d.ts | 1925 -- spine-ts/build/spine-all.js | 13259 ---------- spine-ts/build/spine-all.js.map | 1 - spine-ts/build/spine-canvas.d.ts | 1289 - spine-ts/build/spine-canvas.js | 20603 +++++++++------- spine-ts/build/spine-canvas.js.map | 2 +- spine-ts/build/spine-core.d.ts | 4473 +++- spine-ts/build/spine-core.js | 3304 ++- spine-ts/build/spine-core.js.map | 2 +- spine-ts/build/spine-player.d.ts | 1830 -- spine-ts/build/spine-player.js | 12591 ---------- spine-ts/build/spine-player.js.map | 1 - spine-ts/build/spine-threejs.d.ts | 1323 - spine-ts/build/spine-threejs.js | 9418 ------- spine-ts/build/spine-threejs.js.map | 1 - spine-ts/build/spine-webgl.d.ts | 1681 -- spine-ts/build/spine-webgl.js | 11623 --------- spine-ts/build/spine-webgl.js.map | 1 - spine-ts/package-lock.json | 46 +- spine-ts/package.json | 14 +- spine-ts/rollup.config.js | 34 + spine-ts/spine-canvas/package.json | 32 + spine-ts/spine-canvas/src/AssetManager.ts | 11 +- spine-ts/spine-canvas/src/CanvasTexture.ts | 18 +- spine-ts/spine-canvas/src/SkeletonRenderer.ts | 505 +- spine-ts/spine-canvas/src/index.ts | 28 + spine-ts/spine-canvas/tsconfig.json | 19 + spine-ts/spine-core/package.json | 16 +- spine-ts/spine-core/rollup.config.js | 16 - .../{AssetManager.ts => AssetManagerBase.ts} | 2 +- spine-ts/spine-core/src/TextureAtlas.ts | 4 +- spine-ts/spine-core/src/attachments/index.ts | 8 + spine-ts/spine-core/src/index.ts | 84 +- spine-ts/spine-core/tsconfig.json | 22 +- spine-ts/tsconfig.base.json | 21 + spine-ts/tsconfig.build.json | 4 - spine-ts/tsconfig.json | 23 +- 38 files changed, 17717 insertions(+), 66519 deletions(-) delete mode 100644 spine-ts/build/spine-all.d.ts delete mode 100644 spine-ts/build/spine-all.js delete mode 100644 spine-ts/build/spine-all.js.map delete mode 100644 spine-ts/build/spine-canvas.d.ts delete mode 100644 spine-ts/build/spine-player.d.ts delete mode 100644 spine-ts/build/spine-player.js delete mode 100644 spine-ts/build/spine-player.js.map delete mode 100644 spine-ts/build/spine-threejs.d.ts delete mode 100644 spine-ts/build/spine-threejs.js delete mode 100644 spine-ts/build/spine-threejs.js.map delete mode 100644 spine-ts/build/spine-webgl.d.ts delete mode 100644 spine-ts/build/spine-webgl.js delete mode 100644 spine-ts/build/spine-webgl.js.map create mode 100644 spine-ts/rollup.config.js create mode 100644 spine-ts/spine-canvas/package.json create mode 100644 spine-ts/spine-canvas/src/index.ts create mode 100644 spine-ts/spine-canvas/tsconfig.json delete mode 100644 spine-ts/spine-core/rollup.config.js rename spine-ts/spine-core/src/{AssetManager.ts => AssetManagerBase.ts} (99%) create mode 100644 spine-ts/spine-core/src/attachments/index.ts create mode 100644 spine-ts/tsconfig.base.json delete mode 100644 spine-ts/tsconfig.build.json diff --git a/.gitignore b/.gitignore index ac35f3997..c57aa6ac3 100644 --- a/.gitignore +++ b/.gitignore @@ -149,3 +149,5 @@ cmake-build-debug-visual-studio spine-cocos2dx/build-v4/ spine-cocos2dx/example-v4/cocos2d spine-cocos2dx/example-v4/cocos2dx.zip +spine-ts/spine-canvas/dist +spine-ts/spine-core/dist diff --git a/spine-ts/build/spine-all.d.ts b/spine-ts/build/spine-all.d.ts deleted file mode 100644 index 2bb7c36f4..000000000 --- a/spine-ts/build/spine-all.d.ts +++ /dev/null @@ -1,1925 +0,0 @@ -declare module spine { - class Animation { - name: string; - timelines: Array; - timelineIds: StringSet; - duration: number; - constructor(name: string, timelines: Array, duration: number); - setTimelines(timelines: Array): void; - hasTimeline(ids: string[]): boolean; - apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - enum MixBlend { - setup = 0, - first = 1, - replace = 2, - add = 3 - } - enum MixDirection { - mixIn = 0, - mixOut = 1 - } - abstract class Timeline { - propertyIds: string[]; - frames: ArrayLike; - constructor(frameCount: number, propertyIds: string[]); - getPropertyIds(): string[]; - getFrameEntries(): number; - getFrameCount(): number; - getDuration(): number; - abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - static search1(frames: ArrayLike, time: number): number; - static search(frames: ArrayLike, time: number, step: number): number; - } - interface BoneTimeline { - boneIndex: number; - } - interface SlotTimeline { - slotIndex: number; - } - abstract class CurveTimeline extends Timeline { - protected curves: ArrayLike; - constructor(frameCount: number, bezierCount: number, propertyIds: string[]); - setLinear(frame: number): void; - setStepped(frame: number): void; - shrink(bezierCount: number): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number; - } - abstract class CurveTimeline1 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value: number): void; - getCurveValue(time: number): number; - } - abstract class CurveTimeline2 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId1: string, propertyId2: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value1: number, value2: number): void; - } - class RotateTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBATimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AlphaTimeline extends CurveTimeline1 implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBA2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGB2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AttachmentTimeline extends Timeline implements SlotTimeline { - slotIndex: number; - attachmentNames: Array; - constructor(frameCount: number, slotIndex: number); - getFrameCount(): number; - setFrame(frame: number, time: number, attachmentName: string): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; - } - class DeformTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - attachment: VertexAttachment; - vertices: Array>; - constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment); - getFrameCount(): number; - setFrame(frame: number, time: number, vertices: ArrayLike): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getCurvePercent(time: number, frame: number): number; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class EventTimeline extends Timeline { - static propertyIds: string[]; - events: Array; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, event: Event): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class DrawOrderTimeline extends Timeline { - static propertyIds: string[]; - drawOrders: Array>; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, time: number, drawOrder: Array): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class IkConstraintTimeline extends CurveTimeline { - ikConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TransformConstraintTimeline extends CurveTimeline { - transformConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintPositionTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintSpacingTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintMixTimeline extends CurveTimeline { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } -} -declare module spine { - class AnimationState { - private static emptyAnimation; - data: AnimationStateData; - tracks: TrackEntry[]; - timeScale: number; - unkeyedState: number; - events: Event[]; - listeners: AnimationStateListener[]; - queue: EventQueue; - propertyIDs: StringSet; - animationsChanged: boolean; - trackEntryPool: Pool; - constructor(data: AnimationStateData); - update(delta: number): void; - updateMixingFrom(to: TrackEntry, delta: number): boolean; - apply(skeleton: Skeleton): boolean; - applyMixingFrom(to: TrackEntry, skeleton: Skeleton, blend: MixBlend): number; - applyAttachmentTimeline(timeline: AttachmentTimeline, skeleton: Skeleton, time: number, blend: MixBlend, attachments: boolean): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string, attachments: boolean): void; - applyRotateTimeline(timeline: RotateTimeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array, i: number, firstFrame: boolean): void; - queueEvents(entry: TrackEntry, animationTime: number): void; - clearTracks(): void; - clearTrack(trackIndex: number): void; - setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; - setAnimation(trackIndex: number, animationName: string, loop?: boolean): TrackEntry; - setAnimationWith(trackIndex: number, animation: Animation, loop?: boolean): TrackEntry; - addAnimation(trackIndex: number, animationName: string, loop?: boolean, delay?: number): TrackEntry; - addAnimationWith(trackIndex: number, animation: Animation, loop?: boolean, delay?: number): TrackEntry; - setEmptyAnimation(trackIndex: number, mixDuration?: number): TrackEntry; - addEmptyAnimation(trackIndex: number, mixDuration?: number, delay?: number): TrackEntry; - setEmptyAnimations(mixDuration?: number): void; - expandToIndex(index: number): TrackEntry; - trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; - clearNext(entry: TrackEntry): void; - _animationsChanged(): void; - computeHold(entry: TrackEntry): void; - getCurrent(trackIndex: number): TrackEntry; - addListener(listener: AnimationStateListener): void; - removeListener(listener: AnimationStateListener): void; - clearListeners(): void; - clearListenerNotifications(): void; - } - class TrackEntry { - animation: Animation; - previous: TrackEntry; - next: TrackEntry; - mixingFrom: TrackEntry; - mixingTo: TrackEntry; - listener: AnimationStateListener; - trackIndex: number; - loop: boolean; - holdPrevious: boolean; - reverse: boolean; - eventThreshold: number; - attachmentThreshold: number; - drawOrderThreshold: number; - animationStart: number; - animationEnd: number; - animationLast: number; - nextAnimationLast: number; - delay: number; - trackTime: number; - trackLast: number; - nextTrackLast: number; - trackEnd: number; - timeScale: number; - alpha: number; - mixTime: number; - mixDuration: number; - interruptAlpha: number; - totalAlpha: number; - mixBlend: MixBlend; - timelineMode: number[]; - timelineHoldMix: TrackEntry[]; - timelinesRotation: number[]; - reset(): void; - getAnimationTime(): number; - setAnimationLast(animationLast: number): void; - isComplete(): boolean; - resetRotationDirections(): void; - getTrackComplete(): number; - } - class EventQueue { - objects: Array; - drainDisabled: boolean; - animState: AnimationState; - constructor(animState: AnimationState); - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - drain(): void; - clear(): void; - } - enum EventType { - start = 0, - interrupt = 1, - end = 2, - dispose = 3, - complete = 4, - event = 5 - } - interface AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } - abstract class AnimationStateAdapter implements AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } -} -declare module spine { - class AnimationStateData { - skeletonData: SkeletonData; - animationToMixTime: Map; - defaultMix: number; - constructor(skeletonData: SkeletonData); - setMix(fromName: string, toName: string, duration: number): void; - setMixWith(from: Animation, to: Animation, duration: number): void; - getMix(from: Animation, to: Animation): number; - } -} -declare module spine { - class AssetManager implements Disposable { - private pathPrefix; - private textureLoader; - private downloader; - private assets; - private errors; - private toLoad; - private loaded; - constructor(textureLoader: (image: HTMLImageElement | ImageBitmap) => Texture, pathPrefix?: string, downloader?: Downloader); - private start; - private success; - private error; - setRawDataURI(path: string, data: string): void; - loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, message: string) => void): void; - loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, message: string) => void): void; - loadJson(path: string, success?: (path: string, object: object) => void, error?: (path: string, message: string) => void): void; - loadTexture(path: string, success?: (path: string, texture: Texture) => void, error?: (path: string, message: string) => void): void; - loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, message: string) => void): void; - get(path: string): any; - require(path: string): any; - remove(path: string): any; - removeAll(): void; - isLoadingComplete(): boolean; - getToLoad(): number; - getLoaded(): number; - dispose(): void; - hasErrors(): boolean; - getErrors(): Map; - } - class Downloader { - private callbacks; - rawDataUris: Map; - downloadText(url: string, success: (data: string) => void, error: (status: number, responseText: string) => void): void; - downloadJson(url: string, success: (data: object) => void, error: (status: number, responseText: string) => void): void; - downloadBinary(url: string, success: (data: Uint8Array) => void, error: (status: number, responseText: string) => void): void; - private start; - private finish; - } -} -declare module spine { - class AtlasAttachmentLoader implements AttachmentLoader { - atlas: TextureAtlas; - constructor(atlas: TextureAtlas); - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - class Bone implements Updatable { - data: BoneData; - skeleton: Skeleton; - parent: Bone; - children: Bone[]; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - ax: number; - ay: number; - arotation: number; - ascaleX: number; - ascaleY: number; - ashearX: number; - ashearY: number; - a: number; - b: number; - c: number; - d: number; - worldY: number; - worldX: number; - sorted: boolean; - active: boolean; - constructor(data: BoneData, skeleton: Skeleton, parent: Bone); - isActive(): boolean; - update(): void; - updateWorldTransform(): void; - updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; - setToSetupPose(): void; - getWorldRotationX(): number; - getWorldRotationY(): number; - getWorldScaleX(): number; - getWorldScaleY(): number; - updateAppliedTransform(): void; - worldToLocal(world: Vector2): Vector2; - localToWorld(local: Vector2): Vector2; - worldToLocalRotation(worldRotation: number): number; - localToWorldRotation(localRotation: number): number; - rotateWorld(degrees: number): void; - } -} -declare module spine { - class BoneData { - index: number; - name: string; - parent: BoneData; - length: number; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - transformMode: TransformMode; - skinRequired: boolean; - color: Color; - constructor(index: number, name: string, parent: BoneData); - } - enum TransformMode { - Normal = 0, - OnlyTranslation = 1, - NoRotationOrReflection = 2, - NoScale = 3, - NoScaleOrReflection = 4 - } -} -declare module spine { - abstract class ConstraintData { - name: string; - order: number; - skinRequired: boolean; - constructor(name: string, order: number, skinRequired: boolean); - } -} -declare module spine { - class Event { - data: EventData; - intValue: number; - floatValue: number; - stringValue: string; - time: number; - volume: number; - balance: number; - constructor(time: number, data: EventData); - } -} -declare module spine { - class EventData { - name: string; - intValue: number; - floatValue: number; - stringValue: string; - audioPath: string; - volume: number; - balance: number; - constructor(name: string); - } -} -declare module spine { - class IkConstraint implements Updatable { - data: IkConstraintData; - bones: Array; - target: Bone; - bendDirection: number; - compress: boolean; - stretch: boolean; - mix: number; - softness: number; - active: boolean; - constructor(data: IkConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; - apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, uniform: boolean, softness: number, alpha: number): void; - } -} -declare module spine { - class IkConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - bendDirection: number; - compress: boolean; - stretch: boolean; - uniform: boolean; - mix: number; - softness: number; - constructor(name: string); - } -} -declare module spine { - class PathConstraint implements Updatable { - static NONE: number; - static BEFORE: number; - static AFTER: number; - static epsilon: number; - data: PathConstraintData; - bones: Array; - target: Slot; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - spaces: number[]; - positions: number[]; - world: number[]; - curves: number[]; - lengths: number[]; - segments: number[]; - active: boolean; - constructor(data: PathConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[]; - addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; - } -} -declare module spine { - class PathConstraintData extends ConstraintData { - bones: BoneData[]; - target: SlotData; - positionMode: PositionMode; - spacingMode: SpacingMode; - rotateMode: RotateMode; - offsetRotation: number; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - constructor(name: string); - } - enum PositionMode { - Fixed = 0, - Percent = 1 - } - enum SpacingMode { - Length = 0, - Fixed = 1, - Percent = 2, - Proportional = 3 - } - enum RotateMode { - Tangent = 0, - Chain = 1, - ChainScale = 2 - } -} -declare module spine { - class Skeleton { - data: SkeletonData; - bones: Array; - slots: Array; - drawOrder: Array; - ikConstraints: Array; - transformConstraints: Array; - pathConstraints: Array; - _updateCache: Updatable[]; - skin: Skin; - color: Color; - time: number; - scaleX: number; - scaleY: number; - x: number; - y: number; - constructor(data: SkeletonData); - updateCache(): void; - sortIkConstraint(constraint: IkConstraint): void; - sortPathConstraint(constraint: PathConstraint): void; - sortTransformConstraint(constraint: TransformConstraint): void; - sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; - sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; - sortBone(bone: Bone): void; - sortReset(bones: Array): void; - updateWorldTransform(): void; - updateWorldTransformWith(parent: Bone): void; - setToSetupPose(): void; - setBonesToSetupPose(): void; - setSlotsToSetupPose(): void; - getRootBone(): Bone; - findBone(boneName: string): Bone; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): Slot; - findSlotIndex(slotName: string): number; - setSkinByName(skinName: string): void; - setSkin(newSkin: Skin): void; - getAttachmentByName(slotName: string, attachmentName: string): Attachment; - getAttachment(slotIndex: number, attachmentName: string): Attachment; - setAttachment(slotName: string, attachmentName: string): void; - findIkConstraint(constraintName: string): IkConstraint; - findTransformConstraint(constraintName: string): TransformConstraint; - findPathConstraint(constraintName: string): PathConstraint; - getBounds(offset: Vector2, size: Vector2, temp?: Array): void; - update(delta: number): void; - } -} -declare module spine { - class SkeletonBinary { - scale: number; - attachmentLoader: AttachmentLoader; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(binary: Uint8Array): SkeletonData; - private readSkin; - private readAttachment; - private readVertices; - private readFloatArray; - private readShortArray; - private readAnimation; - } -} -declare module spine { - class SkeletonBounds { - minX: number; - minY: number; - maxX: number; - maxY: number; - boundingBoxes: BoundingBoxAttachment[]; - polygons: ArrayLike[]; - private polygonPool; - update(skeleton: Skeleton, updateAabb: boolean): void; - aabbCompute(): void; - aabbContainsPoint(x: number, y: number): boolean; - aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; - aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; - containsPoint(x: number, y: number): BoundingBoxAttachment; - containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; - intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; - intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; - getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; - getWidth(): number; - getHeight(): number; - } -} -declare module spine { - class SkeletonClipping { - private triangulator; - private clippingPolygon; - private clipOutput; - clippedVertices: number[]; - clippedTriangles: number[]; - private scratch; - private clipAttachment; - private clippingPolygons; - clipStart(slot: Slot, clip: ClippingAttachment): number; - clipEndWithSlot(slot: Slot): void; - clipEnd(): void; - isClipping(): boolean; - clipTriangles(vertices: ArrayLike, verticesLength: number, triangles: ArrayLike, trianglesLength: number, uvs: ArrayLike, light: Color, dark: Color, twoColor: boolean): void; - clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array, output: Array): boolean; - static makeClockwise(polygon: ArrayLike): void; - } -} -declare module spine { - class SkeletonData { - name: string; - bones: BoneData[]; - slots: SlotData[]; - skins: Skin[]; - defaultSkin: Skin; - events: EventData[]; - animations: Animation[]; - ikConstraints: IkConstraintData[]; - transformConstraints: TransformConstraintData[]; - pathConstraints: PathConstraintData[]; - x: number; - y: number; - width: number; - height: number; - version: string; - hash: string; - fps: number; - imagesPath: string; - audioPath: string; - findBone(boneName: string): BoneData; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): SlotData; - findSlotIndex(slotName: string): number; - findSkin(skinName: string): Skin; - findEvent(eventDataName: string): EventData; - findAnimation(animationName: string): Animation; - findIkConstraint(constraintName: string): IkConstraintData; - findTransformConstraint(constraintName: string): TransformConstraintData; - findPathConstraint(constraintName: string): PathConstraintData; - } -} -declare module spine { - class SkeletonJson { - attachmentLoader: AttachmentLoader; - scale: number; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(json: string | any): SkeletonData; - readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; - readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; - readAnimation(map: any, name: string, skeletonData: SkeletonData): void; - } -} -declare module spine { - class SkinEntry { - slotIndex: number; - name: string; - attachment: Attachment; - constructor(slotIndex: number, name: string, attachment: Attachment); - } - class Skin { - name: string; - attachments: Map[]; - bones: BoneData[]; - constraints: ConstraintData[]; - constructor(name: string); - setAttachment(slotIndex: number, name: string, attachment: Attachment): void; - addSkin(skin: Skin): void; - copySkin(skin: Skin): void; - getAttachment(slotIndex: number, name: string): Attachment; - removeAttachment(slotIndex: number, name: string): void; - getAttachments(): Array; - getAttachmentsForSlot(slotIndex: number, attachments: Array): void; - clear(): void; - attachAll(skeleton: Skeleton, oldSkin: Skin): void; - } -} -declare module spine { - class Slot { - data: SlotData; - bone: Bone; - color: Color; - darkColor: Color; - attachment: Attachment; - private attachmentTime; - attachmentState: number; - deform: number[]; - constructor(data: SlotData, bone: Bone); - getSkeleton(): Skeleton; - getAttachment(): Attachment; - setAttachment(attachment: Attachment): void; - setAttachmentTime(time: number): void; - getAttachmentTime(): number; - setToSetupPose(): void; - } -} -declare module spine { - class SlotData { - index: number; - name: string; - boneData: BoneData; - color: Color; - darkColor: Color; - attachmentName: string; - blendMode: BlendMode; - constructor(index: number, name: string, boneData: BoneData); - } - enum BlendMode { - Normal = 0, - Additive = 1, - Multiply = 2, - Screen = 3 - } -} -declare module spine { - abstract class Texture { - protected _image: HTMLImageElement | ImageBitmap; - constructor(image: HTMLImageElement | ImageBitmap); - getImage(): HTMLImageElement | ImageBitmap; - abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - abstract dispose(): void; - } - enum TextureFilter { - Nearest = 9728, - Linear = 9729, - MipMap = 9987, - MipMapNearestNearest = 9984, - MipMapLinearNearest = 9985, - MipMapNearestLinear = 9986, - MipMapLinearLinear = 9987 - } - enum TextureWrap { - MirroredRepeat = 33648, - ClampToEdge = 33071, - Repeat = 10497 - } - class TextureRegion { - renderObject: any; - u: number; - v: number; - u2: number; - v2: number; - width: number; - height: number; - degrees: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - } - class FakeTexture extends Texture { - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - } -} -declare module spine { - class TextureAtlas implements Disposable { - pages: TextureAtlasPage[]; - regions: TextureAtlasRegion[]; - constructor(atlasText: string); - findRegion(name: string): TextureAtlasRegion; - setTextures(assetManager: AssetManager, pathPrefix?: string): void; - dispose(): void; - } - class TextureAtlasPage { - name: string; - minFilter: TextureFilter; - magFilter: TextureFilter; - uWrap: TextureWrap; - vWrap: TextureWrap; - texture: Texture; - width: number; - height: number; - pma: boolean; - setTexture(texture: Texture): void; - } - class TextureAtlasRegion extends TextureRegion { - page: TextureAtlasPage; - name: string; - x: number; - y: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - index: number; - degrees: number; - names: string[]; - values: number[][]; - } -} -declare module spine { - class TransformConstraint implements Updatable { - data: TransformConstraintData; - bones: Array; - target: Bone; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - temp: Vector2; - active: boolean; - constructor(data: TransformConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - applyAbsoluteWorld(): void; - applyRelativeWorld(): void; - applyAbsoluteLocal(): void; - applyRelativeLocal(): void; - } -} -declare module spine { - class TransformConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - offsetRotation: number; - offsetX: number; - offsetY: number; - offsetScaleX: number; - offsetScaleY: number; - offsetShearY: number; - relative: boolean; - local: boolean; - constructor(name: string); - } -} -declare module spine { - class Triangulator { - private convexPolygons; - private convexPolygonsIndices; - private indicesArray; - private isConcaveArray; - private triangles; - private polygonPool; - private polygonIndicesPool; - triangulate(verticesArray: ArrayLike): Array; - decompose(verticesArray: Array, triangles: Array): Array>; - private static isConcave; - private static positiveArea; - private static winding; - } -} -declare module spine { - interface Updatable { - update(): void; - isActive(): boolean; - } -} -declare module spine { - interface Map { - [key: string]: T; - } - class IntSet { - array: number[]; - add(value: number): boolean; - contains(value: number): boolean; - remove(value: number): void; - clear(): void; - } - class StringSet { - entries: Map; - size: number; - add(value: string): boolean; - addAll(values: string[]): boolean; - contains(value: string): boolean; - clear(): void; - } - interface Disposable { - dispose(): void; - } - interface Restorable { - restore(): void; - } - class Color { - r: number; - g: number; - b: number; - a: number; - static WHITE: Color; - static RED: Color; - static GREEN: Color; - static BLUE: Color; - static MAGENTA: Color; - constructor(r?: number, g?: number, b?: number, a?: number); - set(r: number, g: number, b: number, a: number): this; - setFromColor(c: Color): this; - setFromString(hex: string): this; - add(r: number, g: number, b: number, a: number): this; - clamp(): this; - static rgba8888ToColor(color: Color, value: number): void; - static rgb888ToColor(color: Color, value: number): void; - static fromString(hex: string): Color; - } - class MathUtils { - static PI: number; - static PI2: number; - static radiansToDegrees: number; - static radDeg: number; - static degreesToRadians: number; - static degRad: number; - static clamp(value: number, min: number, max: number): number; - static cosDeg(degrees: number): number; - static sinDeg(degrees: number): number; - static signum(value: number): number; - static toInt(x: number): number; - static cbrt(x: number): number; - static randomTriangular(min: number, max: number): number; - static randomTriangularWith(min: number, max: number, mode: number): number; - } - abstract class Interpolation { - protected abstract applyInternal(a: number): number; - apply(start: number, end: number, a: number): number; - } - class Pow extends Interpolation { - protected power: number; - constructor(power: number); - applyInternal(a: number): number; - } - class PowOut extends Pow { - constructor(power: number); - applyInternal(a: number): number; - } - class Utils { - static SUPPORTS_TYPED_ARRAYS: boolean; - static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; - static arrayFill(array: ArrayLike, fromIndex: number, toIndex: number, value: T): void; - static setArraySize(array: Array, size: number, value?: any): Array; - static ensureArrayCapacity(array: Array, size: number, value?: any): Array; - static newArray(size: number, defaultValue: T): Array; - static newFloatArray(size: number): ArrayLike; - static newShortArray(size: number): ArrayLike; - static toFloatArray(array: Array): number[] | Float32Array; - static toSinglePrecision(value: number): number; - static webkit602BugfixHelper(alpha: number, blend: MixBlend): void; - static contains(array: Array, element: T, identity?: boolean): boolean; - static enumValue(type: any, name: string): any; - } - class DebugUtils { - static logBones(skeleton: Skeleton): void; - } - class Pool { - private items; - private instantiator; - constructor(instantiator: () => T); - obtain(): T; - free(item: T): void; - freeAll(items: ArrayLike): void; - clear(): void; - } - class Vector2 { - x: number; - y: number; - constructor(x?: number, y?: number); - set(x: number, y: number): Vector2; - length(): number; - normalize(): this; - } - class TimeKeeper { - maxDelta: number; - framesPerSecond: number; - delta: number; - totalTime: number; - private lastTime; - private frameCount; - private frameTime; - update(): void; - } - interface ArrayLike { - length: number; - [n: number]: T; - } - class WindowedMean { - values: Array; - addedValues: number; - lastValue: number; - mean: number; - dirty: boolean; - constructor(windowSize?: number); - hasEnoughData(): boolean; - addValue(value: number): void; - getMean(): number; - } -} -declare module spine { - interface VertexEffect { - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -interface Math { - fround(n: number): number; -} -declare module spine { - abstract class Attachment { - name: string; - constructor(name: string); - abstract copy(): Attachment; - } - abstract class VertexAttachment extends Attachment { - private static nextID; - id: number; - bones: Array; - vertices: ArrayLike; - worldVerticesLength: number; - deformAttachment: VertexAttachment; - constructor(name: string); - computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number, stride: number): void; - copyTo(attachment: VertexAttachment): void; - } -} -declare module spine { - interface AttachmentLoader { - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - class BoundingBoxAttachment extends VertexAttachment { - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class ClippingAttachment extends VertexAttachment { - endSlot: SlotData; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class MeshAttachment extends VertexAttachment { - region: TextureRegion; - path: string; - regionUVs: ArrayLike; - uvs: ArrayLike; - triangles: Array; - color: Color; - width: number; - height: number; - hullLength: number; - edges: Array; - private parentMesh; - tempColor: Color; - constructor(name: string); - updateUVs(): void; - getParentMesh(): MeshAttachment; - setParentMesh(parentMesh: MeshAttachment): void; - copy(): Attachment; - newLinkedMesh(): MeshAttachment; - } -} -declare module spine { - class PathAttachment extends VertexAttachment { - lengths: Array; - closed: boolean; - constantSpeed: boolean; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class PointAttachment extends VertexAttachment { - x: number; - y: number; - rotation: number; - color: Color; - constructor(name: string); - computeWorldPosition(bone: Bone, point: Vector2): Vector2; - computeWorldRotation(bone: Bone): number; - copy(): Attachment; - } -} -declare module spine { - class RegionAttachment extends Attachment { - x: number; - y: number; - scaleX: number; - scaleY: number; - rotation: number; - width: number; - height: number; - color: Color; - path: string; - rendererObject: any; - region: TextureRegion; - offset: ArrayLike; - uvs: ArrayLike; - tempColor: Color; - constructor(name: string); - updateOffset(): void; - setRegion(region: TextureRegion): void; - computeWorldVertices(bone: Bone, worldVertices: ArrayLike, offset: number, stride: number): void; - copy(): Attachment; - static X1: number; - static Y1: number; - static C1R: number; - static C1G: number; - static C1B: number; - static C1A: number; - static U1: number; - static V1: number; - static X2: number; - static Y2: number; - static C2R: number; - static C2G: number; - static C2B: number; - static C2A: number; - static U2: number; - static V2: number; - static X3: number; - static Y3: number; - static C3R: number; - static C3G: number; - static C3B: number; - static C3A: number; - static U3: number; - static V3: number; - static X4: number; - static Y4: number; - static C4R: number; - static C4G: number; - static C4B: number; - static C4A: number; - static U4: number; - static V4: number; - } -} -declare module spine { - class JitterEffect implements VertexEffect { - jitterX: number; - jitterY: number; - constructor(jitterX: number, jitterY: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine { - class SwirlEffect implements VertexEffect { - static interpolation: PowOut; - centerX: number; - centerY: number; - radius: number; - angle: number; - private worldX; - private worldY; - constructor(radius: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine.canvas { - class AssetManager extends spine.AssetManager { - constructor(pathPrefix?: string, downloader?: Downloader); - } -} -declare module spine.canvas { - class CanvasTexture extends Texture { - constructor(image: HTMLImageElement); - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - } -} -declare module spine.canvas { - class SkeletonRenderer { - static QUAD_TRIANGLES: number[]; - static VERTEX_SIZE: number; - private ctx; - triangleRendering: boolean; - debugRendering: boolean; - private vertices; - private tempColor; - constructor(context: CanvasRenderingContext2D); - draw(skeleton: Skeleton): void; - private drawImages; - private drawTriangles; - private drawTriangle; - private computeRegionVertices; - private computeMeshVertices; - } -} -declare module spine.webgl { - class AssetManager extends spine.AssetManager { - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, pathPrefix?: string, downloader?: Downloader); - } -} -declare module spine.webgl { - class OrthoCamera { - position: Vector3; - direction: Vector3; - up: Vector3; - near: number; - far: number; - zoom: number; - viewportWidth: number; - viewportHeight: number; - projectionView: Matrix4; - inverseProjectionView: Matrix4; - projection: Matrix4; - view: Matrix4; - constructor(viewportWidth: number, viewportHeight: number); - update(): void; - screenToWorld(screenCoords: Vector3, screenWidth: number, screenHeight: number): Vector3; - worldToScreen(worldCoords: Vector3, screenWidth: number, screenHeight: number): Vector3; - setViewport(viewportWidth: number, viewportHeight: number): void; - } -} -declare module spine.webgl { - class GLTexture extends Texture implements Disposable, Restorable { - context: ManagedWebGLRenderingContext; - private texture; - private boundUnit; - private useMipMaps; - static DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL: boolean; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, image: HTMLImageElement | ImageBitmap, useMipMaps?: boolean); - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - static validateMagFilter(magFilter: TextureFilter): TextureFilter.Nearest | TextureFilter.Linear; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - update(useMipMaps: boolean): void; - restore(): void; - bind(unit?: number): void; - unbind(): void; - dispose(): void; - } -} -declare module spine.webgl { - class Input { - element: HTMLElement; - lastX: number; - lastY: number; - buttonDown: boolean; - currTouch: Touch; - private listeners; - touchesPool: Pool; - constructor(element: HTMLElement); - private setupCallbacks; - addListener(listener: InputListener): void; - removeListener(listener: InputListener): void; - } - class Touch { - identifier: number; - x: number; - y: number; - constructor(identifier: number, x: number, y: number); - } - interface InputListener { - down(x: number, y: number): void; - up(x: number, y: number): void; - moved(x: number, y: number): void; - dragged(x: number, y: number): void; - } -} -declare module spine.webgl { - class LoadingScreen { - private renderer; - private logo; - private spinner; - private angle; - private fadeOut; - private fadeIn; - private timeKeeper; - backgroundColor: Color; - private tempColor; - constructor(renderer: SceneRenderer); - draw(complete?: boolean): void; - } -} -declare module spine.webgl { - const M00 = 0; - const M01 = 4; - const M02 = 8; - const M03 = 12; - const M10 = 1; - const M11 = 5; - const M12 = 9; - const M13 = 13; - const M20 = 2; - const M21 = 6; - const M22 = 10; - const M23 = 14; - const M30 = 3; - const M31 = 7; - const M32 = 11; - const M33 = 15; - class Matrix4 { - temp: Float32Array; - values: Float32Array; - private static xAxis; - private static yAxis; - private static zAxis; - private static tmpMatrix; - constructor(); - set(values: ArrayLike): Matrix4; - transpose(): Matrix4; - identity(): Matrix4; - invert(): Matrix4; - determinant(): number; - translate(x: number, y: number, z: number): Matrix4; - copy(): Matrix4; - projection(near: number, far: number, fovy: number, aspectRatio: number): Matrix4; - ortho2d(x: number, y: number, width: number, height: number): Matrix4; - ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; - multiply(matrix: Matrix4): Matrix4; - multiplyLeft(matrix: Matrix4): Matrix4; - lookAt(position: Vector3, direction: Vector3, up: Vector3): this; - static initTemps(): void; - } -} -declare module spine.webgl { - class Mesh implements Disposable, Restorable { - private attributes; - private context; - private vertices; - private verticesBuffer; - private verticesLength; - private dirtyVertices; - private indices; - private indicesBuffer; - private indicesLength; - private dirtyIndices; - private elementsPerVertex; - getAttributes(): VertexAttribute[]; - maxVertices(): number; - numVertices(): number; - setVerticesLength(length: number): void; - getVertices(): Float32Array; - maxIndices(): number; - numIndices(): number; - setIndicesLength(length: number): void; - getIndices(): Uint16Array; - getVertexSizeInFloats(): number; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, attributes: VertexAttribute[], maxVertices: number, maxIndices: number); - setVertices(vertices: Array): void; - setIndices(indices: Array): void; - draw(shader: Shader, primitiveType: number): void; - drawWithOffset(shader: Shader, primitiveType: number, offset: number, count: number): void; - bind(shader: Shader): void; - unbind(shader: Shader): void; - private update; - restore(): void; - dispose(): void; - } - class VertexAttribute { - name: string; - type: VertexAttributeType; - numElements: number; - constructor(name: string, type: VertexAttributeType, numElements: number); - } - class Position2Attribute extends VertexAttribute { - constructor(); - } - class Position3Attribute extends VertexAttribute { - constructor(); - } - class TexCoordAttribute extends VertexAttribute { - constructor(unit?: number); - } - class ColorAttribute extends VertexAttribute { - constructor(); - } - class Color2Attribute extends VertexAttribute { - constructor(); - } - enum VertexAttributeType { - Float = 0 - } -} -declare module spine.webgl { - class PolygonBatcher implements Disposable { - private context; - private drawCalls; - private isDrawing; - private mesh; - private shader; - private lastTexture; - private verticesLength; - private indicesLength; - private srcColorBlend; - private srcAlphaBlend; - private dstBlend; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean, maxVertices?: number); - begin(shader: Shader): void; - setBlendMode(srcColorBlend: number, srcAlphaBlend: number, dstBlend: number): void; - draw(texture: GLTexture, vertices: ArrayLike, indices: Array): void; - flush(): void; - end(): void; - getDrawCalls(): number; - dispose(): void; - } -} -declare module spine.webgl { - class SceneRenderer implements Disposable { - context: ManagedWebGLRenderingContext; - canvas: HTMLCanvasElement; - camera: OrthoCamera; - batcher: PolygonBatcher; - private twoColorTint; - private batcherShader; - private shapes; - private shapesShader; - private activeRenderer; - skeletonRenderer: SkeletonRenderer; - skeletonDebugRenderer: SkeletonDebugRenderer; - constructor(canvas: HTMLCanvasElement, context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean); - begin(): void; - drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean, slotRangeStart?: number, slotRangeEnd?: number): void; - drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean, ignoredBones?: Array): void; - drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void; - drawTextureUV(texture: GLTexture, x: number, y: number, width: number, height: number, u: number, v: number, u2: number, v2: number, color?: Color): void; - drawTextureRotated(texture: GLTexture, x: number, y: number, width: number, height: number, pivotX: number, pivotY: number, angle: number, color?: Color): void; - drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color): void; - line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void; - triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; - quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; - rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; - rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; - polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; - circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; - curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; - end(): void; - resize(resizeMode: ResizeMode): void; - private enableRenderer; - dispose(): void; - } - enum ResizeMode { - Stretch = 0, - Expand = 1, - Fit = 2 - } -} -declare module spine.webgl { - class Shader implements Disposable, Restorable { - private vertexShader; - private fragmentShader; - static MVP_MATRIX: string; - static POSITION: string; - static COLOR: string; - static COLOR2: string; - static TEXCOORDS: string; - static SAMPLER: string; - private context; - private vs; - private vsSource; - private fs; - private fsSource; - private program; - private tmp2x2; - private tmp3x3; - private tmp4x4; - getProgram(): WebGLProgram; - getVertexShader(): string; - getFragmentShader(): string; - getVertexShaderSource(): string; - getFragmentSource(): string; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, vertexShader: string, fragmentShader: string); - private compile; - private compileShader; - private compileProgram; - restore(): void; - bind(): void; - unbind(): void; - setUniformi(uniform: string, value: number): void; - setUniformf(uniform: string, value: number): void; - setUniform2f(uniform: string, value: number, value2: number): void; - setUniform3f(uniform: string, value: number, value2: number, value3: number): void; - setUniform4f(uniform: string, value: number, value2: number, value3: number, value4: number): void; - setUniform2x2f(uniform: string, value: ArrayLike): void; - setUniform3x3f(uniform: string, value: ArrayLike): void; - setUniform4x4f(uniform: string, value: ArrayLike): void; - getUniformLocation(uniform: string): WebGLUniformLocation; - getAttributeLocation(attribute: string): number; - dispose(): void; - static newColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - static newTwoColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - static newColored(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - } -} -declare module spine.webgl { - class ShapeRenderer implements Disposable { - private context; - private isDrawing; - private mesh; - private shapeType; - private color; - private shader; - private vertexIndex; - private tmp; - private srcColorBlend; - private srcAlphaBlend; - private dstBlend; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, maxVertices?: number); - begin(shader: Shader): void; - setBlendMode(srcColorBlend: number, srcAlphaBlend: number, dstBlend: number): void; - setColor(color: Color): void; - setColorWith(r: number, g: number, b: number, a: number): void; - point(x: number, y: number, color?: Color): void; - line(x: number, y: number, x2: number, y2: number, color?: Color): void; - triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; - quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; - rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; - rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; - x(x: number, y: number, size: number): void; - polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; - circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; - curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; - private vertex; - end(): void; - private flush; - private check; - dispose(): void; - } - enum ShapeType { - Point = 0, - Line = 1, - Filled = 4 - } -} -declare module spine.webgl { - class SkeletonDebugRenderer implements Disposable { - boneLineColor: Color; - boneOriginColor: Color; - attachmentLineColor: Color; - triangleLineColor: Color; - pathColor: Color; - clipColor: Color; - aabbColor: Color; - drawBones: boolean; - drawRegionAttachments: boolean; - drawBoundingBoxes: boolean; - drawMeshHull: boolean; - drawMeshTriangles: boolean; - drawPaths: boolean; - drawSkeletonXY: boolean; - drawClipping: boolean; - premultipliedAlpha: boolean; - scale: number; - boneWidth: number; - private context; - private bounds; - private temp; - private vertices; - private static LIGHT_GRAY; - private static GREEN; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext); - draw(shapes: ShapeRenderer, skeleton: Skeleton, ignoredBones?: Array): void; - dispose(): void; - } -} -declare module spine.webgl { - class SkeletonRenderer { - static QUAD_TRIANGLES: number[]; - premultipliedAlpha: boolean; - vertexEffect: VertexEffect; - private tempColor; - private tempColor2; - private vertices; - private vertexSize; - private twoColorTint; - private renderable; - private clipper; - private temp; - private temp2; - private temp3; - private temp4; - constructor(context: ManagedWebGLRenderingContext, twoColorTint?: boolean); - draw(batcher: PolygonBatcher, skeleton: Skeleton, slotRangeStart?: number, slotRangeEnd?: number): void; - } -} -declare module spine.webgl { - class Vector3 { - x: number; - y: number; - z: number; - constructor(x?: number, y?: number, z?: number); - setFrom(v: Vector3): Vector3; - set(x: number, y: number, z: number): Vector3; - add(v: Vector3): Vector3; - sub(v: Vector3): Vector3; - scale(s: number): Vector3; - normalize(): Vector3; - cross(v: Vector3): Vector3; - multiply(matrix: Matrix4): Vector3; - project(matrix: Matrix4): Vector3; - dot(v: Vector3): number; - length(): number; - distance(v: Vector3): number; - } -} -declare module spine.webgl { - class ManagedWebGLRenderingContext { - canvas: HTMLCanvasElement | OffscreenCanvas; - gl: WebGLRenderingContext; - private restorables; - constructor(canvasOrContext: HTMLCanvasElement | WebGLRenderingContext | EventTarget, contextConfig?: any); - private setupCanvas; - addRestorable(restorable: Restorable): void; - removeRestorable(restorable: Restorable): void; - } - class WebGLBlendModeConverter { - static getDestGLBlendMode(blendMode: BlendMode): 1 | 771; - static getSourceColorGLBlendMode(blendMode: BlendMode, premultipliedAlpha?: boolean): 1 | 770 | 774; - static getSourceAlphaGLBlendMode(blendMode: BlendMode): 1 | 771 | 769; - } -} -declare module spine.threejs { - class AssetManager extends spine.AssetManager { - constructor(pathPrefix?: string, downloader?: Downloader); - } -} -declare module spine.threejs { - class MeshBatcher extends THREE.Mesh { - private static VERTEX_SIZE; - private vertexBuffer; - private vertices; - private verticesLength; - private indices; - private indicesLength; - constructor(maxVertices?: number, materialCustomizer?: SkeletonMeshMaterialParametersCustomizer); - dispose(): void; - clear(): void; - begin(): void; - canBatch(verticesLength: number, indicesLength: number): boolean; - batch(vertices: ArrayLike, verticesLength: number, indices: ArrayLike, indicesLength: number, z?: number): void; - end(): void; - } -} -declare module spine.threejs { - interface SkeletonMeshMaterialParametersCustomizer { - (materialParameters: THREE.ShaderMaterialParameters): void; - } - class SkeletonMeshMaterial extends THREE.ShaderMaterial { - constructor(customizer: SkeletonMeshMaterialParametersCustomizer); - } - class SkeletonMesh extends THREE.Object3D { - tempPos: Vector2; - tempUv: Vector2; - tempLight: Color; - tempDark: Color; - skeleton: Skeleton; - state: AnimationState; - zOffset: number; - vertexEffect: VertexEffect; - private batches; - private nextBatchIndex; - private clipper; - static QUAD_TRIANGLES: number[]; - static VERTEX_SIZE: number; - private vertices; - private tempColor; - private materialCustomizer; - constructor(skeletonData: SkeletonData, materialCustomizer?: SkeletonMeshMaterialParametersCustomizer); - update(deltaTime: number): void; - dispose(): void; - private clearBatches; - private nextBatch; - private updateGeometry; - } -} -declare module spine.threejs { - class ThreeJsTexture extends Texture { - texture: THREE.Texture; - constructor(image: HTMLImageElement); - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - static toThreeJsTextureFilter(filter: TextureFilter): THREE.TextureFilter; - static toThreeJsTextureWrap(wrap: TextureWrap): THREE.Wrapping; - } -} -declare module spine { - export interface SpinePlayerConfig { - jsonUrl: string; - jsonField: string; - binaryUrl: string; - atlasUrl: string; - rawDataURIs: Map; - animation: string; - animations: string[]; - defaultMix: number; - skin: string; - skins: string[]; - premultipliedAlpha: boolean; - showControls: boolean; - showLoading: boolean; - debug: { - bones: boolean; - regions: boolean; - meshes: boolean; - bounds: boolean; - paths: boolean; - clipping: boolean; - points: boolean; - hulls: boolean; - }; - viewport: { - x: number; - y: number; - width: number; - height: number; - padLeft: string | number; - padRight: string | number; - padTop: string | number; - padBottom: string | number; - debugRender: boolean; - transitionTime: number; - animations: Map; - }; - alpha: boolean; - backgroundColor: string; - fullScreenBackgroundColor: string; - backgroundImage: { - url: string; - x: number; - y: number; - width: number; - height: number; - }; - mipmaps: true; - controlBones: string[]; - success: (player: SpinePlayer) => void; - error: (player: SpinePlayer, msg: string) => void; - frame: (player: SpinePlayer, delta: number) => void; - update: (player: SpinePlayer, delta: number) => void; - draw: (player: SpinePlayer, delta: number) => void; - loading: (player: SpinePlayer, delta: number) => void; - downloader: spine.Downloader; - } - export interface Viewport { - x: number; - y: number; - width: number; - height: number; - padLeft: string | number; - padRight: string | number; - padTop: string | number; - padBottom: string | number; - } - export class SpinePlayer { - private config; - parent: HTMLElement; - dom: HTMLElement; - canvas: HTMLCanvasElement; - context: spine.webgl.ManagedWebGLRenderingContext; - sceneRenderer: spine.webgl.SceneRenderer; - loadingScreen: spine.webgl.LoadingScreen; - assetManager: spine.webgl.AssetManager; - bg: Color; - bgFullscreen: Color; - private playerControls; - private timelineSlider; - private playButton; - private skinButton; - private animationButton; - private playTime; - private selectedBones; - private cancelId; - popup: Popup; - error: boolean; - skeleton: Skeleton; - animationState: AnimationState; - paused: boolean; - speed: number; - time: TimeKeeper; - private stopRequestAnimationFrame; - private viewport; - private currentViewport; - private previousViewport; - private viewportTransitionStart; - constructor(parent: HTMLElement | string, config: SpinePlayerConfig); - private validateConfig; - private initialize; - private loadSkeleton; - private setupInput; - play(): void; - pause(): void; - setAnimation(animation: string | Animation, loop?: boolean): TrackEntry; - addAnimation(animation: string | Animation, loop?: boolean, delay?: number): TrackEntry; - setViewport(animation: string | Animation): Animation; - private percentageToWorldUnit; - private calculateAnimationViewport; - private drawFrame; - stopRendering(): void; - private hidePopup; - private showSpeedDialog; - private showAnimationsDialog; - private showSkinsDialog; - private showSettingsDialog; - private showError; - } - class Popup { - private id; - private button; - private player; - dom: HTMLElement; - private className; - constructor(id: string, button: HTMLElement, player: SpinePlayer, parent: HTMLElement, htmlContent: string); - hide(id: string): boolean; - show(): void; - } - export {}; -} -declare function CodeMirror(el: Element, config: any): void; -declare module spine { - class SpinePlayerEditor { - private static DEFAULT_CODE; - private prefix; - private postfix; - private code; - private player; - constructor(parent: HTMLElement); - private render; - setPreAndPostfix(prefix: string, postfix: string): void; - setCode(code: string): void; - private timerId; - startPlayer(): void; - } -} diff --git a/spine-ts/build/spine-all.js b/spine-ts/build/spine-all.js deleted file mode 100644 index 883557aa7..000000000 --- a/spine-ts/build/spine-all.js +++ /dev/null @@ -1,13259 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var spine; -(function (spine) { - var Animation = (function () { - function Animation(name, timelines, duration) { - if (!name) - throw new Error("name cannot be null."); - this.name = name; - this.setTimelines(timelines); - this.duration = duration; - } - Animation.prototype.setTimelines = function (timelines) { - if (!timelines) - throw new Error("timelines cannot be null."); - this.timelines = timelines; - this.timelineIds = new spine.StringSet(); - for (var i = 0; i < timelines.length; i++) - this.timelineIds.addAll(timelines[i].getPropertyIds()); - }; - Animation.prototype.hasTimeline = function (ids) { - for (var i = 0; i < ids.length; i++) - if (this.timelineIds.contains(ids[i])) - return true; - return false; - }; - Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - if (loop && this.duration != 0) { - time %= this.duration; - if (lastTime > 0) - lastTime %= this.duration; - } - var timelines = this.timelines; - for (var i = 0, n = timelines.length; i < n; i++) - timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction); - }; - return Animation; - }()); - spine.Animation = Animation; - var MixBlend; - (function (MixBlend) { - MixBlend[MixBlend["setup"] = 0] = "setup"; - MixBlend[MixBlend["first"] = 1] = "first"; - MixBlend[MixBlend["replace"] = 2] = "replace"; - MixBlend[MixBlend["add"] = 3] = "add"; - })(MixBlend = spine.MixBlend || (spine.MixBlend = {})); - var MixDirection; - (function (MixDirection) { - MixDirection[MixDirection["mixIn"] = 0] = "mixIn"; - MixDirection[MixDirection["mixOut"] = 1] = "mixOut"; - })(MixDirection = spine.MixDirection || (spine.MixDirection = {})); - var Property = { - rotate: 0, - x: 1, - y: 2, - scaleX: 3, - scaleY: 4, - shearX: 5, - shearY: 6, - rgb: 7, - alpha: 8, - rgb2: 9, - attachment: 10, - deform: 11, - event: 12, - drawOrder: 13, - ikConstraint: 14, - transformConstraint: 15, - pathConstraintPosition: 16, - pathConstraintSpacing: 17, - pathConstraintMix: 18 - }; - var Timeline = (function () { - function Timeline(frameCount, propertyIds) { - this.propertyIds = propertyIds; - this.frames = spine.Utils.newFloatArray(frameCount * this.getFrameEntries()); - } - Timeline.prototype.getPropertyIds = function () { - return this.propertyIds; - }; - Timeline.prototype.getFrameEntries = function () { - return 1; - }; - Timeline.prototype.getFrameCount = function () { - return this.frames.length / this.getFrameEntries(); - }; - Timeline.prototype.getDuration = function () { - return this.frames[this.frames.length - this.getFrameEntries()]; - }; - Timeline.search1 = function (frames, time) { - var n = frames.length; - for (var i = 1; i < n; i++) - if (frames[i] > time) - return i - 1; - return n - 1; - }; - Timeline.search = function (frames, time, step) { - var n = frames.length; - for (var i = step; i < n; i += step) - if (frames[i] > time) - return i - step; - return n - step; - }; - return Timeline; - }()); - spine.Timeline = Timeline; - var CurveTimeline = (function (_super) { - __extends(CurveTimeline, _super); - function CurveTimeline(frameCount, bezierCount, propertyIds) { - var _this = _super.call(this, frameCount, propertyIds) || this; - _this.curves = spine.Utils.newFloatArray(frameCount + bezierCount * 18); - _this.curves[frameCount - 1] = 1; - return _this; - } - CurveTimeline.prototype.setLinear = function (frame) { - this.curves[frame] = 0; - }; - CurveTimeline.prototype.setStepped = function (frame) { - this.curves[frame] = 1; - }; - CurveTimeline.prototype.shrink = function (bezierCount) { - var size = this.getFrameCount() + bezierCount * 18; - if (this.curves.length > size) { - var newCurves = spine.Utils.newFloatArray(size); - spine.Utils.arrayCopy(this.curves, 0, newCurves, 0, size); - this.curves = newCurves; - } - }; - CurveTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { - var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; - if (value == 0) - curves[frame] = 2 + i; - var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03; - var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006; - var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; - var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667; - var x = time1 + dx, y = value1 + dy; - for (var n = i + 18; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dx += ddx; - dy += ddy; - ddx += dddx; - ddy += dddy; - x += dx; - y += dy; - } - }; - CurveTimeline.prototype.getBezierValue = function (time, frameIndex, valueOffset, i) { - var curves = this.curves; - if (curves[i] > time) { - var x_1 = this.frames[frameIndex], y_1 = this.frames[frameIndex + valueOffset]; - return y_1 + (time - x_1) / (curves[i] - x_1) * (curves[i + 1] - y_1); - } - var n = i + 18; - for (i += 2; i < n; i += 2) { - if (curves[i] >= time) { - var x_2 = curves[i - 2], y_2 = curves[i - 1]; - return y_2 + (time - x_2) / (curves[i] - x_2) * (curves[i + 1] - y_2); - } - } - frameIndex += this.getFrameEntries(); - var x = curves[n - 2], y = curves[n - 1]; - return y + (time - x) / (this.frames[frameIndex] - x) * (this.frames[frameIndex + valueOffset] - y); - }; - return CurveTimeline; - }(Timeline)); - spine.CurveTimeline = CurveTimeline; - var CurveTimeline1 = (function (_super) { - __extends(CurveTimeline1, _super); - function CurveTimeline1(frameCount, bezierCount, propertyId) { - return _super.call(this, frameCount, bezierCount, [propertyId]) || this; - } - CurveTimeline1.prototype.getFrameEntries = function () { - return 2; - }; - CurveTimeline1.prototype.setFrame = function (frame, time, value) { - frame <<= 1; - this.frames[frame] = time; - this.frames[frame + 1] = value; - }; - CurveTimeline1.prototype.getCurveValue = function (time) { - var frames = this.frames; - var i = frames.length - 2; - for (var ii = 2; ii <= i; ii += 2) { - if (frames[ii] > time) { - i = ii - 2; - break; - } - } - var curveType = this.curves[i >> 1]; - switch (curveType) { - case 0: - var before = frames[i], value = frames[i + 1]; - return value + (time - before) / (frames[i + 2] - before) * (frames[i + 2 + 1] - value); - case 1: - return frames[i + 1]; - } - return this.getBezierValue(time, i, 1, curveType - 2); - }; - return CurveTimeline1; - }(CurveTimeline)); - spine.CurveTimeline1 = CurveTimeline1; - var CurveTimeline2 = (function (_super) { - __extends(CurveTimeline2, _super); - function CurveTimeline2(frameCount, bezierCount, propertyId1, propertyId2) { - return _super.call(this, frameCount, bezierCount, [propertyId1, propertyId2]) || this; - } - CurveTimeline2.prototype.getFrameEntries = function () { - return 3; - }; - CurveTimeline2.prototype.setFrame = function (frame, time, value1, value2) { - frame *= 3; - this.frames[frame] = time; - this.frames[frame + 1] = value1; - this.frames[frame + 2] = value2; - }; - return CurveTimeline2; - }(CurveTimeline)); - spine.CurveTimeline2 = CurveTimeline2; - var RotateTimeline = (function (_super) { - __extends(RotateTimeline, _super); - function RotateTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.rotate + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation; - return; - case MixBlend.first: - bone.rotation += (bone.data.rotation - bone.rotation) * alpha; - } - return; - } - var r = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation + r * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - r += bone.data.rotation - bone.rotation; - case MixBlend.add: - bone.rotation += r * alpha; - } - }; - return RotateTimeline; - }(CurveTimeline1)); - spine.RotateTimeline = RotateTimeline; - var TranslateTimeline = (function (_super) { - __extends(TranslateTimeline, _super); - function TranslateTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex, Property.y + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x; - bone.y = bone.data.y; - return; - case MixBlend.first: - bone.x += (bone.data.x - bone.x) * alpha; - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x + x * alpha; - bone.y = bone.data.y + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.x += (bone.data.x + x - bone.x) * alpha; - bone.y += (bone.data.y + y - bone.y) * alpha; - break; - case MixBlend.add: - bone.x += x * alpha; - bone.y += y * alpha; - } - }; - return TranslateTimeline; - }(CurveTimeline2)); - spine.TranslateTimeline = TranslateTimeline; - var TranslateXTimeline = (function (_super) { - __extends(TranslateXTimeline, _super); - function TranslateXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x; - return; - case MixBlend.first: - bone.x += (bone.data.x - bone.x) * alpha; - } - return; - } - var x = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x + x * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.x += (bone.data.x + x - bone.x) * alpha; - break; - case MixBlend.add: - bone.x += x * alpha; - } - }; - return TranslateXTimeline; - }(CurveTimeline1)); - spine.TranslateXTimeline = TranslateXTimeline; - var TranslateYTimeline = (function (_super) { - __extends(TranslateYTimeline, _super); - function TranslateYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.y + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.y = bone.data.y; - return; - case MixBlend.first: - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var y = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.y = bone.data.y + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.y += (bone.data.y + y - bone.y) * alpha; - break; - case MixBlend.add: - bone.y += y * alpha; - } - }; - return TranslateYTimeline; - }(CurveTimeline1)); - spine.TranslateYTimeline = TranslateYTimeline; - var ScaleTimeline = (function (_super) { - __extends(ScaleTimeline, _super); - function ScaleTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex, Property.scaleY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleX = bone.data.scaleX; - bone.scaleY = bone.data.scaleY; - return; - case MixBlend.first: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var x, y; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - x *= bone.data.scaleX; - y *= bone.data.scaleY; - if (alpha == 1) { - if (blend == MixBlend.add) { - bone.scaleX += x - bone.data.scaleX; - bone.scaleY += y - bone.data.scaleY; - } - else { - bone.scaleX = x; - bone.scaleY = y; - } - } - else { - var bx = 0, by = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - bx = bone.data.scaleX; - by = bone.data.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.add: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.add: - bx = spine.MathUtils.signum(x); - by = spine.MathUtils.signum(y); - bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; - bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; - } - } - } - }; - return ScaleTimeline; - }(CurveTimeline2)); - spine.ScaleTimeline = ScaleTimeline; - var ScaleXTimeline = (function (_super) { - __extends(ScaleXTimeline, _super); - function ScaleXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleX = bone.data.scaleX; - return; - case MixBlend.first: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - } - return; - } - var x = this.getCurveValue(time) * bone.data.scaleX; - if (alpha == 1) { - if (blend == MixBlend.add) - bone.scaleX += x - bone.data.scaleX; - else - bone.scaleX = x; - } - else { - var bx = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - bx = bone.data.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = bone.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - break; - case MixBlend.add: - bx = bone.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); - bone.scaleX = bx + (x - bx) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); - bone.scaleX = bx + (x - bx) * alpha; - break; - case MixBlend.add: - bx = spine.MathUtils.signum(x); - bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; - } - } - } - }; - return ScaleXTimeline; - }(CurveTimeline1)); - spine.ScaleXTimeline = ScaleXTimeline; - var ScaleYTimeline = (function (_super) { - __extends(ScaleYTimeline, _super); - function ScaleYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleY = bone.data.scaleY; - return; - case MixBlend.first: - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var y = this.getCurveValue(time) * bone.data.scaleY; - if (alpha == 1) { - if (blend == MixBlend.add) - bone.scaleY += y - bone.data.scaleY; - else - bone.scaleY = y; - } - else { - var by = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - by = bone.data.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - by = bone.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.add: - by = bone.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.add: - by = spine.MathUtils.signum(y); - bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; - } - } - } - }; - return ScaleYTimeline; - }(CurveTimeline1)); - spine.ScaleYTimeline = ScaleYTimeline; - var ShearTimeline = (function (_super) { - __extends(ShearTimeline, _super); - function ShearTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex, Property.shearY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX; - bone.shearY = bone.data.shearY; - return; - case MixBlend.first: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX + x * alpha; - bone.shearY = bone.data.shearY + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - break; - case MixBlend.add: - bone.shearX += x * alpha; - bone.shearY += y * alpha; - } - }; - return ShearTimeline; - }(CurveTimeline2)); - spine.ShearTimeline = ShearTimeline; - var ShearXTimeline = (function (_super) { - __extends(ShearXTimeline, _super); - function ShearXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX; - return; - case MixBlend.first: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - } - return; - } - var x = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX + x * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - break; - case MixBlend.add: - bone.shearX += x * alpha; - } - }; - return ShearXTimeline; - }(CurveTimeline1)); - spine.ShearXTimeline = ShearXTimeline; - var ShearYTimeline = (function (_super) { - __extends(ShearYTimeline, _super); - function ShearYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearY = bone.data.shearY; - return; - case MixBlend.first: - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var y = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.shearY = bone.data.shearY + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - break; - case MixBlend.add: - bone.shearY += y * alpha; - } - }; - return ShearYTimeline; - }(CurveTimeline1)); - spine.ShearYTimeline = ShearYTimeline; - var RGBATimeline = (function (_super) { - __extends(RGBATimeline, _super); - function RGBATimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.alpha + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBATimeline.prototype.getFrameEntries = function () { - return 5; - }; - RGBATimeline.prototype.setFrame = function (frame, time, r, g, b, a) { - frame *= 5; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; - }; - RGBATimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var color = slot.color; - if (time < frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.setFromColor(setup); - return; - case MixBlend.first: - color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha); - } - return; - } - var r = 0, g = 0, b = 0, a = 0; - var i = Timeline.search(frames, time, 5); - var curveType = this.curves[i / 5]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - var t = (time - before) / (frames[i + 5] - before); - r += (frames[i + 5 + 1] - r) * t; - g += (frames[i + 5 + 2] - g) * t; - b += (frames[i + 5 + 3] - b) * t; - a += (frames[i + 5 + 4] - a) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - } - if (alpha == 1) - color.set(r, g, b, a); - else { - if (blend == MixBlend.setup) - color.setFromColor(slot.data.color); - color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); - } - }; - return RGBATimeline; - }(CurveTimeline)); - spine.RGBATimeline = RGBATimeline; - var RGBTimeline = (function (_super) { - __extends(RGBTimeline, _super); - function RGBTimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBTimeline.prototype.getFrameEntries = function () { - return 4; - }; - RGBTimeline.prototype.setFrame = function (frame, time, r, g, b) { - frame <<= 2; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - }; - RGBTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var color = slot.color; - if (time < frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.r = setup.r; - color.g = setup.g; - color.b = setup.b; - return; - case MixBlend.first: - color.r += (setup.r - color.r) * alpha; - color.g += (setup.g - color.g) * alpha; - color.b += (setup.b - color.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0; - var i = Timeline.search(frames, time, 4); - var curveType = this.curves[i >> 2]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - r += (frames[i + 4 + 1] - r) * t; - g += (frames[i + 4 + 2] - g) * t; - b += (frames[i + 4 + 3] - b) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - } - if (alpha == 1) { - color.r = r; - color.g = g; - color.b = b; - } - else { - if (blend == MixBlend.setup) { - var setup = slot.data.color; - color.r = setup.r; - color.g = setup.g; - color.b = setup.b; - } - color.r += (r - color.r) * alpha; - color.g += (g - color.g) * alpha; - color.b += (b - color.b) * alpha; - } - }; - return RGBTimeline; - }(CurveTimeline)); - spine.RGBTimeline = RGBTimeline; - var AlphaTimeline = (function (_super) { - __extends(AlphaTimeline, _super); - function AlphaTimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.alpha + "|" + slotIndex) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - AlphaTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var color = slot.color; - if (time < this.frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.a = setup.a; - return; - case MixBlend.first: - color.a += (setup.a - color.a) * alpha; - } - return; - } - var a = this.getCurveValue(time); - if (alpha == 1) - color.a = a; - else { - if (blend == MixBlend.setup) - color.a = slot.data.color.a; - color.a += (a - color.a) * alpha; - } - }; - return AlphaTimeline; - }(CurveTimeline1)); - spine.AlphaTimeline = AlphaTimeline; - var RGBA2Timeline = (function (_super) { - __extends(RGBA2Timeline, _super); - function RGBA2Timeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.alpha + "|" + slotIndex, - Property.rgb2 + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBA2Timeline.prototype.getFrameEntries = function () { - return 8; - }; - RGBA2Timeline.prototype.setFrame = function (frame, time, r, g, b, a, r2, g2, b2) { - frame <<= 3; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; - this.frames[frame + 5] = r2; - this.frames[frame + 6] = g2; - this.frames[frame + 7] = b2; - }; - RGBA2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var light = slot.color, dark = slot.darkColor; - if (time < frames[0]) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - switch (blend) { - case MixBlend.setup: - light.setFromColor(setupLight); - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - return; - case MixBlend.first: - light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha); - dark.r += (setupDark.r - dark.r) * alpha; - dark.g += (setupDark.g - dark.g) * alpha; - dark.b += (setupDark.b - dark.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 8); - var curveType = this.curves[i >> 3]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; - var t = (time - before) / (frames[i + 8] - before); - r += (frames[i + 8 + 1] - r) * t; - g += (frames[i + 8 + 2] - g) * t; - b += (frames[i + 8 + 3] - b) * t; - a += (frames[i + 8 + 4] - a) * t; - r2 += (frames[i + 8 + 5] - r2) * t; - g2 += (frames[i + 8 + 6] - g2) * t; - b2 += (frames[i + 8 + 7] - b2) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - r2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - g2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - b2 = this.getBezierValue(time, i, 7, curveType + 18 * 6 - 2); - } - if (alpha == 1) { - light.set(r, g, b, a); - dark.r = r2; - dark.g = g2; - dark.b = b2; - } - else { - if (blend == MixBlend.setup) { - light.setFromColor(slot.data.color); - var setupDark = slot.data.darkColor; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - } - light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); - dark.r += (r2 - dark.r) * alpha; - dark.g += (g2 - dark.g) * alpha; - dark.b += (b2 - dark.b) * alpha; - } - }; - return RGBA2Timeline; - }(CurveTimeline)); - spine.RGBA2Timeline = RGBA2Timeline; - var RGB2Timeline = (function (_super) { - __extends(RGB2Timeline, _super); - function RGB2Timeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.rgb2 + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGB2Timeline.prototype.getFrameEntries = function () { - return 7; - }; - RGB2Timeline.prototype.setFrame = function (frame, time, r, g, b, r2, g2, b2) { - frame *= 7; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = r2; - this.frames[frame + 5] = g2; - this.frames[frame + 6] = b2; - }; - RGB2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var light = slot.color, dark = slot.darkColor; - if (time < frames[0]) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - switch (blend) { - case MixBlend.setup: - light.r = setupLight.r; - light.g = setupLight.g; - light.b = setupLight.b; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - return; - case MixBlend.first: - light.r += (setupLight.r - light.r) * alpha; - light.g += (setupLight.g - light.g) * alpha; - light.b += (setupLight.b - light.b) * alpha; - dark.r += (setupDark.r - dark.r) * alpha; - dark.g += (setupDark.g - dark.g) * alpha; - dark.b += (setupDark.b - dark.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - r += (frames[i + 7 + 1] - r) * t; - g += (frames[i + 7 + 2] - g) * t; - b += (frames[i + 7 + 3] - b) * t; - r2 += (frames[i + 7 + 4] - r2) * t; - g2 += (frames[i + 7 + 5] - g2) * t; - b2 += (frames[i + 7 + 6] - b2) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - r2 = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - g2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - b2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - } - if (alpha == 1) { - light.r = r; - light.g = g; - light.b = b; - dark.r = r2; - dark.g = g2; - dark.b = b2; - } - else { - if (blend == MixBlend.setup) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - light.r = setupLight.r; - light.g = setupLight.g; - light.b = setupLight.b; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - } - light.r += (r - light.r) * alpha; - light.g += (g - light.g) * alpha; - light.b += (b - light.b) * alpha; - dark.r += (r2 - dark.r) * alpha; - dark.g += (g2 - dark.g) * alpha; - dark.b += (b2 - dark.b) * alpha; - } - }; - return RGB2Timeline; - }(CurveTimeline)); - spine.RGB2Timeline = RGB2Timeline; - var AttachmentTimeline = (function (_super) { - __extends(AttachmentTimeline, _super); - function AttachmentTimeline(frameCount, slotIndex) { - var _this = _super.call(this, frameCount, [ - Property.attachment + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - _this.attachmentNames = new Array(frameCount); - return _this; - } - AttachmentTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - AttachmentTimeline.prototype.setFrame = function (frame, time, attachmentName) { - this.frames[frame] = time; - this.attachmentNames[frame] = attachmentName; - }; - AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - if (time < this.frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - this.setAttachment(skeleton, slot, this.attachmentNames[Timeline.search1(this.frames, time)]); - }; - AttachmentTimeline.prototype.setAttachment = function (skeleton, slot, attachmentName) { - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); - }; - return AttachmentTimeline; - }(Timeline)); - spine.AttachmentTimeline = AttachmentTimeline; - var DeformTimeline = (function (_super) { - __extends(DeformTimeline, _super); - function DeformTimeline(frameCount, bezierCount, slotIndex, attachment) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.deform + "|" + slotIndex + "|" + attachment.id - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - _this.attachment = attachment; - _this.vertices = new Array(frameCount); - return _this; - } - DeformTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DeformTimeline.prototype.setFrame = function (frame, time, vertices) { - this.frames[frame] = time; - this.vertices[frame] = vertices; - }; - DeformTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { - var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; - if (value == 0) - curves[frame] = 2 + i; - var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06; - var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018; - var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; - var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667; - var x = time1 + dx, y = dy; - for (var n = i + 18; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dx += ddx; - dy += ddy; - ddx += dddx; - ddy += dddy; - x += dx; - y += dy; - } - }; - DeformTimeline.prototype.getCurvePercent = function (time, frame) { - var curves = this.curves; - var i = curves[frame]; - switch (i) { - case 0: - var x_3 = this.frames[frame]; - return (time - x_3) / (this.frames[frame + this.getFrameEntries()] - x_3); - case 1: - return 0; - } - i -= 2; - if (curves[i] > time) { - var x_4 = this.frames[frame]; - return curves[i + 1] * (time - x_4) / (curves[i] - x_4); - } - var n = i + 18; - for (i += 2; i < n; i += 2) { - if (curves[i] >= time) { - var x_5 = curves[i - 2], y_3 = curves[i - 1]; - return y_3 + (time - x_5) / (curves[i] - x_5) * (curves[i + 1] - y_3); - } - } - var x = curves[n - 2], y = curves[n - 1]; - return y + (1 - y) * (time - x) / (this.frames[frame + this.getFrameEntries()] - x); - }; - DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var slotAttachment = slot.getAttachment(); - if (!(slotAttachment instanceof spine.VertexAttachment) || slotAttachment.deformAttachment != this.attachment) - return; - var deform = slot.deform; - if (deform.length == 0) - blend = MixBlend.setup; - var vertices = this.vertices; - var vertexCount = vertices[0].length; - var frames = this.frames; - if (time < frames[0]) { - var vertexAttachment = slotAttachment; - switch (blend) { - case MixBlend.setup: - deform.length = 0; - return; - case MixBlend.first: - if (alpha == 1) { - deform.length = 0; - return; - } - deform.length = vertexCount; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i = 0; i < vertexCount; i++) - deform[i] += (setupVertices[i] - deform[i]) * alpha; - } - else { - alpha = 1 - alpha; - for (var i = 0; i < vertexCount; i++) - deform[i] *= alpha; - } - } - return; - } - deform.length = vertexCount; - if (time >= frames[frames.length - 1]) { - var lastVertices = vertices[frames.length - 1]; - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_1 = 0; i_1 < vertexCount; i_1++) - deform[i_1] += lastVertices[i_1] - setupVertices[i_1]; - } - else { - for (var i_2 = 0; i_2 < vertexCount; i_2++) - deform[i_2] += lastVertices[i_2]; - } - } - else - spine.Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount); - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_1 = slotAttachment; - if (!vertexAttachment_1.bones) { - var setupVertices = vertexAttachment_1.vertices; - for (var i_3 = 0; i_3 < vertexCount; i_3++) { - var setup = setupVertices[i_3]; - deform[i_3] = setup + (lastVertices[i_3] - setup) * alpha; - } - } - else { - for (var i_4 = 0; i_4 < vertexCount; i_4++) - deform[i_4] = lastVertices[i_4] * alpha; - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_5 = 0; i_5 < vertexCount; i_5++) - deform[i_5] += (lastVertices[i_5] - deform[i_5]) * alpha; - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_6 = 0; i_6 < vertexCount; i_6++) - deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha; - } - else { - for (var i_7 = 0; i_7 < vertexCount; i_7++) - deform[i_7] += lastVertices[i_7] * alpha; - } - } - } - return; - } - var frame = Timeline.search1(frames, time); - var percent = this.getCurvePercent(time, frame); - var prevVertices = vertices[frame]; - var nextVertices = vertices[frame + 1]; - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_8 = 0; i_8 < vertexCount; i_8++) { - var prev = prevVertices[i_8]; - deform[i_8] += prev + (nextVertices[i_8] - prev) * percent - setupVertices[i_8]; - } - } - else { - for (var i_9 = 0; i_9 < vertexCount; i_9++) { - var prev = prevVertices[i_9]; - deform[i_9] += prev + (nextVertices[i_9] - prev) * percent; - } - } - } - else { - for (var i_10 = 0; i_10 < vertexCount; i_10++) { - var prev = prevVertices[i_10]; - deform[i_10] = prev + (nextVertices[i_10] - prev) * percent; - } - } - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_2 = slotAttachment; - if (!vertexAttachment_2.bones) { - var setupVertices = vertexAttachment_2.vertices; - for (var i_11 = 0; i_11 < vertexCount; i_11++) { - var prev = prevVertices[i_11], setup = setupVertices[i_11]; - deform[i_11] = setup + (prev + (nextVertices[i_11] - prev) * percent - setup) * alpha; - } - } - else { - for (var i_12 = 0; i_12 < vertexCount; i_12++) { - var prev = prevVertices[i_12]; - deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha; - } - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_13 = 0; i_13 < vertexCount; i_13++) { - var prev = prevVertices[i_13]; - deform[i_13] += (prev + (nextVertices[i_13] - prev) * percent - deform[i_13]) * alpha; - } - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_14 = 0; i_14 < vertexCount; i_14++) { - var prev = prevVertices[i_14]; - deform[i_14] += (prev + (nextVertices[i_14] - prev) * percent - setupVertices[i_14]) * alpha; - } - } - else { - for (var i_15 = 0; i_15 < vertexCount; i_15++) { - var prev = prevVertices[i_15]; - deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha; - } - } - } - } - }; - return DeformTimeline; - }(CurveTimeline)); - spine.DeformTimeline = DeformTimeline; - var EventTimeline = (function (_super) { - __extends(EventTimeline, _super); - function EventTimeline(frameCount) { - var _this = _super.call(this, frameCount, EventTimeline.propertyIds) || this; - _this.events = new Array(frameCount); - return _this; - } - EventTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - EventTimeline.prototype.setFrame = function (frame, event) { - this.frames[frame] = event.time; - this.events[frame] = event; - }; - EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - if (!firedEvents) - return; - var frames = this.frames; - var frameCount = this.frames.length; - if (lastTime > time) { - this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction); - lastTime = -1; - } - else if (lastTime >= frames[frameCount - 1]) - return; - if (time < frames[0]) - return; - var i = 0; - if (lastTime < frames[0]) - i = 0; - else { - i = Timeline.search1(frames, lastTime) + 1; - var frameTime = frames[i]; - while (i > 0) { - if (frames[i - 1] != frameTime) - break; - i--; - } - } - for (; i < frameCount && time >= frames[i]; i++) - firedEvents.push(this.events[i]); - }; - EventTimeline.propertyIds = ["" + Property.event]; - return EventTimeline; - }(Timeline)); - spine.EventTimeline = EventTimeline; - var DrawOrderTimeline = (function (_super) { - __extends(DrawOrderTimeline, _super); - function DrawOrderTimeline(frameCount) { - var _this = _super.call(this, frameCount, DrawOrderTimeline.propertyIds) || this; - _this.drawOrders = new Array(frameCount); - return _this; - } - DrawOrderTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DrawOrderTimeline.prototype.setFrame = function (frame, time, drawOrder) { - this.frames[frame] = time; - this.drawOrders[frame] = drawOrder; - }; - DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - if (time < this.frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - var drawOrderToSetupIndex = this.drawOrders[Timeline.search1(this.frames, time)]; - if (!drawOrderToSetupIndex) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - else { - var drawOrder = skeleton.drawOrder; - var slots = skeleton.slots; - for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) - drawOrder[i] = slots[drawOrderToSetupIndex[i]]; - } - }; - DrawOrderTimeline.propertyIds = ["" + Property.drawOrder]; - return DrawOrderTimeline; - }(Timeline)); - spine.DrawOrderTimeline = DrawOrderTimeline; - var IkConstraintTimeline = (function (_super) { - __extends(IkConstraintTimeline, _super); - function IkConstraintTimeline(frameCount, bezierCount, ikConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.ikConstraint + "|" + ikConstraintIndex - ]) || this; - _this.ikConstraintIndex = ikConstraintIndex; - return _this; - } - IkConstraintTimeline.prototype.getFrameEntries = function () { - return 6; - }; - IkConstraintTimeline.prototype.setFrame = function (frame, time, mix, softness, bendDirection, compress, stretch) { - frame *= 6; - this.frames[frame] = time; - this.frames[frame + 1] = mix; - this.frames[frame + 2] = softness; - this.frames[frame + 3] = bendDirection; - this.frames[frame + 4] = compress ? 1 : 0; - this.frames[frame + 5] = stretch ? 1 : 0; - }; - IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - return; - case MixBlend.first: - constraint.mix += (constraint.data.mix - constraint.mix) * alpha; - constraint.softness += (constraint.data.softness - constraint.softness) * alpha; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - return; - } - var mix = 0, softness = 0; - var i = Timeline.search(frames, time, 6); - var curveType = this.curves[i / 6]; - switch (curveType) { - case 0: - var before = frames[i]; - mix = frames[i + 1]; - softness = frames[i + 2]; - var t = (time - before) / (frames[i + 6] - before); - mix += (frames[i + 6 + 1] - mix) * t; - softness += (frames[i + 6 + 2] - softness) * t; - break; - case 1: - mix = frames[i + 1]; - softness = frames[i + 2]; - break; - default: - mix = this.getBezierValue(time, i, 1, curveType - 2); - softness = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - if (blend == MixBlend.setup) { - constraint.mix = constraint.data.mix + (mix - constraint.data.mix) * alpha; - constraint.softness = constraint.data.softness + (softness - constraint.data.softness) * alpha; - if (direction == MixDirection.mixOut) { - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - else { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; - } - } - else { - constraint.mix += (mix - constraint.mix) * alpha; - constraint.softness += (softness - constraint.softness) * alpha; - if (direction == MixDirection.mixIn) { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; - } - } - }; - return IkConstraintTimeline; - }(CurveTimeline)); - spine.IkConstraintTimeline = IkConstraintTimeline; - var TransformConstraintTimeline = (function (_super) { - __extends(TransformConstraintTimeline, _super); - function TransformConstraintTimeline(frameCount, bezierCount, transformConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.transformConstraint + "|" + transformConstraintIndex - ]) || this; - _this.transformConstraintIndex = transformConstraintIndex; - return _this; - } - TransformConstraintTimeline.prototype.getFrameEntries = function () { - return 7; - }; - TransformConstraintTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) { - var frames = this.frames; - frame *= 7; - frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; - frames[frame + 4] = mixScaleX; - frames[frame + 5] = mixScaleY; - frames[frame + 6] = mixShearY; - }; - TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - var data = constraint.data; - switch (blend) { - case MixBlend.setup: - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - constraint.mixScaleX = data.mixScaleX; - constraint.mixScaleY = data.mixScaleY; - constraint.mixShearY = data.mixShearY; - return; - case MixBlend.first: - constraint.mixRotate += (data.mixRotate - constraint.mixRotate) * alpha; - constraint.mixX += (data.mixX - constraint.mixX) * alpha; - constraint.mixY += (data.mixY - constraint.mixY) * alpha; - constraint.mixScaleX += (data.mixScaleX - constraint.mixScaleX) * alpha; - constraint.mixScaleY += (data.mixScaleY - constraint.mixScaleY) * alpha; - constraint.mixShearY += (data.mixShearY - constraint.mixShearY) * alpha; - } - return; - } - var rotate, x, y, scaleX, scaleY, shearY; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; - switch (curveType) { - case 0: - var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - rotate += (frames[i + 7 + 1] - rotate) * t; - x += (frames[i + 7 + 2] - x) * t; - y += (frames[i + 7 + 3] - y) * t; - scaleX += (frames[i + 7 + 4] - scaleX) * t; - scaleY += (frames[i + 7 + 5] - scaleY) * t; - shearY += (frames[i + 7 + 6] - shearY) * t; - break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; - break; - default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - scaleX = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - scaleY = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - shearY = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - } - if (blend == MixBlend.setup) { - var data = constraint.data; - constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; - constraint.mixX = data.mixX + (x - data.mixX) * alpha; - constraint.mixY = data.mixY + (y - data.mixY) * alpha; - constraint.mixScaleX = data.mixScaleX + (scaleX - data.mixScaleX) * alpha; - constraint.mixScaleY = data.mixScaleY + (scaleY - data.mixScaleY) * alpha; - constraint.mixShearY = data.mixShearY + (shearY - data.mixShearY) * alpha; - } - else { - constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; - constraint.mixX += (x - constraint.mixX) * alpha; - constraint.mixY += (y - constraint.mixY) * alpha; - constraint.mixScaleX += (scaleX - constraint.mixScaleX) * alpha; - constraint.mixScaleY += (scaleY - constraint.mixScaleY) * alpha; - constraint.mixShearY += (shearY - constraint.mixShearY) * alpha; - } - }; - return TransformConstraintTimeline; - }(CurveTimeline)); - spine.TransformConstraintTimeline = TransformConstraintTimeline; - var PathConstraintPositionTimeline = (function (_super) { - __extends(PathConstraintPositionTimeline, _super); - function PathConstraintPositionTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintPosition + "|" + pathConstraintIndex) || this; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.position = constraint.data.position; - return; - case MixBlend.first: - constraint.position += (constraint.data.position - constraint.position) * alpha; - } - return; - } - var position = this.getCurveValue(time); - if (blend == MixBlend.setup) - constraint.position = constraint.data.position + (position - constraint.data.position) * alpha; - else - constraint.position += (position - constraint.position) * alpha; - }; - return PathConstraintPositionTimeline; - }(CurveTimeline1)); - spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; - var PathConstraintSpacingTimeline = (function (_super) { - __extends(PathConstraintSpacingTimeline, _super); - function PathConstraintSpacingTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintSpacing + "|" + pathConstraintIndex) || this; - _this.pathConstraintIndex = 0; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.spacing = constraint.data.spacing; - return; - case MixBlend.first: - constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha; - } - return; - } - var spacing = this.getCurveValue(time); - if (blend == MixBlend.setup) - constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha; - else - constraint.spacing += (spacing - constraint.spacing) * alpha; - }; - return PathConstraintSpacingTimeline; - }(CurveTimeline1)); - spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; - var PathConstraintMixTimeline = (function (_super) { - __extends(PathConstraintMixTimeline, _super); - function PathConstraintMixTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.pathConstraintMix + "|" + pathConstraintIndex - ]) || this; - _this.pathConstraintIndex = 0; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintMixTimeline.prototype.getFrameEntries = function () { - return 4; - }; - PathConstraintMixTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY) { - var frames = this.frames; - frame <<= 2; - frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; - }; - PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.mixRotate = constraint.data.mixRotate; - constraint.mixX = constraint.data.mixX; - constraint.mixY = constraint.data.mixY; - return; - case MixBlend.first: - constraint.mixRotate += (constraint.data.mixRotate - constraint.mixRotate) * alpha; - constraint.mixX += (constraint.data.mixX - constraint.mixX) * alpha; - constraint.mixY += (constraint.data.mixY - constraint.mixY) * alpha; - } - return; - } - var rotate, x, y; - var i = Timeline.search(frames, time, 4); - var curveType = this.curves[i >> 2]; - switch (curveType) { - case 0: - var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - rotate += (frames[i + 4 + 1] - rotate) * t; - x += (frames[i + 4 + 2] - x) * t; - y += (frames[i + 4 + 3] - y) * t; - break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - break; - default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - } - if (blend == MixBlend.setup) { - var data = constraint.data; - constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; - constraint.mixX = data.mixX + (x - data.mixX) * alpha; - constraint.mixY = data.mixY + (y - data.mixY) * alpha; - } - else { - constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; - constraint.mixX += (x - constraint.mixX) * alpha; - constraint.mixY += (y - constraint.mixY) * alpha; - } - }; - return PathConstraintMixTimeline; - }(CurveTimeline)); - spine.PathConstraintMixTimeline = PathConstraintMixTimeline; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationState = (function () { - function AnimationState(data) { - this.tracks = new Array(); - this.timeScale = 1; - this.unkeyedState = 0; - this.events = new Array(); - this.listeners = new Array(); - this.queue = new EventQueue(this); - this.propertyIDs = new spine.StringSet(); - this.animationsChanged = false; - this.trackEntryPool = new spine.Pool(function () { return new TrackEntry(); }); - this.data = data; - } - AnimationState.emptyAnimation = function () { - if (!_emptyAnimation) - _emptyAnimation = new spine.Animation("", [], 0); - return _emptyAnimation; - }; - AnimationState.prototype.update = function (delta) { - delta *= this.timeScale; - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var current = tracks[i]; - if (!current) - continue; - current.animationLast = current.nextAnimationLast; - current.trackLast = current.nextTrackLast; - var currentDelta = delta * current.timeScale; - if (current.delay > 0) { - current.delay -= currentDelta; - if (current.delay > 0) - continue; - currentDelta = -current.delay; - current.delay = 0; - } - var next = current.next; - if (next) { - var nextTime = current.trackLast - next.delay; - if (nextTime >= 0) { - next.delay = 0; - next.trackTime += current.timeScale == 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale; - current.trackTime += currentDelta; - this.setCurrent(i, next, true); - while (next.mixingFrom) { - next.mixTime += delta; - next = next.mixingFrom; - } - continue; - } - } - else if (current.trackLast >= current.trackEnd && !current.mixingFrom) { - tracks[i] = null; - this.queue.end(current); - this.clearNext(current); - continue; - } - if (current.mixingFrom && this.updateMixingFrom(current, delta)) { - var from = current.mixingFrom; - current.mixingFrom = null; - if (from) - from.mixingTo = null; - while (from) { - this.queue.end(from); - from = from.mixingFrom; - } - } - current.trackTime += currentDelta; - } - this.queue.drain(); - }; - AnimationState.prototype.updateMixingFrom = function (to, delta) { - var from = to.mixingFrom; - if (!from) - return true; - var finished = this.updateMixingFrom(from, delta); - from.animationLast = from.nextAnimationLast; - from.trackLast = from.nextTrackLast; - if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { - if (from.totalAlpha == 0 || to.mixDuration == 0) { - to.mixingFrom = from.mixingFrom; - if (from.mixingFrom) - from.mixingFrom.mixingTo = to; - to.interruptAlpha = from.interruptAlpha; - this.queue.end(from); - } - return finished; - } - from.trackTime += delta * from.timeScale; - to.mixTime += delta; - return false; - }; - AnimationState.prototype.apply = function (skeleton) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - if (this.animationsChanged) - this._animationsChanged(); - var events = this.events; - var tracks = this.tracks; - var applied = false; - for (var i_16 = 0, n_1 = tracks.length; i_16 < n_1; i_16++) { - var current = tracks[i_16]; - if (!current || current.delay > 0) - continue; - applied = true; - var blend = i_16 == 0 ? spine.MixBlend.first : current.mixBlend; - var mix = current.alpha; - if (current.mixingFrom) - mix *= this.applyMixingFrom(current, skeleton, blend); - else if (current.trackTime >= current.trackEnd && !current.next) - mix = 0; - var animationLast = current.animationLast, animationTime = current.getAnimationTime(), applyTime = animationTime; - var applyEvents = events; - if (current.reverse) { - applyTime = current.animation.duration - applyTime; - applyEvents = null; - } - var timelines = current.animation.timelines; - var timelineCount = timelines.length; - if ((i_16 == 0 && mix == 1) || blend == spine.MixBlend.add) { - for (var ii = 0; ii < timelineCount; ii++) { - spine.Utils.webkit602BugfixHelper(mix, blend); - var timeline = timelines[ii]; - if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, applyTime, blend, true); - else - timeline.apply(skeleton, animationLast, applyTime, applyEvents, mix, blend, spine.MixDirection.mixIn); - } - } - else { - var timelineMode = current.timelineMode; - var firstFrame = current.timelinesRotation.length != timelineCount << 1; - if (firstFrame) - current.timelinesRotation.length = timelineCount << 1; - for (var ii = 0; ii < timelineCount; ii++) { - var timeline_1 = timelines[ii]; - var timelineBlend = timelineMode[ii] == SUBSEQUENT ? blend : spine.MixBlend.setup; - if (timeline_1 instanceof spine.RotateTimeline) { - this.applyRotateTimeline(timeline_1, skeleton, applyTime, mix, timelineBlend, current.timelinesRotation, ii << 1, firstFrame); - } - else if (timeline_1 instanceof spine.AttachmentTimeline) { - this.applyAttachmentTimeline(timeline_1, skeleton, applyTime, blend, true); - } - else { - spine.Utils.webkit602BugfixHelper(mix, blend); - timeline_1.apply(skeleton, animationLast, applyTime, applyEvents, mix, timelineBlend, spine.MixDirection.mixIn); - } - } - } - this.queueEvents(current, animationTime); - events.length = 0; - current.nextAnimationLast = animationTime; - current.nextTrackLast = current.trackTime; - } - var setupState = this.unkeyedState + SETUP; - var slots = skeleton.slots; - for (var i = 0, n = skeleton.slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.attachmentState == setupState) { - var attachmentName = slot.data.attachmentName; - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - } - } - this.unkeyedState += 2; - this.queue.drain(); - return applied; - }; - AnimationState.prototype.applyMixingFrom = function (to, skeleton, blend) { - var from = to.mixingFrom; - if (from.mixingFrom) - this.applyMixingFrom(from, skeleton, blend); - var mix = 0; - if (to.mixDuration == 0) { - mix = 1; - if (blend == spine.MixBlend.first) - blend = spine.MixBlend.setup; - } - else { - mix = to.mixTime / to.mixDuration; - if (mix > 1) - mix = 1; - if (blend != spine.MixBlend.first) - blend = from.mixBlend; - } - var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold; - var timelines = from.animation.timelines; - var timelineCount = timelines.length; - var alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix); - var animationLast = from.animationLast, animationTime = from.getAnimationTime(), applyTime = animationTime; - var events = null; - if (from.reverse) - applyTime = from.animation.duration - applyTime; - else if (mix < from.eventThreshold) - events = this.events; - if (blend == spine.MixBlend.add) { - for (var i = 0; i < timelineCount; i++) - timelines[i].apply(skeleton, animationLast, applyTime, events, alphaMix, blend, spine.MixDirection.mixOut); - } - else { - var timelineMode = from.timelineMode; - var timelineHoldMix = from.timelineHoldMix; - var firstFrame = from.timelinesRotation.length != timelineCount << 1; - if (firstFrame) - from.timelinesRotation.length = timelineCount << 1; - from.totalAlpha = 0; - for (var i = 0; i < timelineCount; i++) { - var timeline = timelines[i]; - var direction = spine.MixDirection.mixOut; - var timelineBlend = void 0; - var alpha = 0; - switch (timelineMode[i]) { - case SUBSEQUENT: - if (!drawOrder && timeline instanceof spine.DrawOrderTimeline) - continue; - timelineBlend = blend; - alpha = alphaMix; - break; - case FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaMix; - break; - case HOLD_SUBSEQUENT: - timelineBlend = blend; - alpha = alphaHold; - break; - case HOLD_FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaHold; - break; - default: - timelineBlend = spine.MixBlend.setup; - var holdMix = timelineHoldMix[i]; - alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration); - break; - } - from.totalAlpha += alpha; - if (timeline instanceof spine.RotateTimeline) - this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, timelineBlend, from.timelinesRotation, i << 1, firstFrame); - else if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, applyTime, timelineBlend, attachments); - else { - spine.Utils.webkit602BugfixHelper(alpha, blend); - if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup) - direction = spine.MixDirection.mixIn; - timeline.apply(skeleton, animationLast, applyTime, events, alpha, timelineBlend, direction); - } - } - } - if (to.mixDuration > 0) - this.queueEvents(from, animationTime); - this.events.length = 0; - from.nextAnimationLast = animationTime; - from.nextTrackLast = from.trackTime; - return mix; - }; - AnimationState.prototype.applyAttachmentTimeline = function (timeline, skeleton, time, blend, attachments) { - var slot = skeleton.slots[timeline.slotIndex]; - if (!slot.bone.active) - return; - if (time < timeline.frames[0]) { - if (blend == spine.MixBlend.setup || blend == spine.MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments); - } - else - this.setAttachment(skeleton, slot, timeline.attachmentNames[spine.Timeline.search1(timeline.frames, time)], attachments); - if (slot.attachmentState <= this.unkeyedState) - slot.attachmentState = this.unkeyedState + SETUP; - }; - AnimationState.prototype.setAttachment = function (skeleton, slot, attachmentName, attachments) { - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - if (attachments) - slot.attachmentState = this.unkeyedState + CURRENT; - }; - AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) { - if (firstFrame) - timelinesRotation[i] = 0; - if (alpha == 1) { - timeline.apply(skeleton, 0, time, null, 1, blend, spine.MixDirection.mixIn); - return; - } - var bone = skeleton.bones[timeline.boneIndex]; - if (!bone.active) - return; - var frames = timeline.frames; - var r1 = 0, r2 = 0; - if (time < frames[0]) { - switch (blend) { - case spine.MixBlend.setup: - bone.rotation = bone.data.rotation; - default: - return; - case spine.MixBlend.first: - r1 = bone.rotation; - r2 = bone.data.rotation; - } - } - else { - r1 = blend == spine.MixBlend.setup ? bone.data.rotation : bone.rotation; - r2 = bone.data.rotation + timeline.getCurveValue(time); - } - var total = 0, diff = r2 - r1; - diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360; - if (diff == 0) { - total = timelinesRotation[i]; - } - else { - var lastTotal = 0, lastDiff = 0; - if (firstFrame) { - lastTotal = 0; - lastDiff = diff; - } - else { - lastTotal = timelinesRotation[i]; - lastDiff = timelinesRotation[i + 1]; - } - var current = diff > 0, dir = lastTotal >= 0; - if (spine.MathUtils.signum(lastDiff) != spine.MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { - if (Math.abs(lastTotal) > 180) - lastTotal += 360 * spine.MathUtils.signum(lastTotal); - dir = current; - } - total = diff + lastTotal - lastTotal % 360; - if (dir != current) - total += 360 * spine.MathUtils.signum(lastTotal); - timelinesRotation[i] = total; - } - timelinesRotation[i + 1] = diff; - bone.rotation = r1 + total * alpha; - }; - AnimationState.prototype.queueEvents = function (entry, animationTime) { - var animationStart = entry.animationStart, animationEnd = entry.animationEnd; - var duration = animationEnd - animationStart; - var trackLastWrapped = entry.trackLast % duration; - var events = this.events; - var i = 0, n = events.length; - for (; i < n; i++) { - var event_1 = events[i]; - if (event_1.time < trackLastWrapped) - break; - if (event_1.time > animationEnd) - continue; - this.queue.event(entry, event_1); - } - var complete = false; - if (entry.loop) - complete = duration == 0 || trackLastWrapped > entry.trackTime % duration; - else - complete = animationTime >= animationEnd && entry.animationLast < animationEnd; - if (complete) - this.queue.complete(entry); - for (; i < n; i++) { - var event_2 = events[i]; - if (event_2.time < animationStart) - continue; - this.queue.event(entry, event_2); - } - }; - AnimationState.prototype.clearTracks = function () { - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) - this.clearTrack(i); - this.tracks.length = 0; - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.clearTrack = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return; - var current = this.tracks[trackIndex]; - if (!current) - return; - this.queue.end(current); - this.clearNext(current); - var entry = current; - while (true) { - var from = entry.mixingFrom; - if (!from) - break; - this.queue.end(from); - entry.mixingFrom = null; - entry.mixingTo = null; - entry = from; - } - this.tracks[current.trackIndex] = null; - this.queue.drain(); - }; - AnimationState.prototype.setCurrent = function (index, current, interrupt) { - var from = this.expandToIndex(index); - this.tracks[index] = current; - current.previous = null; - if (from) { - if (interrupt) - this.queue.interrupt(from); - current.mixingFrom = from; - from.mixingTo = current; - current.mixTime = 0; - if (from.mixingFrom && from.mixDuration > 0) - current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration); - from.timelinesRotation.length = 0; - } - this.queue.start(current); - }; - AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { - if (loop === void 0) { loop = false; } - var animation = this.data.skeletonData.findAnimation(animationName); - if (!animation) - throw new Error("Animation not found: " + animationName); - return this.setAnimationWith(trackIndex, animation, loop); - }; - AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { - if (loop === void 0) { loop = false; } - if (!animation) - throw new Error("animation cannot be null."); - var interrupt = true; - var current = this.expandToIndex(trackIndex); - if (current) { - if (current.nextTrackLast == -1) { - this.tracks[trackIndex] = current.mixingFrom; - this.queue.interrupt(current); - this.queue.end(current); - this.clearNext(current); - current = current.mixingFrom; - interrupt = false; - } - else - this.clearNext(current); - } - var entry = this.trackEntry(trackIndex, animation, loop, current); - this.setCurrent(trackIndex, entry, interrupt); - this.queue.drain(); - return entry; - }; - AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { - if (loop === void 0) { loop = false; } - if (delay === void 0) { delay = 0; } - var animation = this.data.skeletonData.findAnimation(animationName); - if (!animation) - throw new Error("Animation not found: " + animationName); - return this.addAnimationWith(trackIndex, animation, loop, delay); - }; - AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { - if (loop === void 0) { loop = false; } - if (delay === void 0) { delay = 0; } - if (!animation) - throw new Error("animation cannot be null."); - var last = this.expandToIndex(trackIndex); - if (last) { - while (last.next) - last = last.next; - } - var entry = this.trackEntry(trackIndex, animation, loop, last); - if (!last) { - this.setCurrent(trackIndex, entry, true); - this.queue.drain(); - } - else { - last.next = entry; - entry.previous = last; - if (delay <= 0) - delay += last.getTrackComplete() - entry.mixDuration; - } - entry.delay = delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) { - if (mixDuration === void 0) { mixDuration = 0; } - var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation(), false); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - return entry; - }; - AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) { - if (mixDuration === void 0) { mixDuration = 0; } - if (delay === void 0) { delay = 0; } - var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay <= 0 ? 1 : delay); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - if (delay <= 0 && entry.previous) - entry.delay = entry.previous.getTrackComplete() - entry.mixDuration + delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimations = function (mixDuration) { - if (mixDuration === void 0) { mixDuration = 0; } - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) { - var current = this.tracks[i]; - if (current) - this.setEmptyAnimation(current.trackIndex, mixDuration); - } - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.expandToIndex = function (index) { - if (index < this.tracks.length) - return this.tracks[index]; - spine.Utils.ensureArrayCapacity(this.tracks, index + 1, null); - this.tracks.length = index + 1; - return null; - }; - AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) { - var entry = this.trackEntryPool.obtain(); - entry.trackIndex = trackIndex; - entry.animation = animation; - entry.loop = loop; - entry.holdPrevious = false; - entry.eventThreshold = 0; - entry.attachmentThreshold = 0; - entry.drawOrderThreshold = 0; - entry.animationStart = 0; - entry.animationEnd = animation.duration; - entry.animationLast = -1; - entry.nextAnimationLast = -1; - entry.delay = 0; - entry.trackTime = 0; - entry.trackLast = -1; - entry.nextTrackLast = -1; - entry.trackEnd = Number.MAX_VALUE; - entry.timeScale = 1; - entry.alpha = 1; - entry.interruptAlpha = 1; - entry.mixTime = 0; - entry.mixDuration = !last ? 0 : this.data.getMix(last.animation, animation); - entry.mixBlend = spine.MixBlend.replace; - return entry; - }; - AnimationState.prototype.clearNext = function (entry) { - var next = entry.next; - while (next) { - this.queue.dispose(next); - next = next.next; - } - entry.next = null; - }; - AnimationState.prototype._animationsChanged = function () { - this.animationsChanged = false; - this.propertyIDs.clear(); - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var entry = tracks[i]; - if (!entry) - continue; - while (entry.mixingFrom) - entry = entry.mixingFrom; - do { - if (!entry.mixingTo || entry.mixBlend != spine.MixBlend.add) - this.computeHold(entry); - entry = entry.mixingTo; - } while (entry); - } - }; - AnimationState.prototype.computeHold = function (entry) { - var to = entry.mixingTo; - var timelines = entry.animation.timelines; - var timelinesCount = entry.animation.timelines.length; - var timelineMode = entry.timelineMode; - timelineMode.length = timelinesCount; - var timelineHoldMix = entry.timelineHoldMix; - timelineHoldMix.length = 0; - var propertyIDs = this.propertyIDs; - if (to && to.holdPrevious) { - for (var i = 0; i < timelinesCount; i++) - timelineMode[i] = propertyIDs.addAll(timelines[i].getPropertyIds()) ? HOLD_FIRST : HOLD_SUBSEQUENT; - return; - } - outer: for (var i = 0; i < timelinesCount; i++) { - var timeline = timelines[i]; - var ids = timeline.getPropertyIds(); - if (!propertyIDs.addAll(ids)) - timelineMode[i] = SUBSEQUENT; - else if (!to || timeline instanceof spine.AttachmentTimeline || timeline instanceof spine.DrawOrderTimeline - || timeline instanceof spine.EventTimeline || !to.animation.hasTimeline(ids)) { - timelineMode[i] = FIRST; - } - else { - for (var next = to.mixingTo; next; next = next.mixingTo) { - if (next.animation.hasTimeline(ids)) - continue; - if (entry.mixDuration > 0) { - timelineMode[i] = HOLD_MIX; - timelineHoldMix[i] = next; - continue outer; - } - break; - } - timelineMode[i] = HOLD_FIRST; - } - } - }; - AnimationState.prototype.getCurrent = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return null; - return this.tracks[trackIndex]; - }; - AnimationState.prototype.addListener = function (listener) { - if (!listener) - throw new Error("listener cannot be null."); - this.listeners.push(listener); - }; - AnimationState.prototype.removeListener = function (listener) { - var index = this.listeners.indexOf(listener); - if (index >= 0) - this.listeners.splice(index, 1); - }; - AnimationState.prototype.clearListeners = function () { - this.listeners.length = 0; - }; - AnimationState.prototype.clearListenerNotifications = function () { - this.queue.clear(); - }; - return AnimationState; - }()); - spine.AnimationState = AnimationState; - var TrackEntry = (function () { - function TrackEntry() { - this.mixBlend = spine.MixBlend.replace; - this.timelineMode = new Array(); - this.timelineHoldMix = new Array(); - this.timelinesRotation = new Array(); - } - TrackEntry.prototype.reset = function () { - this.next = null; - this.previous = null; - this.mixingFrom = null; - this.mixingTo = null; - this.animation = null; - this.listener = null; - this.timelineMode.length = 0; - this.timelineHoldMix.length = 0; - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.getAnimationTime = function () { - if (this.loop) { - var duration = this.animationEnd - this.animationStart; - if (duration == 0) - return this.animationStart; - return (this.trackTime % duration) + this.animationStart; - } - return Math.min(this.trackTime + this.animationStart, this.animationEnd); - }; - TrackEntry.prototype.setAnimationLast = function (animationLast) { - this.animationLast = animationLast; - this.nextAnimationLast = animationLast; - }; - TrackEntry.prototype.isComplete = function () { - return this.trackTime >= this.animationEnd - this.animationStart; - }; - TrackEntry.prototype.resetRotationDirections = function () { - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.getTrackComplete = function () { - var duration = this.animationEnd - this.animationStart; - if (duration != 0) { - if (this.loop) - return duration * (1 + ((this.trackTime / duration) | 0)); - if (this.trackTime < duration) - return duration; - } - return this.trackTime; - }; - return TrackEntry; - }()); - spine.TrackEntry = TrackEntry; - var EventQueue = (function () { - function EventQueue(animState) { - this.objects = []; - this.drainDisabled = false; - this.animState = animState; - } - EventQueue.prototype.start = function (entry) { - this.objects.push(EventType.start); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.interrupt = function (entry) { - this.objects.push(EventType.interrupt); - this.objects.push(entry); - }; - EventQueue.prototype.end = function (entry) { - this.objects.push(EventType.end); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.dispose = function (entry) { - this.objects.push(EventType.dispose); - this.objects.push(entry); - }; - EventQueue.prototype.complete = function (entry) { - this.objects.push(EventType.complete); - this.objects.push(entry); - }; - EventQueue.prototype.event = function (entry, event) { - this.objects.push(EventType.event); - this.objects.push(entry); - this.objects.push(event); - }; - EventQueue.prototype.drain = function () { - if (this.drainDisabled) - return; - this.drainDisabled = true; - var objects = this.objects; - var listeners = this.animState.listeners; - for (var i = 0; i < objects.length; i += 2) { - var type = objects[i]; - var entry = objects[i + 1]; - switch (type) { - case EventType.start: - if (entry.listener && entry.listener.start) - entry.listener.start(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].start) - listeners[ii].start(entry); - break; - case EventType.interrupt: - if (entry.listener && entry.listener.interrupt) - entry.listener.interrupt(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].interrupt) - listeners[ii].interrupt(entry); - break; - case EventType.end: - if (entry.listener && entry.listener.end) - entry.listener.end(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].end) - listeners[ii].end(entry); - case EventType.dispose: - if (entry.listener && entry.listener.dispose) - entry.listener.dispose(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].dispose) - listeners[ii].dispose(entry); - this.animState.trackEntryPool.free(entry); - break; - case EventType.complete: - if (entry.listener && entry.listener.complete) - entry.listener.complete(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].complete) - listeners[ii].complete(entry); - break; - case EventType.event: - var event_3 = objects[i++ + 2]; - if (entry.listener && entry.listener.event) - entry.listener.event(entry, event_3); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].event) - listeners[ii].event(entry, event_3); - break; - } - } - this.clear(); - this.drainDisabled = false; - }; - EventQueue.prototype.clear = function () { - this.objects.length = 0; - }; - return EventQueue; - }()); - spine.EventQueue = EventQueue; - var EventType; - (function (EventType) { - EventType[EventType["start"] = 0] = "start"; - EventType[EventType["interrupt"] = 1] = "interrupt"; - EventType[EventType["end"] = 2] = "end"; - EventType[EventType["dispose"] = 3] = "dispose"; - EventType[EventType["complete"] = 4] = "complete"; - EventType[EventType["event"] = 5] = "event"; - })(EventType = spine.EventType || (spine.EventType = {})); - var AnimationStateAdapter = (function () { - function AnimationStateAdapter() { - } - AnimationStateAdapter.prototype.start = function (entry) { - }; - AnimationStateAdapter.prototype.interrupt = function (entry) { - }; - AnimationStateAdapter.prototype.end = function (entry) { - }; - AnimationStateAdapter.prototype.dispose = function (entry) { - }; - AnimationStateAdapter.prototype.complete = function (entry) { - }; - AnimationStateAdapter.prototype.event = function (entry, event) { - }; - return AnimationStateAdapter; - }()); - spine.AnimationStateAdapter = AnimationStateAdapter; - var SUBSEQUENT = 0; - var FIRST = 1; - var HOLD_SUBSEQUENT = 2; - var HOLD_FIRST = 3; - var HOLD_MIX = 4; - var SETUP = 1; - var CURRENT = 2; - var _emptyAnimation = null; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationStateData = (function () { - function AnimationStateData(skeletonData) { - this.animationToMixTime = {}; - this.defaultMix = 0; - if (!skeletonData) - throw new Error("skeletonData cannot be null."); - this.skeletonData = skeletonData; - } - AnimationStateData.prototype.setMix = function (fromName, toName, duration) { - var from = this.skeletonData.findAnimation(fromName); - if (!from) - throw new Error("Animation not found: " + fromName); - var to = this.skeletonData.findAnimation(toName); - if (!to) - throw new Error("Animation not found: " + toName); - this.setMixWith(from, to, duration); - }; - AnimationStateData.prototype.setMixWith = function (from, to, duration) { - if (!from) - throw new Error("from cannot be null."); - if (!to) - throw new Error("to cannot be null."); - var key = from.name + "." + to.name; - this.animationToMixTime[key] = duration; - }; - AnimationStateData.prototype.getMix = function (from, to) { - var key = from.name + "." + to.name; - var value = this.animationToMixTime[key]; - return value === undefined ? this.defaultMix : value; - }; - return AnimationStateData; - }()); - spine.AnimationStateData = AnimationStateData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AssetManager = (function () { - function AssetManager(textureLoader, pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - this.assets = {}; - this.errors = {}; - this.toLoad = 0; - this.loaded = 0; - this.textureLoader = textureLoader; - this.pathPrefix = pathPrefix; - this.downloader = downloader || new Downloader(); - } - AssetManager.prototype.start = function (path) { - this.toLoad++; - return this.pathPrefix + path; - }; - AssetManager.prototype.success = function (callback, path, asset) { - this.toLoad--; - this.loaded++; - this.assets[path] = asset; - if (callback) - callback(path, asset); - }; - AssetManager.prototype.error = function (callback, path, message) { - this.toLoad--; - this.loaded++; - this.errors[path] = message; - if (callback) - callback(path, message); - }; - AssetManager.prototype.setRawDataURI = function (path, data) { - this.downloader.rawDataUris[this.pathPrefix + path] = data; - }; - AssetManager.prototype.loadBinary = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadBinary(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load binary " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadText = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadText(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load text " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadJson = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadJson(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load JSON " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadTexture = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); - var isWebWorker = !isBrowser && typeof importScripts !== 'undefined'; - if (isWebWorker) { - fetch(path, { mode: "cors" }).then(function (response) { - if (response.ok) - return response.blob(); - _this.error(error, path, "Couldn't load image: " + path); - return null; - }).then(function (blob) { - return blob ? createImageBitmap(blob, { premultiplyAlpha: "none", colorSpaceConversion: "none" }) : null; - }).then(function (bitmap) { - if (bitmap) - _this.success(success, path, _this.textureLoader(bitmap)); - }); - } - else { - var image_1 = new Image(); - image_1.crossOrigin = "anonymous"; - image_1.onload = function () { - _this.success(success, path, _this.textureLoader(image_1)); - }; - image_1.onerror = function () { - _this.error(error, path, "Couldn't load image: " + path); - }; - if (this.downloader.rawDataUris[path]) - path = this.downloader.rawDataUris[path]; - image_1.src = path; - } - }; - AssetManager.prototype.loadTextureAtlas = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - var index = path.lastIndexOf("/"); - var parent = index >= 0 ? path.substring(0, index + 1) : ""; - path = this.start(path); - this.downloader.downloadText(path, function (atlasText) { - try { - var atlas_1 = new spine.TextureAtlas(atlasText); - var toLoad_1 = atlas_1.pages.length, abort_1 = false; - var _loop_1 = function (page) { - _this.loadTexture(parent + page.name, function (imagePath, texture) { - if (!abort_1) { - page.setTexture(texture); - if (--toLoad_1 == 0) - _this.success(success, path, atlas_1); - } - }, function (imagePath, message) { - if (!abort_1) - _this.error(error, path, "Couldn't load texture atlas " + path + " page image: " + imagePath); - abort_1 = true; - }); - }; - for (var _i = 0, _a = atlas_1.pages; _i < _a.length; _i++) { - var page = _a[_i]; - _loop_1(page); - } - } - catch (e) { - _this.error(error, path, "Couldn't parse texture atlas " + path + ": " + e.message); - } - }, function (status, responseText) { - _this.error(error, path, "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.get = function (path) { - return this.assets[this.pathPrefix + path]; - }; - AssetManager.prototype.require = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset) - return asset; - var error = this.errors[path]; - throw Error("Asset not found: " + path + (error ? "\n" + error : "")); - }; - AssetManager.prototype.remove = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset.dispose) - asset.dispose(); - delete this.assets[path]; - return asset; - }; - AssetManager.prototype.removeAll = function () { - for (var key in this.assets) { - var asset = this.assets[key]; - if (asset.dispose) - asset.dispose(); - } - this.assets = {}; - }; - AssetManager.prototype.isLoadingComplete = function () { - return this.toLoad == 0; - }; - AssetManager.prototype.getToLoad = function () { - return this.toLoad; - }; - AssetManager.prototype.getLoaded = function () { - return this.loaded; - }; - AssetManager.prototype.dispose = function () { - this.removeAll(); - }; - AssetManager.prototype.hasErrors = function () { - return Object.keys(this.errors).length > 0; - }; - AssetManager.prototype.getErrors = function () { - return this.errors; - }; - return AssetManager; - }()); - spine.AssetManager = AssetManager; - var Downloader = (function () { - function Downloader() { - this.callbacks = {}; - this.rawDataUris = {}; - } - Downloader.prototype.downloadText = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.overrideMimeType("text/html"); - request.open("GET", url, true); - var done = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = done; - request.onerror = done; - request.send(); - }; - Downloader.prototype.downloadJson = function (url, success, error) { - this.downloadText(url, function (data) { - success(JSON.parse(data)); - }, error); - }; - Downloader.prototype.downloadBinary = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.open("GET", url, true); - request.responseType = "arraybuffer"; - var onerror = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = function () { - if (request.status == 200) - _this.finish(url, 200, new Uint8Array(request.response)); - else - onerror(); - }; - request.onerror = onerror; - request.send(); - }; - Downloader.prototype.start = function (url, success, error) { - var callbacks = this.callbacks[url]; - try { - if (callbacks) - return true; - this.callbacks[url] = callbacks = []; - } - finally { - callbacks.push(success, error); - } - }; - Downloader.prototype.finish = function (url, status, data) { - var callbacks = this.callbacks[url]; - delete this.callbacks[url]; - var args = status == 200 ? [data] : [status, data]; - for (var i = args.length - 1, n = callbacks.length; i < n; i += 2) - callbacks[i].apply(null, args); - }; - return Downloader; - }()); - spine.Downloader = Downloader; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AtlasAttachmentLoader = (function () { - function AtlasAttachmentLoader(atlas) { - this.atlas = atlas; - } - AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.RegionAttachment(name); - attachment.setRegion(region); - return attachment; - }; - AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.MeshAttachment(name); - attachment.region = region; - return attachment; - }; - AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { - return new spine.BoundingBoxAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { - return new spine.PathAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) { - return new spine.PointAttachment(name); - }; - AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) { - return new spine.ClippingAttachment(name); - }; - return AtlasAttachmentLoader; - }()); - spine.AtlasAttachmentLoader = AtlasAttachmentLoader; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Bone = (function () { - function Bone(data, skeleton, parent) { - this.children = new Array(); - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 0; - this.scaleY = 0; - this.shearX = 0; - this.shearY = 0; - this.ax = 0; - this.ay = 0; - this.arotation = 0; - this.ascaleX = 0; - this.ascaleY = 0; - this.ashearX = 0; - this.ashearY = 0; - this.a = 0; - this.b = 0; - this.c = 0; - this.d = 0; - this.worldY = 0; - this.worldX = 0; - this.sorted = false; - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.skeleton = skeleton; - this.parent = parent; - this.setToSetupPose(); - } - Bone.prototype.isActive = function () { - return this.active; - }; - Bone.prototype.update = function () { - this.updateWorldTransformWith(this.ax, this.ay, this.arotation, this.ascaleX, this.ascaleY, this.ashearX, this.ashearY); - }; - Bone.prototype.updateWorldTransform = function () { - this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); - }; - Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { - this.ax = x; - this.ay = y; - this.arotation = rotation; - this.ascaleX = scaleX; - this.ascaleY = scaleY; - this.ashearX = shearX; - this.ashearY = shearY; - var parent = this.parent; - if (!parent) { - var skeleton = this.skeleton; - var rotationY = rotation + 90 + shearY; - var sx = skeleton.scaleX; - var sy = skeleton.scaleY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX * sx; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY * sx; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX * sy; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY * sy; - this.worldX = x * sx + skeleton.x; - this.worldY = y * sy + skeleton.y; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - this.worldX = pa * x + pb * y + parent.worldX; - this.worldY = pc * x + pd * y + parent.worldY; - switch (this.data.transformMode) { - case spine.TransformMode.Normal: { - var rotationY = rotation + 90 + shearY; - var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * scaleY; - var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * scaleY; - this.a = pa * la + pb * lc; - this.b = pa * lb + pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - return; - } - case spine.TransformMode.OnlyTranslation: { - var rotationY = rotation + 90 + shearY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY; - break; - } - case spine.TransformMode.NoRotationOrReflection: { - var s = pa * pa + pc * pc; - var prx = 0; - if (s > 0.0001) { - s = Math.abs(pa * pd - pb * pc) / s; - pa /= this.skeleton.scaleX; - pc /= this.skeleton.scaleY; - pb = pc * s; - pd = pa * s; - prx = Math.atan2(pc, pa) * spine.MathUtils.radDeg; - } - else { - pa = 0; - pc = 0; - prx = 90 - Math.atan2(pd, pb) * spine.MathUtils.radDeg; - } - var rx = rotation + shearX - prx; - var ry = rotation + shearY - prx + 90; - var la = spine.MathUtils.cosDeg(rx) * scaleX; - var lb = spine.MathUtils.cosDeg(ry) * scaleY; - var lc = spine.MathUtils.sinDeg(rx) * scaleX; - var ld = spine.MathUtils.sinDeg(ry) * scaleY; - this.a = pa * la - pb * lc; - this.b = pa * lb - pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - break; - } - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: { - var cos = spine.MathUtils.cosDeg(rotation); - var sin = spine.MathUtils.sinDeg(rotation); - var za = (pa * cos + pb * sin) / this.skeleton.scaleX; - var zc = (pc * cos + pd * sin) / this.skeleton.scaleY; - var s = Math.sqrt(za * za + zc * zc); - if (s > 0.00001) - s = 1 / s; - za *= s; - zc *= s; - s = Math.sqrt(za * za + zc * zc); - if (this.data.transformMode == spine.TransformMode.NoScale - && (pa * pd - pb * pc < 0) != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0)) - s = -s; - var r = Math.PI / 2 + Math.atan2(zc, za); - var zb = Math.cos(r) * s; - var zd = Math.sin(r) * s; - var la = spine.MathUtils.cosDeg(shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(90 + shearY) * scaleY; - var lc = spine.MathUtils.sinDeg(shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(90 + shearY) * scaleY; - this.a = za * la + zb * lc; - this.b = za * lb + zb * ld; - this.c = zc * la + zd * lc; - this.d = zc * lb + zd * ld; - break; - } - } - this.a *= this.skeleton.scaleX; - this.b *= this.skeleton.scaleX; - this.c *= this.skeleton.scaleY; - this.d *= this.skeleton.scaleY; - }; - Bone.prototype.setToSetupPose = function () { - var data = this.data; - this.x = data.x; - this.y = data.y; - this.rotation = data.rotation; - this.scaleX = data.scaleX; - this.scaleY = data.scaleY; - this.shearX = data.shearX; - this.shearY = data.shearY; - }; - Bone.prototype.getWorldRotationX = function () { - return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldRotationY = function () { - return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldScaleX = function () { - return Math.sqrt(this.a * this.a + this.c * this.c); - }; - Bone.prototype.getWorldScaleY = function () { - return Math.sqrt(this.b * this.b + this.d * this.d); - }; - Bone.prototype.updateAppliedTransform = function () { - var parent = this.parent; - if (!parent) { - this.ax = this.worldX; - this.ay = this.worldY; - this.arotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c); - this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d); - this.ashearX = 0; - this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * spine.MathUtils.radDeg; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - var pid = 1 / (pa * pd - pb * pc); - var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; - this.ax = (dx * pd * pid - dy * pb * pid); - this.ay = (dy * pa * pid - dx * pc * pid); - var ia = pid * pd; - var id = pid * pa; - var ib = pid * pb; - var ic = pid * pc; - var ra = ia * this.a - ib * this.c; - var rb = ia * this.b - ib * this.d; - var rc = id * this.c - ic * this.a; - var rd = id * this.d - ic * this.b; - this.ashearX = 0; - this.ascaleX = Math.sqrt(ra * ra + rc * rc); - if (this.ascaleX > 0.0001) { - var det = ra * rd - rb * rc; - this.ascaleY = det / this.ascaleX; - this.ashearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; - this.arotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; - } - else { - this.ascaleX = 0; - this.ascaleY = Math.sqrt(rb * rb + rd * rd); - this.ashearY = 0; - this.arotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; - } - }; - Bone.prototype.worldToLocal = function (world) { - var invDet = 1 / (this.a * this.d - this.b * this.c); - var x = world.x - this.worldX, y = world.y - this.worldY; - world.x = x * this.d * invDet - y * this.b * invDet; - world.y = y * this.a * invDet - x * this.c * invDet; - return world; - }; - Bone.prototype.localToWorld = function (local) { - var x = local.x, y = local.y; - local.x = x * this.a + y * this.b + this.worldX; - local.y = x * this.c + y * this.d + this.worldY; - return local; - }; - Bone.prototype.worldToLocalRotation = function (worldRotation) { - var sin = spine.MathUtils.sinDeg(worldRotation), cos = spine.MathUtils.cosDeg(worldRotation); - return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * spine.MathUtils.radDeg + this.rotation - this.shearX; - }; - Bone.prototype.localToWorldRotation = function (localRotation) { - localRotation -= this.rotation - this.shearX; - var sin = spine.MathUtils.sinDeg(localRotation), cos = spine.MathUtils.cosDeg(localRotation); - return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.rotateWorld = function (degrees) { - var a = this.a, b = this.b, c = this.c, d = this.d; - var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); - this.a = cos * a - sin * c; - this.b = cos * b - sin * d; - this.c = sin * a + cos * c; - this.d = sin * b + cos * d; - }; - return Bone; - }()); - spine.Bone = Bone; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoneData = (function () { - function BoneData(index, name, parent) { - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 1; - this.scaleY = 1; - this.shearX = 0; - this.shearY = 0; - this.transformMode = TransformMode.Normal; - this.skinRequired = false; - this.color = new spine.Color(); - if (index < 0) - throw new Error("index must be >= 0."); - if (!name) - throw new Error("name cannot be null."); - this.index = index; - this.name = name; - this.parent = parent; - } - return BoneData; - }()); - spine.BoneData = BoneData; - var TransformMode; - (function (TransformMode) { - TransformMode[TransformMode["Normal"] = 0] = "Normal"; - TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; - TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; - TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; - TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; - })(TransformMode = spine.TransformMode || (spine.TransformMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var ConstraintData = (function () { - function ConstraintData(name, order, skinRequired) { - this.name = name; - this.order = order; - this.skinRequired = skinRequired; - } - return ConstraintData; - }()); - spine.ConstraintData = ConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Event = (function () { - function Event(time, data) { - if (!data) - throw new Error("data cannot be null."); - this.time = time; - this.data = data; - } - return Event; - }()); - spine.Event = Event; -})(spine || (spine = {})); -var spine; -(function (spine) { - var EventData = (function () { - function EventData(name) { - this.name = name; - } - return EventData; - }()); - spine.EventData = EventData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraint = (function () { - function IkConstraint(data, skeleton) { - this.bendDirection = 0; - this.compress = false; - this.stretch = false; - this.mix = 1; - this.softness = 0; - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mix = data.mix; - this.softness = data.softness; - this.bendDirection = data.bendDirection; - this.compress = data.compress; - this.stretch = data.stretch; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - IkConstraint.prototype.isActive = function () { - return this.active; - }; - IkConstraint.prototype.update = function () { - if (this.mix == 0) - return; - var target = this.target; - var bones = this.bones; - switch (bones.length) { - case 1: - this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix); - break; - case 2: - this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.data.uniform, this.softness, this.mix); - break; - } - }; - IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) { - var p = bone.parent; - var pa = p.a, pb = p.b, pc = p.c, pd = p.d; - var rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0; - switch (bone.data.transformMode) { - case spine.TransformMode.OnlyTranslation: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - break; - case spine.TransformMode.NoRotationOrReflection: - var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc); - var sa = pa / bone.skeleton.scaleX; - var sc = pc / bone.skeleton.scaleY; - pb = -sc * s * bone.skeleton.scaleX; - pd = sa * s * bone.skeleton.scaleY; - rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg; - default: - var x = targetX - p.worldX, y = targetY - p.worldY; - var d = pa * pd - pb * pc; - tx = (x * pd - y * pb) / d - bone.ax; - ty = (y * pa - x * pc) / d - bone.ay; - } - rotationIK += Math.atan2(ty, tx) * spine.MathUtils.radDeg; - if (bone.ascaleX < 0) - rotationIK += 180; - if (rotationIK > 180) - rotationIK -= 360; - else if (rotationIK < -180) - rotationIK += 360; - var sx = bone.ascaleX, sy = bone.ascaleY; - if (compress || stretch) { - switch (bone.data.transformMode) { - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - } - var b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty); - if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) { - var s = (dd / b - 1) * alpha + 1; - sx *= s; - if (uniform) - sy *= s; - } - } - bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY); - }; - IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, uniform, softness, alpha) { - var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, sx = psx, sy = psy, csx = child.ascaleX; - var os1 = 0, os2 = 0, s2 = 0; - if (psx < 0) { - psx = -psx; - os1 = 180; - s2 = -1; - } - else { - os1 = 0; - s2 = 1; - } - if (psy < 0) { - psy = -psy; - s2 = -s2; - } - if (csx < 0) { - csx = -csx; - os2 = 180; - } - else - os2 = 0; - var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; - var u = Math.abs(psx - psy) <= 0.0001; - if (!u || stretch) { - cy = 0; - cwx = a * cx + parent.worldX; - cwy = c * cx + parent.worldY; - } - else { - cy = child.ay; - cwx = a * cx + b * cy + parent.worldX; - cwy = c * cx + d * cy + parent.worldY; - } - var pp = parent.parent; - a = pp.a; - b = pp.b; - c = pp.c; - d = pp.d; - var id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY; - var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; - var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2; - if (l1 < 0.0001) { - this.apply1(parent, targetX, targetY, false, stretch, false, alpha); - child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - return; - } - x = targetX - pp.worldX; - y = targetY - pp.worldY; - var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; - var dd = tx * tx + ty * ty; - if (softness != 0) { - softness *= psx * (csx + 1) * 0.5; - var td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness; - if (sd > 0) { - var p = Math.min(1, sd / (softness * 2)) - 1; - p = (sd - softness * (1 - p * p)) / td; - tx -= p * tx; - ty -= p * ty; - dd = tx * tx + ty * ty; - } - } - outer: if (u) { - l2 *= psx; - var cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2); - if (cos < -1) { - cos = -1; - a2 = Math.PI * bendDir; - } - else if (cos > 1) { - cos = 1; - a2 = 0; - if (stretch) { - a = (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1; - sx *= a; - if (uniform) - sy *= a; - } - } - else - a2 = Math.acos(cos) * bendDir; - a = l1 + l2 * cos; - b = l2 * Math.sin(a2); - a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); - } - else { - a = psx * l2; - b = psy * l2; - var aa = a * a, bb = b * b, ta = Math.atan2(ty, tx); - c = bb * l1 * l1 + aa * dd - aa * bb; - var c1 = -2 * bb * l1, c2 = bb - aa; - d = c1 * c1 - 4 * c2 * c; - if (d >= 0) { - var q = Math.sqrt(d); - if (c1 < 0) - q = -q; - q = -(c1 + q) * 0.5; - var r0 = q / c2, r1 = c / q; - var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; - if (r * r <= dd) { - y = Math.sqrt(dd - r * r) * bendDir; - a1 = ta - Math.atan2(y, r); - a2 = Math.atan2(y / psy, (r - l1) / psx); - break outer; - } - } - var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; - var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; - c = -a * l1 / (aa - bb); - if (c >= -1 && c <= 1) { - c = Math.acos(c); - x = a * Math.cos(c) + l1; - y = b * Math.sin(c); - d = x * x + y * y; - if (d < minDist) { - minAngle = c; - minDist = d; - minX = x; - minY = y; - } - if (d > maxDist) { - maxAngle = c; - maxDist = d; - maxX = x; - maxY = y; - } - } - if (dd <= (minDist + maxDist) * 0.5) { - a1 = ta - Math.atan2(minY * bendDir, minX); - a2 = minAngle * bendDir; - } - else { - a1 = ta - Math.atan2(maxY * bendDir, maxX); - a2 = maxAngle * bendDir; - } - } - var os = Math.atan2(cy, cx) * s2; - var rotation = parent.arotation; - a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; - if (a1 > 180) - a1 -= 360; - else if (a1 < -180) - a1 += 360; - parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, sy, 0, 0); - rotation = child.arotation; - a2 = ((a2 + os) * spine.MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; - if (a2 > 180) - a2 -= 360; - else if (a2 < -180) - a2 += 360; - child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - }; - return IkConstraint; - }()); - spine.IkConstraint = IkConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraintData = (function (_super) { - __extends(IkConstraintData, _super); - function IkConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.bendDirection = 1; - _this.compress = false; - _this.stretch = false; - _this.uniform = false; - _this.mix = 1; - _this.softness = 0; - return _this; - } - return IkConstraintData; - }(spine.ConstraintData)); - spine.IkConstraintData = IkConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraint = (function () { - function PathConstraint(data, skeleton) { - this.position = 0; - this.spacing = 0; - this.mixRotate = 0; - this.mixX = 0; - this.mixY = 0; - this.spaces = new Array(); - this.positions = new Array(); - this.world = new Array(); - this.curves = new Array(); - this.lengths = new Array(); - this.segments = new Array(); - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0, n = data.bones.length; i < n; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findSlot(data.target.name); - this.position = data.position; - this.spacing = data.spacing; - this.mixRotate = data.mixRotate; - this.mixX = data.mixX; - this.mixY = data.mixY; - } - PathConstraint.prototype.isActive = function () { - return this.active; - }; - PathConstraint.prototype.update = function () { - var attachment = this.target.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - return; - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY; - if (mixRotate == 0 && mixX == 0 && mixY == 0) - return; - var data = this.data; - var tangents = data.rotateMode == spine.RotateMode.Tangent, scale = data.rotateMode == spine.RotateMode.ChainScale; - var bones = this.bones; - var boneCount = bones.length, spacesCount = tangents ? boneCount : boneCount + 1; - var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = spine.Utils.setArraySize(this.lengths, boneCount) : null; - var spacing = this.spacing; - switch (data.spacingMode) { - case spine.SpacingMode.Percent: - if (scale) { - for (var i = 0, n = spacesCount - 1; i < n; i++) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) - lengths[i] = 0; - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - lengths[i] = Math.sqrt(x * x + y * y); - } - } - } - spine.Utils.arrayFill(spaces, 1, spacesCount, spacing); - break; - case spine.SpacingMode.Proportional: - var sum = 0; - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) { - if (scale) - lengths[i] = 0; - spaces[++i] = spacing; - } - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_1 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_1; - spaces[++i] = length_1; - sum += length_1; - } - } - if (sum > 0) { - sum = spacesCount / sum * spacing; - for (var i = 1; i < spacesCount; i++) - spaces[i] *= sum; - } - break; - default: - var lengthSpacing = data.spacingMode == spine.SpacingMode.Length; - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) { - if (scale) - lengths[i] = 0; - spaces[++i] = spacing; - } - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_2 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_2; - spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_2 / setupLength; - } - } - } - var positions = this.computeWorldPositions(attachment, spacesCount, tangents); - var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; - var tip = false; - if (offsetRotation == 0) - tip = data.rotateMode == spine.RotateMode.Chain; - else { - tip = false; - var p = this.target.bone; - offsetRotation *= p.a * p.d - p.b * p.c > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - } - for (var i = 0, p = 3; i < boneCount; i++, p += 3) { - var bone = bones[i]; - bone.worldX += (boneX - bone.worldX) * mixX; - bone.worldY += (boneY - bone.worldY) * mixY; - var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; - if (scale) { - var length_3 = lengths[i]; - if (length_3 != 0) { - var s = (Math.sqrt(dx * dx + dy * dy) / length_3 - 1) * mixRotate + 1; - bone.a *= s; - bone.c *= s; - } - } - boneX = x; - boneY = y; - if (mixRotate > 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; - if (tangents) - r = positions[p - 1]; - else if (spaces[i + 1] == 0) - r = positions[p + 2]; - else - r = Math.atan2(dy, dx); - r -= Math.atan2(c, a); - if (tip) { - cos = Math.cos(r); - sin = Math.sin(r); - var length_4 = bone.data.length; - boneX += (length_4 * (cos * a - sin * c) - dx) * mixRotate; - boneY += (length_4 * (sin * a + cos * c) - dy) * mixRotate; - } - else { - r += offsetRotation; - } - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - cos = Math.cos(r); - sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - bone.updateAppliedTransform(); - } - }; - PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents) { - var target = this.target; - var position = this.position; - var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; - var closed = path.closed; - var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; - if (!path.constantSpeed) { - var lengths = path.lengths; - curveCount -= closed ? 1 : 2; - var pathLength_1 = lengths[curveCount]; - if (this.data.positionMode == spine.PositionMode.Percent) - position *= pathLength_1; - var multiplier_1; - switch (this.data.spacingMode) { - case spine.SpacingMode.Percent: - multiplier_1 = pathLength_1; - break; - case spine.SpacingMode.Proportional: - multiplier_1 = pathLength_1 / spacesCount; - break; - default: - multiplier_1 = 1; - } - world = spine.Utils.setArraySize(this.world, 8); - for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i] * multiplier_1; - position += space; - var p = position; - if (closed) { - p %= pathLength_1; - if (p < 0) - p += pathLength_1; - curve = 0; - } - else if (p < 0) { - if (prevCurve != PathConstraint.BEFORE) { - prevCurve = PathConstraint.BEFORE; - path.computeWorldVertices(target, 2, 4, world, 0, 2); - } - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength_1) { - if (prevCurve != PathConstraint.AFTER) { - prevCurve = PathConstraint.AFTER; - path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2); - } - this.addAfterPosition(p - pathLength_1, world, 0, out, o); - continue; - } - for (;; curve++) { - var length_5 = lengths[curve]; - if (p > length_5) - continue; - if (curve == 0) - p /= length_5; - else { - var prev = lengths[curve - 1]; - p = (p - prev) / (length_5 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - if (closed && curve == curveCount) { - path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2); - path.computeWorldVertices(target, 0, 4, world, 4, 2); - } - else - path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2); - } - this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); - } - return out; - } - if (closed) { - verticesLength += 2; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2); - path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2); - world[verticesLength - 2] = world[0]; - world[verticesLength - 1] = world[1]; - } - else { - curveCount--; - verticesLength -= 4; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); - } - var curves = spine.Utils.setArraySize(this.curves, curveCount); - var pathLength = 0; - var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; - var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; - for (var i = 0, w = 2; i < curveCount; i++, w += 6) { - cx1 = world[w]; - cy1 = world[w + 1]; - cx2 = world[w + 2]; - cy2 = world[w + 3]; - x2 = world[w + 4]; - y2 = world[w + 5]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; - tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - curves[i] = pathLength; - x1 = x2; - y1 = y2; - } - if (this.data.positionMode == spine.PositionMode.Percent) - position *= pathLength; - var multiplier; - switch (this.data.spacingMode) { - case spine.SpacingMode.Percent: - multiplier = pathLength; - break; - case spine.SpacingMode.Proportional: - multiplier = pathLength / spacesCount; - break; - default: - multiplier = 1; - } - var segments = this.segments; - var curveLength = 0; - for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i] * multiplier; - position += space; - var p = position; - if (closed) { - p %= pathLength; - if (p < 0) - p += pathLength; - curve = 0; - } - else if (p < 0) { - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength) { - this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); - continue; - } - for (;; curve++) { - var length_6 = curves[curve]; - if (p > length_6) - continue; - if (curve == 0) - p /= length_6; - else { - var prev = curves[curve - 1]; - p = (p - prev) / (length_6 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - var ii = curve * 6; - x1 = world[ii]; - y1 = world[ii + 1]; - cx1 = world[ii + 2]; - cy1 = world[ii + 3]; - cx2 = world[ii + 4]; - cy2 = world[ii + 5]; - x2 = world[ii + 6]; - y2 = world[ii + 7]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.03; - tmpy = (y1 - cy1 * 2 + cy2) * 0.03; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; - curveLength = Math.sqrt(dfx * dfx + dfy * dfy); - segments[0] = curveLength; - for (ii = 1; ii < 8; ii++) { - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[ii] = curveLength; - } - dfx += ddfx; - dfy += ddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[8] = curveLength; - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[9] = curveLength; - segment = 0; - } - p *= curveLength; - for (;; segment++) { - var length_7 = segments[segment]; - if (p > length_7) - continue; - if (segment == 0) - p /= length_7; - else { - var prev = segments[segment - 1]; - p = segment + (p - prev) / (length_7 - prev); - } - break; - } - this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); - } - return out; - }; - PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { - var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { - var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { - if (p == 0 || isNaN(p)) { - out[o] = x1; - out[o + 1] = y1; - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - return; - } - var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; - var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; - var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; - out[o] = x; - out[o + 1] = y; - if (tangents) { - if (p < 0.001) - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - else - out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); - } - }; - PathConstraint.NONE = -1; - PathConstraint.BEFORE = -2; - PathConstraint.AFTER = -3; - PathConstraint.epsilon = 0.00001; - return PathConstraint; - }()); - spine.PathConstraint = PathConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraintData = (function (_super) { - __extends(PathConstraintData, _super); - function PathConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.mixRotate = 0; - _this.mixX = 0; - _this.mixY = 0; - return _this; - } - return PathConstraintData; - }(spine.ConstraintData)); - spine.PathConstraintData = PathConstraintData; - var PositionMode; - (function (PositionMode) { - PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; - PositionMode[PositionMode["Percent"] = 1] = "Percent"; - })(PositionMode = spine.PositionMode || (spine.PositionMode = {})); - var SpacingMode; - (function (SpacingMode) { - SpacingMode[SpacingMode["Length"] = 0] = "Length"; - SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; - SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; - SpacingMode[SpacingMode["Proportional"] = 3] = "Proportional"; - })(SpacingMode = spine.SpacingMode || (spine.SpacingMode = {})); - var RotateMode; - (function (RotateMode) { - RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; - RotateMode[RotateMode["Chain"] = 1] = "Chain"; - RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; - })(RotateMode = spine.RotateMode || (spine.RotateMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Skeleton = (function () { - function Skeleton(data) { - this._updateCache = new Array(); - this.time = 0; - this.scaleX = 1; - this.scaleY = 1; - this.x = 0; - this.y = 0; - if (!data) - throw new Error("data cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) { - var boneData = data.bones[i]; - var bone = void 0; - if (!boneData.parent) - bone = new spine.Bone(boneData, this, null); - else { - var parent_1 = this.bones[boneData.parent.index]; - bone = new spine.Bone(boneData, this, parent_1); - parent_1.children.push(bone); - } - this.bones.push(bone); - } - this.slots = new Array(); - this.drawOrder = new Array(); - for (var i = 0; i < data.slots.length; i++) { - var slotData = data.slots[i]; - var bone = this.bones[slotData.boneData.index]; - var slot = new spine.Slot(slotData, bone); - this.slots.push(slot); - this.drawOrder.push(slot); - } - this.ikConstraints = new Array(); - for (var i = 0; i < data.ikConstraints.length; i++) { - var ikConstraintData = data.ikConstraints[i]; - this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); - } - this.transformConstraints = new Array(); - for (var i = 0; i < data.transformConstraints.length; i++) { - var transformConstraintData = data.transformConstraints[i]; - this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); - } - this.pathConstraints = new Array(); - for (var i = 0; i < data.pathConstraints.length; i++) { - var pathConstraintData = data.pathConstraints[i]; - this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); - } - this.color = new spine.Color(1, 1, 1, 1); - this.updateCache(); - } - Skeleton.prototype.updateCache = function () { - var updateCache = this._updateCache; - updateCache.length = 0; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - bone.sorted = bone.data.skinRequired; - bone.active = !bone.sorted; - } - if (this.skin) { - var skinBones = this.skin.bones; - for (var i = 0, n = this.skin.bones.length; i < n; i++) { - var bone = this.bones[skinBones[i].index]; - do { - bone.sorted = false; - bone.active = true; - bone = bone.parent; - } while (bone); - } - } - var ikConstraints = this.ikConstraints; - var transformConstraints = this.transformConstraints; - var pathConstraints = this.pathConstraints; - var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length; - var constraintCount = ikCount + transformCount + pathCount; - outer: for (var i = 0; i < constraintCount; i++) { - for (var ii = 0; ii < ikCount; ii++) { - var constraint = ikConstraints[ii]; - if (constraint.data.order == i) { - this.sortIkConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < transformCount; ii++) { - var constraint = transformConstraints[ii]; - if (constraint.data.order == i) { - this.sortTransformConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < pathCount; ii++) { - var constraint = pathConstraints[ii]; - if (constraint.data.order == i) { - this.sortPathConstraint(constraint); - continue outer; - } - } - } - for (var i = 0, n = bones.length; i < n; i++) - this.sortBone(bones[i]); - }; - Skeleton.prototype.sortIkConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var target = constraint.target; - this.sortBone(target); - var constrained = constraint.bones; - var parent = constrained[0]; - this.sortBone(parent); - if (constrained.length == 1) { - this._updateCache.push(constraint); - this.sortReset(parent.children); - } - else { - var child = constrained[constrained.length - 1]; - this.sortBone(child); - this._updateCache.push(constraint); - this.sortReset(parent.children); - child.sorted = true; - } - }; - Skeleton.prototype.sortPathConstraint = function (constraint) { - constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var slot = constraint.target; - var slotIndex = slot.data.index; - var slotBone = slot.bone; - if (this.skin) - this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); - if (this.data.defaultSkin && this.data.defaultSkin != this.skin) - this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); - for (var i = 0, n = this.data.skins.length; i < n; i++) - this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone); - var attachment = slot.getAttachment(); - if (attachment instanceof spine.PathAttachment) - this.sortPathConstraintAttachmentWith(attachment, slotBone); - var constrained = constraint.bones; - var boneCount = constrained.length; - for (var i = 0; i < boneCount; i++) - this.sortBone(constrained[i]); - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortTransformConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - this.sortBone(constraint.target); - var constrained = constraint.bones; - var boneCount = constrained.length; - if (constraint.data.local) { - for (var i = 0; i < boneCount; i++) { - var child = constrained[i]; - this.sortBone(child.parent); - this.sortBone(child); - } - } - else { - for (var i = 0; i < boneCount; i++) { - this.sortBone(constrained[i]); - } - } - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { - var attachments = skin.attachments[slotIndex]; - if (!attachments) - return; - for (var key in attachments) { - this.sortPathConstraintAttachmentWith(attachments[key], slotBone); - } - }; - Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { - if (!(attachment instanceof spine.PathAttachment)) - return; - var pathBones = attachment.bones; - if (!pathBones) - this.sortBone(slotBone); - else { - var bones = this.bones; - for (var i = 0, n = pathBones.length; i < n;) { - var nn = pathBones[i++]; - nn += i; - while (i < nn) - this.sortBone(bones[pathBones[i++]]); - } - } - }; - Skeleton.prototype.sortBone = function (bone) { - if (bone.sorted) - return; - var parent = bone.parent; - if (parent) - this.sortBone(parent); - bone.sorted = true; - this._updateCache.push(bone); - }; - Skeleton.prototype.sortReset = function (bones) { - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (!bone.active) - continue; - if (bone.sorted) - this.sortReset(bone.children); - bone.sorted = false; - } - }; - Skeleton.prototype.updateWorldTransform = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - bone.ax = bone.x; - bone.ay = bone.y; - bone.arotation = bone.rotation; - bone.ascaleX = bone.scaleX; - bone.ascaleY = bone.scaleY; - bone.ashearX = bone.shearX; - bone.ashearY = bone.shearY; - } - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) - updateCache[i].update(); - }; - Skeleton.prototype.updateWorldTransformWith = function (parent) { - var rootBone = this.getRootBone(); - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - rootBone.worldX = pa * this.x + pb * this.y + parent.worldX; - rootBone.worldY = pc * this.x + pd * this.y + parent.worldY; - var rotationY = rootBone.rotation + 90 + rootBone.shearY; - var la = spine.MathUtils.cosDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * rootBone.scaleY; - var lc = spine.MathUtils.sinDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * rootBone.scaleY; - rootBone.a = (pa * la + pb * lc) * this.scaleX; - rootBone.b = (pa * lb + pb * ld) * this.scaleX; - rootBone.c = (pc * la + pd * lc) * this.scaleY; - rootBone.d = (pc * lb + pd * ld) * this.scaleY; - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) { - var updatable = updateCache[i]; - if (updatable != rootBone) - updatable.update(); - } - }; - Skeleton.prototype.setToSetupPose = function () { - this.setBonesToSetupPose(); - this.setSlotsToSetupPose(); - }; - Skeleton.prototype.setBonesToSetupPose = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - bones[i].setToSetupPose(); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - var data = constraint.data; - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - constraint.mixScaleX = data.mixScaleX; - constraint.mixScaleY = data.mixScaleY; - constraint.mixShearY = data.mixShearY; - } - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - var data = constraint.data; - constraint.position = data.position; - constraint.spacing = data.spacing; - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - } - }; - Skeleton.prototype.setSlotsToSetupPose = function () { - var slots = this.slots; - spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); - for (var i = 0, n = slots.length; i < n; i++) - slots[i].setToSetupPose(); - }; - Skeleton.prototype.getRootBone = function () { - if (this.bones.length == 0) - return null; - return this.bones[0]; - }; - Skeleton.prototype.findBone = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.data.name == boneName) - return bone; - } - return null; - }; - Skeleton.prototype.findBoneIndex = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].data.name == boneName) - return i; - return -1; - }; - Skeleton.prototype.findSlot = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) - return slot; - } - return null; - }; - Skeleton.prototype.findSlotIndex = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].data.name == slotName) - return i; - return -1; - }; - Skeleton.prototype.setSkinByName = function (skinName) { - var skin = this.data.findSkin(skinName); - if (!skin) - throw new Error("Skin not found: " + skinName); - this.setSkin(skin); - }; - Skeleton.prototype.setSkin = function (newSkin) { - if (newSkin == this.skin) - return; - if (newSkin) { - if (this.skin) - newSkin.attachAll(this, this.skin); - else { - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var name_1 = slot.data.attachmentName; - if (name_1) { - var attachment = newSkin.getAttachment(i, name_1); - if (attachment) - slot.setAttachment(attachment); - } - } - } - } - this.skin = newSkin; - this.updateCache(); - }; - Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { - return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); - }; - Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { - if (!attachmentName) - throw new Error("attachmentName cannot be null."); - if (this.skin) { - var attachment = this.skin.getAttachment(slotIndex, attachmentName); - if (attachment) - return attachment; - } - if (this.data.defaultSkin) - return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); - return null; - }; - Skeleton.prototype.setAttachment = function (slotName, attachmentName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) { - var attachment = null; - if (attachmentName) { - attachment = this.getAttachment(i, attachmentName); - if (!attachment) - throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); - } - slot.setAttachment(attachment); - return; - } - } - throw new Error("Slot not found: " + slotName); - }; - Skeleton.prototype.findIkConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var ikConstraint = ikConstraints[i]; - if (ikConstraint.data.name == constraintName) - return ikConstraint; - } - return null; - }; - Skeleton.prototype.findTransformConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.findPathConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.getBounds = function (offset, size, temp) { - if (temp === void 0) { temp = new Array(2); } - if (!offset) - throw new Error("offset cannot be null."); - if (!size) - throw new Error("size cannot be null."); - var drawOrder = this.drawOrder; - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - if (!slot.bone.active) - continue; - var verticesLength = 0; - var vertices = null; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - verticesLength = 8; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - attachment.computeWorldVertices(slot.bone, vertices, 0, 2); - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - verticesLength = mesh.worldVerticesLength; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2); - } - if (vertices) { - for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - } - offset.set(minX, minY); - size.set(maxX - minX, maxY - minY); - }; - Skeleton.prototype.update = function (delta) { - this.time += delta; - }; - return Skeleton; - }()); - spine.Skeleton = Skeleton; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBinary = (function () { - function SkeletonBinary(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonBinary.prototype.readSkeletonData = function (binary) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - skeletonData.name = ""; - var input = new BinaryInput(binary); - var lowHash = input.readInt32(); - var highHash = input.readInt32(); - skeletonData.hash = highHash == 0 && lowHash == 0 ? null : highHash.toString(16) + lowHash.toString(16); - skeletonData.version = input.readString(); - skeletonData.x = input.readFloat(); - skeletonData.y = input.readFloat(); - skeletonData.width = input.readFloat(); - skeletonData.height = input.readFloat(); - var nonessential = input.readBoolean(); - if (nonessential) { - skeletonData.fps = input.readFloat(); - skeletonData.imagesPath = input.readString(); - skeletonData.audioPath = input.readString(); - } - var n = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) - input.strings.push(input.readString()); - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var name_2 = input.readString(); - var parent_2 = i == 0 ? null : skeletonData.bones[input.readInt(true)]; - var data = new spine.BoneData(i, name_2, parent_2); - data.rotation = input.readFloat(); - data.x = input.readFloat() * scale; - data.y = input.readFloat() * scale; - data.scaleX = input.readFloat(); - data.scaleY = input.readFloat(); - data.shearX = input.readFloat(); - data.shearY = input.readFloat(); - data.length = input.readFloat() * scale; - data.transformMode = input.readInt(true); - data.skinRequired = input.readBoolean(); - if (nonessential) - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - skeletonData.bones.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var slotName = input.readString(); - var boneData = skeletonData.bones[input.readInt(true)]; - var data = new spine.SlotData(i, slotName, boneData); - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - var darkColor = input.readInt32(); - if (darkColor != -1) - spine.Color.rgb888ToColor(data.darkColor = new spine.Color(), darkColor); - data.attachmentName = input.readStringRef(); - data.blendMode = input.readInt(true); - skeletonData.slots.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.IkConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.mix = input.readFloat(); - data.softness = input.readFloat() * scale; - data.bendDirection = input.readByte(); - data.compress = input.readBoolean(); - data.stretch = input.readBoolean(); - data.uniform = input.readBoolean(); - skeletonData.ikConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.TransformConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.local = input.readBoolean(); - data.relative = input.readBoolean(); - data.offsetRotation = input.readFloat(); - data.offsetX = input.readFloat() * scale; - data.offsetY = input.readFloat() * scale; - data.offsetScaleX = input.readFloat(); - data.offsetScaleY = input.readFloat(); - data.offsetShearY = input.readFloat(); - data.mixRotate = input.readFloat(); - data.mixX = input.readFloat(); - data.mixY = input.readFloat(); - data.mixScaleX = input.readFloat(); - data.mixScaleY = input.readFloat(); - data.mixShearY = input.readFloat(); - skeletonData.transformConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.PathConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.slots[input.readInt(true)]; - data.positionMode = input.readInt(true); - data.spacingMode = input.readInt(true); - data.rotateMode = input.readInt(true); - data.offsetRotation = input.readFloat(); - data.position = input.readFloat(); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = input.readFloat(); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.mixRotate = input.readFloat(); - data.mixX = input.readFloat(); - data.mixY = input.readFloat(); - skeletonData.pathConstraints.push(data); - } - var defaultSkin = this.readSkin(input, skeletonData, true, nonessential); - if (defaultSkin) { - skeletonData.defaultSkin = defaultSkin; - skeletonData.skins.push(defaultSkin); - } - { - var i = skeletonData.skins.length; - spine.Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); - for (; i < n; i++) - skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential); - } - n = this.linkedMeshes.length; - for (var i = 0; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - var parent_3 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_3 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_3); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var data = new spine.EventData(input.readStringRef()); - data.intValue = input.readInt(false); - data.floatValue = input.readFloat(); - data.stringValue = input.readString(); - data.audioPath = input.readString(); - if (data.audioPath) { - data.volume = input.readFloat(); - data.balance = input.readFloat(); - } - skeletonData.events.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) - skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData)); - return skeletonData; - }; - SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) { - var skin = null; - var slotCount = 0; - if (defaultSkin) { - slotCount = input.readInt(true); - if (slotCount == 0) - return null; - skin = new spine.Skin("default"); - } - else { - skin = new spine.Skin(input.readStringRef()); - skin.bones.length = input.readInt(true); - for (var i = 0, n = skin.bones.length; i < n; i++) - skin.bones[i] = skeletonData.bones[input.readInt(true)]; - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]); - slotCount = input.readInt(true); - } - for (var i = 0; i < slotCount; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var name_3 = input.readStringRef(); - var attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name_3, nonessential); - if (attachment) - skin.setAttachment(slotIndex, name_3, attachment); - } - } - return skin; - }; - SkeletonBinary.prototype.readAttachment = function (input, skeletonData, skin, slotIndex, attachmentName, nonessential) { - var scale = this.scale; - var name = input.readStringRef(); - if (!name) - name = attachmentName; - switch (input.readByte()) { - case AttachmentType.Region: { - var path = input.readStringRef(); - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var scaleX = input.readFloat(); - var scaleY = input.readFloat(); - var width = input.readFloat(); - var height = input.readFloat(); - var color = input.readInt32(); - if (!path) - path = name; - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (!region) - return null; - region.path = path; - region.x = x * scale; - region.y = y * scale; - region.scaleX = scaleX; - region.scaleY = scaleY; - region.rotation = rotation; - region.width = width * scale; - region.height = height * scale; - spine.Color.rgba8888ToColor(region.color, color); - region.updateOffset(); - return region; - } - case AttachmentType.BoundingBox: { - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (!box) - return null; - box.worldVerticesLength = vertexCount << 1; - box.vertices = vertices.vertices; - box.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(box.color, color); - return box; - } - case AttachmentType.Mesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var vertexCount = input.readInt(true); - var uvs = this.readFloatArray(input, vertexCount << 1, 1); - var triangles = this.readShortArray(input); - var vertices = this.readVertices(input, vertexCount); - var hullLength = input.readInt(true); - var edges = null; - var width = 0, height = 0; - if (nonessential) { - edges = this.readShortArray(input); - width = input.readFloat(); - height = input.readFloat(); - } - if (!path) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - mesh.bones = vertices.bones; - mesh.vertices = vertices.vertices; - mesh.worldVerticesLength = vertexCount << 1; - mesh.triangles = triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.hullLength = hullLength << 1; - if (nonessential) { - mesh.edges = edges; - mesh.width = width * scale; - mesh.height = height * scale; - } - return mesh; - } - case AttachmentType.LinkedMesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var skinName = input.readStringRef(); - var parent_4 = input.readStringRef(); - var inheritDeform = input.readBoolean(); - var width = 0, height = 0; - if (nonessential) { - width = input.readFloat(); - height = input.readFloat(); - } - if (!path) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - if (nonessential) { - mesh.width = width * scale; - mesh.height = height * scale; - } - this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent_4, inheritDeform)); - return mesh; - } - case AttachmentType.Path: { - var closed_1 = input.readBoolean(); - var constantSpeed = input.readBoolean(); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0, n = lengths.length; i < n; i++) - lengths[i] = input.readFloat() * scale; - var color = nonessential ? input.readInt32() : 0; - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (!path) - return null; - path.closed = closed_1; - path.constantSpeed = constantSpeed; - path.worldVerticesLength = vertexCount << 1; - path.vertices = vertices.vertices; - path.bones = vertices.bones; - path.lengths = lengths; - if (nonessential) - spine.Color.rgba8888ToColor(path.color, color); - return path; - } - case AttachmentType.Point: { - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var color = nonessential ? input.readInt32() : 0; - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (!point) - return null; - point.x = x * scale; - point.y = y * scale; - point.rotation = rotation; - if (nonessential) - spine.Color.rgba8888ToColor(point.color, color); - return point; - } - case AttachmentType.Clipping: { - var endSlotIndex = input.readInt(true); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (!clip) - return null; - clip.endSlot = skeletonData.slots[endSlotIndex]; - clip.worldVerticesLength = vertexCount << 1; - clip.vertices = vertices.vertices; - clip.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(clip.color, color); - return clip; - } - } - return null; - }; - SkeletonBinary.prototype.readVertices = function (input, vertexCount) { - var scale = this.scale; - var verticesLength = vertexCount << 1; - var vertices = new Vertices(); - if (!input.readBoolean()) { - vertices.vertices = this.readFloatArray(input, verticesLength, scale); - return vertices; - } - var weights = new Array(); - var bonesArray = new Array(); - for (var i = 0; i < vertexCount; i++) { - var boneCount = input.readInt(true); - bonesArray.push(boneCount); - for (var ii = 0; ii < boneCount; ii++) { - bonesArray.push(input.readInt(true)); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat()); - } - } - vertices.vertices = spine.Utils.toFloatArray(weights); - vertices.bones = bonesArray; - return vertices; - }; - SkeletonBinary.prototype.readFloatArray = function (input, n, scale) { - var array = new Array(n); - if (scale == 1) { - for (var i = 0; i < n; i++) - array[i] = input.readFloat(); - } - else { - for (var i = 0; i < n; i++) - array[i] = input.readFloat() * scale; - } - return array; - }; - SkeletonBinary.prototype.readShortArray = function (input) { - var n = input.readInt(true); - var array = new Array(n); - for (var i = 0; i < n; i++) - array[i] = input.readShort(); - return array; - }; - SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) { - input.readInt(true); - var timelines = new Array(); - var scale = this.scale; - var tempColor1 = new spine.Color(); - var tempColor2 = new spine.Color(); - for (var i = 0, n = input.readInt(true); i < n; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var timelineType = input.readByte(); - var frameCount = input.readInt(true); - var frameLast = frameCount - 1; - switch (timelineType) { - case SLOT_ATTACHMENT: { - var timeline = new spine.AttachmentTimeline(frameCount, slotIndex); - for (var frame = 0; frame < frameCount; frame++) - timeline.setFrame(frame, input.readFloat(), input.readStringRef()); - timelines.push(timeline); - break; - } - case SLOT_RGBA: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBATimeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var a = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, a); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - var a2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, a, a2, 1); - } - time = time2; - r = r2; - g = g2; - b = b2; - a = a2; - } - timelines.push(timeline); - break; - } - case SLOT_RGB: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBTimeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); - } - time = time2; - r = r2; - g = g2; - b = b2; - } - timelines.push(timeline); - break; - } - case SLOT_RGBA2: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBA2Timeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var a = input.readUnsignedByte() / 255.0; - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, a, r2, g2, b2); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var nr = input.readUnsignedByte() / 255.0; - var ng = input.readUnsignedByte() / 255.0; - var nb = input.readUnsignedByte() / 255.0; - var na = input.readUnsignedByte() / 255.0; - var nr2 = input.readUnsignedByte() / 255.0; - var ng2 = input.readUnsignedByte() / 255.0; - var nb2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, a, na, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, r2, nr2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, g2, ng2, 1); - setBezier(input, timeline, bezier++, frame, 6, time, time2, b2, nb2, 1); - } - time = time2; - r = nr; - g = ng; - b = nb; - a = na; - r2 = nr2; - g2 = ng2; - b2 = nb2; - } - timelines.push(timeline); - break; - } - case SLOT_RGB2: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGB2Timeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, r2, g2, b2); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var nr = input.readUnsignedByte() / 255.0; - var ng = input.readUnsignedByte() / 255.0; - var nb = input.readUnsignedByte() / 255.0; - var nr2 = input.readUnsignedByte() / 255.0; - var ng2 = input.readUnsignedByte() / 255.0; - var nb2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, r2, nr2, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, g2, ng2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, b2, nb2, 1); - } - time = time2; - r = nr; - g = ng; - b = nb; - r2 = nr2; - g2 = ng2; - b2 = nb2; - } - timelines.push(timeline); - break; - } - case SLOT_ALPHA: { - var timeline = new spine.AlphaTimeline(frameCount, input.readInt(true), slotIndex); - var time = input.readFloat(), a = input.readUnsignedByte() / 255; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, a); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var a2 = input.readUnsignedByte() / 255; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, a, a2, 1); - } - time = time2; - a = a2; - } - timelines.push(timeline); - break; - } - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var boneIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true); - switch (type) { - case BONE_ROTATE: - timelines.push(readTimeline1(input, new spine.RotateTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_TRANSLATE: - timelines.push(readTimeline2(input, new spine.TranslateTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_TRANSLATEX: - timelines.push(readTimeline1(input, new spine.TranslateXTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_TRANSLATEY: - timelines.push(readTimeline1(input, new spine.TranslateYTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_SCALE: - timelines.push(readTimeline2(input, new spine.ScaleTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SCALEX: - timelines.push(readTimeline1(input, new spine.ScaleXTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SCALEY: - timelines.push(readTimeline1(input, new spine.ScaleYTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEAR: - timelines.push(readTimeline2(input, new spine.ShearTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEARX: - timelines.push(readTimeline1(input, new spine.ShearXTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEARY: - timelines.push(readTimeline1(input, new spine.ShearYTimeline(frameCount, bezierCount, boneIndex), 1)); - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; - var timeline = new spine.IkConstraintTimeline(frameCount, input.readInt(true), index); - var time = input.readFloat(), mix = input.readFloat(), softness = input.readFloat() * scale; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mix, softness, input.readByte(), input.readBoolean(), input.readBoolean()); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mix2 = input.readFloat(), softness2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale); - } - time = time2; - mix = mix2; - softness = softness2; - } - timelines.push(timeline); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; - var timeline = new spine.TransformConstraintTimeline(frameCount, input.readInt(true), index); - var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(), mixScaleX = input.readFloat(), mixScaleY = input.readFloat(), mixShearY = input.readFloat(); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(), mixScaleX2 = input.readFloat(), mixScaleY2 = input.readFloat(), mixShearY2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, mixShearY, mixShearY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - mixScaleX = mixScaleX2; - mixScaleY = mixScaleY2; - mixShearY = mixShearY2; - } - timelines.push(timeline); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true); - var data = skeletonData.pathConstraints[index]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - switch (input.readByte()) { - case PATH_POSITION: - timelines - .push(readTimeline1(input, new spine.PathConstraintPositionTimeline(input.readInt(true), input.readInt(true), index), data.positionMode == spine.PositionMode.Fixed ? scale : 1)); - break; - case PATH_SPACING: - timelines - .push(readTimeline1(input, new spine.PathConstraintSpacingTimeline(input.readInt(true), input.readInt(true), index), data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed ? scale : 1)); - break; - case PATH_MIX: - var timeline = new spine.PathConstraintMixTimeline(input.readInt(true), input.readInt(true), index); - var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(); - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - } - timelines.push(timeline); - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var skin = skeletonData.skins[input.readInt(true)]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var slotIndex = input.readInt(true); - for (var iii = 0, nnn = input.readInt(true); iii < nnn; iii++) { - var attachmentName = input.readStringRef(); - var attachment = skin.getAttachment(slotIndex, attachmentName); - var weighted = attachment.bones; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var frameCount = input.readInt(true); - var frameLast = frameCount - 1; - var bezierCount = input.readInt(true); - var timeline = new spine.DeformTimeline(frameCount, bezierCount, slotIndex, attachment); - var time = input.readFloat(); - for (var frame = 0, bezier = 0;; frame++) { - var deform = void 0; - var end = input.readInt(true); - if (end == 0) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = input.readInt(true); - end += start; - if (scale == 1) { - for (var v = start; v < end; v++) - deform[v] = input.readFloat(); - } - else { - for (var v = start; v < end; v++) - deform[v] = input.readFloat() * scale; - } - if (!weighted) { - for (var v = 0, vn = deform.length; v < vn; v++) - deform[v] += vertices[v]; - } - } - timeline.setFrame(frame, time, deform); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1); - } - time = time2; - } - timelines.push(timeline); - } - } - } - var drawOrderCount = input.readInt(true); - if (drawOrderCount > 0) { - var timeline = new spine.DrawOrderTimeline(drawOrderCount); - var slotCount = skeletonData.slots.length; - for (var i = 0; i < drawOrderCount; i++) { - var time = input.readFloat(); - var offsetCount = input.readInt(true); - var drawOrder = spine.Utils.newArray(slotCount, 0); - for (var ii = slotCount - 1; ii >= 0; ii--) - drawOrder[ii] = -1; - var unchanged = spine.Utils.newArray(slotCount - offsetCount, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var ii = 0; ii < offsetCount; ii++) { - var slotIndex = input.readInt(true); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + input.readInt(true)] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var ii = slotCount - 1; ii >= 0; ii--) - if (drawOrder[ii] == -1) - drawOrder[ii] = unchanged[--unchangedIndex]; - timeline.setFrame(i, time, drawOrder); - } - timelines.push(timeline); - } - var eventCount = input.readInt(true); - if (eventCount > 0) { - var timeline = new spine.EventTimeline(eventCount); - for (var i = 0; i < eventCount; i++) { - var time = input.readFloat(); - var eventData = skeletonData.events[input.readInt(true)]; - var event_4 = new spine.Event(time, eventData); - event_4.intValue = input.readInt(false); - event_4.floatValue = input.readFloat(); - event_4.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue; - if (event_4.data.audioPath) { - event_4.volume = input.readFloat(); - event_4.balance = input.readFloat(); - } - timeline.setFrame(i, event_4); - } - timelines.push(timeline); - } - var duration = 0; - for (var i = 0, n = timelines.length; i < n; i++) - duration = Math.max(duration, timelines[i].getDuration()); - return new spine.Animation(name, timelines, duration); - }; - return SkeletonBinary; - }()); - spine.SkeletonBinary = SkeletonBinary; - var BinaryInput = (function () { - function BinaryInput(data, strings, index, buffer) { - if (strings === void 0) { strings = new Array(); } - if (index === void 0) { index = 0; } - if (buffer === void 0) { buffer = new DataView(data.buffer); } - this.strings = strings; - this.index = index; - this.buffer = buffer; - } - BinaryInput.prototype.readByte = function () { - return this.buffer.getInt8(this.index++); - }; - BinaryInput.prototype.readUnsignedByte = function () { - return this.buffer.getUint8(this.index++); - }; - BinaryInput.prototype.readShort = function () { - var value = this.buffer.getInt16(this.index); - this.index += 2; - return value; - }; - BinaryInput.prototype.readInt32 = function () { - var value = this.buffer.getInt32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readInt = function (optimizePositive) { - var b = this.readByte(); - var result = b & 0x7F; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 7; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 14; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 21; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 28; - } - } - } - } - return optimizePositive ? result : ((result >>> 1) ^ -(result & 1)); - }; - BinaryInput.prototype.readStringRef = function () { - var index = this.readInt(true); - return index == 0 ? null : this.strings[index - 1]; - }; - BinaryInput.prototype.readString = function () { - var byteCount = this.readInt(true); - switch (byteCount) { - case 0: - return null; - case 1: - return ""; - } - byteCount--; - var chars = ""; - var charCount = 0; - for (var i = 0; i < byteCount;) { - var b = this.readByte(); - switch (b >> 4) { - case 12: - case 13: - chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F)); - i += 2; - break; - case 14: - chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F)); - i += 3; - break; - default: - chars += String.fromCharCode(b); - i++; - } - } - return chars; - }; - BinaryInput.prototype.readFloat = function () { - var value = this.buffer.getFloat32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readBoolean = function () { - return this.readByte() != 0; - }; - return BinaryInput; - }()); - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); - var Vertices = (function () { - function Vertices(bones, vertices) { - if (bones === void 0) { bones = null; } - if (vertices === void 0) { vertices = null; } - this.bones = bones; - this.vertices = vertices; - } - return Vertices; - }()); - var AttachmentType; - (function (AttachmentType) { - AttachmentType[AttachmentType["Region"] = 0] = "Region"; - AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; - AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; - AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; - AttachmentType[AttachmentType["Path"] = 4] = "Path"; - AttachmentType[AttachmentType["Point"] = 5] = "Point"; - AttachmentType[AttachmentType["Clipping"] = 6] = "Clipping"; - })(AttachmentType || (AttachmentType = {})); - function readTimeline1(input, timeline, scale) { - var time = input.readFloat(), value = input.readFloat() * scale; - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, value); - if (frame == frameLast) - break; - var time2 = input.readFloat(), value2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, value, value2, 1); - } - time = time2; - value = value2; - } - return timeline; - } - function readTimeline2(input, timeline, scale) { - var time = input.readFloat(), value1 = input.readFloat() * scale, value2 = input.readFloat() * scale; - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, value1, value2); - if (frame == frameLast) - break; - var time2 = input.readFloat(), nvalue1 = input.readFloat() * scale, nvalue2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, value1, nvalue1, scale); - setBezier(input, timeline, bezier++, frame, 1, time, time2, value2, nvalue2, scale); - } - time = time2; - value1 = nvalue1; - value2 = nvalue2; - } - return timeline; - } - function setBezier(input, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { - timeline.setBezier(bezier, frame, value, time1, value1, input.readFloat(), input.readFloat() * scale, input.readFloat(), input.readFloat() * scale, time2, value2); - } - var BONE_ROTATE = 0; - var BONE_TRANSLATE = 1; - var BONE_TRANSLATEX = 2; - var BONE_TRANSLATEY = 3; - var BONE_SCALE = 4; - var BONE_SCALEX = 5; - var BONE_SCALEY = 6; - var BONE_SHEAR = 7; - var BONE_SHEARX = 8; - var BONE_SHEARY = 9; - var SLOT_ATTACHMENT = 0; - var SLOT_RGBA = 1; - var SLOT_RGB = 2; - var SLOT_RGBA2 = 3; - var SLOT_RGB2 = 4; - var SLOT_ALPHA = 5; - var PATH_POSITION = 0; - var PATH_SPACING = 1; - var PATH_MIX = 2; - var CURVE_LINEAR = 0; - var CURVE_STEPPED = 1; - var CURVE_BEZIER = 2; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBounds = (function () { - function SkeletonBounds() { - this.minX = 0; - this.minY = 0; - this.maxX = 0; - this.maxY = 0; - this.boundingBoxes = new Array(); - this.polygons = new Array(); - this.polygonPool = new spine.Pool(function () { - return spine.Utils.newFloatArray(16); - }); - } - SkeletonBounds.prototype.update = function (skeleton, updateAabb) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - var boundingBoxes = this.boundingBoxes; - var polygons = this.polygons; - var polygonPool = this.polygonPool; - var slots = skeleton.slots; - var slotCount = slots.length; - boundingBoxes.length = 0; - polygonPool.freeAll(polygons); - polygons.length = 0; - for (var i = 0; i < slotCount; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.BoundingBoxAttachment) { - var boundingBox = attachment; - boundingBoxes.push(boundingBox); - var polygon = polygonPool.obtain(); - if (polygon.length != boundingBox.worldVerticesLength) { - polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); - } - polygons.push(polygon); - boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2); - } - } - if (updateAabb) { - this.aabbCompute(); - } - else { - this.minX = Number.POSITIVE_INFINITY; - this.minY = Number.POSITIVE_INFINITY; - this.maxX = Number.NEGATIVE_INFINITY; - this.maxY = Number.NEGATIVE_INFINITY; - } - }; - SkeletonBounds.prototype.aabbCompute = function () { - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - var vertices = polygon; - for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { - var x = vertices[ii]; - var y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - this.minX = minX; - this.minY = minY; - this.maxX = maxX; - this.maxY = maxY; - }; - SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { - return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; - }; - SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { - var minX = this.minX; - var minY = this.minY; - var maxX = this.maxX; - var maxY = this.maxY; - if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) - return false; - var m = (y2 - y1) / (x2 - x1); - var y = m * (minX - x1) + y1; - if (y > minY && y < maxY) - return true; - y = m * (maxX - x1) + y1; - if (y > minY && y < maxY) - return true; - var x = (minY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - x = (maxY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - return false; - }; - SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { - return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; - }; - SkeletonBounds.prototype.containsPoint = function (x, y) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.containsPointPolygon(polygons[i], x, y)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { - var vertices = polygon; - var nn = polygon.length; - var prevIndex = nn - 2; - var inside = false; - for (var ii = 0; ii < nn; ii += 2) { - var vertexY = vertices[ii + 1]; - var prevY = vertices[prevIndex + 1]; - if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { - var vertexX = vertices[ii]; - if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) - inside = !inside; - } - prevIndex = ii; - } - return inside; - }; - SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { - var vertices = polygon; - var nn = polygon.length; - var width12 = x1 - x2, height12 = y1 - y2; - var det1 = x1 * y2 - y1 * x2; - var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; - for (var ii = 0; ii < nn; ii += 2) { - var x4 = vertices[ii], y4 = vertices[ii + 1]; - var det2 = x3 * y4 - y3 * x4; - var width34 = x3 - x4, height34 = y3 - y4; - var det3 = width12 * height34 - height12 * width34; - var x = (det1 * width34 - width12 * det2) / det3; - if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { - var y = (det1 * height34 - height12 * det2) / det3; - if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) - return true; - } - x3 = x4; - y3 = y4; - } - return false; - }; - SkeletonBounds.prototype.getPolygon = function (boundingBox) { - if (!boundingBox) - throw new Error("boundingBox cannot be null."); - var index = this.boundingBoxes.indexOf(boundingBox); - return index == -1 ? null : this.polygons[index]; - }; - SkeletonBounds.prototype.getWidth = function () { - return this.maxX - this.minX; - }; - SkeletonBounds.prototype.getHeight = function () { - return this.maxY - this.minY; - }; - return SkeletonBounds; - }()); - spine.SkeletonBounds = SkeletonBounds; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonClipping = (function () { - function SkeletonClipping() { - this.triangulator = new spine.Triangulator(); - this.clippingPolygon = new Array(); - this.clipOutput = new Array(); - this.clippedVertices = new Array(); - this.clippedTriangles = new Array(); - this.scratch = new Array(); - } - SkeletonClipping.prototype.clipStart = function (slot, clip) { - if (this.clipAttachment) - return 0; - this.clipAttachment = clip; - var n = clip.worldVerticesLength; - var vertices = spine.Utils.setArraySize(this.clippingPolygon, n); - clip.computeWorldVertices(slot, 0, n, vertices, 0, 2); - var clippingPolygon = this.clippingPolygon; - SkeletonClipping.makeClockwise(clippingPolygon); - var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon)); - for (var i = 0, n_2 = clippingPolygons.length; i < n_2; i++) { - var polygon = clippingPolygons[i]; - SkeletonClipping.makeClockwise(polygon); - polygon.push(polygon[0]); - polygon.push(polygon[1]); - } - return clippingPolygons.length; - }; - SkeletonClipping.prototype.clipEndWithSlot = function (slot) { - if (this.clipAttachment && this.clipAttachment.endSlot == slot.data) - this.clipEnd(); - }; - SkeletonClipping.prototype.clipEnd = function () { - if (!this.clipAttachment) - return; - this.clipAttachment = null; - this.clippingPolygons = null; - this.clippedVertices.length = 0; - this.clippedTriangles.length = 0; - this.clippingPolygon.length = 0; - }; - SkeletonClipping.prototype.isClipping = function () { - return this.clipAttachment != null; - }; - SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) { - var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; - var clippedTriangles = this.clippedTriangles; - var polygons = this.clippingPolygons; - var polygonsCount = this.clippingPolygons.length; - var vertexSize = twoColor ? 12 : 8; - var index = 0; - clippedVertices.length = 0; - clippedTriangles.length = 0; - outer: for (var i = 0; i < trianglesLength; i += 3) { - var vertexOffset = triangles[i] << 1; - var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1]; - var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 1] << 1; - var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1]; - var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 2] << 1; - var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1]; - var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1]; - for (var p = 0; p < polygonsCount; p++) { - var s = clippedVertices.length; - if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) { - var clipOutputLength = clipOutput.length; - if (clipOutputLength == 0) - continue; - var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; - var d = 1 / (d0 * d2 + d1 * (y1 - y3)); - var clipOutputCount = clipOutputLength >> 1; - var clipOutputItems = this.clipOutput; - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize); - for (var ii = 0; ii < clipOutputLength; ii += 2) { - var x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; - clippedVerticesItems[s] = x; - clippedVerticesItems[s + 1] = y; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - var c0 = x - x3, c1 = y - y3; - var a = (d0 * c0 + d1 * c1) * d; - var b = (d4 * c0 + d2 * c1) * d; - var c = 1 - a - b; - clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c; - clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c; - if (twoColor) { - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - } - s += vertexSize; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); - clipOutputCount--; - for (var ii = 1; ii < clipOutputCount; ii++) { - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + ii); - clippedTrianglesItems[s + 2] = (index + ii + 1); - s += 3; - } - index += clipOutputCount + 1; - } - else { - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + 3 * vertexSize); - clippedVerticesItems[s] = x1; - clippedVerticesItems[s + 1] = y1; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - if (!twoColor) { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = x2; - clippedVerticesItems[s + 9] = y2; - clippedVerticesItems[s + 10] = light.r; - clippedVerticesItems[s + 11] = light.g; - clippedVerticesItems[s + 12] = light.b; - clippedVerticesItems[s + 13] = light.a; - clippedVerticesItems[s + 14] = u2; - clippedVerticesItems[s + 15] = v2; - clippedVerticesItems[s + 16] = x3; - clippedVerticesItems[s + 17] = y3; - clippedVerticesItems[s + 18] = light.r; - clippedVerticesItems[s + 19] = light.g; - clippedVerticesItems[s + 20] = light.b; - clippedVerticesItems[s + 21] = light.a; - clippedVerticesItems[s + 22] = u3; - clippedVerticesItems[s + 23] = v3; - } - else { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - clippedVerticesItems[s + 12] = x2; - clippedVerticesItems[s + 13] = y2; - clippedVerticesItems[s + 14] = light.r; - clippedVerticesItems[s + 15] = light.g; - clippedVerticesItems[s + 16] = light.b; - clippedVerticesItems[s + 17] = light.a; - clippedVerticesItems[s + 18] = u2; - clippedVerticesItems[s + 19] = v2; - clippedVerticesItems[s + 20] = dark.r; - clippedVerticesItems[s + 21] = dark.g; - clippedVerticesItems[s + 22] = dark.b; - clippedVerticesItems[s + 23] = dark.a; - clippedVerticesItems[s + 24] = x3; - clippedVerticesItems[s + 25] = y3; - clippedVerticesItems[s + 26] = light.r; - clippedVerticesItems[s + 27] = light.g; - clippedVerticesItems[s + 28] = light.b; - clippedVerticesItems[s + 29] = light.a; - clippedVerticesItems[s + 30] = u3; - clippedVerticesItems[s + 31] = v3; - clippedVerticesItems[s + 32] = dark.r; - clippedVerticesItems[s + 33] = dark.g; - clippedVerticesItems[s + 34] = dark.b; - clippedVerticesItems[s + 35] = dark.a; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3); - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + 1); - clippedTrianglesItems[s + 2] = (index + 2); - index += 3; - continue outer; - } - } - } - }; - SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) { - var originalOutput = output; - var clipped = false; - var input = null; - if (clippingArea.length % 4 >= 2) { - input = output; - output = this.scratch; - } - else - input = this.scratch; - input.length = 0; - input.push(x1); - input.push(y1); - input.push(x2); - input.push(y2); - input.push(x3); - input.push(y3); - input.push(x1); - input.push(y1); - output.length = 0; - var clippingVertices = clippingArea; - var clippingVerticesLast = clippingArea.length - 4; - for (var i = 0;; i += 2) { - var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; - var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; - var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; - var inputVertices = input; - var inputVerticesLength = input.length - 2, outputStart = output.length; - for (var ii = 0; ii < inputVerticesLength; ii += 2) { - var inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; - var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; - var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; - if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { - if (side2) { - output.push(inputX2); - output.push(inputY2); - continue; - } - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - } - else if (side2) { - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - output.push(inputX2); - output.push(inputY2); - } - clipped = true; - } - if (outputStart == output.length) { - originalOutput.length = 0; - return true; - } - output.push(output[0]); - output.push(output[1]); - if (i == clippingVerticesLast) - break; - var temp = output; - output = input; - output.length = 0; - input = temp; - } - if (originalOutput != output) { - originalOutput.length = 0; - for (var i = 0, n = output.length - 2; i < n; i++) - originalOutput[i] = output[i]; - } - else - originalOutput.length = originalOutput.length - 2; - return clipped; - }; - SkeletonClipping.makeClockwise = function (polygon) { - var vertices = polygon; - var verticeslength = polygon.length; - var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0; - for (var i = 0, n = verticeslength - 3; i < n; i += 2) { - p1x = vertices[i]; - p1y = vertices[i + 1]; - p2x = vertices[i + 2]; - p2y = vertices[i + 3]; - area += p1x * p2y - p2x * p1y; - } - if (area < 0) - return; - for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) { - var x = vertices[i], y = vertices[i + 1]; - var other = lastX - i; - vertices[i] = vertices[other]; - vertices[i + 1] = vertices[other + 1]; - vertices[other] = x; - vertices[other + 1] = y; - } - }; - return SkeletonClipping; - }()); - spine.SkeletonClipping = SkeletonClipping; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonData = (function () { - function SkeletonData() { - this.bones = new Array(); - this.slots = new Array(); - this.skins = new Array(); - this.events = new Array(); - this.animations = new Array(); - this.ikConstraints = new Array(); - this.transformConstraints = new Array(); - this.pathConstraints = new Array(); - this.fps = 0; - } - SkeletonData.prototype.findBone = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.name == boneName) - return bone; - } - return null; - }; - SkeletonData.prototype.findBoneIndex = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].name == boneName) - return i; - return -1; - }; - SkeletonData.prototype.findSlot = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.name == slotName) - return slot; - } - return null; - }; - SkeletonData.prototype.findSlotIndex = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].name == slotName) - return i; - return -1; - }; - SkeletonData.prototype.findSkin = function (skinName) { - if (!skinName) - throw new Error("skinName cannot be null."); - var skins = this.skins; - for (var i = 0, n = skins.length; i < n; i++) { - var skin = skins[i]; - if (skin.name == skinName) - return skin; - } - return null; - }; - SkeletonData.prototype.findEvent = function (eventDataName) { - if (!eventDataName) - throw new Error("eventDataName cannot be null."); - var events = this.events; - for (var i = 0, n = events.length; i < n; i++) { - var event_5 = events[i]; - if (event_5.name == eventDataName) - return event_5; - } - return null; - }; - SkeletonData.prototype.findAnimation = function (animationName) { - if (!animationName) - throw new Error("animationName cannot be null."); - var animations = this.animations; - for (var i = 0, n = animations.length; i < n; i++) { - var animation = animations[i]; - if (animation.name == animationName) - return animation; - } - return null; - }; - SkeletonData.prototype.findIkConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findTransformConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findPathConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - return SkeletonData; - }()); - spine.SkeletonData = SkeletonData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonJson = (function () { - function SkeletonJson(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonJson.prototype.readSkeletonData = function (json) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - var root = typeof (json) === "string" ? JSON.parse(json) : json; - var skeletonMap = root.skeleton; - if (skeletonMap) { - skeletonData.hash = skeletonMap.hash; - skeletonData.version = skeletonMap.spine; - skeletonData.x = skeletonMap.x; - skeletonData.y = skeletonMap.y; - skeletonData.width = skeletonMap.width; - skeletonData.height = skeletonMap.height; - skeletonData.fps = skeletonMap.fps; - skeletonData.imagesPath = skeletonMap.images; - } - if (root.bones) { - for (var i = 0; i < root.bones.length; i++) { - var boneMap = root.bones[i]; - var parent_5 = null; - var parentName = getValue(boneMap, "parent", null); - if (parentName) - parent_5 = skeletonData.findBone(parentName); - var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_5); - data.length = getValue(boneMap, "length", 0) * scale; - data.x = getValue(boneMap, "x", 0) * scale; - data.y = getValue(boneMap, "y", 0) * scale; - data.rotation = getValue(boneMap, "rotation", 0); - data.scaleX = getValue(boneMap, "scaleX", 1); - data.scaleY = getValue(boneMap, "scaleY", 1); - data.shearX = getValue(boneMap, "shearX", 0); - data.shearY = getValue(boneMap, "shearY", 0); - data.transformMode = spine.Utils.enumValue(spine.TransformMode, getValue(boneMap, "transform", "Normal")); - data.skinRequired = getValue(boneMap, "skin", false); - var color = getValue(boneMap, "color", null); - if (color) - data.color.setFromString(color); - skeletonData.bones.push(data); - } - } - if (root.slots) { - for (var i = 0; i < root.slots.length; i++) { - var slotMap = root.slots[i]; - var boneData = skeletonData.findBone(slotMap.bone); - var data = new spine.SlotData(skeletonData.slots.length, slotMap.name, boneData); - var color = getValue(slotMap, "color", null); - if (color) - data.color.setFromString(color); - var dark = getValue(slotMap, "dark", null); - if (dark) - data.darkColor = spine.Color.fromString(dark); - data.attachmentName = getValue(slotMap, "attachment", null); - data.blendMode = spine.Utils.enumValue(spine.BlendMode, getValue(slotMap, "blend", "normal")); - skeletonData.slots.push(data); - } - } - if (root.ik) { - for (var i = 0; i < root.ik.length; i++) { - var constraintMap = root.ik[i]; - var data = new spine.IkConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - data.target = skeletonData.findBone(constraintMap.target); - data.mix = getValue(constraintMap, "mix", 1); - data.softness = getValue(constraintMap, "softness", 0) * scale; - data.bendDirection = getValue(constraintMap, "bendPositive", true) ? 1 : -1; - data.compress = getValue(constraintMap, "compress", false); - data.stretch = getValue(constraintMap, "stretch", false); - data.uniform = getValue(constraintMap, "uniform", false); - skeletonData.ikConstraints.push(data); - } - } - if (root.transform) { - for (var i = 0; i < root.transform.length; i++) { - var constraintMap = root.transform[i]; - var data = new spine.TransformConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - var targetName = constraintMap.target; - data.target = skeletonData.findBone(targetName); - data.local = getValue(constraintMap, "local", false); - data.relative = getValue(constraintMap, "relative", false); - data.offsetRotation = getValue(constraintMap, "rotation", 0); - data.offsetX = getValue(constraintMap, "x", 0) * scale; - data.offsetY = getValue(constraintMap, "y", 0) * scale; - data.offsetScaleX = getValue(constraintMap, "scaleX", 0); - data.offsetScaleY = getValue(constraintMap, "scaleY", 0); - data.offsetShearY = getValue(constraintMap, "shearY", 0); - data.mixRotate = getValue(constraintMap, "mixRotate", 1); - data.mixX = getValue(constraintMap, "mixX", 1); - data.mixY = getValue(constraintMap, "mixY", data.mixX); - data.mixScaleX = getValue(constraintMap, "mixScaleX", 1); - data.mixScaleY = getValue(constraintMap, "mixScaleY", data.mixScaleX); - data.mixShearY = getValue(constraintMap, "mixShearY", 1); - skeletonData.transformConstraints.push(data); - } - } - if (root.path) { - for (var i = 0; i < root.path.length; i++) { - var constraintMap = root.path[i]; - var data = new spine.PathConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - var targetName = constraintMap.target; - data.target = skeletonData.findSlot(targetName); - data.positionMode = spine.Utils.enumValue(spine.PositionMode, getValue(constraintMap, "positionMode", "Percent")); - data.spacingMode = spine.Utils.enumValue(spine.SpacingMode, getValue(constraintMap, "spacingMode", "Length")); - data.rotateMode = spine.Utils.enumValue(spine.RotateMode, getValue(constraintMap, "rotateMode", "Tangent")); - data.offsetRotation = getValue(constraintMap, "rotation", 0); - data.position = getValue(constraintMap, "position", 0); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = getValue(constraintMap, "spacing", 0); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.mixRotate = getValue(constraintMap, "mixRotate", 1); - data.mixX = getValue(constraintMap, "mixX", 1); - data.mixY = getValue(constraintMap, "mixY", data.mixX); - skeletonData.pathConstraints.push(data); - } - } - if (root.skins) { - for (var i = 0; i < root.skins.length; i++) { - var skinMap = root.skins[i]; - var skin = new spine.Skin(skinMap.name); - if (skinMap.bones) { - for (var ii = 0; ii < skinMap.bones.length; ii++) - skin.bones.push(skeletonData.findBone(skinMap.bones[ii])); - } - if (skinMap.ik) { - for (var ii = 0; ii < skinMap.ik.length; ii++) - skin.constraints.push(skeletonData.findIkConstraint(skinMap.ik[ii])); - } - if (skinMap.transform) { - for (var ii = 0; ii < skinMap.transform.length; ii++) - skin.constraints.push(skeletonData.findTransformConstraint(skinMap.transform[ii])); - } - if (skinMap.path) { - for (var ii = 0; ii < skinMap.path.length; ii++) - skin.constraints.push(skeletonData.findPathConstraint(skinMap.path[ii])); - } - for (var slotName in skinMap.attachments) { - var slot = skeletonData.findSlot(slotName); - var slotMap = skinMap.attachments[slotName]; - for (var entryName in slotMap) { - var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData); - if (attachment) - skin.setAttachment(slot.index, entryName, attachment); - } - } - skeletonData.skins.push(skin); - if (skin.name == "default") - skeletonData.defaultSkin = skin; - } - } - for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - var parent_6 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_6 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_6); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - if (root.events) { - for (var eventName in root.events) { - var eventMap = root.events[eventName]; - var data = new spine.EventData(eventName); - data.intValue = getValue(eventMap, "int", 0); - data.floatValue = getValue(eventMap, "float", 0); - data.stringValue = getValue(eventMap, "string", ""); - data.audioPath = getValue(eventMap, "audio", null); - if (data.audioPath) { - data.volume = getValue(eventMap, "volume", 1); - data.balance = getValue(eventMap, "balance", 0); - } - skeletonData.events.push(data); - } - } - if (root.animations) { - for (var animationName in root.animations) { - var animationMap = root.animations[animationName]; - this.readAnimation(animationMap, animationName, skeletonData); - } - } - return skeletonData; - }; - SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) { - var scale = this.scale; - name = getValue(map, "name", name); - switch (getValue(map, "type", "region")) { - case "region": { - var path = getValue(map, "path", name); - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (!region) - return null; - region.path = path; - region.x = getValue(map, "x", 0) * scale; - region.y = getValue(map, "y", 0) * scale; - region.scaleX = getValue(map, "scaleX", 1); - region.scaleY = getValue(map, "scaleY", 1); - region.rotation = getValue(map, "rotation", 0); - region.width = map.width * scale; - region.height = map.height * scale; - var color = getValue(map, "color", null); - if (color) - region.color.setFromString(color); - region.updateOffset(); - return region; - } - case "boundingbox": { - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (!box) - return null; - this.readVertices(map, box, map.vertexCount << 1); - var color = getValue(map, "color", null); - if (color) - box.color.setFromString(color); - return box; - } - case "mesh": - case "linkedmesh": { - var path = getValue(map, "path", name); - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - var color = getValue(map, "color", null); - if (color) - mesh.color.setFromString(color); - mesh.width = getValue(map, "width", 0) * scale; - mesh.height = getValue(map, "height", 0) * scale; - var parent_7 = getValue(map, "parent", null); - if (parent_7) { - this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, "skin", null), slotIndex, parent_7, getValue(map, "deform", true))); - return mesh; - } - var uvs = map.uvs; - this.readVertices(map, mesh, uvs.length); - mesh.triangles = map.triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.edges = getValue(map, "edges", null); - mesh.hullLength = getValue(map, "hull", 0) * 2; - return mesh; - } - case "path": { - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (!path) - return null; - path.closed = getValue(map, "closed", false); - path.constantSpeed = getValue(map, "constantSpeed", true); - var vertexCount = map.vertexCount; - this.readVertices(map, path, vertexCount << 1); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0; i < map.lengths.length; i++) - lengths[i] = map.lengths[i] * scale; - path.lengths = lengths; - var color = getValue(map, "color", null); - if (color) - path.color.setFromString(color); - return path; - } - case "point": { - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (!point) - return null; - point.x = getValue(map, "x", 0) * scale; - point.y = getValue(map, "y", 0) * scale; - point.rotation = getValue(map, "rotation", 0); - var color = getValue(map, "color", null); - if (color) - point.color.setFromString(color); - return point; - } - case "clipping": { - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (!clip) - return null; - var end = getValue(map, "end", null); - if (end) - clip.endSlot = skeletonData.findSlot(end); - var vertexCount = map.vertexCount; - this.readVertices(map, clip, vertexCount << 1); - var color = getValue(map, "color", null); - if (color) - clip.color.setFromString(color); - return clip; - } - } - return null; - }; - SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { - var scale = this.scale; - attachment.worldVerticesLength = verticesLength; - var vertices = map.vertices; - if (verticesLength == vertices.length) { - var scaledVertices = spine.Utils.toFloatArray(vertices); - if (scale != 1) { - for (var i = 0, n = vertices.length; i < n; i++) - scaledVertices[i] *= scale; - } - attachment.vertices = scaledVertices; - return; - } - var weights = new Array(); - var bones = new Array(); - for (var i = 0, n = vertices.length; i < n;) { - var boneCount = vertices[i++]; - bones.push(boneCount); - for (var nn = i + boneCount * 4; i < nn; i += 4) { - bones.push(vertices[i]); - weights.push(vertices[i + 1] * scale); - weights.push(vertices[i + 2] * scale); - weights.push(vertices[i + 3]); - } - } - attachment.bones = bones; - attachment.vertices = spine.Utils.toFloatArray(weights); - }; - SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { - var scale = this.scale; - var timelines = new Array(); - if (map.slots) { - for (var slotName in map.slots) { - var slotMap = map.slots[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - if (!timelineMap) - continue; - if (timelineName == "attachment") { - var timeline = new spine.AttachmentTimeline(timelineMap.length, slotIndex); - for (var frame = 0; frame < timelineMap.length; frame++) { - var keyMap = timelineMap[frame]; - timeline.setFrame(frame, getValue(keyMap, "time", 0), keyMap.name); - } - timelines.push(timeline); - } - else if (timelineName == "rgba") { - var timeline = new spine.RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.color); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color.a); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.color); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); - } - time = time2; - color = newColor; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "rgb") { - var timeline = new spine.RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.color); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.color); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - } - time = time2; - color = newColor; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "alpha") { - timelines.push(readTimeline1(timelineMap, new spine.AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1)); - } - else if (timelineName == "rgba2") { - var timeline = new spine.RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.light); - var color2 = spine.Color.fromString(keyMap.dark); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color.a, color2.r, color2.g, color2.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.light); - var newColor2 = spine.Color.fromString(nextMap.dark); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.r, newColor2.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.g, newColor2.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 6, time, time2, color2.b, newColor2.b, 1); - } - time = time2; - color = newColor; - color2 = newColor2; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "rgb2") { - var timeline = new spine.RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.light); - var color2 = spine.Color.fromString(keyMap.dark); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.light); - var newColor2 = spine.Color.fromString(nextMap.dark); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1); - } - time = time2; - color = newColor; - color2 = newColor2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.bones) { - for (var boneName in map.bones) { - var boneMap = map.bones[boneName]; - var boneIndex = skeletonData.findBoneIndex(boneName); - for (var timelineName in boneMap) { - var timelineMap = boneMap[timelineName]; - if (timelineMap.length == 0) - continue; - if (timelineName === "rotate") { - timelines.push(readTimeline1(timelineMap, new spine.RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1)); - } - else if (timelineName === "translate") { - var timeline = new spine.TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, scale)); - } - else if (timelineName === "translatex") { - var timeline = new spine.TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); - } - else if (timelineName === "translatey") { - var timeline = new spine.TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); - } - else if (timelineName === "scale") { - var timeline = new spine.ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 1, 1)); - } - else if (timelineName === "scalex") { - var timeline = new spine.ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); - } - else if (timelineName === "scaley") { - var timeline = new spine.ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); - } - else if (timelineName === "shear") { - var timeline = new spine.ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, 1)); - } - else if (timelineName === "shearx") { - var timeline = new spine.ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); - } - else if (timelineName === "sheary") { - var timeline = new spine.ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); - } - } - } - } - if (map.ik) { - for (var constraintName in map.ik) { - var constraintMap = map.ik[constraintName]; - var keyMap = constraintMap[0]; - if (!keyMap) - continue; - var constraint = skeletonData.findIkConstraint(constraintName); - var constraintIndex = skeletonData.ikConstraints.indexOf(constraint); - var timeline = new spine.IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mix = getValue(keyMap, "mix", 1); - var softness = getValue(keyMap, "softness", 0) * scale; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mix, softness, getValue(keyMap, "bendPositive", true) ? 1 : -1, getValue(keyMap, "compress", false), getValue(keyMap, "stretch", false)); - var nextMap = constraintMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mix2 = getValue(nextMap, "mix", 1); - var softness2 = getValue(nextMap, "softness", 0) * scale; - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale); - } - time = time2; - mix = mix2; - softness = softness2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - if (map.transform) { - for (var constraintName in map.transform) { - var timelineMap = map.transform[constraintName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - var constraint = skeletonData.findTransformConstraint(constraintName); - var constraintIndex = skeletonData.transformConstraints.indexOf(constraint); - var timeline = new spine.TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mixRotate = getValue(keyMap, "mixRotate", 1); - var mixX = getValue(keyMap, "mixX", 1); - var mixY = getValue(keyMap, "mixY", mixX); - var mixScaleX = getValue(keyMap, "mixScaleX", 1); - var mixScaleY = getValue(keyMap, "mixScaleY", mixScaleX); - var mixShearY = getValue(keyMap, "mixShearY", 1); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mixRotate2 = getValue(nextMap, "mixRotate", 1); - var mixX2 = getValue(nextMap, "mixX", 1); - var mixY2 = getValue(nextMap, "mixY", mixX2); - var mixScaleX2 = getValue(nextMap, "mixScaleX", 1); - var mixScaleY2 = getValue(nextMap, "mixScaleY", mixScaleX2); - var mixShearY2 = getValue(nextMap, "mixShearY", 1); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - mixScaleX = mixScaleX2; - mixScaleY = mixScaleY2; - mixScaleX = mixScaleX2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - if (map.path) { - for (var constraintName in map.path) { - var constraintMap = map.path[constraintName]; - var constraint = skeletonData.findPathConstraint(constraintName); - var constraintIndex = skeletonData.pathConstraints.indexOf(constraint); - for (var timelineName in constraintMap) { - var timelineMap = constraintMap[timelineName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - if (timelineName === "position") { - var timeline = new spine.PathConstraintPositionTimeline(timelineMap.length, timelineMap.length, constraintIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.positionMode == spine.PositionMode.Fixed ? scale : 1)); - } - else if (timelineName === "spacing") { - var timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, constraintIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.spacingMode == spine.SpacingMode.Length || constraint.spacingMode == spine.SpacingMode.Fixed ? scale : 1)); - } - else if (timelineName === "mix") { - var timeline = new spine.PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mixRotate = getValue(keyMap, "mixRotate", 1); - var mixX = getValue(keyMap, "mixX", 1); - var mixY = getValue(keyMap, "mixY", mixX); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mixRotate2 = getValue(nextMap, "mixRotate", 1); - var mixX2 = getValue(nextMap, "mixX", 1); - var mixY2 = getValue(nextMap, "mixY", mixX2); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.deform) { - for (var deformName in map.deform) { - var deformMap = map.deform[deformName]; - var skin = skeletonData.findSkin(deformName); - for (var slotName in deformMap) { - var slotMap = deformMap[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - var attachment = skin.getAttachment(slotIndex, timelineName); - var weighted = attachment.bones; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var timeline = new spine.DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment); - var time = getValue(keyMap, "time", 0); - for (var frame = 0, bezier = 0;; frame++) { - var deform = void 0; - var verticesValue = getValue(keyMap, "vertices", null); - if (!verticesValue) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = getValue(keyMap, "offset", 0); - spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); - if (scale != 1) { - for (var i = start, n = i + verticesValue.length; i < n; i++) - deform[i] *= scale; - } - if (!weighted) { - for (var i = 0; i < deformLength; i++) - deform[i] += vertices[i]; - } - } - timeline.setFrame(frame, time, deform); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var curve = keyMap.curve; - if (curve) - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1); - time = time2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.drawOrder) { - var timeline = new spine.DrawOrderTimeline(map.drawOrder.length); - var slotCount = skeletonData.slots.length; - var frame = 0; - for (var i = 0; i < map.drawOrder.length; i++, frame++) { - var drawOrderMap = map.drawOrder[i]; - var drawOrder = null; - var offsets = getValue(drawOrderMap, "offsets", null); - if (offsets) { - drawOrder = spine.Utils.newArray(slotCount, -1); - var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var ii = 0; ii < offsets.length; ii++) { - var offsetMap = offsets[ii]; - var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + offsetMap.offset] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var ii = slotCount - 1; ii >= 0; ii--) - if (drawOrder[ii] == -1) - drawOrder[ii] = unchanged[--unchangedIndex]; - } - timeline.setFrame(frame, getValue(drawOrderMap, "time", 0), drawOrder); - } - timelines.push(timeline); - } - if (map.events) { - var timeline = new spine.EventTimeline(map.events.length); - var frame = 0; - for (var i = 0; i < map.events.length; i++, frame++) { - var eventMap = map.events[i]; - var eventData = skeletonData.findEvent(eventMap.name); - var event_6 = new spine.Event(spine.Utils.toSinglePrecision(getValue(eventMap, "time", 0)), eventData); - event_6.intValue = getValue(eventMap, "int", eventData.intValue); - event_6.floatValue = getValue(eventMap, "float", eventData.floatValue); - event_6.stringValue = getValue(eventMap, "string", eventData.stringValue); - if (event_6.data.audioPath) { - event_6.volume = getValue(eventMap, "volume", 1); - event_6.balance = getValue(eventMap, "balance", 0); - } - timeline.setFrame(frame, event_6); - } - timelines.push(timeline); - } - var duration = 0; - for (var i = 0, n = timelines.length; i < n; i++) - duration = Math.max(duration, timelines[i].getDuration()); - skeletonData.animations.push(new spine.Animation(name, timelines, duration)); - }; - return SkeletonJson; - }()); - spine.SkeletonJson = SkeletonJson; - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); - function readTimeline1(keys, timeline, defaultValue, scale) { - var keyMap = keys[0]; - var time = getValue(keyMap, "time", 0); - var value = getValue(keyMap, "value", defaultValue) * scale; - var bezier = 0; - for (var frame = 0;; frame++) { - timeline.setFrame(frame, time, value); - var nextMap = keys[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - return timeline; - } - var time2 = getValue(nextMap, "time", 0); - var value2 = getValue(nextMap, "value", defaultValue) * scale; - if (keyMap.curve) - bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale); - time = time2; - value = value2; - keyMap = nextMap; - } - } - function readTimeline2(keys, timeline, name1, name2, defaultValue, scale) { - var keyMap = keys[0]; - var time = getValue(keyMap, "time", 0); - var value1 = getValue(keyMap, name1, defaultValue) * scale; - var value2 = getValue(keyMap, name2, defaultValue) * scale; - var bezier = 0; - for (var frame = 0;; frame++) { - timeline.setFrame(frame, time, value1, value2); - var nextMap = keys[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - return timeline; - } - var time2 = getValue(nextMap, "time", 0); - var nvalue1 = getValue(nextMap, name1, defaultValue) * scale; - var nvalue2 = getValue(nextMap, name2, defaultValue) * scale; - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale); - } - time = time2; - value1 = nvalue1; - value2 = nvalue2; - keyMap = nextMap; - } - } - function readCurve(curve, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { - if (curve == "stepped") { - timeline.setStepped(frame); - return bezier; - } - var i = value << 2; - var cx1 = curve[i]; - var cy1 = curve[i + 1] * scale; - var cx2 = curve[i + 2]; - var cy2 = curve[i + 3] * scale; - timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2); - return bezier + 1; - } - function getValue(map, property, defaultValue) { - return map[property] !== undefined ? map[property] : defaultValue; - } -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkinEntry = (function () { - function SkinEntry(slotIndex, name, attachment) { - this.slotIndex = slotIndex; - this.name = name; - this.attachment = attachment; - } - return SkinEntry; - }()); - spine.SkinEntry = SkinEntry; - var Skin = (function () { - function Skin(name) { - this.attachments = new Array(); - this.bones = Array(); - this.constraints = new Array(); - if (!name) - throw new Error("name cannot be null."); - this.name = name; - } - Skin.prototype.setAttachment = function (slotIndex, name, attachment) { - if (!attachment) - throw new Error("attachment cannot be null."); - var attachments = this.attachments; - if (slotIndex >= attachments.length) - attachments.length = slotIndex + 1; - if (!attachments[slotIndex]) - attachments[slotIndex] = {}; - attachments[slotIndex][name] = attachment; - }; - Skin.prototype.addSkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var ii = 0; ii < this.bones.length; ii++) { - if (this.bones[ii] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var ii = 0; ii < this.constraints.length; ii++) { - if (this.constraints[ii] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - }; - Skin.prototype.copySkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var ii = 0; ii < this.bones.length; ii++) { - if (this.bones[ii] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var ii = 0; ii < this.constraints.length; ii++) { - if (this.constraints[ii] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - if (!attachment.attachment) - continue; - if (attachment.attachment instanceof spine.MeshAttachment) { - attachment.attachment = attachment.attachment.newLinkedMesh(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - else { - attachment.attachment = attachment.attachment.copy(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - } - }; - Skin.prototype.getAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - return dictionary ? dictionary[name] : null; - }; - Skin.prototype.removeAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - if (dictionary) - dictionary[name] = null; - }; - Skin.prototype.getAttachments = function () { - var entries = new Array(); - for (var i = 0; i < this.attachments.length; i++) { - var slotAttachments = this.attachments[i]; - if (slotAttachments) { - for (var name_4 in slotAttachments) { - var attachment = slotAttachments[name_4]; - if (attachment) - entries.push(new SkinEntry(i, name_4, attachment)); - } - } - } - return entries; - }; - Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) { - var slotAttachments = this.attachments[slotIndex]; - if (slotAttachments) { - for (var name_5 in slotAttachments) { - var attachment = slotAttachments[name_5]; - if (attachment) - attachments.push(new SkinEntry(slotIndex, name_5, attachment)); - } - } - }; - Skin.prototype.clear = function () { - this.attachments.length = 0; - this.bones.length = 0; - this.constraints.length = 0; - }; - Skin.prototype.attachAll = function (skeleton, oldSkin) { - var slotIndex = 0; - for (var i = 0; i < skeleton.slots.length; i++) { - var slot = skeleton.slots[i]; - var slotAttachment = slot.getAttachment(); - if (slotAttachment && slotIndex < oldSkin.attachments.length) { - var dictionary = oldSkin.attachments[slotIndex]; - for (var key in dictionary) { - var skinAttachment = dictionary[key]; - if (slotAttachment == skinAttachment) { - var attachment = this.getAttachment(slotIndex, key); - if (attachment) - slot.setAttachment(attachment); - break; - } - } - } - slotIndex++; - } - }; - return Skin; - }()); - spine.Skin = Skin; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Slot = (function () { - function Slot(data, bone) { - this.deform = new Array(); - if (!data) - throw new Error("data cannot be null."); - if (!bone) - throw new Error("bone cannot be null."); - this.data = data; - this.bone = bone; - this.color = new spine.Color(); - this.darkColor = !data.darkColor ? null : new spine.Color(); - this.setToSetupPose(); - } - Slot.prototype.getSkeleton = function () { - return this.bone.skeleton; - }; - Slot.prototype.getAttachment = function () { - return this.attachment; - }; - Slot.prototype.setAttachment = function (attachment) { - if (this.attachment == attachment) - return; - if (!(attachment instanceof spine.VertexAttachment) || !(this.attachment instanceof spine.VertexAttachment) - || attachment.deformAttachment != this.attachment.deformAttachment) { - this.deform.length = 0; - } - this.attachment = attachment; - this.attachmentTime = this.bone.skeleton.time; - }; - Slot.prototype.setAttachmentTime = function (time) { - this.attachmentTime = this.bone.skeleton.time - time; - }; - Slot.prototype.getAttachmentTime = function () { - return this.bone.skeleton.time - this.attachmentTime; - }; - Slot.prototype.setToSetupPose = function () { - this.color.setFromColor(this.data.color); - if (this.darkColor) - this.darkColor.setFromColor(this.data.darkColor); - if (!this.data.attachmentName) - this.attachment = null; - else { - this.attachment = null; - this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); - } - }; - return Slot; - }()); - spine.Slot = Slot; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SlotData = (function () { - function SlotData(index, name, boneData) { - this.color = new spine.Color(1, 1, 1, 1); - if (index < 0) - throw new Error("index must be >= 0."); - if (!name) - throw new Error("name cannot be null."); - if (!boneData) - throw new Error("boneData cannot be null."); - this.index = index; - this.name = name; - this.boneData = boneData; - } - return SlotData; - }()); - spine.SlotData = SlotData; - var BlendMode; - (function (BlendMode) { - BlendMode[BlendMode["Normal"] = 0] = "Normal"; - BlendMode[BlendMode["Additive"] = 1] = "Additive"; - BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; - BlendMode[BlendMode["Screen"] = 3] = "Screen"; - })(BlendMode = spine.BlendMode || (spine.BlendMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Texture = (function () { - function Texture(image) { - this._image = image; - } - Texture.prototype.getImage = function () { - return this._image; - }; - return Texture; - }()); - spine.Texture = Texture; - var TextureFilter; - (function (TextureFilter) { - TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; - TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; - TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; - TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; - TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; - TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; - TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; - })(TextureFilter = spine.TextureFilter || (spine.TextureFilter = {})); - var TextureWrap; - (function (TextureWrap) { - TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; - TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; - TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; - })(TextureWrap = spine.TextureWrap || (spine.TextureWrap = {})); - var TextureRegion = (function () { - function TextureRegion() { - this.u = 0; - this.v = 0; - this.u2 = 0; - this.v2 = 0; - this.width = 0; - this.height = 0; - this.degrees = 0; - this.offsetX = 0; - this.offsetY = 0; - this.originalWidth = 0; - this.originalHeight = 0; - } - return TextureRegion; - }()); - spine.TextureRegion = TextureRegion; - var FakeTexture = (function (_super) { - __extends(FakeTexture, _super); - function FakeTexture() { - return _super !== null && _super.apply(this, arguments) || this; - } - FakeTexture.prototype.setFilters = function (minFilter, magFilter) { }; - FakeTexture.prototype.setWraps = function (uWrap, vWrap) { }; - FakeTexture.prototype.dispose = function () { }; - return FakeTexture; - }(Texture)); - spine.FakeTexture = FakeTexture; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TextureAtlas = (function () { - function TextureAtlas(atlasText) { - this.pages = new Array(); - this.regions = new Array(); - var reader = new TextureAtlasReader(atlasText); - var entry = new Array(4); - var page = null; - var region = null; - var pageFields = {}; - pageFields["size"] = function () { - page.width = parseInt(entry[1]); - page.height = parseInt(entry[2]); - }; - pageFields["format"] = function () { - }; - pageFields["filter"] = function () { - page.minFilter = spine.Utils.enumValue(spine.TextureFilter, entry[1]); - page.magFilter = spine.Utils.enumValue(spine.TextureFilter, entry[2]); - }; - pageFields["repeat"] = function () { - if (entry[1].indexOf('x') != -1) - page.uWrap = spine.TextureWrap.Repeat; - if (entry[1].indexOf('y') != -1) - page.vWrap = spine.TextureWrap.Repeat; - }; - pageFields["pma"] = function () { - page.pma = entry[1] == "true"; - }; - var regionFields = {}; - regionFields["xy"] = function () { - region.x = parseInt(entry[1]); - region.y = parseInt(entry[2]); - }; - regionFields["size"] = function () { - region.width = parseInt(entry[1]); - region.height = parseInt(entry[2]); - }; - regionFields["bounds"] = function () { - region.x = parseInt(entry[1]); - region.y = parseInt(entry[2]); - region.width = parseInt(entry[3]); - region.height = parseInt(entry[4]); - }; - regionFields["offset"] = function () { - region.offsetX = parseInt(entry[1]); - region.offsetY = parseInt(entry[2]); - }; - regionFields["orig"] = function () { - region.originalWidth = parseInt(entry[1]); - region.originalHeight = parseInt(entry[2]); - }; - regionFields["offsets"] = function () { - region.offsetX = parseInt(entry[1]); - region.offsetY = parseInt(entry[2]); - region.originalWidth = parseInt(entry[3]); - region.originalHeight = parseInt(entry[4]); - }; - regionFields["rotate"] = function () { - var value = entry[1]; - if (value == "true") - region.degrees = 90; - else if (value != "false") - region.degrees = parseInt(value); - }; - regionFields["index"] = function () { - region.index = parseInt(entry[1]); - }; - var line = reader.readLine(); - while (line && line.trim().length == 0) - line = reader.readLine(); - while (true) { - if (!line || line.trim().length == 0) - break; - if (reader.readEntry(entry, line) == 0) - break; - line = reader.readLine(); - } - var names = null; - var values = null; - while (true) { - if (line === null) - break; - if (line.trim().length == 0) { - page = null; - line = reader.readLine(); - } - else if (!page) { - page = new TextureAtlasPage(); - page.name = line.trim(); - while (true) { - if (reader.readEntry(entry, line = reader.readLine()) == 0) - break; - var field = pageFields[entry[0]]; - if (field) - field(); - } - this.pages.push(page); - } - else { - region = new TextureAtlasRegion(); - region.page = page; - region.name = line; - while (true) { - var count = reader.readEntry(entry, line = reader.readLine()); - if (count == 0) - break; - var field = regionFields[entry[0]]; - if (field) - field(); - else { - if (!names) { - names = []; - values = []; - } - names.push(entry[0]); - var entryValues = []; - for (var i = 0; i < count; i++) - entryValues.push(parseInt(entry[i + 1])); - values.push(entryValues); - } - } - if (region.originalWidth == 0 && region.originalHeight == 0) { - region.originalWidth = region.width; - region.originalHeight = region.height; - } - if (names && names.length > 0) { - region.names = names; - region.values = values; - names = null; - values = null; - } - region.u = region.x / page.width; - region.v = region.y / page.height; - if (region.degrees == 90) { - region.u2 = (region.x + region.height) / page.width; - region.v2 = (region.y + region.width) / page.height; - } - else { - region.u2 = (region.x + region.width) / page.width; - region.v2 = (region.y + region.height) / page.height; - } - this.regions.push(region); - } - } - } - TextureAtlas.prototype.findRegion = function (name) { - for (var i = 0; i < this.regions.length; i++) { - if (this.regions[i].name == name) { - return this.regions[i]; - } - } - return null; - }; - TextureAtlas.prototype.setTextures = function (assetManager, pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - for (var _i = 0, _a = this.pages; _i < _a.length; _i++) { - var page = _a[_i]; - page.setTexture(assetManager.get(pathPrefix + page.name)); - } - }; - TextureAtlas.prototype.dispose = function () { - for (var i = 0; i < this.pages.length; i++) { - this.pages[i].texture.dispose(); - } - }; - return TextureAtlas; - }()); - spine.TextureAtlas = TextureAtlas; - var TextureAtlasReader = (function () { - function TextureAtlasReader(text) { - this.index = 0; - this.lines = text.split(/\r\n|\r|\n/); - } - TextureAtlasReader.prototype.readLine = function () { - if (this.index >= this.lines.length) - return null; - return this.lines[this.index++]; - }; - TextureAtlasReader.prototype.readEntry = function (entry, line) { - if (!line) - return 0; - line = line.trim(); - if (line.length == 0) - return 0; - var colon = line.indexOf(':'); - if (colon == -1) - return 0; - entry[0] = line.substr(0, colon).trim(); - for (var i = 1, lastMatch = colon + 1;; i++) { - var comma = line.indexOf(',', lastMatch); - if (comma == -1) { - entry[i] = line.substr(lastMatch).trim(); - return i; - } - entry[i] = line.substr(lastMatch, comma - lastMatch).trim(); - lastMatch = comma + 1; - if (i == 4) - return 4; - } - }; - return TextureAtlasReader; - }()); - var TextureAtlasPage = (function () { - function TextureAtlasPage() { - this.minFilter = spine.TextureFilter.Nearest; - this.magFilter = spine.TextureFilter.Nearest; - this.uWrap = spine.TextureWrap.ClampToEdge; - this.vWrap = spine.TextureWrap.ClampToEdge; - } - TextureAtlasPage.prototype.setTexture = function (texture) { - this.texture = texture; - texture.setFilters(this.minFilter, this.magFilter); - texture.setWraps(this.uWrap, this.vWrap); - }; - return TextureAtlasPage; - }()); - spine.TextureAtlasPage = TextureAtlasPage; - var TextureAtlasRegion = (function (_super) { - __extends(TextureAtlasRegion, _super); - function TextureAtlasRegion() { - return _super !== null && _super.apply(this, arguments) || this; - } - return TextureAtlasRegion; - }(spine.TextureRegion)); - spine.TextureAtlasRegion = TextureAtlasRegion; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraint = (function () { - function TransformConstraint(data, skeleton) { - this.mixRotate = 0; - this.mixX = 0; - this.mixY = 0; - this.mixScaleX = 0; - this.mixScaleY = 0; - this.mixShearY = 0; - this.temp = new spine.Vector2(); - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mixRotate = data.mixRotate; - this.mixX = data.mixX; - this.mixY = data.mixY; - this.mixScaleX = data.mixScaleX; - this.mixScaleY = data.mixScaleY; - this.mixShearY = data.mixShearY; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - TransformConstraint.prototype.isActive = function () { - return this.active; - }; - TransformConstraint.prototype.update = function () { - if (this.mixRotate == 0 && this.mixX == 0 && this.mixY == 0 && this.mixScaleX == 0 && this.mixScaleX == 0 && this.mixShearY == 0) - return; - if (this.data.local) { - if (this.data.relative) - this.applyRelativeLocal(); - else - this.applyAbsoluteLocal(); - } - else { - if (this.data.relative) - this.applyRelativeWorld(); - else - this.applyAbsoluteWorld(); - } - }; - TransformConstraint.prototype.applyAbsoluteWorld = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var translate = mixX != 0 || mixY != 0; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect; - var offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (mixRotate != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - if (translate) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += (temp.x - bone.worldX) * mixX; - bone.worldY += (temp.y - bone.worldY) * mixY; - } - if (mixScaleX != 0) { - var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c); - if (s != 0) - s = (s + (Math.sqrt(ta * ta + tc * tc) - s + this.data.offsetScaleX) * mixScaleX) / s; - bone.a *= s; - bone.c *= s; - } - if (mixScaleY != 0) { - var s = Math.sqrt(bone.b * bone.b + bone.d * bone.d); - if (s != 0) - s = (s + (Math.sqrt(tb * tb + td * td) - s + this.data.offsetScaleY) * mixScaleY) / s; - bone.b *= s; - bone.d *= s; - } - if (mixShearY > 0) { - var b = bone.b, d = bone.d; - var by = Math.atan2(d, b); - var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r = by + (r + offsetShearY) * mixShearY; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - } - bone.updateAppliedTransform(); - } - }; - TransformConstraint.prototype.applyRelativeWorld = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var translate = mixX != 0 || mixY != 0; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (mixRotate != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - if (translate) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += temp.x * mixX; - bone.worldY += temp.y * mixY; - } - if (mixScaleX != 0) { - var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * mixScaleX + 1; - bone.a *= s; - bone.c *= s; - } - if (mixScaleY != 0) { - var s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * mixScaleY + 1; - bone.b *= s; - bone.d *= s; - } - if (mixShearY > 0) { - var r = Math.atan2(td, tb) - Math.atan2(tc, ta); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - var b = bone.b, d = bone.d; - r = Math.atan2(d, b) + (r - spine.MathUtils.PI / 2 + offsetShearY) * mixShearY; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - } - bone.updateAppliedTransform(); - } - }; - TransformConstraint.prototype.applyAbsoluteLocal = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var target = this.target; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var rotation = bone.arotation; - if (mixRotate != 0) { - var r = target.arotation - rotation + this.data.offsetRotation; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - rotation += r * mixRotate; - } - var x = bone.ax, y = bone.ay; - x += (target.ax - x + this.data.offsetX) * mixX; - y += (target.ay - y + this.data.offsetY) * mixY; - var scaleX = bone.ascaleX, scaleY = bone.ascaleY; - if (mixScaleX != 0 && scaleX != 0) - scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * mixScaleX) / scaleX; - if (mixScaleY != 0 && scaleY != 0) - scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * mixScaleY) / scaleY; - var shearY = bone.ashearY; - if (mixShearY != 0) { - var r = target.ashearY - shearY + this.data.offsetShearY; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - shearY += r * mixShearY; - } - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - TransformConstraint.prototype.applyRelativeLocal = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var target = this.target; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var rotation = bone.arotation + (target.arotation + this.data.offsetRotation) * mixRotate; - var x = bone.ax + (target.ax + this.data.offsetX) * mixX; - var y = bone.ay + (target.ay + this.data.offsetY) * mixY; - var scaleX = (bone.ascaleX * ((target.ascaleX - 1 + this.data.offsetScaleX) * mixScaleX) + 1); - var scaleY = (bone.ascaleY * ((target.ascaleY - 1 + this.data.offsetScaleY) * mixScaleY) + 1); - var shearY = bone.ashearY + (target.ashearY + this.data.offsetShearY) * mixShearY; - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - return TransformConstraint; - }()); - spine.TransformConstraint = TransformConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraintData = (function (_super) { - __extends(TransformConstraintData, _super); - function TransformConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.mixRotate = 0; - _this.mixX = 0; - _this.mixY = 0; - _this.mixScaleX = 0; - _this.mixScaleY = 0; - _this.mixShearY = 0; - _this.offsetRotation = 0; - _this.offsetX = 0; - _this.offsetY = 0; - _this.offsetScaleX = 0; - _this.offsetScaleY = 0; - _this.offsetShearY = 0; - _this.relative = false; - _this.local = false; - return _this; - } - return TransformConstraintData; - }(spine.ConstraintData)); - spine.TransformConstraintData = TransformConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Triangulator = (function () { - function Triangulator() { - this.convexPolygons = new Array(); - this.convexPolygonsIndices = new Array(); - this.indicesArray = new Array(); - this.isConcaveArray = new Array(); - this.triangles = new Array(); - this.polygonPool = new spine.Pool(function () { - return new Array(); - }); - this.polygonIndicesPool = new spine.Pool(function () { - return new Array(); - }); - } - Triangulator.prototype.triangulate = function (verticesArray) { - var vertices = verticesArray; - var vertexCount = verticesArray.length >> 1; - var indices = this.indicesArray; - indices.length = 0; - for (var i = 0; i < vertexCount; i++) - indices[i] = i; - var isConcave = this.isConcaveArray; - isConcave.length = 0; - for (var i = 0, n = vertexCount; i < n; ++i) - isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices); - var triangles = this.triangles; - triangles.length = 0; - while (vertexCount > 3) { - var previous = vertexCount - 1, i = 0, next = 1; - while (true) { - outer: if (!isConcave[i]) { - var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; - var p1x = vertices[p1], p1y = vertices[p1 + 1]; - var p2x = vertices[p2], p2y = vertices[p2 + 1]; - var p3x = vertices[p3], p3y = vertices[p3 + 1]; - for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) { - if (!isConcave[ii]) - continue; - var v = indices[ii] << 1; - var vx = vertices[v], vy = vertices[v + 1]; - if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) { - if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) { - if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) - break outer; - } - } - } - break; - } - if (next == 0) { - do { - if (!isConcave[i]) - break; - i--; - } while (i > 0); - break; - } - previous = i; - i = next; - next = (next + 1) % vertexCount; - } - triangles.push(indices[(vertexCount + i - 1) % vertexCount]); - triangles.push(indices[i]); - triangles.push(indices[(i + 1) % vertexCount]); - indices.splice(i, 1); - isConcave.splice(i, 1); - vertexCount--; - var previousIndex = (vertexCount + i - 1) % vertexCount; - var nextIndex = i == vertexCount ? 0 : i; - isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); - isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); - } - if (vertexCount == 3) { - triangles.push(indices[2]); - triangles.push(indices[0]); - triangles.push(indices[1]); - } - return triangles; - }; - Triangulator.prototype.decompose = function (verticesArray, triangles) { - var vertices = verticesArray; - var convexPolygons = this.convexPolygons; - this.polygonPool.freeAll(convexPolygons); - convexPolygons.length = 0; - var convexPolygonsIndices = this.convexPolygonsIndices; - this.polygonIndicesPool.freeAll(convexPolygonsIndices); - convexPolygonsIndices.length = 0; - var polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - var polygon = this.polygonPool.obtain(); - polygon.length = 0; - var fanBaseIndex = -1, lastWinding = 0; - for (var i = 0, n = triangles.length; i < n; i += 3) { - var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; - var x1 = vertices[t1], y1 = vertices[t1 + 1]; - var x2 = vertices[t2], y2 = vertices[t2 + 1]; - var x3 = vertices[t3], y3 = vertices[t3 + 1]; - var merged = false; - if (fanBaseIndex == t1) { - var o = polygon.length - 4; - var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3); - var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]); - if (winding1 == lastWinding && winding2 == lastWinding) { - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(t3); - merged = true; - } - } - if (!merged) { - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - else { - this.polygonPool.free(polygon); - this.polygonIndicesPool.free(polygonIndices); - } - polygon = this.polygonPool.obtain(); - polygon.length = 0; - polygon.push(x1); - polygon.push(y1); - polygon.push(x2); - polygon.push(y2); - polygon.push(x3); - polygon.push(y3); - polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - polygonIndices.push(t1); - polygonIndices.push(t2); - polygonIndices.push(t3); - lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3); - fanBaseIndex = t1; - } - } - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - for (var i = 0, n = convexPolygons.length; i < n; i++) { - polygonIndices = convexPolygonsIndices[i]; - if (polygonIndices.length == 0) - continue; - var firstIndex = polygonIndices[0]; - var lastIndex = polygonIndices[polygonIndices.length - 1]; - polygon = convexPolygons[i]; - var o = polygon.length - 4; - var prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; - var prevX = polygon[o + 2], prevY = polygon[o + 3]; - var firstX = polygon[0], firstY = polygon[1]; - var secondX = polygon[2], secondY = polygon[3]; - var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); - for (var ii = 0; ii < n; ii++) { - if (ii == i) - continue; - var otherIndices = convexPolygonsIndices[ii]; - if (otherIndices.length != 3) - continue; - var otherFirstIndex = otherIndices[0]; - var otherSecondIndex = otherIndices[1]; - var otherLastIndex = otherIndices[2]; - var otherPoly = convexPolygons[ii]; - var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; - if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) - continue; - var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3); - var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY); - if (winding1 == winding && winding2 == winding) { - otherPoly.length = 0; - otherIndices.length = 0; - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(otherLastIndex); - prevPrevX = prevX; - prevPrevY = prevY; - prevX = x3; - prevY = y3; - ii = 0; - } - } - } - for (var i = convexPolygons.length - 1; i >= 0; i--) { - polygon = convexPolygons[i]; - if (polygon.length == 0) { - convexPolygons.splice(i, 1); - this.polygonPool.free(polygon); - polygonIndices = convexPolygonsIndices[i]; - convexPolygonsIndices.splice(i, 1); - this.polygonIndicesPool.free(polygonIndices); - } - } - return convexPolygons; - }; - Triangulator.isConcave = function (index, vertexCount, vertices, indices) { - var previous = indices[(vertexCount + index - 1) % vertexCount] << 1; - var current = indices[index] << 1; - var next = indices[(index + 1) % vertexCount] << 1; - return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]); - }; - Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) { - return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; - }; - Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) { - var px = p2x - p1x, py = p2y - p1y; - return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1; - }; - return Triangulator; - }()); - spine.Triangulator = Triangulator; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IntSet = (function () { - function IntSet() { - this.array = new Array(); - } - IntSet.prototype.add = function (value) { - var contains = this.contains(value); - this.array[value | 0] = value | 0; - return !contains; - }; - IntSet.prototype.contains = function (value) { - return this.array[value | 0] != undefined; - }; - IntSet.prototype.remove = function (value) { - this.array[value | 0] = undefined; - }; - IntSet.prototype.clear = function () { - this.array.length = 0; - }; - return IntSet; - }()); - spine.IntSet = IntSet; - var StringSet = (function () { - function StringSet() { - this.entries = {}; - this.size = 0; - } - StringSet.prototype.add = function (value) { - var contains = this.entries[value]; - this.entries[value] = true; - if (!contains) { - this.size++; - return true; - } - return false; - }; - StringSet.prototype.addAll = function (values) { - var oldSize = this.size; - for (var i = 0, n = values.length; i < n; i++) - this.add(values[i]); - return oldSize != this.size; - }; - StringSet.prototype.contains = function (value) { - return this.entries[value]; - }; - StringSet.prototype.clear = function () { - this.entries = {}; - this.size = 0; - }; - return StringSet; - }()); - spine.StringSet = StringSet; - var Color = (function () { - function Color(r, g, b, a) { - if (r === void 0) { r = 0; } - if (g === void 0) { g = 0; } - if (b === void 0) { b = 0; } - if (a === void 0) { a = 0; } - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } - Color.prototype.set = function (r, g, b, a) { - this.r = r; - this.g = g; - this.b = b; - this.a = a; - return this.clamp(); - }; - Color.prototype.setFromColor = function (c) { - this.r = c.r; - this.g = c.g; - this.b = c.b; - this.a = c.a; - return this; - }; - Color.prototype.setFromString = function (hex) { - hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; - this.r = parseInt(hex.substr(0, 2), 16) / 255; - this.g = parseInt(hex.substr(2, 2), 16) / 255; - this.b = parseInt(hex.substr(4, 2), 16) / 255; - this.a = hex.length != 8 ? 1 : parseInt(hex.substr(6, 2), 16) / 255; - return this; - }; - Color.prototype.add = function (r, g, b, a) { - this.r += r; - this.g += g; - this.b += b; - this.a += a; - return this.clamp(); - }; - Color.prototype.clamp = function () { - if (this.r < 0) - this.r = 0; - else if (this.r > 1) - this.r = 1; - if (this.g < 0) - this.g = 0; - else if (this.g > 1) - this.g = 1; - if (this.b < 0) - this.b = 0; - else if (this.b > 1) - this.b = 1; - if (this.a < 0) - this.a = 0; - else if (this.a > 1) - this.a = 1; - return this; - }; - Color.rgba8888ToColor = function (color, value) { - color.r = ((value & 0xff000000) >>> 24) / 255; - color.g = ((value & 0x00ff0000) >>> 16) / 255; - color.b = ((value & 0x0000ff00) >>> 8) / 255; - color.a = ((value & 0x000000ff)) / 255; - }; - Color.rgb888ToColor = function (color, value) { - color.r = ((value & 0x00ff0000) >>> 16) / 255; - color.g = ((value & 0x0000ff00) >>> 8) / 255; - color.b = ((value & 0x000000ff)) / 255; - }; - Color.fromString = function (hex) { - return new Color().setFromString(hex); - }; - Color.WHITE = new Color(1, 1, 1, 1); - Color.RED = new Color(1, 0, 0, 1); - Color.GREEN = new Color(0, 1, 0, 1); - Color.BLUE = new Color(0, 0, 1, 1); - Color.MAGENTA = new Color(1, 0, 1, 1); - return Color; - }()); - spine.Color = Color; - var MathUtils = (function () { - function MathUtils() { - } - MathUtils.clamp = function (value, min, max) { - if (value < min) - return min; - if (value > max) - return max; - return value; - }; - MathUtils.cosDeg = function (degrees) { - return Math.cos(degrees * MathUtils.degRad); - }; - MathUtils.sinDeg = function (degrees) { - return Math.sin(degrees * MathUtils.degRad); - }; - MathUtils.signum = function (value) { - return value > 0 ? 1 : value < 0 ? -1 : 0; - }; - MathUtils.toInt = function (x) { - return x > 0 ? Math.floor(x) : Math.ceil(x); - }; - MathUtils.cbrt = function (x) { - var y = Math.pow(Math.abs(x), 1 / 3); - return x < 0 ? -y : y; - }; - MathUtils.randomTriangular = function (min, max) { - return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5); - }; - MathUtils.randomTriangularWith = function (min, max, mode) { - var u = Math.random(); - var d = max - min; - if (u <= (mode - min) / d) - return min + Math.sqrt(u * d * (mode - min)); - return max - Math.sqrt((1 - u) * d * (max - mode)); - }; - MathUtils.PI = 3.1415927; - MathUtils.PI2 = MathUtils.PI * 2; - MathUtils.radiansToDegrees = 180 / MathUtils.PI; - MathUtils.radDeg = MathUtils.radiansToDegrees; - MathUtils.degreesToRadians = MathUtils.PI / 180; - MathUtils.degRad = MathUtils.degreesToRadians; - return MathUtils; - }()); - spine.MathUtils = MathUtils; - var Interpolation = (function () { - function Interpolation() { - } - Interpolation.prototype.apply = function (start, end, a) { - return start + (end - start) * this.applyInternal(a); - }; - return Interpolation; - }()); - spine.Interpolation = Interpolation; - var Pow = (function (_super) { - __extends(Pow, _super); - function Pow(power) { - var _this = _super.call(this) || this; - _this.power = 2; - _this.power = power; - return _this; - } - Pow.prototype.applyInternal = function (a) { - if (a <= 0.5) - return Math.pow(a * 2, this.power) / 2; - return Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1; - }; - return Pow; - }(Interpolation)); - spine.Pow = Pow; - var PowOut = (function (_super) { - __extends(PowOut, _super); - function PowOut(power) { - return _super.call(this, power) || this; - } - PowOut.prototype.applyInternal = function (a) { - return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1; - }; - return PowOut; - }(Pow)); - spine.PowOut = PowOut; - var Utils = (function () { - function Utils() { - } - Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { - for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { - dest[j] = source[i]; - } - }; - Utils.arrayFill = function (array, fromIndex, toIndex, value) { - for (var i = fromIndex; i < toIndex; i++) - array[i] = value; - }; - Utils.setArraySize = function (array, size, value) { - if (value === void 0) { value = 0; } - var oldSize = array.length; - if (oldSize == size) - return array; - array.length = size; - if (oldSize < size) { - for (var i = oldSize; i < size; i++) - array[i] = value; - } - return array; - }; - Utils.ensureArrayCapacity = function (array, size, value) { - if (value === void 0) { value = 0; } - if (array.length >= size) - return array; - return Utils.setArraySize(array, size, value); - }; - Utils.newArray = function (size, defaultValue) { - var array = new Array(size); - for (var i = 0; i < size; i++) - array[i] = defaultValue; - return array; - }; - Utils.newFloatArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) - return new Float32Array(size); - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.newShortArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) - return new Int16Array(size); - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.toFloatArray = function (array) { - return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; - }; - Utils.toSinglePrecision = function (value) { - return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; - }; - Utils.webkit602BugfixHelper = function (alpha, blend) { - }; - Utils.contains = function (array, element, identity) { - if (identity === void 0) { identity = true; } - for (var i = 0; i < array.length; i++) - if (array[i] == element) - return true; - return false; - }; - Utils.enumValue = function (type, name) { - return type[name[0].toUpperCase() + name.slice(1)]; - }; - Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; - return Utils; - }()); - spine.Utils = Utils; - var DebugUtils = (function () { - function DebugUtils() { - } - DebugUtils.logBones = function (skeleton) { - for (var i = 0; i < skeleton.bones.length; i++) { - var bone = skeleton.bones[i]; - console.log(bone.data.name + ", " + bone.a + ", " + bone.b + ", " + bone.c + ", " + bone.d + ", " + bone.worldX + ", " + bone.worldY); - } - }; - return DebugUtils; - }()); - spine.DebugUtils = DebugUtils; - var Pool = (function () { - function Pool(instantiator) { - this.items = new Array(); - this.instantiator = instantiator; - } - Pool.prototype.obtain = function () { - return this.items.length > 0 ? this.items.pop() : this.instantiator(); - }; - Pool.prototype.free = function (item) { - if (item.reset) - item.reset(); - this.items.push(item); - }; - Pool.prototype.freeAll = function (items) { - for (var i = 0; i < items.length; i++) - this.free(items[i]); - }; - Pool.prototype.clear = function () { - this.items.length = 0; - }; - return Pool; - }()); - spine.Pool = Pool; - var Vector2 = (function () { - function Vector2(x, y) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - this.x = x; - this.y = y; - } - Vector2.prototype.set = function (x, y) { - this.x = x; - this.y = y; - return this; - }; - Vector2.prototype.length = function () { - var x = this.x; - var y = this.y; - return Math.sqrt(x * x + y * y); - }; - Vector2.prototype.normalize = function () { - var len = this.length(); - if (len != 0) { - this.x /= len; - this.y /= len; - } - return this; - }; - return Vector2; - }()); - spine.Vector2 = Vector2; - var TimeKeeper = (function () { - function TimeKeeper() { - this.maxDelta = 0.064; - this.framesPerSecond = 0; - this.delta = 0; - this.totalTime = 0; - this.lastTime = Date.now() / 1000; - this.frameCount = 0; - this.frameTime = 0; - } - TimeKeeper.prototype.update = function () { - var now = Date.now() / 1000; - this.delta = now - this.lastTime; - this.frameTime += this.delta; - this.totalTime += this.delta; - if (this.delta > this.maxDelta) - this.delta = this.maxDelta; - this.lastTime = now; - this.frameCount++; - if (this.frameTime > 1) { - this.framesPerSecond = this.frameCount / this.frameTime; - this.frameTime = 0; - this.frameCount = 0; - } - }; - return TimeKeeper; - }()); - spine.TimeKeeper = TimeKeeper; - var WindowedMean = (function () { - function WindowedMean(windowSize) { - if (windowSize === void 0) { windowSize = 32; } - this.addedValues = 0; - this.lastValue = 0; - this.mean = 0; - this.dirty = true; - this.values = new Array(windowSize); - } - WindowedMean.prototype.hasEnoughData = function () { - return this.addedValues >= this.values.length; - }; - WindowedMean.prototype.addValue = function (value) { - if (this.addedValues < this.values.length) - this.addedValues++; - this.values[this.lastValue++] = value; - if (this.lastValue > this.values.length - 1) - this.lastValue = 0; - this.dirty = true; - }; - WindowedMean.prototype.getMean = function () { - if (this.hasEnoughData()) { - if (this.dirty) { - var mean = 0; - for (var i = 0; i < this.values.length; i++) - mean += this.values[i]; - this.mean = mean / this.values.length; - this.dirty = false; - } - return this.mean; - } - return 0; - }; - return WindowedMean; - }()); - spine.WindowedMean = WindowedMean; -})(spine || (spine = {})); -(function () { - if (!Math.fround) { - Math.fround = (function (array) { - return function (x) { - return array[0] = x, array[0]; - }; - })(new Float32Array(1)); - } -})(); -var spine; -(function (spine) { - var Attachment = (function () { - function Attachment(name) { - if (!name) - throw new Error("name cannot be null."); - this.name = name; - } - return Attachment; - }()); - spine.Attachment = Attachment; - var VertexAttachment = (function (_super) { - __extends(VertexAttachment, _super); - function VertexAttachment(name) { - var _this = _super.call(this, name) || this; - _this.id = VertexAttachment.nextID++; - _this.worldVerticesLength = 0; - _this.deformAttachment = _this; - return _this; - } - VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) { - count = offset + (count >> 1) * stride; - var skeleton = slot.bone.skeleton; - var deformArray = slot.deform; - var vertices = this.vertices; - var bones = this.bones; - if (!bones) { - if (deformArray.length > 0) - vertices = deformArray; - var bone = slot.bone; - var x = bone.worldX; - var y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) { - var vx = vertices[v_1], vy = vertices[v_1 + 1]; - worldVertices[w] = vx * a + vy * b + x; - worldVertices[w + 1] = vx * c + vy * d + y; - } - return; - } - var v = 0, skip = 0; - for (var i = 0; i < start; i += 2) { - var n = bones[v]; - v += n + 1; - skip += n; - } - var skeletonBones = skeleton.bones; - if (deformArray.length == 0) { - for (var w = offset, b = skip * 3; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - else { - var deform = deformArray; - for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3, f += 2) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - }; - VertexAttachment.prototype.copyTo = function (attachment) { - if (this.bones) { - attachment.bones = new Array(this.bones.length); - spine.Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length); - } - else - attachment.bones = null; - if (this.vertices) { - attachment.vertices = spine.Utils.newFloatArray(this.vertices.length); - spine.Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length); - } - else - attachment.vertices = null; - attachment.worldVerticesLength = this.worldVerticesLength; - attachment.deformAttachment = this.deformAttachment; - }; - VertexAttachment.nextID = 0; - return VertexAttachment; - }(Attachment)); - spine.VertexAttachment = VertexAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoundingBoxAttachment = (function (_super) { - __extends(BoundingBoxAttachment, _super); - function BoundingBoxAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - BoundingBoxAttachment.prototype.copy = function () { - var copy = new BoundingBoxAttachment(this.name); - this.copyTo(copy); - copy.color.setFromColor(this.color); - return copy; - }; - return BoundingBoxAttachment; - }(spine.VertexAttachment)); - spine.BoundingBoxAttachment = BoundingBoxAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var ClippingAttachment = (function (_super) { - __extends(ClippingAttachment, _super); - function ClippingAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.2275, 0.2275, 0.8078, 1); - return _this; - } - ClippingAttachment.prototype.copy = function () { - var copy = new ClippingAttachment(this.name); - this.copyTo(copy); - copy.endSlot = this.endSlot; - copy.color.setFromColor(this.color); - return copy; - }; - return ClippingAttachment; - }(spine.VertexAttachment)); - spine.ClippingAttachment = ClippingAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var MeshAttachment = (function (_super) { - __extends(MeshAttachment, _super); - function MeshAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - _this.tempColor = new spine.Color(0, 0, 0, 0); - return _this; - } - MeshAttachment.prototype.updateUVs = function () { - var regionUVs = this.regionUVs; - if (!this.uvs || this.uvs.length != regionUVs.length) - this.uvs = spine.Utils.newFloatArray(regionUVs.length); - var uvs = this.uvs; - var n = this.uvs.length; - var u = this.region.u, v = this.region.v, width = 0, height = 0; - if (this.region instanceof spine.TextureAtlasRegion) { - var region = this.region, image = region.page.texture.getImage(); - var textureWidth = image.width, textureHeight = image.height; - switch (region.degrees) { - case 90: - u -= (region.originalHeight - region.offsetY - region.height) / textureWidth; - v -= (region.originalWidth - region.offsetX - region.width) / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i + 1] * width; - uvs[i + 1] = v + (1 - regionUVs[i]) * height; - } - return; - case 180: - u -= (region.originalWidth - region.offsetX - region.width) / textureWidth; - v -= region.offsetY / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i]) * width; - uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height; - } - return; - case 270: - u -= region.offsetY / textureWidth; - v -= region.offsetX / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i + 1]) * width; - uvs[i + 1] = v + regionUVs[i] * height; - } - return; - } - u -= region.offsetX / textureWidth; - v -= (region.originalHeight - region.offsetY - region.height) / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - } - else if (!this.region) { - u = v = 0; - width = height = 1; - } - else { - width = this.region.u2 - u; - height = this.region.v2 - v; - } - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i] * width; - uvs[i + 1] = v + regionUVs[i + 1] * height; - } - }; - MeshAttachment.prototype.getParentMesh = function () { - return this.parentMesh; - }; - MeshAttachment.prototype.setParentMesh = function (parentMesh) { - this.parentMesh = parentMesh; - if (parentMesh) { - this.bones = parentMesh.bones; - this.vertices = parentMesh.vertices; - this.worldVerticesLength = parentMesh.worldVerticesLength; - this.regionUVs = parentMesh.regionUVs; - this.triangles = parentMesh.triangles; - this.hullLength = parentMesh.hullLength; - this.worldVerticesLength = parentMesh.worldVerticesLength; - } - }; - MeshAttachment.prototype.copy = function () { - if (this.parentMesh) - return this.newLinkedMesh(); - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - this.copyTo(copy); - copy.regionUVs = new Array(this.regionUVs.length); - spine.Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length); - copy.uvs = new Array(this.uvs.length); - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length); - copy.triangles = new Array(this.triangles.length); - spine.Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); - copy.hullLength = this.hullLength; - if (this.edges) { - copy.edges = new Array(this.edges.length); - spine.Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); - } - copy.width = this.width; - copy.height = this.height; - return copy; - }; - MeshAttachment.prototype.newLinkedMesh = function () { - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - copy.deformAttachment = this.deformAttachment; - copy.setParentMesh(this.parentMesh ? this.parentMesh : this); - copy.updateUVs(); - return copy; - }; - return MeshAttachment; - }(spine.VertexAttachment)); - spine.MeshAttachment = MeshAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathAttachment = (function (_super) { - __extends(PathAttachment, _super); - function PathAttachment(name) { - var _this = _super.call(this, name) || this; - _this.closed = false; - _this.constantSpeed = false; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - PathAttachment.prototype.copy = function () { - var copy = new PathAttachment(this.name); - this.copyTo(copy); - copy.lengths = new Array(this.lengths.length); - spine.Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length); - copy.closed = closed; - copy.constantSpeed = this.constantSpeed; - copy.color.setFromColor(this.color); - return copy; - }; - return PathAttachment; - }(spine.VertexAttachment)); - spine.PathAttachment = PathAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PointAttachment = (function (_super) { - __extends(PointAttachment, _super); - function PointAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.38, 0.94, 0, 1); - return _this; - } - PointAttachment.prototype.computeWorldPosition = function (bone, point) { - point.x = this.x * bone.a + this.y * bone.b + bone.worldX; - point.y = this.x * bone.c + this.y * bone.d + bone.worldY; - return point; - }; - PointAttachment.prototype.computeWorldRotation = function (bone) { - var cos = spine.MathUtils.cosDeg(this.rotation), sin = spine.MathUtils.sinDeg(this.rotation); - var x = cos * bone.a + sin * bone.b; - var y = cos * bone.c + sin * bone.d; - return Math.atan2(y, x) * spine.MathUtils.radDeg; - }; - PointAttachment.prototype.copy = function () { - var copy = new PointAttachment(this.name); - copy.x = this.x; - copy.y = this.y; - copy.rotation = this.rotation; - copy.color.setFromColor(this.color); - return copy; - }; - return PointAttachment; - }(spine.VertexAttachment)); - spine.PointAttachment = PointAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var RegionAttachment = (function (_super) { - __extends(RegionAttachment, _super); - function RegionAttachment(name) { - var _this = _super.call(this, name) || this; - _this.x = 0; - _this.y = 0; - _this.scaleX = 1; - _this.scaleY = 1; - _this.rotation = 0; - _this.width = 0; - _this.height = 0; - _this.color = new spine.Color(1, 1, 1, 1); - _this.offset = spine.Utils.newFloatArray(8); - _this.uvs = spine.Utils.newFloatArray(8); - _this.tempColor = new spine.Color(1, 1, 1, 1); - return _this; - } - RegionAttachment.prototype.updateOffset = function () { - var region = this.region; - var regionScaleX = this.width / this.region.originalWidth * this.scaleX; - var regionScaleY = this.height / this.region.originalHeight * this.scaleY; - var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; - var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; - var localX2 = localX + this.region.width * regionScaleX; - var localY2 = localY + this.region.height * regionScaleY; - var radians = this.rotation * Math.PI / 180; - var cos = Math.cos(radians); - var sin = Math.sin(radians); - var x = this.x, y = this.y; - var localXCos = localX * cos + x; - var localXSin = localX * sin; - var localYCos = localY * cos + y; - var localYSin = localY * sin; - var localX2Cos = localX2 * cos + x; - var localX2Sin = localX2 * sin; - var localY2Cos = localY2 * cos + y; - var localY2Sin = localY2 * sin; - var offset = this.offset; - offset[0] = localXCos - localYSin; - offset[1] = localYCos + localXSin; - offset[2] = localXCos - localY2Sin; - offset[3] = localY2Cos + localXSin; - offset[4] = localX2Cos - localY2Sin; - offset[5] = localY2Cos + localX2Sin; - offset[6] = localX2Cos - localYSin; - offset[7] = localYCos + localX2Sin; - }; - RegionAttachment.prototype.setRegion = function (region) { - this.region = region; - var uvs = this.uvs; - if (region.degrees == 90) { - uvs[2] = region.u; - uvs[3] = region.v2; - uvs[4] = region.u; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v; - uvs[0] = region.u2; - uvs[1] = region.v2; - } - else { - uvs[0] = region.u; - uvs[1] = region.v2; - uvs[2] = region.u; - uvs[3] = region.v; - uvs[4] = region.u2; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v2; - } - }; - RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) { - var vertexOffset = this.offset; - var x = bone.worldX, y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var offsetX = 0, offsetY = 0; - offsetX = vertexOffset[0]; - offsetY = vertexOffset[1]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[2]; - offsetY = vertexOffset[3]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[4]; - offsetY = vertexOffset[5]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[6]; - offsetY = vertexOffset[7]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - }; - RegionAttachment.prototype.copy = function () { - var copy = new RegionAttachment(this.name); - copy.region = this.region; - copy.rendererObject = this.rendererObject; - copy.path = this.path; - copy.x = this.x; - copy.y = this.y; - copy.scaleX = this.scaleX; - copy.scaleY = this.scaleY; - copy.rotation = this.rotation; - copy.width = this.width; - copy.height = this.height; - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8); - spine.Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8); - copy.color.setFromColor(this.color); - return copy; - }; - RegionAttachment.X1 = 0; - RegionAttachment.Y1 = 1; - RegionAttachment.C1R = 2; - RegionAttachment.C1G = 3; - RegionAttachment.C1B = 4; - RegionAttachment.C1A = 5; - RegionAttachment.U1 = 6; - RegionAttachment.V1 = 7; - RegionAttachment.X2 = 8; - RegionAttachment.Y2 = 9; - RegionAttachment.C2R = 10; - RegionAttachment.C2G = 11; - RegionAttachment.C2B = 12; - RegionAttachment.C2A = 13; - RegionAttachment.U2 = 14; - RegionAttachment.V2 = 15; - RegionAttachment.X3 = 16; - RegionAttachment.Y3 = 17; - RegionAttachment.C3R = 18; - RegionAttachment.C3G = 19; - RegionAttachment.C3B = 20; - RegionAttachment.C3A = 21; - RegionAttachment.U3 = 22; - RegionAttachment.V3 = 23; - RegionAttachment.X4 = 24; - RegionAttachment.Y4 = 25; - RegionAttachment.C4R = 26; - RegionAttachment.C4G = 27; - RegionAttachment.C4B = 28; - RegionAttachment.C4A = 29; - RegionAttachment.U4 = 30; - RegionAttachment.V4 = 31; - return RegionAttachment; - }(spine.Attachment)); - spine.RegionAttachment = RegionAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var JitterEffect = (function () { - function JitterEffect(jitterX, jitterY) { - this.jitterX = 0; - this.jitterY = 0; - this.jitterX = jitterX; - this.jitterY = jitterY; - } - JitterEffect.prototype.begin = function (skeleton) { - }; - JitterEffect.prototype.transform = function (position, uv, light, dark) { - position.x += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - position.y += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - }; - JitterEffect.prototype.end = function () { - }; - return JitterEffect; - }()); - spine.JitterEffect = JitterEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SwirlEffect = (function () { - function SwirlEffect(radius) { - this.centerX = 0; - this.centerY = 0; - this.radius = 0; - this.angle = 0; - this.worldX = 0; - this.worldY = 0; - this.radius = radius; - } - SwirlEffect.prototype.begin = function (skeleton) { - this.worldX = skeleton.x + this.centerX; - this.worldY = skeleton.y + this.centerY; - }; - SwirlEffect.prototype.transform = function (position, uv, light, dark) { - var radAngle = this.angle * spine.MathUtils.degreesToRadians; - var x = position.x - this.worldX; - var y = position.y - this.worldY; - var dist = Math.sqrt(x * x + y * y); - if (dist < this.radius) { - var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius); - var cos = Math.cos(theta); - var sin = Math.sin(theta); - position.x = cos * x - sin * y + this.worldX; - position.y = sin * x + cos * y + this.worldY; - } - }; - SwirlEffect.prototype.end = function () { - }; - SwirlEffect.interpolation = new spine.PowOut(2); - return SwirlEffect; - }()); - spine.SwirlEffect = SwirlEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var canvas; - (function (canvas) { - var AssetManager = (function (_super) { - __extends(AssetManager, _super); - function AssetManager(pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - return _super.call(this, function (image) { return new spine.canvas.CanvasTexture(image); }, pathPrefix, downloader) || this; - } - return AssetManager; - }(spine.AssetManager)); - canvas.AssetManager = AssetManager; - })(canvas = spine.canvas || (spine.canvas = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var canvas; - (function (canvas) { - var CanvasTexture = (function (_super) { - __extends(CanvasTexture, _super); - function CanvasTexture(image) { - return _super.call(this, image) || this; - } - CanvasTexture.prototype.setFilters = function (minFilter, magFilter) { }; - CanvasTexture.prototype.setWraps = function (uWrap, vWrap) { }; - CanvasTexture.prototype.dispose = function () { }; - return CanvasTexture; - }(spine.Texture)); - canvas.CanvasTexture = CanvasTexture; - })(canvas = spine.canvas || (spine.canvas = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var canvas; - (function (canvas) { - var SkeletonRenderer = (function () { - function SkeletonRenderer(context) { - this.triangleRendering = false; - this.debugRendering = false; - this.vertices = spine.Utils.newFloatArray(8 * 1024); - this.tempColor = new spine.Color(); - this.ctx = context; - } - SkeletonRenderer.prototype.draw = function (skeleton) { - if (this.triangleRendering) - this.drawTriangles(skeleton); - else - this.drawImages(skeleton); - }; - SkeletonRenderer.prototype.drawImages = function (skeleton) { - var ctx = this.ctx; - var color = this.tempColor; - var skeletonColor = skeleton.color; - var drawOrder = skeleton.drawOrder; - if (this.debugRendering) - ctx.strokeStyle = "green"; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - var bone = slot.bone; - if (!bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.RegionAttachment)) - continue; - var region = attachment.region; - var image = region.page.texture.getImage(); - var slotColor = slot.color; - var regionColor = attachment.color; - color.set(skeletonColor.r * slotColor.r * regionColor.r, skeletonColor.g * slotColor.g * regionColor.g, skeletonColor.b * slotColor.b * regionColor.b, skeletonColor.a * slotColor.a * regionColor.a); - ctx.save(); - ctx.transform(bone.a, bone.c, bone.b, bone.d, bone.worldX, bone.worldY); - ctx.translate(attachment.offset[0], attachment.offset[1]); - ctx.rotate(attachment.rotation * Math.PI / 180); - var atlasScale = attachment.width / region.originalWidth; - ctx.scale(atlasScale * attachment.scaleX, atlasScale * attachment.scaleY); - var w = region.width, h = region.height; - ctx.translate(w / 2, h / 2); - if (attachment.region.degrees == 90) { - var t = w; - w = h; - h = t; - ctx.rotate(-Math.PI / 2); - } - ctx.scale(1, -1); - ctx.translate(-w / 2, -h / 2); - if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) { - ctx.globalAlpha = color.a; - } - ctx.drawImage(image, region.x, region.y, w, h, 0, 0, w, h); - if (this.debugRendering) - ctx.strokeRect(0, 0, w, h); - ctx.restore(); - } - }; - SkeletonRenderer.prototype.drawTriangles = function (skeleton) { - var ctx = this.ctx; - var color = this.tempColor; - var skeletonColor = skeleton.color; - var drawOrder = skeleton.drawOrder; - var blendMode = null; - var vertices = this.vertices; - var triangles = null; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - var attachment = slot.getAttachment(); - var texture = void 0; - var region = void 0; - if (attachment instanceof spine.RegionAttachment) { - var regionAttachment = attachment; - vertices = this.computeRegionVertices(slot, regionAttachment, false); - triangles = SkeletonRenderer.QUAD_TRIANGLES; - region = regionAttachment.region; - texture = region.page.texture.getImage(); - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - vertices = this.computeMeshVertices(slot, mesh, false); - triangles = mesh.triangles; - texture = mesh.region.renderObject.page.texture.getImage(); - } - else - continue; - if (texture) { - if (slot.data.blendMode != blendMode) - blendMode = slot.data.blendMode; - var slotColor = slot.color; - var attachmentColor = attachment.color; - color.set(skeletonColor.r * slotColor.r * attachmentColor.r, skeletonColor.g * slotColor.g * attachmentColor.g, skeletonColor.b * slotColor.b * attachmentColor.b, skeletonColor.a * slotColor.a * attachmentColor.a); - if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) { - ctx.globalAlpha = color.a; - } - for (var j = 0; j < triangles.length; j += 3) { - var t1 = triangles[j] * 8, t2 = triangles[j + 1] * 8, t3 = triangles[j + 2] * 8; - var x0 = vertices[t1], y0 = vertices[t1 + 1], u0 = vertices[t1 + 6], v0 = vertices[t1 + 7]; - var x1 = vertices[t2], y1 = vertices[t2 + 1], u1 = vertices[t2 + 6], v1 = vertices[t2 + 7]; - var x2 = vertices[t3], y2 = vertices[t3 + 1], u2 = vertices[t3 + 6], v2 = vertices[t3 + 7]; - this.drawTriangle(texture, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2); - if (this.debugRendering) { - ctx.strokeStyle = "green"; - ctx.beginPath(); - ctx.moveTo(x0, y0); - ctx.lineTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.lineTo(x0, y0); - ctx.stroke(); - } - } - } - } - this.ctx.globalAlpha = 1; - }; - SkeletonRenderer.prototype.drawTriangle = function (img, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2) { - var ctx = this.ctx; - u0 *= img.width; - v0 *= img.height; - u1 *= img.width; - v1 *= img.height; - u2 *= img.width; - v2 *= img.height; - ctx.beginPath(); - ctx.moveTo(x0, y0); - ctx.lineTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.closePath(); - x1 -= x0; - y1 -= y0; - x2 -= x0; - y2 -= y0; - u1 -= u0; - v1 -= v0; - u2 -= u0; - v2 -= v0; - var det = 1 / (u1 * v2 - u2 * v1), a = (v2 * x1 - v1 * x2) * det, b = (v2 * y1 - v1 * y2) * det, c = (u1 * x2 - u2 * x1) * det, d = (u1 * y2 - u2 * y1) * det, e = x0 - a * u0 - c * v0, f = y0 - b * u0 - d * v0; - ctx.save(); - ctx.transform(a, b, c, d, e, f); - ctx.clip(); - ctx.drawImage(img, 0, 0); - ctx.restore(); - }; - SkeletonRenderer.prototype.computeRegionVertices = function (slot, region, pma) { - var skeletonColor = slot.bone.skeleton.color; - var slotColor = slot.color; - var regionColor = region.color; - var alpha = skeletonColor.a * slotColor.a * regionColor.a; - var multiplier = pma ? alpha : 1; - var color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); - region.computeWorldVertices(slot.bone, this.vertices, 0, SkeletonRenderer.VERTEX_SIZE); - var vertices = this.vertices; - var uvs = region.uvs; - vertices[spine.RegionAttachment.C1R] = color.r; - vertices[spine.RegionAttachment.C1G] = color.g; - vertices[spine.RegionAttachment.C1B] = color.b; - vertices[spine.RegionAttachment.C1A] = color.a; - vertices[spine.RegionAttachment.U1] = uvs[0]; - vertices[spine.RegionAttachment.V1] = uvs[1]; - vertices[spine.RegionAttachment.C2R] = color.r; - vertices[spine.RegionAttachment.C2G] = color.g; - vertices[spine.RegionAttachment.C2B] = color.b; - vertices[spine.RegionAttachment.C2A] = color.a; - vertices[spine.RegionAttachment.U2] = uvs[2]; - vertices[spine.RegionAttachment.V2] = uvs[3]; - vertices[spine.RegionAttachment.C3R] = color.r; - vertices[spine.RegionAttachment.C3G] = color.g; - vertices[spine.RegionAttachment.C3B] = color.b; - vertices[spine.RegionAttachment.C3A] = color.a; - vertices[spine.RegionAttachment.U3] = uvs[4]; - vertices[spine.RegionAttachment.V3] = uvs[5]; - vertices[spine.RegionAttachment.C4R] = color.r; - vertices[spine.RegionAttachment.C4G] = color.g; - vertices[spine.RegionAttachment.C4B] = color.b; - vertices[spine.RegionAttachment.C4A] = color.a; - vertices[spine.RegionAttachment.U4] = uvs[6]; - vertices[spine.RegionAttachment.V4] = uvs[7]; - return vertices; - }; - SkeletonRenderer.prototype.computeMeshVertices = function (slot, mesh, pma) { - var skeletonColor = slot.bone.skeleton.color; - var slotColor = slot.color; - var regionColor = mesh.color; - var alpha = skeletonColor.a * slotColor.a * regionColor.a; - var multiplier = pma ? alpha : 1; - var color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); - var vertexCount = mesh.worldVerticesLength / 2; - var vertices = this.vertices; - if (vertices.length < mesh.worldVerticesLength) - this.vertices = vertices = spine.Utils.newFloatArray(mesh.worldVerticesLength); - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, SkeletonRenderer.VERTEX_SIZE); - var uvs = mesh.uvs; - for (var i = 0, u = 0, v = 2; i < vertexCount; i++) { - vertices[v++] = color.r; - vertices[v++] = color.g; - vertices[v++] = color.b; - vertices[v++] = color.a; - vertices[v++] = uvs[u++]; - vertices[v++] = uvs[u++]; - v += 2; - } - return vertices; - }; - SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - SkeletonRenderer.VERTEX_SIZE = 2 + 2 + 4; - return SkeletonRenderer; - }()); - canvas.SkeletonRenderer = SkeletonRenderer; - })(canvas = spine.canvas || (spine.canvas = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var AssetManager = (function (_super) { - __extends(AssetManager, _super); - function AssetManager(context, pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - return _super.call(this, function (image) { - return new spine.webgl.GLTexture(context, image); - }, pathPrefix, downloader) || this; - } - return AssetManager; - }(spine.AssetManager)); - webgl.AssetManager = AssetManager; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var OrthoCamera = (function () { - function OrthoCamera(viewportWidth, viewportHeight) { - this.position = new webgl.Vector3(0, 0, 0); - this.direction = new webgl.Vector3(0, 0, -1); - this.up = new webgl.Vector3(0, 1, 0); - this.near = 0; - this.far = 100; - this.zoom = 1; - this.viewportWidth = 0; - this.viewportHeight = 0; - this.projectionView = new webgl.Matrix4(); - this.inverseProjectionView = new webgl.Matrix4(); - this.projection = new webgl.Matrix4(); - this.view = new webgl.Matrix4(); - this.viewportWidth = viewportWidth; - this.viewportHeight = viewportHeight; - this.update(); - } - OrthoCamera.prototype.update = function () { - var projection = this.projection; - var view = this.view; - var projectionView = this.projectionView; - var inverseProjectionView = this.inverseProjectionView; - var zoom = this.zoom, viewportWidth = this.viewportWidth, viewportHeight = this.viewportHeight; - projection.ortho(zoom * (-viewportWidth / 2), zoom * (viewportWidth / 2), zoom * (-viewportHeight / 2), zoom * (viewportHeight / 2), this.near, this.far); - view.lookAt(this.position, this.direction, this.up); - projectionView.set(projection.values); - projectionView.multiply(view); - inverseProjectionView.set(projectionView.values).invert(); - }; - OrthoCamera.prototype.screenToWorld = function (screenCoords, screenWidth, screenHeight) { - var x = screenCoords.x, y = screenHeight - screenCoords.y - 1; - screenCoords.x = (2 * x) / screenWidth - 1; - screenCoords.y = (2 * y) / screenHeight - 1; - screenCoords.z = (2 * screenCoords.z) - 1; - screenCoords.project(this.inverseProjectionView); - return screenCoords; - }; - OrthoCamera.prototype.worldToScreen = function (worldCoords, screenWidth, screenHeight) { - worldCoords.project(this.projectionView); - worldCoords.x = screenWidth * (worldCoords.x + 1) / 2; - worldCoords.y = screenHeight * (worldCoords.y + 1) / 2; - worldCoords.z = (worldCoords.z + 1) / 2; - return worldCoords; - }; - OrthoCamera.prototype.setViewport = function (viewportWidth, viewportHeight) { - this.viewportWidth = viewportWidth; - this.viewportHeight = viewportHeight; - }; - return OrthoCamera; - }()); - webgl.OrthoCamera = OrthoCamera; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var GLTexture = (function (_super) { - __extends(GLTexture, _super); - function GLTexture(context, image, useMipMaps) { - if (useMipMaps === void 0) { useMipMaps = false; } - var _this = _super.call(this, image) || this; - _this.texture = null; - _this.boundUnit = 0; - _this.useMipMaps = false; - _this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - _this.useMipMaps = useMipMaps; - _this.restore(); - _this.context.addRestorable(_this); - return _this; - } - GLTexture.prototype.setFilters = function (minFilter, magFilter) { - var gl = this.context.gl; - this.bind(); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, GLTexture.validateMagFilter(magFilter)); - }; - GLTexture.validateMagFilter = function (magFilter) { - switch (magFilter) { - case spine.TextureFilter.MipMap: - case spine.TextureFilter.MipMapLinearLinear: - case spine.TextureFilter.MipMapLinearNearest: - case spine.TextureFilter.MipMapNearestLinear: - case spine.TextureFilter.MipMapNearestNearest: - return spine.TextureFilter.Linear; - default: - return magFilter; - } - }; - GLTexture.prototype.setWraps = function (uWrap, vWrap) { - var gl = this.context.gl; - this.bind(); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); - }; - GLTexture.prototype.update = function (useMipMaps) { - var gl = this.context.gl; - if (!this.texture) - this.texture = this.context.gl.createTexture(); - this.bind(); - if (GLTexture.DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL) - gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - if (useMipMaps) - gl.generateMipmap(gl.TEXTURE_2D); - }; - GLTexture.prototype.restore = function () { - this.texture = null; - this.update(this.useMipMaps); - }; - GLTexture.prototype.bind = function (unit) { - if (unit === void 0) { unit = 0; } - var gl = this.context.gl; - this.boundUnit = unit; - gl.activeTexture(gl.TEXTURE0 + unit); - gl.bindTexture(gl.TEXTURE_2D, this.texture); - }; - GLTexture.prototype.unbind = function () { - var gl = this.context.gl; - gl.activeTexture(gl.TEXTURE0 + this.boundUnit); - gl.bindTexture(gl.TEXTURE_2D, null); - }; - GLTexture.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - gl.deleteTexture(this.texture); - }; - GLTexture.DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL = false; - return GLTexture; - }(spine.Texture)); - webgl.GLTexture = GLTexture; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Input = (function () { - function Input(element) { - this.lastX = 0; - this.lastY = 0; - this.buttonDown = false; - this.currTouch = null; - this.listeners = new Array(); - this.touchesPool = new spine.Pool(function () { - return new spine.webgl.Touch(0, 0, 0); - }); - this.element = element; - this.setupCallbacks(element); - } - Input.prototype.setupCallbacks = function (element) { - var _this = this; - var mouseDown = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) - if (listeners[i].down) - listeners[i].down(x, y); - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = true; - document.addEventListener("mousemove", mouseMove); - document.addEventListener("mouseup", mouseUp); - } - }; - var mouseMove = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) { - if (_this.buttonDown) { - if (listeners[i].dragged) - listeners[i].dragged(x, y); - } - else { - if (listeners[i].moved) - listeners[i].moved(x, y); - } - } - _this.lastX = x; - _this.lastY = y; - } - }; - var mouseUp = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) - if (listeners[i].up) - listeners[i].up(x, y); - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - document.removeEventListener("mousemove", mouseMove); - document.removeEventListener("mouseup", mouseUp); - } - }; - element.addEventListener("mousedown", mouseDown, true); - element.addEventListener("mousemove", mouseMove, true); - element.addEventListener("mouseup", mouseUp, true); - element.addEventListener("touchstart", function (ev) { - if (!_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - var rect = element.getBoundingClientRect(); - var x = touch.clientX - rect.left; - var y = touch.clientY - rect.top; - _this.currTouch = _this.touchesPool.obtain(); - _this.currTouch.identifier = touch.identifier; - _this.currTouch.x = x; - _this.currTouch.y = y; - break; - } - var listeners = _this.listeners; - for (var i_17 = 0; i_17 < listeners.length; i_17++) { - if (listeners[i_17].down) - listeners[i_17].down(_this.currTouch.x, _this.currTouch.y); - } - _this.lastX = _this.currTouch.x; - _this.lastY = _this.currTouch.y; - _this.buttonDown = true; - } - ev.preventDefault(); - }, false); - element.addEventListener("touchend", function (ev) { - if (_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = _this.currTouch.x = touch.clientX - rect.left; - var y = _this.currTouch.y = touch.clientY - rect.top; - _this.touchesPool.free(_this.currTouch); - var listeners = _this.listeners; - for (var i_18 = 0; i_18 < listeners.length; i_18++) { - if (listeners[i_18].up) - listeners[i_18].up(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - _this.currTouch = null; - break; - } - } - } - ev.preventDefault(); - }, false); - element.addEventListener("touchcancel", function (ev) { - if (_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = _this.currTouch.x = touch.clientX - rect.left; - var y = _this.currTouch.y = touch.clientY - rect.top; - _this.touchesPool.free(_this.currTouch); - var listeners = _this.listeners; - for (var i_19 = 0; i_19 < listeners.length; i_19++) { - if (listeners[i_19].up) - listeners[i_19].up(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - _this.currTouch = null; - break; - } - } - } - ev.preventDefault(); - }, false); - element.addEventListener("touchmove", function (ev) { - if (_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = touch.clientX - rect.left; - var y = touch.clientY - rect.top; - var listeners = _this.listeners; - for (var i_20 = 0; i_20 < listeners.length; i_20++) { - if (listeners[i_20].dragged) - listeners[i_20].dragged(x, y); - } - _this.lastX = _this.currTouch.x = x; - _this.lastY = _this.currTouch.y = y; - break; - } - } - } - ev.preventDefault(); - }, false); - }; - Input.prototype.addListener = function (listener) { - this.listeners.push(listener); - }; - Input.prototype.removeListener = function (listener) { - var idx = this.listeners.indexOf(listener); - if (idx > -1) { - this.listeners.splice(idx, 1); - } - }; - return Input; - }()); - webgl.Input = Input; - var Touch = (function () { - function Touch(identifier, x, y) { - this.identifier = identifier; - this.x = x; - this.y = y; - } - return Touch; - }()); - webgl.Touch = Touch; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var spinnerImage; - var logoImage; - var loaded = 0; - var FADE_IN = 1, FADE_OUT = 1; - var logoWidth = 165, logoHeight = 108, spinnerSize = 163; - var LoadingScreen = (function () { - function LoadingScreen(renderer) { - this.logo = null; - this.spinner = null; - this.angle = 0; - this.fadeOut = 0; - this.fadeIn = 0; - this.timeKeeper = new spine.TimeKeeper(); - this.backgroundColor = new spine.Color(0.135, 0.135, 0.135, 1); - this.tempColor = new spine.Color(); - this.renderer = renderer; - this.timeKeeper.maxDelta = 9; - if (!logoImage) { - var isSafari = navigator.userAgent.indexOf("Safari") > -1; - var onload_1 = function () { return loaded++; }; - logoImage = new Image(); - logoImage.src = SPINE_LOGO_DATA; - if (!isSafari) - logoImage.crossOrigin = "anonymous"; - logoImage.onload = onload_1; - spinnerImage = new Image(); - spinnerImage.src = SPINNER_DATA; - if (!isSafari) - spinnerImage.crossOrigin = "anonymous"; - spinnerImage.onload = onload_1; - } - } - LoadingScreen.prototype.draw = function (complete) { - if (complete === void 0) { complete = false; } - if (loaded < 2 || (complete && this.fadeOut > FADE_OUT)) - return; - this.timeKeeper.update(); - var a = Math.abs(Math.sin(this.timeKeeper.totalTime + 0.25)); - this.angle -= this.timeKeeper.delta * 200 * (1 + 1.5 * Math.pow(a, 5)); - var tempColor = this.tempColor; - var renderer = this.renderer; - var canvas = renderer.canvas; - var gl = renderer.context.gl; - renderer.resize(webgl.ResizeMode.Expand); - renderer.camera.position.set(canvas.width / 2, canvas.height / 2, 0); - renderer.batcher.setBlendMode(gl.ONE, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - if (complete) { - this.fadeOut += this.timeKeeper.delta * (this.timeKeeper.totalTime < 1 ? 2 : 1); - if (this.fadeOut > FADE_OUT) - return; - tempColor.setFromColor(this.backgroundColor); - a = 1 - this.fadeOut / FADE_OUT; - a = 1 - (a - 1) * (a - 1); - tempColor.a *= a; - if (tempColor.a > 0) { - renderer.camera.zoom = 1; - renderer.begin(); - renderer.quad(true, 0, 0, canvas.width, 0, canvas.width, canvas.height, 0, canvas.height, tempColor, tempColor, tempColor, tempColor); - renderer.end(); - } - } - else { - this.fadeIn += this.timeKeeper.delta; - if (this.backgroundColor.a > 0) { - gl.clearColor(this.backgroundColor.r, this.backgroundColor.g, this.backgroundColor.b, this.backgroundColor.a); - gl.clear(gl.COLOR_BUFFER_BIT); - } - a = 1; - } - a *= Math.min(this.fadeIn / FADE_IN, 1); - tempColor.set(a, a, a, a); - if (!this.logo) { - this.logo = new webgl.GLTexture(renderer.context, logoImage); - this.spinner = new webgl.GLTexture(renderer.context, spinnerImage); - } - renderer.camera.zoom = Math.max(1, spinnerSize / canvas.height); - renderer.begin(); - renderer.drawTexture(this.logo, (canvas.width - logoWidth) / 2, (canvas.height - logoHeight) / 2, logoWidth, logoHeight, tempColor); - renderer.drawTextureRotated(this.spinner, (canvas.width - spinnerSize) / 2, (canvas.height - spinnerSize) / 2, spinnerSize, spinnerSize, spinnerSize / 2, spinnerSize / 2, this.angle, tempColor); - renderer.end(); - }; - return LoadingScreen; - }()); - webgl.LoadingScreen = LoadingScreen; - var SPINNER_DATA = "data:image/png;base64,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"; - var SPINE_LOGO_DATA = "data:image/png;base64,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"; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - webgl.M00 = 0; - webgl.M01 = 4; - webgl.M02 = 8; - webgl.M03 = 12; - webgl.M10 = 1; - webgl.M11 = 5; - webgl.M12 = 9; - webgl.M13 = 13; - webgl.M20 = 2; - webgl.M21 = 6; - webgl.M22 = 10; - webgl.M23 = 14; - webgl.M30 = 3; - webgl.M31 = 7; - webgl.M32 = 11; - webgl.M33 = 15; - var Matrix4 = (function () { - function Matrix4() { - this.temp = new Float32Array(16); - this.values = new Float32Array(16); - var v = this.values; - v[webgl.M00] = 1; - v[webgl.M11] = 1; - v[webgl.M22] = 1; - v[webgl.M33] = 1; - } - Matrix4.prototype.set = function (values) { - this.values.set(values); - return this; - }; - Matrix4.prototype.transpose = function () { - var t = this.temp; - var v = this.values; - t[webgl.M00] = v[webgl.M00]; - t[webgl.M01] = v[webgl.M10]; - t[webgl.M02] = v[webgl.M20]; - t[webgl.M03] = v[webgl.M30]; - t[webgl.M10] = v[webgl.M01]; - t[webgl.M11] = v[webgl.M11]; - t[webgl.M12] = v[webgl.M21]; - t[webgl.M13] = v[webgl.M31]; - t[webgl.M20] = v[webgl.M02]; - t[webgl.M21] = v[webgl.M12]; - t[webgl.M22] = v[webgl.M22]; - t[webgl.M23] = v[webgl.M32]; - t[webgl.M30] = v[webgl.M03]; - t[webgl.M31] = v[webgl.M13]; - t[webgl.M32] = v[webgl.M23]; - t[webgl.M33] = v[webgl.M33]; - return this.set(t); - }; - Matrix4.prototype.identity = function () { - var v = this.values; - v[webgl.M00] = 1; - v[webgl.M01] = 0; - v[webgl.M02] = 0; - v[webgl.M03] = 0; - v[webgl.M10] = 0; - v[webgl.M11] = 1; - v[webgl.M12] = 0; - v[webgl.M13] = 0; - v[webgl.M20] = 0; - v[webgl.M21] = 0; - v[webgl.M22] = 1; - v[webgl.M23] = 0; - v[webgl.M30] = 0; - v[webgl.M31] = 0; - v[webgl.M32] = 0; - v[webgl.M33] = 1; - return this; - }; - Matrix4.prototype.invert = function () { - var v = this.values; - var t = this.temp; - var l_det = v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] - + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] - - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] - - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] - + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] - + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] - - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] - - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - if (l_det == 0) - throw new Error("non-invertible matrix"); - var inv_det = 1.0 / l_det; - t[webgl.M00] = v[webgl.M12] * v[webgl.M23] * v[webgl.M31] - v[webgl.M13] * v[webgl.M22] * v[webgl.M31] + v[webgl.M13] * v[webgl.M21] * v[webgl.M32] - - v[webgl.M11] * v[webgl.M23] * v[webgl.M32] - v[webgl.M12] * v[webgl.M21] * v[webgl.M33] + v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M01] = v[webgl.M03] * v[webgl.M22] * v[webgl.M31] - v[webgl.M02] * v[webgl.M23] * v[webgl.M31] - v[webgl.M03] * v[webgl.M21] * v[webgl.M32] - + v[webgl.M01] * v[webgl.M23] * v[webgl.M32] + v[webgl.M02] * v[webgl.M21] * v[webgl.M33] - v[webgl.M01] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M02] = v[webgl.M02] * v[webgl.M13] * v[webgl.M31] - v[webgl.M03] * v[webgl.M12] * v[webgl.M31] + v[webgl.M03] * v[webgl.M11] * v[webgl.M32] - - v[webgl.M01] * v[webgl.M13] * v[webgl.M32] - v[webgl.M02] * v[webgl.M11] * v[webgl.M33] + v[webgl.M01] * v[webgl.M12] * v[webgl.M33]; - t[webgl.M03] = v[webgl.M03] * v[webgl.M12] * v[webgl.M21] - v[webgl.M02] * v[webgl.M13] * v[webgl.M21] - v[webgl.M03] * v[webgl.M11] * v[webgl.M22] - + v[webgl.M01] * v[webgl.M13] * v[webgl.M22] + v[webgl.M02] * v[webgl.M11] * v[webgl.M23] - v[webgl.M01] * v[webgl.M12] * v[webgl.M23]; - t[webgl.M10] = v[webgl.M13] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M20] * v[webgl.M32] - + v[webgl.M10] * v[webgl.M23] * v[webgl.M32] + v[webgl.M12] * v[webgl.M20] * v[webgl.M33] - v[webgl.M10] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M11] = v[webgl.M02] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M22] * v[webgl.M30] + v[webgl.M03] * v[webgl.M20] * v[webgl.M32] - - v[webgl.M00] * v[webgl.M23] * v[webgl.M32] - v[webgl.M02] * v[webgl.M20] * v[webgl.M33] + v[webgl.M00] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M12] = v[webgl.M03] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M10] * v[webgl.M32] - + v[webgl.M00] * v[webgl.M13] * v[webgl.M32] + v[webgl.M02] * v[webgl.M10] * v[webgl.M33] - v[webgl.M00] * v[webgl.M12] * v[webgl.M33]; - t[webgl.M13] = v[webgl.M02] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M12] * v[webgl.M20] + v[webgl.M03] * v[webgl.M10] * v[webgl.M22] - - v[webgl.M00] * v[webgl.M13] * v[webgl.M22] - v[webgl.M02] * v[webgl.M10] * v[webgl.M23] + v[webgl.M00] * v[webgl.M12] * v[webgl.M23]; - t[webgl.M20] = v[webgl.M11] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M21] * v[webgl.M30] + v[webgl.M13] * v[webgl.M20] * v[webgl.M31] - - v[webgl.M10] * v[webgl.M23] * v[webgl.M31] - v[webgl.M11] * v[webgl.M20] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M33]; - t[webgl.M21] = v[webgl.M03] * v[webgl.M21] * v[webgl.M30] - v[webgl.M01] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M20] * v[webgl.M31] - + v[webgl.M00] * v[webgl.M23] * v[webgl.M31] + v[webgl.M01] * v[webgl.M20] * v[webgl.M33] - v[webgl.M00] * v[webgl.M21] * v[webgl.M33]; - t[webgl.M22] = v[webgl.M01] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M11] * v[webgl.M30] + v[webgl.M03] * v[webgl.M10] * v[webgl.M31] - - v[webgl.M00] * v[webgl.M13] * v[webgl.M31] - v[webgl.M01] * v[webgl.M10] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M33]; - t[webgl.M23] = v[webgl.M03] * v[webgl.M11] * v[webgl.M20] - v[webgl.M01] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M10] * v[webgl.M21] - + v[webgl.M00] * v[webgl.M13] * v[webgl.M21] + v[webgl.M01] * v[webgl.M10] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M23]; - t[webgl.M30] = v[webgl.M12] * v[webgl.M21] * v[webgl.M30] - v[webgl.M11] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M20] * v[webgl.M31] - + v[webgl.M10] * v[webgl.M22] * v[webgl.M31] + v[webgl.M11] * v[webgl.M20] * v[webgl.M32] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32]; - t[webgl.M31] = v[webgl.M01] * v[webgl.M22] * v[webgl.M30] - v[webgl.M02] * v[webgl.M21] * v[webgl.M30] + v[webgl.M02] * v[webgl.M20] * v[webgl.M31] - - v[webgl.M00] * v[webgl.M22] * v[webgl.M31] - v[webgl.M01] * v[webgl.M20] * v[webgl.M32] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32]; - t[webgl.M32] = v[webgl.M02] * v[webgl.M11] * v[webgl.M30] - v[webgl.M01] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M10] * v[webgl.M31] - + v[webgl.M00] * v[webgl.M12] * v[webgl.M31] + v[webgl.M01] * v[webgl.M10] * v[webgl.M32] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32]; - t[webgl.M33] = v[webgl.M01] * v[webgl.M12] * v[webgl.M20] - v[webgl.M02] * v[webgl.M11] * v[webgl.M20] + v[webgl.M02] * v[webgl.M10] * v[webgl.M21] - - v[webgl.M00] * v[webgl.M12] * v[webgl.M21] - v[webgl.M01] * v[webgl.M10] * v[webgl.M22] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22]; - v[webgl.M00] = t[webgl.M00] * inv_det; - v[webgl.M01] = t[webgl.M01] * inv_det; - v[webgl.M02] = t[webgl.M02] * inv_det; - v[webgl.M03] = t[webgl.M03] * inv_det; - v[webgl.M10] = t[webgl.M10] * inv_det; - v[webgl.M11] = t[webgl.M11] * inv_det; - v[webgl.M12] = t[webgl.M12] * inv_det; - v[webgl.M13] = t[webgl.M13] * inv_det; - v[webgl.M20] = t[webgl.M20] * inv_det; - v[webgl.M21] = t[webgl.M21] * inv_det; - v[webgl.M22] = t[webgl.M22] * inv_det; - v[webgl.M23] = t[webgl.M23] * inv_det; - v[webgl.M30] = t[webgl.M30] * inv_det; - v[webgl.M31] = t[webgl.M31] * inv_det; - v[webgl.M32] = t[webgl.M32] * inv_det; - v[webgl.M33] = t[webgl.M33] * inv_det; - return this; - }; - Matrix4.prototype.determinant = function () { - var v = this.values; - return v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] - + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] - - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] - - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] - + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] - + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] - - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] - - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - }; - Matrix4.prototype.translate = function (x, y, z) { - var v = this.values; - v[webgl.M03] += x; - v[webgl.M13] += y; - v[webgl.M23] += z; - return this; - }; - Matrix4.prototype.copy = function () { - return new Matrix4().set(this.values); - }; - Matrix4.prototype.projection = function (near, far, fovy, aspectRatio) { - this.identity(); - var l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); - var l_a1 = (far + near) / (near - far); - var l_a2 = (2 * far * near) / (near - far); - var v = this.values; - v[webgl.M00] = l_fd / aspectRatio; - v[webgl.M10] = 0; - v[webgl.M20] = 0; - v[webgl.M30] = 0; - v[webgl.M01] = 0; - v[webgl.M11] = l_fd; - v[webgl.M21] = 0; - v[webgl.M31] = 0; - v[webgl.M02] = 0; - v[webgl.M12] = 0; - v[webgl.M22] = l_a1; - v[webgl.M32] = -1; - v[webgl.M03] = 0; - v[webgl.M13] = 0; - v[webgl.M23] = l_a2; - v[webgl.M33] = 0; - return this; - }; - Matrix4.prototype.ortho2d = function (x, y, width, height) { - return this.ortho(x, x + width, y, y + height, 0, 1); - }; - Matrix4.prototype.ortho = function (left, right, bottom, top, near, far) { - this.identity(); - var x_orth = 2 / (right - left); - var y_orth = 2 / (top - bottom); - var z_orth = -2 / (far - near); - var tx = -(right + left) / (right - left); - var ty = -(top + bottom) / (top - bottom); - var tz = -(far + near) / (far - near); - var v = this.values; - v[webgl.M00] = x_orth; - v[webgl.M10] = 0; - v[webgl.M20] = 0; - v[webgl.M30] = 0; - v[webgl.M01] = 0; - v[webgl.M11] = y_orth; - v[webgl.M21] = 0; - v[webgl.M31] = 0; - v[webgl.M02] = 0; - v[webgl.M12] = 0; - v[webgl.M22] = z_orth; - v[webgl.M32] = 0; - v[webgl.M03] = tx; - v[webgl.M13] = ty; - v[webgl.M23] = tz; - v[webgl.M33] = 1; - return this; - }; - Matrix4.prototype.multiply = function (matrix) { - var t = this.temp; - var v = this.values; - var m = matrix.values; - t[webgl.M00] = v[webgl.M00] * m[webgl.M00] + v[webgl.M01] * m[webgl.M10] + v[webgl.M02] * m[webgl.M20] + v[webgl.M03] * m[webgl.M30]; - t[webgl.M01] = v[webgl.M00] * m[webgl.M01] + v[webgl.M01] * m[webgl.M11] + v[webgl.M02] * m[webgl.M21] + v[webgl.M03] * m[webgl.M31]; - t[webgl.M02] = v[webgl.M00] * m[webgl.M02] + v[webgl.M01] * m[webgl.M12] + v[webgl.M02] * m[webgl.M22] + v[webgl.M03] * m[webgl.M32]; - t[webgl.M03] = v[webgl.M00] * m[webgl.M03] + v[webgl.M01] * m[webgl.M13] + v[webgl.M02] * m[webgl.M23] + v[webgl.M03] * m[webgl.M33]; - t[webgl.M10] = v[webgl.M10] * m[webgl.M00] + v[webgl.M11] * m[webgl.M10] + v[webgl.M12] * m[webgl.M20] + v[webgl.M13] * m[webgl.M30]; - t[webgl.M11] = v[webgl.M10] * m[webgl.M01] + v[webgl.M11] * m[webgl.M11] + v[webgl.M12] * m[webgl.M21] + v[webgl.M13] * m[webgl.M31]; - t[webgl.M12] = v[webgl.M10] * m[webgl.M02] + v[webgl.M11] * m[webgl.M12] + v[webgl.M12] * m[webgl.M22] + v[webgl.M13] * m[webgl.M32]; - t[webgl.M13] = v[webgl.M10] * m[webgl.M03] + v[webgl.M11] * m[webgl.M13] + v[webgl.M12] * m[webgl.M23] + v[webgl.M13] * m[webgl.M33]; - t[webgl.M20] = v[webgl.M20] * m[webgl.M00] + v[webgl.M21] * m[webgl.M10] + v[webgl.M22] * m[webgl.M20] + v[webgl.M23] * m[webgl.M30]; - t[webgl.M21] = v[webgl.M20] * m[webgl.M01] + v[webgl.M21] * m[webgl.M11] + v[webgl.M22] * m[webgl.M21] + v[webgl.M23] * m[webgl.M31]; - t[webgl.M22] = v[webgl.M20] * m[webgl.M02] + v[webgl.M21] * m[webgl.M12] + v[webgl.M22] * m[webgl.M22] + v[webgl.M23] * m[webgl.M32]; - t[webgl.M23] = v[webgl.M20] * m[webgl.M03] + v[webgl.M21] * m[webgl.M13] + v[webgl.M22] * m[webgl.M23] + v[webgl.M23] * m[webgl.M33]; - t[webgl.M30] = v[webgl.M30] * m[webgl.M00] + v[webgl.M31] * m[webgl.M10] + v[webgl.M32] * m[webgl.M20] + v[webgl.M33] * m[webgl.M30]; - t[webgl.M31] = v[webgl.M30] * m[webgl.M01] + v[webgl.M31] * m[webgl.M11] + v[webgl.M32] * m[webgl.M21] + v[webgl.M33] * m[webgl.M31]; - t[webgl.M32] = v[webgl.M30] * m[webgl.M02] + v[webgl.M31] * m[webgl.M12] + v[webgl.M32] * m[webgl.M22] + v[webgl.M33] * m[webgl.M32]; - t[webgl.M33] = v[webgl.M30] * m[webgl.M03] + v[webgl.M31] * m[webgl.M13] + v[webgl.M32] * m[webgl.M23] + v[webgl.M33] * m[webgl.M33]; - return this.set(this.temp); - }; - Matrix4.prototype.multiplyLeft = function (matrix) { - var t = this.temp; - var v = this.values; - var m = matrix.values; - t[webgl.M00] = m[webgl.M00] * v[webgl.M00] + m[webgl.M01] * v[webgl.M10] + m[webgl.M02] * v[webgl.M20] + m[webgl.M03] * v[webgl.M30]; - t[webgl.M01] = m[webgl.M00] * v[webgl.M01] + m[webgl.M01] * v[webgl.M11] + m[webgl.M02] * v[webgl.M21] + m[webgl.M03] * v[webgl.M31]; - t[webgl.M02] = m[webgl.M00] * v[webgl.M02] + m[webgl.M01] * v[webgl.M12] + m[webgl.M02] * v[webgl.M22] + m[webgl.M03] * v[webgl.M32]; - t[webgl.M03] = m[webgl.M00] * v[webgl.M03] + m[webgl.M01] * v[webgl.M13] + m[webgl.M02] * v[webgl.M23] + m[webgl.M03] * v[webgl.M33]; - t[webgl.M10] = m[webgl.M10] * v[webgl.M00] + m[webgl.M11] * v[webgl.M10] + m[webgl.M12] * v[webgl.M20] + m[webgl.M13] * v[webgl.M30]; - t[webgl.M11] = m[webgl.M10] * v[webgl.M01] + m[webgl.M11] * v[webgl.M11] + m[webgl.M12] * v[webgl.M21] + m[webgl.M13] * v[webgl.M31]; - t[webgl.M12] = m[webgl.M10] * v[webgl.M02] + m[webgl.M11] * v[webgl.M12] + m[webgl.M12] * v[webgl.M22] + m[webgl.M13] * v[webgl.M32]; - t[webgl.M13] = m[webgl.M10] * v[webgl.M03] + m[webgl.M11] * v[webgl.M13] + m[webgl.M12] * v[webgl.M23] + m[webgl.M13] * v[webgl.M33]; - t[webgl.M20] = m[webgl.M20] * v[webgl.M00] + m[webgl.M21] * v[webgl.M10] + m[webgl.M22] * v[webgl.M20] + m[webgl.M23] * v[webgl.M30]; - t[webgl.M21] = m[webgl.M20] * v[webgl.M01] + m[webgl.M21] * v[webgl.M11] + m[webgl.M22] * v[webgl.M21] + m[webgl.M23] * v[webgl.M31]; - t[webgl.M22] = m[webgl.M20] * v[webgl.M02] + m[webgl.M21] * v[webgl.M12] + m[webgl.M22] * v[webgl.M22] + m[webgl.M23] * v[webgl.M32]; - t[webgl.M23] = m[webgl.M20] * v[webgl.M03] + m[webgl.M21] * v[webgl.M13] + m[webgl.M22] * v[webgl.M23] + m[webgl.M23] * v[webgl.M33]; - t[webgl.M30] = m[webgl.M30] * v[webgl.M00] + m[webgl.M31] * v[webgl.M10] + m[webgl.M32] * v[webgl.M20] + m[webgl.M33] * v[webgl.M30]; - t[webgl.M31] = m[webgl.M30] * v[webgl.M01] + m[webgl.M31] * v[webgl.M11] + m[webgl.M32] * v[webgl.M21] + m[webgl.M33] * v[webgl.M31]; - t[webgl.M32] = m[webgl.M30] * v[webgl.M02] + m[webgl.M31] * v[webgl.M12] + m[webgl.M32] * v[webgl.M22] + m[webgl.M33] * v[webgl.M32]; - t[webgl.M33] = m[webgl.M30] * v[webgl.M03] + m[webgl.M31] * v[webgl.M13] + m[webgl.M32] * v[webgl.M23] + m[webgl.M33] * v[webgl.M33]; - return this.set(this.temp); - }; - Matrix4.prototype.lookAt = function (position, direction, up) { - Matrix4.initTemps(); - var xAxis = Matrix4.xAxis, yAxis = Matrix4.yAxis, zAxis = Matrix4.zAxis; - zAxis.setFrom(direction).normalize(); - xAxis.setFrom(direction).normalize(); - xAxis.cross(up).normalize(); - yAxis.setFrom(xAxis).cross(zAxis).normalize(); - this.identity(); - var val = this.values; - val[webgl.M00] = xAxis.x; - val[webgl.M01] = xAxis.y; - val[webgl.M02] = xAxis.z; - val[webgl.M10] = yAxis.x; - val[webgl.M11] = yAxis.y; - val[webgl.M12] = yAxis.z; - val[webgl.M20] = -zAxis.x; - val[webgl.M21] = -zAxis.y; - val[webgl.M22] = -zAxis.z; - Matrix4.tmpMatrix.identity(); - Matrix4.tmpMatrix.values[webgl.M03] = -position.x; - Matrix4.tmpMatrix.values[webgl.M13] = -position.y; - Matrix4.tmpMatrix.values[webgl.M23] = -position.z; - this.multiply(Matrix4.tmpMatrix); - return this; - }; - Matrix4.initTemps = function () { - if (Matrix4.xAxis === null) - Matrix4.xAxis = new webgl.Vector3(); - if (Matrix4.yAxis === null) - Matrix4.yAxis = new webgl.Vector3(); - if (Matrix4.zAxis === null) - Matrix4.zAxis = new webgl.Vector3(); - }; - Matrix4.xAxis = null; - Matrix4.yAxis = null; - Matrix4.zAxis = null; - Matrix4.tmpMatrix = new Matrix4(); - return Matrix4; - }()); - webgl.Matrix4 = Matrix4; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Mesh = (function () { - function Mesh(context, attributes, maxVertices, maxIndices) { - this.attributes = attributes; - this.verticesLength = 0; - this.dirtyVertices = false; - this.indicesLength = 0; - this.dirtyIndices = false; - this.elementsPerVertex = 0; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.elementsPerVertex = 0; - for (var i = 0; i < attributes.length; i++) { - this.elementsPerVertex += attributes[i].numElements; - } - this.vertices = new Float32Array(maxVertices * this.elementsPerVertex); - this.indices = new Uint16Array(maxIndices); - this.context.addRestorable(this); - } - Mesh.prototype.getAttributes = function () { return this.attributes; }; - Mesh.prototype.maxVertices = function () { return this.vertices.length / this.elementsPerVertex; }; - Mesh.prototype.numVertices = function () { return this.verticesLength / this.elementsPerVertex; }; - Mesh.prototype.setVerticesLength = function (length) { - this.dirtyVertices = true; - this.verticesLength = length; - }; - Mesh.prototype.getVertices = function () { return this.vertices; }; - Mesh.prototype.maxIndices = function () { return this.indices.length; }; - Mesh.prototype.numIndices = function () { return this.indicesLength; }; - Mesh.prototype.setIndicesLength = function (length) { - this.dirtyIndices = true; - this.indicesLength = length; - }; - Mesh.prototype.getIndices = function () { return this.indices; }; - ; - Mesh.prototype.getVertexSizeInFloats = function () { - var size = 0; - for (var i = 0; i < this.attributes.length; i++) { - var attribute = this.attributes[i]; - size += attribute.numElements; - } - return size; - }; - Mesh.prototype.setVertices = function (vertices) { - this.dirtyVertices = true; - if (vertices.length > this.vertices.length) - throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); - this.vertices.set(vertices, 0); - this.verticesLength = vertices.length; - }; - Mesh.prototype.setIndices = function (indices) { - this.dirtyIndices = true; - if (indices.length > this.indices.length) - throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); - this.indices.set(indices, 0); - this.indicesLength = indices.length; - }; - Mesh.prototype.draw = function (shader, primitiveType) { - this.drawWithOffset(shader, primitiveType, 0, this.indicesLength > 0 ? this.indicesLength : this.verticesLength / this.elementsPerVertex); - }; - Mesh.prototype.drawWithOffset = function (shader, primitiveType, offset, count) { - var gl = this.context.gl; - if (this.dirtyVertices || this.dirtyIndices) - this.update(); - this.bind(shader); - if (this.indicesLength > 0) { - gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); - } - else { - gl.drawArrays(primitiveType, offset, count); - } - this.unbind(shader); - }; - Mesh.prototype.bind = function (shader) { - var gl = this.context.gl; - gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); - var offset = 0; - for (var i = 0; i < this.attributes.length; i++) { - var attrib = this.attributes[i]; - var location_1 = shader.getAttributeLocation(attrib.name); - gl.enableVertexAttribArray(location_1); - gl.vertexAttribPointer(location_1, attrib.numElements, gl.FLOAT, false, this.elementsPerVertex * 4, offset * 4); - offset += attrib.numElements; - } - if (this.indicesLength > 0) - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); - }; - Mesh.prototype.unbind = function (shader) { - var gl = this.context.gl; - for (var i = 0; i < this.attributes.length; i++) { - var attrib = this.attributes[i]; - var location_2 = shader.getAttributeLocation(attrib.name); - gl.disableVertexAttribArray(location_2); - } - gl.bindBuffer(gl.ARRAY_BUFFER, null); - if (this.indicesLength > 0) - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); - }; - Mesh.prototype.update = function () { - var gl = this.context.gl; - if (this.dirtyVertices) { - if (!this.verticesBuffer) { - this.verticesBuffer = gl.createBuffer(); - } - gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertices.subarray(0, this.verticesLength), gl.DYNAMIC_DRAW); - this.dirtyVertices = false; - } - if (this.dirtyIndices) { - if (!this.indicesBuffer) { - this.indicesBuffer = gl.createBuffer(); - } - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices.subarray(0, this.indicesLength), gl.DYNAMIC_DRAW); - this.dirtyIndices = false; - } - }; - Mesh.prototype.restore = function () { - this.verticesBuffer = null; - this.indicesBuffer = null; - this.update(); - }; - Mesh.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - gl.deleteBuffer(this.verticesBuffer); - gl.deleteBuffer(this.indicesBuffer); - }; - return Mesh; - }()); - webgl.Mesh = Mesh; - var VertexAttribute = (function () { - function VertexAttribute(name, type, numElements) { - this.name = name; - this.type = type; - this.numElements = numElements; - } - return VertexAttribute; - }()); - webgl.VertexAttribute = VertexAttribute; - var Position2Attribute = (function (_super) { - __extends(Position2Attribute, _super); - function Position2Attribute() { - return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 2) || this; - } - return Position2Attribute; - }(VertexAttribute)); - webgl.Position2Attribute = Position2Attribute; - var Position3Attribute = (function (_super) { - __extends(Position3Attribute, _super); - function Position3Attribute() { - return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 3) || this; - } - return Position3Attribute; - }(VertexAttribute)); - webgl.Position3Attribute = Position3Attribute; - var TexCoordAttribute = (function (_super) { - __extends(TexCoordAttribute, _super); - function TexCoordAttribute(unit) { - if (unit === void 0) { unit = 0; } - return _super.call(this, webgl.Shader.TEXCOORDS + (unit == 0 ? "" : unit), VertexAttributeType.Float, 2) || this; - } - return TexCoordAttribute; - }(VertexAttribute)); - webgl.TexCoordAttribute = TexCoordAttribute; - var ColorAttribute = (function (_super) { - __extends(ColorAttribute, _super); - function ColorAttribute() { - return _super.call(this, webgl.Shader.COLOR, VertexAttributeType.Float, 4) || this; - } - return ColorAttribute; - }(VertexAttribute)); - webgl.ColorAttribute = ColorAttribute; - var Color2Attribute = (function (_super) { - __extends(Color2Attribute, _super); - function Color2Attribute() { - return _super.call(this, webgl.Shader.COLOR2, VertexAttributeType.Float, 4) || this; - } - return Color2Attribute; - }(VertexAttribute)); - webgl.Color2Attribute = Color2Attribute; - var VertexAttributeType; - (function (VertexAttributeType) { - VertexAttributeType[VertexAttributeType["Float"] = 0] = "Float"; - })(VertexAttributeType = webgl.VertexAttributeType || (webgl.VertexAttributeType = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var PolygonBatcher = (function () { - function PolygonBatcher(context, twoColorTint, maxVertices) { - if (twoColorTint === void 0) { twoColorTint = true; } - if (maxVertices === void 0) { maxVertices = 10920; } - this.isDrawing = false; - this.shader = null; - this.lastTexture = null; - this.verticesLength = 0; - this.indicesLength = 0; - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - var attributes = twoColorTint ? - [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute(), new webgl.Color2Attribute()] : - [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute()]; - this.mesh = new webgl.Mesh(context, attributes, maxVertices, maxVertices * 3); - var gl = this.context.gl; - this.srcColorBlend = gl.SRC_ALPHA; - this.srcAlphaBlend = gl.ONE; - this.dstBlend = gl.ONE_MINUS_SRC_ALPHA; - } - PolygonBatcher.prototype.begin = function (shader) { - if (this.isDrawing) - throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); - this.drawCalls = 0; - this.shader = shader; - this.lastTexture = null; - this.isDrawing = true; - var gl = this.context.gl; - gl.enable(gl.BLEND); - gl.blendFuncSeparate(this.srcColorBlend, this.dstBlend, this.srcAlphaBlend, this.dstBlend); - }; - PolygonBatcher.prototype.setBlendMode = function (srcColorBlend, srcAlphaBlend, dstBlend) { - this.srcColorBlend = srcColorBlend; - this.srcAlphaBlend = srcAlphaBlend; - this.dstBlend = dstBlend; - if (this.isDrawing) { - this.flush(); - var gl = this.context.gl; - gl.blendFuncSeparate(srcColorBlend, dstBlend, srcAlphaBlend, dstBlend); - } - }; - PolygonBatcher.prototype.draw = function (texture, vertices, indices) { - if (texture != this.lastTexture) { - this.flush(); - this.lastTexture = texture; - } - else if (this.verticesLength + vertices.length > this.mesh.getVertices().length || - this.indicesLength + indices.length > this.mesh.getIndices().length) { - this.flush(); - } - var indexStart = this.mesh.numVertices(); - this.mesh.getVertices().set(vertices, this.verticesLength); - this.verticesLength += vertices.length; - this.mesh.setVerticesLength(this.verticesLength); - var indicesArray = this.mesh.getIndices(); - for (var i = this.indicesLength, j = 0; j < indices.length; i++, j++) - indicesArray[i] = indices[j] + indexStart; - this.indicesLength += indices.length; - this.mesh.setIndicesLength(this.indicesLength); - }; - PolygonBatcher.prototype.flush = function () { - if (this.verticesLength == 0) - return; - this.lastTexture.bind(); - this.mesh.draw(this.shader, this.context.gl.TRIANGLES); - this.verticesLength = 0; - this.indicesLength = 0; - this.mesh.setVerticesLength(0); - this.mesh.setIndicesLength(0); - this.drawCalls++; - }; - PolygonBatcher.prototype.end = function () { - if (!this.isDrawing) - throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); - if (this.verticesLength > 0 || this.indicesLength > 0) - this.flush(); - this.shader = null; - this.lastTexture = null; - this.isDrawing = false; - var gl = this.context.gl; - gl.disable(gl.BLEND); - }; - PolygonBatcher.prototype.getDrawCalls = function () { - return this.drawCalls; - }; - PolygonBatcher.prototype.dispose = function () { - this.mesh.dispose(); - }; - return PolygonBatcher; - }()); - webgl.PolygonBatcher = PolygonBatcher; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var quad = [ - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - ]; - var QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - var WHITE = new spine.Color(1, 1, 1, 1); - var SceneRenderer = (function () { - function SceneRenderer(canvas, context, twoColorTint) { - if (twoColorTint === void 0) { twoColorTint = true; } - this.twoColorTint = false; - this.canvas = canvas; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.twoColorTint = twoColorTint; - this.camera = new webgl.OrthoCamera(canvas.width, canvas.height); - this.batcherShader = twoColorTint ? webgl.Shader.newTwoColoredTextured(this.context) : webgl.Shader.newColoredTextured(this.context); - this.batcher = new webgl.PolygonBatcher(this.context, twoColorTint); - this.shapesShader = webgl.Shader.newColored(this.context); - this.shapes = new webgl.ShapeRenderer(this.context); - this.skeletonRenderer = new webgl.SkeletonRenderer(this.context, twoColorTint); - this.skeletonDebugRenderer = new webgl.SkeletonDebugRenderer(this.context); - } - SceneRenderer.prototype.begin = function () { - this.camera.update(); - this.enableRenderer(this.batcher); - }; - SceneRenderer.prototype.drawSkeleton = function (skeleton, premultipliedAlpha, slotRangeStart, slotRangeEnd) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - if (slotRangeStart === void 0) { slotRangeStart = -1; } - if (slotRangeEnd === void 0) { slotRangeEnd = -1; } - this.enableRenderer(this.batcher); - this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha; - this.skeletonRenderer.draw(this.batcher, skeleton, slotRangeStart, slotRangeEnd); - }; - SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha, ignoredBones) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - if (ignoredBones === void 0) { ignoredBones = null; } - this.enableRenderer(this.shapes); - this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; - this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones); - }; - SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawTextureUV = function (texture, x, y, width, height, u, v, u2, v2, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u; - quad[i++] = v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u2; - quad[i++] = v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u2; - quad[i++] = v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u; - quad[i++] = v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawTextureRotated = function (texture, x, y, width, height, pivotX, pivotY, angle, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var worldOriginX = x + pivotX; - var worldOriginY = y + pivotY; - var fx = -pivotX; - var fy = -pivotY; - var fx2 = width - pivotX; - var fy2 = height - pivotY; - var p1x = fx; - var p1y = fy; - var p2x = fx; - var p2y = fy2; - var p3x = fx2; - var p3y = fy2; - var p4x = fx2; - var p4y = fy; - var x1 = 0; - var y1 = 0; - var x2 = 0; - var y2 = 0; - var x3 = 0; - var y3 = 0; - var x4 = 0; - var y4 = 0; - if (angle != 0) { - var cos = spine.MathUtils.cosDeg(angle); - var sin = spine.MathUtils.sinDeg(angle); - x1 = cos * p1x - sin * p1y; - y1 = sin * p1x + cos * p1y; - x4 = cos * p2x - sin * p2y; - y4 = sin * p2x + cos * p2y; - x3 = cos * p3x - sin * p3y; - y3 = sin * p3x + cos * p3y; - x2 = x3 + (x1 - x4); - y2 = y3 + (y1 - y4); - } - else { - x1 = p1x; - y1 = p1y; - x4 = p2x; - y4 = p2y; - x3 = p3x; - y3 = p3y; - x2 = p4x; - y2 = p4y; - } - x1 += worldOriginX; - y1 += worldOriginY; - x2 += worldOriginX; - y2 += worldOriginY; - x3 += worldOriginX; - y3 += worldOriginY; - x4 += worldOriginX; - y4 += worldOriginY; - var i = 0; - quad[i++] = x1; - quad[i++] = y1; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x2; - quad[i++] = y2; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x3; - quad[i++] = y3; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x4; - quad[i++] = y4; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawRegion = function (region, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u; - quad[i++] = region.v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u2; - quad[i++] = region.v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u2; - quad[i++] = region.v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u; - quad[i++] = region.v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(region.page.texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.line = function (x, y, x2, y2, color, color2) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - this.enableRenderer(this.shapes); - this.shapes.line(x, y, x2, y2, color); - }; - SceneRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - this.enableRenderer(this.shapes); - this.shapes.triangle(filled, x, y, x2, y2, x3, y3, color, color2, color3); - }; - SceneRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - if (color4 === void 0) { color4 = null; } - this.enableRenderer(this.shapes); - this.shapes.quad(filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4); - }; - SceneRenderer.prototype.rect = function (filled, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.rect(filled, x, y, width, height, color); - }; - SceneRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.rectLine(filled, x1, y1, x2, y2, width, color); - }; - SceneRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.polygon(polygonVertices, offset, count, color); - }; - SceneRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { - if (color === void 0) { color = null; } - if (segments === void 0) { segments = 0; } - this.enableRenderer(this.shapes); - this.shapes.circle(filled, x, y, radius, color, segments); - }; - SceneRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color); - }; - SceneRenderer.prototype.end = function () { - if (this.activeRenderer === this.batcher) - this.batcher.end(); - else if (this.activeRenderer === this.shapes) - this.shapes.end(); - this.activeRenderer = null; - }; - SceneRenderer.prototype.resize = function (resizeMode) { - var canvas = this.canvas; - var dpr = window.devicePixelRatio || 1; - var w = Math.round(canvas.clientWidth * dpr); - var h = Math.round(canvas.clientHeight * dpr); - if (canvas.width != w || canvas.height != h) { - canvas.width = w; - canvas.height = h; - } - this.context.gl.viewport(0, 0, canvas.width, canvas.height); - if (resizeMode === ResizeMode.Expand) - this.camera.setViewport(w, h); - else if (resizeMode === ResizeMode.Fit) { - var sourceWidth = canvas.width, sourceHeight = canvas.height; - var targetWidth = this.camera.viewportWidth, targetHeight = this.camera.viewportHeight; - var targetRatio = targetHeight / targetWidth; - var sourceRatio = sourceHeight / sourceWidth; - var scale = targetRatio < sourceRatio ? targetWidth / sourceWidth : targetHeight / sourceHeight; - this.camera.setViewport(sourceWidth * scale, sourceHeight * scale); - } - this.camera.update(); - }; - SceneRenderer.prototype.enableRenderer = function (renderer) { - if (this.activeRenderer === renderer) - return; - this.end(); - if (renderer instanceof webgl.PolygonBatcher) { - this.batcherShader.bind(); - this.batcherShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); - this.batcherShader.setUniformi("u_texture", 0); - this.batcher.begin(this.batcherShader); - this.activeRenderer = this.batcher; - } - else if (renderer instanceof webgl.ShapeRenderer) { - this.shapesShader.bind(); - this.shapesShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); - this.shapes.begin(this.shapesShader); - this.activeRenderer = this.shapes; - } - else - this.activeRenderer = this.skeletonDebugRenderer; - }; - SceneRenderer.prototype.dispose = function () { - this.batcher.dispose(); - this.batcherShader.dispose(); - this.shapes.dispose(); - this.shapesShader.dispose(); - this.skeletonDebugRenderer.dispose(); - }; - return SceneRenderer; - }()); - webgl.SceneRenderer = SceneRenderer; - var ResizeMode; - (function (ResizeMode) { - ResizeMode[ResizeMode["Stretch"] = 0] = "Stretch"; - ResizeMode[ResizeMode["Expand"] = 1] = "Expand"; - ResizeMode[ResizeMode["Fit"] = 2] = "Fit"; - })(ResizeMode = webgl.ResizeMode || (webgl.ResizeMode = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Shader = (function () { - function Shader(context, vertexShader, fragmentShader) { - this.vertexShader = vertexShader; - this.fragmentShader = fragmentShader; - this.vs = null; - this.fs = null; - this.program = null; - this.tmp2x2 = new Float32Array(2 * 2); - this.tmp3x3 = new Float32Array(3 * 3); - this.tmp4x4 = new Float32Array(4 * 4); - this.vsSource = vertexShader; - this.fsSource = fragmentShader; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.context.addRestorable(this); - this.compile(); - } - Shader.prototype.getProgram = function () { return this.program; }; - Shader.prototype.getVertexShader = function () { return this.vertexShader; }; - Shader.prototype.getFragmentShader = function () { return this.fragmentShader; }; - Shader.prototype.getVertexShaderSource = function () { return this.vsSource; }; - Shader.prototype.getFragmentSource = function () { return this.fsSource; }; - Shader.prototype.compile = function () { - var gl = this.context.gl; - try { - this.vs = this.compileShader(gl.VERTEX_SHADER, this.vertexShader); - this.fs = this.compileShader(gl.FRAGMENT_SHADER, this.fragmentShader); - this.program = this.compileProgram(this.vs, this.fs); - } - catch (e) { - this.dispose(); - throw e; - } - }; - Shader.prototype.compileShader = function (type, source) { - var gl = this.context.gl; - var shader = gl.createShader(type); - gl.shaderSource(shader, source); - gl.compileShader(shader); - if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - var error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); - gl.deleteShader(shader); - if (!gl.isContextLost()) - throw new Error(error); - } - return shader; - }; - Shader.prototype.compileProgram = function (vs, fs) { - var gl = this.context.gl; - var program = gl.createProgram(); - gl.attachShader(program, vs); - gl.attachShader(program, fs); - gl.linkProgram(program); - if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - var error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); - gl.deleteProgram(program); - if (!gl.isContextLost()) - throw new Error(error); - } - return program; - }; - Shader.prototype.restore = function () { - this.compile(); - }; - Shader.prototype.bind = function () { - this.context.gl.useProgram(this.program); - }; - Shader.prototype.unbind = function () { - this.context.gl.useProgram(null); - }; - Shader.prototype.setUniformi = function (uniform, value) { - this.context.gl.uniform1i(this.getUniformLocation(uniform), value); - }; - Shader.prototype.setUniformf = function (uniform, value) { - this.context.gl.uniform1f(this.getUniformLocation(uniform), value); - }; - Shader.prototype.setUniform2f = function (uniform, value, value2) { - this.context.gl.uniform2f(this.getUniformLocation(uniform), value, value2); - }; - Shader.prototype.setUniform3f = function (uniform, value, value2, value3) { - this.context.gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); - }; - Shader.prototype.setUniform4f = function (uniform, value, value2, value3, value4) { - this.context.gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); - }; - Shader.prototype.setUniform2x2f = function (uniform, value) { - var gl = this.context.gl; - this.tmp2x2.set(value); - gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this.tmp2x2); - }; - Shader.prototype.setUniform3x3f = function (uniform, value) { - var gl = this.context.gl; - this.tmp3x3.set(value); - gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this.tmp3x3); - }; - Shader.prototype.setUniform4x4f = function (uniform, value) { - var gl = this.context.gl; - this.tmp4x4.set(value); - gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this.tmp4x4); - }; - Shader.prototype.getUniformLocation = function (uniform) { - var gl = this.context.gl; - var location = gl.getUniformLocation(this.program, uniform); - if (!location && !gl.isContextLost()) - throw new Error("Couldn't find location for uniform " + uniform); - return location; - }; - Shader.prototype.getAttributeLocation = function (attribute) { - var gl = this.context.gl; - var location = gl.getAttribLocation(this.program, attribute); - if (location == -1 && !gl.isContextLost()) - throw new Error("Couldn't find location for attribute " + attribute); - return location; - }; - Shader.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - if (this.vs) { - gl.deleteShader(this.vs); - this.vs = null; - } - if (this.fs) { - gl.deleteShader(this.fs); - this.fs = null; - } - if (this.program) { - gl.deleteProgram(this.program); - this.program = null; - } - }; - Shader.newColoredTextured = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.newTwoColoredTextured = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR2 + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_light;\n\t\t\t\tvarying vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_light = " + Shader.COLOR + ";\n\t\t\t\t\tv_dark = " + Shader.COLOR2 + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_light;\n\t\t\t\tvarying LOWP vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tvec4 texColor = texture2D(u_texture, v_texCoords);\n\t\t\t\t\tgl_FragColor.a = texColor.a * v_light.a;\n\t\t\t\t\tgl_FragColor.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb;\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.newColored = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color;\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.MVP_MATRIX = "u_projTrans"; - Shader.POSITION = "a_position"; - Shader.COLOR = "a_color"; - Shader.COLOR2 = "a_color2"; - Shader.TEXCOORDS = "a_texCoords"; - Shader.SAMPLER = "u_texture"; - return Shader; - }()); - webgl.Shader = Shader; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var ShapeRenderer = (function () { - function ShapeRenderer(context, maxVertices) { - if (maxVertices === void 0) { maxVertices = 10920; } - this.isDrawing = false; - this.shapeType = ShapeType.Filled; - this.color = new spine.Color(1, 1, 1, 1); - this.vertexIndex = 0; - this.tmp = new spine.Vector2(); - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.mesh = new webgl.Mesh(context, [new webgl.Position2Attribute(), new webgl.ColorAttribute()], maxVertices, 0); - var gl = this.context.gl; - this.srcColorBlend = gl.SRC_ALPHA; - this.srcAlphaBlend = gl.ONE; - this.dstBlend = gl.ONE_MINUS_SRC_ALPHA; - } - ShapeRenderer.prototype.begin = function (shader) { - if (this.isDrawing) - throw new Error("ShapeRenderer.begin() has already been called"); - this.shader = shader; - this.vertexIndex = 0; - this.isDrawing = true; - var gl = this.context.gl; - gl.enable(gl.BLEND); - gl.blendFuncSeparate(this.srcColorBlend, this.dstBlend, this.srcAlphaBlend, this.dstBlend); - }; - ShapeRenderer.prototype.setBlendMode = function (srcColorBlend, srcAlphaBlend, dstBlend) { - this.srcColorBlend = srcColorBlend; - this.srcAlphaBlend = srcAlphaBlend; - this.dstBlend = dstBlend; - if (this.isDrawing) { - this.flush(); - var gl = this.context.gl; - gl.blendFuncSeparate(srcColorBlend, dstBlend, srcAlphaBlend, dstBlend); - } - }; - ShapeRenderer.prototype.setColor = function (color) { - this.color.setFromColor(color); - }; - ShapeRenderer.prototype.setColorWith = function (r, g, b, a) { - this.color.set(r, g, b, a); - }; - ShapeRenderer.prototype.point = function (x, y, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Point, 1); - if (color === null) - color = this.color; - this.vertex(x, y, color); - }; - ShapeRenderer.prototype.line = function (x, y, x2, y2, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Line, 2); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - this.vertex(x, y, color); - this.vertex(x2, y2, color); - }; - ShapeRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - if (color2 === null) - color2 = this.color; - if (color3 === null) - color3 = this.color; - if (filled) { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - } - else { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x2, y2, color); - this.vertex(x3, y3, color2); - this.vertex(x3, y3, color); - this.vertex(x, y, color2); - } - }; - ShapeRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - if (color4 === void 0) { color4 = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - if (color2 === null) - color2 = this.color; - if (color3 === null) - color3 = this.color; - if (color4 === null) - color4 = this.color; - if (filled) { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - this.vertex(x3, y3, color3); - this.vertex(x4, y4, color4); - this.vertex(x, y, color); - } - else { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - this.vertex(x3, y3, color3); - this.vertex(x4, y4, color4); - this.vertex(x4, y4, color4); - this.vertex(x, y, color); - } - }; - ShapeRenderer.prototype.rect = function (filled, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.quad(filled, x, y, x + width, y, x + width, y + height, x, y + height, color, color, color, color); - }; - ShapeRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { - if (color === void 0) { color = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 8); - if (color === null) - color = this.color; - var t = this.tmp.set(y2 - y1, x1 - x2); - t.normalize(); - width *= 0.5; - var tx = t.x * width; - var ty = t.y * width; - if (!filled) { - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x1 - tx, y1 - ty, color); - } - else { - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - } - }; - ShapeRenderer.prototype.x = function (x, y, size) { - this.line(x - size, y - size, x + size, y + size); - this.line(x - size, y + size, x + size, y - size); - }; - ShapeRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { - if (color === void 0) { color = null; } - if (count < 3) - throw new Error("Polygon must contain at least 3 vertices"); - this.check(ShapeType.Line, count * 2); - if (color === null) - color = this.color; - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - offset <<= 1; - count <<= 1; - var firstX = polygonVertices[offset]; - var firstY = polygonVertices[offset + 1]; - var last = offset + count; - for (var i = offset, n = offset + count - 2; i < n; i += 2) { - var x1 = polygonVertices[i]; - var y1 = polygonVertices[i + 1]; - var x2 = 0; - var y2 = 0; - if (i + 2 >= last) { - x2 = firstX; - y2 = firstY; - } - else { - x2 = polygonVertices[i + 2]; - y2 = polygonVertices[i + 3]; - } - this.vertex(x1, y1, color); - this.vertex(x2, y2, color); - } - }; - ShapeRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { - if (color === void 0) { color = null; } - if (segments === void 0) { segments = 0; } - if (segments === 0) - segments = Math.max(1, (6 * spine.MathUtils.cbrt(radius)) | 0); - if (segments <= 0) - throw new Error("segments must be > 0."); - if (color === null) - color = this.color; - var angle = 2 * spine.MathUtils.PI / segments; - var cos = Math.cos(angle); - var sin = Math.sin(angle); - var cx = radius, cy = 0; - if (!filled) { - this.check(ShapeType.Line, segments * 2 + 2); - for (var i = 0; i < segments; i++) { - this.vertex(x + cx, y + cy, color); - var temp_1 = cx; - cx = cos * cx - sin * cy; - cy = sin * temp_1 + cos * cy; - this.vertex(x + cx, y + cy, color); - } - this.vertex(x + cx, y + cy, color); - } - else { - this.check(ShapeType.Filled, segments * 3 + 3); - segments--; - for (var i = 0; i < segments; i++) { - this.vertex(x, y, color); - this.vertex(x + cx, y + cy, color); - var temp_2 = cx; - cx = cos * cx - sin * cy; - cy = sin * temp_2 + cos * cy; - this.vertex(x + cx, y + cy, color); - } - this.vertex(x, y, color); - this.vertex(x + cx, y + cy, color); - } - var temp = cx; - cx = radius; - cy = 0; - this.vertex(x + cx, y + cy, color); - }; - ShapeRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Line, segments * 2 + 2); - if (color === null) - color = this.color; - var subdiv_step = 1 / segments; - var subdiv_step2 = subdiv_step * subdiv_step; - var subdiv_step3 = subdiv_step * subdiv_step * subdiv_step; - var pre1 = 3 * subdiv_step; - var pre2 = 3 * subdiv_step2; - var pre4 = 6 * subdiv_step2; - var pre5 = 6 * subdiv_step3; - var tmp1x = x1 - cx1 * 2 + cx2; - var tmp1y = y1 - cy1 * 2 + cy2; - var tmp2x = (cx1 - cx2) * 3 - x1 + x2; - var tmp2y = (cy1 - cy2) * 3 - y1 + y2; - var fx = x1; - var fy = y1; - var dfx = (cx1 - x1) * pre1 + tmp1x * pre2 + tmp2x * subdiv_step3; - var dfy = (cy1 - y1) * pre1 + tmp1y * pre2 + tmp2y * subdiv_step3; - var ddfx = tmp1x * pre4 + tmp2x * pre5; - var ddfy = tmp1y * pre4 + tmp2y * pre5; - var dddfx = tmp2x * pre5; - var dddfy = tmp2y * pre5; - while (segments-- > 0) { - this.vertex(fx, fy, color); - fx += dfx; - fy += dfy; - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - this.vertex(fx, fy, color); - } - this.vertex(fx, fy, color); - this.vertex(x2, y2, color); - }; - ShapeRenderer.prototype.vertex = function (x, y, color) { - var idx = this.vertexIndex; - var vertices = this.mesh.getVertices(); - vertices[idx++] = x; - vertices[idx++] = y; - vertices[idx++] = color.r; - vertices[idx++] = color.g; - vertices[idx++] = color.b; - vertices[idx++] = color.a; - this.vertexIndex = idx; - }; - ShapeRenderer.prototype.end = function () { - if (!this.isDrawing) - throw new Error("ShapeRenderer.begin() has not been called"); - this.flush(); - var gl = this.context.gl; - gl.disable(gl.BLEND); - this.isDrawing = false; - }; - ShapeRenderer.prototype.flush = function () { - if (this.vertexIndex == 0) - return; - this.mesh.setVerticesLength(this.vertexIndex); - this.mesh.draw(this.shader, this.shapeType); - this.vertexIndex = 0; - }; - ShapeRenderer.prototype.check = function (shapeType, numVertices) { - if (!this.isDrawing) - throw new Error("ShapeRenderer.begin() has not been called"); - if (this.shapeType == shapeType) { - if (this.mesh.maxVertices() - this.mesh.numVertices() < numVertices) - this.flush(); - else - return; - } - else { - this.flush(); - this.shapeType = shapeType; - } - }; - ShapeRenderer.prototype.dispose = function () { - this.mesh.dispose(); - }; - return ShapeRenderer; - }()); - webgl.ShapeRenderer = ShapeRenderer; - var ShapeType; - (function (ShapeType) { - ShapeType[ShapeType["Point"] = 0] = "Point"; - ShapeType[ShapeType["Line"] = 1] = "Line"; - ShapeType[ShapeType["Filled"] = 4] = "Filled"; - })(ShapeType = webgl.ShapeType || (webgl.ShapeType = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var SkeletonDebugRenderer = (function () { - function SkeletonDebugRenderer(context) { - this.boneLineColor = new spine.Color(1, 0, 0, 1); - this.boneOriginColor = new spine.Color(0, 1, 0, 1); - this.attachmentLineColor = new spine.Color(0, 0, 1, 0.5); - this.triangleLineColor = new spine.Color(1, 0.64, 0, 0.5); - this.pathColor = new spine.Color().setFromString("FF7F00"); - this.clipColor = new spine.Color(0.8, 0, 0, 2); - this.aabbColor = new spine.Color(0, 1, 0, 0.5); - this.drawBones = true; - this.drawRegionAttachments = true; - this.drawBoundingBoxes = true; - this.drawMeshHull = true; - this.drawMeshTriangles = true; - this.drawPaths = true; - this.drawSkeletonXY = false; - this.drawClipping = true; - this.premultipliedAlpha = false; - this.scale = 1; - this.boneWidth = 2; - this.bounds = new spine.SkeletonBounds(); - this.temp = new Array(); - this.vertices = spine.Utils.newFloatArray(2 * 1024); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - } - SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton, ignoredBones) { - if (ignoredBones === void 0) { ignoredBones = null; } - var skeletonX = skeleton.x; - var skeletonY = skeleton.y; - var gl = this.context.gl; - var srcFunc = this.premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; - shapes.setBlendMode(srcFunc, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - var bones = skeleton.bones; - if (this.drawBones) { - shapes.setColor(this.boneLineColor); - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) - continue; - if (!bone.parent) - continue; - var x = skeletonX + bone.data.length * bone.a + bone.worldX; - var y = skeletonY + bone.data.length * bone.c + bone.worldY; - shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale); - } - if (this.drawSkeletonXY) - shapes.x(skeletonX, skeletonY, 4 * this.scale); - } - if (this.drawRegionAttachments) { - shapes.setColor(this.attachmentLineColor); - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - var regionAttachment = attachment; - var vertices = this.vertices; - regionAttachment.computeWorldVertices(slot.bone, vertices, 0, 2); - shapes.line(vertices[0], vertices[1], vertices[2], vertices[3]); - shapes.line(vertices[2], vertices[3], vertices[4], vertices[5]); - shapes.line(vertices[4], vertices[5], vertices[6], vertices[7]); - shapes.line(vertices[6], vertices[7], vertices[0], vertices[1]); - } - } - } - if (this.drawMeshHull || this.drawMeshTriangles) { - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.MeshAttachment)) - continue; - var mesh = attachment; - var vertices = this.vertices; - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, 2); - var triangles = mesh.triangles; - var hullLength = mesh.hullLength; - if (this.drawMeshTriangles) { - shapes.setColor(this.triangleLineColor); - for (var ii = 0, nn = triangles.length; ii < nn; ii += 3) { - var v1 = triangles[ii] * 2, v2 = triangles[ii + 1] * 2, v3 = triangles[ii + 2] * 2; - shapes.triangle(false, vertices[v1], vertices[v1 + 1], vertices[v2], vertices[v2 + 1], vertices[v3], vertices[v3 + 1]); - } - } - if (this.drawMeshHull && hullLength > 0) { - shapes.setColor(this.attachmentLineColor); - hullLength = (hullLength >> 1) * 2; - var lastX = vertices[hullLength - 2], lastY = vertices[hullLength - 1]; - for (var ii = 0, nn = hullLength; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - shapes.line(x, y, lastX, lastY); - lastX = x; - lastY = y; - } - } - } - } - if (this.drawBoundingBoxes) { - var bounds = this.bounds; - bounds.update(skeleton, true); - shapes.setColor(this.aabbColor); - shapes.rect(false, bounds.minX, bounds.minY, bounds.getWidth(), bounds.getHeight()); - var polygons = bounds.polygons; - var boxes = bounds.boundingBoxes; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - shapes.setColor(boxes[i].color); - shapes.polygon(polygon, 0, polygon.length); - } - } - if (this.drawPaths) { - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - continue; - var path = attachment; - var nn = path.worldVerticesLength; - var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); - path.computeWorldVertices(slot, 0, nn, world, 0, 2); - var color = this.pathColor; - var x1 = world[2], y1 = world[3], x2 = 0, y2 = 0; - if (path.closed) { - shapes.setColor(color); - var cx1 = world[0], cy1 = world[1], cx2 = world[nn - 2], cy2 = world[nn - 1]; - x2 = world[nn - 4]; - y2 = world[nn - 3]; - shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); - shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); - shapes.line(x1, y1, cx1, cy1); - shapes.line(x2, y2, cx2, cy2); - } - nn -= 4; - for (var ii = 4; ii < nn; ii += 6) { - var cx1 = world[ii], cy1 = world[ii + 1], cx2 = world[ii + 2], cy2 = world[ii + 3]; - x2 = world[ii + 4]; - y2 = world[ii + 5]; - shapes.setColor(color); - shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); - shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); - shapes.line(x1, y1, cx1, cy1); - shapes.line(x2, y2, cx2, cy2); - x1 = x2; - y1 = y2; - } - } - } - if (this.drawBones) { - shapes.setColor(this.boneOriginColor); - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) - continue; - shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); - } - } - if (this.drawClipping) { - var slots = skeleton.slots; - shapes.setColor(this.clipColor); - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.ClippingAttachment)) - continue; - var clip = attachment; - var nn = clip.worldVerticesLength; - var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); - clip.computeWorldVertices(slot, 0, nn, world, 0, 2); - for (var i_21 = 0, n_3 = world.length; i_21 < n_3; i_21 += 2) { - var x = world[i_21]; - var y = world[i_21 + 1]; - var x2 = world[(i_21 + 2) % world.length]; - var y2 = world[(i_21 + 3) % world.length]; - shapes.line(x, y, x2, y2); - } - } - } - }; - SkeletonDebugRenderer.prototype.dispose = function () { - }; - SkeletonDebugRenderer.LIGHT_GRAY = new spine.Color(192 / 255, 192 / 255, 192 / 255, 1); - SkeletonDebugRenderer.GREEN = new spine.Color(0, 1, 0, 1); - return SkeletonDebugRenderer; - }()); - webgl.SkeletonDebugRenderer = SkeletonDebugRenderer; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Renderable = (function () { - function Renderable(vertices, numVertices, numFloats) { - this.vertices = vertices; - this.numVertices = numVertices; - this.numFloats = numFloats; - } - return Renderable; - }()); - ; - var SkeletonRenderer = (function () { - function SkeletonRenderer(context, twoColorTint) { - if (twoColorTint === void 0) { twoColorTint = true; } - this.premultipliedAlpha = false; - this.vertexEffect = null; - this.tempColor = new spine.Color(); - this.tempColor2 = new spine.Color(); - this.vertexSize = 2 + 2 + 4; - this.twoColorTint = false; - this.renderable = new Renderable(null, 0, 0); - this.clipper = new spine.SkeletonClipping(); - this.temp = new spine.Vector2(); - this.temp2 = new spine.Vector2(); - this.temp3 = new spine.Color(); - this.temp4 = new spine.Color(); - this.twoColorTint = twoColorTint; - if (twoColorTint) - this.vertexSize += 4; - this.vertices = spine.Utils.newFloatArray(this.vertexSize * 1024); - } - SkeletonRenderer.prototype.draw = function (batcher, skeleton, slotRangeStart, slotRangeEnd) { - if (slotRangeStart === void 0) { slotRangeStart = -1; } - if (slotRangeEnd === void 0) { slotRangeEnd = -1; } - var clipper = this.clipper; - var premultipliedAlpha = this.premultipliedAlpha; - var twoColorTint = this.twoColorTint; - var blendMode = null; - var tempPos = this.temp; - var tempUv = this.temp2; - var tempLight = this.temp3; - var tempDark = this.temp4; - var renderable = this.renderable; - var uvs = null; - var triangles = null; - var drawOrder = skeleton.drawOrder; - var attachmentColor = null; - var skeletonColor = skeleton.color; - var vertexSize = twoColorTint ? 12 : 8; - var inRange = false; - if (slotRangeStart == -1) - inRange = true; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var clippedVertexSize = clipper.isClipping() ? 2 : vertexSize; - var slot = drawOrder[i]; - if (!slot.bone.active) { - clipper.clipEndWithSlot(slot); - continue; - } - if (slotRangeStart >= 0 && slotRangeStart == slot.data.index) { - inRange = true; - } - if (!inRange) { - clipper.clipEndWithSlot(slot); - continue; - } - if (slotRangeEnd >= 0 && slotRangeEnd == slot.data.index) { - inRange = false; - } - var attachment = slot.getAttachment(); - var texture = null; - if (attachment instanceof spine.RegionAttachment) { - var region = attachment; - renderable.vertices = this.vertices; - renderable.numVertices = 4; - renderable.numFloats = clippedVertexSize << 2; - region.computeWorldVertices(slot.bone, renderable.vertices, 0, clippedVertexSize); - triangles = SkeletonRenderer.QUAD_TRIANGLES; - uvs = region.uvs; - texture = region.region.renderObject.page.texture; - attachmentColor = region.color; - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - renderable.vertices = this.vertices; - renderable.numVertices = (mesh.worldVerticesLength >> 1); - renderable.numFloats = renderable.numVertices * clippedVertexSize; - if (renderable.numFloats > renderable.vertices.length) { - renderable.vertices = this.vertices = spine.Utils.newFloatArray(renderable.numFloats); - } - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, renderable.vertices, 0, clippedVertexSize); - triangles = mesh.triangles; - texture = mesh.region.renderObject.page.texture; - uvs = mesh.uvs; - attachmentColor = mesh.color; - } - else if (attachment instanceof spine.ClippingAttachment) { - var clip = (attachment); - clipper.clipStart(slot, clip); - continue; - } - else { - clipper.clipEndWithSlot(slot); - continue; - } - if (texture) { - var slotColor = slot.color; - var finalColor = this.tempColor; - finalColor.r = skeletonColor.r * slotColor.r * attachmentColor.r; - finalColor.g = skeletonColor.g * slotColor.g * attachmentColor.g; - finalColor.b = skeletonColor.b * slotColor.b * attachmentColor.b; - finalColor.a = skeletonColor.a * slotColor.a * attachmentColor.a; - if (premultipliedAlpha) { - finalColor.r *= finalColor.a; - finalColor.g *= finalColor.a; - finalColor.b *= finalColor.a; - } - var darkColor = this.tempColor2; - if (!slot.darkColor) - darkColor.set(0, 0, 0, 1.0); - else { - if (premultipliedAlpha) { - darkColor.r = slot.darkColor.r * finalColor.a; - darkColor.g = slot.darkColor.g * finalColor.a; - darkColor.b = slot.darkColor.b * finalColor.a; - } - else { - darkColor.setFromColor(slot.darkColor); - } - darkColor.a = premultipliedAlpha ? 1.0 : 0.0; - } - var slotBlendMode = slot.data.blendMode; - if (slotBlendMode != blendMode) { - blendMode = slotBlendMode; - batcher.setBlendMode(webgl.WebGLBlendModeConverter.getSourceColorGLBlendMode(blendMode, premultipliedAlpha), webgl.WebGLBlendModeConverter.getSourceAlphaGLBlendMode(blendMode), webgl.WebGLBlendModeConverter.getDestGLBlendMode(blendMode)); - } - if (clipper.isClipping()) { - clipper.clipTriangles(renderable.vertices, renderable.numFloats, triangles, triangles.length, uvs, finalColor, darkColor, twoColorTint); - var clippedVertices = new Float32Array(clipper.clippedVertices); - var clippedTriangles = clipper.clippedTriangles; - if (this.vertexEffect) { - var vertexEffect = this.vertexEffect; - var verts = clippedVertices; - if (!twoColorTint) { - for (var v = 0, n_4 = clippedVertices.length; v < n_4; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - tempDark.set(0, 0, 0, 0); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 0, n_5 = clippedVertices.length; v < n_5; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - tempDark.set(verts[v + 8], verts[v + 9], verts[v + 10], verts[v + 11]); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - verts[v + 8] = tempDark.r; - verts[v + 9] = tempDark.g; - verts[v + 10] = tempDark.b; - verts[v + 11] = tempDark.a; - } - } - } - batcher.draw(texture, clippedVertices, clippedTriangles); - } - else { - var verts = renderable.vertices; - if (this.vertexEffect) { - var vertexEffect = this.vertexEffect; - if (!twoColorTint) { - for (var v = 0, u = 0, n_6 = renderable.numFloats; v < n_6; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - tempLight.setFromColor(finalColor); - tempDark.set(0, 0, 0, 0); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 0, u = 0, n_7 = renderable.numFloats; v < n_7; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - tempLight.setFromColor(finalColor); - tempDark.setFromColor(darkColor); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - verts[v + 8] = tempDark.r; - verts[v + 9] = tempDark.g; - verts[v + 10] = tempDark.b; - verts[v + 11] = tempDark.a; - } - } - } - else { - if (!twoColorTint) { - for (var v = 2, u = 0, n_8 = renderable.numFloats; v < n_8; v += vertexSize, u += 2) { - verts[v] = finalColor.r; - verts[v + 1] = finalColor.g; - verts[v + 2] = finalColor.b; - verts[v + 3] = finalColor.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - } - } - else { - for (var v = 2, u = 0, n_9 = renderable.numFloats; v < n_9; v += vertexSize, u += 2) { - verts[v] = finalColor.r; - verts[v + 1] = finalColor.g; - verts[v + 2] = finalColor.b; - verts[v + 3] = finalColor.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - verts[v + 6] = darkColor.r; - verts[v + 7] = darkColor.g; - verts[v + 8] = darkColor.b; - verts[v + 9] = darkColor.a; - } - } - } - var view = renderable.vertices.subarray(0, renderable.numFloats); - batcher.draw(texture, view, triangles); - } - } - clipper.clipEndWithSlot(slot); - } - clipper.clipEnd(); - }; - SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - return SkeletonRenderer; - }()); - webgl.SkeletonRenderer = SkeletonRenderer; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Vector3 = (function () { - function Vector3(x, y, z) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - if (z === void 0) { z = 0; } - this.x = 0; - this.y = 0; - this.z = 0; - this.x = x; - this.y = y; - this.z = z; - } - Vector3.prototype.setFrom = function (v) { - this.x = v.x; - this.y = v.y; - this.z = v.z; - return this; - }; - Vector3.prototype.set = function (x, y, z) { - this.x = x; - this.y = y; - this.z = z; - return this; - }; - Vector3.prototype.add = function (v) { - this.x += v.x; - this.y += v.y; - this.z += v.z; - return this; - }; - Vector3.prototype.sub = function (v) { - this.x -= v.x; - this.y -= v.y; - this.z -= v.z; - return this; - }; - Vector3.prototype.scale = function (s) { - this.x *= s; - this.y *= s; - this.z *= s; - return this; - }; - Vector3.prototype.normalize = function () { - var len = this.length(); - if (len == 0) - return this; - len = 1 / len; - this.x *= len; - this.y *= len; - this.z *= len; - return this; - }; - Vector3.prototype.cross = function (v) { - return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x); - }; - Vector3.prototype.multiply = function (matrix) { - var l_mat = matrix.values; - return this.set(this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03], this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13], this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]); - }; - Vector3.prototype.project = function (matrix) { - var l_mat = matrix.values; - var l_w = 1 / (this.x * l_mat[webgl.M30] + this.y * l_mat[webgl.M31] + this.z * l_mat[webgl.M32] + l_mat[webgl.M33]); - return this.set((this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03]) * l_w, (this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13]) * l_w, (this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]) * l_w); - }; - Vector3.prototype.dot = function (v) { - return this.x * v.x + this.y * v.y + this.z * v.z; - }; - Vector3.prototype.length = function () { - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); - }; - Vector3.prototype.distance = function (v) { - var a = v.x - this.x; - var b = v.y - this.y; - var c = v.z - this.z; - return Math.sqrt(a * a + b * b + c * c); - }; - return Vector3; - }()); - webgl.Vector3 = Vector3; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var ManagedWebGLRenderingContext = (function () { - function ManagedWebGLRenderingContext(canvasOrContext, contextConfig) { - if (contextConfig === void 0) { contextConfig = { alpha: "true" }; } - this.restorables = new Array(); - if (!((canvasOrContext instanceof WebGLRenderingContext) || (typeof WebGL2RenderingContext !== 'undefined' && canvasOrContext instanceof WebGL2RenderingContext))) - this.setupCanvas(canvasOrContext, contextConfig); - else { - this.gl = canvasOrContext; - this.canvas = this.gl.canvas; - } - } - ManagedWebGLRenderingContext.prototype.setupCanvas = function (canvas, contextConfig) { - var _this = this; - this.gl = (canvas.getContext("webgl2", contextConfig) || canvas.getContext("webgl", contextConfig)); - this.canvas = canvas; - canvas.addEventListener("webglcontextlost", function (e) { - var event = e; - if (e) - e.preventDefault(); - }); - canvas.addEventListener("webglcontextrestored", function (e) { - for (var i = 0, n = _this.restorables.length; i < n; i++) - _this.restorables[i].restore(); - }); - }; - ManagedWebGLRenderingContext.prototype.addRestorable = function (restorable) { - this.restorables.push(restorable); - }; - ManagedWebGLRenderingContext.prototype.removeRestorable = function (restorable) { - var index = this.restorables.indexOf(restorable); - if (index > -1) - this.restorables.splice(index, 1); - }; - return ManagedWebGLRenderingContext; - }()); - webgl.ManagedWebGLRenderingContext = ManagedWebGLRenderingContext; - var ONE = 1; - var ONE_MINUS_SRC_COLOR = 0x0301; - var SRC_ALPHA = 0x0302; - var ONE_MINUS_SRC_ALPHA = 0x0303; - var ONE_MINUS_DST_ALPHA = 0x0305; - var DST_COLOR = 0x0306; - var WebGLBlendModeConverter = (function () { - function WebGLBlendModeConverter() { - } - WebGLBlendModeConverter.getDestGLBlendMode = function (blendMode) { - switch (blendMode) { - case spine.BlendMode.Normal: return ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Additive: return ONE; - case spine.BlendMode.Multiply: return ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Screen: return ONE_MINUS_SRC_ALPHA; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - WebGLBlendModeConverter.getSourceColorGLBlendMode = function (blendMode, premultipliedAlpha) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - switch (blendMode) { - case spine.BlendMode.Normal: return premultipliedAlpha ? ONE : SRC_ALPHA; - case spine.BlendMode.Additive: return premultipliedAlpha ? ONE : SRC_ALPHA; - case spine.BlendMode.Multiply: return DST_COLOR; - case spine.BlendMode.Screen: return ONE; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - WebGLBlendModeConverter.getSourceAlphaGLBlendMode = function (blendMode) { - switch (blendMode) { - case spine.BlendMode.Normal: return ONE; - case spine.BlendMode.Additive: return ONE; - case spine.BlendMode.Multiply: return ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Screen: return ONE_MINUS_SRC_COLOR; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - return WebGLBlendModeConverter; - }()); - webgl.WebGLBlendModeConverter = WebGLBlendModeConverter; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var AssetManager = (function (_super) { - __extends(AssetManager, _super); - function AssetManager(pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - return _super.call(this, function (image) { - return new threejs.ThreeJsTexture(image); - }, pathPrefix, downloader) || this; - } - return AssetManager; - }(spine.AssetManager)); - threejs.AssetManager = AssetManager; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var MeshBatcher = (function (_super) { - __extends(MeshBatcher, _super); - function MeshBatcher(maxVertices, materialCustomizer) { - if (maxVertices === void 0) { maxVertices = 10920; } - if (materialCustomizer === void 0) { materialCustomizer = function (parameters) { }; } - var _this = _super.call(this) || this; - _this.verticesLength = 0; - _this.indicesLength = 0; - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - var vertices = _this.vertices = new Float32Array(maxVertices * MeshBatcher.VERTEX_SIZE); - var indices = _this.indices = new Uint16Array(maxVertices * 3); - var geo = new THREE.BufferGeometry(); - var vertexBuffer = _this.vertexBuffer = new THREE.InterleavedBuffer(vertices, MeshBatcher.VERTEX_SIZE); - vertexBuffer.usage = WebGLRenderingContext.DYNAMIC_DRAW; - geo.setAttribute("position", new THREE.InterleavedBufferAttribute(vertexBuffer, 3, 0, false)); - geo.setAttribute("color", new THREE.InterleavedBufferAttribute(vertexBuffer, 4, 3, false)); - geo.setAttribute("uv", new THREE.InterleavedBufferAttribute(vertexBuffer, 2, 7, false)); - geo.setIndex(new THREE.BufferAttribute(indices, 1)); - geo.getIndex().usage = WebGLRenderingContext.DYNAMIC_DRAW; - geo.drawRange.start = 0; - geo.drawRange.count = 0; - _this.geometry = geo; - _this.material = new threejs.SkeletonMeshMaterial(materialCustomizer); - return _this; - } - MeshBatcher.prototype.dispose = function () { - this.geometry.dispose(); - if (this.material instanceof THREE.Material) - this.material.dispose(); - else if (this.material) { - for (var i = 0; i < this.material.length; i++) { - var material = this.material[i]; - if (material instanceof THREE.Material) - material.dispose(); - } - } - }; - MeshBatcher.prototype.clear = function () { - var geo = this.geometry; - geo.drawRange.start = 0; - geo.drawRange.count = 0; - this.material.uniforms.map.value = null; - }; - MeshBatcher.prototype.begin = function () { - this.verticesLength = 0; - this.indicesLength = 0; - }; - MeshBatcher.prototype.canBatch = function (verticesLength, indicesLength) { - if (this.indicesLength + indicesLength >= this.indices.byteLength / 2) - return false; - if (this.verticesLength + verticesLength >= this.vertices.byteLength / 2) - return false; - return true; - }; - MeshBatcher.prototype.batch = function (vertices, verticesLength, indices, indicesLength, z) { - if (z === void 0) { z = 0; } - var indexStart = this.verticesLength / MeshBatcher.VERTEX_SIZE; - var vertexBuffer = this.vertices; - var i = this.verticesLength; - var j = 0; - for (; j < verticesLength;) { - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = z; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - } - this.verticesLength = i; - var indicesArray = this.indices; - for (i = this.indicesLength, j = 0; j < indicesLength; i++, j++) - indicesArray[i] = indices[j] + indexStart; - this.indicesLength += indicesLength; - }; - MeshBatcher.prototype.end = function () { - this.vertexBuffer.needsUpdate = this.verticesLength > 0; - this.vertexBuffer.updateRange.offset = 0; - this.vertexBuffer.updateRange.count = this.verticesLength; - var geo = this.geometry; - geo.getIndex().needsUpdate = this.indicesLength > 0; - geo.getIndex().updateRange.offset = 0; - geo.getIndex().updateRange.count = this.indicesLength; - geo.drawRange.start = 0; - geo.drawRange.count = this.indicesLength; - }; - MeshBatcher.VERTEX_SIZE = 9; - return MeshBatcher; - }(THREE.Mesh)); - threejs.MeshBatcher = MeshBatcher; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var SkeletonMeshMaterial = (function (_super) { - __extends(SkeletonMeshMaterial, _super); - function SkeletonMeshMaterial(customizer) { - var _this = this; - var vertexShader = "\n\t\t\t\tattribute vec4 color;\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tvarying vec4 vColor;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tvColor = color;\n\t\t\t\t\tgl_Position = projectionMatrix*modelViewMatrix*vec4(position,1.0);\n\t\t\t\t}\n\t\t\t"; - var fragmentShader = "\n\t\t\t\tuniform sampler2D map;\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tvarying vec4 vColor;\n\t\t\t\tvoid main(void) {\n\t\t\t\t\tgl_FragColor = texture2D(map, vUv)*vColor;\n\t\t\t\t}\n\t\t\t"; - var parameters = { - uniforms: { - map: { type: "t", value: null } - }, - vertexShader: vertexShader, - fragmentShader: fragmentShader, - side: THREE.DoubleSide, - transparent: true, - alphaTest: 0.5 - }; - customizer(parameters); - _this = _super.call(this, parameters) || this; - return _this; - } - ; - return SkeletonMeshMaterial; - }(THREE.ShaderMaterial)); - threejs.SkeletonMeshMaterial = SkeletonMeshMaterial; - var SkeletonMesh = (function (_super) { - __extends(SkeletonMesh, _super); - function SkeletonMesh(skeletonData, materialCustomizer) { - if (materialCustomizer === void 0) { materialCustomizer = function (parameters) { }; } - var _this = _super.call(this) || this; - _this.tempPos = new spine.Vector2(); - _this.tempUv = new spine.Vector2(); - _this.tempLight = new spine.Color(); - _this.tempDark = new spine.Color(); - _this.zOffset = 0.1; - _this.batches = new Array(); - _this.nextBatchIndex = 0; - _this.clipper = new spine.SkeletonClipping(); - _this.vertices = spine.Utils.newFloatArray(1024); - _this.tempColor = new spine.Color(); - _this.materialCustomizer = materialCustomizer; - _this.skeleton = new spine.Skeleton(skeletonData); - var animData = new spine.AnimationStateData(skeletonData); - _this.state = new spine.AnimationState(animData); - return _this; - } - SkeletonMesh.prototype.update = function (deltaTime) { - var state = this.state; - var skeleton = this.skeleton; - state.update(deltaTime); - state.apply(skeleton); - skeleton.updateWorldTransform(); - this.updateGeometry(); - }; - SkeletonMesh.prototype.dispose = function () { - for (var i = 0; i < this.batches.length; i++) { - this.batches[i].dispose(); - } - }; - SkeletonMesh.prototype.clearBatches = function () { - for (var i = 0; i < this.batches.length; i++) { - this.batches[i].clear(); - this.batches[i].visible = false; - } - this.nextBatchIndex = 0; - }; - SkeletonMesh.prototype.nextBatch = function () { - if (this.batches.length == this.nextBatchIndex) { - var batch_1 = new threejs.MeshBatcher(10920, this.materialCustomizer); - this.add(batch_1); - this.batches.push(batch_1); - } - var batch = this.batches[this.nextBatchIndex++]; - batch.visible = true; - return batch; - }; - SkeletonMesh.prototype.updateGeometry = function () { - this.clearBatches(); - var tempPos = this.tempPos; - var tempUv = this.tempUv; - var tempLight = this.tempLight; - var tempDark = this.tempDark; - var numVertices = 0; - var verticesLength = 0; - var indicesLength = 0; - var blendMode = null; - var clipper = this.clipper; - var vertices = this.vertices; - var triangles = null; - var uvs = null; - var drawOrder = this.skeleton.drawOrder; - var batch = this.nextBatch(); - batch.begin(); - var z = 0; - var zOffset = this.zOffset; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var vertexSize = clipper.isClipping() ? 2 : SkeletonMesh.VERTEX_SIZE; - var slot = drawOrder[i]; - if (!slot.bone.active) { - clipper.clipEndWithSlot(slot); - continue; - } - var attachment = slot.getAttachment(); - var attachmentColor = null; - var texture = null; - var numFloats = 0; - if (attachment instanceof spine.RegionAttachment) { - var region = attachment; - attachmentColor = region.color; - vertices = this.vertices; - numFloats = vertexSize * 4; - region.computeWorldVertices(slot.bone, vertices, 0, vertexSize); - triangles = SkeletonMesh.QUAD_TRIANGLES; - uvs = region.uvs; - texture = region.region.renderObject.page.texture; - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - attachmentColor = mesh.color; - vertices = this.vertices; - numFloats = (mesh.worldVerticesLength >> 1) * vertexSize; - if (numFloats > vertices.length) { - vertices = this.vertices = spine.Utils.newFloatArray(numFloats); - } - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, vertexSize); - triangles = mesh.triangles; - uvs = mesh.uvs; - texture = mesh.region.renderObject.page.texture; - } - else if (attachment instanceof spine.ClippingAttachment) { - var clip = (attachment); - clipper.clipStart(slot, clip); - continue; - } - else { - clipper.clipEndWithSlot(slot); - continue; - } - if (texture) { - var skeleton = slot.bone.skeleton; - var skeletonColor = skeleton.color; - var slotColor = slot.color; - var alpha = skeletonColor.a * slotColor.a * attachmentColor.a; - var color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * attachmentColor.r, skeletonColor.g * slotColor.g * attachmentColor.g, skeletonColor.b * slotColor.b * attachmentColor.b, alpha); - var finalVertices = void 0; - var finalVerticesLength = void 0; - var finalIndices = void 0; - var finalIndicesLength = void 0; - if (clipper.isClipping()) { - clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false); - var clippedVertices = clipper.clippedVertices; - var clippedTriangles = clipper.clippedTriangles; - if (this.vertexEffect) { - var vertexEffect = this.vertexEffect; - var verts = clippedVertices; - for (var v = 0, n_10 = clippedVertices.length; v < n_10; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.setFromColor(color); - tempDark.set(0, 0, 0, 0); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - finalVertices = clippedVertices; - finalVerticesLength = clippedVertices.length; - finalIndices = clippedTriangles; - finalIndicesLength = clippedTriangles.length; - } - else { - var verts = vertices; - if (this.vertexEffect) { - var vertexEffect = this.vertexEffect; - for (var v = 0, u = 0, n_11 = numFloats; v < n_11; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.setFromColor(color); - tempDark.set(0, 0, 0, 0); - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 2, u = 0, n_12 = numFloats; v < n_12; v += vertexSize, u += 2) { - verts[v] = color.r; - verts[v + 1] = color.g; - verts[v + 2] = color.b; - verts[v + 3] = color.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - } - } - finalVertices = vertices; - finalVerticesLength = numFloats; - finalIndices = triangles; - finalIndicesLength = triangles.length; - } - if (finalVerticesLength == 0 || finalIndicesLength == 0) { - clipper.clipEndWithSlot(slot); - continue; - } - if (!batch.canBatch(finalVerticesLength, finalIndicesLength)) { - batch.end(); - batch = this.nextBatch(); - batch.begin(); - } - var batchMaterial = batch.material; - if (!batchMaterial.uniforms.map.value) - batchMaterial.uniforms.map.value = texture.texture; - if (batchMaterial.uniforms.map.value != texture.texture) { - batch.end(); - batch = this.nextBatch(); - batch.begin(); - batchMaterial = batch.material; - batchMaterial.uniforms.map.value = texture.texture; - } - batchMaterial.needsUpdate = true; - batch.batch(finalVertices, finalVerticesLength, finalIndices, finalIndicesLength, z); - z += zOffset; - } - clipper.clipEndWithSlot(slot); - } - clipper.clipEnd(); - batch.end(); - }; - SkeletonMesh.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - SkeletonMesh.VERTEX_SIZE = 2 + 2 + 4; - return SkeletonMesh; - }(THREE.Object3D)); - threejs.SkeletonMesh = SkeletonMesh; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var ThreeJsTexture = (function (_super) { - __extends(ThreeJsTexture, _super); - function ThreeJsTexture(image) { - var _this = _super.call(this, image) || this; - _this.texture = new THREE.Texture(image); - _this.texture.flipY = false; - _this.texture.needsUpdate = true; - return _this; - } - ThreeJsTexture.prototype.setFilters = function (minFilter, magFilter) { - this.texture.minFilter = ThreeJsTexture.toThreeJsTextureFilter(minFilter); - this.texture.magFilter = ThreeJsTexture.toThreeJsTextureFilter(magFilter); - }; - ThreeJsTexture.prototype.setWraps = function (uWrap, vWrap) { - this.texture.wrapS = ThreeJsTexture.toThreeJsTextureWrap(uWrap); - this.texture.wrapT = ThreeJsTexture.toThreeJsTextureWrap(vWrap); - }; - ThreeJsTexture.prototype.dispose = function () { - this.texture.dispose(); - }; - ThreeJsTexture.toThreeJsTextureFilter = function (filter) { - if (filter === spine.TextureFilter.Linear) - return THREE.LinearFilter; - else if (filter === spine.TextureFilter.MipMap) - return THREE.LinearMipMapLinearFilter; - else if (filter === spine.TextureFilter.MipMapLinearNearest) - return THREE.LinearMipMapNearestFilter; - else if (filter === spine.TextureFilter.MipMapNearestLinear) - return THREE.NearestMipMapLinearFilter; - else if (filter === spine.TextureFilter.MipMapNearestNearest) - return THREE.NearestMipMapNearestFilter; - else if (filter === spine.TextureFilter.Nearest) - return THREE.NearestFilter; - else - throw new Error("Unknown texture filter: " + filter); - }; - ThreeJsTexture.toThreeJsTextureWrap = function (wrap) { - if (wrap === spine.TextureWrap.ClampToEdge) - return THREE.ClampToEdgeWrapping; - else if (wrap === spine.TextureWrap.MirroredRepeat) - return THREE.MirroredRepeatWrapping; - else if (wrap === spine.TextureWrap.Repeat) - return THREE.RepeatWrapping; - else - throw new Error("Unknown texture wrap: " + wrap); - }; - return ThreeJsTexture; - }(spine.Texture)); - threejs.ThreeJsTexture = ThreeJsTexture; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var SpinePlayer = (function () { - function SpinePlayer(parent, config) { - var _this = this; - this.config = config; - this.bg = new spine.Color(); - this.bgFullscreen = new spine.Color(); - this.playTime = 0; - this.cancelId = 0; - this.paused = true; - this.speed = 1; - this.time = new spine.TimeKeeper(); - this.stopRequestAnimationFrame = false; - this.viewport = {}; - this.viewportTransitionStart = 0; - this.parent = typeof parent === "string" ? document.getElementById(parent) : parent; - var controls = config.showControls ? "\n
\n
\n
\n\n
\n\n\n\n\n\n\n
" : ""; - this.parent.appendChild(this.dom = createElement("
" + controls + "
")); - try { - this.validateConfig(config); - } - catch (e) { - this.showError(e.message, e); - } - this.initialize(); - window.addEventListener("resize", function () { return _this.drawFrame(false); }); - requestAnimationFrame(function () { return _this.drawFrame(); }); - } - SpinePlayer.prototype.validateConfig = function (config) { - if (!config) - throw new Error("A configuration object must be passed to to new spine.SpinePlayer()."); - if (config.skelUrl) - config.binaryUrl = config.skelUrl; - if (!config.jsonUrl && !config.binaryUrl) - throw new Error("A URL must be specified for the skeleton JSON or binary file."); - if (!config.atlasUrl) - throw new Error("A URL must be specified for the atlas file."); - if (!config.backgroundColor) - config.backgroundColor = config.alpha ? "00000000" : "000000"; - if (!config.fullScreenBackgroundColor) - config.fullScreenBackgroundColor = config.backgroundColor; - if (config.backgroundImage && !config.backgroundImage.url) - config.backgroundImage = null; - if (config.premultipliedAlpha === void 0) - config.premultipliedAlpha = true; - if (config.mipmaps === void 0) - config.mipmaps = true; - if (!config.debug) - config.debug = {}; - if (config.animations && config.animation && config.animations.indexOf(config.animation) < 0) - throw new Error("Animation '" + config.animation + "' is not in the config animation list: " + toString(config.animations)); - if (config.skins && config.skin && config.skins.indexOf(config.skin) < 0) - throw new Error("Default skin '" + config.skin + "' is not in the config skins list: " + toString(config.skins)); - if (!config.viewport) - config.viewport = {}; - if (!config.viewport.animations) - config.viewport.animations = {}; - if (config.viewport.debugRender === void 0) - config.viewport.debugRender = false; - if (config.viewport.transitionTime === void 0) - config.viewport.transitionTime = 0.25; - if (!config.controlBones) - config.controlBones = []; - if (config.showControls === void 0) - config.showControls = true; - if (config.showLoading === void 0) - config.showLoading = true; - if (config.defaultMix === void 0) - config.defaultMix = 0.25; - }; - SpinePlayer.prototype.initialize = function () { - var _this = this; - var config = this.config; - var dom = this.dom; - if (!config.alpha) { - var hex = config.backgroundColor; - this.dom.style.backgroundColor = (hex.charAt(0) == '#' ? hex : "#" + hex).substr(0, 7); - } - try { - this.canvas = findWithClass(dom, "spine-player-canvas"); - this.context = new spine.webgl.ManagedWebGLRenderingContext(this.canvas, { alpha: config.alpha }); - this.sceneRenderer = new spine.webgl.SceneRenderer(this.canvas, this.context, true); - if (config.showLoading) - this.loadingScreen = new spine.webgl.LoadingScreen(this.sceneRenderer); - } - catch (e) { - this.showError("Sorry, your browser does not support WebGL.\nPlease use the latest version of Firefox, Chrome, Edge, or Safari.", e); - } - this.assetManager = new spine.webgl.AssetManager(this.context, "", config.downloader); - if (config.rawDataURIs) { - for (var path in config.rawDataURIs) - this.assetManager.setRawDataURI(path, config.rawDataURIs[path]); - } - if (config.jsonUrl) - this.assetManager.loadJson(config.jsonUrl); - else - this.assetManager.loadBinary(config.binaryUrl); - this.assetManager.loadTextureAtlas(config.atlasUrl); - if (config.backgroundImage) - this.assetManager.loadTexture(config.backgroundImage.url); - this.bg.setFromString(config.backgroundColor); - this.bgFullscreen.setFromString(config.fullScreenBackgroundColor); - if (config.showControls) { - this.playerControls = dom.children[1]; - var controls = this.playerControls.children; - var timeline = controls[0]; - var buttons = controls[1].children; - this.playButton = buttons[0]; - var speedButton_1 = buttons[2]; - this.animationButton = buttons[3]; - this.skinButton = buttons[4]; - var settingsButton_1 = buttons[5]; - var fullscreenButton = buttons[6]; - var logoButton = buttons[7]; - this.timelineSlider = new Slider(); - timeline.appendChild(this.timelineSlider.create()); - this.timelineSlider.change = function (percentage) { - _this.pause(); - var animationDuration = _this.animationState.getCurrent(0).animation.duration; - var time = animationDuration * percentage; - _this.animationState.update(time - _this.playTime); - _this.animationState.apply(_this.skeleton); - _this.skeleton.updateWorldTransform(); - _this.playTime = time; - }; - this.playButton.onclick = function () { return (_this.paused ? _this.play() : _this.pause()); }; - speedButton_1.onclick = function () { return _this.showSpeedDialog(speedButton_1); }; - this.animationButton.onclick = function () { return _this.showAnimationsDialog(_this.animationButton); }; - this.skinButton.onclick = function () { return _this.showSkinsDialog(_this.skinButton); }; - settingsButton_1.onclick = function () { return _this.showSettingsDialog(settingsButton_1); }; - var oldWidth_1 = this.canvas.clientWidth, oldHeight_1 = this.canvas.clientHeight; - var oldStyleWidth_1 = this.canvas.style.width, oldStyleHeight_1 = this.canvas.style.height; - var isFullscreen_1 = false; - fullscreenButton.onclick = function () { - var fullscreenChanged = function () { - isFullscreen_1 = !isFullscreen_1; - if (!isFullscreen_1) { - _this.canvas.style.width = oldWidth_1 + "px"; - _this.canvas.style.height = oldHeight_1 + "px"; - _this.drawFrame(false); - requestAnimationFrame(function () { - _this.canvas.style.width = oldStyleWidth_1; - _this.canvas.style.height = oldStyleHeight_1; - }); - } - }; - var player = dom; - player.onfullscreenchange = fullscreenChanged; - player.onwebkitfullscreenchange = fullscreenChanged; - var doc = document; - if (doc.fullscreenElement || doc.webkitFullscreenElement || doc.mozFullScreenElement || doc.msFullscreenElement) { - if (doc.exitFullscreen) - doc.exitFullscreen(); - else if (doc.mozCancelFullScreen) - doc.mozCancelFullScreen(); - else if (doc.webkitExitFullscreen) - doc.webkitExitFullscreen(); - else if (doc.msExitFullscreen) - doc.msExitFullscreen(); - } - else { - oldWidth_1 = _this.canvas.clientWidth; - oldHeight_1 = _this.canvas.clientHeight; - oldStyleWidth_1 = _this.canvas.style.width; - oldStyleHeight_1 = _this.canvas.style.height; - if (player.requestFullscreen) - player.requestFullscreen(); - else if (player.webkitRequestFullScreen) - player.webkitRequestFullScreen(); - else if (player.mozRequestFullScreen) - player.mozRequestFullScreen(); - else if (player.msRequestFullscreen) - player.msRequestFullscreen(); - } - }; - logoButton.onclick = function () { return window.open("http://esotericsoftware.com"); }; - } - return dom; - }; - SpinePlayer.prototype.loadSkeleton = function () { - var _this = this; - if (this.error) - return; - if (this.assetManager.hasErrors()) - this.showError("Error: Assets could not be loaded.\n" + toString(this.assetManager.getErrors())); - var config = this.config; - var atlas = this.assetManager.require(config.atlasUrl); - var gl = this.context.gl, anisotropic = gl.getExtension("EXT_texture_filter_anisotropic"); - for (var _i = 0, _a = atlas.pages; _i < _a.length; _i++) { - var page = _a[_i]; - var minFilter = page.minFilter; - if (config.mipmaps) { - if (anisotropic) { - gl.texParameterf(gl.TEXTURE_2D, anisotropic.TEXTURE_MAX_ANISOTROPY_EXT, 8); - minFilter = spine.TextureFilter.MipMapLinearLinear; - } - else - minFilter = spine.TextureFilter.Linear; - page.texture.setFilters(minFilter, spine.TextureFilter.Nearest); - } - if (minFilter != spine.TextureFilter.Nearest && minFilter != spine.TextureFilter.Linear) - page.texture.update(true); - } - var skeletonData; - if (config.jsonUrl) { - try { - var jsonData = this.assetManager.remove(config.jsonUrl); - if (!jsonData) - throw new Error("Empty JSON data."); - if (config.jsonField) { - jsonData = jsonData[config.jsonField]; - if (!jsonData) - throw new Error("JSON field does not exist: " + config.jsonField); - } - var json = new spine.SkeletonJson(new spine.AtlasAttachmentLoader(atlas)); - skeletonData = json.readSkeletonData(jsonData); - } - catch (e) { - this.showError("Error: Could not load skeleton JSON.\n" + e.message, e); - } - } - else { - var binaryData = this.assetManager.remove(config.binaryUrl); - var binary = new spine.SkeletonBinary(new spine.AtlasAttachmentLoader(atlas)); - try { - skeletonData = binary.readSkeletonData(binaryData); - } - catch (e) { - this.showError("Error: Could not load skeleton binary.\n" + e.message, e); - } - } - this.skeleton = new spine.Skeleton(skeletonData); - var stateData = new spine.AnimationStateData(skeletonData); - stateData.defaultMix = config.defaultMix; - this.animationState = new spine.AnimationState(stateData); - config.controlBones.forEach(function (bone) { - if (!skeletonData.findBone(bone)) - _this.showError("Error: Control bone does not exist in skeleton: " + bone); - }); - if (!config.skin && skeletonData.skins.length) - config.skin = skeletonData.skins[0].name; - if (config.skins && config.skin.length) { - config.skins.forEach(function (skin) { - if (!_this.skeleton.data.findSkin(skin)) - _this.showError("Error: Skin in config list does not exist in skeleton: " + skin); - }); - } - if (config.skin) { - if (!this.skeleton.data.findSkin(config.skin)) - this.showError("Error: Skin does not exist in skeleton: " + config.skin); - this.skeleton.setSkinByName(config.skin); - this.skeleton.setSlotsToSetupPose(); - } - Object.getOwnPropertyNames(config.viewport.animations).forEach(function (animation) { - if (!skeletonData.findAnimation(animation)) - _this.showError("Error: Animation for which a viewport was specified does not exist in skeleton: " + animation); - }); - if (config.animations && config.animations.length) { - config.animations.forEach(function (animation) { - if (!_this.skeleton.data.findAnimation(animation)) - _this.showError("Error: Animation in config list does not exist in skeleton: " + animation); - }); - if (!config.animation) - config.animation = config.animations[0]; - } - if (config.animation && !skeletonData.findAnimation(config.animation)) - this.showError("Error: Animation does not exist in skeleton: " + config.animation); - this.setupInput(); - if (config.showControls) { - if (skeletonData.skins.length == 1 || (config.skins && config.skins.length == 1)) - this.skinButton.classList.add("spine-player-hidden"); - if (skeletonData.animations.length == 1 || (config.animations && config.animations.length == 1)) - this.animationButton.classList.add("spine-player-hidden"); - } - if (config.success) - config.success(this); - var entry = this.animationState.getCurrent(0); - if (!entry) { - if (config.animation) { - entry = this.setAnimation(config.animation); - this.play(); - } - else { - entry = this.animationState.setEmptyAnimation(0); - entry.trackEnd = 100000000; - this.setViewport(entry.animation); - this.pause(); - } - } - else if (!this.currentViewport) { - this.setViewport(entry.animation); - this.play(); - } - }; - SpinePlayer.prototype.setupInput = function () { - var _this = this; - var config = this.config; - var controlBones = config.controlBones; - if (!controlBones.length && !config.showControls) - return; - var selectedBones = this.selectedBones = new Array(controlBones.length); - var canvas = this.canvas; - var target = null; - var offset = new spine.Vector2(); - var coords = new spine.webgl.Vector3(); - var mouse = new spine.webgl.Vector3(); - var position = new spine.Vector2(); - var skeleton = this.skeleton; - var renderer = this.sceneRenderer; - var closest = function (x, y) { - mouse.set(x, canvas.clientHeight - y, 0); - offset.x = offset.y = 0; - var bestDistance = 24, index = 0; - var best; - for (var i = 0; i < controlBones.length; i++) { - selectedBones[i] = null; - var bone = skeleton.findBone(controlBones[i]); - var distance = renderer.camera.worldToScreen(coords.set(bone.worldX, bone.worldY, 0), canvas.clientWidth, canvas.clientHeight).distance(mouse); - if (distance < bestDistance) { - bestDistance = distance; - best = bone; - index = i; - offset.x = coords.x - mouse.x; - offset.y = coords.y - mouse.y; - } - } - if (best) - selectedBones[index] = best; - return best; - }; - new spine.webgl.Input(canvas).addListener({ - down: function (x, y) { - target = closest(x, y); - }, - up: function () { - if (target) - target = null; - else if (config.showControls) - (_this.paused ? _this.play() : _this.pause()); - }, - dragged: function (x, y) { - if (target) { - x = spine.MathUtils.clamp(x + offset.x, 0, canvas.clientWidth); - y = spine.MathUtils.clamp(y - offset.y, 0, canvas.clientHeight); - renderer.camera.screenToWorld(coords.set(x, y, 0), canvas.clientWidth, canvas.clientHeight); - if (target.parent) { - target.parent.worldToLocal(position.set(coords.x - skeleton.x, coords.y - skeleton.y)); - target.x = position.x; - target.y = position.y; - } - else { - target.x = coords.x - skeleton.x; - target.y = coords.y - skeleton.y; - } - } - }, - moved: function (x, y) { return closest(x, y); } - }); - if (config.showControls) { - document.addEventListener("mousemove", function (ev) { - if (ev instanceof MouseEvent) - handleHover_1(ev.clientX, ev.clientY); - }); - document.addEventListener("touchmove", function (ev) { - if (ev instanceof TouchEvent) { - var touches = ev.changedTouches; - if (touches.length) { - var touch = touches[0]; - handleHover_1(touch.clientX, touch.clientY); - } - } - }); - var overlap_1 = function (mouseX, mouseY, rect) { - var x = mouseX - rect.left, y = mouseY - rect.top; - return x >= 0 && x <= rect.width && y >= 0 && y <= rect.height; - }; - var mouseOverControls_1 = true, mouseOverCanvas_1 = false; - var handleHover_1 = function (mouseX, mouseY) { - var popup = findWithClass(_this.dom, "spine-player-popup"); - mouseOverControls_1 = overlap_1(mouseX, mouseY, _this.playerControls.getBoundingClientRect()); - mouseOverCanvas_1 = overlap_1(mouseX, mouseY, canvas.getBoundingClientRect()); - clearTimeout(_this.cancelId); - var hide = !popup && !mouseOverControls_1 && !mouseOverCanvas_1 && !_this.paused; - if (hide) - _this.playerControls.classList.add("spine-player-controls-hidden"); - else - _this.playerControls.classList.remove("spine-player-controls-hidden"); - if (!mouseOverControls_1 && !popup && !_this.paused) { - _this.cancelId = setTimeout(function () { - if (!_this.paused) - _this.playerControls.classList.add("spine-player-controls-hidden"); - }, 1000); - } - }; - } - }; - SpinePlayer.prototype.play = function () { - var _this = this; - this.paused = false; - var config = this.config; - if (config.showControls) { - this.cancelId = setTimeout(function () { - if (!_this.paused) - _this.playerControls.classList.add("spine-player-controls-hidden"); - }, 1000); - this.playButton.classList.remove("spine-player-button-icon-play"); - this.playButton.classList.add("spine-player-button-icon-pause"); - if (!config.animation) { - if (config.animations && config.animations.length) - config.animation = config.animations[0]; - else if (this.skeleton.data.animations.length) - config.animation = this.skeleton.data.animations[0].name; - if (config.animation) - this.setAnimation(config.animation); - } - } - }; - SpinePlayer.prototype.pause = function () { - this.paused = true; - if (this.config.showControls) { - this.playerControls.classList.remove("spine-player-controls-hidden"); - clearTimeout(this.cancelId); - this.playButton.classList.remove("spine-player-button-icon-pause"); - this.playButton.classList.add("spine-player-button-icon-play"); - } - }; - SpinePlayer.prototype.setAnimation = function (animation, loop) { - if (loop === void 0) { loop = true; } - animation = this.setViewport(animation); - return this.animationState.setAnimationWith(0, animation, loop); - }; - SpinePlayer.prototype.addAnimation = function (animation, loop, delay) { - if (loop === void 0) { loop = true; } - if (delay === void 0) { delay = 0; } - animation = this.setViewport(animation); - return this.animationState.addAnimationWith(0, animation, loop, delay); - }; - SpinePlayer.prototype.setViewport = function (animation) { - if (typeof animation == "string") - animation = this.skeleton.data.findAnimation(animation); - this.previousViewport = this.currentViewport; - var globalViewport = this.config.viewport; - var viewport = this.currentViewport = { - padLeft: globalViewport.padLeft !== void 0 ? globalViewport.padLeft : "10%", - padRight: globalViewport.padRight !== void 0 ? globalViewport.padRight : "10%", - padTop: globalViewport.padTop !== void 0 ? globalViewport.padTop : "10%", - padBottom: globalViewport.padBottom !== void 0 ? globalViewport.padBottom : "10%" - }; - if (globalViewport.x !== void 0 && globalViewport.y !== void 0 && globalViewport.width && globalViewport.height) { - viewport.x = globalViewport.x; - viewport.y = globalViewport.y; - viewport.width = globalViewport.width; - viewport.height = globalViewport.height; - } - else - this.calculateAnimationViewport(animation, viewport); - var userAnimViewport = this.config.viewport.animations[animation.name]; - if (userAnimViewport) { - if (userAnimViewport.x !== void 0 && userAnimViewport.y !== void 0 && userAnimViewport.width && userAnimViewport.height) { - viewport.x = userAnimViewport.x; - viewport.y = userAnimViewport.y; - viewport.width = userAnimViewport.width; - viewport.height = userAnimViewport.height; - } - if (userAnimViewport.padLeft !== void 0) - viewport.padLeft = userAnimViewport.padLeft; - if (userAnimViewport.padRight !== void 0) - viewport.padRight = userAnimViewport.padRight; - if (userAnimViewport.padTop !== void 0) - viewport.padTop = userAnimViewport.padTop; - if (userAnimViewport.padBottom !== void 0) - viewport.padBottom = userAnimViewport.padBottom; - } - viewport.padLeft = this.percentageToWorldUnit(viewport.width, viewport.padLeft); - viewport.padRight = this.percentageToWorldUnit(viewport.width, viewport.padRight); - viewport.padBottom = this.percentageToWorldUnit(viewport.height, viewport.padBottom); - viewport.padTop = this.percentageToWorldUnit(viewport.height, viewport.padTop); - this.viewportTransitionStart = performance.now(); - return animation; - }; - SpinePlayer.prototype.percentageToWorldUnit = function (size, percentageOrAbsolute) { - if (typeof percentageOrAbsolute === "string") - return size * parseFloat(percentageOrAbsolute.substr(0, percentageOrAbsolute.length - 1)) / 100; - return percentageOrAbsolute; - }; - SpinePlayer.prototype.calculateAnimationViewport = function (animation, viewport) { - this.skeleton.setToSetupPose(); - var steps = 100, stepTime = animation.duration ? animation.duration / steps : 0, time = 0; - var minX = 100000000, maxX = -100000000, minY = 100000000, maxY = -100000000; - var offset = new spine.Vector2(), size = new spine.Vector2(); - for (var i = 0; i < steps; i++, time += stepTime) { - animation.apply(this.skeleton, time, time, false, null, 1, spine.MixBlend.setup, spine.MixDirection.mixIn); - this.skeleton.updateWorldTransform(); - this.skeleton.getBounds(offset, size); - if (!isNaN(offset.x) && !isNaN(offset.y) && !isNaN(size.x) && !isNaN(size.y)) { - minX = Math.min(offset.x, minX); - maxX = Math.max(offset.x + size.x, maxX); - minY = Math.min(offset.y, minY); - maxY = Math.max(offset.y + size.y, maxY); - } - else - this.showError("Animation bounds are invalid: " + animation.name); - } - viewport.x = minX; - viewport.y = minY; - viewport.width = maxX - minX; - viewport.height = maxY - minY; - }; - SpinePlayer.prototype.drawFrame = function (requestNextFrame) { - var _this = this; - if (requestNextFrame === void 0) { requestNextFrame = true; } - try { - if (this.error) - return; - if (requestNextFrame && !this.stopRequestAnimationFrame) - requestAnimationFrame(function () { return _this.drawFrame(); }); - var doc = document; - var isFullscreen = doc.fullscreenElement || doc.webkitFullscreenElement || doc.mozFullScreenElement || doc.msFullscreenElement; - var bg = isFullscreen ? this.bgFullscreen : this.bg; - this.time.update(); - var delta = this.time.delta; - var loading = this.assetManager.isLoadingComplete(); - if (!this.skeleton && loading) - this.loadSkeleton(); - var skeleton = this.skeleton; - var config = this.config; - if (skeleton) { - var renderer = this.sceneRenderer; - renderer.resize(spine.webgl.ResizeMode.Expand); - var playDelta = this.paused ? 0 : delta * this.speed; - if (config.frame) - config.frame(this, playDelta); - if (!this.paused) { - this.animationState.update(playDelta); - this.animationState.apply(skeleton); - skeleton.updateWorldTransform(); - if (config.showControls) { - this.playTime += playDelta; - var entry = this.animationState.getCurrent(0); - if (entry) { - var duration = entry.animation.duration; - while (this.playTime >= duration && duration != 0) - this.playTime -= duration; - this.playTime = Math.max(0, Math.min(this.playTime, duration)); - this.timelineSlider.setValue(this.playTime / duration); - } - } - } - var viewport = this.viewport; - viewport.x = this.currentViewport.x - this.currentViewport.padLeft, - viewport.y = this.currentViewport.y - this.currentViewport.padBottom, - viewport.width = this.currentViewport.width + this.currentViewport.padLeft + this.currentViewport.padRight, - viewport.height = this.currentViewport.height + this.currentViewport.padBottom + this.currentViewport.padTop; - if (this.previousViewport) { - var transitionAlpha = (performance.now() - this.viewportTransitionStart) / 1000 / config.viewport.transitionTime; - if (transitionAlpha < 1) { - var x = this.previousViewport.x - this.previousViewport.padLeft; - var y = this.previousViewport.y - this.previousViewport.padBottom; - var width = this.previousViewport.width + this.previousViewport.padLeft + this.previousViewport.padRight; - var height = this.previousViewport.height + this.previousViewport.padBottom + this.previousViewport.padTop; - viewport.x = x + (viewport.x - x) * transitionAlpha; - viewport.y = y + (viewport.y - y) * transitionAlpha; - viewport.width = width + (viewport.width - width) * transitionAlpha; - viewport.height = height + (viewport.height - height) * transitionAlpha; - } - } - renderer.camera.zoom = this.canvas.height / this.canvas.width > viewport.height / viewport.width - ? viewport.width / this.canvas.width : viewport.height / this.canvas.height; - renderer.camera.position.x = viewport.x + viewport.width / 2; - renderer.camera.position.y = viewport.y + viewport.height / 2; - var gl = this.context.gl; - gl.clearColor(bg.r, bg.g, bg.b, bg.a); - gl.clear(gl.COLOR_BUFFER_BIT); - if (config.update) - config.update(this, playDelta); - renderer.begin(); - var bgImage = config.backgroundImage; - if (bgImage) { - var texture = this.assetManager.require(bgImage.url); - if (bgImage.x !== void 0 && bgImage.y !== void 0 && bgImage.width && bgImage.height) - renderer.drawTexture(texture, bgImage.x, bgImage.y, bgImage.width, bgImage.height); - else - renderer.drawTexture(texture, viewport.x, viewport.y, viewport.width, viewport.height); - } - renderer.drawSkeleton(skeleton, config.premultipliedAlpha); - if ((renderer.skeletonDebugRenderer.drawBones = config.debug.bones) - || (renderer.skeletonDebugRenderer.drawBoundingBoxes = config.debug.bounds) - || (renderer.skeletonDebugRenderer.drawClipping = config.debug.clipping) - || (renderer.skeletonDebugRenderer.drawMeshHull = config.debug.hulls) - || (renderer.skeletonDebugRenderer.drawPaths = config.debug.paths) - || (renderer.skeletonDebugRenderer.drawRegionAttachments = config.debug.regions) - || (renderer.skeletonDebugRenderer.drawMeshTriangles = config.debug.meshes)) { - renderer.drawSkeletonDebug(skeleton, config.premultipliedAlpha); - } - var controlBones = config.controlBones; - if (controlBones.length) { - var selectedBones = this.selectedBones; - gl.lineWidth(2); - for (var i = 0; i < controlBones.length; i++) { - var bone = skeleton.findBone(controlBones[i]); - if (!bone) - continue; - var colorInner = selectedBones[i] ? BONE_INNER_OVER : BONE_INNER; - var colorOuter = selectedBones[i] ? BONE_OUTER_OVER : BONE_OUTER; - renderer.circle(true, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorInner); - renderer.circle(false, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorOuter); - } - } - if (config.viewport.debugRender) { - gl.lineWidth(1); - renderer.rect(false, this.currentViewport.x, this.currentViewport.y, this.currentViewport.width, this.currentViewport.height, spine.Color.GREEN); - renderer.rect(false, viewport.x, viewport.y, viewport.width, viewport.height, spine.Color.RED); - } - renderer.end(); - if (config.draw) - config.draw(this, playDelta); - } - if (config.showLoading) { - this.loadingScreen.backgroundColor.setFromColor(bg); - this.loadingScreen.draw(loading); - } - if (loading && config.loading) - config.loading(this, delta); - } - catch (e) { - this.showError("Error: Unable to render skeleton.\n" + e.message, e); - } - }; - SpinePlayer.prototype.stopRendering = function () { - this.stopRequestAnimationFrame = true; - }; - SpinePlayer.prototype.hidePopup = function (id) { - return this.popup && this.popup.hide(id); - }; - SpinePlayer.prototype.showSpeedDialog = function (speedButton) { - var _this = this; - var id = "speed"; - if (this.hidePopup(id)) - return; - var popup = new Popup(id, speedButton, this, this.playerControls, "\n
Speed
\n
\n
\n
\n\t
\n\t
0.1x
1x
2x
\n
\n
"); - var slider = new Slider(2, 0.1, true); - findWithClass(popup.dom, "spine-player-speed-slider").appendChild(slider.create()); - slider.setValue(this.speed / 2); - slider.change = function (percentage) { return _this.speed = percentage * 2; }; - popup.show(); - }; - SpinePlayer.prototype.showAnimationsDialog = function (animationsButton) { - var _this = this; - var id = "animations"; - if (this.hidePopup(id)) - return; - if (!this.skeleton || !this.skeleton.data.animations.length) - return; - var popup = new Popup(id, animationsButton, this, this.playerControls, "
Animations

    "); - var rows = findWithClass(popup.dom, "spine-player-list"); - this.skeleton.data.animations.forEach(function (animation) { - if (_this.config.animations && _this.config.animations.indexOf(animation.name) < 0) - return; - var row = createElement("
  • "); - if (animation.name == _this.config.animation) - row.classList.add("selected"); - findWithClass(row, "selectable-text").innerText = animation.name; - rows.appendChild(row); - row.onclick = function () { - removeClass(rows.children, "selected"); - row.classList.add("selected"); - _this.config.animation = animation.name; - _this.playTime = 0; - _this.setAnimation(animation.name); - _this.play(); - }; - }); - popup.show(); - }; - SpinePlayer.prototype.showSkinsDialog = function (skinButton) { - var _this = this; - var id = "skins"; - if (this.hidePopup(id)) - return; - if (!this.skeleton || !this.skeleton.data.animations.length) - return; - var popup = new Popup(id, skinButton, this, this.playerControls, "
    Skins

      "); - var rows = findWithClass(popup.dom, "spine-player-list"); - this.skeleton.data.skins.forEach(function (skin) { - if (_this.config.skins && _this.config.skins.indexOf(skin.name) < 0) - return; - var row = createElement("
    • "); - if (skin.name == _this.config.skin) - row.classList.add("selected"); - findWithClass(row, "selectable-text").innerText = skin.name; - rows.appendChild(row); - row.onclick = function () { - removeClass(rows.children, "selected"); - row.classList.add("selected"); - _this.config.skin = skin.name; - _this.skeleton.setSkinByName(_this.config.skin); - _this.skeleton.setSlotsToSetupPose(); - }; - }); - popup.show(); - }; - SpinePlayer.prototype.showSettingsDialog = function (settingsButton) { - var _this = this; - var id = "settings"; - if (this.hidePopup(id)) - return; - if (!this.skeleton || !this.skeleton.data.animations.length) - return; - var popup = new Popup(id, settingsButton, this, this.playerControls, "
      Debug

        "); - var rows = findWithClass(popup.dom, "spine-player-list"); - var makeItem = function (label, name) { - var row = createElement("
      • "); - var s = new Switch(label); - row.appendChild(s.create()); - var debug = _this.config.debug; - s.setEnabled(debug[name]); - s.change = function (value) { return debug[name] = value; }; - rows.appendChild(row); - }; - makeItem("Bones", "bones"); - makeItem("Regions", "regions"); - makeItem("Meshes", "meshes"); - makeItem("Bounds", "bounds"); - makeItem("Paths", "paths"); - makeItem("Clipping", "clipping"); - makeItem("Points", "points"); - makeItem("Hulls", "hulls"); - popup.show(); - }; - SpinePlayer.prototype.showError = function (message, error) { - if (error === void 0) { error = null; } - if (this.error) { - if (error) - throw error; - } - else { - this.error = true; - this.dom.appendChild(createElement("
        " - + message.replace("\n", "

        ") + "
        ")); - if (this.config.error) - this.config.error(this, message); - throw (error ? error : new Error(message)); - } - }; - return SpinePlayer; - }()); - spine.SpinePlayer = SpinePlayer; - var Popup = (function () { - function Popup(id, button, player, parent, htmlContent) { - this.id = id; - this.button = button; - this.player = player; - this.dom = createElement("
        "); - this.dom.innerHTML = htmlContent; - parent.appendChild(this.dom); - this.className = "spine-player-button-icon-" + id + "-selected"; - } - Popup.prototype.hide = function (id) { - this.dom.remove(); - this.button.classList.remove(this.className); - if (this.id == id) { - this.player.popup = null; - return true; - } - }; - Popup.prototype.show = function () { - var _this = this; - this.player.popup = this; - this.button.classList.add(this.className); - this.dom.classList.remove("spine-player-hidden"); - var dismissed = false; - var resize = function () { - if (!dismissed) - requestAnimationFrame(resize); - var playerDom = _this.player.dom; - var bottomOffset = Math.abs(playerDom.getBoundingClientRect().bottom - playerDom.getBoundingClientRect().bottom); - var rightOffset = Math.abs(playerDom.getBoundingClientRect().right - playerDom.getBoundingClientRect().right); - _this.dom.style.maxHeight = (playerDom.clientHeight - bottomOffset - rightOffset) + "px"; - }; - requestAnimationFrame(resize); - var justClicked = true; - var windowClickListener = function (event) { - if (justClicked || _this.player.popup != _this) { - justClicked = false; - return; - } - if (!_this.dom.contains(event.target)) { - _this.dom.remove(); - window.removeEventListener("click", windowClickListener); - _this.button.classList.remove(_this.className); - _this.player.popup = null; - dismissed = true; - } - }; - window.addEventListener("click", windowClickListener); - }; - return Popup; - }()); - var Switch = (function () { - function Switch(text) { - this.text = text; - this.enabled = false; - } - Switch.prototype.create = function () { - var _this = this; - this["switch"] = createElement("\n
        \n\t" + this.text + "\n\t
        \n\t\t
        \n\t
        \n
        "); - this["switch"].addEventListener("click", function () { - _this.setEnabled(!_this.enabled); - if (_this.change) - _this.change(_this.enabled); - }); - return this["switch"]; - }; - Switch.prototype.setEnabled = function (enabled) { - if (enabled) - this["switch"].classList.add("active"); - else - this["switch"].classList.remove("active"); - this.enabled = enabled; - }; - Switch.prototype.isEnabled = function () { - return this.enabled; - }; - return Switch; - }()); - var Slider = (function () { - function Slider(snaps, snapPercentage, big) { - if (snaps === void 0) { snaps = 0; } - if (snapPercentage === void 0) { snapPercentage = 0.1; } - if (big === void 0) { big = false; } - this.snaps = snaps; - this.snapPercentage = snapPercentage; - this.big = big; - } - Slider.prototype.create = function () { - var _this = this; - this.slider = createElement("\n
        \n\t
        \n\t\n
        "); - this.value = findWithClass(this.slider, "spine-player-slider-value"); - this.setValue(0); - var dragging = false; - new spine.webgl.Input(this.slider).addListener({ - down: function (x, y) { - dragging = true; - _this.value.classList.add("hovering"); - }, - up: function (x, y) { - dragging = false; - if (_this.change) - _this.change(_this.setValue(x / _this.slider.clientWidth)); - _this.value.classList.remove("hovering"); - }, - moved: function (x, y) { - if (dragging && _this.change) - _this.change(_this.setValue(x / _this.slider.clientWidth)); - }, - dragged: function (x, y) { - if (_this.change) - _this.change(_this.setValue(x / _this.slider.clientWidth)); - } - }); - return this.slider; - }; - Slider.prototype.setValue = function (percentage) { - percentage = Math.max(0, Math.min(1, percentage)); - if (this.snaps) { - var snap = 1 / this.snaps; - var modulo = percentage % snap; - if (modulo < snap * this.snapPercentage) - percentage = percentage - modulo; - else if (modulo > snap - snap * this.snapPercentage) - percentage = percentage - modulo + snap; - percentage = Math.max(0, Math.min(1, percentage)); - } - this.value.style.width = "" + (percentage * 100) + "%"; - return percentage; - }; - return Slider; - }()); - function findWithClass(element, className) { - return element.getElementsByClassName(className)[0]; - } - function createElement(html) { - var div = document.createElement("div"); - div.innerHTML = html; - return div.children[0]; - } - function removeClass(elements, clazz) { - for (var i = 0; i < elements.length; i++) - elements[i].classList.remove(clazz); - } - function toString(object) { - return JSON.stringify(object) - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); - } - var BONE_INNER_OVER = new spine.Color(0.478, 0, 0, 0.25); - var BONE_OUTER_OVER = new spine.Color(1, 1, 1, 1); - var BONE_INNER = new spine.Color(0.478, 0, 0, 0.5); - var BONE_OUTER = new spine.Color(1, 0, 0, 0.8); -})(spine || (spine = {})); -var spine; -(function (spine) { - var SpinePlayerEditor = (function () { - function SpinePlayerEditor(parent) { - this.prefix = "\n\n\n\n".trim(); - this.postfix = ""; - this.timerId = 0; - this.render(parent); - } - SpinePlayerEditor.prototype.render = function (parent) { - var _this = this; - var dom = "\n\t\t\t\t
        \n\t\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t"; - parent.innerHTML = dom; - var codeElement = parent.getElementsByClassName("spine-player-editor-code")[0]; - this.player = parent.getElementsByClassName("spine-player-editor-player")[0]; - requestAnimationFrame(function () { - _this.code = CodeMirror(codeElement, { - lineNumbers: true, - tabSize: 3, - indentUnit: 3, - indentWithTabs: true, - scrollBarStyle: "native", - mode: "htmlmixed", - theme: "monokai" - }); - _this.code.on("change", function () { - _this.startPlayer(); - }); - _this.setCode(SpinePlayerEditor.DEFAULT_CODE); - }); - }; - SpinePlayerEditor.prototype.setPreAndPostfix = function (prefix, postfix) { - this.prefix = prefix; - this.postfix = postfix; - this.startPlayer(); - }; - SpinePlayerEditor.prototype.setCode = function (code) { - this.code.setValue(code); - this.startPlayer(); - }; - SpinePlayerEditor.prototype.startPlayer = function () { - var _this = this; - clearTimeout(this.timerId); - this.timerId = setTimeout(function () { - var code = _this.code.getDoc().getValue(); - code = _this.prefix + code + _this.postfix; - code = window.btoa(code); - _this.player.src = ""; - _this.player.src = "data:text/html;base64," + code; - }, 500); - }; - SpinePlayerEditor.DEFAULT_CODE = "\n\n\n\n
        \n\n\n\t\t".trim(); - return SpinePlayerEditor; - }()); - spine.SpinePlayerEditor = SpinePlayerEditor; -})(spine || (spine = {})); -//# sourceMappingURL=spine-all.js.map \ No newline at end of file diff --git a/spine-ts/build/spine-all.js.map b/spine-ts/build/spine-all.js.map deleted file mode 100644 index cd2fb6a7d..000000000 --- a/spine-ts/build/spine-all.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"spine-all.js","sourceRoot":"","sources":["../core/src/Animation.ts","../core/src/AnimationState.ts","../core/src/AnimationStateData.ts","../core/src/AssetManager.ts","../core/src/AtlasAttachmentLoader.ts","../core/src/Bone.ts","../core/src/BoneData.ts","../core/src/ConstraintData.ts","../core/src/Event.ts","../core/src/EventData.ts","../core/src/IkConstraint.ts","../core/src/IkConstraintData.ts","../core/src/PathConstraint.ts","../core/src/PathConstraintData.ts","../core/src/Skeleton.ts","../core/src/SkeletonBinary.ts","../core/src/SkeletonBounds.ts","../core/src/SkeletonClipping.ts","../core/src/SkeletonData.ts","../core/src/SkeletonJson.ts","../core/src/Skin.ts","../core/src/Slot.ts","../core/src/SlotData.ts","../core/src/Texture.ts","../core/src/TextureAtlas.ts","../core/src/TransformConstraint.ts","../core/src/TransformConstraintData.ts","../core/src/Triangulator.ts","../core/src/Updatable.ts","../core/src/Utils.ts","../core/src/VertexEffect.ts","../core/src/polyfills.ts","../core/src/attachments/Attachment.ts","../core/src/attachments/AttachmentLoader.ts","../core/src/attachments/BoundingBoxAttachment.ts","../core/src/attachments/ClippingAttachment.ts","../core/src/attachments/MeshAttachment.ts","../core/src/attachments/PathAttachment.ts","../core/src/attachments/PointAttachment.ts","../core/src/attachments/RegionAttachment.ts","../core/src/vertexeffects/JitterEffect.ts","../core/src/vertexeffects/SwirlEffect.ts","../canvas/src/AssetManager.ts","../canvas/src/CanvasTexture.ts","../canvas/src/SkeletonRenderer.ts","../webgl/src/AssetManager.ts","../webgl/src/Camera.ts","../webgl/src/GLTexture.ts","../webgl/src/Input.ts","../webgl/src/LoadingScreen.ts","../webgl/src/Matrix4.ts","../webgl/src/Mesh.ts","../webgl/src/PolygonBatcher.ts","../webgl/src/SceneRenderer.ts","../webgl/src/Shader.ts","../webgl/src/ShapeRenderer.ts","../webgl/src/SkeletonDebugRenderer.ts","../webgl/src/SkeletonRenderer.ts","../webgl/src/Vector3.ts","../webgl/src/WebGL.ts","../threejs/src/AssetManager.ts","../threejs/src/MeshBatcher.ts","../threejs/src/SkeletonMesh.ts","../threejs/src/ThreeJsTexture.ts","../player/src/Player.ts","../player/src/PlayerEditor.ts"],"names":[],"mappings":"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,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBAClH,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC7G,IAAI,KAAK,IAAI,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACb,CAAC;YAED,6BAAW,GAAX;gBACC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,OAAO,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBAC7G,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,M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,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,8BAAY,GAAZ,UAAc,MAAe;gBAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAClB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,OAAO,IAAI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"} \ No newline at end of file diff --git a/spine-ts/build/spine-canvas.d.ts b/spine-ts/build/spine-canvas.d.ts deleted file mode 100644 index bb2f5a5fa..000000000 --- a/spine-ts/build/spine-canvas.d.ts +++ /dev/null @@ -1,1289 +0,0 @@ -declare module spine { - class Animation { - name: string; - timelines: Array; - timelineIds: StringSet; - duration: number; - constructor(name: string, timelines: Array, duration: number); - setTimelines(timelines: Array): void; - hasTimeline(ids: string[]): boolean; - apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - enum MixBlend { - setup = 0, - first = 1, - replace = 2, - add = 3 - } - enum MixDirection { - mixIn = 0, - mixOut = 1 - } - abstract class Timeline { - propertyIds: string[]; - frames: ArrayLike; - constructor(frameCount: number, propertyIds: string[]); - getPropertyIds(): string[]; - getFrameEntries(): number; - getFrameCount(): number; - getDuration(): number; - abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - static search1(frames: ArrayLike, time: number): number; - static search(frames: ArrayLike, time: number, step: number): number; - } - interface BoneTimeline { - boneIndex: number; - } - interface SlotTimeline { - slotIndex: number; - } - abstract class CurveTimeline extends Timeline { - protected curves: ArrayLike; - constructor(frameCount: number, bezierCount: number, propertyIds: string[]); - setLinear(frame: number): void; - setStepped(frame: number): void; - shrink(bezierCount: number): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number; - } - abstract class CurveTimeline1 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value: number): void; - getCurveValue(time: number): number; - } - abstract class CurveTimeline2 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId1: string, propertyId2: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value1: number, value2: number): void; - } - class RotateTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBATimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AlphaTimeline extends CurveTimeline1 implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBA2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGB2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AttachmentTimeline extends Timeline implements SlotTimeline { - slotIndex: number; - attachmentNames: Array; - constructor(frameCount: number, slotIndex: number); - getFrameCount(): number; - setFrame(frame: number, time: number, attachmentName: string): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; - } - class DeformTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - attachment: VertexAttachment; - vertices: Array>; - constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment); - getFrameCount(): number; - setFrame(frame: number, time: number, vertices: ArrayLike): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getCurvePercent(time: number, frame: number): number; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class EventTimeline extends Timeline { - static propertyIds: string[]; - events: Array; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, event: Event): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class DrawOrderTimeline extends Timeline { - static propertyIds: string[]; - drawOrders: Array>; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, time: number, drawOrder: Array): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class IkConstraintTimeline extends CurveTimeline { - ikConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TransformConstraintTimeline extends CurveTimeline { - transformConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintPositionTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintSpacingTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintMixTimeline extends CurveTimeline { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } -} -declare module spine { - class AnimationState { - private static emptyAnimation; - data: AnimationStateData; - tracks: TrackEntry[]; - timeScale: number; - unkeyedState: number; - events: Event[]; - listeners: AnimationStateListener[]; - queue: EventQueue; - propertyIDs: StringSet; - animationsChanged: boolean; - trackEntryPool: Pool; - constructor(data: AnimationStateData); - update(delta: number): void; - updateMixingFrom(to: TrackEntry, delta: number): boolean; - apply(skeleton: Skeleton): boolean; - applyMixingFrom(to: TrackEntry, skeleton: Skeleton, blend: MixBlend): number; - applyAttachmentTimeline(timeline: AttachmentTimeline, skeleton: Skeleton, time: number, blend: MixBlend, attachments: boolean): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string, attachments: boolean): void; - applyRotateTimeline(timeline: RotateTimeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array, i: number, firstFrame: boolean): void; - queueEvents(entry: TrackEntry, animationTime: number): void; - clearTracks(): void; - clearTrack(trackIndex: number): void; - setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; - setAnimation(trackIndex: number, animationName: string, loop?: boolean): TrackEntry; - setAnimationWith(trackIndex: number, animation: Animation, loop?: boolean): TrackEntry; - addAnimation(trackIndex: number, animationName: string, loop?: boolean, delay?: number): TrackEntry; - addAnimationWith(trackIndex: number, animation: Animation, loop?: boolean, delay?: number): TrackEntry; - setEmptyAnimation(trackIndex: number, mixDuration?: number): TrackEntry; - addEmptyAnimation(trackIndex: number, mixDuration?: number, delay?: number): TrackEntry; - setEmptyAnimations(mixDuration?: number): void; - expandToIndex(index: number): TrackEntry; - trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; - clearNext(entry: TrackEntry): void; - _animationsChanged(): void; - computeHold(entry: TrackEntry): void; - getCurrent(trackIndex: number): TrackEntry; - addListener(listener: AnimationStateListener): void; - removeListener(listener: AnimationStateListener): void; - clearListeners(): void; - clearListenerNotifications(): void; - } - class TrackEntry { - animation: Animation; - previous: TrackEntry; - next: TrackEntry; - mixingFrom: TrackEntry; - mixingTo: TrackEntry; - listener: AnimationStateListener; - trackIndex: number; - loop: boolean; - holdPrevious: boolean; - reverse: boolean; - eventThreshold: number; - attachmentThreshold: number; - drawOrderThreshold: number; - animationStart: number; - animationEnd: number; - animationLast: number; - nextAnimationLast: number; - delay: number; - trackTime: number; - trackLast: number; - nextTrackLast: number; - trackEnd: number; - timeScale: number; - alpha: number; - mixTime: number; - mixDuration: number; - interruptAlpha: number; - totalAlpha: number; - mixBlend: MixBlend; - timelineMode: number[]; - timelineHoldMix: TrackEntry[]; - timelinesRotation: number[]; - reset(): void; - getAnimationTime(): number; - setAnimationLast(animationLast: number): void; - isComplete(): boolean; - resetRotationDirections(): void; - getTrackComplete(): number; - } - class EventQueue { - objects: Array; - drainDisabled: boolean; - animState: AnimationState; - constructor(animState: AnimationState); - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - drain(): void; - clear(): void; - } - enum EventType { - start = 0, - interrupt = 1, - end = 2, - dispose = 3, - complete = 4, - event = 5 - } - interface AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } - abstract class AnimationStateAdapter implements AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } -} -declare module spine { - class AnimationStateData { - skeletonData: SkeletonData; - animationToMixTime: Map; - defaultMix: number; - constructor(skeletonData: SkeletonData); - setMix(fromName: string, toName: string, duration: number): void; - setMixWith(from: Animation, to: Animation, duration: number): void; - getMix(from: Animation, to: Animation): number; - } -} -declare module spine { - class AssetManager implements Disposable { - private pathPrefix; - private textureLoader; - private downloader; - private assets; - private errors; - private toLoad; - private loaded; - constructor(textureLoader: (image: HTMLImageElement | ImageBitmap) => Texture, pathPrefix?: string, downloader?: Downloader); - private start; - private success; - private error; - setRawDataURI(path: string, data: string): void; - loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, message: string) => void): void; - loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, message: string) => void): void; - loadJson(path: string, success?: (path: string, object: object) => void, error?: (path: string, message: string) => void): void; - loadTexture(path: string, success?: (path: string, texture: Texture) => void, error?: (path: string, message: string) => void): void; - loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, message: string) => void): void; - get(path: string): any; - require(path: string): any; - remove(path: string): any; - removeAll(): void; - isLoadingComplete(): boolean; - getToLoad(): number; - getLoaded(): number; - dispose(): void; - hasErrors(): boolean; - getErrors(): Map; - } - class Downloader { - private callbacks; - rawDataUris: Map; - downloadText(url: string, success: (data: string) => void, error: (status: number, responseText: string) => void): void; - downloadJson(url: string, success: (data: object) => void, error: (status: number, responseText: string) => void): void; - downloadBinary(url: string, success: (data: Uint8Array) => void, error: (status: number, responseText: string) => void): void; - private start; - private finish; - } -} -declare module spine { - class AtlasAttachmentLoader implements AttachmentLoader { - atlas: TextureAtlas; - constructor(atlas: TextureAtlas); - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - class Bone implements Updatable { - data: BoneData; - skeleton: Skeleton; - parent: Bone; - children: Bone[]; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - ax: number; - ay: number; - arotation: number; - ascaleX: number; - ascaleY: number; - ashearX: number; - ashearY: number; - a: number; - b: number; - c: number; - d: number; - worldY: number; - worldX: number; - sorted: boolean; - active: boolean; - constructor(data: BoneData, skeleton: Skeleton, parent: Bone); - isActive(): boolean; - update(): void; - updateWorldTransform(): void; - updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; - setToSetupPose(): void; - getWorldRotationX(): number; - getWorldRotationY(): number; - getWorldScaleX(): number; - getWorldScaleY(): number; - updateAppliedTransform(): void; - worldToLocal(world: Vector2): Vector2; - localToWorld(local: Vector2): Vector2; - worldToLocalRotation(worldRotation: number): number; - localToWorldRotation(localRotation: number): number; - rotateWorld(degrees: number): void; - } -} -declare module spine { - class BoneData { - index: number; - name: string; - parent: BoneData; - length: number; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - transformMode: TransformMode; - skinRequired: boolean; - color: Color; - constructor(index: number, name: string, parent: BoneData); - } - enum TransformMode { - Normal = 0, - OnlyTranslation = 1, - NoRotationOrReflection = 2, - NoScale = 3, - NoScaleOrReflection = 4 - } -} -declare module spine { - abstract class ConstraintData { - name: string; - order: number; - skinRequired: boolean; - constructor(name: string, order: number, skinRequired: boolean); - } -} -declare module spine { - class Event { - data: EventData; - intValue: number; - floatValue: number; - stringValue: string; - time: number; - volume: number; - balance: number; - constructor(time: number, data: EventData); - } -} -declare module spine { - class EventData { - name: string; - intValue: number; - floatValue: number; - stringValue: string; - audioPath: string; - volume: number; - balance: number; - constructor(name: string); - } -} -declare module spine { - class IkConstraint implements Updatable { - data: IkConstraintData; - bones: Array; - target: Bone; - bendDirection: number; - compress: boolean; - stretch: boolean; - mix: number; - softness: number; - active: boolean; - constructor(data: IkConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; - apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, uniform: boolean, softness: number, alpha: number): void; - } -} -declare module spine { - class IkConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - bendDirection: number; - compress: boolean; - stretch: boolean; - uniform: boolean; - mix: number; - softness: number; - constructor(name: string); - } -} -declare module spine { - class PathConstraint implements Updatable { - static NONE: number; - static BEFORE: number; - static AFTER: number; - static epsilon: number; - data: PathConstraintData; - bones: Array; - target: Slot; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - spaces: number[]; - positions: number[]; - world: number[]; - curves: number[]; - lengths: number[]; - segments: number[]; - active: boolean; - constructor(data: PathConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[]; - addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; - } -} -declare module spine { - class PathConstraintData extends ConstraintData { - bones: BoneData[]; - target: SlotData; - positionMode: PositionMode; - spacingMode: SpacingMode; - rotateMode: RotateMode; - offsetRotation: number; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - constructor(name: string); - } - enum PositionMode { - Fixed = 0, - Percent = 1 - } - enum SpacingMode { - Length = 0, - Fixed = 1, - Percent = 2, - Proportional = 3 - } - enum RotateMode { - Tangent = 0, - Chain = 1, - ChainScale = 2 - } -} -declare module spine { - class Skeleton { - data: SkeletonData; - bones: Array; - slots: Array; - drawOrder: Array; - ikConstraints: Array; - transformConstraints: Array; - pathConstraints: Array; - _updateCache: Updatable[]; - skin: Skin; - color: Color; - time: number; - scaleX: number; - scaleY: number; - x: number; - y: number; - constructor(data: SkeletonData); - updateCache(): void; - sortIkConstraint(constraint: IkConstraint): void; - sortPathConstraint(constraint: PathConstraint): void; - sortTransformConstraint(constraint: TransformConstraint): void; - sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; - sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; - sortBone(bone: Bone): void; - sortReset(bones: Array): void; - updateWorldTransform(): void; - updateWorldTransformWith(parent: Bone): void; - setToSetupPose(): void; - setBonesToSetupPose(): void; - setSlotsToSetupPose(): void; - getRootBone(): Bone; - findBone(boneName: string): Bone; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): Slot; - findSlotIndex(slotName: string): number; - setSkinByName(skinName: string): void; - setSkin(newSkin: Skin): void; - getAttachmentByName(slotName: string, attachmentName: string): Attachment; - getAttachment(slotIndex: number, attachmentName: string): Attachment; - setAttachment(slotName: string, attachmentName: string): void; - findIkConstraint(constraintName: string): IkConstraint; - findTransformConstraint(constraintName: string): TransformConstraint; - findPathConstraint(constraintName: string): PathConstraint; - getBounds(offset: Vector2, size: Vector2, temp?: Array): void; - update(delta: number): void; - } -} -declare module spine { - class SkeletonBinary { - scale: number; - attachmentLoader: AttachmentLoader; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(binary: Uint8Array): SkeletonData; - private readSkin; - private readAttachment; - private readVertices; - private readFloatArray; - private readShortArray; - private readAnimation; - } -} -declare module spine { - class SkeletonBounds { - minX: number; - minY: number; - maxX: number; - maxY: number; - boundingBoxes: BoundingBoxAttachment[]; - polygons: ArrayLike[]; - private polygonPool; - update(skeleton: Skeleton, updateAabb: boolean): void; - aabbCompute(): void; - aabbContainsPoint(x: number, y: number): boolean; - aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; - aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; - containsPoint(x: number, y: number): BoundingBoxAttachment; - containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; - intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; - intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; - getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; - getWidth(): number; - getHeight(): number; - } -} -declare module spine { - class SkeletonClipping { - private triangulator; - private clippingPolygon; - private clipOutput; - clippedVertices: number[]; - clippedTriangles: number[]; - private scratch; - private clipAttachment; - private clippingPolygons; - clipStart(slot: Slot, clip: ClippingAttachment): number; - clipEndWithSlot(slot: Slot): void; - clipEnd(): void; - isClipping(): boolean; - clipTriangles(vertices: ArrayLike, verticesLength: number, triangles: ArrayLike, trianglesLength: number, uvs: ArrayLike, light: Color, dark: Color, twoColor: boolean): void; - clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array, output: Array): boolean; - static makeClockwise(polygon: ArrayLike): void; - } -} -declare module spine { - class SkeletonData { - name: string; - bones: BoneData[]; - slots: SlotData[]; - skins: Skin[]; - defaultSkin: Skin; - events: EventData[]; - animations: Animation[]; - ikConstraints: IkConstraintData[]; - transformConstraints: TransformConstraintData[]; - pathConstraints: PathConstraintData[]; - x: number; - y: number; - width: number; - height: number; - version: string; - hash: string; - fps: number; - imagesPath: string; - audioPath: string; - findBone(boneName: string): BoneData; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): SlotData; - findSlotIndex(slotName: string): number; - findSkin(skinName: string): Skin; - findEvent(eventDataName: string): EventData; - findAnimation(animationName: string): Animation; - findIkConstraint(constraintName: string): IkConstraintData; - findTransformConstraint(constraintName: string): TransformConstraintData; - findPathConstraint(constraintName: string): PathConstraintData; - } -} -declare module spine { - class SkeletonJson { - attachmentLoader: AttachmentLoader; - scale: number; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(json: string | any): SkeletonData; - readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; - readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; - readAnimation(map: any, name: string, skeletonData: SkeletonData): void; - } -} -declare module spine { - class SkinEntry { - slotIndex: number; - name: string; - attachment: Attachment; - constructor(slotIndex: number, name: string, attachment: Attachment); - } - class Skin { - name: string; - attachments: Map[]; - bones: BoneData[]; - constraints: ConstraintData[]; - constructor(name: string); - setAttachment(slotIndex: number, name: string, attachment: Attachment): void; - addSkin(skin: Skin): void; - copySkin(skin: Skin): void; - getAttachment(slotIndex: number, name: string): Attachment; - removeAttachment(slotIndex: number, name: string): void; - getAttachments(): Array; - getAttachmentsForSlot(slotIndex: number, attachments: Array): void; - clear(): void; - attachAll(skeleton: Skeleton, oldSkin: Skin): void; - } -} -declare module spine { - class Slot { - data: SlotData; - bone: Bone; - color: Color; - darkColor: Color; - attachment: Attachment; - private attachmentTime; - attachmentState: number; - deform: number[]; - constructor(data: SlotData, bone: Bone); - getSkeleton(): Skeleton; - getAttachment(): Attachment; - setAttachment(attachment: Attachment): void; - setAttachmentTime(time: number): void; - getAttachmentTime(): number; - setToSetupPose(): void; - } -} -declare module spine { - class SlotData { - index: number; - name: string; - boneData: BoneData; - color: Color; - darkColor: Color; - attachmentName: string; - blendMode: BlendMode; - constructor(index: number, name: string, boneData: BoneData); - } - enum BlendMode { - Normal = 0, - Additive = 1, - Multiply = 2, - Screen = 3 - } -} -declare module spine { - abstract class Texture { - protected _image: HTMLImageElement | ImageBitmap; - constructor(image: HTMLImageElement | ImageBitmap); - getImage(): HTMLImageElement | ImageBitmap; - abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - abstract dispose(): void; - } - enum TextureFilter { - Nearest = 9728, - Linear = 9729, - MipMap = 9987, - MipMapNearestNearest = 9984, - MipMapLinearNearest = 9985, - MipMapNearestLinear = 9986, - MipMapLinearLinear = 9987 - } - enum TextureWrap { - MirroredRepeat = 33648, - ClampToEdge = 33071, - Repeat = 10497 - } - class TextureRegion { - renderObject: any; - u: number; - v: number; - u2: number; - v2: number; - width: number; - height: number; - degrees: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - } - class FakeTexture extends Texture { - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - } -} -declare module spine { - class TextureAtlas implements Disposable { - pages: TextureAtlasPage[]; - regions: TextureAtlasRegion[]; - constructor(atlasText: string); - findRegion(name: string): TextureAtlasRegion; - setTextures(assetManager: AssetManager, pathPrefix?: string): void; - dispose(): void; - } - class TextureAtlasPage { - name: string; - minFilter: TextureFilter; - magFilter: TextureFilter; - uWrap: TextureWrap; - vWrap: TextureWrap; - texture: Texture; - width: number; - height: number; - pma: boolean; - setTexture(texture: Texture): void; - } - class TextureAtlasRegion extends TextureRegion { - page: TextureAtlasPage; - name: string; - x: number; - y: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - index: number; - degrees: number; - names: string[]; - values: number[][]; - } -} -declare module spine { - class TransformConstraint implements Updatable { - data: TransformConstraintData; - bones: Array; - target: Bone; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - temp: Vector2; - active: boolean; - constructor(data: TransformConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - applyAbsoluteWorld(): void; - applyRelativeWorld(): void; - applyAbsoluteLocal(): void; - applyRelativeLocal(): void; - } -} -declare module spine { - class TransformConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - offsetRotation: number; - offsetX: number; - offsetY: number; - offsetScaleX: number; - offsetScaleY: number; - offsetShearY: number; - relative: boolean; - local: boolean; - constructor(name: string); - } -} -declare module spine { - class Triangulator { - private convexPolygons; - private convexPolygonsIndices; - private indicesArray; - private isConcaveArray; - private triangles; - private polygonPool; - private polygonIndicesPool; - triangulate(verticesArray: ArrayLike): Array; - decompose(verticesArray: Array, triangles: Array): Array>; - private static isConcave; - private static positiveArea; - private static winding; - } -} -declare module spine { - interface Updatable { - update(): void; - isActive(): boolean; - } -} -declare module spine { - interface Map { - [key: string]: T; - } - class IntSet { - array: number[]; - add(value: number): boolean; - contains(value: number): boolean; - remove(value: number): void; - clear(): void; - } - class StringSet { - entries: Map; - size: number; - add(value: string): boolean; - addAll(values: string[]): boolean; - contains(value: string): boolean; - clear(): void; - } - interface Disposable { - dispose(): void; - } - interface Restorable { - restore(): void; - } - class Color { - r: number; - g: number; - b: number; - a: number; - static WHITE: Color; - static RED: Color; - static GREEN: Color; - static BLUE: Color; - static MAGENTA: Color; - constructor(r?: number, g?: number, b?: number, a?: number); - set(r: number, g: number, b: number, a: number): this; - setFromColor(c: Color): this; - setFromString(hex: string): this; - add(r: number, g: number, b: number, a: number): this; - clamp(): this; - static rgba8888ToColor(color: Color, value: number): void; - static rgb888ToColor(color: Color, value: number): void; - static fromString(hex: string): Color; - } - class MathUtils { - static PI: number; - static PI2: number; - static radiansToDegrees: number; - static radDeg: number; - static degreesToRadians: number; - static degRad: number; - static clamp(value: number, min: number, max: number): number; - static cosDeg(degrees: number): number; - static sinDeg(degrees: number): number; - static signum(value: number): number; - static toInt(x: number): number; - static cbrt(x: number): number; - static randomTriangular(min: number, max: number): number; - static randomTriangularWith(min: number, max: number, mode: number): number; - } - abstract class Interpolation { - protected abstract applyInternal(a: number): number; - apply(start: number, end: number, a: number): number; - } - class Pow extends Interpolation { - protected power: number; - constructor(power: number); - applyInternal(a: number): number; - } - class PowOut extends Pow { - constructor(power: number); - applyInternal(a: number): number; - } - class Utils { - static SUPPORTS_TYPED_ARRAYS: boolean; - static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; - static arrayFill(array: ArrayLike, fromIndex: number, toIndex: number, value: T): void; - static setArraySize(array: Array, size: number, value?: any): Array; - static ensureArrayCapacity(array: Array, size: number, value?: any): Array; - static newArray(size: number, defaultValue: T): Array; - static newFloatArray(size: number): ArrayLike; - static newShortArray(size: number): ArrayLike; - static toFloatArray(array: Array): number[] | Float32Array; - static toSinglePrecision(value: number): number; - static webkit602BugfixHelper(alpha: number, blend: MixBlend): void; - static contains(array: Array, element: T, identity?: boolean): boolean; - static enumValue(type: any, name: string): any; - } - class DebugUtils { - static logBones(skeleton: Skeleton): void; - } - class Pool { - private items; - private instantiator; - constructor(instantiator: () => T); - obtain(): T; - free(item: T): void; - freeAll(items: ArrayLike): void; - clear(): void; - } - class Vector2 { - x: number; - y: number; - constructor(x?: number, y?: number); - set(x: number, y: number): Vector2; - length(): number; - normalize(): this; - } - class TimeKeeper { - maxDelta: number; - framesPerSecond: number; - delta: number; - totalTime: number; - private lastTime; - private frameCount; - private frameTime; - update(): void; - } - interface ArrayLike { - length: number; - [n: number]: T; - } - class WindowedMean { - values: Array; - addedValues: number; - lastValue: number; - mean: number; - dirty: boolean; - constructor(windowSize?: number); - hasEnoughData(): boolean; - addValue(value: number): void; - getMean(): number; - } -} -declare module spine { - interface VertexEffect { - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -interface Math { - fround(n: number): number; -} -declare module spine { - abstract class Attachment { - name: string; - constructor(name: string); - abstract copy(): Attachment; - } - abstract class VertexAttachment extends Attachment { - private static nextID; - id: number; - bones: Array; - vertices: ArrayLike; - worldVerticesLength: number; - deformAttachment: VertexAttachment; - constructor(name: string); - computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number, stride: number): void; - copyTo(attachment: VertexAttachment): void; - } -} -declare module spine { - interface AttachmentLoader { - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - class BoundingBoxAttachment extends VertexAttachment { - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class ClippingAttachment extends VertexAttachment { - endSlot: SlotData; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class MeshAttachment extends VertexAttachment { - region: TextureRegion; - path: string; - regionUVs: ArrayLike; - uvs: ArrayLike; - triangles: Array; - color: Color; - width: number; - height: number; - hullLength: number; - edges: Array; - private parentMesh; - tempColor: Color; - constructor(name: string); - updateUVs(): void; - getParentMesh(): MeshAttachment; - setParentMesh(parentMesh: MeshAttachment): void; - copy(): Attachment; - newLinkedMesh(): MeshAttachment; - } -} -declare module spine { - class PathAttachment extends VertexAttachment { - lengths: Array; - closed: boolean; - constantSpeed: boolean; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class PointAttachment extends VertexAttachment { - x: number; - y: number; - rotation: number; - color: Color; - constructor(name: string); - computeWorldPosition(bone: Bone, point: Vector2): Vector2; - computeWorldRotation(bone: Bone): number; - copy(): Attachment; - } -} -declare module spine { - class RegionAttachment extends Attachment { - x: number; - y: number; - scaleX: number; - scaleY: number; - rotation: number; - width: number; - height: number; - color: Color; - path: string; - rendererObject: any; - region: TextureRegion; - offset: ArrayLike; - uvs: ArrayLike; - tempColor: Color; - constructor(name: string); - updateOffset(): void; - setRegion(region: TextureRegion): void; - computeWorldVertices(bone: Bone, worldVertices: ArrayLike, offset: number, stride: number): void; - copy(): Attachment; - static X1: number; - static Y1: number; - static C1R: number; - static C1G: number; - static C1B: number; - static C1A: number; - static U1: number; - static V1: number; - static X2: number; - static Y2: number; - static C2R: number; - static C2G: number; - static C2B: number; - static C2A: number; - static U2: number; - static V2: number; - static X3: number; - static Y3: number; - static C3R: number; - static C3G: number; - static C3B: number; - static C3A: number; - static U3: number; - static V3: number; - static X4: number; - static Y4: number; - static C4R: number; - static C4G: number; - static C4B: number; - static C4A: number; - static U4: number; - static V4: number; - } -} -declare module spine { - class JitterEffect implements VertexEffect { - jitterX: number; - jitterY: number; - constructor(jitterX: number, jitterY: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine { - class SwirlEffect implements VertexEffect { - static interpolation: PowOut; - centerX: number; - centerY: number; - radius: number; - angle: number; - private worldX; - private worldY; - constructor(radius: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine.canvas { - class AssetManager extends spine.AssetManager { - constructor(pathPrefix?: string, downloader?: Downloader); - } -} -declare module spine.canvas { - class CanvasTexture extends Texture { - constructor(image: HTMLImageElement); - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - } -} -declare module spine.canvas { - class SkeletonRenderer { - static QUAD_TRIANGLES: number[]; - static VERTEX_SIZE: number; - private ctx; - triangleRendering: boolean; - debugRendering: boolean; - private vertices; - private tempColor; - constructor(context: CanvasRenderingContext2D); - draw(skeleton: Skeleton): void; - private drawImages; - private drawTriangles; - private drawTriangle; - private computeRegionVertices; - private computeMeshVertices; - } -} diff --git a/spine-ts/build/spine-canvas.js b/spine-ts/build/spine-canvas.js index d97e6c002..899c739fa 100644 --- a/spine-ts/build/spine-canvas.js +++ b/spine-ts/build/spine-canvas.js @@ -1,9242 +1,11361 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var spine; -(function (spine) { - var Animation = (function () { - function Animation(name, timelines, duration) { - if (!name) - throw new Error("name cannot be null."); - this.name = name; - this.setTimelines(timelines); - this.duration = duration; - } - Animation.prototype.setTimelines = function (timelines) { - if (!timelines) - throw new Error("timelines cannot be null."); - this.timelines = timelines; - this.timelineIds = new spine.StringSet(); - for (var i = 0; i < timelines.length; i++) - this.timelineIds.addAll(timelines[i].getPropertyIds()); - }; - Animation.prototype.hasTimeline = function (ids) { - for (var i = 0; i < ids.length; i++) - if (this.timelineIds.contains(ids[i])) - return true; - return false; - }; - Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - if (loop && this.duration != 0) { - time %= this.duration; - if (lastTime > 0) - lastTime %= this.duration; - } - var timelines = this.timelines; - for (var i = 0, n = timelines.length; i < n; i++) - timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction); - }; - return Animation; - }()); - spine.Animation = Animation; - var MixBlend; - (function (MixBlend) { - MixBlend[MixBlend["setup"] = 0] = "setup"; - MixBlend[MixBlend["first"] = 1] = "first"; - MixBlend[MixBlend["replace"] = 2] = "replace"; - MixBlend[MixBlend["add"] = 3] = "add"; - })(MixBlend = spine.MixBlend || (spine.MixBlend = {})); - var MixDirection; - (function (MixDirection) { - MixDirection[MixDirection["mixIn"] = 0] = "mixIn"; - MixDirection[MixDirection["mixOut"] = 1] = "mixOut"; - })(MixDirection = spine.MixDirection || (spine.MixDirection = {})); - var Property = { - rotate: 0, - x: 1, - y: 2, - scaleX: 3, - scaleY: 4, - shearX: 5, - shearY: 6, - rgb: 7, - alpha: 8, - rgb2: 9, - attachment: 10, - deform: 11, - event: 12, - drawOrder: 13, - ikConstraint: 14, - transformConstraint: 15, - pathConstraintPosition: 16, - pathConstraintSpacing: 17, - pathConstraintMix: 18 - }; - var Timeline = (function () { - function Timeline(frameCount, propertyIds) { - this.propertyIds = propertyIds; - this.frames = spine.Utils.newFloatArray(frameCount * this.getFrameEntries()); - } - Timeline.prototype.getPropertyIds = function () { - return this.propertyIds; - }; - Timeline.prototype.getFrameEntries = function () { - return 1; - }; - Timeline.prototype.getFrameCount = function () { - return this.frames.length / this.getFrameEntries(); - }; - Timeline.prototype.getDuration = function () { - return this.frames[this.frames.length - this.getFrameEntries()]; - }; - Timeline.search1 = function (frames, time) { - var n = frames.length; - for (var i = 1; i < n; i++) - if (frames[i] > time) - return i - 1; - return n - 1; - }; - Timeline.search = function (frames, time, step) { - var n = frames.length; - for (var i = step; i < n; i += step) - if (frames[i] > time) - return i - step; - return n - step; - }; - return Timeline; - }()); - spine.Timeline = Timeline; - var CurveTimeline = (function (_super) { - __extends(CurveTimeline, _super); - function CurveTimeline(frameCount, bezierCount, propertyIds) { - var _this = _super.call(this, frameCount, propertyIds) || this; - _this.curves = spine.Utils.newFloatArray(frameCount + bezierCount * 18); - _this.curves[frameCount - 1] = 1; - return _this; - } - CurveTimeline.prototype.setLinear = function (frame) { - this.curves[frame] = 0; - }; - CurveTimeline.prototype.setStepped = function (frame) { - this.curves[frame] = 1; - }; - CurveTimeline.prototype.shrink = function (bezierCount) { - var size = this.getFrameCount() + bezierCount * 18; - if (this.curves.length > size) { - var newCurves = spine.Utils.newFloatArray(size); - spine.Utils.arrayCopy(this.curves, 0, newCurves, 0, size); - this.curves = newCurves; - } - }; - CurveTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { - var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; - if (value == 0) - curves[frame] = 2 + i; - var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03; - var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006; - var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; - var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667; - var x = time1 + dx, y = value1 + dy; - for (var n = i + 18; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dx += ddx; - dy += ddy; - ddx += dddx; - ddy += dddy; - x += dx; - y += dy; - } - }; - CurveTimeline.prototype.getBezierValue = function (time, frameIndex, valueOffset, i) { - var curves = this.curves; - if (curves[i] > time) { - var x_1 = this.frames[frameIndex], y_1 = this.frames[frameIndex + valueOffset]; - return y_1 + (time - x_1) / (curves[i] - x_1) * (curves[i + 1] - y_1); - } - var n = i + 18; - for (i += 2; i < n; i += 2) { - if (curves[i] >= time) { - var x_2 = curves[i - 2], y_2 = curves[i - 1]; - return y_2 + (time - x_2) / (curves[i] - x_2) * (curves[i + 1] - y_2); - } - } - frameIndex += this.getFrameEntries(); - var x = curves[n - 2], y = curves[n - 1]; - return y + (time - x) / (this.frames[frameIndex] - x) * (this.frames[frameIndex + valueOffset] - y); - }; - return CurveTimeline; - }(Timeline)); - spine.CurveTimeline = CurveTimeline; - var CurveTimeline1 = (function (_super) { - __extends(CurveTimeline1, _super); - function CurveTimeline1(frameCount, bezierCount, propertyId) { - return _super.call(this, frameCount, bezierCount, [propertyId]) || this; - } - CurveTimeline1.prototype.getFrameEntries = function () { - return 2; - }; - CurveTimeline1.prototype.setFrame = function (frame, time, value) { - frame <<= 1; - this.frames[frame] = time; - this.frames[frame + 1] = value; - }; - CurveTimeline1.prototype.getCurveValue = function (time) { - var frames = this.frames; - var i = frames.length - 2; - for (var ii = 2; ii <= i; ii += 2) { - if (frames[ii] > time) { - i = ii - 2; - break; - } - } - var curveType = this.curves[i >> 1]; - switch (curveType) { - case 0: - var before = frames[i], value = frames[i + 1]; - return value + (time - before) / (frames[i + 2] - before) * (frames[i + 2 + 1] - value); - case 1: - return frames[i + 1]; - } - return this.getBezierValue(time, i, 1, curveType - 2); - }; - return CurveTimeline1; - }(CurveTimeline)); - spine.CurveTimeline1 = CurveTimeline1; - var CurveTimeline2 = (function (_super) { - __extends(CurveTimeline2, _super); - function CurveTimeline2(frameCount, bezierCount, propertyId1, propertyId2) { - return _super.call(this, frameCount, bezierCount, [propertyId1, propertyId2]) || this; - } - CurveTimeline2.prototype.getFrameEntries = function () { - return 3; - }; - CurveTimeline2.prototype.setFrame = function (frame, time, value1, value2) { - frame *= 3; - this.frames[frame] = time; - this.frames[frame + 1] = value1; - this.frames[frame + 2] = value2; - }; - return CurveTimeline2; - }(CurveTimeline)); - spine.CurveTimeline2 = CurveTimeline2; - var RotateTimeline = (function (_super) { - __extends(RotateTimeline, _super); - function RotateTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.rotate + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation; - return; - case MixBlend.first: - bone.rotation += (bone.data.rotation - bone.rotation) * alpha; - } - return; - } - var r = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation + r * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - r += bone.data.rotation - bone.rotation; - case MixBlend.add: - bone.rotation += r * alpha; - } - }; - return RotateTimeline; - }(CurveTimeline1)); - spine.RotateTimeline = RotateTimeline; - var TranslateTimeline = (function (_super) { - __extends(TranslateTimeline, _super); - function TranslateTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex, Property.y + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x; - bone.y = bone.data.y; - return; - case MixBlend.first: - bone.x += (bone.data.x - bone.x) * alpha; - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x + x * alpha; - bone.y = bone.data.y + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.x += (bone.data.x + x - bone.x) * alpha; - bone.y += (bone.data.y + y - bone.y) * alpha; - break; - case MixBlend.add: - bone.x += x * alpha; - bone.y += y * alpha; - } - }; - return TranslateTimeline; - }(CurveTimeline2)); - spine.TranslateTimeline = TranslateTimeline; - var TranslateXTimeline = (function (_super) { - __extends(TranslateXTimeline, _super); - function TranslateXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x; - return; - case MixBlend.first: - bone.x += (bone.data.x - bone.x) * alpha; - } - return; - } - var x = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x + x * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.x += (bone.data.x + x - bone.x) * alpha; - break; - case MixBlend.add: - bone.x += x * alpha; - } - }; - return TranslateXTimeline; - }(CurveTimeline1)); - spine.TranslateXTimeline = TranslateXTimeline; - var TranslateYTimeline = (function (_super) { - __extends(TranslateYTimeline, _super); - function TranslateYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.y + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.y = bone.data.y; - return; - case MixBlend.first: - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var y = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.y = bone.data.y + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.y += (bone.data.y + y - bone.y) * alpha; - break; - case MixBlend.add: - bone.y += y * alpha; - } - }; - return TranslateYTimeline; - }(CurveTimeline1)); - spine.TranslateYTimeline = TranslateYTimeline; - var ScaleTimeline = (function (_super) { - __extends(ScaleTimeline, _super); - function ScaleTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex, Property.scaleY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleX = bone.data.scaleX; - bone.scaleY = bone.data.scaleY; - return; - case MixBlend.first: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var x, y; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - x *= bone.data.scaleX; - y *= bone.data.scaleY; - if (alpha == 1) { - if (blend == MixBlend.add) { - bone.scaleX += x - bone.data.scaleX; - bone.scaleY += y - bone.data.scaleY; - } - else { - bone.scaleX = x; - bone.scaleY = y; - } - } - else { - var bx = 0, by = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - bx = bone.data.scaleX; - by = bone.data.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.add: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.add: - bx = spine.MathUtils.signum(x); - by = spine.MathUtils.signum(y); - bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; - bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; - } - } - } - }; - return ScaleTimeline; - }(CurveTimeline2)); - spine.ScaleTimeline = ScaleTimeline; - var ScaleXTimeline = (function (_super) { - __extends(ScaleXTimeline, _super); - function ScaleXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleX = bone.data.scaleX; - return; - case MixBlend.first: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - } - return; - } - var x = this.getCurveValue(time) * bone.data.scaleX; - if (alpha == 1) { - if (blend == MixBlend.add) - bone.scaleX += x - bone.data.scaleX; - else - bone.scaleX = x; - } - else { - var bx = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - bx = bone.data.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = bone.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - break; - case MixBlend.add: - bx = bone.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); - bone.scaleX = bx + (x - bx) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); - bone.scaleX = bx + (x - bx) * alpha; - break; - case MixBlend.add: - bx = spine.MathUtils.signum(x); - bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; - } - } - } - }; - return ScaleXTimeline; - }(CurveTimeline1)); - spine.ScaleXTimeline = ScaleXTimeline; - var ScaleYTimeline = (function (_super) { - __extends(ScaleYTimeline, _super); - function ScaleYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleY = bone.data.scaleY; - return; - case MixBlend.first: - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var y = this.getCurveValue(time) * bone.data.scaleY; - if (alpha == 1) { - if (blend == MixBlend.add) - bone.scaleY += y - bone.data.scaleY; - else - bone.scaleY = y; - } - else { - var by = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - by = bone.data.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - by = bone.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.add: - by = bone.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.add: - by = spine.MathUtils.signum(y); - bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; - } - } - } - }; - return ScaleYTimeline; - }(CurveTimeline1)); - spine.ScaleYTimeline = ScaleYTimeline; - var ShearTimeline = (function (_super) { - __extends(ShearTimeline, _super); - function ShearTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex, Property.shearY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX; - bone.shearY = bone.data.shearY; - return; - case MixBlend.first: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX + x * alpha; - bone.shearY = bone.data.shearY + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - break; - case MixBlend.add: - bone.shearX += x * alpha; - bone.shearY += y * alpha; - } - }; - return ShearTimeline; - }(CurveTimeline2)); - spine.ShearTimeline = ShearTimeline; - var ShearXTimeline = (function (_super) { - __extends(ShearXTimeline, _super); - function ShearXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX; - return; - case MixBlend.first: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - } - return; - } - var x = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX + x * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - break; - case MixBlend.add: - bone.shearX += x * alpha; - } - }; - return ShearXTimeline; - }(CurveTimeline1)); - spine.ShearXTimeline = ShearXTimeline; - var ShearYTimeline = (function (_super) { - __extends(ShearYTimeline, _super); - function ShearYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearY = bone.data.shearY; - return; - case MixBlend.first: - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var y = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.shearY = bone.data.shearY + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - break; - case MixBlend.add: - bone.shearY += y * alpha; - } - }; - return ShearYTimeline; - }(CurveTimeline1)); - spine.ShearYTimeline = ShearYTimeline; - var RGBATimeline = (function (_super) { - __extends(RGBATimeline, _super); - function RGBATimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.alpha + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBATimeline.prototype.getFrameEntries = function () { - return 5; - }; - RGBATimeline.prototype.setFrame = function (frame, time, r, g, b, a) { - frame *= 5; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; - }; - RGBATimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var color = slot.color; - if (time < frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.setFromColor(setup); - return; - case MixBlend.first: - color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha); - } - return; - } - var r = 0, g = 0, b = 0, a = 0; - var i = Timeline.search(frames, time, 5); - var curveType = this.curves[i / 5]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - var t = (time - before) / (frames[i + 5] - before); - r += (frames[i + 5 + 1] - r) * t; - g += (frames[i + 5 + 2] - g) * t; - b += (frames[i + 5 + 3] - b) * t; - a += (frames[i + 5 + 4] - a) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - } - if (alpha == 1) - color.set(r, g, b, a); - else { - if (blend == MixBlend.setup) - color.setFromColor(slot.data.color); - color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); - } - }; - return RGBATimeline; - }(CurveTimeline)); - spine.RGBATimeline = RGBATimeline; - var RGBTimeline = (function (_super) { - __extends(RGBTimeline, _super); - function RGBTimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBTimeline.prototype.getFrameEntries = function () { - return 4; - }; - RGBTimeline.prototype.setFrame = function (frame, time, r, g, b) { - frame <<= 2; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - }; - RGBTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var color = slot.color; - if (time < frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.r = setup.r; - color.g = setup.g; - color.b = setup.b; - return; - case MixBlend.first: - color.r += (setup.r - color.r) * alpha; - color.g += (setup.g - color.g) * alpha; - color.b += (setup.b - color.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0; - var i = Timeline.search(frames, time, 4); - var curveType = this.curves[i >> 2]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - r += (frames[i + 4 + 1] - r) * t; - g += (frames[i + 4 + 2] - g) * t; - b += (frames[i + 4 + 3] - b) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - } - if (alpha == 1) { - color.r = r; - color.g = g; - color.b = b; - } - else { - if (blend == MixBlend.setup) { - var setup = slot.data.color; - color.r = setup.r; - color.g = setup.g; - color.b = setup.b; - } - color.r += (r - color.r) * alpha; - color.g += (g - color.g) * alpha; - color.b += (b - color.b) * alpha; - } - }; - return RGBTimeline; - }(CurveTimeline)); - spine.RGBTimeline = RGBTimeline; - var AlphaTimeline = (function (_super) { - __extends(AlphaTimeline, _super); - function AlphaTimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.alpha + "|" + slotIndex) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - AlphaTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var color = slot.color; - if (time < this.frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.a = setup.a; - return; - case MixBlend.first: - color.a += (setup.a - color.a) * alpha; - } - return; - } - var a = this.getCurveValue(time); - if (alpha == 1) - color.a = a; - else { - if (blend == MixBlend.setup) - color.a = slot.data.color.a; - color.a += (a - color.a) * alpha; - } - }; - return AlphaTimeline; - }(CurveTimeline1)); - spine.AlphaTimeline = AlphaTimeline; - var RGBA2Timeline = (function (_super) { - __extends(RGBA2Timeline, _super); - function RGBA2Timeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.alpha + "|" + slotIndex, - Property.rgb2 + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBA2Timeline.prototype.getFrameEntries = function () { - return 8; - }; - RGBA2Timeline.prototype.setFrame = function (frame, time, r, g, b, a, r2, g2, b2) { - frame <<= 3; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; - this.frames[frame + 5] = r2; - this.frames[frame + 6] = g2; - this.frames[frame + 7] = b2; - }; - RGBA2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var light = slot.color, dark = slot.darkColor; - if (time < frames[0]) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - switch (blend) { - case MixBlend.setup: - light.setFromColor(setupLight); - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - return; - case MixBlend.first: - light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha); - dark.r += (setupDark.r - dark.r) * alpha; - dark.g += (setupDark.g - dark.g) * alpha; - dark.b += (setupDark.b - dark.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 8); - var curveType = this.curves[i >> 3]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; - var t = (time - before) / (frames[i + 8] - before); - r += (frames[i + 8 + 1] - r) * t; - g += (frames[i + 8 + 2] - g) * t; - b += (frames[i + 8 + 3] - b) * t; - a += (frames[i + 8 + 4] - a) * t; - r2 += (frames[i + 8 + 5] - r2) * t; - g2 += (frames[i + 8 + 6] - g2) * t; - b2 += (frames[i + 8 + 7] - b2) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - r2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - g2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - b2 = this.getBezierValue(time, i, 7, curveType + 18 * 6 - 2); - } - if (alpha == 1) { - light.set(r, g, b, a); - dark.r = r2; - dark.g = g2; - dark.b = b2; - } - else { - if (blend == MixBlend.setup) { - light.setFromColor(slot.data.color); - var setupDark = slot.data.darkColor; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - } - light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); - dark.r += (r2 - dark.r) * alpha; - dark.g += (g2 - dark.g) * alpha; - dark.b += (b2 - dark.b) * alpha; - } - }; - return RGBA2Timeline; - }(CurveTimeline)); - spine.RGBA2Timeline = RGBA2Timeline; - var RGB2Timeline = (function (_super) { - __extends(RGB2Timeline, _super); - function RGB2Timeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.rgb2 + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGB2Timeline.prototype.getFrameEntries = function () { - return 7; - }; - RGB2Timeline.prototype.setFrame = function (frame, time, r, g, b, r2, g2, b2) { - frame *= 7; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = r2; - this.frames[frame + 5] = g2; - this.frames[frame + 6] = b2; - }; - RGB2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var light = slot.color, dark = slot.darkColor; - if (time < frames[0]) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - switch (blend) { - case MixBlend.setup: - light.r = setupLight.r; - light.g = setupLight.g; - light.b = setupLight.b; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - return; - case MixBlend.first: - light.r += (setupLight.r - light.r) * alpha; - light.g += (setupLight.g - light.g) * alpha; - light.b += (setupLight.b - light.b) * alpha; - dark.r += (setupDark.r - dark.r) * alpha; - dark.g += (setupDark.g - dark.g) * alpha; - dark.b += (setupDark.b - dark.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - r += (frames[i + 7 + 1] - r) * t; - g += (frames[i + 7 + 2] - g) * t; - b += (frames[i + 7 + 3] - b) * t; - r2 += (frames[i + 7 + 4] - r2) * t; - g2 += (frames[i + 7 + 5] - g2) * t; - b2 += (frames[i + 7 + 6] - b2) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - r2 = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - g2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - b2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - } - if (alpha == 1) { - light.r = r; - light.g = g; - light.b = b; - dark.r = r2; - dark.g = g2; - dark.b = b2; - } - else { - if (blend == MixBlend.setup) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - light.r = setupLight.r; - light.g = setupLight.g; - light.b = setupLight.b; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - } - light.r += (r - light.r) * alpha; - light.g += (g - light.g) * alpha; - light.b += (b - light.b) * alpha; - dark.r += (r2 - dark.r) * alpha; - dark.g += (g2 - dark.g) * alpha; - dark.b += (b2 - dark.b) * alpha; - } - }; - return RGB2Timeline; - }(CurveTimeline)); - spine.RGB2Timeline = RGB2Timeline; - var AttachmentTimeline = (function (_super) { - __extends(AttachmentTimeline, _super); - function AttachmentTimeline(frameCount, slotIndex) { - var _this = _super.call(this, frameCount, [ - Property.attachment + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - _this.attachmentNames = new Array(frameCount); - return _this; - } - AttachmentTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - AttachmentTimeline.prototype.setFrame = function (frame, time, attachmentName) { - this.frames[frame] = time; - this.attachmentNames[frame] = attachmentName; - }; - AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - if (time < this.frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - this.setAttachment(skeleton, slot, this.attachmentNames[Timeline.search1(this.frames, time)]); - }; - AttachmentTimeline.prototype.setAttachment = function (skeleton, slot, attachmentName) { - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); - }; - return AttachmentTimeline; - }(Timeline)); - spine.AttachmentTimeline = AttachmentTimeline; - var DeformTimeline = (function (_super) { - __extends(DeformTimeline, _super); - function DeformTimeline(frameCount, bezierCount, slotIndex, attachment) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.deform + "|" + slotIndex + "|" + attachment.id - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - _this.attachment = attachment; - _this.vertices = new Array(frameCount); - return _this; - } - DeformTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DeformTimeline.prototype.setFrame = function (frame, time, vertices) { - this.frames[frame] = time; - this.vertices[frame] = vertices; - }; - DeformTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { - var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; - if (value == 0) - curves[frame] = 2 + i; - var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06; - var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018; - var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; - var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667; - var x = time1 + dx, y = dy; - for (var n = i + 18; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dx += ddx; - dy += ddy; - ddx += dddx; - ddy += dddy; - x += dx; - y += dy; - } - }; - DeformTimeline.prototype.getCurvePercent = function (time, frame) { - var curves = this.curves; - var i = curves[frame]; - switch (i) { - case 0: - var x_3 = this.frames[frame]; - return (time - x_3) / (this.frames[frame + this.getFrameEntries()] - x_3); - case 1: - return 0; - } - i -= 2; - if (curves[i] > time) { - var x_4 = this.frames[frame]; - return curves[i + 1] * (time - x_4) / (curves[i] - x_4); - } - var n = i + 18; - for (i += 2; i < n; i += 2) { - if (curves[i] >= time) { - var x_5 = curves[i - 2], y_3 = curves[i - 1]; - return y_3 + (time - x_5) / (curves[i] - x_5) * (curves[i + 1] - y_3); - } - } - var x = curves[n - 2], y = curves[n - 1]; - return y + (1 - y) * (time - x) / (this.frames[frame + this.getFrameEntries()] - x); - }; - DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var slotAttachment = slot.getAttachment(); - if (!(slotAttachment instanceof spine.VertexAttachment) || slotAttachment.deformAttachment != this.attachment) - return; - var deform = slot.deform; - if (deform.length == 0) - blend = MixBlend.setup; - var vertices = this.vertices; - var vertexCount = vertices[0].length; - var frames = this.frames; - if (time < frames[0]) { - var vertexAttachment = slotAttachment; - switch (blend) { - case MixBlend.setup: - deform.length = 0; - return; - case MixBlend.first: - if (alpha == 1) { - deform.length = 0; - return; - } - deform.length = vertexCount; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i = 0; i < vertexCount; i++) - deform[i] += (setupVertices[i] - deform[i]) * alpha; - } - else { - alpha = 1 - alpha; - for (var i = 0; i < vertexCount; i++) - deform[i] *= alpha; - } - } - return; - } - deform.length = vertexCount; - if (time >= frames[frames.length - 1]) { - var lastVertices = vertices[frames.length - 1]; - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_1 = 0; i_1 < vertexCount; i_1++) - deform[i_1] += lastVertices[i_1] - setupVertices[i_1]; - } - else { - for (var i_2 = 0; i_2 < vertexCount; i_2++) - deform[i_2] += lastVertices[i_2]; - } - } - else - spine.Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount); - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_1 = slotAttachment; - if (!vertexAttachment_1.bones) { - var setupVertices = vertexAttachment_1.vertices; - for (var i_3 = 0; i_3 < vertexCount; i_3++) { - var setup = setupVertices[i_3]; - deform[i_3] = setup + (lastVertices[i_3] - setup) * alpha; - } - } - else { - for (var i_4 = 0; i_4 < vertexCount; i_4++) - deform[i_4] = lastVertices[i_4] * alpha; - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_5 = 0; i_5 < vertexCount; i_5++) - deform[i_5] += (lastVertices[i_5] - deform[i_5]) * alpha; - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_6 = 0; i_6 < vertexCount; i_6++) - deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha; - } - else { - for (var i_7 = 0; i_7 < vertexCount; i_7++) - deform[i_7] += lastVertices[i_7] * alpha; - } - } - } - return; - } - var frame = Timeline.search1(frames, time); - var percent = this.getCurvePercent(time, frame); - var prevVertices = vertices[frame]; - var nextVertices = vertices[frame + 1]; - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_8 = 0; i_8 < vertexCount; i_8++) { - var prev = prevVertices[i_8]; - deform[i_8] += prev + (nextVertices[i_8] - prev) * percent - setupVertices[i_8]; - } - } - else { - for (var i_9 = 0; i_9 < vertexCount; i_9++) { - var prev = prevVertices[i_9]; - deform[i_9] += prev + (nextVertices[i_9] - prev) * percent; - } - } - } - else { - for (var i_10 = 0; i_10 < vertexCount; i_10++) { - var prev = prevVertices[i_10]; - deform[i_10] = prev + (nextVertices[i_10] - prev) * percent; - } - } - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_2 = slotAttachment; - if (!vertexAttachment_2.bones) { - var setupVertices = vertexAttachment_2.vertices; - for (var i_11 = 0; i_11 < vertexCount; i_11++) { - var prev = prevVertices[i_11], setup = setupVertices[i_11]; - deform[i_11] = setup + (prev + (nextVertices[i_11] - prev) * percent - setup) * alpha; - } - } - else { - for (var i_12 = 0; i_12 < vertexCount; i_12++) { - var prev = prevVertices[i_12]; - deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha; - } - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_13 = 0; i_13 < vertexCount; i_13++) { - var prev = prevVertices[i_13]; - deform[i_13] += (prev + (nextVertices[i_13] - prev) * percent - deform[i_13]) * alpha; - } - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_14 = 0; i_14 < vertexCount; i_14++) { - var prev = prevVertices[i_14]; - deform[i_14] += (prev + (nextVertices[i_14] - prev) * percent - setupVertices[i_14]) * alpha; - } - } - else { - for (var i_15 = 0; i_15 < vertexCount; i_15++) { - var prev = prevVertices[i_15]; - deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha; - } - } - } - } - }; - return DeformTimeline; - }(CurveTimeline)); - spine.DeformTimeline = DeformTimeline; - var EventTimeline = (function (_super) { - __extends(EventTimeline, _super); - function EventTimeline(frameCount) { - var _this = _super.call(this, frameCount, EventTimeline.propertyIds) || this; - _this.events = new Array(frameCount); - return _this; - } - EventTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - EventTimeline.prototype.setFrame = function (frame, event) { - this.frames[frame] = event.time; - this.events[frame] = event; - }; - EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - if (!firedEvents) - return; - var frames = this.frames; - var frameCount = this.frames.length; - if (lastTime > time) { - this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction); - lastTime = -1; - } - else if (lastTime >= frames[frameCount - 1]) - return; - if (time < frames[0]) - return; - var i = 0; - if (lastTime < frames[0]) - i = 0; - else { - i = Timeline.search1(frames, lastTime) + 1; - var frameTime = frames[i]; - while (i > 0) { - if (frames[i - 1] != frameTime) - break; - i--; - } - } - for (; i < frameCount && time >= frames[i]; i++) - firedEvents.push(this.events[i]); - }; - EventTimeline.propertyIds = ["" + Property.event]; - return EventTimeline; - }(Timeline)); - spine.EventTimeline = EventTimeline; - var DrawOrderTimeline = (function (_super) { - __extends(DrawOrderTimeline, _super); - function DrawOrderTimeline(frameCount) { - var _this = _super.call(this, frameCount, DrawOrderTimeline.propertyIds) || this; - _this.drawOrders = new Array(frameCount); - return _this; - } - DrawOrderTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DrawOrderTimeline.prototype.setFrame = function (frame, time, drawOrder) { - this.frames[frame] = time; - this.drawOrders[frame] = drawOrder; - }; - DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - if (time < this.frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - var drawOrderToSetupIndex = this.drawOrders[Timeline.search1(this.frames, time)]; - if (!drawOrderToSetupIndex) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - else { - var drawOrder = skeleton.drawOrder; - var slots = skeleton.slots; - for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) - drawOrder[i] = slots[drawOrderToSetupIndex[i]]; - } - }; - DrawOrderTimeline.propertyIds = ["" + Property.drawOrder]; - return DrawOrderTimeline; - }(Timeline)); - spine.DrawOrderTimeline = DrawOrderTimeline; - var IkConstraintTimeline = (function (_super) { - __extends(IkConstraintTimeline, _super); - function IkConstraintTimeline(frameCount, bezierCount, ikConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.ikConstraint + "|" + ikConstraintIndex - ]) || this; - _this.ikConstraintIndex = ikConstraintIndex; - return _this; - } - IkConstraintTimeline.prototype.getFrameEntries = function () { - return 6; - }; - IkConstraintTimeline.prototype.setFrame = function (frame, time, mix, softness, bendDirection, compress, stretch) { - frame *= 6; - this.frames[frame] = time; - this.frames[frame + 1] = mix; - this.frames[frame + 2] = softness; - this.frames[frame + 3] = bendDirection; - this.frames[frame + 4] = compress ? 1 : 0; - this.frames[frame + 5] = stretch ? 1 : 0; - }; - IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - return; - case MixBlend.first: - constraint.mix += (constraint.data.mix - constraint.mix) * alpha; - constraint.softness += (constraint.data.softness - constraint.softness) * alpha; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - return; - } - var mix = 0, softness = 0; - var i = Timeline.search(frames, time, 6); - var curveType = this.curves[i / 6]; - switch (curveType) { - case 0: - var before = frames[i]; - mix = frames[i + 1]; - softness = frames[i + 2]; - var t = (time - before) / (frames[i + 6] - before); - mix += (frames[i + 6 + 1] - mix) * t; - softness += (frames[i + 6 + 2] - softness) * t; - break; - case 1: - mix = frames[i + 1]; - softness = frames[i + 2]; - break; - default: - mix = this.getBezierValue(time, i, 1, curveType - 2); - softness = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - if (blend == MixBlend.setup) { - constraint.mix = constraint.data.mix + (mix - constraint.data.mix) * alpha; - constraint.softness = constraint.data.softness + (softness - constraint.data.softness) * alpha; - if (direction == MixDirection.mixOut) { - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - else { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; - } - } - else { - constraint.mix += (mix - constraint.mix) * alpha; - constraint.softness += (softness - constraint.softness) * alpha; - if (direction == MixDirection.mixIn) { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; - } - } - }; - return IkConstraintTimeline; - }(CurveTimeline)); - spine.IkConstraintTimeline = IkConstraintTimeline; - var TransformConstraintTimeline = (function (_super) { - __extends(TransformConstraintTimeline, _super); - function TransformConstraintTimeline(frameCount, bezierCount, transformConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.transformConstraint + "|" + transformConstraintIndex - ]) || this; - _this.transformConstraintIndex = transformConstraintIndex; - return _this; - } - TransformConstraintTimeline.prototype.getFrameEntries = function () { - return 7; - }; - TransformConstraintTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) { - var frames = this.frames; - frame *= 7; - frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; - frames[frame + 4] = mixScaleX; - frames[frame + 5] = mixScaleY; - frames[frame + 6] = mixShearY; - }; - TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - var data = constraint.data; - switch (blend) { - case MixBlend.setup: - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - constraint.mixScaleX = data.mixScaleX; - constraint.mixScaleY = data.mixScaleY; - constraint.mixShearY = data.mixShearY; - return; - case MixBlend.first: - constraint.mixRotate += (data.mixRotate - constraint.mixRotate) * alpha; - constraint.mixX += (data.mixX - constraint.mixX) * alpha; - constraint.mixY += (data.mixY - constraint.mixY) * alpha; - constraint.mixScaleX += (data.mixScaleX - constraint.mixScaleX) * alpha; - constraint.mixScaleY += (data.mixScaleY - constraint.mixScaleY) * alpha; - constraint.mixShearY += (data.mixShearY - constraint.mixShearY) * alpha; - } - return; - } - var rotate, x, y, scaleX, scaleY, shearY; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; - switch (curveType) { - case 0: - var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - rotate += (frames[i + 7 + 1] - rotate) * t; - x += (frames[i + 7 + 2] - x) * t; - y += (frames[i + 7 + 3] - y) * t; - scaleX += (frames[i + 7 + 4] - scaleX) * t; - scaleY += (frames[i + 7 + 5] - scaleY) * t; - shearY += (frames[i + 7 + 6] - shearY) * t; - break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; - break; - default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - scaleX = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - scaleY = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - shearY = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - } - if (blend == MixBlend.setup) { - var data = constraint.data; - constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; - constraint.mixX = data.mixX + (x - data.mixX) * alpha; - constraint.mixY = data.mixY + (y - data.mixY) * alpha; - constraint.mixScaleX = data.mixScaleX + (scaleX - data.mixScaleX) * alpha; - constraint.mixScaleY = data.mixScaleY + (scaleY - data.mixScaleY) * alpha; - constraint.mixShearY = data.mixShearY + (shearY - data.mixShearY) * alpha; - } - else { - constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; - constraint.mixX += (x - constraint.mixX) * alpha; - constraint.mixY += (y - constraint.mixY) * alpha; - constraint.mixScaleX += (scaleX - constraint.mixScaleX) * alpha; - constraint.mixScaleY += (scaleY - constraint.mixScaleY) * alpha; - constraint.mixShearY += (shearY - constraint.mixShearY) * alpha; - } - }; - return TransformConstraintTimeline; - }(CurveTimeline)); - spine.TransformConstraintTimeline = TransformConstraintTimeline; - var PathConstraintPositionTimeline = (function (_super) { - __extends(PathConstraintPositionTimeline, _super); - function PathConstraintPositionTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintPosition + "|" + pathConstraintIndex) || this; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.position = constraint.data.position; - return; - case MixBlend.first: - constraint.position += (constraint.data.position - constraint.position) * alpha; - } - return; - } - var position = this.getCurveValue(time); - if (blend == MixBlend.setup) - constraint.position = constraint.data.position + (position - constraint.data.position) * alpha; - else - constraint.position += (position - constraint.position) * alpha; - }; - return PathConstraintPositionTimeline; - }(CurveTimeline1)); - spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; - var PathConstraintSpacingTimeline = (function (_super) { - __extends(PathConstraintSpacingTimeline, _super); - function PathConstraintSpacingTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintSpacing + "|" + pathConstraintIndex) || this; - _this.pathConstraintIndex = 0; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.spacing = constraint.data.spacing; - return; - case MixBlend.first: - constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha; - } - return; - } - var spacing = this.getCurveValue(time); - if (blend == MixBlend.setup) - constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha; - else - constraint.spacing += (spacing - constraint.spacing) * alpha; - }; - return PathConstraintSpacingTimeline; - }(CurveTimeline1)); - spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; - var PathConstraintMixTimeline = (function (_super) { - __extends(PathConstraintMixTimeline, _super); - function PathConstraintMixTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.pathConstraintMix + "|" + pathConstraintIndex - ]) || this; - _this.pathConstraintIndex = 0; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintMixTimeline.prototype.getFrameEntries = function () { - return 4; - }; - PathConstraintMixTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY) { - var frames = this.frames; - frame <<= 2; - frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; - }; - PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.mixRotate = constraint.data.mixRotate; - constraint.mixX = constraint.data.mixX; - constraint.mixY = constraint.data.mixY; - return; - case MixBlend.first: - constraint.mixRotate += (constraint.data.mixRotate - constraint.mixRotate) * alpha; - constraint.mixX += (constraint.data.mixX - constraint.mixX) * alpha; - constraint.mixY += (constraint.data.mixY - constraint.mixY) * alpha; - } - return; - } - var rotate, x, y; - var i = Timeline.search(frames, time, 4); - var curveType = this.curves[i >> 2]; - switch (curveType) { - case 0: - var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - rotate += (frames[i + 4 + 1] - rotate) * t; - x += (frames[i + 4 + 2] - x) * t; - y += (frames[i + 4 + 3] - y) * t; - break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - break; - default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - } - if (blend == MixBlend.setup) { - var data = constraint.data; - constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; - constraint.mixX = data.mixX + (x - data.mixX) * alpha; - constraint.mixY = data.mixY + (y - data.mixY) * alpha; - } - else { - constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; - constraint.mixX += (x - constraint.mixX) * alpha; - constraint.mixY += (y - constraint.mixY) * alpha; - } - }; - return PathConstraintMixTimeline; - }(CurveTimeline)); - spine.PathConstraintMixTimeline = PathConstraintMixTimeline; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationState = (function () { - function AnimationState(data) { - this.tracks = new Array(); - this.timeScale = 1; - this.unkeyedState = 0; - this.events = new Array(); - this.listeners = new Array(); - this.queue = new EventQueue(this); - this.propertyIDs = new spine.StringSet(); - this.animationsChanged = false; - this.trackEntryPool = new spine.Pool(function () { return new TrackEntry(); }); - this.data = data; - } - AnimationState.emptyAnimation = function () { - if (!_emptyAnimation) - _emptyAnimation = new spine.Animation("", [], 0); - return _emptyAnimation; - }; - AnimationState.prototype.update = function (delta) { - delta *= this.timeScale; - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var current = tracks[i]; - if (!current) - continue; - current.animationLast = current.nextAnimationLast; - current.trackLast = current.nextTrackLast; - var currentDelta = delta * current.timeScale; - if (current.delay > 0) { - current.delay -= currentDelta; - if (current.delay > 0) - continue; - currentDelta = -current.delay; - current.delay = 0; - } - var next = current.next; - if (next) { - var nextTime = current.trackLast - next.delay; - if (nextTime >= 0) { - next.delay = 0; - next.trackTime += current.timeScale == 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale; - current.trackTime += currentDelta; - this.setCurrent(i, next, true); - while (next.mixingFrom) { - next.mixTime += delta; - next = next.mixingFrom; - } - continue; - } - } - else if (current.trackLast >= current.trackEnd && !current.mixingFrom) { - tracks[i] = null; - this.queue.end(current); - this.clearNext(current); - continue; - } - if (current.mixingFrom && this.updateMixingFrom(current, delta)) { - var from = current.mixingFrom; - current.mixingFrom = null; - if (from) - from.mixingTo = null; - while (from) { - this.queue.end(from); - from = from.mixingFrom; - } - } - current.trackTime += currentDelta; - } - this.queue.drain(); - }; - AnimationState.prototype.updateMixingFrom = function (to, delta) { - var from = to.mixingFrom; - if (!from) - return true; - var finished = this.updateMixingFrom(from, delta); - from.animationLast = from.nextAnimationLast; - from.trackLast = from.nextTrackLast; - if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { - if (from.totalAlpha == 0 || to.mixDuration == 0) { - to.mixingFrom = from.mixingFrom; - if (from.mixingFrom) - from.mixingFrom.mixingTo = to; - to.interruptAlpha = from.interruptAlpha; - this.queue.end(from); - } - return finished; - } - from.trackTime += delta * from.timeScale; - to.mixTime += delta; - return false; - }; - AnimationState.prototype.apply = function (skeleton) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - if (this.animationsChanged) - this._animationsChanged(); - var events = this.events; - var tracks = this.tracks; - var applied = false; - for (var i_16 = 0, n_1 = tracks.length; i_16 < n_1; i_16++) { - var current = tracks[i_16]; - if (!current || current.delay > 0) - continue; - applied = true; - var blend = i_16 == 0 ? spine.MixBlend.first : current.mixBlend; - var mix = current.alpha; - if (current.mixingFrom) - mix *= this.applyMixingFrom(current, skeleton, blend); - else if (current.trackTime >= current.trackEnd && !current.next) - mix = 0; - var animationLast = current.animationLast, animationTime = current.getAnimationTime(), applyTime = animationTime; - var applyEvents = events; - if (current.reverse) { - applyTime = current.animation.duration - applyTime; - applyEvents = null; - } - var timelines = current.animation.timelines; - var timelineCount = timelines.length; - if ((i_16 == 0 && mix == 1) || blend == spine.MixBlend.add) { - for (var ii = 0; ii < timelineCount; ii++) { - spine.Utils.webkit602BugfixHelper(mix, blend); - var timeline = timelines[ii]; - if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, applyTime, blend, true); - else - timeline.apply(skeleton, animationLast, applyTime, applyEvents, mix, blend, spine.MixDirection.mixIn); - } - } - else { - var timelineMode = current.timelineMode; - var firstFrame = current.timelinesRotation.length != timelineCount << 1; - if (firstFrame) - current.timelinesRotation.length = timelineCount << 1; - for (var ii = 0; ii < timelineCount; ii++) { - var timeline_1 = timelines[ii]; - var timelineBlend = timelineMode[ii] == SUBSEQUENT ? blend : spine.MixBlend.setup; - if (timeline_1 instanceof spine.RotateTimeline) { - this.applyRotateTimeline(timeline_1, skeleton, applyTime, mix, timelineBlend, current.timelinesRotation, ii << 1, firstFrame); - } - else if (timeline_1 instanceof spine.AttachmentTimeline) { - this.applyAttachmentTimeline(timeline_1, skeleton, applyTime, blend, true); - } - else { - spine.Utils.webkit602BugfixHelper(mix, blend); - timeline_1.apply(skeleton, animationLast, applyTime, applyEvents, mix, timelineBlend, spine.MixDirection.mixIn); - } - } - } - this.queueEvents(current, animationTime); - events.length = 0; - current.nextAnimationLast = animationTime; - current.nextTrackLast = current.trackTime; - } - var setupState = this.unkeyedState + SETUP; - var slots = skeleton.slots; - for (var i = 0, n = skeleton.slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.attachmentState == setupState) { - var attachmentName = slot.data.attachmentName; - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - } - } - this.unkeyedState += 2; - this.queue.drain(); - return applied; - }; - AnimationState.prototype.applyMixingFrom = function (to, skeleton, blend) { - var from = to.mixingFrom; - if (from.mixingFrom) - this.applyMixingFrom(from, skeleton, blend); - var mix = 0; - if (to.mixDuration == 0) { - mix = 1; - if (blend == spine.MixBlend.first) - blend = spine.MixBlend.setup; - } - else { - mix = to.mixTime / to.mixDuration; - if (mix > 1) - mix = 1; - if (blend != spine.MixBlend.first) - blend = from.mixBlend; - } - var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold; - var timelines = from.animation.timelines; - var timelineCount = timelines.length; - var alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix); - var animationLast = from.animationLast, animationTime = from.getAnimationTime(), applyTime = animationTime; - var events = null; - if (from.reverse) - applyTime = from.animation.duration - applyTime; - else if (mix < from.eventThreshold) - events = this.events; - if (blend == spine.MixBlend.add) { - for (var i = 0; i < timelineCount; i++) - timelines[i].apply(skeleton, animationLast, applyTime, events, alphaMix, blend, spine.MixDirection.mixOut); - } - else { - var timelineMode = from.timelineMode; - var timelineHoldMix = from.timelineHoldMix; - var firstFrame = from.timelinesRotation.length != timelineCount << 1; - if (firstFrame) - from.timelinesRotation.length = timelineCount << 1; - from.totalAlpha = 0; - for (var i = 0; i < timelineCount; i++) { - var timeline = timelines[i]; - var direction = spine.MixDirection.mixOut; - var timelineBlend = void 0; - var alpha = 0; - switch (timelineMode[i]) { - case SUBSEQUENT: - if (!drawOrder && timeline instanceof spine.DrawOrderTimeline) - continue; - timelineBlend = blend; - alpha = alphaMix; - break; - case FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaMix; - break; - case HOLD_SUBSEQUENT: - timelineBlend = blend; - alpha = alphaHold; - break; - case HOLD_FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaHold; - break; - default: - timelineBlend = spine.MixBlend.setup; - var holdMix = timelineHoldMix[i]; - alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration); - break; - } - from.totalAlpha += alpha; - if (timeline instanceof spine.RotateTimeline) - this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, timelineBlend, from.timelinesRotation, i << 1, firstFrame); - else if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, applyTime, timelineBlend, attachments); - else { - spine.Utils.webkit602BugfixHelper(alpha, blend); - if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup) - direction = spine.MixDirection.mixIn; - timeline.apply(skeleton, animationLast, applyTime, events, alpha, timelineBlend, direction); - } - } - } - if (to.mixDuration > 0) - this.queueEvents(from, animationTime); - this.events.length = 0; - from.nextAnimationLast = animationTime; - from.nextTrackLast = from.trackTime; - return mix; - }; - AnimationState.prototype.applyAttachmentTimeline = function (timeline, skeleton, time, blend, attachments) { - var slot = skeleton.slots[timeline.slotIndex]; - if (!slot.bone.active) - return; - if (time < timeline.frames[0]) { - if (blend == spine.MixBlend.setup || blend == spine.MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments); - } - else - this.setAttachment(skeleton, slot, timeline.attachmentNames[spine.Timeline.search1(timeline.frames, time)], attachments); - if (slot.attachmentState <= this.unkeyedState) - slot.attachmentState = this.unkeyedState + SETUP; - }; - AnimationState.prototype.setAttachment = function (skeleton, slot, attachmentName, attachments) { - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - if (attachments) - slot.attachmentState = this.unkeyedState + CURRENT; - }; - AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) { - if (firstFrame) - timelinesRotation[i] = 0; - if (alpha == 1) { - timeline.apply(skeleton, 0, time, null, 1, blend, spine.MixDirection.mixIn); - return; - } - var bone = skeleton.bones[timeline.boneIndex]; - if (!bone.active) - return; - var frames = timeline.frames; - var r1 = 0, r2 = 0; - if (time < frames[0]) { - switch (blend) { - case spine.MixBlend.setup: - bone.rotation = bone.data.rotation; - default: - return; - case spine.MixBlend.first: - r1 = bone.rotation; - r2 = bone.data.rotation; - } - } - else { - r1 = blend == spine.MixBlend.setup ? bone.data.rotation : bone.rotation; - r2 = bone.data.rotation + timeline.getCurveValue(time); - } - var total = 0, diff = r2 - r1; - diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360; - if (diff == 0) { - total = timelinesRotation[i]; - } - else { - var lastTotal = 0, lastDiff = 0; - if (firstFrame) { - lastTotal = 0; - lastDiff = diff; - } - else { - lastTotal = timelinesRotation[i]; - lastDiff = timelinesRotation[i + 1]; - } - var current = diff > 0, dir = lastTotal >= 0; - if (spine.MathUtils.signum(lastDiff) != spine.MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { - if (Math.abs(lastTotal) > 180) - lastTotal += 360 * spine.MathUtils.signum(lastTotal); - dir = current; - } - total = diff + lastTotal - lastTotal % 360; - if (dir != current) - total += 360 * spine.MathUtils.signum(lastTotal); - timelinesRotation[i] = total; - } - timelinesRotation[i + 1] = diff; - bone.rotation = r1 + total * alpha; - }; - AnimationState.prototype.queueEvents = function (entry, animationTime) { - var animationStart = entry.animationStart, animationEnd = entry.animationEnd; - var duration = animationEnd - animationStart; - var trackLastWrapped = entry.trackLast % duration; - var events = this.events; - var i = 0, n = events.length; - for (; i < n; i++) { - var event_1 = events[i]; - if (event_1.time < trackLastWrapped) - break; - if (event_1.time > animationEnd) - continue; - this.queue.event(entry, event_1); - } - var complete = false; - if (entry.loop) - complete = duration == 0 || trackLastWrapped > entry.trackTime % duration; - else - complete = animationTime >= animationEnd && entry.animationLast < animationEnd; - if (complete) - this.queue.complete(entry); - for (; i < n; i++) { - var event_2 = events[i]; - if (event_2.time < animationStart) - continue; - this.queue.event(entry, event_2); - } - }; - AnimationState.prototype.clearTracks = function () { - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) - this.clearTrack(i); - this.tracks.length = 0; - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.clearTrack = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return; - var current = this.tracks[trackIndex]; - if (!current) - return; - this.queue.end(current); - this.clearNext(current); - var entry = current; - while (true) { - var from = entry.mixingFrom; - if (!from) - break; - this.queue.end(from); - entry.mixingFrom = null; - entry.mixingTo = null; - entry = from; - } - this.tracks[current.trackIndex] = null; - this.queue.drain(); - }; - AnimationState.prototype.setCurrent = function (index, current, interrupt) { - var from = this.expandToIndex(index); - this.tracks[index] = current; - current.previous = null; - if (from) { - if (interrupt) - this.queue.interrupt(from); - current.mixingFrom = from; - from.mixingTo = current; - current.mixTime = 0; - if (from.mixingFrom && from.mixDuration > 0) - current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration); - from.timelinesRotation.length = 0; - } - this.queue.start(current); - }; - AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { - if (loop === void 0) { loop = false; } - var animation = this.data.skeletonData.findAnimation(animationName); - if (!animation) - throw new Error("Animation not found: " + animationName); - return this.setAnimationWith(trackIndex, animation, loop); - }; - AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { - if (loop === void 0) { loop = false; } - if (!animation) - throw new Error("animation cannot be null."); - var interrupt = true; - var current = this.expandToIndex(trackIndex); - if (current) { - if (current.nextTrackLast == -1) { - this.tracks[trackIndex] = current.mixingFrom; - this.queue.interrupt(current); - this.queue.end(current); - this.clearNext(current); - current = current.mixingFrom; - interrupt = false; - } - else - this.clearNext(current); - } - var entry = this.trackEntry(trackIndex, animation, loop, current); - this.setCurrent(trackIndex, entry, interrupt); - this.queue.drain(); - return entry; - }; - AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { - if (loop === void 0) { loop = false; } - if (delay === void 0) { delay = 0; } - var animation = this.data.skeletonData.findAnimation(animationName); - if (!animation) - throw new Error("Animation not found: " + animationName); - return this.addAnimationWith(trackIndex, animation, loop, delay); - }; - AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { - if (loop === void 0) { loop = false; } - if (delay === void 0) { delay = 0; } - if (!animation) - throw new Error("animation cannot be null."); - var last = this.expandToIndex(trackIndex); - if (last) { - while (last.next) - last = last.next; - } - var entry = this.trackEntry(trackIndex, animation, loop, last); - if (!last) { - this.setCurrent(trackIndex, entry, true); - this.queue.drain(); - } - else { - last.next = entry; - entry.previous = last; - if (delay <= 0) - delay += last.getTrackComplete() - entry.mixDuration; - } - entry.delay = delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) { - if (mixDuration === void 0) { mixDuration = 0; } - var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation(), false); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - return entry; - }; - AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) { - if (mixDuration === void 0) { mixDuration = 0; } - if (delay === void 0) { delay = 0; } - var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay <= 0 ? 1 : delay); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - if (delay <= 0 && entry.previous) - entry.delay = entry.previous.getTrackComplete() - entry.mixDuration + delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimations = function (mixDuration) { - if (mixDuration === void 0) { mixDuration = 0; } - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) { - var current = this.tracks[i]; - if (current) - this.setEmptyAnimation(current.trackIndex, mixDuration); - } - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.expandToIndex = function (index) { - if (index < this.tracks.length) - return this.tracks[index]; - spine.Utils.ensureArrayCapacity(this.tracks, index + 1, null); - this.tracks.length = index + 1; - return null; - }; - AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) { - var entry = this.trackEntryPool.obtain(); - entry.trackIndex = trackIndex; - entry.animation = animation; - entry.loop = loop; - entry.holdPrevious = false; - entry.eventThreshold = 0; - entry.attachmentThreshold = 0; - entry.drawOrderThreshold = 0; - entry.animationStart = 0; - entry.animationEnd = animation.duration; - entry.animationLast = -1; - entry.nextAnimationLast = -1; - entry.delay = 0; - entry.trackTime = 0; - entry.trackLast = -1; - entry.nextTrackLast = -1; - entry.trackEnd = Number.MAX_VALUE; - entry.timeScale = 1; - entry.alpha = 1; - entry.interruptAlpha = 1; - entry.mixTime = 0; - entry.mixDuration = !last ? 0 : this.data.getMix(last.animation, animation); - entry.mixBlend = spine.MixBlend.replace; - return entry; - }; - AnimationState.prototype.clearNext = function (entry) { - var next = entry.next; - while (next) { - this.queue.dispose(next); - next = next.next; - } - entry.next = null; - }; - AnimationState.prototype._animationsChanged = function () { - this.animationsChanged = false; - this.propertyIDs.clear(); - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var entry = tracks[i]; - if (!entry) - continue; - while (entry.mixingFrom) - entry = entry.mixingFrom; - do { - if (!entry.mixingTo || entry.mixBlend != spine.MixBlend.add) - this.computeHold(entry); - entry = entry.mixingTo; - } while (entry); - } - }; - AnimationState.prototype.computeHold = function (entry) { - var to = entry.mixingTo; - var timelines = entry.animation.timelines; - var timelinesCount = entry.animation.timelines.length; - var timelineMode = entry.timelineMode; - timelineMode.length = timelinesCount; - var timelineHoldMix = entry.timelineHoldMix; - timelineHoldMix.length = 0; - var propertyIDs = this.propertyIDs; - if (to && to.holdPrevious) { - for (var i = 0; i < timelinesCount; i++) - timelineMode[i] = propertyIDs.addAll(timelines[i].getPropertyIds()) ? HOLD_FIRST : HOLD_SUBSEQUENT; - return; - } - outer: for (var i = 0; i < timelinesCount; i++) { - var timeline = timelines[i]; - var ids = timeline.getPropertyIds(); - if (!propertyIDs.addAll(ids)) - timelineMode[i] = SUBSEQUENT; - else if (!to || timeline instanceof spine.AttachmentTimeline || timeline instanceof spine.DrawOrderTimeline - || timeline instanceof spine.EventTimeline || !to.animation.hasTimeline(ids)) { - timelineMode[i] = FIRST; - } - else { - for (var next = to.mixingTo; next; next = next.mixingTo) { - if (next.animation.hasTimeline(ids)) - continue; - if (entry.mixDuration > 0) { - timelineMode[i] = HOLD_MIX; - timelineHoldMix[i] = next; - continue outer; - } - break; - } - timelineMode[i] = HOLD_FIRST; - } - } - }; - AnimationState.prototype.getCurrent = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return null; - return this.tracks[trackIndex]; - }; - AnimationState.prototype.addListener = function (listener) { - if (!listener) - throw new Error("listener cannot be null."); - this.listeners.push(listener); - }; - AnimationState.prototype.removeListener = function (listener) { - var index = this.listeners.indexOf(listener); - if (index >= 0) - this.listeners.splice(index, 1); - }; - AnimationState.prototype.clearListeners = function () { - this.listeners.length = 0; - }; - AnimationState.prototype.clearListenerNotifications = function () { - this.queue.clear(); - }; - return AnimationState; - }()); - spine.AnimationState = AnimationState; - var TrackEntry = (function () { - function TrackEntry() { - this.mixBlend = spine.MixBlend.replace; - this.timelineMode = new Array(); - this.timelineHoldMix = new Array(); - this.timelinesRotation = new Array(); - } - TrackEntry.prototype.reset = function () { - this.next = null; - this.previous = null; - this.mixingFrom = null; - this.mixingTo = null; - this.animation = null; - this.listener = null; - this.timelineMode.length = 0; - this.timelineHoldMix.length = 0; - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.getAnimationTime = function () { - if (this.loop) { - var duration = this.animationEnd - this.animationStart; - if (duration == 0) - return this.animationStart; - return (this.trackTime % duration) + this.animationStart; - } - return Math.min(this.trackTime + this.animationStart, this.animationEnd); - }; - TrackEntry.prototype.setAnimationLast = function (animationLast) { - this.animationLast = animationLast; - this.nextAnimationLast = animationLast; - }; - TrackEntry.prototype.isComplete = function () { - return this.trackTime >= this.animationEnd - this.animationStart; - }; - TrackEntry.prototype.resetRotationDirections = function () { - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.getTrackComplete = function () { - var duration = this.animationEnd - this.animationStart; - if (duration != 0) { - if (this.loop) - return duration * (1 + ((this.trackTime / duration) | 0)); - if (this.trackTime < duration) - return duration; - } - return this.trackTime; - }; - return TrackEntry; - }()); - spine.TrackEntry = TrackEntry; - var EventQueue = (function () { - function EventQueue(animState) { - this.objects = []; - this.drainDisabled = false; - this.animState = animState; - } - EventQueue.prototype.start = function (entry) { - this.objects.push(EventType.start); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.interrupt = function (entry) { - this.objects.push(EventType.interrupt); - this.objects.push(entry); - }; - EventQueue.prototype.end = function (entry) { - this.objects.push(EventType.end); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.dispose = function (entry) { - this.objects.push(EventType.dispose); - this.objects.push(entry); - }; - EventQueue.prototype.complete = function (entry) { - this.objects.push(EventType.complete); - this.objects.push(entry); - }; - EventQueue.prototype.event = function (entry, event) { - this.objects.push(EventType.event); - this.objects.push(entry); - this.objects.push(event); - }; - EventQueue.prototype.drain = function () { - if (this.drainDisabled) - return; - this.drainDisabled = true; - var objects = this.objects; - var listeners = this.animState.listeners; - for (var i = 0; i < objects.length; i += 2) { - var type = objects[i]; - var entry = objects[i + 1]; - switch (type) { - case EventType.start: - if (entry.listener && entry.listener.start) - entry.listener.start(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].start) - listeners[ii].start(entry); - break; - case EventType.interrupt: - if (entry.listener && entry.listener.interrupt) - entry.listener.interrupt(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].interrupt) - listeners[ii].interrupt(entry); - break; - case EventType.end: - if (entry.listener && entry.listener.end) - entry.listener.end(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].end) - listeners[ii].end(entry); - case EventType.dispose: - if (entry.listener && entry.listener.dispose) - entry.listener.dispose(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].dispose) - listeners[ii].dispose(entry); - this.animState.trackEntryPool.free(entry); - break; - case EventType.complete: - if (entry.listener && entry.listener.complete) - entry.listener.complete(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].complete) - listeners[ii].complete(entry); - break; - case EventType.event: - var event_3 = objects[i++ + 2]; - if (entry.listener && entry.listener.event) - entry.listener.event(entry, event_3); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].event) - listeners[ii].event(entry, event_3); - break; - } - } - this.clear(); - this.drainDisabled = false; - }; - EventQueue.prototype.clear = function () { - this.objects.length = 0; - }; - return EventQueue; - }()); - spine.EventQueue = EventQueue; - var EventType; - (function (EventType) { - EventType[EventType["start"] = 0] = "start"; - EventType[EventType["interrupt"] = 1] = "interrupt"; - EventType[EventType["end"] = 2] = "end"; - EventType[EventType["dispose"] = 3] = "dispose"; - EventType[EventType["complete"] = 4] = "complete"; - EventType[EventType["event"] = 5] = "event"; - })(EventType = spine.EventType || (spine.EventType = {})); - var AnimationStateAdapter = (function () { - function AnimationStateAdapter() { - } - AnimationStateAdapter.prototype.start = function (entry) { - }; - AnimationStateAdapter.prototype.interrupt = function (entry) { - }; - AnimationStateAdapter.prototype.end = function (entry) { - }; - AnimationStateAdapter.prototype.dispose = function (entry) { - }; - AnimationStateAdapter.prototype.complete = function (entry) { - }; - AnimationStateAdapter.prototype.event = function (entry, event) { - }; - return AnimationStateAdapter; - }()); - spine.AnimationStateAdapter = AnimationStateAdapter; - var SUBSEQUENT = 0; - var FIRST = 1; - var HOLD_SUBSEQUENT = 2; - var HOLD_FIRST = 3; - var HOLD_MIX = 4; - var SETUP = 1; - var CURRENT = 2; - var _emptyAnimation = null; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationStateData = (function () { - function AnimationStateData(skeletonData) { - this.animationToMixTime = {}; - this.defaultMix = 0; - if (!skeletonData) - throw new Error("skeletonData cannot be null."); - this.skeletonData = skeletonData; - } - AnimationStateData.prototype.setMix = function (fromName, toName, duration) { - var from = this.skeletonData.findAnimation(fromName); - if (!from) - throw new Error("Animation not found: " + fromName); - var to = this.skeletonData.findAnimation(toName); - if (!to) - throw new Error("Animation not found: " + toName); - this.setMixWith(from, to, duration); - }; - AnimationStateData.prototype.setMixWith = function (from, to, duration) { - if (!from) - throw new Error("from cannot be null."); - if (!to) - throw new Error("to cannot be null."); - var key = from.name + "." + to.name; - this.animationToMixTime[key] = duration; - }; - AnimationStateData.prototype.getMix = function (from, to) { - var key = from.name + "." + to.name; - var value = this.animationToMixTime[key]; - return value === undefined ? this.defaultMix : value; - }; - return AnimationStateData; - }()); - spine.AnimationStateData = AnimationStateData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AssetManager = (function () { - function AssetManager(textureLoader, pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - this.assets = {}; - this.errors = {}; - this.toLoad = 0; - this.loaded = 0; - this.textureLoader = textureLoader; - this.pathPrefix = pathPrefix; - this.downloader = downloader || new Downloader(); - } - AssetManager.prototype.start = function (path) { - this.toLoad++; - return this.pathPrefix + path; - }; - AssetManager.prototype.success = function (callback, path, asset) { - this.toLoad--; - this.loaded++; - this.assets[path] = asset; - if (callback) - callback(path, asset); - }; - AssetManager.prototype.error = function (callback, path, message) { - this.toLoad--; - this.loaded++; - this.errors[path] = message; - if (callback) - callback(path, message); - }; - AssetManager.prototype.setRawDataURI = function (path, data) { - this.downloader.rawDataUris[this.pathPrefix + path] = data; - }; - AssetManager.prototype.loadBinary = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadBinary(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load binary " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadText = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadText(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load text " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadJson = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadJson(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load JSON " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadTexture = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); - var isWebWorker = !isBrowser && typeof importScripts !== 'undefined'; - if (isWebWorker) { - fetch(path, { mode: "cors" }).then(function (response) { - if (response.ok) - return response.blob(); - _this.error(error, path, "Couldn't load image: " + path); - return null; - }).then(function (blob) { - return blob ? createImageBitmap(blob, { premultiplyAlpha: "none", colorSpaceConversion: "none" }) : null; - }).then(function (bitmap) { - if (bitmap) - _this.success(success, path, _this.textureLoader(bitmap)); - }); - } - else { - var image_1 = new Image(); - image_1.crossOrigin = "anonymous"; - image_1.onload = function () { - _this.success(success, path, _this.textureLoader(image_1)); - }; - image_1.onerror = function () { - _this.error(error, path, "Couldn't load image: " + path); - }; - if (this.downloader.rawDataUris[path]) - path = this.downloader.rawDataUris[path]; - image_1.src = path; - } - }; - AssetManager.prototype.loadTextureAtlas = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - var index = path.lastIndexOf("/"); - var parent = index >= 0 ? path.substring(0, index + 1) : ""; - path = this.start(path); - this.downloader.downloadText(path, function (atlasText) { - try { - var atlas_1 = new spine.TextureAtlas(atlasText); - var toLoad_1 = atlas_1.pages.length, abort_1 = false; - var _loop_1 = function (page) { - _this.loadTexture(parent + page.name, function (imagePath, texture) { - if (!abort_1) { - page.setTexture(texture); - if (--toLoad_1 == 0) - _this.success(success, path, atlas_1); - } - }, function (imagePath, message) { - if (!abort_1) - _this.error(error, path, "Couldn't load texture atlas " + path + " page image: " + imagePath); - abort_1 = true; - }); - }; - for (var _i = 0, _a = atlas_1.pages; _i < _a.length; _i++) { - var page = _a[_i]; - _loop_1(page); - } - } - catch (e) { - _this.error(error, path, "Couldn't parse texture atlas " + path + ": " + e.message); - } - }, function (status, responseText) { - _this.error(error, path, "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.get = function (path) { - return this.assets[this.pathPrefix + path]; - }; - AssetManager.prototype.require = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset) - return asset; - var error = this.errors[path]; - throw Error("Asset not found: " + path + (error ? "\n" + error : "")); - }; - AssetManager.prototype.remove = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset.dispose) - asset.dispose(); - delete this.assets[path]; - return asset; - }; - AssetManager.prototype.removeAll = function () { - for (var key in this.assets) { - var asset = this.assets[key]; - if (asset.dispose) - asset.dispose(); - } - this.assets = {}; - }; - AssetManager.prototype.isLoadingComplete = function () { - return this.toLoad == 0; - }; - AssetManager.prototype.getToLoad = function () { - return this.toLoad; - }; - AssetManager.prototype.getLoaded = function () { - return this.loaded; - }; - AssetManager.prototype.dispose = function () { - this.removeAll(); - }; - AssetManager.prototype.hasErrors = function () { - return Object.keys(this.errors).length > 0; - }; - AssetManager.prototype.getErrors = function () { - return this.errors; - }; - return AssetManager; - }()); - spine.AssetManager = AssetManager; - var Downloader = (function () { - function Downloader() { - this.callbacks = {}; - this.rawDataUris = {}; - } - Downloader.prototype.downloadText = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.overrideMimeType("text/html"); - request.open("GET", url, true); - var done = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = done; - request.onerror = done; - request.send(); - }; - Downloader.prototype.downloadJson = function (url, success, error) { - this.downloadText(url, function (data) { - success(JSON.parse(data)); - }, error); - }; - Downloader.prototype.downloadBinary = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.open("GET", url, true); - request.responseType = "arraybuffer"; - var onerror = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = function () { - if (request.status == 200) - _this.finish(url, 200, new Uint8Array(request.response)); - else - onerror(); - }; - request.onerror = onerror; - request.send(); - }; - Downloader.prototype.start = function (url, success, error) { - var callbacks = this.callbacks[url]; - try { - if (callbacks) - return true; - this.callbacks[url] = callbacks = []; - } - finally { - callbacks.push(success, error); - } - }; - Downloader.prototype.finish = function (url, status, data) { - var callbacks = this.callbacks[url]; - delete this.callbacks[url]; - var args = status == 200 ? [data] : [status, data]; - for (var i = args.length - 1, n = callbacks.length; i < n; i += 2) - callbacks[i].apply(null, args); - }; - return Downloader; - }()); - spine.Downloader = Downloader; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AtlasAttachmentLoader = (function () { - function AtlasAttachmentLoader(atlas) { - this.atlas = atlas; - } - AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.RegionAttachment(name); - attachment.setRegion(region); - return attachment; - }; - AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.MeshAttachment(name); - attachment.region = region; - return attachment; - }; - AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { - return new spine.BoundingBoxAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { - return new spine.PathAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) { - return new spine.PointAttachment(name); - }; - AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) { - return new spine.ClippingAttachment(name); - }; - return AtlasAttachmentLoader; - }()); - spine.AtlasAttachmentLoader = AtlasAttachmentLoader; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Bone = (function () { - function Bone(data, skeleton, parent) { - this.children = new Array(); - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 0; - this.scaleY = 0; - this.shearX = 0; - this.shearY = 0; - this.ax = 0; - this.ay = 0; - this.arotation = 0; - this.ascaleX = 0; - this.ascaleY = 0; - this.ashearX = 0; - this.ashearY = 0; - this.a = 0; - this.b = 0; - this.c = 0; - this.d = 0; - this.worldY = 0; - this.worldX = 0; - this.sorted = false; - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.skeleton = skeleton; - this.parent = parent; - this.setToSetupPose(); - } - Bone.prototype.isActive = function () { - return this.active; - }; - Bone.prototype.update = function () { - this.updateWorldTransformWith(this.ax, this.ay, this.arotation, this.ascaleX, this.ascaleY, this.ashearX, this.ashearY); - }; - Bone.prototype.updateWorldTransform = function () { - this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); - }; - Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { - this.ax = x; - this.ay = y; - this.arotation = rotation; - this.ascaleX = scaleX; - this.ascaleY = scaleY; - this.ashearX = shearX; - this.ashearY = shearY; - var parent = this.parent; - if (!parent) { - var skeleton = this.skeleton; - var rotationY = rotation + 90 + shearY; - var sx = skeleton.scaleX; - var sy = skeleton.scaleY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX * sx; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY * sx; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX * sy; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY * sy; - this.worldX = x * sx + skeleton.x; - this.worldY = y * sy + skeleton.y; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - this.worldX = pa * x + pb * y + parent.worldX; - this.worldY = pc * x + pd * y + parent.worldY; - switch (this.data.transformMode) { - case spine.TransformMode.Normal: { - var rotationY = rotation + 90 + shearY; - var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * scaleY; - var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * scaleY; - this.a = pa * la + pb * lc; - this.b = pa * lb + pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - return; - } - case spine.TransformMode.OnlyTranslation: { - var rotationY = rotation + 90 + shearY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY; - break; - } - case spine.TransformMode.NoRotationOrReflection: { - var s = pa * pa + pc * pc; - var prx = 0; - if (s > 0.0001) { - s = Math.abs(pa * pd - pb * pc) / s; - pa /= this.skeleton.scaleX; - pc /= this.skeleton.scaleY; - pb = pc * s; - pd = pa * s; - prx = Math.atan2(pc, pa) * spine.MathUtils.radDeg; - } - else { - pa = 0; - pc = 0; - prx = 90 - Math.atan2(pd, pb) * spine.MathUtils.radDeg; - } - var rx = rotation + shearX - prx; - var ry = rotation + shearY - prx + 90; - var la = spine.MathUtils.cosDeg(rx) * scaleX; - var lb = spine.MathUtils.cosDeg(ry) * scaleY; - var lc = spine.MathUtils.sinDeg(rx) * scaleX; - var ld = spine.MathUtils.sinDeg(ry) * scaleY; - this.a = pa * la - pb * lc; - this.b = pa * lb - pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - break; - } - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: { - var cos = spine.MathUtils.cosDeg(rotation); - var sin = spine.MathUtils.sinDeg(rotation); - var za = (pa * cos + pb * sin) / this.skeleton.scaleX; - var zc = (pc * cos + pd * sin) / this.skeleton.scaleY; - var s = Math.sqrt(za * za + zc * zc); - if (s > 0.00001) - s = 1 / s; - za *= s; - zc *= s; - s = Math.sqrt(za * za + zc * zc); - if (this.data.transformMode == spine.TransformMode.NoScale - && (pa * pd - pb * pc < 0) != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0)) - s = -s; - var r = Math.PI / 2 + Math.atan2(zc, za); - var zb = Math.cos(r) * s; - var zd = Math.sin(r) * s; - var la = spine.MathUtils.cosDeg(shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(90 + shearY) * scaleY; - var lc = spine.MathUtils.sinDeg(shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(90 + shearY) * scaleY; - this.a = za * la + zb * lc; - this.b = za * lb + zb * ld; - this.c = zc * la + zd * lc; - this.d = zc * lb + zd * ld; - break; - } - } - this.a *= this.skeleton.scaleX; - this.b *= this.skeleton.scaleX; - this.c *= this.skeleton.scaleY; - this.d *= this.skeleton.scaleY; - }; - Bone.prototype.setToSetupPose = function () { - var data = this.data; - this.x = data.x; - this.y = data.y; - this.rotation = data.rotation; - this.scaleX = data.scaleX; - this.scaleY = data.scaleY; - this.shearX = data.shearX; - this.shearY = data.shearY; - }; - Bone.prototype.getWorldRotationX = function () { - return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldRotationY = function () { - return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldScaleX = function () { - return Math.sqrt(this.a * this.a + this.c * this.c); - }; - Bone.prototype.getWorldScaleY = function () { - return Math.sqrt(this.b * this.b + this.d * this.d); - }; - Bone.prototype.updateAppliedTransform = function () { - var parent = this.parent; - if (!parent) { - this.ax = this.worldX; - this.ay = this.worldY; - this.arotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c); - this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d); - this.ashearX = 0; - this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * spine.MathUtils.radDeg; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - var pid = 1 / (pa * pd - pb * pc); - var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; - this.ax = (dx * pd * pid - dy * pb * pid); - this.ay = (dy * pa * pid - dx * pc * pid); - var ia = pid * pd; - var id = pid * pa; - var ib = pid * pb; - var ic = pid * pc; - var ra = ia * this.a - ib * this.c; - var rb = ia * this.b - ib * this.d; - var rc = id * this.c - ic * this.a; - var rd = id * this.d - ic * this.b; - this.ashearX = 0; - this.ascaleX = Math.sqrt(ra * ra + rc * rc); - if (this.ascaleX > 0.0001) { - var det = ra * rd - rb * rc; - this.ascaleY = det / this.ascaleX; - this.ashearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; - this.arotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; - } - else { - this.ascaleX = 0; - this.ascaleY = Math.sqrt(rb * rb + rd * rd); - this.ashearY = 0; - this.arotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; - } - }; - Bone.prototype.worldToLocal = function (world) { - var invDet = 1 / (this.a * this.d - this.b * this.c); - var x = world.x - this.worldX, y = world.y - this.worldY; - world.x = x * this.d * invDet - y * this.b * invDet; - world.y = y * this.a * invDet - x * this.c * invDet; - return world; - }; - Bone.prototype.localToWorld = function (local) { - var x = local.x, y = local.y; - local.x = x * this.a + y * this.b + this.worldX; - local.y = x * this.c + y * this.d + this.worldY; - return local; - }; - Bone.prototype.worldToLocalRotation = function (worldRotation) { - var sin = spine.MathUtils.sinDeg(worldRotation), cos = spine.MathUtils.cosDeg(worldRotation); - return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * spine.MathUtils.radDeg + this.rotation - this.shearX; - }; - Bone.prototype.localToWorldRotation = function (localRotation) { - localRotation -= this.rotation - this.shearX; - var sin = spine.MathUtils.sinDeg(localRotation), cos = spine.MathUtils.cosDeg(localRotation); - return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.rotateWorld = function (degrees) { - var a = this.a, b = this.b, c = this.c, d = this.d; - var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); - this.a = cos * a - sin * c; - this.b = cos * b - sin * d; - this.c = sin * a + cos * c; - this.d = sin * b + cos * d; - }; - return Bone; - }()); - spine.Bone = Bone; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoneData = (function () { - function BoneData(index, name, parent) { - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 1; - this.scaleY = 1; - this.shearX = 0; - this.shearY = 0; - this.transformMode = TransformMode.Normal; - this.skinRequired = false; - this.color = new spine.Color(); - if (index < 0) - throw new Error("index must be >= 0."); - if (!name) - throw new Error("name cannot be null."); - this.index = index; - this.name = name; - this.parent = parent; - } - return BoneData; - }()); - spine.BoneData = BoneData; - var TransformMode; - (function (TransformMode) { - TransformMode[TransformMode["Normal"] = 0] = "Normal"; - TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; - TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; - TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; - TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; - })(TransformMode = spine.TransformMode || (spine.TransformMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var ConstraintData = (function () { - function ConstraintData(name, order, skinRequired) { - this.name = name; - this.order = order; - this.skinRequired = skinRequired; - } - return ConstraintData; - }()); - spine.ConstraintData = ConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Event = (function () { - function Event(time, data) { - if (!data) - throw new Error("data cannot be null."); - this.time = time; - this.data = data; - } - return Event; - }()); - spine.Event = Event; -})(spine || (spine = {})); -var spine; -(function (spine) { - var EventData = (function () { - function EventData(name) { - this.name = name; - } - return EventData; - }()); - spine.EventData = EventData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraint = (function () { - function IkConstraint(data, skeleton) { - this.bendDirection = 0; - this.compress = false; - this.stretch = false; - this.mix = 1; - this.softness = 0; - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mix = data.mix; - this.softness = data.softness; - this.bendDirection = data.bendDirection; - this.compress = data.compress; - this.stretch = data.stretch; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - IkConstraint.prototype.isActive = function () { - return this.active; - }; - IkConstraint.prototype.update = function () { - if (this.mix == 0) - return; - var target = this.target; - var bones = this.bones; - switch (bones.length) { - case 1: - this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix); - break; - case 2: - this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.data.uniform, this.softness, this.mix); - break; - } - }; - IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) { - var p = bone.parent; - var pa = p.a, pb = p.b, pc = p.c, pd = p.d; - var rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0; - switch (bone.data.transformMode) { - case spine.TransformMode.OnlyTranslation: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - break; - case spine.TransformMode.NoRotationOrReflection: - var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc); - var sa = pa / bone.skeleton.scaleX; - var sc = pc / bone.skeleton.scaleY; - pb = -sc * s * bone.skeleton.scaleX; - pd = sa * s * bone.skeleton.scaleY; - rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg; - default: - var x = targetX - p.worldX, y = targetY - p.worldY; - var d = pa * pd - pb * pc; - tx = (x * pd - y * pb) / d - bone.ax; - ty = (y * pa - x * pc) / d - bone.ay; - } - rotationIK += Math.atan2(ty, tx) * spine.MathUtils.radDeg; - if (bone.ascaleX < 0) - rotationIK += 180; - if (rotationIK > 180) - rotationIK -= 360; - else if (rotationIK < -180) - rotationIK += 360; - var sx = bone.ascaleX, sy = bone.ascaleY; - if (compress || stretch) { - switch (bone.data.transformMode) { - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - } - var b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty); - if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) { - var s = (dd / b - 1) * alpha + 1; - sx *= s; - if (uniform) - sy *= s; - } - } - bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY); - }; - IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, uniform, softness, alpha) { - var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, sx = psx, sy = psy, csx = child.ascaleX; - var os1 = 0, os2 = 0, s2 = 0; - if (psx < 0) { - psx = -psx; - os1 = 180; - s2 = -1; - } - else { - os1 = 0; - s2 = 1; - } - if (psy < 0) { - psy = -psy; - s2 = -s2; - } - if (csx < 0) { - csx = -csx; - os2 = 180; - } - else - os2 = 0; - var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; - var u = Math.abs(psx - psy) <= 0.0001; - if (!u || stretch) { - cy = 0; - cwx = a * cx + parent.worldX; - cwy = c * cx + parent.worldY; - } - else { - cy = child.ay; - cwx = a * cx + b * cy + parent.worldX; - cwy = c * cx + d * cy + parent.worldY; - } - var pp = parent.parent; - a = pp.a; - b = pp.b; - c = pp.c; - d = pp.d; - var id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY; - var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; - var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2; - if (l1 < 0.0001) { - this.apply1(parent, targetX, targetY, false, stretch, false, alpha); - child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - return; - } - x = targetX - pp.worldX; - y = targetY - pp.worldY; - var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; - var dd = tx * tx + ty * ty; - if (softness != 0) { - softness *= psx * (csx + 1) * 0.5; - var td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness; - if (sd > 0) { - var p = Math.min(1, sd / (softness * 2)) - 1; - p = (sd - softness * (1 - p * p)) / td; - tx -= p * tx; - ty -= p * ty; - dd = tx * tx + ty * ty; - } - } - outer: if (u) { - l2 *= psx; - var cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2); - if (cos < -1) { - cos = -1; - a2 = Math.PI * bendDir; - } - else if (cos > 1) { - cos = 1; - a2 = 0; - if (stretch) { - a = (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1; - sx *= a; - if (uniform) - sy *= a; - } - } - else - a2 = Math.acos(cos) * bendDir; - a = l1 + l2 * cos; - b = l2 * Math.sin(a2); - a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); - } - else { - a = psx * l2; - b = psy * l2; - var aa = a * a, bb = b * b, ta = Math.atan2(ty, tx); - c = bb * l1 * l1 + aa * dd - aa * bb; - var c1 = -2 * bb * l1, c2 = bb - aa; - d = c1 * c1 - 4 * c2 * c; - if (d >= 0) { - var q = Math.sqrt(d); - if (c1 < 0) - q = -q; - q = -(c1 + q) * 0.5; - var r0 = q / c2, r1 = c / q; - var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; - if (r * r <= dd) { - y = Math.sqrt(dd - r * r) * bendDir; - a1 = ta - Math.atan2(y, r); - a2 = Math.atan2(y / psy, (r - l1) / psx); - break outer; - } - } - var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; - var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; - c = -a * l1 / (aa - bb); - if (c >= -1 && c <= 1) { - c = Math.acos(c); - x = a * Math.cos(c) + l1; - y = b * Math.sin(c); - d = x * x + y * y; - if (d < minDist) { - minAngle = c; - minDist = d; - minX = x; - minY = y; - } - if (d > maxDist) { - maxAngle = c; - maxDist = d; - maxX = x; - maxY = y; - } - } - if (dd <= (minDist + maxDist) * 0.5) { - a1 = ta - Math.atan2(minY * bendDir, minX); - a2 = minAngle * bendDir; - } - else { - a1 = ta - Math.atan2(maxY * bendDir, maxX); - a2 = maxAngle * bendDir; - } - } - var os = Math.atan2(cy, cx) * s2; - var rotation = parent.arotation; - a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; - if (a1 > 180) - a1 -= 360; - else if (a1 < -180) - a1 += 360; - parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, sy, 0, 0); - rotation = child.arotation; - a2 = ((a2 + os) * spine.MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; - if (a2 > 180) - a2 -= 360; - else if (a2 < -180) - a2 += 360; - child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - }; - return IkConstraint; - }()); - spine.IkConstraint = IkConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraintData = (function (_super) { - __extends(IkConstraintData, _super); - function IkConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.bendDirection = 1; - _this.compress = false; - _this.stretch = false; - _this.uniform = false; - _this.mix = 1; - _this.softness = 0; - return _this; - } - return IkConstraintData; - }(spine.ConstraintData)); - spine.IkConstraintData = IkConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraint = (function () { - function PathConstraint(data, skeleton) { - this.position = 0; - this.spacing = 0; - this.mixRotate = 0; - this.mixX = 0; - this.mixY = 0; - this.spaces = new Array(); - this.positions = new Array(); - this.world = new Array(); - this.curves = new Array(); - this.lengths = new Array(); - this.segments = new Array(); - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0, n = data.bones.length; i < n; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findSlot(data.target.name); - this.position = data.position; - this.spacing = data.spacing; - this.mixRotate = data.mixRotate; - this.mixX = data.mixX; - this.mixY = data.mixY; - } - PathConstraint.prototype.isActive = function () { - return this.active; - }; - PathConstraint.prototype.update = function () { - var attachment = this.target.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - return; - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY; - if (mixRotate == 0 && mixX == 0 && mixY == 0) - return; - var data = this.data; - var tangents = data.rotateMode == spine.RotateMode.Tangent, scale = data.rotateMode == spine.RotateMode.ChainScale; - var bones = this.bones; - var boneCount = bones.length, spacesCount = tangents ? boneCount : boneCount + 1; - var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = spine.Utils.setArraySize(this.lengths, boneCount) : null; - var spacing = this.spacing; - switch (data.spacingMode) { - case spine.SpacingMode.Percent: - if (scale) { - for (var i = 0, n = spacesCount - 1; i < n; i++) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) - lengths[i] = 0; - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - lengths[i] = Math.sqrt(x * x + y * y); - } - } - } - spine.Utils.arrayFill(spaces, 1, spacesCount, spacing); - break; - case spine.SpacingMode.Proportional: - var sum = 0; - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) { - if (scale) - lengths[i] = 0; - spaces[++i] = spacing; - } - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_1 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_1; - spaces[++i] = length_1; - sum += length_1; - } - } - if (sum > 0) { - sum = spacesCount / sum * spacing; - for (var i = 1; i < spacesCount; i++) - spaces[i] *= sum; - } - break; - default: - var lengthSpacing = data.spacingMode == spine.SpacingMode.Length; - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) { - if (scale) - lengths[i] = 0; - spaces[++i] = spacing; - } - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_2 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_2; - spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_2 / setupLength; - } - } - } - var positions = this.computeWorldPositions(attachment, spacesCount, tangents); - var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; - var tip = false; - if (offsetRotation == 0) - tip = data.rotateMode == spine.RotateMode.Chain; - else { - tip = false; - var p = this.target.bone; - offsetRotation *= p.a * p.d - p.b * p.c > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - } - for (var i = 0, p = 3; i < boneCount; i++, p += 3) { - var bone = bones[i]; - bone.worldX += (boneX - bone.worldX) * mixX; - bone.worldY += (boneY - bone.worldY) * mixY; - var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; - if (scale) { - var length_3 = lengths[i]; - if (length_3 != 0) { - var s = (Math.sqrt(dx * dx + dy * dy) / length_3 - 1) * mixRotate + 1; - bone.a *= s; - bone.c *= s; - } - } - boneX = x; - boneY = y; - if (mixRotate > 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; - if (tangents) - r = positions[p - 1]; - else if (spaces[i + 1] == 0) - r = positions[p + 2]; - else - r = Math.atan2(dy, dx); - r -= Math.atan2(c, a); - if (tip) { - cos = Math.cos(r); - sin = Math.sin(r); - var length_4 = bone.data.length; - boneX += (length_4 * (cos * a - sin * c) - dx) * mixRotate; - boneY += (length_4 * (sin * a + cos * c) - dy) * mixRotate; - } - else { - r += offsetRotation; - } - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - cos = Math.cos(r); - sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - bone.updateAppliedTransform(); - } - }; - PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents) { - var target = this.target; - var position = this.position; - var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; - var closed = path.closed; - var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; - if (!path.constantSpeed) { - var lengths = path.lengths; - curveCount -= closed ? 1 : 2; - var pathLength_1 = lengths[curveCount]; - if (this.data.positionMode == spine.PositionMode.Percent) - position *= pathLength_1; - var multiplier_1; - switch (this.data.spacingMode) { - case spine.SpacingMode.Percent: - multiplier_1 = pathLength_1; - break; - case spine.SpacingMode.Proportional: - multiplier_1 = pathLength_1 / spacesCount; - break; - default: - multiplier_1 = 1; - } - world = spine.Utils.setArraySize(this.world, 8); - for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i] * multiplier_1; - position += space; - var p = position; - if (closed) { - p %= pathLength_1; - if (p < 0) - p += pathLength_1; - curve = 0; - } - else if (p < 0) { - if (prevCurve != PathConstraint.BEFORE) { - prevCurve = PathConstraint.BEFORE; - path.computeWorldVertices(target, 2, 4, world, 0, 2); - } - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength_1) { - if (prevCurve != PathConstraint.AFTER) { - prevCurve = PathConstraint.AFTER; - path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2); - } - this.addAfterPosition(p - pathLength_1, world, 0, out, o); - continue; - } - for (;; curve++) { - var length_5 = lengths[curve]; - if (p > length_5) - continue; - if (curve == 0) - p /= length_5; - else { - var prev = lengths[curve - 1]; - p = (p - prev) / (length_5 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - if (closed && curve == curveCount) { - path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2); - path.computeWorldVertices(target, 0, 4, world, 4, 2); - } - else - path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2); - } - this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); - } - return out; - } - if (closed) { - verticesLength += 2; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2); - path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2); - world[verticesLength - 2] = world[0]; - world[verticesLength - 1] = world[1]; - } - else { - curveCount--; - verticesLength -= 4; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); - } - var curves = spine.Utils.setArraySize(this.curves, curveCount); - var pathLength = 0; - var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; - var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; - for (var i = 0, w = 2; i < curveCount; i++, w += 6) { - cx1 = world[w]; - cy1 = world[w + 1]; - cx2 = world[w + 2]; - cy2 = world[w + 3]; - x2 = world[w + 4]; - y2 = world[w + 5]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; - tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - curves[i] = pathLength; - x1 = x2; - y1 = y2; - } - if (this.data.positionMode == spine.PositionMode.Percent) - position *= pathLength; - var multiplier; - switch (this.data.spacingMode) { - case spine.SpacingMode.Percent: - multiplier = pathLength; - break; - case spine.SpacingMode.Proportional: - multiplier = pathLength / spacesCount; - break; - default: - multiplier = 1; - } - var segments = this.segments; - var curveLength = 0; - for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i] * multiplier; - position += space; - var p = position; - if (closed) { - p %= pathLength; - if (p < 0) - p += pathLength; - curve = 0; - } - else if (p < 0) { - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength) { - this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); - continue; - } - for (;; curve++) { - var length_6 = curves[curve]; - if (p > length_6) - continue; - if (curve == 0) - p /= length_6; - else { - var prev = curves[curve - 1]; - p = (p - prev) / (length_6 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - var ii = curve * 6; - x1 = world[ii]; - y1 = world[ii + 1]; - cx1 = world[ii + 2]; - cy1 = world[ii + 3]; - cx2 = world[ii + 4]; - cy2 = world[ii + 5]; - x2 = world[ii + 6]; - y2 = world[ii + 7]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.03; - tmpy = (y1 - cy1 * 2 + cy2) * 0.03; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; - curveLength = Math.sqrt(dfx * dfx + dfy * dfy); - segments[0] = curveLength; - for (ii = 1; ii < 8; ii++) { - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[ii] = curveLength; - } - dfx += ddfx; - dfy += ddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[8] = curveLength; - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[9] = curveLength; - segment = 0; - } - p *= curveLength; - for (;; segment++) { - var length_7 = segments[segment]; - if (p > length_7) - continue; - if (segment == 0) - p /= length_7; - else { - var prev = segments[segment - 1]; - p = segment + (p - prev) / (length_7 - prev); - } - break; - } - this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); - } - return out; - }; - PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { - var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { - var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { - if (p == 0 || isNaN(p)) { - out[o] = x1; - out[o + 1] = y1; - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - return; - } - var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; - var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; - var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; - out[o] = x; - out[o + 1] = y; - if (tangents) { - if (p < 0.001) - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - else - out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); - } - }; - PathConstraint.NONE = -1; - PathConstraint.BEFORE = -2; - PathConstraint.AFTER = -3; - PathConstraint.epsilon = 0.00001; - return PathConstraint; - }()); - spine.PathConstraint = PathConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraintData = (function (_super) { - __extends(PathConstraintData, _super); - function PathConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.mixRotate = 0; - _this.mixX = 0; - _this.mixY = 0; - return _this; - } - return PathConstraintData; - }(spine.ConstraintData)); - spine.PathConstraintData = PathConstraintData; - var PositionMode; - (function (PositionMode) { - PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; - PositionMode[PositionMode["Percent"] = 1] = "Percent"; - })(PositionMode = spine.PositionMode || (spine.PositionMode = {})); - var SpacingMode; - (function (SpacingMode) { - SpacingMode[SpacingMode["Length"] = 0] = "Length"; - SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; - SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; - SpacingMode[SpacingMode["Proportional"] = 3] = "Proportional"; - })(SpacingMode = spine.SpacingMode || (spine.SpacingMode = {})); - var RotateMode; - (function (RotateMode) { - RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; - RotateMode[RotateMode["Chain"] = 1] = "Chain"; - RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; - })(RotateMode = spine.RotateMode || (spine.RotateMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Skeleton = (function () { - function Skeleton(data) { - this._updateCache = new Array(); - this.time = 0; - this.scaleX = 1; - this.scaleY = 1; - this.x = 0; - this.y = 0; - if (!data) - throw new Error("data cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) { - var boneData = data.bones[i]; - var bone = void 0; - if (!boneData.parent) - bone = new spine.Bone(boneData, this, null); - else { - var parent_1 = this.bones[boneData.parent.index]; - bone = new spine.Bone(boneData, this, parent_1); - parent_1.children.push(bone); - } - this.bones.push(bone); - } - this.slots = new Array(); - this.drawOrder = new Array(); - for (var i = 0; i < data.slots.length; i++) { - var slotData = data.slots[i]; - var bone = this.bones[slotData.boneData.index]; - var slot = new spine.Slot(slotData, bone); - this.slots.push(slot); - this.drawOrder.push(slot); - } - this.ikConstraints = new Array(); - for (var i = 0; i < data.ikConstraints.length; i++) { - var ikConstraintData = data.ikConstraints[i]; - this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); - } - this.transformConstraints = new Array(); - for (var i = 0; i < data.transformConstraints.length; i++) { - var transformConstraintData = data.transformConstraints[i]; - this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); - } - this.pathConstraints = new Array(); - for (var i = 0; i < data.pathConstraints.length; i++) { - var pathConstraintData = data.pathConstraints[i]; - this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); - } - this.color = new spine.Color(1, 1, 1, 1); - this.updateCache(); - } - Skeleton.prototype.updateCache = function () { - var updateCache = this._updateCache; - updateCache.length = 0; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - bone.sorted = bone.data.skinRequired; - bone.active = !bone.sorted; - } - if (this.skin) { - var skinBones = this.skin.bones; - for (var i = 0, n = this.skin.bones.length; i < n; i++) { - var bone = this.bones[skinBones[i].index]; - do { - bone.sorted = false; - bone.active = true; - bone = bone.parent; - } while (bone); - } - } - var ikConstraints = this.ikConstraints; - var transformConstraints = this.transformConstraints; - var pathConstraints = this.pathConstraints; - var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length; - var constraintCount = ikCount + transformCount + pathCount; - outer: for (var i = 0; i < constraintCount; i++) { - for (var ii = 0; ii < ikCount; ii++) { - var constraint = ikConstraints[ii]; - if (constraint.data.order == i) { - this.sortIkConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < transformCount; ii++) { - var constraint = transformConstraints[ii]; - if (constraint.data.order == i) { - this.sortTransformConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < pathCount; ii++) { - var constraint = pathConstraints[ii]; - if (constraint.data.order == i) { - this.sortPathConstraint(constraint); - continue outer; - } - } - } - for (var i = 0, n = bones.length; i < n; i++) - this.sortBone(bones[i]); - }; - Skeleton.prototype.sortIkConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var target = constraint.target; - this.sortBone(target); - var constrained = constraint.bones; - var parent = constrained[0]; - this.sortBone(parent); - if (constrained.length == 1) { - this._updateCache.push(constraint); - this.sortReset(parent.children); - } - else { - var child = constrained[constrained.length - 1]; - this.sortBone(child); - this._updateCache.push(constraint); - this.sortReset(parent.children); - child.sorted = true; - } - }; - Skeleton.prototype.sortPathConstraint = function (constraint) { - constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var slot = constraint.target; - var slotIndex = slot.data.index; - var slotBone = slot.bone; - if (this.skin) - this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); - if (this.data.defaultSkin && this.data.defaultSkin != this.skin) - this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); - for (var i = 0, n = this.data.skins.length; i < n; i++) - this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone); - var attachment = slot.getAttachment(); - if (attachment instanceof spine.PathAttachment) - this.sortPathConstraintAttachmentWith(attachment, slotBone); - var constrained = constraint.bones; - var boneCount = constrained.length; - for (var i = 0; i < boneCount; i++) - this.sortBone(constrained[i]); - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortTransformConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - this.sortBone(constraint.target); - var constrained = constraint.bones; - var boneCount = constrained.length; - if (constraint.data.local) { - for (var i = 0; i < boneCount; i++) { - var child = constrained[i]; - this.sortBone(child.parent); - this.sortBone(child); - } - } - else { - for (var i = 0; i < boneCount; i++) { - this.sortBone(constrained[i]); - } - } - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { - var attachments = skin.attachments[slotIndex]; - if (!attachments) - return; - for (var key in attachments) { - this.sortPathConstraintAttachmentWith(attachments[key], slotBone); - } - }; - Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { - if (!(attachment instanceof spine.PathAttachment)) - return; - var pathBones = attachment.bones; - if (!pathBones) - this.sortBone(slotBone); - else { - var bones = this.bones; - for (var i = 0, n = pathBones.length; i < n;) { - var nn = pathBones[i++]; - nn += i; - while (i < nn) - this.sortBone(bones[pathBones[i++]]); - } - } - }; - Skeleton.prototype.sortBone = function (bone) { - if (bone.sorted) - return; - var parent = bone.parent; - if (parent) - this.sortBone(parent); - bone.sorted = true; - this._updateCache.push(bone); - }; - Skeleton.prototype.sortReset = function (bones) { - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (!bone.active) - continue; - if (bone.sorted) - this.sortReset(bone.children); - bone.sorted = false; - } - }; - Skeleton.prototype.updateWorldTransform = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - bone.ax = bone.x; - bone.ay = bone.y; - bone.arotation = bone.rotation; - bone.ascaleX = bone.scaleX; - bone.ascaleY = bone.scaleY; - bone.ashearX = bone.shearX; - bone.ashearY = bone.shearY; - } - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) - updateCache[i].update(); - }; - Skeleton.prototype.updateWorldTransformWith = function (parent) { - var rootBone = this.getRootBone(); - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - rootBone.worldX = pa * this.x + pb * this.y + parent.worldX; - rootBone.worldY = pc * this.x + pd * this.y + parent.worldY; - var rotationY = rootBone.rotation + 90 + rootBone.shearY; - var la = spine.MathUtils.cosDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * rootBone.scaleY; - var lc = spine.MathUtils.sinDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * rootBone.scaleY; - rootBone.a = (pa * la + pb * lc) * this.scaleX; - rootBone.b = (pa * lb + pb * ld) * this.scaleX; - rootBone.c = (pc * la + pd * lc) * this.scaleY; - rootBone.d = (pc * lb + pd * ld) * this.scaleY; - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) { - var updatable = updateCache[i]; - if (updatable != rootBone) - updatable.update(); - } - }; - Skeleton.prototype.setToSetupPose = function () { - this.setBonesToSetupPose(); - this.setSlotsToSetupPose(); - }; - Skeleton.prototype.setBonesToSetupPose = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - bones[i].setToSetupPose(); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - var data = constraint.data; - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - constraint.mixScaleX = data.mixScaleX; - constraint.mixScaleY = data.mixScaleY; - constraint.mixShearY = data.mixShearY; - } - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - var data = constraint.data; - constraint.position = data.position; - constraint.spacing = data.spacing; - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - } - }; - Skeleton.prototype.setSlotsToSetupPose = function () { - var slots = this.slots; - spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); - for (var i = 0, n = slots.length; i < n; i++) - slots[i].setToSetupPose(); - }; - Skeleton.prototype.getRootBone = function () { - if (this.bones.length == 0) - return null; - return this.bones[0]; - }; - Skeleton.prototype.findBone = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.data.name == boneName) - return bone; - } - return null; - }; - Skeleton.prototype.findBoneIndex = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].data.name == boneName) - return i; - return -1; - }; - Skeleton.prototype.findSlot = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) - return slot; - } - return null; - }; - Skeleton.prototype.findSlotIndex = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].data.name == slotName) - return i; - return -1; - }; - Skeleton.prototype.setSkinByName = function (skinName) { - var skin = this.data.findSkin(skinName); - if (!skin) - throw new Error("Skin not found: " + skinName); - this.setSkin(skin); - }; - Skeleton.prototype.setSkin = function (newSkin) { - if (newSkin == this.skin) - return; - if (newSkin) { - if (this.skin) - newSkin.attachAll(this, this.skin); - else { - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var name_1 = slot.data.attachmentName; - if (name_1) { - var attachment = newSkin.getAttachment(i, name_1); - if (attachment) - slot.setAttachment(attachment); - } - } - } - } - this.skin = newSkin; - this.updateCache(); - }; - Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { - return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); - }; - Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { - if (!attachmentName) - throw new Error("attachmentName cannot be null."); - if (this.skin) { - var attachment = this.skin.getAttachment(slotIndex, attachmentName); - if (attachment) - return attachment; - } - if (this.data.defaultSkin) - return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); - return null; - }; - Skeleton.prototype.setAttachment = function (slotName, attachmentName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) { - var attachment = null; - if (attachmentName) { - attachment = this.getAttachment(i, attachmentName); - if (!attachment) - throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); - } - slot.setAttachment(attachment); - return; - } - } - throw new Error("Slot not found: " + slotName); - }; - Skeleton.prototype.findIkConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var ikConstraint = ikConstraints[i]; - if (ikConstraint.data.name == constraintName) - return ikConstraint; - } - return null; - }; - Skeleton.prototype.findTransformConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.findPathConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.getBounds = function (offset, size, temp) { - if (temp === void 0) { temp = new Array(2); } - if (!offset) - throw new Error("offset cannot be null."); - if (!size) - throw new Error("size cannot be null."); - var drawOrder = this.drawOrder; - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - if (!slot.bone.active) - continue; - var verticesLength = 0; - var vertices = null; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - verticesLength = 8; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - attachment.computeWorldVertices(slot.bone, vertices, 0, 2); - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - verticesLength = mesh.worldVerticesLength; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2); - } - if (vertices) { - for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - } - offset.set(minX, minY); - size.set(maxX - minX, maxY - minY); - }; - Skeleton.prototype.update = function (delta) { - this.time += delta; - }; - return Skeleton; - }()); - spine.Skeleton = Skeleton; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBinary = (function () { - function SkeletonBinary(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonBinary.prototype.readSkeletonData = function (binary) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - skeletonData.name = ""; - var input = new BinaryInput(binary); - var lowHash = input.readInt32(); - var highHash = input.readInt32(); - skeletonData.hash = highHash == 0 && lowHash == 0 ? null : highHash.toString(16) + lowHash.toString(16); - skeletonData.version = input.readString(); - skeletonData.x = input.readFloat(); - skeletonData.y = input.readFloat(); - skeletonData.width = input.readFloat(); - skeletonData.height = input.readFloat(); - var nonessential = input.readBoolean(); - if (nonessential) { - skeletonData.fps = input.readFloat(); - skeletonData.imagesPath = input.readString(); - skeletonData.audioPath = input.readString(); - } - var n = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) - input.strings.push(input.readString()); - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var name_2 = input.readString(); - var parent_2 = i == 0 ? null : skeletonData.bones[input.readInt(true)]; - var data = new spine.BoneData(i, name_2, parent_2); - data.rotation = input.readFloat(); - data.x = input.readFloat() * scale; - data.y = input.readFloat() * scale; - data.scaleX = input.readFloat(); - data.scaleY = input.readFloat(); - data.shearX = input.readFloat(); - data.shearY = input.readFloat(); - data.length = input.readFloat() * scale; - data.transformMode = input.readInt(true); - data.skinRequired = input.readBoolean(); - if (nonessential) - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - skeletonData.bones.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var slotName = input.readString(); - var boneData = skeletonData.bones[input.readInt(true)]; - var data = new spine.SlotData(i, slotName, boneData); - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - var darkColor = input.readInt32(); - if (darkColor != -1) - spine.Color.rgb888ToColor(data.darkColor = new spine.Color(), darkColor); - data.attachmentName = input.readStringRef(); - data.blendMode = input.readInt(true); - skeletonData.slots.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.IkConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.mix = input.readFloat(); - data.softness = input.readFloat() * scale; - data.bendDirection = input.readByte(); - data.compress = input.readBoolean(); - data.stretch = input.readBoolean(); - data.uniform = input.readBoolean(); - skeletonData.ikConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.TransformConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.local = input.readBoolean(); - data.relative = input.readBoolean(); - data.offsetRotation = input.readFloat(); - data.offsetX = input.readFloat() * scale; - data.offsetY = input.readFloat() * scale; - data.offsetScaleX = input.readFloat(); - data.offsetScaleY = input.readFloat(); - data.offsetShearY = input.readFloat(); - data.mixRotate = input.readFloat(); - data.mixX = input.readFloat(); - data.mixY = input.readFloat(); - data.mixScaleX = input.readFloat(); - data.mixScaleY = input.readFloat(); - data.mixShearY = input.readFloat(); - skeletonData.transformConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.PathConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.slots[input.readInt(true)]; - data.positionMode = input.readInt(true); - data.spacingMode = input.readInt(true); - data.rotateMode = input.readInt(true); - data.offsetRotation = input.readFloat(); - data.position = input.readFloat(); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = input.readFloat(); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.mixRotate = input.readFloat(); - data.mixX = input.readFloat(); - data.mixY = input.readFloat(); - skeletonData.pathConstraints.push(data); - } - var defaultSkin = this.readSkin(input, skeletonData, true, nonessential); - if (defaultSkin) { - skeletonData.defaultSkin = defaultSkin; - skeletonData.skins.push(defaultSkin); - } - { - var i = skeletonData.skins.length; - spine.Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); - for (; i < n; i++) - skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential); - } - n = this.linkedMeshes.length; - for (var i = 0; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - var parent_3 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_3 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_3); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var data = new spine.EventData(input.readStringRef()); - data.intValue = input.readInt(false); - data.floatValue = input.readFloat(); - data.stringValue = input.readString(); - data.audioPath = input.readString(); - if (data.audioPath) { - data.volume = input.readFloat(); - data.balance = input.readFloat(); - } - skeletonData.events.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) - skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData)); - return skeletonData; - }; - SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) { - var skin = null; - var slotCount = 0; - if (defaultSkin) { - slotCount = input.readInt(true); - if (slotCount == 0) - return null; - skin = new spine.Skin("default"); - } - else { - skin = new spine.Skin(input.readStringRef()); - skin.bones.length = input.readInt(true); - for (var i = 0, n = skin.bones.length; i < n; i++) - skin.bones[i] = skeletonData.bones[input.readInt(true)]; - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]); - slotCount = input.readInt(true); - } - for (var i = 0; i < slotCount; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var name_3 = input.readStringRef(); - var attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name_3, nonessential); - if (attachment) - skin.setAttachment(slotIndex, name_3, attachment); - } - } - return skin; - }; - SkeletonBinary.prototype.readAttachment = function (input, skeletonData, skin, slotIndex, attachmentName, nonessential) { - var scale = this.scale; - var name = input.readStringRef(); - if (!name) - name = attachmentName; - switch (input.readByte()) { - case AttachmentType.Region: { - var path = input.readStringRef(); - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var scaleX = input.readFloat(); - var scaleY = input.readFloat(); - var width = input.readFloat(); - var height = input.readFloat(); - var color = input.readInt32(); - if (!path) - path = name; - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (!region) - return null; - region.path = path; - region.x = x * scale; - region.y = y * scale; - region.scaleX = scaleX; - region.scaleY = scaleY; - region.rotation = rotation; - region.width = width * scale; - region.height = height * scale; - spine.Color.rgba8888ToColor(region.color, color); - region.updateOffset(); - return region; - } - case AttachmentType.BoundingBox: { - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (!box) - return null; - box.worldVerticesLength = vertexCount << 1; - box.vertices = vertices.vertices; - box.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(box.color, color); - return box; - } - case AttachmentType.Mesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var vertexCount = input.readInt(true); - var uvs = this.readFloatArray(input, vertexCount << 1, 1); - var triangles = this.readShortArray(input); - var vertices = this.readVertices(input, vertexCount); - var hullLength = input.readInt(true); - var edges = null; - var width = 0, height = 0; - if (nonessential) { - edges = this.readShortArray(input); - width = input.readFloat(); - height = input.readFloat(); - } - if (!path) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - mesh.bones = vertices.bones; - mesh.vertices = vertices.vertices; - mesh.worldVerticesLength = vertexCount << 1; - mesh.triangles = triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.hullLength = hullLength << 1; - if (nonessential) { - mesh.edges = edges; - mesh.width = width * scale; - mesh.height = height * scale; - } - return mesh; - } - case AttachmentType.LinkedMesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var skinName = input.readStringRef(); - var parent_4 = input.readStringRef(); - var inheritDeform = input.readBoolean(); - var width = 0, height = 0; - if (nonessential) { - width = input.readFloat(); - height = input.readFloat(); - } - if (!path) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - if (nonessential) { - mesh.width = width * scale; - mesh.height = height * scale; - } - this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent_4, inheritDeform)); - return mesh; - } - case AttachmentType.Path: { - var closed_1 = input.readBoolean(); - var constantSpeed = input.readBoolean(); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0, n = lengths.length; i < n; i++) - lengths[i] = input.readFloat() * scale; - var color = nonessential ? input.readInt32() : 0; - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (!path) - return null; - path.closed = closed_1; - path.constantSpeed = constantSpeed; - path.worldVerticesLength = vertexCount << 1; - path.vertices = vertices.vertices; - path.bones = vertices.bones; - path.lengths = lengths; - if (nonessential) - spine.Color.rgba8888ToColor(path.color, color); - return path; - } - case AttachmentType.Point: { - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var color = nonessential ? input.readInt32() : 0; - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (!point) - return null; - point.x = x * scale; - point.y = y * scale; - point.rotation = rotation; - if (nonessential) - spine.Color.rgba8888ToColor(point.color, color); - return point; - } - case AttachmentType.Clipping: { - var endSlotIndex = input.readInt(true); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (!clip) - return null; - clip.endSlot = skeletonData.slots[endSlotIndex]; - clip.worldVerticesLength = vertexCount << 1; - clip.vertices = vertices.vertices; - clip.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(clip.color, color); - return clip; - } - } - return null; - }; - SkeletonBinary.prototype.readVertices = function (input, vertexCount) { - var scale = this.scale; - var verticesLength = vertexCount << 1; - var vertices = new Vertices(); - if (!input.readBoolean()) { - vertices.vertices = this.readFloatArray(input, verticesLength, scale); - return vertices; - } - var weights = new Array(); - var bonesArray = new Array(); - for (var i = 0; i < vertexCount; i++) { - var boneCount = input.readInt(true); - bonesArray.push(boneCount); - for (var ii = 0; ii < boneCount; ii++) { - bonesArray.push(input.readInt(true)); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat()); - } - } - vertices.vertices = spine.Utils.toFloatArray(weights); - vertices.bones = bonesArray; - return vertices; - }; - SkeletonBinary.prototype.readFloatArray = function (input, n, scale) { - var array = new Array(n); - if (scale == 1) { - for (var i = 0; i < n; i++) - array[i] = input.readFloat(); - } - else { - for (var i = 0; i < n; i++) - array[i] = input.readFloat() * scale; - } - return array; - }; - SkeletonBinary.prototype.readShortArray = function (input) { - var n = input.readInt(true); - var array = new Array(n); - for (var i = 0; i < n; i++) - array[i] = input.readShort(); - return array; - }; - SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) { - input.readInt(true); - var timelines = new Array(); - var scale = this.scale; - var tempColor1 = new spine.Color(); - var tempColor2 = new spine.Color(); - for (var i = 0, n = input.readInt(true); i < n; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var timelineType = input.readByte(); - var frameCount = input.readInt(true); - var frameLast = frameCount - 1; - switch (timelineType) { - case SLOT_ATTACHMENT: { - var timeline = new spine.AttachmentTimeline(frameCount, slotIndex); - for (var frame = 0; frame < frameCount; frame++) - timeline.setFrame(frame, input.readFloat(), input.readStringRef()); - timelines.push(timeline); - break; - } - case SLOT_RGBA: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBATimeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var a = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, a); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - var a2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, a, a2, 1); - } - time = time2; - r = r2; - g = g2; - b = b2; - a = a2; - } - timelines.push(timeline); - break; - } - case SLOT_RGB: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBTimeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); - } - time = time2; - r = r2; - g = g2; - b = b2; - } - timelines.push(timeline); - break; - } - case SLOT_RGBA2: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBA2Timeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var a = input.readUnsignedByte() / 255.0; - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, a, r2, g2, b2); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var nr = input.readUnsignedByte() / 255.0; - var ng = input.readUnsignedByte() / 255.0; - var nb = input.readUnsignedByte() / 255.0; - var na = input.readUnsignedByte() / 255.0; - var nr2 = input.readUnsignedByte() / 255.0; - var ng2 = input.readUnsignedByte() / 255.0; - var nb2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, a, na, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, r2, nr2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, g2, ng2, 1); - setBezier(input, timeline, bezier++, frame, 6, time, time2, b2, nb2, 1); - } - time = time2; - r = nr; - g = ng; - b = nb; - a = na; - r2 = nr2; - g2 = ng2; - b2 = nb2; - } - timelines.push(timeline); - break; - } - case SLOT_RGB2: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGB2Timeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, r2, g2, b2); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var nr = input.readUnsignedByte() / 255.0; - var ng = input.readUnsignedByte() / 255.0; - var nb = input.readUnsignedByte() / 255.0; - var nr2 = input.readUnsignedByte() / 255.0; - var ng2 = input.readUnsignedByte() / 255.0; - var nb2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, r2, nr2, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, g2, ng2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, b2, nb2, 1); - } - time = time2; - r = nr; - g = ng; - b = nb; - r2 = nr2; - g2 = ng2; - b2 = nb2; - } - timelines.push(timeline); - break; - } - case SLOT_ALPHA: { - var timeline = new spine.AlphaTimeline(frameCount, input.readInt(true), slotIndex); - var time = input.readFloat(), a = input.readUnsignedByte() / 255; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, a); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var a2 = input.readUnsignedByte() / 255; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, a, a2, 1); - } - time = time2; - a = a2; - } - timelines.push(timeline); - break; - } - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var boneIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true); - switch (type) { - case BONE_ROTATE: - timelines.push(readTimeline1(input, new spine.RotateTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_TRANSLATE: - timelines.push(readTimeline2(input, new spine.TranslateTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_TRANSLATEX: - timelines.push(readTimeline1(input, new spine.TranslateXTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_TRANSLATEY: - timelines.push(readTimeline1(input, new spine.TranslateYTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_SCALE: - timelines.push(readTimeline2(input, new spine.ScaleTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SCALEX: - timelines.push(readTimeline1(input, new spine.ScaleXTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SCALEY: - timelines.push(readTimeline1(input, new spine.ScaleYTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEAR: - timelines.push(readTimeline2(input, new spine.ShearTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEARX: - timelines.push(readTimeline1(input, new spine.ShearXTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEARY: - timelines.push(readTimeline1(input, new spine.ShearYTimeline(frameCount, bezierCount, boneIndex), 1)); - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; - var timeline = new spine.IkConstraintTimeline(frameCount, input.readInt(true), index); - var time = input.readFloat(), mix = input.readFloat(), softness = input.readFloat() * scale; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mix, softness, input.readByte(), input.readBoolean(), input.readBoolean()); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mix2 = input.readFloat(), softness2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale); - } - time = time2; - mix = mix2; - softness = softness2; - } - timelines.push(timeline); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; - var timeline = new spine.TransformConstraintTimeline(frameCount, input.readInt(true), index); - var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(), mixScaleX = input.readFloat(), mixScaleY = input.readFloat(), mixShearY = input.readFloat(); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(), mixScaleX2 = input.readFloat(), mixScaleY2 = input.readFloat(), mixShearY2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, mixShearY, mixShearY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - mixScaleX = mixScaleX2; - mixScaleY = mixScaleY2; - mixShearY = mixShearY2; - } - timelines.push(timeline); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true); - var data = skeletonData.pathConstraints[index]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - switch (input.readByte()) { - case PATH_POSITION: - timelines - .push(readTimeline1(input, new spine.PathConstraintPositionTimeline(input.readInt(true), input.readInt(true), index), data.positionMode == spine.PositionMode.Fixed ? scale : 1)); - break; - case PATH_SPACING: - timelines - .push(readTimeline1(input, new spine.PathConstraintSpacingTimeline(input.readInt(true), input.readInt(true), index), data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed ? scale : 1)); - break; - case PATH_MIX: - var timeline = new spine.PathConstraintMixTimeline(input.readInt(true), input.readInt(true), index); - var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(); - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - } - timelines.push(timeline); - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var skin = skeletonData.skins[input.readInt(true)]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var slotIndex = input.readInt(true); - for (var iii = 0, nnn = input.readInt(true); iii < nnn; iii++) { - var attachmentName = input.readStringRef(); - var attachment = skin.getAttachment(slotIndex, attachmentName); - var weighted = attachment.bones; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var frameCount = input.readInt(true); - var frameLast = frameCount - 1; - var bezierCount = input.readInt(true); - var timeline = new spine.DeformTimeline(frameCount, bezierCount, slotIndex, attachment); - var time = input.readFloat(); - for (var frame = 0, bezier = 0;; frame++) { - var deform = void 0; - var end = input.readInt(true); - if (end == 0) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = input.readInt(true); - end += start; - if (scale == 1) { - for (var v = start; v < end; v++) - deform[v] = input.readFloat(); - } - else { - for (var v = start; v < end; v++) - deform[v] = input.readFloat() * scale; - } - if (!weighted) { - for (var v = 0, vn = deform.length; v < vn; v++) - deform[v] += vertices[v]; - } - } - timeline.setFrame(frame, time, deform); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1); - } - time = time2; - } - timelines.push(timeline); - } - } - } - var drawOrderCount = input.readInt(true); - if (drawOrderCount > 0) { - var timeline = new spine.DrawOrderTimeline(drawOrderCount); - var slotCount = skeletonData.slots.length; - for (var i = 0; i < drawOrderCount; i++) { - var time = input.readFloat(); - var offsetCount = input.readInt(true); - var drawOrder = spine.Utils.newArray(slotCount, 0); - for (var ii = slotCount - 1; ii >= 0; ii--) - drawOrder[ii] = -1; - var unchanged = spine.Utils.newArray(slotCount - offsetCount, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var ii = 0; ii < offsetCount; ii++) { - var slotIndex = input.readInt(true); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + input.readInt(true)] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var ii = slotCount - 1; ii >= 0; ii--) - if (drawOrder[ii] == -1) - drawOrder[ii] = unchanged[--unchangedIndex]; - timeline.setFrame(i, time, drawOrder); - } - timelines.push(timeline); - } - var eventCount = input.readInt(true); - if (eventCount > 0) { - var timeline = new spine.EventTimeline(eventCount); - for (var i = 0; i < eventCount; i++) { - var time = input.readFloat(); - var eventData = skeletonData.events[input.readInt(true)]; - var event_4 = new spine.Event(time, eventData); - event_4.intValue = input.readInt(false); - event_4.floatValue = input.readFloat(); - event_4.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue; - if (event_4.data.audioPath) { - event_4.volume = input.readFloat(); - event_4.balance = input.readFloat(); - } - timeline.setFrame(i, event_4); - } - timelines.push(timeline); - } - var duration = 0; - for (var i = 0, n = timelines.length; i < n; i++) - duration = Math.max(duration, timelines[i].getDuration()); - return new spine.Animation(name, timelines, duration); - }; - return SkeletonBinary; - }()); - spine.SkeletonBinary = SkeletonBinary; - var BinaryInput = (function () { - function BinaryInput(data, strings, index, buffer) { - if (strings === void 0) { strings = new Array(); } - if (index === void 0) { index = 0; } - if (buffer === void 0) { buffer = new DataView(data.buffer); } - this.strings = strings; - this.index = index; - this.buffer = buffer; - } - BinaryInput.prototype.readByte = function () { - return this.buffer.getInt8(this.index++); - }; - BinaryInput.prototype.readUnsignedByte = function () { - return this.buffer.getUint8(this.index++); - }; - BinaryInput.prototype.readShort = function () { - var value = this.buffer.getInt16(this.index); - this.index += 2; - return value; - }; - BinaryInput.prototype.readInt32 = function () { - var value = this.buffer.getInt32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readInt = function (optimizePositive) { - var b = this.readByte(); - var result = b & 0x7F; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 7; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 14; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 21; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 28; - } - } - } - } - return optimizePositive ? result : ((result >>> 1) ^ -(result & 1)); - }; - BinaryInput.prototype.readStringRef = function () { - var index = this.readInt(true); - return index == 0 ? null : this.strings[index - 1]; - }; - BinaryInput.prototype.readString = function () { - var byteCount = this.readInt(true); - switch (byteCount) { - case 0: - return null; - case 1: - return ""; - } - byteCount--; - var chars = ""; - var charCount = 0; - for (var i = 0; i < byteCount;) { - var b = this.readByte(); - switch (b >> 4) { - case 12: - case 13: - chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F)); - i += 2; - break; - case 14: - chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F)); - i += 3; - break; - default: - chars += String.fromCharCode(b); - i++; - } - } - return chars; - }; - BinaryInput.prototype.readFloat = function () { - var value = this.buffer.getFloat32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readBoolean = function () { - return this.readByte() != 0; - }; - return BinaryInput; - }()); - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); - var Vertices = (function () { - function Vertices(bones, vertices) { - if (bones === void 0) { bones = null; } - if (vertices === void 0) { vertices = null; } - this.bones = bones; - this.vertices = vertices; - } - return Vertices; - }()); - var AttachmentType; - (function (AttachmentType) { - AttachmentType[AttachmentType["Region"] = 0] = "Region"; - AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; - AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; - AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; - AttachmentType[AttachmentType["Path"] = 4] = "Path"; - AttachmentType[AttachmentType["Point"] = 5] = "Point"; - AttachmentType[AttachmentType["Clipping"] = 6] = "Clipping"; - })(AttachmentType || (AttachmentType = {})); - function readTimeline1(input, timeline, scale) { - var time = input.readFloat(), value = input.readFloat() * scale; - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, value); - if (frame == frameLast) - break; - var time2 = input.readFloat(), value2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, value, value2, 1); - } - time = time2; - value = value2; - } - return timeline; - } - function readTimeline2(input, timeline, scale) { - var time = input.readFloat(), value1 = input.readFloat() * scale, value2 = input.readFloat() * scale; - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, value1, value2); - if (frame == frameLast) - break; - var time2 = input.readFloat(), nvalue1 = input.readFloat() * scale, nvalue2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, value1, nvalue1, scale); - setBezier(input, timeline, bezier++, frame, 1, time, time2, value2, nvalue2, scale); - } - time = time2; - value1 = nvalue1; - value2 = nvalue2; - } - return timeline; - } - function setBezier(input, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { - timeline.setBezier(bezier, frame, value, time1, value1, input.readFloat(), input.readFloat() * scale, input.readFloat(), input.readFloat() * scale, time2, value2); - } - var BONE_ROTATE = 0; - var BONE_TRANSLATE = 1; - var BONE_TRANSLATEX = 2; - var BONE_TRANSLATEY = 3; - var BONE_SCALE = 4; - var BONE_SCALEX = 5; - var BONE_SCALEY = 6; - var BONE_SHEAR = 7; - var BONE_SHEARX = 8; - var BONE_SHEARY = 9; - var SLOT_ATTACHMENT = 0; - var SLOT_RGBA = 1; - var SLOT_RGB = 2; - var SLOT_RGBA2 = 3; - var SLOT_RGB2 = 4; - var SLOT_ALPHA = 5; - var PATH_POSITION = 0; - var PATH_SPACING = 1; - var PATH_MIX = 2; - var CURVE_LINEAR = 0; - var CURVE_STEPPED = 1; - var CURVE_BEZIER = 2; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBounds = (function () { - function SkeletonBounds() { - this.minX = 0; - this.minY = 0; - this.maxX = 0; - this.maxY = 0; - this.boundingBoxes = new Array(); - this.polygons = new Array(); - this.polygonPool = new spine.Pool(function () { - return spine.Utils.newFloatArray(16); - }); - } - SkeletonBounds.prototype.update = function (skeleton, updateAabb) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - var boundingBoxes = this.boundingBoxes; - var polygons = this.polygons; - var polygonPool = this.polygonPool; - var slots = skeleton.slots; - var slotCount = slots.length; - boundingBoxes.length = 0; - polygonPool.freeAll(polygons); - polygons.length = 0; - for (var i = 0; i < slotCount; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.BoundingBoxAttachment) { - var boundingBox = attachment; - boundingBoxes.push(boundingBox); - var polygon = polygonPool.obtain(); - if (polygon.length != boundingBox.worldVerticesLength) { - polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); - } - polygons.push(polygon); - boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2); - } - } - if (updateAabb) { - this.aabbCompute(); - } - else { - this.minX = Number.POSITIVE_INFINITY; - this.minY = Number.POSITIVE_INFINITY; - this.maxX = Number.NEGATIVE_INFINITY; - this.maxY = Number.NEGATIVE_INFINITY; - } - }; - SkeletonBounds.prototype.aabbCompute = function () { - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - var vertices = polygon; - for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { - var x = vertices[ii]; - var y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - this.minX = minX; - this.minY = minY; - this.maxX = maxX; - this.maxY = maxY; - }; - SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { - return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; - }; - SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { - var minX = this.minX; - var minY = this.minY; - var maxX = this.maxX; - var maxY = this.maxY; - if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) - return false; - var m = (y2 - y1) / (x2 - x1); - var y = m * (minX - x1) + y1; - if (y > minY && y < maxY) - return true; - y = m * (maxX - x1) + y1; - if (y > minY && y < maxY) - return true; - var x = (minY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - x = (maxY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - return false; - }; - SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { - return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; - }; - SkeletonBounds.prototype.containsPoint = function (x, y) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.containsPointPolygon(polygons[i], x, y)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { - var vertices = polygon; - var nn = polygon.length; - var prevIndex = nn - 2; - var inside = false; - for (var ii = 0; ii < nn; ii += 2) { - var vertexY = vertices[ii + 1]; - var prevY = vertices[prevIndex + 1]; - if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { - var vertexX = vertices[ii]; - if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) - inside = !inside; - } - prevIndex = ii; - } - return inside; - }; - SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { - var vertices = polygon; - var nn = polygon.length; - var width12 = x1 - x2, height12 = y1 - y2; - var det1 = x1 * y2 - y1 * x2; - var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; - for (var ii = 0; ii < nn; ii += 2) { - var x4 = vertices[ii], y4 = vertices[ii + 1]; - var det2 = x3 * y4 - y3 * x4; - var width34 = x3 - x4, height34 = y3 - y4; - var det3 = width12 * height34 - height12 * width34; - var x = (det1 * width34 - width12 * det2) / det3; - if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { - var y = (det1 * height34 - height12 * det2) / det3; - if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) - return true; - } - x3 = x4; - y3 = y4; - } - return false; - }; - SkeletonBounds.prototype.getPolygon = function (boundingBox) { - if (!boundingBox) - throw new Error("boundingBox cannot be null."); - var index = this.boundingBoxes.indexOf(boundingBox); - return index == -1 ? null : this.polygons[index]; - }; - SkeletonBounds.prototype.getWidth = function () { - return this.maxX - this.minX; - }; - SkeletonBounds.prototype.getHeight = function () { - return this.maxY - this.minY; - }; - return SkeletonBounds; - }()); - spine.SkeletonBounds = SkeletonBounds; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonClipping = (function () { - function SkeletonClipping() { - this.triangulator = new spine.Triangulator(); - this.clippingPolygon = new Array(); - this.clipOutput = new Array(); - this.clippedVertices = new Array(); - this.clippedTriangles = new Array(); - this.scratch = new Array(); - } - SkeletonClipping.prototype.clipStart = function (slot, clip) { - if (this.clipAttachment) - return 0; - this.clipAttachment = clip; - var n = clip.worldVerticesLength; - var vertices = spine.Utils.setArraySize(this.clippingPolygon, n); - clip.computeWorldVertices(slot, 0, n, vertices, 0, 2); - var clippingPolygon = this.clippingPolygon; - SkeletonClipping.makeClockwise(clippingPolygon); - var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon)); - for (var i = 0, n_2 = clippingPolygons.length; i < n_2; i++) { - var polygon = clippingPolygons[i]; - SkeletonClipping.makeClockwise(polygon); - polygon.push(polygon[0]); - polygon.push(polygon[1]); - } - return clippingPolygons.length; - }; - SkeletonClipping.prototype.clipEndWithSlot = function (slot) { - if (this.clipAttachment && this.clipAttachment.endSlot == slot.data) - this.clipEnd(); - }; - SkeletonClipping.prototype.clipEnd = function () { - if (!this.clipAttachment) - return; - this.clipAttachment = null; - this.clippingPolygons = null; - this.clippedVertices.length = 0; - this.clippedTriangles.length = 0; - this.clippingPolygon.length = 0; - }; - SkeletonClipping.prototype.isClipping = function () { - return this.clipAttachment != null; - }; - SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) { - var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; - var clippedTriangles = this.clippedTriangles; - var polygons = this.clippingPolygons; - var polygonsCount = this.clippingPolygons.length; - var vertexSize = twoColor ? 12 : 8; - var index = 0; - clippedVertices.length = 0; - clippedTriangles.length = 0; - outer: for (var i = 0; i < trianglesLength; i += 3) { - var vertexOffset = triangles[i] << 1; - var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1]; - var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 1] << 1; - var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1]; - var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 2] << 1; - var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1]; - var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1]; - for (var p = 0; p < polygonsCount; p++) { - var s = clippedVertices.length; - if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) { - var clipOutputLength = clipOutput.length; - if (clipOutputLength == 0) - continue; - var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; - var d = 1 / (d0 * d2 + d1 * (y1 - y3)); - var clipOutputCount = clipOutputLength >> 1; - var clipOutputItems = this.clipOutput; - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize); - for (var ii = 0; ii < clipOutputLength; ii += 2) { - var x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; - clippedVerticesItems[s] = x; - clippedVerticesItems[s + 1] = y; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - var c0 = x - x3, c1 = y - y3; - var a = (d0 * c0 + d1 * c1) * d; - var b = (d4 * c0 + d2 * c1) * d; - var c = 1 - a - b; - clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c; - clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c; - if (twoColor) { - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - } - s += vertexSize; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); - clipOutputCount--; - for (var ii = 1; ii < clipOutputCount; ii++) { - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + ii); - clippedTrianglesItems[s + 2] = (index + ii + 1); - s += 3; - } - index += clipOutputCount + 1; - } - else { - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + 3 * vertexSize); - clippedVerticesItems[s] = x1; - clippedVerticesItems[s + 1] = y1; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - if (!twoColor) { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = x2; - clippedVerticesItems[s + 9] = y2; - clippedVerticesItems[s + 10] = light.r; - clippedVerticesItems[s + 11] = light.g; - clippedVerticesItems[s + 12] = light.b; - clippedVerticesItems[s + 13] = light.a; - clippedVerticesItems[s + 14] = u2; - clippedVerticesItems[s + 15] = v2; - clippedVerticesItems[s + 16] = x3; - clippedVerticesItems[s + 17] = y3; - clippedVerticesItems[s + 18] = light.r; - clippedVerticesItems[s + 19] = light.g; - clippedVerticesItems[s + 20] = light.b; - clippedVerticesItems[s + 21] = light.a; - clippedVerticesItems[s + 22] = u3; - clippedVerticesItems[s + 23] = v3; - } - else { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - clippedVerticesItems[s + 12] = x2; - clippedVerticesItems[s + 13] = y2; - clippedVerticesItems[s + 14] = light.r; - clippedVerticesItems[s + 15] = light.g; - clippedVerticesItems[s + 16] = light.b; - clippedVerticesItems[s + 17] = light.a; - clippedVerticesItems[s + 18] = u2; - clippedVerticesItems[s + 19] = v2; - clippedVerticesItems[s + 20] = dark.r; - clippedVerticesItems[s + 21] = dark.g; - clippedVerticesItems[s + 22] = dark.b; - clippedVerticesItems[s + 23] = dark.a; - clippedVerticesItems[s + 24] = x3; - clippedVerticesItems[s + 25] = y3; - clippedVerticesItems[s + 26] = light.r; - clippedVerticesItems[s + 27] = light.g; - clippedVerticesItems[s + 28] = light.b; - clippedVerticesItems[s + 29] = light.a; - clippedVerticesItems[s + 30] = u3; - clippedVerticesItems[s + 31] = v3; - clippedVerticesItems[s + 32] = dark.r; - clippedVerticesItems[s + 33] = dark.g; - clippedVerticesItems[s + 34] = dark.b; - clippedVerticesItems[s + 35] = dark.a; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3); - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + 1); - clippedTrianglesItems[s + 2] = (index + 2); - index += 3; - continue outer; - } - } - } - }; - SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) { - var originalOutput = output; - var clipped = false; - var input = null; - if (clippingArea.length % 4 >= 2) { - input = output; - output = this.scratch; - } - else - input = this.scratch; - input.length = 0; - input.push(x1); - input.push(y1); - input.push(x2); - input.push(y2); - input.push(x3); - input.push(y3); - input.push(x1); - input.push(y1); - output.length = 0; - var clippingVertices = clippingArea; - var clippingVerticesLast = clippingArea.length - 4; - for (var i = 0;; i += 2) { - var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; - var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; - var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; - var inputVertices = input; - var inputVerticesLength = input.length - 2, outputStart = output.length; - for (var ii = 0; ii < inputVerticesLength; ii += 2) { - var inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; - var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; - var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; - if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { - if (side2) { - output.push(inputX2); - output.push(inputY2); - continue; - } - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - } - else if (side2) { - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - output.push(inputX2); - output.push(inputY2); - } - clipped = true; - } - if (outputStart == output.length) { - originalOutput.length = 0; - return true; - } - output.push(output[0]); - output.push(output[1]); - if (i == clippingVerticesLast) - break; - var temp = output; - output = input; - output.length = 0; - input = temp; - } - if (originalOutput != output) { - originalOutput.length = 0; - for (var i = 0, n = output.length - 2; i < n; i++) - originalOutput[i] = output[i]; - } - else - originalOutput.length = originalOutput.length - 2; - return clipped; - }; - SkeletonClipping.makeClockwise = function (polygon) { - var vertices = polygon; - var verticeslength = polygon.length; - var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0; - for (var i = 0, n = verticeslength - 3; i < n; i += 2) { - p1x = vertices[i]; - p1y = vertices[i + 1]; - p2x = vertices[i + 2]; - p2y = vertices[i + 3]; - area += p1x * p2y - p2x * p1y; - } - if (area < 0) - return; - for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) { - var x = vertices[i], y = vertices[i + 1]; - var other = lastX - i; - vertices[i] = vertices[other]; - vertices[i + 1] = vertices[other + 1]; - vertices[other] = x; - vertices[other + 1] = y; - } - }; - return SkeletonClipping; - }()); - spine.SkeletonClipping = SkeletonClipping; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonData = (function () { - function SkeletonData() { - this.bones = new Array(); - this.slots = new Array(); - this.skins = new Array(); - this.events = new Array(); - this.animations = new Array(); - this.ikConstraints = new Array(); - this.transformConstraints = new Array(); - this.pathConstraints = new Array(); - this.fps = 0; - } - SkeletonData.prototype.findBone = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.name == boneName) - return bone; - } - return null; - }; - SkeletonData.prototype.findBoneIndex = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].name == boneName) - return i; - return -1; - }; - SkeletonData.prototype.findSlot = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.name == slotName) - return slot; - } - return null; - }; - SkeletonData.prototype.findSlotIndex = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].name == slotName) - return i; - return -1; - }; - SkeletonData.prototype.findSkin = function (skinName) { - if (!skinName) - throw new Error("skinName cannot be null."); - var skins = this.skins; - for (var i = 0, n = skins.length; i < n; i++) { - var skin = skins[i]; - if (skin.name == skinName) - return skin; - } - return null; - }; - SkeletonData.prototype.findEvent = function (eventDataName) { - if (!eventDataName) - throw new Error("eventDataName cannot be null."); - var events = this.events; - for (var i = 0, n = events.length; i < n; i++) { - var event_5 = events[i]; - if (event_5.name == eventDataName) - return event_5; - } - return null; - }; - SkeletonData.prototype.findAnimation = function (animationName) { - if (!animationName) - throw new Error("animationName cannot be null."); - var animations = this.animations; - for (var i = 0, n = animations.length; i < n; i++) { - var animation = animations[i]; - if (animation.name == animationName) - return animation; - } - return null; - }; - SkeletonData.prototype.findIkConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findTransformConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findPathConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - return SkeletonData; - }()); - spine.SkeletonData = SkeletonData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonJson = (function () { - function SkeletonJson(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonJson.prototype.readSkeletonData = function (json) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - var root = typeof (json) === "string" ? JSON.parse(json) : json; - var skeletonMap = root.skeleton; - if (skeletonMap) { - skeletonData.hash = skeletonMap.hash; - skeletonData.version = skeletonMap.spine; - skeletonData.x = skeletonMap.x; - skeletonData.y = skeletonMap.y; - skeletonData.width = skeletonMap.width; - skeletonData.height = skeletonMap.height; - skeletonData.fps = skeletonMap.fps; - skeletonData.imagesPath = skeletonMap.images; - } - if (root.bones) { - for (var i = 0; i < root.bones.length; i++) { - var boneMap = root.bones[i]; - var parent_5 = null; - var parentName = getValue(boneMap, "parent", null); - if (parentName) - parent_5 = skeletonData.findBone(parentName); - var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_5); - data.length = getValue(boneMap, "length", 0) * scale; - data.x = getValue(boneMap, "x", 0) * scale; - data.y = getValue(boneMap, "y", 0) * scale; - data.rotation = getValue(boneMap, "rotation", 0); - data.scaleX = getValue(boneMap, "scaleX", 1); - data.scaleY = getValue(boneMap, "scaleY", 1); - data.shearX = getValue(boneMap, "shearX", 0); - data.shearY = getValue(boneMap, "shearY", 0); - data.transformMode = spine.Utils.enumValue(spine.TransformMode, getValue(boneMap, "transform", "Normal")); - data.skinRequired = getValue(boneMap, "skin", false); - var color = getValue(boneMap, "color", null); - if (color) - data.color.setFromString(color); - skeletonData.bones.push(data); - } - } - if (root.slots) { - for (var i = 0; i < root.slots.length; i++) { - var slotMap = root.slots[i]; - var boneData = skeletonData.findBone(slotMap.bone); - var data = new spine.SlotData(skeletonData.slots.length, slotMap.name, boneData); - var color = getValue(slotMap, "color", null); - if (color) - data.color.setFromString(color); - var dark = getValue(slotMap, "dark", null); - if (dark) - data.darkColor = spine.Color.fromString(dark); - data.attachmentName = getValue(slotMap, "attachment", null); - data.blendMode = spine.Utils.enumValue(spine.BlendMode, getValue(slotMap, "blend", "normal")); - skeletonData.slots.push(data); - } - } - if (root.ik) { - for (var i = 0; i < root.ik.length; i++) { - var constraintMap = root.ik[i]; - var data = new spine.IkConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - data.target = skeletonData.findBone(constraintMap.target); - data.mix = getValue(constraintMap, "mix", 1); - data.softness = getValue(constraintMap, "softness", 0) * scale; - data.bendDirection = getValue(constraintMap, "bendPositive", true) ? 1 : -1; - data.compress = getValue(constraintMap, "compress", false); - data.stretch = getValue(constraintMap, "stretch", false); - data.uniform = getValue(constraintMap, "uniform", false); - skeletonData.ikConstraints.push(data); - } - } - if (root.transform) { - for (var i = 0; i < root.transform.length; i++) { - var constraintMap = root.transform[i]; - var data = new spine.TransformConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - var targetName = constraintMap.target; - data.target = skeletonData.findBone(targetName); - data.local = getValue(constraintMap, "local", false); - data.relative = getValue(constraintMap, "relative", false); - data.offsetRotation = getValue(constraintMap, "rotation", 0); - data.offsetX = getValue(constraintMap, "x", 0) * scale; - data.offsetY = getValue(constraintMap, "y", 0) * scale; - data.offsetScaleX = getValue(constraintMap, "scaleX", 0); - data.offsetScaleY = getValue(constraintMap, "scaleY", 0); - data.offsetShearY = getValue(constraintMap, "shearY", 0); - data.mixRotate = getValue(constraintMap, "mixRotate", 1); - data.mixX = getValue(constraintMap, "mixX", 1); - data.mixY = getValue(constraintMap, "mixY", data.mixX); - data.mixScaleX = getValue(constraintMap, "mixScaleX", 1); - data.mixScaleY = getValue(constraintMap, "mixScaleY", data.mixScaleX); - data.mixShearY = getValue(constraintMap, "mixShearY", 1); - skeletonData.transformConstraints.push(data); - } - } - if (root.path) { - for (var i = 0; i < root.path.length; i++) { - var constraintMap = root.path[i]; - var data = new spine.PathConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - var targetName = constraintMap.target; - data.target = skeletonData.findSlot(targetName); - data.positionMode = spine.Utils.enumValue(spine.PositionMode, getValue(constraintMap, "positionMode", "Percent")); - data.spacingMode = spine.Utils.enumValue(spine.SpacingMode, getValue(constraintMap, "spacingMode", "Length")); - data.rotateMode = spine.Utils.enumValue(spine.RotateMode, getValue(constraintMap, "rotateMode", "Tangent")); - data.offsetRotation = getValue(constraintMap, "rotation", 0); - data.position = getValue(constraintMap, "position", 0); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = getValue(constraintMap, "spacing", 0); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.mixRotate = getValue(constraintMap, "mixRotate", 1); - data.mixX = getValue(constraintMap, "mixX", 1); - data.mixY = getValue(constraintMap, "mixY", data.mixX); - skeletonData.pathConstraints.push(data); - } - } - if (root.skins) { - for (var i = 0; i < root.skins.length; i++) { - var skinMap = root.skins[i]; - var skin = new spine.Skin(skinMap.name); - if (skinMap.bones) { - for (var ii = 0; ii < skinMap.bones.length; ii++) - skin.bones.push(skeletonData.findBone(skinMap.bones[ii])); - } - if (skinMap.ik) { - for (var ii = 0; ii < skinMap.ik.length; ii++) - skin.constraints.push(skeletonData.findIkConstraint(skinMap.ik[ii])); - } - if (skinMap.transform) { - for (var ii = 0; ii < skinMap.transform.length; ii++) - skin.constraints.push(skeletonData.findTransformConstraint(skinMap.transform[ii])); - } - if (skinMap.path) { - for (var ii = 0; ii < skinMap.path.length; ii++) - skin.constraints.push(skeletonData.findPathConstraint(skinMap.path[ii])); - } - for (var slotName in skinMap.attachments) { - var slot = skeletonData.findSlot(slotName); - var slotMap = skinMap.attachments[slotName]; - for (var entryName in slotMap) { - var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData); - if (attachment) - skin.setAttachment(slot.index, entryName, attachment); - } - } - skeletonData.skins.push(skin); - if (skin.name == "default") - skeletonData.defaultSkin = skin; - } - } - for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - var parent_6 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_6 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_6); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - if (root.events) { - for (var eventName in root.events) { - var eventMap = root.events[eventName]; - var data = new spine.EventData(eventName); - data.intValue = getValue(eventMap, "int", 0); - data.floatValue = getValue(eventMap, "float", 0); - data.stringValue = getValue(eventMap, "string", ""); - data.audioPath = getValue(eventMap, "audio", null); - if (data.audioPath) { - data.volume = getValue(eventMap, "volume", 1); - data.balance = getValue(eventMap, "balance", 0); - } - skeletonData.events.push(data); - } - } - if (root.animations) { - for (var animationName in root.animations) { - var animationMap = root.animations[animationName]; - this.readAnimation(animationMap, animationName, skeletonData); - } - } - return skeletonData; - }; - SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) { - var scale = this.scale; - name = getValue(map, "name", name); - switch (getValue(map, "type", "region")) { - case "region": { - var path = getValue(map, "path", name); - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (!region) - return null; - region.path = path; - region.x = getValue(map, "x", 0) * scale; - region.y = getValue(map, "y", 0) * scale; - region.scaleX = getValue(map, "scaleX", 1); - region.scaleY = getValue(map, "scaleY", 1); - region.rotation = getValue(map, "rotation", 0); - region.width = map.width * scale; - region.height = map.height * scale; - var color = getValue(map, "color", null); - if (color) - region.color.setFromString(color); - region.updateOffset(); - return region; - } - case "boundingbox": { - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (!box) - return null; - this.readVertices(map, box, map.vertexCount << 1); - var color = getValue(map, "color", null); - if (color) - box.color.setFromString(color); - return box; - } - case "mesh": - case "linkedmesh": { - var path = getValue(map, "path", name); - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - var color = getValue(map, "color", null); - if (color) - mesh.color.setFromString(color); - mesh.width = getValue(map, "width", 0) * scale; - mesh.height = getValue(map, "height", 0) * scale; - var parent_7 = getValue(map, "parent", null); - if (parent_7) { - this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, "skin", null), slotIndex, parent_7, getValue(map, "deform", true))); - return mesh; - } - var uvs = map.uvs; - this.readVertices(map, mesh, uvs.length); - mesh.triangles = map.triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.edges = getValue(map, "edges", null); - mesh.hullLength = getValue(map, "hull", 0) * 2; - return mesh; - } - case "path": { - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (!path) - return null; - path.closed = getValue(map, "closed", false); - path.constantSpeed = getValue(map, "constantSpeed", true); - var vertexCount = map.vertexCount; - this.readVertices(map, path, vertexCount << 1); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0; i < map.lengths.length; i++) - lengths[i] = map.lengths[i] * scale; - path.lengths = lengths; - var color = getValue(map, "color", null); - if (color) - path.color.setFromString(color); - return path; - } - case "point": { - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (!point) - return null; - point.x = getValue(map, "x", 0) * scale; - point.y = getValue(map, "y", 0) * scale; - point.rotation = getValue(map, "rotation", 0); - var color = getValue(map, "color", null); - if (color) - point.color.setFromString(color); - return point; - } - case "clipping": { - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (!clip) - return null; - var end = getValue(map, "end", null); - if (end) - clip.endSlot = skeletonData.findSlot(end); - var vertexCount = map.vertexCount; - this.readVertices(map, clip, vertexCount << 1); - var color = getValue(map, "color", null); - if (color) - clip.color.setFromString(color); - return clip; - } - } - return null; - }; - SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { - var scale = this.scale; - attachment.worldVerticesLength = verticesLength; - var vertices = map.vertices; - if (verticesLength == vertices.length) { - var scaledVertices = spine.Utils.toFloatArray(vertices); - if (scale != 1) { - for (var i = 0, n = vertices.length; i < n; i++) - scaledVertices[i] *= scale; - } - attachment.vertices = scaledVertices; - return; - } - var weights = new Array(); - var bones = new Array(); - for (var i = 0, n = vertices.length; i < n;) { - var boneCount = vertices[i++]; - bones.push(boneCount); - for (var nn = i + boneCount * 4; i < nn; i += 4) { - bones.push(vertices[i]); - weights.push(vertices[i + 1] * scale); - weights.push(vertices[i + 2] * scale); - weights.push(vertices[i + 3]); - } - } - attachment.bones = bones; - attachment.vertices = spine.Utils.toFloatArray(weights); - }; - SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { - var scale = this.scale; - var timelines = new Array(); - if (map.slots) { - for (var slotName in map.slots) { - var slotMap = map.slots[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - if (!timelineMap) - continue; - if (timelineName == "attachment") { - var timeline = new spine.AttachmentTimeline(timelineMap.length, slotIndex); - for (var frame = 0; frame < timelineMap.length; frame++) { - var keyMap = timelineMap[frame]; - timeline.setFrame(frame, getValue(keyMap, "time", 0), keyMap.name); - } - timelines.push(timeline); - } - else if (timelineName == "rgba") { - var timeline = new spine.RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.color); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color.a); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.color); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); - } - time = time2; - color = newColor; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "rgb") { - var timeline = new spine.RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.color); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.color); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - } - time = time2; - color = newColor; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "alpha") { - timelines.push(readTimeline1(timelineMap, new spine.AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1)); - } - else if (timelineName == "rgba2") { - var timeline = new spine.RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.light); - var color2 = spine.Color.fromString(keyMap.dark); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color.a, color2.r, color2.g, color2.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.light); - var newColor2 = spine.Color.fromString(nextMap.dark); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.r, newColor2.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.g, newColor2.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 6, time, time2, color2.b, newColor2.b, 1); - } - time = time2; - color = newColor; - color2 = newColor2; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "rgb2") { - var timeline = new spine.RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.light); - var color2 = spine.Color.fromString(keyMap.dark); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.light); - var newColor2 = spine.Color.fromString(nextMap.dark); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1); - } - time = time2; - color = newColor; - color2 = newColor2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.bones) { - for (var boneName in map.bones) { - var boneMap = map.bones[boneName]; - var boneIndex = skeletonData.findBoneIndex(boneName); - for (var timelineName in boneMap) { - var timelineMap = boneMap[timelineName]; - if (timelineMap.length == 0) - continue; - if (timelineName === "rotate") { - timelines.push(readTimeline1(timelineMap, new spine.RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1)); - } - else if (timelineName === "translate") { - var timeline = new spine.TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, scale)); - } - else if (timelineName === "translatex") { - var timeline = new spine.TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); - } - else if (timelineName === "translatey") { - var timeline = new spine.TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); - } - else if (timelineName === "scale") { - var timeline = new spine.ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 1, 1)); - } - else if (timelineName === "scalex") { - var timeline = new spine.ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); - } - else if (timelineName === "scaley") { - var timeline = new spine.ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); - } - else if (timelineName === "shear") { - var timeline = new spine.ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, 1)); - } - else if (timelineName === "shearx") { - var timeline = new spine.ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); - } - else if (timelineName === "sheary") { - var timeline = new spine.ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); - } - } - } - } - if (map.ik) { - for (var constraintName in map.ik) { - var constraintMap = map.ik[constraintName]; - var keyMap = constraintMap[0]; - if (!keyMap) - continue; - var constraint = skeletonData.findIkConstraint(constraintName); - var constraintIndex = skeletonData.ikConstraints.indexOf(constraint); - var timeline = new spine.IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mix = getValue(keyMap, "mix", 1); - var softness = getValue(keyMap, "softness", 0) * scale; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mix, softness, getValue(keyMap, "bendPositive", true) ? 1 : -1, getValue(keyMap, "compress", false), getValue(keyMap, "stretch", false)); - var nextMap = constraintMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mix2 = getValue(nextMap, "mix", 1); - var softness2 = getValue(nextMap, "softness", 0) * scale; - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale); - } - time = time2; - mix = mix2; - softness = softness2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - if (map.transform) { - for (var constraintName in map.transform) { - var timelineMap = map.transform[constraintName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - var constraint = skeletonData.findTransformConstraint(constraintName); - var constraintIndex = skeletonData.transformConstraints.indexOf(constraint); - var timeline = new spine.TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mixRotate = getValue(keyMap, "mixRotate", 1); - var mixX = getValue(keyMap, "mixX", 1); - var mixY = getValue(keyMap, "mixY", mixX); - var mixScaleX = getValue(keyMap, "mixScaleX", 1); - var mixScaleY = getValue(keyMap, "mixScaleY", mixScaleX); - var mixShearY = getValue(keyMap, "mixShearY", 1); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mixRotate2 = getValue(nextMap, "mixRotate", 1); - var mixX2 = getValue(nextMap, "mixX", 1); - var mixY2 = getValue(nextMap, "mixY", mixX2); - var mixScaleX2 = getValue(nextMap, "mixScaleX", 1); - var mixScaleY2 = getValue(nextMap, "mixScaleY", mixScaleX2); - var mixShearY2 = getValue(nextMap, "mixShearY", 1); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - mixScaleX = mixScaleX2; - mixScaleY = mixScaleY2; - mixScaleX = mixScaleX2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - if (map.path) { - for (var constraintName in map.path) { - var constraintMap = map.path[constraintName]; - var constraint = skeletonData.findPathConstraint(constraintName); - var constraintIndex = skeletonData.pathConstraints.indexOf(constraint); - for (var timelineName in constraintMap) { - var timelineMap = constraintMap[timelineName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - if (timelineName === "position") { - var timeline = new spine.PathConstraintPositionTimeline(timelineMap.length, timelineMap.length, constraintIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.positionMode == spine.PositionMode.Fixed ? scale : 1)); - } - else if (timelineName === "spacing") { - var timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, constraintIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.spacingMode == spine.SpacingMode.Length || constraint.spacingMode == spine.SpacingMode.Fixed ? scale : 1)); - } - else if (timelineName === "mix") { - var timeline = new spine.PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mixRotate = getValue(keyMap, "mixRotate", 1); - var mixX = getValue(keyMap, "mixX", 1); - var mixY = getValue(keyMap, "mixY", mixX); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mixRotate2 = getValue(nextMap, "mixRotate", 1); - var mixX2 = getValue(nextMap, "mixX", 1); - var mixY2 = getValue(nextMap, "mixY", mixX2); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.deform) { - for (var deformName in map.deform) { - var deformMap = map.deform[deformName]; - var skin = skeletonData.findSkin(deformName); - for (var slotName in deformMap) { - var slotMap = deformMap[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - var attachment = skin.getAttachment(slotIndex, timelineName); - var weighted = attachment.bones; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var timeline = new spine.DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment); - var time = getValue(keyMap, "time", 0); - for (var frame = 0, bezier = 0;; frame++) { - var deform = void 0; - var verticesValue = getValue(keyMap, "vertices", null); - if (!verticesValue) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = getValue(keyMap, "offset", 0); - spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); - if (scale != 1) { - for (var i = start, n = i + verticesValue.length; i < n; i++) - deform[i] *= scale; - } - if (!weighted) { - for (var i = 0; i < deformLength; i++) - deform[i] += vertices[i]; - } - } - timeline.setFrame(frame, time, deform); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var curve = keyMap.curve; - if (curve) - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1); - time = time2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.drawOrder) { - var timeline = new spine.DrawOrderTimeline(map.drawOrder.length); - var slotCount = skeletonData.slots.length; - var frame = 0; - for (var i = 0; i < map.drawOrder.length; i++, frame++) { - var drawOrderMap = map.drawOrder[i]; - var drawOrder = null; - var offsets = getValue(drawOrderMap, "offsets", null); - if (offsets) { - drawOrder = spine.Utils.newArray(slotCount, -1); - var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var ii = 0; ii < offsets.length; ii++) { - var offsetMap = offsets[ii]; - var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + offsetMap.offset] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var ii = slotCount - 1; ii >= 0; ii--) - if (drawOrder[ii] == -1) - drawOrder[ii] = unchanged[--unchangedIndex]; - } - timeline.setFrame(frame, getValue(drawOrderMap, "time", 0), drawOrder); - } - timelines.push(timeline); - } - if (map.events) { - var timeline = new spine.EventTimeline(map.events.length); - var frame = 0; - for (var i = 0; i < map.events.length; i++, frame++) { - var eventMap = map.events[i]; - var eventData = skeletonData.findEvent(eventMap.name); - var event_6 = new spine.Event(spine.Utils.toSinglePrecision(getValue(eventMap, "time", 0)), eventData); - event_6.intValue = getValue(eventMap, "int", eventData.intValue); - event_6.floatValue = getValue(eventMap, "float", eventData.floatValue); - event_6.stringValue = getValue(eventMap, "string", eventData.stringValue); - if (event_6.data.audioPath) { - event_6.volume = getValue(eventMap, "volume", 1); - event_6.balance = getValue(eventMap, "balance", 0); - } - timeline.setFrame(frame, event_6); - } - timelines.push(timeline); - } - var duration = 0; - for (var i = 0, n = timelines.length; i < n; i++) - duration = Math.max(duration, timelines[i].getDuration()); - skeletonData.animations.push(new spine.Animation(name, timelines, duration)); - }; - return SkeletonJson; - }()); - spine.SkeletonJson = SkeletonJson; - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); - function readTimeline1(keys, timeline, defaultValue, scale) { - var keyMap = keys[0]; - var time = getValue(keyMap, "time", 0); - var value = getValue(keyMap, "value", defaultValue) * scale; - var bezier = 0; - for (var frame = 0;; frame++) { - timeline.setFrame(frame, time, value); - var nextMap = keys[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - return timeline; - } - var time2 = getValue(nextMap, "time", 0); - var value2 = getValue(nextMap, "value", defaultValue) * scale; - if (keyMap.curve) - bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale); - time = time2; - value = value2; - keyMap = nextMap; - } - } - function readTimeline2(keys, timeline, name1, name2, defaultValue, scale) { - var keyMap = keys[0]; - var time = getValue(keyMap, "time", 0); - var value1 = getValue(keyMap, name1, defaultValue) * scale; - var value2 = getValue(keyMap, name2, defaultValue) * scale; - var bezier = 0; - for (var frame = 0;; frame++) { - timeline.setFrame(frame, time, value1, value2); - var nextMap = keys[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - return timeline; - } - var time2 = getValue(nextMap, "time", 0); - var nvalue1 = getValue(nextMap, name1, defaultValue) * scale; - var nvalue2 = getValue(nextMap, name2, defaultValue) * scale; - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale); - } - time = time2; - value1 = nvalue1; - value2 = nvalue2; - keyMap = nextMap; - } - } - function readCurve(curve, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { - if (curve == "stepped") { - timeline.setStepped(frame); - return bezier; - } - var i = value << 2; - var cx1 = curve[i]; - var cy1 = curve[i + 1] * scale; - var cx2 = curve[i + 2]; - var cy2 = curve[i + 3] * scale; - timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2); - return bezier + 1; - } - function getValue(map, property, defaultValue) { - return map[property] !== undefined ? map[property] : defaultValue; - } -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkinEntry = (function () { - function SkinEntry(slotIndex, name, attachment) { - this.slotIndex = slotIndex; - this.name = name; - this.attachment = attachment; - } - return SkinEntry; - }()); - spine.SkinEntry = SkinEntry; - var Skin = (function () { - function Skin(name) { - this.attachments = new Array(); - this.bones = Array(); - this.constraints = new Array(); - if (!name) - throw new Error("name cannot be null."); - this.name = name; - } - Skin.prototype.setAttachment = function (slotIndex, name, attachment) { - if (!attachment) - throw new Error("attachment cannot be null."); - var attachments = this.attachments; - if (slotIndex >= attachments.length) - attachments.length = slotIndex + 1; - if (!attachments[slotIndex]) - attachments[slotIndex] = {}; - attachments[slotIndex][name] = attachment; - }; - Skin.prototype.addSkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var ii = 0; ii < this.bones.length; ii++) { - if (this.bones[ii] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var ii = 0; ii < this.constraints.length; ii++) { - if (this.constraints[ii] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - }; - Skin.prototype.copySkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var ii = 0; ii < this.bones.length; ii++) { - if (this.bones[ii] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var ii = 0; ii < this.constraints.length; ii++) { - if (this.constraints[ii] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - if (!attachment.attachment) - continue; - if (attachment.attachment instanceof spine.MeshAttachment) { - attachment.attachment = attachment.attachment.newLinkedMesh(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - else { - attachment.attachment = attachment.attachment.copy(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - } - }; - Skin.prototype.getAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - return dictionary ? dictionary[name] : null; - }; - Skin.prototype.removeAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - if (dictionary) - dictionary[name] = null; - }; - Skin.prototype.getAttachments = function () { - var entries = new Array(); - for (var i = 0; i < this.attachments.length; i++) { - var slotAttachments = this.attachments[i]; - if (slotAttachments) { - for (var name_4 in slotAttachments) { - var attachment = slotAttachments[name_4]; - if (attachment) - entries.push(new SkinEntry(i, name_4, attachment)); - } - } - } - return entries; - }; - Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) { - var slotAttachments = this.attachments[slotIndex]; - if (slotAttachments) { - for (var name_5 in slotAttachments) { - var attachment = slotAttachments[name_5]; - if (attachment) - attachments.push(new SkinEntry(slotIndex, name_5, attachment)); - } - } - }; - Skin.prototype.clear = function () { - this.attachments.length = 0; - this.bones.length = 0; - this.constraints.length = 0; - }; - Skin.prototype.attachAll = function (skeleton, oldSkin) { - var slotIndex = 0; - for (var i = 0; i < skeleton.slots.length; i++) { - var slot = skeleton.slots[i]; - var slotAttachment = slot.getAttachment(); - if (slotAttachment && slotIndex < oldSkin.attachments.length) { - var dictionary = oldSkin.attachments[slotIndex]; - for (var key in dictionary) { - var skinAttachment = dictionary[key]; - if (slotAttachment == skinAttachment) { - var attachment = this.getAttachment(slotIndex, key); - if (attachment) - slot.setAttachment(attachment); - break; - } - } - } - slotIndex++; - } - }; - return Skin; - }()); - spine.Skin = Skin; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Slot = (function () { - function Slot(data, bone) { - this.deform = new Array(); - if (!data) - throw new Error("data cannot be null."); - if (!bone) - throw new Error("bone cannot be null."); - this.data = data; - this.bone = bone; - this.color = new spine.Color(); - this.darkColor = !data.darkColor ? null : new spine.Color(); - this.setToSetupPose(); - } - Slot.prototype.getSkeleton = function () { - return this.bone.skeleton; - }; - Slot.prototype.getAttachment = function () { - return this.attachment; - }; - Slot.prototype.setAttachment = function (attachment) { - if (this.attachment == attachment) - return; - if (!(attachment instanceof spine.VertexAttachment) || !(this.attachment instanceof spine.VertexAttachment) - || attachment.deformAttachment != this.attachment.deformAttachment) { - this.deform.length = 0; - } - this.attachment = attachment; - this.attachmentTime = this.bone.skeleton.time; - }; - Slot.prototype.setAttachmentTime = function (time) { - this.attachmentTime = this.bone.skeleton.time - time; - }; - Slot.prototype.getAttachmentTime = function () { - return this.bone.skeleton.time - this.attachmentTime; - }; - Slot.prototype.setToSetupPose = function () { - this.color.setFromColor(this.data.color); - if (this.darkColor) - this.darkColor.setFromColor(this.data.darkColor); - if (!this.data.attachmentName) - this.attachment = null; - else { - this.attachment = null; - this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); - } - }; - return Slot; - }()); - spine.Slot = Slot; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SlotData = (function () { - function SlotData(index, name, boneData) { - this.color = new spine.Color(1, 1, 1, 1); - if (index < 0) - throw new Error("index must be >= 0."); - if (!name) - throw new Error("name cannot be null."); - if (!boneData) - throw new Error("boneData cannot be null."); - this.index = index; - this.name = name; - this.boneData = boneData; - } - return SlotData; - }()); - spine.SlotData = SlotData; - var BlendMode; - (function (BlendMode) { - BlendMode[BlendMode["Normal"] = 0] = "Normal"; - BlendMode[BlendMode["Additive"] = 1] = "Additive"; - BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; - BlendMode[BlendMode["Screen"] = 3] = "Screen"; - })(BlendMode = spine.BlendMode || (spine.BlendMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Texture = (function () { - function Texture(image) { - this._image = image; - } - Texture.prototype.getImage = function () { - return this._image; - }; - return Texture; - }()); - spine.Texture = Texture; - var TextureFilter; - (function (TextureFilter) { - TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; - TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; - TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; - TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; - TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; - TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; - TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; - })(TextureFilter = spine.TextureFilter || (spine.TextureFilter = {})); - var TextureWrap; - (function (TextureWrap) { - TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; - TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; - TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; - })(TextureWrap = spine.TextureWrap || (spine.TextureWrap = {})); - var TextureRegion = (function () { - function TextureRegion() { - this.u = 0; - this.v = 0; - this.u2 = 0; - this.v2 = 0; - this.width = 0; - this.height = 0; - this.degrees = 0; - this.offsetX = 0; - this.offsetY = 0; - this.originalWidth = 0; - this.originalHeight = 0; - } - return TextureRegion; - }()); - spine.TextureRegion = TextureRegion; - var FakeTexture = (function (_super) { - __extends(FakeTexture, _super); - function FakeTexture() { - return _super !== null && _super.apply(this, arguments) || this; - } - FakeTexture.prototype.setFilters = function (minFilter, magFilter) { }; - FakeTexture.prototype.setWraps = function (uWrap, vWrap) { }; - FakeTexture.prototype.dispose = function () { }; - return FakeTexture; - }(Texture)); - spine.FakeTexture = FakeTexture; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TextureAtlas = (function () { - function TextureAtlas(atlasText) { - this.pages = new Array(); - this.regions = new Array(); - var reader = new TextureAtlasReader(atlasText); - var entry = new Array(4); - var page = null; - var region = null; - var pageFields = {}; - pageFields["size"] = function () { - page.width = parseInt(entry[1]); - page.height = parseInt(entry[2]); - }; - pageFields["format"] = function () { - }; - pageFields["filter"] = function () { - page.minFilter = spine.Utils.enumValue(spine.TextureFilter, entry[1]); - page.magFilter = spine.Utils.enumValue(spine.TextureFilter, entry[2]); - }; - pageFields["repeat"] = function () { - if (entry[1].indexOf('x') != -1) - page.uWrap = spine.TextureWrap.Repeat; - if (entry[1].indexOf('y') != -1) - page.vWrap = spine.TextureWrap.Repeat; - }; - pageFields["pma"] = function () { - page.pma = entry[1] == "true"; - }; - var regionFields = {}; - regionFields["xy"] = function () { - region.x = parseInt(entry[1]); - region.y = parseInt(entry[2]); - }; - regionFields["size"] = function () { - region.width = parseInt(entry[1]); - region.height = parseInt(entry[2]); - }; - regionFields["bounds"] = function () { - region.x = parseInt(entry[1]); - region.y = parseInt(entry[2]); - region.width = parseInt(entry[3]); - region.height = parseInt(entry[4]); - }; - regionFields["offset"] = function () { - region.offsetX = parseInt(entry[1]); - region.offsetY = parseInt(entry[2]); - }; - regionFields["orig"] = function () { - region.originalWidth = parseInt(entry[1]); - region.originalHeight = parseInt(entry[2]); - }; - regionFields["offsets"] = function () { - region.offsetX = parseInt(entry[1]); - region.offsetY = parseInt(entry[2]); - region.originalWidth = parseInt(entry[3]); - region.originalHeight = parseInt(entry[4]); - }; - regionFields["rotate"] = function () { - var value = entry[1]; - if (value == "true") - region.degrees = 90; - else if (value != "false") - region.degrees = parseInt(value); - }; - regionFields["index"] = function () { - region.index = parseInt(entry[1]); - }; - var line = reader.readLine(); - while (line && line.trim().length == 0) - line = reader.readLine(); - while (true) { - if (!line || line.trim().length == 0) - break; - if (reader.readEntry(entry, line) == 0) - break; - line = reader.readLine(); - } - var names = null; - var values = null; - while (true) { - if (line === null) - break; - if (line.trim().length == 0) { - page = null; - line = reader.readLine(); - } - else if (!page) { - page = new TextureAtlasPage(); - page.name = line.trim(); - while (true) { - if (reader.readEntry(entry, line = reader.readLine()) == 0) - break; - var field = pageFields[entry[0]]; - if (field) - field(); - } - this.pages.push(page); - } - else { - region = new TextureAtlasRegion(); - region.page = page; - region.name = line; - while (true) { - var count = reader.readEntry(entry, line = reader.readLine()); - if (count == 0) - break; - var field = regionFields[entry[0]]; - if (field) - field(); - else { - if (!names) { - names = []; - values = []; - } - names.push(entry[0]); - var entryValues = []; - for (var i = 0; i < count; i++) - entryValues.push(parseInt(entry[i + 1])); - values.push(entryValues); - } - } - if (region.originalWidth == 0 && region.originalHeight == 0) { - region.originalWidth = region.width; - region.originalHeight = region.height; - } - if (names && names.length > 0) { - region.names = names; - region.values = values; - names = null; - values = null; - } - region.u = region.x / page.width; - region.v = region.y / page.height; - if (region.degrees == 90) { - region.u2 = (region.x + region.height) / page.width; - region.v2 = (region.y + region.width) / page.height; - } - else { - region.u2 = (region.x + region.width) / page.width; - region.v2 = (region.y + region.height) / page.height; - } - this.regions.push(region); - } - } - } - TextureAtlas.prototype.findRegion = function (name) { - for (var i = 0; i < this.regions.length; i++) { - if (this.regions[i].name == name) { - return this.regions[i]; - } - } - return null; - }; - TextureAtlas.prototype.setTextures = function (assetManager, pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - for (var _i = 0, _a = this.pages; _i < _a.length; _i++) { - var page = _a[_i]; - page.setTexture(assetManager.get(pathPrefix + page.name)); - } - }; - TextureAtlas.prototype.dispose = function () { - for (var i = 0; i < this.pages.length; i++) { - this.pages[i].texture.dispose(); - } - }; - return TextureAtlas; - }()); - spine.TextureAtlas = TextureAtlas; - var TextureAtlasReader = (function () { - function TextureAtlasReader(text) { - this.index = 0; - this.lines = text.split(/\r\n|\r|\n/); - } - TextureAtlasReader.prototype.readLine = function () { - if (this.index >= this.lines.length) - return null; - return this.lines[this.index++]; - }; - TextureAtlasReader.prototype.readEntry = function (entry, line) { - if (!line) - return 0; - line = line.trim(); - if (line.length == 0) - return 0; - var colon = line.indexOf(':'); - if (colon == -1) - return 0; - entry[0] = line.substr(0, colon).trim(); - for (var i = 1, lastMatch = colon + 1;; i++) { - var comma = line.indexOf(',', lastMatch); - if (comma == -1) { - entry[i] = line.substr(lastMatch).trim(); - return i; - } - entry[i] = line.substr(lastMatch, comma - lastMatch).trim(); - lastMatch = comma + 1; - if (i == 4) - return 4; - } - }; - return TextureAtlasReader; - }()); - var TextureAtlasPage = (function () { - function TextureAtlasPage() { - this.minFilter = spine.TextureFilter.Nearest; - this.magFilter = spine.TextureFilter.Nearest; - this.uWrap = spine.TextureWrap.ClampToEdge; - this.vWrap = spine.TextureWrap.ClampToEdge; - } - TextureAtlasPage.prototype.setTexture = function (texture) { - this.texture = texture; - texture.setFilters(this.minFilter, this.magFilter); - texture.setWraps(this.uWrap, this.vWrap); - }; - return TextureAtlasPage; - }()); - spine.TextureAtlasPage = TextureAtlasPage; - var TextureAtlasRegion = (function (_super) { - __extends(TextureAtlasRegion, _super); - function TextureAtlasRegion() { - return _super !== null && _super.apply(this, arguments) || this; - } - return TextureAtlasRegion; - }(spine.TextureRegion)); - spine.TextureAtlasRegion = TextureAtlasRegion; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraint = (function () { - function TransformConstraint(data, skeleton) { - this.mixRotate = 0; - this.mixX = 0; - this.mixY = 0; - this.mixScaleX = 0; - this.mixScaleY = 0; - this.mixShearY = 0; - this.temp = new spine.Vector2(); - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mixRotate = data.mixRotate; - this.mixX = data.mixX; - this.mixY = data.mixY; - this.mixScaleX = data.mixScaleX; - this.mixScaleY = data.mixScaleY; - this.mixShearY = data.mixShearY; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - TransformConstraint.prototype.isActive = function () { - return this.active; - }; - TransformConstraint.prototype.update = function () { - if (this.mixRotate == 0 && this.mixX == 0 && this.mixY == 0 && this.mixScaleX == 0 && this.mixScaleX == 0 && this.mixShearY == 0) - return; - if (this.data.local) { - if (this.data.relative) - this.applyRelativeLocal(); - else - this.applyAbsoluteLocal(); - } - else { - if (this.data.relative) - this.applyRelativeWorld(); - else - this.applyAbsoluteWorld(); - } - }; - TransformConstraint.prototype.applyAbsoluteWorld = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var translate = mixX != 0 || mixY != 0; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect; - var offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (mixRotate != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - if (translate) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += (temp.x - bone.worldX) * mixX; - bone.worldY += (temp.y - bone.worldY) * mixY; - } - if (mixScaleX != 0) { - var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c); - if (s != 0) - s = (s + (Math.sqrt(ta * ta + tc * tc) - s + this.data.offsetScaleX) * mixScaleX) / s; - bone.a *= s; - bone.c *= s; - } - if (mixScaleY != 0) { - var s = Math.sqrt(bone.b * bone.b + bone.d * bone.d); - if (s != 0) - s = (s + (Math.sqrt(tb * tb + td * td) - s + this.data.offsetScaleY) * mixScaleY) / s; - bone.b *= s; - bone.d *= s; - } - if (mixShearY > 0) { - var b = bone.b, d = bone.d; - var by = Math.atan2(d, b); - var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r = by + (r + offsetShearY) * mixShearY; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - } - bone.updateAppliedTransform(); - } - }; - TransformConstraint.prototype.applyRelativeWorld = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var translate = mixX != 0 || mixY != 0; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (mixRotate != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - if (translate) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += temp.x * mixX; - bone.worldY += temp.y * mixY; - } - if (mixScaleX != 0) { - var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * mixScaleX + 1; - bone.a *= s; - bone.c *= s; - } - if (mixScaleY != 0) { - var s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * mixScaleY + 1; - bone.b *= s; - bone.d *= s; - } - if (mixShearY > 0) { - var r = Math.atan2(td, tb) - Math.atan2(tc, ta); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - var b = bone.b, d = bone.d; - r = Math.atan2(d, b) + (r - spine.MathUtils.PI / 2 + offsetShearY) * mixShearY; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - } - bone.updateAppliedTransform(); - } - }; - TransformConstraint.prototype.applyAbsoluteLocal = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var target = this.target; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var rotation = bone.arotation; - if (mixRotate != 0) { - var r = target.arotation - rotation + this.data.offsetRotation; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - rotation += r * mixRotate; - } - var x = bone.ax, y = bone.ay; - x += (target.ax - x + this.data.offsetX) * mixX; - y += (target.ay - y + this.data.offsetY) * mixY; - var scaleX = bone.ascaleX, scaleY = bone.ascaleY; - if (mixScaleX != 0 && scaleX != 0) - scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * mixScaleX) / scaleX; - if (mixScaleY != 0 && scaleY != 0) - scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * mixScaleY) / scaleY; - var shearY = bone.ashearY; - if (mixShearY != 0) { - var r = target.ashearY - shearY + this.data.offsetShearY; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - shearY += r * mixShearY; - } - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - TransformConstraint.prototype.applyRelativeLocal = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var target = this.target; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var rotation = bone.arotation + (target.arotation + this.data.offsetRotation) * mixRotate; - var x = bone.ax + (target.ax + this.data.offsetX) * mixX; - var y = bone.ay + (target.ay + this.data.offsetY) * mixY; - var scaleX = (bone.ascaleX * ((target.ascaleX - 1 + this.data.offsetScaleX) * mixScaleX) + 1); - var scaleY = (bone.ascaleY * ((target.ascaleY - 1 + this.data.offsetScaleY) * mixScaleY) + 1); - var shearY = bone.ashearY + (target.ashearY + this.data.offsetShearY) * mixShearY; - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - return TransformConstraint; - }()); - spine.TransformConstraint = TransformConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraintData = (function (_super) { - __extends(TransformConstraintData, _super); - function TransformConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.mixRotate = 0; - _this.mixX = 0; - _this.mixY = 0; - _this.mixScaleX = 0; - _this.mixScaleY = 0; - _this.mixShearY = 0; - _this.offsetRotation = 0; - _this.offsetX = 0; - _this.offsetY = 0; - _this.offsetScaleX = 0; - _this.offsetScaleY = 0; - _this.offsetShearY = 0; - _this.relative = false; - _this.local = false; - return _this; - } - return TransformConstraintData; - }(spine.ConstraintData)); - spine.TransformConstraintData = TransformConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Triangulator = (function () { - function Triangulator() { - this.convexPolygons = new Array(); - this.convexPolygonsIndices = new Array(); - this.indicesArray = new Array(); - this.isConcaveArray = new Array(); - this.triangles = new Array(); - this.polygonPool = new spine.Pool(function () { - return new Array(); - }); - this.polygonIndicesPool = new spine.Pool(function () { - return new Array(); - }); - } - Triangulator.prototype.triangulate = function (verticesArray) { - var vertices = verticesArray; - var vertexCount = verticesArray.length >> 1; - var indices = this.indicesArray; - indices.length = 0; - for (var i = 0; i < vertexCount; i++) - indices[i] = i; - var isConcave = this.isConcaveArray; - isConcave.length = 0; - for (var i = 0, n = vertexCount; i < n; ++i) - isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices); - var triangles = this.triangles; - triangles.length = 0; - while (vertexCount > 3) { - var previous = vertexCount - 1, i = 0, next = 1; - while (true) { - outer: if (!isConcave[i]) { - var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; - var p1x = vertices[p1], p1y = vertices[p1 + 1]; - var p2x = vertices[p2], p2y = vertices[p2 + 1]; - var p3x = vertices[p3], p3y = vertices[p3 + 1]; - for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) { - if (!isConcave[ii]) - continue; - var v = indices[ii] << 1; - var vx = vertices[v], vy = vertices[v + 1]; - if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) { - if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) { - if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) - break outer; - } - } - } - break; - } - if (next == 0) { - do { - if (!isConcave[i]) - break; - i--; - } while (i > 0); - break; - } - previous = i; - i = next; - next = (next + 1) % vertexCount; - } - triangles.push(indices[(vertexCount + i - 1) % vertexCount]); - triangles.push(indices[i]); - triangles.push(indices[(i + 1) % vertexCount]); - indices.splice(i, 1); - isConcave.splice(i, 1); - vertexCount--; - var previousIndex = (vertexCount + i - 1) % vertexCount; - var nextIndex = i == vertexCount ? 0 : i; - isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); - isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); - } - if (vertexCount == 3) { - triangles.push(indices[2]); - triangles.push(indices[0]); - triangles.push(indices[1]); - } - return triangles; - }; - Triangulator.prototype.decompose = function (verticesArray, triangles) { - var vertices = verticesArray; - var convexPolygons = this.convexPolygons; - this.polygonPool.freeAll(convexPolygons); - convexPolygons.length = 0; - var convexPolygonsIndices = this.convexPolygonsIndices; - this.polygonIndicesPool.freeAll(convexPolygonsIndices); - convexPolygonsIndices.length = 0; - var polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - var polygon = this.polygonPool.obtain(); - polygon.length = 0; - var fanBaseIndex = -1, lastWinding = 0; - for (var i = 0, n = triangles.length; i < n; i += 3) { - var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; - var x1 = vertices[t1], y1 = vertices[t1 + 1]; - var x2 = vertices[t2], y2 = vertices[t2 + 1]; - var x3 = vertices[t3], y3 = vertices[t3 + 1]; - var merged = false; - if (fanBaseIndex == t1) { - var o = polygon.length - 4; - var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3); - var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]); - if (winding1 == lastWinding && winding2 == lastWinding) { - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(t3); - merged = true; - } - } - if (!merged) { - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - else { - this.polygonPool.free(polygon); - this.polygonIndicesPool.free(polygonIndices); - } - polygon = this.polygonPool.obtain(); - polygon.length = 0; - polygon.push(x1); - polygon.push(y1); - polygon.push(x2); - polygon.push(y2); - polygon.push(x3); - polygon.push(y3); - polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - polygonIndices.push(t1); - polygonIndices.push(t2); - polygonIndices.push(t3); - lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3); - fanBaseIndex = t1; - } - } - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - for (var i = 0, n = convexPolygons.length; i < n; i++) { - polygonIndices = convexPolygonsIndices[i]; - if (polygonIndices.length == 0) - continue; - var firstIndex = polygonIndices[0]; - var lastIndex = polygonIndices[polygonIndices.length - 1]; - polygon = convexPolygons[i]; - var o = polygon.length - 4; - var prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; - var prevX = polygon[o + 2], prevY = polygon[o + 3]; - var firstX = polygon[0], firstY = polygon[1]; - var secondX = polygon[2], secondY = polygon[3]; - var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); - for (var ii = 0; ii < n; ii++) { - if (ii == i) - continue; - var otherIndices = convexPolygonsIndices[ii]; - if (otherIndices.length != 3) - continue; - var otherFirstIndex = otherIndices[0]; - var otherSecondIndex = otherIndices[1]; - var otherLastIndex = otherIndices[2]; - var otherPoly = convexPolygons[ii]; - var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; - if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) - continue; - var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3); - var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY); - if (winding1 == winding && winding2 == winding) { - otherPoly.length = 0; - otherIndices.length = 0; - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(otherLastIndex); - prevPrevX = prevX; - prevPrevY = prevY; - prevX = x3; - prevY = y3; - ii = 0; - } - } - } - for (var i = convexPolygons.length - 1; i >= 0; i--) { - polygon = convexPolygons[i]; - if (polygon.length == 0) { - convexPolygons.splice(i, 1); - this.polygonPool.free(polygon); - polygonIndices = convexPolygonsIndices[i]; - convexPolygonsIndices.splice(i, 1); - this.polygonIndicesPool.free(polygonIndices); - } - } - return convexPolygons; - }; - Triangulator.isConcave = function (index, vertexCount, vertices, indices) { - var previous = indices[(vertexCount + index - 1) % vertexCount] << 1; - var current = indices[index] << 1; - var next = indices[(index + 1) % vertexCount] << 1; - return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]); - }; - Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) { - return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; - }; - Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) { - var px = p2x - p1x, py = p2y - p1y; - return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1; - }; - return Triangulator; - }()); - spine.Triangulator = Triangulator; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IntSet = (function () { - function IntSet() { - this.array = new Array(); - } - IntSet.prototype.add = function (value) { - var contains = this.contains(value); - this.array[value | 0] = value | 0; - return !contains; - }; - IntSet.prototype.contains = function (value) { - return this.array[value | 0] != undefined; - }; - IntSet.prototype.remove = function (value) { - this.array[value | 0] = undefined; - }; - IntSet.prototype.clear = function () { - this.array.length = 0; - }; - return IntSet; - }()); - spine.IntSet = IntSet; - var StringSet = (function () { - function StringSet() { - this.entries = {}; - this.size = 0; - } - StringSet.prototype.add = function (value) { - var contains = this.entries[value]; - this.entries[value] = true; - if (!contains) { - this.size++; - return true; - } - return false; - }; - StringSet.prototype.addAll = function (values) { - var oldSize = this.size; - for (var i = 0, n = values.length; i < n; i++) - this.add(values[i]); - return oldSize != this.size; - }; - StringSet.prototype.contains = function (value) { - return this.entries[value]; - }; - StringSet.prototype.clear = function () { - this.entries = {}; - this.size = 0; - }; - return StringSet; - }()); - spine.StringSet = StringSet; - var Color = (function () { - function Color(r, g, b, a) { - if (r === void 0) { r = 0; } - if (g === void 0) { g = 0; } - if (b === void 0) { b = 0; } - if (a === void 0) { a = 0; } - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } - Color.prototype.set = function (r, g, b, a) { - this.r = r; - this.g = g; - this.b = b; - this.a = a; - return this.clamp(); - }; - Color.prototype.setFromColor = function (c) { - this.r = c.r; - this.g = c.g; - this.b = c.b; - this.a = c.a; - return this; - }; - Color.prototype.setFromString = function (hex) { - hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; - this.r = parseInt(hex.substr(0, 2), 16) / 255; - this.g = parseInt(hex.substr(2, 2), 16) / 255; - this.b = parseInt(hex.substr(4, 2), 16) / 255; - this.a = hex.length != 8 ? 1 : parseInt(hex.substr(6, 2), 16) / 255; - return this; - }; - Color.prototype.add = function (r, g, b, a) { - this.r += r; - this.g += g; - this.b += b; - this.a += a; - return this.clamp(); - }; - Color.prototype.clamp = function () { - if (this.r < 0) - this.r = 0; - else if (this.r > 1) - this.r = 1; - if (this.g < 0) - this.g = 0; - else if (this.g > 1) - this.g = 1; - if (this.b < 0) - this.b = 0; - else if (this.b > 1) - this.b = 1; - if (this.a < 0) - this.a = 0; - else if (this.a > 1) - this.a = 1; - return this; - }; - Color.rgba8888ToColor = function (color, value) { - color.r = ((value & 0xff000000) >>> 24) / 255; - color.g = ((value & 0x00ff0000) >>> 16) / 255; - color.b = ((value & 0x0000ff00) >>> 8) / 255; - color.a = ((value & 0x000000ff)) / 255; - }; - Color.rgb888ToColor = function (color, value) { - color.r = ((value & 0x00ff0000) >>> 16) / 255; - color.g = ((value & 0x0000ff00) >>> 8) / 255; - color.b = ((value & 0x000000ff)) / 255; - }; - Color.fromString = function (hex) { - return new Color().setFromString(hex); - }; - Color.WHITE = new Color(1, 1, 1, 1); - Color.RED = new Color(1, 0, 0, 1); - Color.GREEN = new Color(0, 1, 0, 1); - Color.BLUE = new Color(0, 0, 1, 1); - Color.MAGENTA = new Color(1, 0, 1, 1); - return Color; - }()); - spine.Color = Color; - var MathUtils = (function () { - function MathUtils() { - } - MathUtils.clamp = function (value, min, max) { - if (value < min) - return min; - if (value > max) - return max; - return value; - }; - MathUtils.cosDeg = function (degrees) { - return Math.cos(degrees * MathUtils.degRad); - }; - MathUtils.sinDeg = function (degrees) { - return Math.sin(degrees * MathUtils.degRad); - }; - MathUtils.signum = function (value) { - return value > 0 ? 1 : value < 0 ? -1 : 0; - }; - MathUtils.toInt = function (x) { - return x > 0 ? Math.floor(x) : Math.ceil(x); - }; - MathUtils.cbrt = function (x) { - var y = Math.pow(Math.abs(x), 1 / 3); - return x < 0 ? -y : y; - }; - MathUtils.randomTriangular = function (min, max) { - return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5); - }; - MathUtils.randomTriangularWith = function (min, max, mode) { - var u = Math.random(); - var d = max - min; - if (u <= (mode - min) / d) - return min + Math.sqrt(u * d * (mode - min)); - return max - Math.sqrt((1 - u) * d * (max - mode)); - }; - MathUtils.PI = 3.1415927; - MathUtils.PI2 = MathUtils.PI * 2; - MathUtils.radiansToDegrees = 180 / MathUtils.PI; - MathUtils.radDeg = MathUtils.radiansToDegrees; - MathUtils.degreesToRadians = MathUtils.PI / 180; - MathUtils.degRad = MathUtils.degreesToRadians; - return MathUtils; - }()); - spine.MathUtils = MathUtils; - var Interpolation = (function () { - function Interpolation() { - } - Interpolation.prototype.apply = function (start, end, a) { - return start + (end - start) * this.applyInternal(a); - }; - return Interpolation; - }()); - spine.Interpolation = Interpolation; - var Pow = (function (_super) { - __extends(Pow, _super); - function Pow(power) { - var _this = _super.call(this) || this; - _this.power = 2; - _this.power = power; - return _this; - } - Pow.prototype.applyInternal = function (a) { - if (a <= 0.5) - return Math.pow(a * 2, this.power) / 2; - return Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1; - }; - return Pow; - }(Interpolation)); - spine.Pow = Pow; - var PowOut = (function (_super) { - __extends(PowOut, _super); - function PowOut(power) { - return _super.call(this, power) || this; - } - PowOut.prototype.applyInternal = function (a) { - return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1; - }; - return PowOut; - }(Pow)); - spine.PowOut = PowOut; - var Utils = (function () { - function Utils() { - } - Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { - for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { - dest[j] = source[i]; - } - }; - Utils.arrayFill = function (array, fromIndex, toIndex, value) { - for (var i = fromIndex; i < toIndex; i++) - array[i] = value; - }; - Utils.setArraySize = function (array, size, value) { - if (value === void 0) { value = 0; } - var oldSize = array.length; - if (oldSize == size) - return array; - array.length = size; - if (oldSize < size) { - for (var i = oldSize; i < size; i++) - array[i] = value; - } - return array; - }; - Utils.ensureArrayCapacity = function (array, size, value) { - if (value === void 0) { value = 0; } - if (array.length >= size) - return array; - return Utils.setArraySize(array, size, value); - }; - Utils.newArray = function (size, defaultValue) { - var array = new Array(size); - for (var i = 0; i < size; i++) - array[i] = defaultValue; - return array; - }; - Utils.newFloatArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) - return new Float32Array(size); - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.newShortArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) - return new Int16Array(size); - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.toFloatArray = function (array) { - return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; - }; - Utils.toSinglePrecision = function (value) { - return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; - }; - Utils.webkit602BugfixHelper = function (alpha, blend) { - }; - Utils.contains = function (array, element, identity) { - if (identity === void 0) { identity = true; } - for (var i = 0; i < array.length; i++) - if (array[i] == element) - return true; - return false; - }; - Utils.enumValue = function (type, name) { - return type[name[0].toUpperCase() + name.slice(1)]; - }; - Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; - return Utils; - }()); - spine.Utils = Utils; - var DebugUtils = (function () { - function DebugUtils() { - } - DebugUtils.logBones = function (skeleton) { - for (var i = 0; i < skeleton.bones.length; i++) { - var bone = skeleton.bones[i]; - console.log(bone.data.name + ", " + bone.a + ", " + bone.b + ", " + bone.c + ", " + bone.d + ", " + bone.worldX + ", " + bone.worldY); - } - }; - return DebugUtils; - }()); - spine.DebugUtils = DebugUtils; - var Pool = (function () { - function Pool(instantiator) { - this.items = new Array(); - this.instantiator = instantiator; - } - Pool.prototype.obtain = function () { - return this.items.length > 0 ? this.items.pop() : this.instantiator(); - }; - Pool.prototype.free = function (item) { - if (item.reset) - item.reset(); - this.items.push(item); - }; - Pool.prototype.freeAll = function (items) { - for (var i = 0; i < items.length; i++) - this.free(items[i]); - }; - Pool.prototype.clear = function () { - this.items.length = 0; - }; - return Pool; - }()); - spine.Pool = Pool; - var Vector2 = (function () { - function Vector2(x, y) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - this.x = x; - this.y = y; - } - Vector2.prototype.set = function (x, y) { - this.x = x; - this.y = y; - return this; - }; - Vector2.prototype.length = function () { - var x = this.x; - var y = this.y; - return Math.sqrt(x * x + y * y); - }; - Vector2.prototype.normalize = function () { - var len = this.length(); - if (len != 0) { - this.x /= len; - this.y /= len; - } - return this; - }; - return Vector2; - }()); - spine.Vector2 = Vector2; - var TimeKeeper = (function () { - function TimeKeeper() { - this.maxDelta = 0.064; - this.framesPerSecond = 0; - this.delta = 0; - this.totalTime = 0; - this.lastTime = Date.now() / 1000; - this.frameCount = 0; - this.frameTime = 0; - } - TimeKeeper.prototype.update = function () { - var now = Date.now() / 1000; - this.delta = now - this.lastTime; - this.frameTime += this.delta; - this.totalTime += this.delta; - if (this.delta > this.maxDelta) - this.delta = this.maxDelta; - this.lastTime = now; - this.frameCount++; - if (this.frameTime > 1) { - this.framesPerSecond = this.frameCount / this.frameTime; - this.frameTime = 0; - this.frameCount = 0; - } - }; - return TimeKeeper; - }()); - spine.TimeKeeper = TimeKeeper; - var WindowedMean = (function () { - function WindowedMean(windowSize) { - if (windowSize === void 0) { windowSize = 32; } - this.addedValues = 0; - this.lastValue = 0; - this.mean = 0; - this.dirty = true; - this.values = new Array(windowSize); - } - WindowedMean.prototype.hasEnoughData = function () { - return this.addedValues >= this.values.length; - }; - WindowedMean.prototype.addValue = function (value) { - if (this.addedValues < this.values.length) - this.addedValues++; - this.values[this.lastValue++] = value; - if (this.lastValue > this.values.length - 1) - this.lastValue = 0; - this.dirty = true; - }; - WindowedMean.prototype.getMean = function () { - if (this.hasEnoughData()) { - if (this.dirty) { - var mean = 0; - for (var i = 0; i < this.values.length; i++) - mean += this.values[i]; - this.mean = mean / this.values.length; - this.dirty = false; - } - return this.mean; - } - return 0; - }; - return WindowedMean; - }()); - spine.WindowedMean = WindowedMean; -})(spine || (spine = {})); -(function () { - if (!Math.fround) { - Math.fround = (function (array) { - return function (x) { - return array[0] = x, array[0]; - }; - })(new Float32Array(1)); - } -})(); -var spine; -(function (spine) { - var Attachment = (function () { - function Attachment(name) { - if (!name) - throw new Error("name cannot be null."); - this.name = name; - } - return Attachment; - }()); - spine.Attachment = Attachment; - var VertexAttachment = (function (_super) { - __extends(VertexAttachment, _super); - function VertexAttachment(name) { - var _this = _super.call(this, name) || this; - _this.id = VertexAttachment.nextID++; - _this.worldVerticesLength = 0; - _this.deformAttachment = _this; - return _this; - } - VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) { - count = offset + (count >> 1) * stride; - var skeleton = slot.bone.skeleton; - var deformArray = slot.deform; - var vertices = this.vertices; - var bones = this.bones; - if (!bones) { - if (deformArray.length > 0) - vertices = deformArray; - var bone = slot.bone; - var x = bone.worldX; - var y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) { - var vx = vertices[v_1], vy = vertices[v_1 + 1]; - worldVertices[w] = vx * a + vy * b + x; - worldVertices[w + 1] = vx * c + vy * d + y; - } - return; - } - var v = 0, skip = 0; - for (var i = 0; i < start; i += 2) { - var n = bones[v]; - v += n + 1; - skip += n; - } - var skeletonBones = skeleton.bones; - if (deformArray.length == 0) { - for (var w = offset, b = skip * 3; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - else { - var deform = deformArray; - for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3, f += 2) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - }; - VertexAttachment.prototype.copyTo = function (attachment) { - if (this.bones) { - attachment.bones = new Array(this.bones.length); - spine.Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length); - } - else - attachment.bones = null; - if (this.vertices) { - attachment.vertices = spine.Utils.newFloatArray(this.vertices.length); - spine.Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length); - } - else - attachment.vertices = null; - attachment.worldVerticesLength = this.worldVerticesLength; - attachment.deformAttachment = this.deformAttachment; - }; - VertexAttachment.nextID = 0; - return VertexAttachment; - }(Attachment)); - spine.VertexAttachment = VertexAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoundingBoxAttachment = (function (_super) { - __extends(BoundingBoxAttachment, _super); - function BoundingBoxAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - BoundingBoxAttachment.prototype.copy = function () { - var copy = new BoundingBoxAttachment(this.name); - this.copyTo(copy); - copy.color.setFromColor(this.color); - return copy; - }; - return BoundingBoxAttachment; - }(spine.VertexAttachment)); - spine.BoundingBoxAttachment = BoundingBoxAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var ClippingAttachment = (function (_super) { - __extends(ClippingAttachment, _super); - function ClippingAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.2275, 0.2275, 0.8078, 1); - return _this; - } - ClippingAttachment.prototype.copy = function () { - var copy = new ClippingAttachment(this.name); - this.copyTo(copy); - copy.endSlot = this.endSlot; - copy.color.setFromColor(this.color); - return copy; - }; - return ClippingAttachment; - }(spine.VertexAttachment)); - spine.ClippingAttachment = ClippingAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var MeshAttachment = (function (_super) { - __extends(MeshAttachment, _super); - function MeshAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - _this.tempColor = new spine.Color(0, 0, 0, 0); - return _this; - } - MeshAttachment.prototype.updateUVs = function () { - var regionUVs = this.regionUVs; - if (!this.uvs || this.uvs.length != regionUVs.length) - this.uvs = spine.Utils.newFloatArray(regionUVs.length); - var uvs = this.uvs; - var n = this.uvs.length; - var u = this.region.u, v = this.region.v, width = 0, height = 0; - if (this.region instanceof spine.TextureAtlasRegion) { - var region = this.region, image = region.page.texture.getImage(); - var textureWidth = image.width, textureHeight = image.height; - switch (region.degrees) { - case 90: - u -= (region.originalHeight - region.offsetY - region.height) / textureWidth; - v -= (region.originalWidth - region.offsetX - region.width) / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i + 1] * width; - uvs[i + 1] = v + (1 - regionUVs[i]) * height; - } - return; - case 180: - u -= (region.originalWidth - region.offsetX - region.width) / textureWidth; - v -= region.offsetY / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i]) * width; - uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height; - } - return; - case 270: - u -= region.offsetY / textureWidth; - v -= region.offsetX / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i + 1]) * width; - uvs[i + 1] = v + regionUVs[i] * height; - } - return; - } - u -= region.offsetX / textureWidth; - v -= (region.originalHeight - region.offsetY - region.height) / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - } - else if (!this.region) { - u = v = 0; - width = height = 1; - } - else { - width = this.region.u2 - u; - height = this.region.v2 - v; - } - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i] * width; - uvs[i + 1] = v + regionUVs[i + 1] * height; - } - }; - MeshAttachment.prototype.getParentMesh = function () { - return this.parentMesh; - }; - MeshAttachment.prototype.setParentMesh = function (parentMesh) { - this.parentMesh = parentMesh; - if (parentMesh) { - this.bones = parentMesh.bones; - this.vertices = parentMesh.vertices; - this.worldVerticesLength = parentMesh.worldVerticesLength; - this.regionUVs = parentMesh.regionUVs; - this.triangles = parentMesh.triangles; - this.hullLength = parentMesh.hullLength; - this.worldVerticesLength = parentMesh.worldVerticesLength; - } - }; - MeshAttachment.prototype.copy = function () { - if (this.parentMesh) - return this.newLinkedMesh(); - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - this.copyTo(copy); - copy.regionUVs = new Array(this.regionUVs.length); - spine.Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length); - copy.uvs = new Array(this.uvs.length); - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length); - copy.triangles = new Array(this.triangles.length); - spine.Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); - copy.hullLength = this.hullLength; - if (this.edges) { - copy.edges = new Array(this.edges.length); - spine.Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); - } - copy.width = this.width; - copy.height = this.height; - return copy; - }; - MeshAttachment.prototype.newLinkedMesh = function () { - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - copy.deformAttachment = this.deformAttachment; - copy.setParentMesh(this.parentMesh ? this.parentMesh : this); - copy.updateUVs(); - return copy; - }; - return MeshAttachment; - }(spine.VertexAttachment)); - spine.MeshAttachment = MeshAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathAttachment = (function (_super) { - __extends(PathAttachment, _super); - function PathAttachment(name) { - var _this = _super.call(this, name) || this; - _this.closed = false; - _this.constantSpeed = false; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - PathAttachment.prototype.copy = function () { - var copy = new PathAttachment(this.name); - this.copyTo(copy); - copy.lengths = new Array(this.lengths.length); - spine.Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length); - copy.closed = closed; - copy.constantSpeed = this.constantSpeed; - copy.color.setFromColor(this.color); - return copy; - }; - return PathAttachment; - }(spine.VertexAttachment)); - spine.PathAttachment = PathAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PointAttachment = (function (_super) { - __extends(PointAttachment, _super); - function PointAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.38, 0.94, 0, 1); - return _this; - } - PointAttachment.prototype.computeWorldPosition = function (bone, point) { - point.x = this.x * bone.a + this.y * bone.b + bone.worldX; - point.y = this.x * bone.c + this.y * bone.d + bone.worldY; - return point; - }; - PointAttachment.prototype.computeWorldRotation = function (bone) { - var cos = spine.MathUtils.cosDeg(this.rotation), sin = spine.MathUtils.sinDeg(this.rotation); - var x = cos * bone.a + sin * bone.b; - var y = cos * bone.c + sin * bone.d; - return Math.atan2(y, x) * spine.MathUtils.radDeg; - }; - PointAttachment.prototype.copy = function () { - var copy = new PointAttachment(this.name); - copy.x = this.x; - copy.y = this.y; - copy.rotation = this.rotation; - copy.color.setFromColor(this.color); - return copy; - }; - return PointAttachment; - }(spine.VertexAttachment)); - spine.PointAttachment = PointAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var RegionAttachment = (function (_super) { - __extends(RegionAttachment, _super); - function RegionAttachment(name) { - var _this = _super.call(this, name) || this; - _this.x = 0; - _this.y = 0; - _this.scaleX = 1; - _this.scaleY = 1; - _this.rotation = 0; - _this.width = 0; - _this.height = 0; - _this.color = new spine.Color(1, 1, 1, 1); - _this.offset = spine.Utils.newFloatArray(8); - _this.uvs = spine.Utils.newFloatArray(8); - _this.tempColor = new spine.Color(1, 1, 1, 1); - return _this; - } - RegionAttachment.prototype.updateOffset = function () { - var region = this.region; - var regionScaleX = this.width / this.region.originalWidth * this.scaleX; - var regionScaleY = this.height / this.region.originalHeight * this.scaleY; - var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; - var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; - var localX2 = localX + this.region.width * regionScaleX; - var localY2 = localY + this.region.height * regionScaleY; - var radians = this.rotation * Math.PI / 180; - var cos = Math.cos(radians); - var sin = Math.sin(radians); - var x = this.x, y = this.y; - var localXCos = localX * cos + x; - var localXSin = localX * sin; - var localYCos = localY * cos + y; - var localYSin = localY * sin; - var localX2Cos = localX2 * cos + x; - var localX2Sin = localX2 * sin; - var localY2Cos = localY2 * cos + y; - var localY2Sin = localY2 * sin; - var offset = this.offset; - offset[0] = localXCos - localYSin; - offset[1] = localYCos + localXSin; - offset[2] = localXCos - localY2Sin; - offset[3] = localY2Cos + localXSin; - offset[4] = localX2Cos - localY2Sin; - offset[5] = localY2Cos + localX2Sin; - offset[6] = localX2Cos - localYSin; - offset[7] = localYCos + localX2Sin; - }; - RegionAttachment.prototype.setRegion = function (region) { - this.region = region; - var uvs = this.uvs; - if (region.degrees == 90) { - uvs[2] = region.u; - uvs[3] = region.v2; - uvs[4] = region.u; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v; - uvs[0] = region.u2; - uvs[1] = region.v2; - } - else { - uvs[0] = region.u; - uvs[1] = region.v2; - uvs[2] = region.u; - uvs[3] = region.v; - uvs[4] = region.u2; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v2; - } - }; - RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) { - var vertexOffset = this.offset; - var x = bone.worldX, y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var offsetX = 0, offsetY = 0; - offsetX = vertexOffset[0]; - offsetY = vertexOffset[1]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[2]; - offsetY = vertexOffset[3]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[4]; - offsetY = vertexOffset[5]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[6]; - offsetY = vertexOffset[7]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - }; - RegionAttachment.prototype.copy = function () { - var copy = new RegionAttachment(this.name); - copy.region = this.region; - copy.rendererObject = this.rendererObject; - copy.path = this.path; - copy.x = this.x; - copy.y = this.y; - copy.scaleX = this.scaleX; - copy.scaleY = this.scaleY; - copy.rotation = this.rotation; - copy.width = this.width; - copy.height = this.height; - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8); - spine.Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8); - copy.color.setFromColor(this.color); - return copy; - }; - RegionAttachment.X1 = 0; - RegionAttachment.Y1 = 1; - RegionAttachment.C1R = 2; - RegionAttachment.C1G = 3; - RegionAttachment.C1B = 4; - RegionAttachment.C1A = 5; - RegionAttachment.U1 = 6; - RegionAttachment.V1 = 7; - RegionAttachment.X2 = 8; - RegionAttachment.Y2 = 9; - RegionAttachment.C2R = 10; - RegionAttachment.C2G = 11; - RegionAttachment.C2B = 12; - RegionAttachment.C2A = 13; - RegionAttachment.U2 = 14; - RegionAttachment.V2 = 15; - RegionAttachment.X3 = 16; - RegionAttachment.Y3 = 17; - RegionAttachment.C3R = 18; - RegionAttachment.C3G = 19; - RegionAttachment.C3B = 20; - RegionAttachment.C3A = 21; - RegionAttachment.U3 = 22; - RegionAttachment.V3 = 23; - RegionAttachment.X4 = 24; - RegionAttachment.Y4 = 25; - RegionAttachment.C4R = 26; - RegionAttachment.C4G = 27; - RegionAttachment.C4B = 28; - RegionAttachment.C4A = 29; - RegionAttachment.U4 = 30; - RegionAttachment.V4 = 31; - return RegionAttachment; - }(spine.Attachment)); - spine.RegionAttachment = RegionAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var JitterEffect = (function () { - function JitterEffect(jitterX, jitterY) { - this.jitterX = 0; - this.jitterY = 0; - this.jitterX = jitterX; - this.jitterY = jitterY; - } - JitterEffect.prototype.begin = function (skeleton) { - }; - JitterEffect.prototype.transform = function (position, uv, light, dark) { - position.x += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - position.y += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - }; - JitterEffect.prototype.end = function () { - }; - return JitterEffect; - }()); - spine.JitterEffect = JitterEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SwirlEffect = (function () { - function SwirlEffect(radius) { - this.centerX = 0; - this.centerY = 0; - this.radius = 0; - this.angle = 0; - this.worldX = 0; - this.worldY = 0; - this.radius = radius; - } - SwirlEffect.prototype.begin = function (skeleton) { - this.worldX = skeleton.x + this.centerX; - this.worldY = skeleton.y + this.centerY; - }; - SwirlEffect.prototype.transform = function (position, uv, light, dark) { - var radAngle = this.angle * spine.MathUtils.degreesToRadians; - var x = position.x - this.worldX; - var y = position.y - this.worldY; - var dist = Math.sqrt(x * x + y * y); - if (dist < this.radius) { - var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius); - var cos = Math.cos(theta); - var sin = Math.sin(theta); - position.x = cos * x - sin * y + this.worldX; - position.y = sin * x + cos * y + this.worldY; - } - }; - SwirlEffect.prototype.end = function () { - }; - SwirlEffect.interpolation = new spine.PowOut(2); - return SwirlEffect; - }()); - spine.SwirlEffect = SwirlEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var canvas; - (function (canvas) { - var AssetManager = (function (_super) { - __extends(AssetManager, _super); - function AssetManager(pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - return _super.call(this, function (image) { return new spine.canvas.CanvasTexture(image); }, pathPrefix, downloader) || this; - } - return AssetManager; - }(spine.AssetManager)); - canvas.AssetManager = AssetManager; - })(canvas = spine.canvas || (spine.canvas = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var canvas; - (function (canvas) { - var CanvasTexture = (function (_super) { - __extends(CanvasTexture, _super); - function CanvasTexture(image) { - return _super.call(this, image) || this; - } - CanvasTexture.prototype.setFilters = function (minFilter, magFilter) { }; - CanvasTexture.prototype.setWraps = function (uWrap, vWrap) { }; - CanvasTexture.prototype.dispose = function () { }; - return CanvasTexture; - }(spine.Texture)); - canvas.CanvasTexture = CanvasTexture; - })(canvas = spine.canvas || (spine.canvas = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var canvas; - (function (canvas) { - var SkeletonRenderer = (function () { - function SkeletonRenderer(context) { - this.triangleRendering = false; - this.debugRendering = false; - this.vertices = spine.Utils.newFloatArray(8 * 1024); - this.tempColor = new spine.Color(); - this.ctx = context; - } - SkeletonRenderer.prototype.draw = function (skeleton) { - if (this.triangleRendering) - this.drawTriangles(skeleton); - else - this.drawImages(skeleton); - }; - SkeletonRenderer.prototype.drawImages = function (skeleton) { - var ctx = this.ctx; - var color = this.tempColor; - var skeletonColor = skeleton.color; - var drawOrder = skeleton.drawOrder; - if (this.debugRendering) - ctx.strokeStyle = "green"; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - var bone = slot.bone; - if (!bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.RegionAttachment)) - continue; - var region = attachment.region; - var image = region.page.texture.getImage(); - var slotColor = slot.color; - var regionColor = attachment.color; - color.set(skeletonColor.r * slotColor.r * regionColor.r, skeletonColor.g * slotColor.g * regionColor.g, skeletonColor.b * slotColor.b * regionColor.b, skeletonColor.a * slotColor.a * regionColor.a); - ctx.save(); - ctx.transform(bone.a, bone.c, bone.b, bone.d, bone.worldX, bone.worldY); - ctx.translate(attachment.offset[0], attachment.offset[1]); - ctx.rotate(attachment.rotation * Math.PI / 180); - var atlasScale = attachment.width / region.originalWidth; - ctx.scale(atlasScale * attachment.scaleX, atlasScale * attachment.scaleY); - var w = region.width, h = region.height; - ctx.translate(w / 2, h / 2); - if (attachment.region.degrees == 90) { - var t = w; - w = h; - h = t; - ctx.rotate(-Math.PI / 2); - } - ctx.scale(1, -1); - ctx.translate(-w / 2, -h / 2); - if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) { - ctx.globalAlpha = color.a; - } - ctx.drawImage(image, region.x, region.y, w, h, 0, 0, w, h); - if (this.debugRendering) - ctx.strokeRect(0, 0, w, h); - ctx.restore(); - } - }; - SkeletonRenderer.prototype.drawTriangles = function (skeleton) { - var ctx = this.ctx; - var color = this.tempColor; - var skeletonColor = skeleton.color; - var drawOrder = skeleton.drawOrder; - var blendMode = null; - var vertices = this.vertices; - var triangles = null; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - var attachment = slot.getAttachment(); - var texture = void 0; - var region = void 0; - if (attachment instanceof spine.RegionAttachment) { - var regionAttachment = attachment; - vertices = this.computeRegionVertices(slot, regionAttachment, false); - triangles = SkeletonRenderer.QUAD_TRIANGLES; - region = regionAttachment.region; - texture = region.page.texture.getImage(); - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - vertices = this.computeMeshVertices(slot, mesh, false); - triangles = mesh.triangles; - texture = mesh.region.renderObject.page.texture.getImage(); - } - else - continue; - if (texture) { - if (slot.data.blendMode != blendMode) - blendMode = slot.data.blendMode; - var slotColor = slot.color; - var attachmentColor = attachment.color; - color.set(skeletonColor.r * slotColor.r * attachmentColor.r, skeletonColor.g * slotColor.g * attachmentColor.g, skeletonColor.b * slotColor.b * attachmentColor.b, skeletonColor.a * slotColor.a * attachmentColor.a); - if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) { - ctx.globalAlpha = color.a; - } - for (var j = 0; j < triangles.length; j += 3) { - var t1 = triangles[j] * 8, t2 = triangles[j + 1] * 8, t3 = triangles[j + 2] * 8; - var x0 = vertices[t1], y0 = vertices[t1 + 1], u0 = vertices[t1 + 6], v0 = vertices[t1 + 7]; - var x1 = vertices[t2], y1 = vertices[t2 + 1], u1 = vertices[t2 + 6], v1 = vertices[t2 + 7]; - var x2 = vertices[t3], y2 = vertices[t3 + 1], u2 = vertices[t3 + 6], v2 = vertices[t3 + 7]; - this.drawTriangle(texture, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2); - if (this.debugRendering) { - ctx.strokeStyle = "green"; - ctx.beginPath(); - ctx.moveTo(x0, y0); - ctx.lineTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.lineTo(x0, y0); - ctx.stroke(); - } - } - } - } - this.ctx.globalAlpha = 1; - }; - SkeletonRenderer.prototype.drawTriangle = function (img, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2) { - var ctx = this.ctx; - u0 *= img.width; - v0 *= img.height; - u1 *= img.width; - v1 *= img.height; - u2 *= img.width; - v2 *= img.height; - ctx.beginPath(); - ctx.moveTo(x0, y0); - ctx.lineTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.closePath(); - x1 -= x0; - y1 -= y0; - x2 -= x0; - y2 -= y0; - u1 -= u0; - v1 -= v0; - u2 -= u0; - v2 -= v0; - var det = 1 / (u1 * v2 - u2 * v1), a = (v2 * x1 - v1 * x2) * det, b = (v2 * y1 - v1 * y2) * det, c = (u1 * x2 - u2 * x1) * det, d = (u1 * y2 - u2 * y1) * det, e = x0 - a * u0 - c * v0, f = y0 - b * u0 - d * v0; - ctx.save(); - ctx.transform(a, b, c, d, e, f); - ctx.clip(); - ctx.drawImage(img, 0, 0); - ctx.restore(); - }; - SkeletonRenderer.prototype.computeRegionVertices = function (slot, region, pma) { - var skeletonColor = slot.bone.skeleton.color; - var slotColor = slot.color; - var regionColor = region.color; - var alpha = skeletonColor.a * slotColor.a * regionColor.a; - var multiplier = pma ? alpha : 1; - var color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); - region.computeWorldVertices(slot.bone, this.vertices, 0, SkeletonRenderer.VERTEX_SIZE); - var vertices = this.vertices; - var uvs = region.uvs; - vertices[spine.RegionAttachment.C1R] = color.r; - vertices[spine.RegionAttachment.C1G] = color.g; - vertices[spine.RegionAttachment.C1B] = color.b; - vertices[spine.RegionAttachment.C1A] = color.a; - vertices[spine.RegionAttachment.U1] = uvs[0]; - vertices[spine.RegionAttachment.V1] = uvs[1]; - vertices[spine.RegionAttachment.C2R] = color.r; - vertices[spine.RegionAttachment.C2G] = color.g; - vertices[spine.RegionAttachment.C2B] = color.b; - vertices[spine.RegionAttachment.C2A] = color.a; - vertices[spine.RegionAttachment.U2] = uvs[2]; - vertices[spine.RegionAttachment.V2] = uvs[3]; - vertices[spine.RegionAttachment.C3R] = color.r; - vertices[spine.RegionAttachment.C3G] = color.g; - vertices[spine.RegionAttachment.C3B] = color.b; - vertices[spine.RegionAttachment.C3A] = color.a; - vertices[spine.RegionAttachment.U3] = uvs[4]; - vertices[spine.RegionAttachment.V3] = uvs[5]; - vertices[spine.RegionAttachment.C4R] = color.r; - vertices[spine.RegionAttachment.C4G] = color.g; - vertices[spine.RegionAttachment.C4B] = color.b; - vertices[spine.RegionAttachment.C4A] = color.a; - vertices[spine.RegionAttachment.U4] = uvs[6]; - vertices[spine.RegionAttachment.V4] = uvs[7]; - return vertices; - }; - SkeletonRenderer.prototype.computeMeshVertices = function (slot, mesh, pma) { - var skeletonColor = slot.bone.skeleton.color; - var slotColor = slot.color; - var regionColor = mesh.color; - var alpha = skeletonColor.a * slotColor.a * regionColor.a; - var multiplier = pma ? alpha : 1; - var color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); - var vertexCount = mesh.worldVerticesLength / 2; - var vertices = this.vertices; - if (vertices.length < mesh.worldVerticesLength) - this.vertices = vertices = spine.Utils.newFloatArray(mesh.worldVerticesLength); - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, SkeletonRenderer.VERTEX_SIZE); - var uvs = mesh.uvs; - for (var i = 0, u = 0, v = 2; i < vertexCount; i++) { - vertices[v++] = color.r; - vertices[v++] = color.g; - vertices[v++] = color.b; - vertices[v++] = color.a; - vertices[v++] = uvs[u++]; - vertices[v++] = uvs[u++]; - v += 2; - } - return vertices; - }; - SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - SkeletonRenderer.VERTEX_SIZE = 2 + 2 + 4; - return SkeletonRenderer; - }()); - canvas.SkeletonRenderer = SkeletonRenderer; - })(canvas = spine.canvas || (spine.canvas = {})); -})(spine || (spine = {})); -//# sourceMappingURL=spine-canvas.js.map \ No newline at end of file +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.spine = {})); +}(this, (function (exports) { 'use strict'; + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$f = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + var IntSet = /** @class */ (function () { + function IntSet() { + this.array = new Array(); + } + IntSet.prototype.add = function (value) { + var contains = this.contains(value); + this.array[value | 0] = value | 0; + return !contains; + }; + IntSet.prototype.contains = function (value) { + return this.array[value | 0] != undefined; + }; + IntSet.prototype.remove = function (value) { + this.array[value | 0] = undefined; + }; + IntSet.prototype.clear = function () { + this.array.length = 0; + }; + return IntSet; + }()); + var StringSet = /** @class */ (function () { + function StringSet() { + this.entries = {}; + this.size = 0; + } + StringSet.prototype.add = function (value) { + var contains = this.entries[value]; + this.entries[value] = true; + if (!contains) { + this.size++; + return true; + } + return false; + }; + StringSet.prototype.addAll = function (values) { + var oldSize = this.size; + for (var i = 0, n = values.length; i < n; i++) + this.add(values[i]); + return oldSize != this.size; + }; + StringSet.prototype.contains = function (value) { + return this.entries[value]; + }; + StringSet.prototype.clear = function () { + this.entries = {}; + this.size = 0; + }; + return StringSet; + }()); + var Color = /** @class */ (function () { + function Color(r, g, b, a) { + if (r === void 0) { r = 0; } + if (g === void 0) { g = 0; } + if (b === void 0) { b = 0; } + if (a === void 0) { a = 0; } + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + Color.prototype.set = function (r, g, b, a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + return this.clamp(); + }; + Color.prototype.setFromColor = function (c) { + this.r = c.r; + this.g = c.g; + this.b = c.b; + this.a = c.a; + return this; + }; + Color.prototype.setFromString = function (hex) { + hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; + this.r = parseInt(hex.substr(0, 2), 16) / 255; + this.g = parseInt(hex.substr(2, 2), 16) / 255; + this.b = parseInt(hex.substr(4, 2), 16) / 255; + this.a = hex.length != 8 ? 1 : parseInt(hex.substr(6, 2), 16) / 255; + return this; + }; + Color.prototype.add = function (r, g, b, a) { + this.r += r; + this.g += g; + this.b += b; + this.a += a; + return this.clamp(); + }; + Color.prototype.clamp = function () { + if (this.r < 0) + this.r = 0; + else if (this.r > 1) + this.r = 1; + if (this.g < 0) + this.g = 0; + else if (this.g > 1) + this.g = 1; + if (this.b < 0) + this.b = 0; + else if (this.b > 1) + this.b = 1; + if (this.a < 0) + this.a = 0; + else if (this.a > 1) + this.a = 1; + return this; + }; + Color.rgba8888ToColor = function (color, value) { + color.r = ((value & 0xff000000) >>> 24) / 255; + color.g = ((value & 0x00ff0000) >>> 16) / 255; + color.b = ((value & 0x0000ff00) >>> 8) / 255; + color.a = ((value & 0x000000ff)) / 255; + }; + Color.rgb888ToColor = function (color, value) { + color.r = ((value & 0x00ff0000) >>> 16) / 255; + color.g = ((value & 0x0000ff00) >>> 8) / 255; + color.b = ((value & 0x000000ff)) / 255; + }; + Color.fromString = function (hex) { + return new Color().setFromString(hex); + }; + Color.WHITE = new Color(1, 1, 1, 1); + Color.RED = new Color(1, 0, 0, 1); + Color.GREEN = new Color(0, 1, 0, 1); + Color.BLUE = new Color(0, 0, 1, 1); + Color.MAGENTA = new Color(1, 0, 1, 1); + return Color; + }()); + var MathUtils = /** @class */ (function () { + function MathUtils() { + } + MathUtils.clamp = function (value, min, max) { + if (value < min) + return min; + if (value > max) + return max; + return value; + }; + MathUtils.cosDeg = function (degrees) { + return Math.cos(degrees * MathUtils.degRad); + }; + MathUtils.sinDeg = function (degrees) { + return Math.sin(degrees * MathUtils.degRad); + }; + MathUtils.signum = function (value) { + return value > 0 ? 1 : value < 0 ? -1 : 0; + }; + MathUtils.toInt = function (x) { + return x > 0 ? Math.floor(x) : Math.ceil(x); + }; + MathUtils.cbrt = function (x) { + var y = Math.pow(Math.abs(x), 1 / 3); + return x < 0 ? -y : y; + }; + MathUtils.randomTriangular = function (min, max) { + return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5); + }; + MathUtils.randomTriangularWith = function (min, max, mode) { + var u = Math.random(); + var d = max - min; + if (u <= (mode - min) / d) + return min + Math.sqrt(u * d * (mode - min)); + return max - Math.sqrt((1 - u) * d * (max - mode)); + }; + MathUtils.isPowerOfTwo = function (value) { + return value && (value & (value - 1)) === 0; + }; + MathUtils.PI = 3.1415927; + MathUtils.PI2 = MathUtils.PI * 2; + MathUtils.radiansToDegrees = 180 / MathUtils.PI; + MathUtils.radDeg = MathUtils.radiansToDegrees; + MathUtils.degreesToRadians = MathUtils.PI / 180; + MathUtils.degRad = MathUtils.degreesToRadians; + return MathUtils; + }()); + var Interpolation = /** @class */ (function () { + function Interpolation() { + } + Interpolation.prototype.apply = function (start, end, a) { + return start + (end - start) * this.applyInternal(a); + }; + return Interpolation; + }()); + var Pow = /** @class */ (function (_super) { + __extends$f(Pow, _super); + function Pow(power) { + var _this = _super.call(this) || this; + _this.power = 2; + _this.power = power; + return _this; + } + Pow.prototype.applyInternal = function (a) { + if (a <= 0.5) + return Math.pow(a * 2, this.power) / 2; + return Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1; + }; + return Pow; + }(Interpolation)); + var PowOut = /** @class */ (function (_super) { + __extends$f(PowOut, _super); + function PowOut(power) { + return _super.call(this, power) || this; + } + PowOut.prototype.applyInternal = function (a) { + return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1; + }; + return PowOut; + }(Pow)); + var Utils = /** @class */ (function () { + function Utils() { + } + Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { + for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { + dest[j] = source[i]; + } + }; + Utils.arrayFill = function (array, fromIndex, toIndex, value) { + for (var i = fromIndex; i < toIndex; i++) + array[i] = value; + }; + Utils.setArraySize = function (array, size, value) { + if (value === void 0) { value = 0; } + var oldSize = array.length; + if (oldSize == size) + return array; + array.length = size; + if (oldSize < size) { + for (var i = oldSize; i < size; i++) + array[i] = value; + } + return array; + }; + Utils.ensureArrayCapacity = function (array, size, value) { + if (value === void 0) { value = 0; } + if (array.length >= size) + return array; + return Utils.setArraySize(array, size, value); + }; + Utils.newArray = function (size, defaultValue) { + var array = new Array(size); + for (var i = 0; i < size; i++) + array[i] = defaultValue; + return array; + }; + Utils.newFloatArray = function (size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) + return new Float32Array(size); + else { + var array = new Array(size); + for (var i = 0; i < array.length; i++) + array[i] = 0; + return array; + } + }; + Utils.newShortArray = function (size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) + return new Int16Array(size); + else { + var array = new Array(size); + for (var i = 0; i < array.length; i++) + array[i] = 0; + return array; + } + }; + Utils.toFloatArray = function (array) { + return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; + }; + Utils.toSinglePrecision = function (value) { + return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; + }; + // This function is used to fix WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109 + Utils.webkit602BugfixHelper = function (alpha, blend) { + }; + Utils.contains = function (array, element, identity) { + for (var i = 0; i < array.length; i++) + if (array[i] == element) + return true; + return false; + }; + Utils.enumValue = function (type, name) { + return type[name[0].toUpperCase() + name.slice(1)]; + }; + Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; + return Utils; + }()); + var DebugUtils = /** @class */ (function () { + function DebugUtils() { + } + DebugUtils.logBones = function (skeleton) { + for (var i = 0; i < skeleton.bones.length; i++) { + var bone = skeleton.bones[i]; + console.log(bone.data.name + ", " + bone.a + ", " + bone.b + ", " + bone.c + ", " + bone.d + ", " + bone.worldX + ", " + bone.worldY); + } + }; + return DebugUtils; + }()); + var Pool = /** @class */ (function () { + function Pool(instantiator) { + this.items = new Array(); + this.instantiator = instantiator; + } + Pool.prototype.obtain = function () { + return this.items.length > 0 ? this.items.pop() : this.instantiator(); + }; + Pool.prototype.free = function (item) { + if (item.reset) + item.reset(); + this.items.push(item); + }; + Pool.prototype.freeAll = function (items) { + for (var i = 0; i < items.length; i++) + this.free(items[i]); + }; + Pool.prototype.clear = function () { + this.items.length = 0; + }; + return Pool; + }()); + var Vector2 = /** @class */ (function () { + function Vector2(x, y) { + if (x === void 0) { x = 0; } + if (y === void 0) { y = 0; } + this.x = x; + this.y = y; + } + Vector2.prototype.set = function (x, y) { + this.x = x; + this.y = y; + return this; + }; + Vector2.prototype.length = function () { + var x = this.x; + var y = this.y; + return Math.sqrt(x * x + y * y); + }; + Vector2.prototype.normalize = function () { + var len = this.length(); + if (len != 0) { + this.x /= len; + this.y /= len; + } + return this; + }; + return Vector2; + }()); + var TimeKeeper = /** @class */ (function () { + function TimeKeeper() { + this.maxDelta = 0.064; + this.framesPerSecond = 0; + this.delta = 0; + this.totalTime = 0; + this.lastTime = Date.now() / 1000; + this.frameCount = 0; + this.frameTime = 0; + } + TimeKeeper.prototype.update = function () { + var now = Date.now() / 1000; + this.delta = now - this.lastTime; + this.frameTime += this.delta; + this.totalTime += this.delta; + if (this.delta > this.maxDelta) + this.delta = this.maxDelta; + this.lastTime = now; + this.frameCount++; + if (this.frameTime > 1) { + this.framesPerSecond = this.frameCount / this.frameTime; + this.frameTime = 0; + this.frameCount = 0; + } + }; + return TimeKeeper; + }()); + var WindowedMean = /** @class */ (function () { + function WindowedMean(windowSize) { + if (windowSize === void 0) { windowSize = 32; } + this.addedValues = 0; + this.lastValue = 0; + this.mean = 0; + this.dirty = true; + this.values = new Array(windowSize); + } + WindowedMean.prototype.hasEnoughData = function () { + return this.addedValues >= this.values.length; + }; + WindowedMean.prototype.addValue = function (value) { + if (this.addedValues < this.values.length) + this.addedValues++; + this.values[this.lastValue++] = value; + if (this.lastValue > this.values.length - 1) + this.lastValue = 0; + this.dirty = true; + }; + WindowedMean.prototype.getMean = function () { + if (this.hasEnoughData()) { + if (this.dirty) { + var mean = 0; + for (var i = 0; i < this.values.length; i++) + mean += this.values[i]; + this.mean = mean / this.values.length; + this.dirty = false; + } + return this.mean; + } + return 0; + }; + return WindowedMean; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$e = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** The base class for all attachments. */ + var Attachment = /** @class */ (function () { + function Attachment(name) { + if (!name) + throw new Error("name cannot be null."); + this.name = name; + } + return Attachment; + }()); + /** Base class for an attachment with vertices that are transformed by one or more bones and can be deformed by a slot's + * {@link Slot#deform}. */ + var VertexAttachment = /** @class */ (function (_super) { + __extends$e(VertexAttachment, _super); + function VertexAttachment(name) { + var _this = _super.call(this, name) || this; + /** The unique ID for this attachment. */ + _this.id = VertexAttachment.nextID++; + /** The maximum number of world vertex values that can be output by + * {@link #computeWorldVertices()} using the `count` parameter. */ + _this.worldVerticesLength = 0; + /** Deform keys for the deform attachment are also applied to this attachment. May be null if no deform keys should be applied. */ + _this.deformAttachment = _this; + return _this; + } + /** Transforms the attachment's local {@link #vertices} to world coordinates. If the slot's {@link Slot#deform} is + * not empty, it is used to deform the vertices. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. + * @param start The index of the first {@link #vertices} value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #worldVerticesLength} - `start`. + * @param worldVertices The output world vertices. Must have a length >= `offset` + `count` * + * `stride` / 2. + * @param offset The `worldVertices` index to begin writing values. + * @param stride The number of `worldVertices` entries between the value pairs written. */ + VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) { + count = offset + (count >> 1) * stride; + var skeleton = slot.bone.skeleton; + var deformArray = slot.deform; + var vertices = this.vertices; + var bones = this.bones; + if (!bones) { + if (deformArray.length > 0) + vertices = deformArray; + var bone = slot.bone; + var x = bone.worldX; + var y = bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) { + var vx = vertices[v_1], vy = vertices[v_1 + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + } + return; + } + var v = 0, skip = 0; + for (var i = 0; i < start; i += 2) { + var n = bones[v]; + v += n + 1; + skip += n; + } + var skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (var w = offset, b = skip * 3; w < count; w += stride) { + var wx = 0, wy = 0; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + else { + var deform = deformArray; + for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) { + var wx = 0, wy = 0; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + }; + /** Does not copy id (generated) or name (set on construction). **/ + VertexAttachment.prototype.copyTo = function (attachment) { + if (this.bones) { + attachment.bones = new Array(this.bones.length); + Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length); + } + else + attachment.bones = null; + if (this.vertices) { + attachment.vertices = Utils.newFloatArray(this.vertices.length); + Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length); + } + else + attachment.vertices = null; + attachment.worldVerticesLength = this.worldVerticesLength; + attachment.deformAttachment = this.deformAttachment; + }; + VertexAttachment.nextID = 0; + return VertexAttachment; + }(Attachment)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$d = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** A simple container for a list of timelines and a name. */ + var Animation = /** @class */ (function () { + function Animation(name, timelines, duration) { + if (!name) + throw new Error("name cannot be null."); + this.name = name; + this.setTimelines(timelines); + this.duration = duration; + } + Animation.prototype.setTimelines = function (timelines) { + if (!timelines) + throw new Error("timelines cannot be null."); + this.timelines = timelines; + this.timelineIds = new StringSet(); + for (var i = 0; i < timelines.length; i++) + this.timelineIds.addAll(timelines[i].getPropertyIds()); + }; + Animation.prototype.hasTimeline = function (ids) { + for (var i = 0; i < ids.length; i++) + if (this.timelineIds.contains(ids[i])) + return true; + return false; + }; + /** Applies all the animation's timelines to the specified skeleton. + * + * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. + * @param loop If true, the animation repeats after {@link #getDuration()}. + * @param events May be null to ignore fired events. */ + Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) { + if (!skeleton) + throw new Error("skeleton cannot be null."); + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) + lastTime %= this.duration; + } + var timelines = this.timelines; + for (var i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction); + }; + return Animation; + }()); + /** Controls how a timeline value is mixed with the setup pose value or current pose value when a timeline's `alpha` + * < 1. + * + * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */ + exports.MixBlend = void 0; + (function (MixBlend) { + /** Transitions from the setup value to the timeline value (the current value is not used). Before the first key, the setup + * value is set. */ + MixBlend[MixBlend["setup"] = 0] = "setup"; + /** Transitions from the current value to the timeline value. Before the first key, transitions from the current value to + * the setup value. Timelines which perform instant transitions, such as {@link DrawOrderTimeline} or + * {@link AttachmentTimeline}, use the setup value before the first key. + * + * `first` is intended for the first animations applied, not for animations layered on top of those. */ + MixBlend[MixBlend["first"] = 1] = "first"; + /** Transitions from the current value to the timeline value. No change is made before the first key (the current value is + * kept until the first key). + * + * `replace` is intended for animations layered on top of others, not for the first animations applied. */ + MixBlend[MixBlend["replace"] = 2] = "replace"; + /** Transitions from the current value to the current value plus the timeline value. No change is made before the first key + * (the current value is kept until the first key). + * + * `add` is intended for animations layered on top of others, not for the first animations applied. Properties + * keyed by additive animations must be set manually or by another animation before applying the additive animations, else + * the property values will increase continually. */ + MixBlend[MixBlend["add"] = 3] = "add"; + })(exports.MixBlend || (exports.MixBlend = {})); + /** Indicates whether a timeline's `alpha` is mixing out over time toward 0 (the setup or current pose value) or + * mixing in toward 1 (the timeline's value). + * + * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */ + exports.MixDirection = void 0; + (function (MixDirection) { + MixDirection[MixDirection["mixIn"] = 0] = "mixIn"; + MixDirection[MixDirection["mixOut"] = 1] = "mixOut"; + })(exports.MixDirection || (exports.MixDirection = {})); + var Property = { + rotate: 0, + x: 1, + y: 2, + scaleX: 3, + scaleY: 4, + shearX: 5, + shearY: 6, + rgb: 7, + alpha: 8, + rgb2: 9, + attachment: 10, + deform: 11, + event: 12, + drawOrder: 13, + ikConstraint: 14, + transformConstraint: 15, + pathConstraintPosition: 16, + pathConstraintSpacing: 17, + pathConstraintMix: 18 + }; + /** The interface for all timelines. */ + var Timeline = /** @class */ (function () { + function Timeline(frameCount, propertyIds) { + this.propertyIds = propertyIds; + this.frames = Utils.newFloatArray(frameCount * this.getFrameEntries()); + } + Timeline.prototype.getPropertyIds = function () { + return this.propertyIds; + }; + Timeline.prototype.getFrameEntries = function () { + return 1; + }; + Timeline.prototype.getFrameCount = function () { + return this.frames.length / this.getFrameEntries(); + }; + Timeline.prototype.getDuration = function () { + return this.frames[this.frames.length - this.getFrameEntries()]; + }; + Timeline.search1 = function (frames, time) { + var n = frames.length; + for (var i = 1; i < n; i++) + if (frames[i] > time) + return i - 1; + return n - 1; + }; + Timeline.search = function (frames, time, step) { + var n = frames.length; + for (var i = step; i < n; i += step) + if (frames[i] > time) + return i - step; + return n - step; + }; + return Timeline; + }()); + /** The base class for timelines that use interpolation between key frame values. */ + var CurveTimeline = /** @class */ (function (_super) { + __extends$d(CurveTimeline, _super); + function CurveTimeline(frameCount, bezierCount, propertyIds) { + var _this = _super.call(this, frameCount, propertyIds) || this; + _this.curves = Utils.newFloatArray(frameCount + bezierCount * 18 /*BEZIER_SIZE*/); + _this.curves[frameCount - 1] = 1 /*STEPPED*/; + return _this; + } + /** Sets the specified key frame to linear interpolation. */ + CurveTimeline.prototype.setLinear = function (frame) { + this.curves[frame] = 0 /*LINEAR*/; + }; + /** Sets the specified key frame to stepped interpolation. */ + CurveTimeline.prototype.setStepped = function (frame) { + this.curves[frame] = 1 /*STEPPED*/; + }; + /** Shrinks the storage for Bezier curves, for use when bezierCount (specified in the constructor) was larger + * than the actual number of Bezier curves. */ + CurveTimeline.prototype.shrink = function (bezierCount) { + var size = this.getFrameCount() + bezierCount * 18 /*BEZIER_SIZE*/; + if (this.curves.length > size) { + var newCurves = Utils.newFloatArray(size); + Utils.arrayCopy(this.curves, 0, newCurves, 0, size); + this.curves = newCurves; + } + }; + /** Stores the segments for the specified Bezier curve. For timelines that modify multiple values, there may be more than + * one curve per frame. + * @param bezier The ordinal of this Bezier curve for this timeline, between 0 and bezierCount - 1 (specified + * in the constructor), inclusive. + * @param frame Between 0 and frameCount - 1, inclusive. + * @param value The index of the value for this frame that this curve is used for. + * @param time1 The time for the first key. + * @param value1 The value for the first key. + * @param cx1 The time for the first Bezier handle. + * @param cy1 The value for the first Bezier handle. + * @param cx2 The time of the second Bezier handle. + * @param cy2 The value for the second Bezier handle. + * @param time2 The time for the second key. + * @param value2 The value for the second key. */ + CurveTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { + var curves = this.curves; + var i = this.getFrameCount() + bezier * 18 /*BEZIER_SIZE*/; + if (value == 0) + curves[frame] = 2 /*BEZIER*/ + i; + var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03; + var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006; + var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; + var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667; + var x = time1 + dx, y = value1 + dy; + for (var n = i + 18 /*BEZIER_SIZE*/; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dx += ddx; + dy += ddy; + ddx += dddx; + ddy += dddy; + x += dx; + y += dy; + } + }; + /** Returns the Bezier interpolated value for the specified time. + * @param frameIndex The index into {@link #getFrames()} for the values of the frame before time. + * @param valueOffset The offset from frameIndex to the value this curve is used for. + * @param i The index of the Bezier segments. See {@link #getCurveType(int)}. */ + CurveTimeline.prototype.getBezierValue = function (time, frameIndex, valueOffset, i) { + var curves = this.curves; + if (curves[i] > time) { + var x_1 = this.frames[frameIndex], y_1 = this.frames[frameIndex + valueOffset]; + return y_1 + (time - x_1) / (curves[i] - x_1) * (curves[i + 1] - y_1); + } + var n = i + 18 /*BEZIER_SIZE*/; + for (i += 2; i < n; i += 2) { + if (curves[i] >= time) { + var x_2 = curves[i - 2], y_2 = curves[i - 1]; + return y_2 + (time - x_2) / (curves[i] - x_2) * (curves[i + 1] - y_2); + } + } + frameIndex += this.getFrameEntries(); + var x = curves[n - 2], y = curves[n - 1]; + return y + (time - x) / (this.frames[frameIndex] - x) * (this.frames[frameIndex + valueOffset] - y); + }; + return CurveTimeline; + }(Timeline)); + var CurveTimeline1 = /** @class */ (function (_super) { + __extends$d(CurveTimeline1, _super); + function CurveTimeline1(frameCount, bezierCount, propertyId) { + return _super.call(this, frameCount, bezierCount, [propertyId]) || this; + } + CurveTimeline1.prototype.getFrameEntries = function () { + return 2 /*ENTRIES*/; + }; + /** Sets the time and value for the specified frame. + * @param frame Between 0 and frameCount, inclusive. + * @param time The frame time in seconds. */ + CurveTimeline1.prototype.setFrame = function (frame, time, value) { + frame <<= 1; + this.frames[frame] = time; + this.frames[frame + 1 /*VALUE*/] = value; + }; + /** Returns the interpolated value for the specified time. */ + CurveTimeline1.prototype.getCurveValue = function (time) { + var frames = this.frames; + var i = frames.length - 2; + for (var ii = 2; ii <= i; ii += 2) { + if (frames[ii] > time) { + i = ii - 2; + break; + } + } + var curveType = this.curves[i >> 1]; + switch (curveType) { + case 0 /*LINEAR*/: + var before = frames[i], value = frames[i + 1 /*VALUE*/]; + return value + (time - before) / (frames[i + 2 /*ENTRIES*/] - before) * (frames[i + 2 /*ENTRIES*/ + 1 /*VALUE*/] - value); + case 1 /*STEPPED*/: + return frames[i + 1 /*VALUE*/]; + } + return this.getBezierValue(time, i, 1 /*VALUE*/, curveType - 2 /*BEZIER*/); + }; + return CurveTimeline1; + }(CurveTimeline)); + /** The base class for a {@link CurveTimeline} which sets two properties. */ + var CurveTimeline2 = /** @class */ (function (_super) { + __extends$d(CurveTimeline2, _super); + /** @param bezierCount The maximum number of Bezier curves. See {@link #shrink(int)}. + * @param propertyIds Unique identifiers for the properties the timeline modifies. */ + function CurveTimeline2(frameCount, bezierCount, propertyId1, propertyId2) { + return _super.call(this, frameCount, bezierCount, [propertyId1, propertyId2]) || this; + } + CurveTimeline2.prototype.getFrameEntries = function () { + return 3 /*ENTRIES*/; + }; + /** Sets the time and values for the specified frame. + * @param frame Between 0 and frameCount, inclusive. + * @param time The frame time in seconds. */ + CurveTimeline2.prototype.setFrame = function (frame, time, value1, value2) { + frame *= 3 /*ENTRIES*/; + this.frames[frame] = time; + this.frames[frame + 1 /*VALUE1*/] = value1; + this.frames[frame + 2 /*VALUE2*/] = value2; + }; + return CurveTimeline2; + }(CurveTimeline)); + /** Changes a bone's local {@link Bone#rotation}. */ + var RotateTimeline = /** @class */ (function (_super) { + __extends$d(RotateTimeline, _super); + function RotateTimeline(frameCount, bezierCount, boneIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.rotate + "|" + boneIndex) || this; + _this.boneIndex = 0; + _this.boneIndex = boneIndex; + return _this; + } + RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + bone.rotation = bone.data.rotation; + return; + case exports.MixBlend.first: + bone.rotation += (bone.data.rotation - bone.rotation) * alpha; + } + return; + } + var r = this.getCurveValue(time); + switch (blend) { + case exports.MixBlend.setup: + bone.rotation = bone.data.rotation + r * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + r += bone.data.rotation - bone.rotation; + case exports.MixBlend.add: + bone.rotation += r * alpha; + } + }; + return RotateTimeline; + }(CurveTimeline1)); + /** Changes a bone's local {@link Bone#x} and {@link Bone#y}. */ + var TranslateTimeline = /** @class */ (function (_super) { + __extends$d(TranslateTimeline, _super); + function TranslateTimeline(frameCount, bezierCount, boneIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex, Property.y + "|" + boneIndex) || this; + _this.boneIndex = 0; + _this.boneIndex = boneIndex; + return _this; + } + TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + bone.x = bone.data.x; + bone.y = bone.data.y; + return; + case exports.MixBlend.first: + bone.x += (bone.data.x - bone.x) * alpha; + bone.y += (bone.data.y - bone.y) * alpha; + } + return; + } + var x = 0, y = 0; + var i = Timeline.search(frames, time, 3 /*ENTRIES*/); + var curveType = this.curves[i / 3 /*ENTRIES*/]; + switch (curveType) { + case 0 /*LINEAR*/: + var before = frames[i]; + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; + var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before); + x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t; + y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t; + break; + case 1 /*STEPPED*/: + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; + break; + default: + x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/); + y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + } + switch (blend) { + case exports.MixBlend.setup: + bone.x = bone.data.x + x * alpha; + bone.y = bone.data.y + y * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + bone.x += (bone.data.x + x - bone.x) * alpha; + bone.y += (bone.data.y + y - bone.y) * alpha; + break; + case exports.MixBlend.add: + bone.x += x * alpha; + bone.y += y * alpha; + } + }; + return TranslateTimeline; + }(CurveTimeline2)); + /** Changes a bone's local {@link Bone#x}. */ + var TranslateXTimeline = /** @class */ (function (_super) { + __extends$d(TranslateXTimeline, _super); + function TranslateXTimeline(frameCount, bezierCount, boneIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex) || this; + _this.boneIndex = 0; + _this.boneIndex = boneIndex; + return _this; + } + TranslateXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + bone.x = bone.data.x; + return; + case exports.MixBlend.first: + bone.x += (bone.data.x - bone.x) * alpha; + } + return; + } + var x = this.getCurveValue(time); + switch (blend) { + case exports.MixBlend.setup: + bone.x = bone.data.x + x * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + bone.x += (bone.data.x + x - bone.x) * alpha; + break; + case exports.MixBlend.add: + bone.x += x * alpha; + } + }; + return TranslateXTimeline; + }(CurveTimeline1)); + /** Changes a bone's local {@link Bone#x}. */ + var TranslateYTimeline = /** @class */ (function (_super) { + __extends$d(TranslateYTimeline, _super); + function TranslateYTimeline(frameCount, bezierCount, boneIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.y + "|" + boneIndex) || this; + _this.boneIndex = 0; + _this.boneIndex = boneIndex; + return _this; + } + TranslateYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + bone.y = bone.data.y; + return; + case exports.MixBlend.first: + bone.y += (bone.data.y - bone.y) * alpha; + } + return; + } + var y = this.getCurveValue(time); + switch (blend) { + case exports.MixBlend.setup: + bone.y = bone.data.y + y * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + bone.y += (bone.data.y + y - bone.y) * alpha; + break; + case exports.MixBlend.add: + bone.y += y * alpha; + } + }; + return TranslateYTimeline; + }(CurveTimeline1)); + /** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */ + var ScaleTimeline = /** @class */ (function (_super) { + __extends$d(ScaleTimeline, _super); + function ScaleTimeline(frameCount, bezierCount, boneIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex, Property.scaleY + "|" + boneIndex) || this; + _this.boneIndex = 0; + _this.boneIndex = boneIndex; + return _this; + } + ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + bone.scaleX = bone.data.scaleX; + bone.scaleY = bone.data.scaleY; + return; + case exports.MixBlend.first: + bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; + } + return; + } + var x, y; + var i = Timeline.search(frames, time, 3 /*ENTRIES*/); + var curveType = this.curves[i / 3 /*ENTRIES*/]; + switch (curveType) { + case 0 /*LINEAR*/: + var before = frames[i]; + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; + var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before); + x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t; + y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t; + break; + case 1 /*STEPPED*/: + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; + break; + default: + x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/); + y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + } + x *= bone.data.scaleX; + y *= bone.data.scaleY; + if (alpha == 1) { + if (blend == exports.MixBlend.add) { + bone.scaleX += x - bone.data.scaleX; + bone.scaleY += y - bone.data.scaleY; + } + else { + bone.scaleX = x; + bone.scaleY = y; + } + } + else { + var bx = 0, by = 0; + if (direction == exports.MixDirection.mixOut) { + switch (blend) { + case exports.MixBlend.setup: + bx = bone.data.scaleX; + by = bone.data.scaleY; + bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha; + bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + bx = bone.scaleX; + by = bone.scaleY; + bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha; + bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; + break; + case exports.MixBlend.add: + bx = bone.scaleX; + by = bone.scaleY; + bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bone.data.scaleX) * alpha; + bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - bone.data.scaleY) * alpha; + } + } + else { + switch (blend) { + case exports.MixBlend.setup: + bx = Math.abs(bone.data.scaleX) * MathUtils.signum(x); + by = Math.abs(bone.data.scaleY) * MathUtils.signum(y); + bone.scaleX = bx + (x - bx) * alpha; + bone.scaleY = by + (y - by) * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + bx = Math.abs(bone.scaleX) * MathUtils.signum(x); + by = Math.abs(bone.scaleY) * MathUtils.signum(y); + bone.scaleX = bx + (x - bx) * alpha; + bone.scaleY = by + (y - by) * alpha; + break; + case exports.MixBlend.add: + bx = MathUtils.signum(x); + by = MathUtils.signum(y); + bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; + bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; + } + } + } + }; + return ScaleTimeline; + }(CurveTimeline2)); + /** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */ + var ScaleXTimeline = /** @class */ (function (_super) { + __extends$d(ScaleXTimeline, _super); + function ScaleXTimeline(frameCount, bezierCount, boneIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex) || this; + _this.boneIndex = 0; + _this.boneIndex = boneIndex; + return _this; + } + ScaleXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + bone.scaleX = bone.data.scaleX; + return; + case exports.MixBlend.first: + bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; + } + return; + } + var x = this.getCurveValue(time) * bone.data.scaleX; + if (alpha == 1) { + if (blend == exports.MixBlend.add) + bone.scaleX += x - bone.data.scaleX; + else + bone.scaleX = x; + } + else { + // Mixing out uses sign of setup or current pose, else use sign of key. + var bx = 0; + if (direction == exports.MixDirection.mixOut) { + switch (blend) { + case exports.MixBlend.setup: + bx = bone.data.scaleX; + bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + bx = bone.scaleX; + bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha; + break; + case exports.MixBlend.add: + bx = bone.scaleX; + bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bone.data.scaleX) * alpha; + } + } + else { + switch (blend) { + case exports.MixBlend.setup: + bx = Math.abs(bone.data.scaleX) * MathUtils.signum(x); + bone.scaleX = bx + (x - bx) * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + bx = Math.abs(bone.scaleX) * MathUtils.signum(x); + bone.scaleX = bx + (x - bx) * alpha; + break; + case exports.MixBlend.add: + bx = MathUtils.signum(x); + bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; + } + } + } + }; + return ScaleXTimeline; + }(CurveTimeline1)); + /** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */ + var ScaleYTimeline = /** @class */ (function (_super) { + __extends$d(ScaleYTimeline, _super); + function ScaleYTimeline(frameCount, bezierCount, boneIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.scaleY + "|" + boneIndex) || this; + _this.boneIndex = 0; + _this.boneIndex = boneIndex; + return _this; + } + ScaleYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + bone.scaleY = bone.data.scaleY; + return; + case exports.MixBlend.first: + bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; + } + return; + } + var y = this.getCurveValue(time) * bone.data.scaleY; + if (alpha == 1) { + if (blend == exports.MixBlend.add) + bone.scaleY += y - bone.data.scaleY; + else + bone.scaleY = y; + } + else { + // Mixing out uses sign of setup or current pose, else use sign of key. + var by = 0; + if (direction == exports.MixDirection.mixOut) { + switch (blend) { + case exports.MixBlend.setup: + by = bone.data.scaleY; + bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + by = bone.scaleY; + bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; + break; + case exports.MixBlend.add: + by = bone.scaleY; + bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - bone.data.scaleY) * alpha; + } + } + else { + switch (blend) { + case exports.MixBlend.setup: + by = Math.abs(bone.data.scaleY) * MathUtils.signum(y); + bone.scaleY = by + (y - by) * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + by = Math.abs(bone.scaleY) * MathUtils.signum(y); + bone.scaleY = by + (y - by) * alpha; + break; + case exports.MixBlend.add: + by = MathUtils.signum(y); + bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; + } + } + } + }; + return ScaleYTimeline; + }(CurveTimeline1)); + /** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ + var ShearTimeline = /** @class */ (function (_super) { + __extends$d(ShearTimeline, _super); + function ShearTimeline(frameCount, bezierCount, boneIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex, Property.shearY + "|" + boneIndex) || this; + _this.boneIndex = 0; + _this.boneIndex = boneIndex; + return _this; + } + ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + bone.shearX = bone.data.shearX; + bone.shearY = bone.data.shearY; + return; + case exports.MixBlend.first: + bone.shearX += (bone.data.shearX - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY - bone.shearY) * alpha; + } + return; + } + var x = 0, y = 0; + var i = Timeline.search(frames, time, 3 /*ENTRIES*/); + var curveType = this.curves[i / 3 /*ENTRIES*/]; + switch (curveType) { + case 0 /*LINEAR*/: + var before = frames[i]; + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; + var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before); + x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t; + y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t; + break; + case 1 /*STEPPED*/: + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; + break; + default: + x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/); + y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + } + switch (blend) { + case exports.MixBlend.setup: + bone.shearX = bone.data.shearX + x * alpha; + bone.shearY = bone.data.shearY + y * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; + break; + case exports.MixBlend.add: + bone.shearX += x * alpha; + bone.shearY += y * alpha; + } + }; + return ShearTimeline; + }(CurveTimeline2)); + /** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ + var ShearXTimeline = /** @class */ (function (_super) { + __extends$d(ShearXTimeline, _super); + function ShearXTimeline(frameCount, bezierCount, boneIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex) || this; + _this.boneIndex = 0; + _this.boneIndex = boneIndex; + return _this; + } + ShearXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + bone.shearX = bone.data.shearX; + return; + case exports.MixBlend.first: + bone.shearX += (bone.data.shearX - bone.shearX) * alpha; + } + return; + } + var x = this.getCurveValue(time); + switch (blend) { + case exports.MixBlend.setup: + bone.shearX = bone.data.shearX + x * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; + break; + case exports.MixBlend.add: + bone.shearX += x * alpha; + } + }; + return ShearXTimeline; + }(CurveTimeline1)); + /** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ + var ShearYTimeline = /** @class */ (function (_super) { + __extends$d(ShearYTimeline, _super); + function ShearYTimeline(frameCount, bezierCount, boneIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.shearY + "|" + boneIndex) || this; + _this.boneIndex = 0; + _this.boneIndex = boneIndex; + return _this; + } + ShearYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + bone.shearY = bone.data.shearY; + return; + case exports.MixBlend.first: + bone.shearY += (bone.data.shearY - bone.shearY) * alpha; + } + return; + } + var y = this.getCurveValue(time); + switch (blend) { + case exports.MixBlend.setup: + bone.shearY = bone.data.shearY + y * alpha; + break; + case exports.MixBlend.first: + case exports.MixBlend.replace: + bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; + break; + case exports.MixBlend.add: + bone.shearY += y * alpha; + } + }; + return ShearYTimeline; + }(CurveTimeline1)); + /** Changes a slot's {@link Slot#color}. */ + var RGBATimeline = /** @class */ (function (_super) { + __extends$d(RGBATimeline, _super); + function RGBATimeline(frameCount, bezierCount, slotIndex) { + var _this = _super.call(this, frameCount, bezierCount, [ + Property.rgb + "|" + slotIndex, + Property.alpha + "|" + slotIndex + ]) || this; + _this.slotIndex = 0; + _this.slotIndex = slotIndex; + return _this; + } + RGBATimeline.prototype.getFrameEntries = function () { + return 5 /*ENTRIES*/; + }; + /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */ + RGBATimeline.prototype.setFrame = function (frame, time, r, g, b, a) { + frame *= 5 /*ENTRIES*/; + this.frames[frame] = time; + this.frames[frame + 1 /*R*/] = r; + this.frames[frame + 2 /*G*/] = g; + this.frames[frame + 3 /*B*/] = b; + this.frames[frame + 4 /*A*/] = a; + }; + RGBATimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + var frames = this.frames; + var color = slot.color; + if (time < frames[0]) { + var setup = slot.data.color; + switch (blend) { + case exports.MixBlend.setup: + color.setFromColor(setup); + return; + case exports.MixBlend.first: + color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha); + } + return; + } + var r = 0, g = 0, b = 0, a = 0; + var i = Timeline.search(frames, time, 5 /*ENTRIES*/); + var curveType = this.curves[i / 5 /*ENTRIES*/]; + switch (curveType) { + case 0 /*LINEAR*/: + var before = frames[i]; + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + a = frames[i + 4 /*A*/]; + var t = (time - before) / (frames[i + 5 /*ENTRIES*/] - before); + r += (frames[i + 5 /*ENTRIES*/ + 1 /*R*/] - r) * t; + g += (frames[i + 5 /*ENTRIES*/ + 2 /*G*/] - g) * t; + b += (frames[i + 5 /*ENTRIES*/ + 3 /*B*/] - b) * t; + a += (frames[i + 5 /*ENTRIES*/ + 4 /*A*/] - a) * t; + break; + case 1 /*STEPPED*/: + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + a = frames[i + 4 /*A*/]; + break; + default: + r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/); + g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); + a = this.getBezierValue(time, i, 4 /*A*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/); + } + if (alpha == 1) + color.set(r, g, b, a); + else { + if (blend == exports.MixBlend.setup) + color.setFromColor(slot.data.color); + color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); + } + }; + return RGBATimeline; + }(CurveTimeline)); + /** Changes a slot's {@link Slot#color}. */ + var RGBTimeline = /** @class */ (function (_super) { + __extends$d(RGBTimeline, _super); + function RGBTimeline(frameCount, bezierCount, slotIndex) { + var _this = _super.call(this, frameCount, bezierCount, [ + Property.rgb + "|" + slotIndex + ]) || this; + _this.slotIndex = 0; + _this.slotIndex = slotIndex; + return _this; + } + RGBTimeline.prototype.getFrameEntries = function () { + return 4 /*ENTRIES*/; + }; + /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */ + RGBTimeline.prototype.setFrame = function (frame, time, r, g, b) { + frame <<= 2; + this.frames[frame] = time; + this.frames[frame + 1 /*R*/] = r; + this.frames[frame + 2 /*G*/] = g; + this.frames[frame + 3 /*B*/] = b; + }; + RGBTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + var frames = this.frames; + var color = slot.color; + if (time < frames[0]) { + var setup = slot.data.color; + switch (blend) { + case exports.MixBlend.setup: + color.r = setup.r; + color.g = setup.g; + color.b = setup.b; + return; + case exports.MixBlend.first: + color.r += (setup.r - color.r) * alpha; + color.g += (setup.g - color.g) * alpha; + color.b += (setup.b - color.b) * alpha; + } + return; + } + var r = 0, g = 0, b = 0; + var i = Timeline.search(frames, time, 4 /*ENTRIES*/); + var curveType = this.curves[i >> 2]; + switch (curveType) { + case 0 /*LINEAR*/: + var before = frames[i]; + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + var t = (time - before) / (frames[i + 4 /*ENTRIES*/] - before); + r += (frames[i + 4 /*ENTRIES*/ + 1 /*R*/] - r) * t; + g += (frames[i + 4 /*ENTRIES*/ + 2 /*G*/] - g) * t; + b += (frames[i + 4 /*ENTRIES*/ + 3 /*B*/] - b) * t; + break; + case 1 /*STEPPED*/: + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + break; + default: + r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/); + g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); + } + if (alpha == 1) { + color.r = r; + color.g = g; + color.b = b; + } + else { + if (blend == exports.MixBlend.setup) { + var setup = slot.data.color; + color.r = setup.r; + color.g = setup.g; + color.b = setup.b; + } + color.r += (r - color.r) * alpha; + color.g += (g - color.g) * alpha; + color.b += (b - color.b) * alpha; + } + }; + return RGBTimeline; + }(CurveTimeline)); + /** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ + var AlphaTimeline = /** @class */ (function (_super) { + __extends$d(AlphaTimeline, _super); + function AlphaTimeline(frameCount, bezierCount, slotIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.alpha + "|" + slotIndex) || this; + _this.slotIndex = 0; + _this.slotIndex = slotIndex; + return _this; + } + AlphaTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + var color = slot.color; + if (time < this.frames[0]) { // Time is before first frame. + var setup = slot.data.color; + switch (blend) { + case exports.MixBlend.setup: + color.a = setup.a; + return; + case exports.MixBlend.first: + color.a += (setup.a - color.a) * alpha; + } + return; + } + var a = this.getCurveValue(time); + if (alpha == 1) + color.a = a; + else { + if (blend == exports.MixBlend.setup) + color.a = slot.data.color.a; + color.a += (a - color.a) * alpha; + } + }; + return AlphaTimeline; + }(CurveTimeline1)); + /** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */ + var RGBA2Timeline = /** @class */ (function (_super) { + __extends$d(RGBA2Timeline, _super); + function RGBA2Timeline(frameCount, bezierCount, slotIndex) { + var _this = _super.call(this, frameCount, bezierCount, [ + Property.rgb + "|" + slotIndex, + Property.alpha + "|" + slotIndex, + Property.rgb2 + "|" + slotIndex + ]) || this; + _this.slotIndex = 0; + _this.slotIndex = slotIndex; + return _this; + } + RGBA2Timeline.prototype.getFrameEntries = function () { + return 8 /*ENTRIES*/; + }; + /** Sets the time in seconds, light, and dark colors for the specified key frame. */ + RGBA2Timeline.prototype.setFrame = function (frame, time, r, g, b, a, r2, g2, b2) { + frame <<= 3; + this.frames[frame] = time; + this.frames[frame + 1 /*R*/] = r; + this.frames[frame + 2 /*G*/] = g; + this.frames[frame + 3 /*B*/] = b; + this.frames[frame + 4 /*A*/] = a; + this.frames[frame + 5 /*R2*/] = r2; + this.frames[frame + 6 /*G2*/] = g2; + this.frames[frame + 7 /*B2*/] = b2; + }; + RGBA2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + var frames = this.frames; + var light = slot.color, dark = slot.darkColor; + if (time < frames[0]) { + var setupLight = slot.data.color, setupDark = slot.data.darkColor; + switch (blend) { + case exports.MixBlend.setup: + light.setFromColor(setupLight); + dark.r = setupDark.r; + dark.g = setupDark.g; + dark.b = setupDark.b; + return; + case exports.MixBlend.first: + light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha); + dark.r += (setupDark.r - dark.r) * alpha; + dark.g += (setupDark.g - dark.g) * alpha; + dark.b += (setupDark.b - dark.b) * alpha; + } + return; + } + var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; + var i = Timeline.search(frames, time, 8 /*ENTRIES*/); + var curveType = this.curves[i >> 3]; + switch (curveType) { + case 0 /*LINEAR*/: + var before = frames[i]; + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + a = frames[i + 4 /*A*/]; + r2 = frames[i + 5 /*R2*/]; + g2 = frames[i + 6 /*G2*/]; + b2 = frames[i + 7 /*B2*/]; + var t = (time - before) / (frames[i + 8 /*ENTRIES*/] - before); + r += (frames[i + 8 /*ENTRIES*/ + 1 /*R*/] - r) * t; + g += (frames[i + 8 /*ENTRIES*/ + 2 /*G*/] - g) * t; + b += (frames[i + 8 /*ENTRIES*/ + 3 /*B*/] - b) * t; + a += (frames[i + 8 /*ENTRIES*/ + 4 /*A*/] - a) * t; + r2 += (frames[i + 8 /*ENTRIES*/ + 5 /*R2*/] - r2) * t; + g2 += (frames[i + 8 /*ENTRIES*/ + 6 /*G2*/] - g2) * t; + b2 += (frames[i + 8 /*ENTRIES*/ + 7 /*B2*/] - b2) * t; + break; + case 1 /*STEPPED*/: + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + a = frames[i + 4 /*A*/]; + r2 = frames[i + 5 /*R2*/]; + g2 = frames[i + 6 /*G2*/]; + b2 = frames[i + 7 /*B2*/]; + break; + default: + r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/); + g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); + a = this.getBezierValue(time, i, 4 /*A*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/); + r2 = this.getBezierValue(time, i, 5 /*R2*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/); + g2 = this.getBezierValue(time, i, 6 /*G2*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/); + b2 = this.getBezierValue(time, i, 7 /*B2*/, curveType + 18 /*BEZIER_SIZE*/ * 6 - 2 /*BEZIER*/); + } + if (alpha == 1) { + light.set(r, g, b, a); + dark.r = r2; + dark.g = g2; + dark.b = b2; + } + else { + if (blend == exports.MixBlend.setup) { + light.setFromColor(slot.data.color); + var setupDark = slot.data.darkColor; + dark.r = setupDark.r; + dark.g = setupDark.g; + dark.b = setupDark.b; + } + light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); + dark.r += (r2 - dark.r) * alpha; + dark.g += (g2 - dark.g) * alpha; + dark.b += (b2 - dark.b) * alpha; + } + }; + return RGBA2Timeline; + }(CurveTimeline)); + /** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */ + var RGB2Timeline = /** @class */ (function (_super) { + __extends$d(RGB2Timeline, _super); + function RGB2Timeline(frameCount, bezierCount, slotIndex) { + var _this = _super.call(this, frameCount, bezierCount, [ + Property.rgb + "|" + slotIndex, + Property.rgb2 + "|" + slotIndex + ]) || this; + _this.slotIndex = 0; + _this.slotIndex = slotIndex; + return _this; + } + RGB2Timeline.prototype.getFrameEntries = function () { + return 7 /*ENTRIES*/; + }; + /** Sets the time in seconds, light, and dark colors for the specified key frame. */ + RGB2Timeline.prototype.setFrame = function (frame, time, r, g, b, r2, g2, b2) { + frame *= 7 /*ENTRIES*/; + this.frames[frame] = time; + this.frames[frame + 1 /*R*/] = r; + this.frames[frame + 2 /*G*/] = g; + this.frames[frame + 3 /*B*/] = b; + this.frames[frame + 4 /*R2*/] = r2; + this.frames[frame + 5 /*G2*/] = g2; + this.frames[frame + 6 /*B2*/] = b2; + }; + RGB2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + var frames = this.frames; + var light = slot.color, dark = slot.darkColor; + if (time < frames[0]) { + var setupLight = slot.data.color, setupDark = slot.data.darkColor; + switch (blend) { + case exports.MixBlend.setup: + light.r = setupLight.r; + light.g = setupLight.g; + light.b = setupLight.b; + dark.r = setupDark.r; + dark.g = setupDark.g; + dark.b = setupDark.b; + return; + case exports.MixBlend.first: + light.r += (setupLight.r - light.r) * alpha; + light.g += (setupLight.g - light.g) * alpha; + light.b += (setupLight.b - light.b) * alpha; + dark.r += (setupDark.r - dark.r) * alpha; + dark.g += (setupDark.g - dark.g) * alpha; + dark.b += (setupDark.b - dark.b) * alpha; + } + return; + } + var r = 0, g = 0, b = 0, r2 = 0, g2 = 0, b2 = 0; + var i = Timeline.search(frames, time, 7 /*ENTRIES*/); + var curveType = this.curves[i / 7 /*ENTRIES*/]; + switch (curveType) { + case 0 /*LINEAR*/: + var before = frames[i]; + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + r2 = frames[i + 4 /*R2*/]; + g2 = frames[i + 5 /*G2*/]; + b2 = frames[i + 6 /*B2*/]; + var t = (time - before) / (frames[i + 7 /*ENTRIES*/] - before); + r += (frames[i + 7 /*ENTRIES*/ + 1 /*R*/] - r) * t; + g += (frames[i + 7 /*ENTRIES*/ + 2 /*G*/] - g) * t; + b += (frames[i + 7 /*ENTRIES*/ + 3 /*B*/] - b) * t; + r2 += (frames[i + 7 /*ENTRIES*/ + 4 /*R2*/] - r2) * t; + g2 += (frames[i + 7 /*ENTRIES*/ + 5 /*G2*/] - g2) * t; + b2 += (frames[i + 7 /*ENTRIES*/ + 6 /*B2*/] - b2) * t; + break; + case 1 /*STEPPED*/: + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + r2 = frames[i + 4 /*R2*/]; + g2 = frames[i + 5 /*G2*/]; + b2 = frames[i + 6 /*B2*/]; + break; + default: + r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/); + g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); + r2 = this.getBezierValue(time, i, 4 /*R2*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/); + g2 = this.getBezierValue(time, i, 5 /*G2*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/); + b2 = this.getBezierValue(time, i, 6 /*B2*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/); + } + if (alpha == 1) { + light.r = r; + light.g = g; + light.b = b; + dark.r = r2; + dark.g = g2; + dark.b = b2; + } + else { + if (blend == exports.MixBlend.setup) { + var setupLight = slot.data.color, setupDark = slot.data.darkColor; + light.r = setupLight.r; + light.g = setupLight.g; + light.b = setupLight.b; + dark.r = setupDark.r; + dark.g = setupDark.g; + dark.b = setupDark.b; + } + light.r += (r - light.r) * alpha; + light.g += (g - light.g) * alpha; + light.b += (b - light.b) * alpha; + dark.r += (r2 - dark.r) * alpha; + dark.g += (g2 - dark.g) * alpha; + dark.b += (b2 - dark.b) * alpha; + } + }; + return RGB2Timeline; + }(CurveTimeline)); + /** Changes a slot's {@link Slot#attachment}. */ + var AttachmentTimeline = /** @class */ (function (_super) { + __extends$d(AttachmentTimeline, _super); + function AttachmentTimeline(frameCount, slotIndex) { + var _this = _super.call(this, frameCount, [ + Property.attachment + "|" + slotIndex + ]) || this; + _this.slotIndex = 0; + _this.slotIndex = slotIndex; + _this.attachmentNames = new Array(frameCount); + return _this; + } + AttachmentTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time in seconds and the attachment name for the specified key frame. */ + AttachmentTimeline.prototype.setFrame = function (frame, time, attachmentName) { + this.frames[frame] = time; + this.attachmentNames[frame] = attachmentName; + }; + AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + if (direction == exports.MixDirection.mixOut) { + if (blend == exports.MixBlend.setup) + this.setAttachment(skeleton, slot, slot.data.attachmentName); + return; + } + if (time < this.frames[0]) { + if (blend == exports.MixBlend.setup || blend == exports.MixBlend.first) + this.setAttachment(skeleton, slot, slot.data.attachmentName); + return; + } + this.setAttachment(skeleton, slot, this.attachmentNames[Timeline.search1(this.frames, time)]); + }; + AttachmentTimeline.prototype.setAttachment = function (skeleton, slot, attachmentName) { + slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); + }; + return AttachmentTimeline; + }(Timeline)); + /** Changes a slot's {@link Slot#deform} to deform a {@link VertexAttachment}. */ + var DeformTimeline = /** @class */ (function (_super) { + __extends$d(DeformTimeline, _super); + function DeformTimeline(frameCount, bezierCount, slotIndex, attachment) { + var _this = _super.call(this, frameCount, bezierCount, [ + Property.deform + "|" + slotIndex + "|" + attachment.id + ]) || this; + _this.slotIndex = 0; + _this.slotIndex = slotIndex; + _this.attachment = attachment; + _this.vertices = new Array(frameCount); + return _this; + } + DeformTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time in seconds and the vertices for the specified key frame. + * @param vertices Vertex positions for an unweighted VertexAttachment, or deform offsets if it has weights. */ + DeformTimeline.prototype.setFrame = function (frame, time, vertices) { + this.frames[frame] = time; + this.vertices[frame] = vertices; + }; + /** @param value1 Ignored (0 is used for a deform timeline). + * @param value2 Ignored (1 is used for a deform timeline). */ + DeformTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { + var curves = this.curves; + var i = this.getFrameCount() + bezier * 18 /*BEZIER_SIZE*/; + if (value == 0) + curves[frame] = 2 /*BEZIER*/ + i; + var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06; + var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018; + var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; + var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667; + var x = time1 + dx, y = dy; + for (var n = i + 18 /*BEZIER_SIZE*/; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dx += ddx; + dy += ddy; + ddx += dddx; + ddy += dddy; + x += dx; + y += dy; + } + }; + DeformTimeline.prototype.getCurvePercent = function (time, frame) { + var curves = this.curves; + var i = curves[frame]; + switch (i) { + case 0 /*LINEAR*/: + var x_3 = this.frames[frame]; + return (time - x_3) / (this.frames[frame + this.getFrameEntries()] - x_3); + case 1 /*STEPPED*/: + return 0; + } + i -= 2 /*BEZIER*/; + if (curves[i] > time) { + var x_4 = this.frames[frame]; + return curves[i + 1] * (time - x_4) / (curves[i] - x_4); + } + var n = i + 18 /*BEZIER_SIZE*/; + for (i += 2; i < n; i += 2) { + if (curves[i] >= time) { + var x_5 = curves[i - 2], y_3 = curves[i - 1]; + return y_3 + (time - x_5) / (curves[i] - x_5) * (curves[i + 1] - y_3); + } + } + var x = curves[n - 2], y = curves[n - 1]; + return y + (1 - y) * (time - x) / (this.frames[frame + this.getFrameEntries()] - x); + }; + DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + var slotAttachment = slot.getAttachment(); + if (!(slotAttachment instanceof VertexAttachment) || slotAttachment.deformAttachment != this.attachment) + return; + var deform = slot.deform; + if (deform.length == 0) + blend = exports.MixBlend.setup; + var vertices = this.vertices; + var vertexCount = vertices[0].length; + var frames = this.frames; + if (time < frames[0]) { + var vertexAttachment = slotAttachment; + switch (blend) { + case exports.MixBlend.setup: + deform.length = 0; + return; + case exports.MixBlend.first: + if (alpha == 1) { + deform.length = 0; + return; + } + deform.length = vertexCount; + if (!vertexAttachment.bones) { + // Unweighted vertex positions. + var setupVertices = vertexAttachment.vertices; + for (var i = 0; i < vertexCount; i++) + deform[i] += (setupVertices[i] - deform[i]) * alpha; + } + else { + // Weighted deform offsets. + alpha = 1 - alpha; + for (var i = 0; i < vertexCount; i++) + deform[i] *= alpha; + } + } + return; + } + deform.length = vertexCount; + if (time >= frames[frames.length - 1]) { // Time is after last frame. + var lastVertices = vertices[frames.length - 1]; + if (alpha == 1) { + if (blend == exports.MixBlend.add) { + var vertexAttachment = slotAttachment; + if (!vertexAttachment.bones) { + // Unweighted vertex positions, with alpha. + var setupVertices = vertexAttachment.vertices; + for (var i_1 = 0; i_1 < vertexCount; i_1++) + deform[i_1] += lastVertices[i_1] - setupVertices[i_1]; + } + else { + // Weighted deform offsets, with alpha. + for (var i_2 = 0; i_2 < vertexCount; i_2++) + deform[i_2] += lastVertices[i_2]; + } + } + else + Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount); + } + else { + switch (blend) { + case exports.MixBlend.setup: { + var vertexAttachment_1 = slotAttachment; + if (!vertexAttachment_1.bones) { + // Unweighted vertex positions, with alpha. + var setupVertices = vertexAttachment_1.vertices; + for (var i_3 = 0; i_3 < vertexCount; i_3++) { + var setup = setupVertices[i_3]; + deform[i_3] = setup + (lastVertices[i_3] - setup) * alpha; + } + } + else { + // Weighted deform offsets, with alpha. + for (var i_4 = 0; i_4 < vertexCount; i_4++) + deform[i_4] = lastVertices[i_4] * alpha; + } + break; + } + case exports.MixBlend.first: + case exports.MixBlend.replace: + for (var i_5 = 0; i_5 < vertexCount; i_5++) + deform[i_5] += (lastVertices[i_5] - deform[i_5]) * alpha; + break; + case exports.MixBlend.add: + var vertexAttachment = slotAttachment; + if (!vertexAttachment.bones) { + // Unweighted vertex positions, with alpha. + var setupVertices = vertexAttachment.vertices; + for (var i_6 = 0; i_6 < vertexCount; i_6++) + deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha; + } + else { + // Weighted deform offsets, with alpha. + for (var i_7 = 0; i_7 < vertexCount; i_7++) + deform[i_7] += lastVertices[i_7] * alpha; + } + } + } + return; + } + // Interpolate between the previous frame and the current frame. + var frame = Timeline.search1(frames, time); + var percent = this.getCurvePercent(time, frame); + var prevVertices = vertices[frame]; + var nextVertices = vertices[frame + 1]; + if (alpha == 1) { + if (blend == exports.MixBlend.add) { + var vertexAttachment = slotAttachment; + if (!vertexAttachment.bones) { + // Unweighted vertex positions, with alpha. + var setupVertices = vertexAttachment.vertices; + for (var i_8 = 0; i_8 < vertexCount; i_8++) { + var prev = prevVertices[i_8]; + deform[i_8] += prev + (nextVertices[i_8] - prev) * percent - setupVertices[i_8]; + } + } + else { + // Weighted deform offsets, with alpha. + for (var i_9 = 0; i_9 < vertexCount; i_9++) { + var prev = prevVertices[i_9]; + deform[i_9] += prev + (nextVertices[i_9] - prev) * percent; + } + } + } + else { + for (var i_10 = 0; i_10 < vertexCount; i_10++) { + var prev = prevVertices[i_10]; + deform[i_10] = prev + (nextVertices[i_10] - prev) * percent; + } + } + } + else { + switch (blend) { + case exports.MixBlend.setup: { + var vertexAttachment_2 = slotAttachment; + if (!vertexAttachment_2.bones) { + // Unweighted vertex positions, with alpha. + var setupVertices = vertexAttachment_2.vertices; + for (var i_11 = 0; i_11 < vertexCount; i_11++) { + var prev = prevVertices[i_11], setup = setupVertices[i_11]; + deform[i_11] = setup + (prev + (nextVertices[i_11] - prev) * percent - setup) * alpha; + } + } + else { + // Weighted deform offsets, with alpha. + for (var i_12 = 0; i_12 < vertexCount; i_12++) { + var prev = prevVertices[i_12]; + deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha; + } + } + break; + } + case exports.MixBlend.first: + case exports.MixBlend.replace: + for (var i_13 = 0; i_13 < vertexCount; i_13++) { + var prev = prevVertices[i_13]; + deform[i_13] += (prev + (nextVertices[i_13] - prev) * percent - deform[i_13]) * alpha; + } + break; + case exports.MixBlend.add: + var vertexAttachment = slotAttachment; + if (!vertexAttachment.bones) { + // Unweighted vertex positions, with alpha. + var setupVertices = vertexAttachment.vertices; + for (var i_14 = 0; i_14 < vertexCount; i_14++) { + var prev = prevVertices[i_14]; + deform[i_14] += (prev + (nextVertices[i_14] - prev) * percent - setupVertices[i_14]) * alpha; + } + } + else { + // Weighted deform offsets, with alpha. + for (var i_15 = 0; i_15 < vertexCount; i_15++) { + var prev = prevVertices[i_15]; + deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha; + } + } + } + } + }; + return DeformTimeline; + }(CurveTimeline)); + /** Fires an {@link Event} when specific animation times are reached. */ + var EventTimeline = /** @class */ (function (_super) { + __extends$d(EventTimeline, _super); + function EventTimeline(frameCount) { + var _this = _super.call(this, frameCount, EventTimeline.propertyIds) || this; + _this.events = new Array(frameCount); + return _this; + } + EventTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time in seconds and the event for the specified key frame. */ + EventTimeline.prototype.setFrame = function (frame, event) { + this.frames[frame] = event.time; + this.events[frame] = event; + }; + /** Fires events for frames > `lastTime` and <= `time`. */ + EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + if (!firedEvents) + return; + var frames = this.frames; + var frameCount = this.frames.length; + if (lastTime > time) { // Fire events after last time for looped animations. + this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction); + lastTime = -1; + } + else if (lastTime >= frames[frameCount - 1]) // Last time is after last frame. + return; + if (time < frames[0]) + return; // Time is before first frame. + var i = 0; + if (lastTime < frames[0]) + i = 0; + else { + i = Timeline.search1(frames, lastTime) + 1; + var frameTime = frames[i]; + while (i > 0) { // Fire multiple events with the same frame. + if (frames[i - 1] != frameTime) + break; + i--; + } + } + for (; i < frameCount && time >= frames[i]; i++) + firedEvents.push(this.events[i]); + }; + EventTimeline.propertyIds = ["" + Property.event]; + return EventTimeline; + }(Timeline)); + /** Changes a skeleton's {@link Skeleton#drawOrder}. */ + var DrawOrderTimeline = /** @class */ (function (_super) { + __extends$d(DrawOrderTimeline, _super); + function DrawOrderTimeline(frameCount) { + var _this = _super.call(this, frameCount, DrawOrderTimeline.propertyIds) || this; + _this.drawOrders = new Array(frameCount); + return _this; + } + DrawOrderTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + /** Sets the time in seconds and the draw order for the specified key frame. + * @param drawOrder For each slot in {@link Skeleton#slots}, the index of the new draw order. May be null to use setup pose + * draw order. */ + DrawOrderTimeline.prototype.setFrame = function (frame, time, drawOrder) { + this.frames[frame] = time; + this.drawOrders[frame] = drawOrder; + }; + DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + if (direction == exports.MixDirection.mixOut) { + if (blend == exports.MixBlend.setup) + Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); + return; + } + if (time < this.frames[0]) { + if (blend == exports.MixBlend.setup || blend == exports.MixBlend.first) + Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); + return; + } + var drawOrderToSetupIndex = this.drawOrders[Timeline.search1(this.frames, time)]; + if (!drawOrderToSetupIndex) + Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); + else { + var drawOrder = skeleton.drawOrder; + var slots = skeleton.slots; + for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) + drawOrder[i] = slots[drawOrderToSetupIndex[i]]; + } + }; + DrawOrderTimeline.propertyIds = ["" + Property.drawOrder]; + return DrawOrderTimeline; + }(Timeline)); + /** Changes an IK constraint's {@link IkConstraint#mix}, {@link IkConstraint#softness}, + * {@link IkConstraint#bendDirection}, {@link IkConstraint#stretch}, and {@link IkConstraint#compress}. */ + var IkConstraintTimeline = /** @class */ (function (_super) { + __extends$d(IkConstraintTimeline, _super); + function IkConstraintTimeline(frameCount, bezierCount, ikConstraintIndex) { + var _this = _super.call(this, frameCount, bezierCount, [ + Property.ikConstraint + "|" + ikConstraintIndex + ]) || this; + _this.ikConstraintIndex = ikConstraintIndex; + return _this; + } + IkConstraintTimeline.prototype.getFrameEntries = function () { + return 6 /*ENTRIES*/; + }; + /** Sets the time in seconds, mix, softness, bend direction, compress, and stretch for the specified key frame. */ + IkConstraintTimeline.prototype.setFrame = function (frame, time, mix, softness, bendDirection, compress, stretch) { + frame *= 6 /*ENTRIES*/; + this.frames[frame] = time; + this.frames[frame + 1 /*MIX*/] = mix; + this.frames[frame + 2 /*SOFTNESS*/] = softness; + this.frames[frame + 3 /*BEND_DIRECTION*/] = bendDirection; + this.frames[frame + 4 /*COMPRESS*/] = compress ? 1 : 0; + this.frames[frame + 5 /*STRETCH*/] = stretch ? 1 : 0; + }; + IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; + if (!constraint.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + constraint.mix = constraint.data.mix; + constraint.softness = constraint.data.softness; + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + return; + case exports.MixBlend.first: + constraint.mix += (constraint.data.mix - constraint.mix) * alpha; + constraint.softness += (constraint.data.softness - constraint.softness) * alpha; + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + } + return; + } + var mix = 0, softness = 0; + var i = Timeline.search(frames, time, 6 /*ENTRIES*/); + var curveType = this.curves[i / 6 /*ENTRIES*/]; + switch (curveType) { + case 0 /*LINEAR*/: + var before = frames[i]; + mix = frames[i + 1 /*MIX*/]; + softness = frames[i + 2 /*SOFTNESS*/]; + var t = (time - before) / (frames[i + 6 /*ENTRIES*/] - before); + mix += (frames[i + 6 /*ENTRIES*/ + 1 /*MIX*/] - mix) * t; + softness += (frames[i + 6 /*ENTRIES*/ + 2 /*SOFTNESS*/] - softness) * t; + break; + case 1 /*STEPPED*/: + mix = frames[i + 1 /*MIX*/]; + softness = frames[i + 2 /*SOFTNESS*/]; + break; + default: + mix = this.getBezierValue(time, i, 1 /*MIX*/, curveType - 2 /*BEZIER*/); + softness = this.getBezierValue(time, i, 2 /*SOFTNESS*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + } + if (blend == exports.MixBlend.setup) { + constraint.mix = constraint.data.mix + (mix - constraint.data.mix) * alpha; + constraint.softness = constraint.data.softness + (softness - constraint.data.softness) * alpha; + if (direction == exports.MixDirection.mixOut) { + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + } + else { + constraint.bendDirection = frames[i + 3 /*BEND_DIRECTION*/]; + constraint.compress = frames[i + 4 /*COMPRESS*/] != 0; + constraint.stretch = frames[i + 5 /*STRETCH*/] != 0; + } + } + else { + constraint.mix += (mix - constraint.mix) * alpha; + constraint.softness += (softness - constraint.softness) * alpha; + if (direction == exports.MixDirection.mixIn) { + constraint.bendDirection = frames[i + 3 /*BEND_DIRECTION*/]; + constraint.compress = frames[i + 4 /*COMPRESS*/] != 0; + constraint.stretch = frames[i + 5 /*STRETCH*/] != 0; + } + } + }; + return IkConstraintTimeline; + }(CurveTimeline)); + /** Changes a transform constraint's {@link TransformConstraint#rotateMix}, {@link TransformConstraint#translateMix}, + * {@link TransformConstraint#scaleMix}, and {@link TransformConstraint#shearMix}. */ + var TransformConstraintTimeline = /** @class */ (function (_super) { + __extends$d(TransformConstraintTimeline, _super); + function TransformConstraintTimeline(frameCount, bezierCount, transformConstraintIndex) { + var _this = _super.call(this, frameCount, bezierCount, [ + Property.transformConstraint + "|" + transformConstraintIndex + ]) || this; + _this.transformConstraintIndex = transformConstraintIndex; + return _this; + } + TransformConstraintTimeline.prototype.getFrameEntries = function () { + return 7 /*ENTRIES*/; + }; + /** The time in seconds, rotate mix, translate mix, scale mix, and shear mix for the specified key frame. */ + TransformConstraintTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) { + var frames = this.frames; + frame *= 7 /*ENTRIES*/; + frames[frame] = time; + frames[frame + 1 /*ROTATE*/] = mixRotate; + frames[frame + 2 /*X*/] = mixX; + frames[frame + 3 /*Y*/] = mixY; + frames[frame + 4 /*SCALEX*/] = mixScaleX; + frames[frame + 5 /*SCALEY*/] = mixScaleY; + frames[frame + 6 /*SHEARY*/] = mixShearY; + }; + TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; + if (!constraint.active) + return; + var frames = this.frames; + if (time < frames[0]) { + var data = constraint.data; + switch (blend) { + case exports.MixBlend.setup: + constraint.mixRotate = data.mixRotate; + constraint.mixX = data.mixX; + constraint.mixY = data.mixY; + constraint.mixScaleX = data.mixScaleX; + constraint.mixScaleY = data.mixScaleY; + constraint.mixShearY = data.mixShearY; + return; + case exports.MixBlend.first: + constraint.mixRotate += (data.mixRotate - constraint.mixRotate) * alpha; + constraint.mixX += (data.mixX - constraint.mixX) * alpha; + constraint.mixY += (data.mixY - constraint.mixY) * alpha; + constraint.mixScaleX += (data.mixScaleX - constraint.mixScaleX) * alpha; + constraint.mixScaleY += (data.mixScaleY - constraint.mixScaleY) * alpha; + constraint.mixShearY += (data.mixShearY - constraint.mixShearY) * alpha; + } + return; + } + var rotate, x, y, scaleX, scaleY, shearY; + var i = Timeline.search(frames, time, 7 /*ENTRIES*/); + var curveType = this.curves[i / 7 /*ENTRIES*/]; + switch (curveType) { + case 0 /*LINEAR*/: + var before = frames[i]; + rotate = frames[i + 1 /*ROTATE*/]; + x = frames[i + 2 /*X*/]; + y = frames[i + 3 /*Y*/]; + scaleX = frames[i + 4 /*SCALEX*/]; + scaleY = frames[i + 5 /*SCALEY*/]; + shearY = frames[i + 6 /*SHEARY*/]; + var t = (time - before) / (frames[i + 7 /*ENTRIES*/] - before); + rotate += (frames[i + 7 /*ENTRIES*/ + 1 /*ROTATE*/] - rotate) * t; + x += (frames[i + 7 /*ENTRIES*/ + 2 /*X*/] - x) * t; + y += (frames[i + 7 /*ENTRIES*/ + 3 /*Y*/] - y) * t; + scaleX += (frames[i + 7 /*ENTRIES*/ + 4 /*SCALEX*/] - scaleX) * t; + scaleY += (frames[i + 7 /*ENTRIES*/ + 5 /*SCALEY*/] - scaleY) * t; + shearY += (frames[i + 7 /*ENTRIES*/ + 6 /*SHEARY*/] - shearY) * t; + break; + case 1 /*STEPPED*/: + rotate = frames[i + 1 /*ROTATE*/]; + x = frames[i + 2 /*X*/]; + y = frames[i + 3 /*Y*/]; + scaleX = frames[i + 4 /*SCALEX*/]; + scaleY = frames[i + 5 /*SCALEY*/]; + shearY = frames[i + 6 /*SHEARY*/]; + break; + default: + rotate = this.getBezierValue(time, i, 1 /*ROTATE*/, curveType - 2 /*BEZIER*/); + x = this.getBezierValue(time, i, 2 /*X*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + y = this.getBezierValue(time, i, 3 /*Y*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); + scaleX = this.getBezierValue(time, i, 4 /*SCALEX*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/); + scaleY = this.getBezierValue(time, i, 5 /*SCALEY*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/); + shearY = this.getBezierValue(time, i, 6 /*SHEARY*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/); + } + if (blend == exports.MixBlend.setup) { + var data = constraint.data; + constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; + constraint.mixX = data.mixX + (x - data.mixX) * alpha; + constraint.mixY = data.mixY + (y - data.mixY) * alpha; + constraint.mixScaleX = data.mixScaleX + (scaleX - data.mixScaleX) * alpha; + constraint.mixScaleY = data.mixScaleY + (scaleY - data.mixScaleY) * alpha; + constraint.mixShearY = data.mixShearY + (shearY - data.mixShearY) * alpha; + } + else { + constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; + constraint.mixX += (x - constraint.mixX) * alpha; + constraint.mixY += (y - constraint.mixY) * alpha; + constraint.mixScaleX += (scaleX - constraint.mixScaleX) * alpha; + constraint.mixScaleY += (scaleY - constraint.mixScaleY) * alpha; + constraint.mixShearY += (shearY - constraint.mixShearY) * alpha; + } + }; + return TransformConstraintTimeline; + }(CurveTimeline)); + /** Changes a path constraint's {@link PathConstraint#position}. */ + var PathConstraintPositionTimeline = /** @class */ (function (_super) { + __extends$d(PathConstraintPositionTimeline, _super); + function PathConstraintPositionTimeline(frameCount, bezierCount, pathConstraintIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintPosition + "|" + pathConstraintIndex) || this; + _this.pathConstraintIndex = pathConstraintIndex; + return _this; + } + PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (!constraint.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + constraint.position = constraint.data.position; + return; + case exports.MixBlend.first: + constraint.position += (constraint.data.position - constraint.position) * alpha; + } + return; + } + var position = this.getCurveValue(time); + if (blend == exports.MixBlend.setup) + constraint.position = constraint.data.position + (position - constraint.data.position) * alpha; + else + constraint.position += (position - constraint.position) * alpha; + }; + return PathConstraintPositionTimeline; + }(CurveTimeline1)); + /** Changes a path constraint's {@link PathConstraint#spacing}. */ + var PathConstraintSpacingTimeline = /** @class */ (function (_super) { + __extends$d(PathConstraintSpacingTimeline, _super); + function PathConstraintSpacingTimeline(frameCount, bezierCount, pathConstraintIndex) { + var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintSpacing + "|" + pathConstraintIndex) || this; + /** The index of the path constraint slot in {@link Skeleton#getPathConstraints()} that will be changed. */ + _this.pathConstraintIndex = 0; + _this.pathConstraintIndex = pathConstraintIndex; + return _this; + } + PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (!constraint.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + constraint.spacing = constraint.data.spacing; + return; + case exports.MixBlend.first: + constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha; + } + return; + } + var spacing = this.getCurveValue(time); + if (blend == exports.MixBlend.setup) + constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha; + else + constraint.spacing += (spacing - constraint.spacing) * alpha; + }; + return PathConstraintSpacingTimeline; + }(CurveTimeline1)); + /** Changes a transform constraint's {@link PathConstraint#getMixRotate()}, {@link PathConstraint#getMixX()}, and + * {@link PathConstraint#getMixY()}. */ + var PathConstraintMixTimeline = /** @class */ (function (_super) { + __extends$d(PathConstraintMixTimeline, _super); + function PathConstraintMixTimeline(frameCount, bezierCount, pathConstraintIndex) { + var _this = _super.call(this, frameCount, bezierCount, [ + Property.pathConstraintMix + "|" + pathConstraintIndex + ]) || this; + /** The index of the path constraint slot in {@link Skeleton#getPathConstraints()} that will be changed. */ + _this.pathConstraintIndex = 0; + _this.pathConstraintIndex = pathConstraintIndex; + return _this; + } + PathConstraintMixTimeline.prototype.getFrameEntries = function () { + return 4 /*ENTRIES*/; + }; + PathConstraintMixTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY) { + var frames = this.frames; + frame <<= 2; + frames[frame] = time; + frames[frame + 1 /*ROTATE*/] = mixRotate; + frames[frame + 2 /*X*/] = mixX; + frames[frame + 3 /*Y*/] = mixY; + }; + PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (!constraint.active) + return; + var frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + constraint.mixRotate = constraint.data.mixRotate; + constraint.mixX = constraint.data.mixX; + constraint.mixY = constraint.data.mixY; + return; + case exports.MixBlend.first: + constraint.mixRotate += (constraint.data.mixRotate - constraint.mixRotate) * alpha; + constraint.mixX += (constraint.data.mixX - constraint.mixX) * alpha; + constraint.mixY += (constraint.data.mixY - constraint.mixY) * alpha; + } + return; + } + var rotate, x, y; + var i = Timeline.search(frames, time, 4 /*ENTRIES*/); + var curveType = this.curves[i >> 2]; + switch (curveType) { + case 0 /*LINEAR*/: + var before = frames[i]; + rotate = frames[i + 1 /*ROTATE*/]; + x = frames[i + 2 /*X*/]; + y = frames[i + 3 /*Y*/]; + var t = (time - before) / (frames[i + 4 /*ENTRIES*/] - before); + rotate += (frames[i + 4 /*ENTRIES*/ + 1 /*ROTATE*/] - rotate) * t; + x += (frames[i + 4 /*ENTRIES*/ + 2 /*X*/] - x) * t; + y += (frames[i + 4 /*ENTRIES*/ + 3 /*Y*/] - y) * t; + break; + case 1 /*STEPPED*/: + rotate = frames[i + 1 /*ROTATE*/]; + x = frames[i + 2 /*X*/]; + y = frames[i + 3 /*Y*/]; + break; + default: + rotate = this.getBezierValue(time, i, 1 /*ROTATE*/, curveType - 2 /*BEZIER*/); + x = this.getBezierValue(time, i, 2 /*X*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + y = this.getBezierValue(time, i, 3 /*Y*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); + } + if (blend == exports.MixBlend.setup) { + var data = constraint.data; + constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; + constraint.mixX = data.mixX + (x - data.mixX) * alpha; + constraint.mixY = data.mixY + (y - data.mixY) * alpha; + } + else { + constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; + constraint.mixX += (x - constraint.mixX) * alpha; + constraint.mixY += (y - constraint.mixY) * alpha; + } + }; + return PathConstraintMixTimeline; + }(CurveTimeline)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Applies animations over time, queues animations for later playback, mixes (crossfading) between animations, and applies + * multiple animations on top of each other (layering). + * + * See [Applying Animations](http://esotericsoftware.com/spine-applying-animations/) in the Spine Runtimes Guide. */ + var AnimationState = /** @class */ (function () { + function AnimationState(data) { + /** The list of tracks that currently have animations, which may contain null entries. */ + this.tracks = new Array(); + /** Multiplier for the delta time when the animation state is updated, causing time for all animations and mixes to play slower + * or faster. Defaults to 1. + * + * See TrackEntry {@link TrackEntry#timeScale} for affecting a single animation. */ + this.timeScale = 1; + this.unkeyedState = 0; + this.events = new Array(); + this.listeners = new Array(); + this.queue = new EventQueue(this); + this.propertyIDs = new StringSet(); + this.animationsChanged = false; + this.trackEntryPool = new Pool(function () { return new TrackEntry(); }); + this.data = data; + } + AnimationState.emptyAnimation = function () { + if (!_emptyAnimation) + _emptyAnimation = new Animation("", [], 0); + return _emptyAnimation; + }; + /** Increments each track entry {@link TrackEntry#trackTime()}, setting queued animations as current if needed. */ + AnimationState.prototype.update = function (delta) { + delta *= this.timeScale; + var tracks = this.tracks; + for (var i = 0, n = tracks.length; i < n; i++) { + var current = tracks[i]; + if (!current) + continue; + current.animationLast = current.nextAnimationLast; + current.trackLast = current.nextTrackLast; + var currentDelta = delta * current.timeScale; + if (current.delay > 0) { + current.delay -= currentDelta; + if (current.delay > 0) + continue; + currentDelta = -current.delay; + current.delay = 0; + } + var next = current.next; + if (next) { + // When the next entry's delay is passed, change to the next entry, preserving leftover time. + var nextTime = current.trackLast - next.delay; + if (nextTime >= 0) { + next.delay = 0; + next.trackTime += current.timeScale == 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale; + current.trackTime += currentDelta; + this.setCurrent(i, next, true); + while (next.mixingFrom) { + next.mixTime += delta; + next = next.mixingFrom; + } + continue; + } + } + else if (current.trackLast >= current.trackEnd && !current.mixingFrom) { + tracks[i] = null; + this.queue.end(current); + this.clearNext(current); + continue; + } + if (current.mixingFrom && this.updateMixingFrom(current, delta)) { + // End mixing from entries once all have completed. + var from = current.mixingFrom; + current.mixingFrom = null; + if (from) + from.mixingTo = null; + while (from) { + this.queue.end(from); + from = from.mixingFrom; + } + } + current.trackTime += currentDelta; + } + this.queue.drain(); + }; + /** Returns true when all mixing from entries are complete. */ + AnimationState.prototype.updateMixingFrom = function (to, delta) { + var from = to.mixingFrom; + if (!from) + return true; + var finished = this.updateMixingFrom(from, delta); + from.animationLast = from.nextAnimationLast; + from.trackLast = from.nextTrackLast; + // Require mixTime > 0 to ensure the mixing from entry was applied at least once. + if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { + // Require totalAlpha == 0 to ensure mixing is complete, unless mixDuration == 0 (the transition is a single frame). + if (from.totalAlpha == 0 || to.mixDuration == 0) { + to.mixingFrom = from.mixingFrom; + if (from.mixingFrom) + from.mixingFrom.mixingTo = to; + to.interruptAlpha = from.interruptAlpha; + this.queue.end(from); + } + return finished; + } + from.trackTime += delta * from.timeScale; + to.mixTime += delta; + return false; + }; + /** Poses the skeleton using the track entry animations. There are no side effects other than invoking listeners, so the + * animation state can be applied to multiple skeletons to pose them identically. + * @returns True if any animations were applied. */ + AnimationState.prototype.apply = function (skeleton) { + if (!skeleton) + throw new Error("skeleton cannot be null."); + if (this.animationsChanged) + this._animationsChanged(); + var events = this.events; + var tracks = this.tracks; + var applied = false; + for (var i_1 = 0, n_1 = tracks.length; i_1 < n_1; i_1++) { + var current = tracks[i_1]; + if (!current || current.delay > 0) + continue; + applied = true; + var blend = i_1 == 0 ? exports.MixBlend.first : current.mixBlend; + // Apply mixing from entries first. + var mix = current.alpha; + if (current.mixingFrom) + mix *= this.applyMixingFrom(current, skeleton, blend); + else if (current.trackTime >= current.trackEnd && !current.next) + mix = 0; + // Apply current entry. + var animationLast = current.animationLast, animationTime = current.getAnimationTime(), applyTime = animationTime; + var applyEvents = events; + if (current.reverse) { + applyTime = current.animation.duration - applyTime; + applyEvents = null; + } + var timelines = current.animation.timelines; + var timelineCount = timelines.length; + if ((i_1 == 0 && mix == 1) || blend == exports.MixBlend.add) { + for (var ii = 0; ii < timelineCount; ii++) { + // Fixes issue #302 on IOS9 where mix, blend sometimes became undefined and caused assets + // to sometimes stop rendering when using color correction, as their RGBA values become NaN. + // (https://github.com/pixijs/pixi-spine/issues/302) + Utils.webkit602BugfixHelper(mix, blend); + var timeline = timelines[ii]; + if (timeline instanceof AttachmentTimeline) + this.applyAttachmentTimeline(timeline, skeleton, applyTime, blend, true); + else + timeline.apply(skeleton, animationLast, applyTime, applyEvents, mix, blend, exports.MixDirection.mixIn); + } + } + else { + var timelineMode = current.timelineMode; + var firstFrame = current.timelinesRotation.length != timelineCount << 1; + if (firstFrame) + current.timelinesRotation.length = timelineCount << 1; + for (var ii = 0; ii < timelineCount; ii++) { + var timeline_1 = timelines[ii]; + var timelineBlend = timelineMode[ii] == SUBSEQUENT ? blend : exports.MixBlend.setup; + if (timeline_1 instanceof RotateTimeline) { + this.applyRotateTimeline(timeline_1, skeleton, applyTime, mix, timelineBlend, current.timelinesRotation, ii << 1, firstFrame); + } + else if (timeline_1 instanceof AttachmentTimeline) { + this.applyAttachmentTimeline(timeline_1, skeleton, applyTime, blend, true); + } + else { + // This fixes the WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109 + Utils.webkit602BugfixHelper(mix, blend); + timeline_1.apply(skeleton, animationLast, applyTime, applyEvents, mix, timelineBlend, exports.MixDirection.mixIn); + } + } + } + this.queueEvents(current, animationTime); + events.length = 0; + current.nextAnimationLast = animationTime; + current.nextTrackLast = current.trackTime; + } + // Set slots attachments to the setup pose, if needed. This occurs if an animation that is mixing out sets attachments so + // subsequent timelines see any deform, but the subsequent timelines don't set an attachment (eg they are also mixing out or + // the time is before the first key). + var setupState = this.unkeyedState + SETUP; + var slots = skeleton.slots; + for (var i = 0, n = skeleton.slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.attachmentState == setupState) { + var attachmentName = slot.data.attachmentName; + slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); + } + } + this.unkeyedState += 2; // Increasing after each use avoids the need to reset attachmentState for every slot. + this.queue.drain(); + return applied; + }; + AnimationState.prototype.applyMixingFrom = function (to, skeleton, blend) { + var from = to.mixingFrom; + if (from.mixingFrom) + this.applyMixingFrom(from, skeleton, blend); + var mix = 0; + if (to.mixDuration == 0) { // Single frame mix to undo mixingFrom changes. + mix = 1; + if (blend == exports.MixBlend.first) + blend = exports.MixBlend.setup; + } + else { + mix = to.mixTime / to.mixDuration; + if (mix > 1) + mix = 1; + if (blend != exports.MixBlend.first) + blend = from.mixBlend; + } + var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold; + var timelines = from.animation.timelines; + var timelineCount = timelines.length; + var alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix); + var animationLast = from.animationLast, animationTime = from.getAnimationTime(), applyTime = animationTime; + var events = null; + if (from.reverse) + applyTime = from.animation.duration - applyTime; + else if (mix < from.eventThreshold) + events = this.events; + if (blend == exports.MixBlend.add) { + for (var i = 0; i < timelineCount; i++) + timelines[i].apply(skeleton, animationLast, applyTime, events, alphaMix, blend, exports.MixDirection.mixOut); + } + else { + var timelineMode = from.timelineMode; + var timelineHoldMix = from.timelineHoldMix; + var firstFrame = from.timelinesRotation.length != timelineCount << 1; + if (firstFrame) + from.timelinesRotation.length = timelineCount << 1; + from.totalAlpha = 0; + for (var i = 0; i < timelineCount; i++) { + var timeline = timelines[i]; + var direction = exports.MixDirection.mixOut; + var timelineBlend = void 0; + var alpha = 0; + switch (timelineMode[i]) { + case SUBSEQUENT: + if (!drawOrder && timeline instanceof DrawOrderTimeline) + continue; + timelineBlend = blend; + alpha = alphaMix; + break; + case FIRST: + timelineBlend = exports.MixBlend.setup; + alpha = alphaMix; + break; + case HOLD_SUBSEQUENT: + timelineBlend = blend; + alpha = alphaHold; + break; + case HOLD_FIRST: + timelineBlend = exports.MixBlend.setup; + alpha = alphaHold; + break; + default: + timelineBlend = exports.MixBlend.setup; + var holdMix = timelineHoldMix[i]; + alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration); + break; + } + from.totalAlpha += alpha; + if (timeline instanceof RotateTimeline) + this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, timelineBlend, from.timelinesRotation, i << 1, firstFrame); + else if (timeline instanceof AttachmentTimeline) + this.applyAttachmentTimeline(timeline, skeleton, applyTime, timelineBlend, attachments); + else { + // This fixes the WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109 + Utils.webkit602BugfixHelper(alpha, blend); + if (drawOrder && timeline instanceof DrawOrderTimeline && timelineBlend == exports.MixBlend.setup) + direction = exports.MixDirection.mixIn; + timeline.apply(skeleton, animationLast, applyTime, events, alpha, timelineBlend, direction); + } + } + } + if (to.mixDuration > 0) + this.queueEvents(from, animationTime); + this.events.length = 0; + from.nextAnimationLast = animationTime; + from.nextTrackLast = from.trackTime; + return mix; + }; + AnimationState.prototype.applyAttachmentTimeline = function (timeline, skeleton, time, blend, attachments) { + var slot = skeleton.slots[timeline.slotIndex]; + if (!slot.bone.active) + return; + if (time < timeline.frames[0]) { // Time is before first frame. + if (blend == exports.MixBlend.setup || blend == exports.MixBlend.first) + this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments); + } + else + this.setAttachment(skeleton, slot, timeline.attachmentNames[Timeline.search1(timeline.frames, time)], attachments); + // If an attachment wasn't set (ie before the first frame or attachments is false), set the setup attachment later. + if (slot.attachmentState <= this.unkeyedState) + slot.attachmentState = this.unkeyedState + SETUP; + }; + AnimationState.prototype.setAttachment = function (skeleton, slot, attachmentName, attachments) { + slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); + if (attachments) + slot.attachmentState = this.unkeyedState + CURRENT; + }; + AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) { + if (firstFrame) + timelinesRotation[i] = 0; + if (alpha == 1) { + timeline.apply(skeleton, 0, time, null, 1, blend, exports.MixDirection.mixIn); + return; + } + var bone = skeleton.bones[timeline.boneIndex]; + if (!bone.active) + return; + var frames = timeline.frames; + var r1 = 0, r2 = 0; + if (time < frames[0]) { + switch (blend) { + case exports.MixBlend.setup: + bone.rotation = bone.data.rotation; + default: + return; + case exports.MixBlend.first: + r1 = bone.rotation; + r2 = bone.data.rotation; + } + } + else { + r1 = blend == exports.MixBlend.setup ? bone.data.rotation : bone.rotation; + r2 = bone.data.rotation + timeline.getCurveValue(time); + } + // Mix between rotations using the direction of the shortest route on the first frame while detecting crosses. + var total = 0, diff = r2 - r1; + diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360; + if (diff == 0) { + total = timelinesRotation[i]; + } + else { + var lastTotal = 0, lastDiff = 0; + if (firstFrame) { + lastTotal = 0; + lastDiff = diff; + } + else { + lastTotal = timelinesRotation[i]; // Angle and direction of mix, including loops. + lastDiff = timelinesRotation[i + 1]; // Difference between bones. + } + var current = diff > 0, dir = lastTotal >= 0; + // Detect cross at 0 (not 180). + if (MathUtils.signum(lastDiff) != MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { + // A cross after a 360 rotation is a loop. + if (Math.abs(lastTotal) > 180) + lastTotal += 360 * MathUtils.signum(lastTotal); + dir = current; + } + total = diff + lastTotal - lastTotal % 360; // Store loops as part of lastTotal. + if (dir != current) + total += 360 * MathUtils.signum(lastTotal); + timelinesRotation[i] = total; + } + timelinesRotation[i + 1] = diff; + bone.rotation = r1 + total * alpha; + }; + AnimationState.prototype.queueEvents = function (entry, animationTime) { + var animationStart = entry.animationStart, animationEnd = entry.animationEnd; + var duration = animationEnd - animationStart; + var trackLastWrapped = entry.trackLast % duration; + // Queue events before complete. + var events = this.events; + var i = 0, n = events.length; + for (; i < n; i++) { + var event_1 = events[i]; + if (event_1.time < trackLastWrapped) + break; + if (event_1.time > animationEnd) + continue; // Discard events outside animation start/end. + this.queue.event(entry, event_1); + } + // Queue complete if completed a loop iteration or the animation. + var complete = false; + if (entry.loop) + complete = duration == 0 || trackLastWrapped > entry.trackTime % duration; + else + complete = animationTime >= animationEnd && entry.animationLast < animationEnd; + if (complete) + this.queue.complete(entry); + // Queue events after complete. + for (; i < n; i++) { + var event_2 = events[i]; + if (event_2.time < animationStart) + continue; // Discard events outside animation start/end. + this.queue.event(entry, event_2); + } + }; + /** Removes all animations from all tracks, leaving skeletons in their current pose. + * + * It may be desired to use {@link AnimationState#setEmptyAnimation()} to mix the skeletons back to the setup pose, + * rather than leaving them in their current pose. */ + AnimationState.prototype.clearTracks = function () { + var oldDrainDisabled = this.queue.drainDisabled; + this.queue.drainDisabled = true; + for (var i = 0, n = this.tracks.length; i < n; i++) + this.clearTrack(i); + this.tracks.length = 0; + this.queue.drainDisabled = oldDrainDisabled; + this.queue.drain(); + }; + /** Removes all animations from the track, leaving skeletons in their current pose. + * + * It may be desired to use {@link AnimationState#setEmptyAnimation()} to mix the skeletons back to the setup pose, + * rather than leaving them in their current pose. */ + AnimationState.prototype.clearTrack = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return; + var current = this.tracks[trackIndex]; + if (!current) + return; + this.queue.end(current); + this.clearNext(current); + var entry = current; + while (true) { + var from = entry.mixingFrom; + if (!from) + break; + this.queue.end(from); + entry.mixingFrom = null; + entry.mixingTo = null; + entry = from; + } + this.tracks[current.trackIndex] = null; + this.queue.drain(); + }; + AnimationState.prototype.setCurrent = function (index, current, interrupt) { + var from = this.expandToIndex(index); + this.tracks[index] = current; + current.previous = null; + if (from) { + if (interrupt) + this.queue.interrupt(from); + current.mixingFrom = from; + from.mixingTo = current; + current.mixTime = 0; + // Store the interrupted mix percentage. + if (from.mixingFrom && from.mixDuration > 0) + current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration); + from.timelinesRotation.length = 0; // Reset rotation for mixing out, in case entry was mixed in. + } + this.queue.start(current); + }; + /** Sets an animation by name. + * + * See {@link #setAnimationWith()}. */ + AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { + if (loop === void 0) { loop = false; } + var animation = this.data.skeletonData.findAnimation(animationName); + if (!animation) + throw new Error("Animation not found: " + animationName); + return this.setAnimationWith(trackIndex, animation, loop); + }; + /** Sets the current animation for a track, discarding any queued animations. If the formerly current track entry was never + * applied to a skeleton, it is replaced (not mixed from). + * @param loop If true, the animation will repeat. If false it will not, instead its last frame is applied if played beyond its + * duration. In either case {@link TrackEntry#trackEnd} determines when the track is cleared. + * @returns A track entry to allow further customization of animation playback. References to the track entry must not be kept + * after the {@link AnimationStateListener#dispose()} event occurs. */ + AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { + if (loop === void 0) { loop = false; } + if (!animation) + throw new Error("animation cannot be null."); + var interrupt = true; + var current = this.expandToIndex(trackIndex); + if (current) { + if (current.nextTrackLast == -1) { + // Don't mix from an entry that was never applied. + this.tracks[trackIndex] = current.mixingFrom; + this.queue.interrupt(current); + this.queue.end(current); + this.clearNext(current); + current = current.mixingFrom; + interrupt = false; + } + else + this.clearNext(current); + } + var entry = this.trackEntry(trackIndex, animation, loop, current); + this.setCurrent(trackIndex, entry, interrupt); + this.queue.drain(); + return entry; + }; + /** Queues an animation by name. + * + * See {@link #addAnimationWith()}. */ + AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { + if (loop === void 0) { loop = false; } + if (delay === void 0) { delay = 0; } + var animation = this.data.skeletonData.findAnimation(animationName); + if (!animation) + throw new Error("Animation not found: " + animationName); + return this.addAnimationWith(trackIndex, animation, loop, delay); + }; + /** Adds an animation to be played after the current or last queued animation for a track. If the track is empty, it is + * equivalent to calling {@link #setAnimationWith()}. + * @param delay If > 0, sets {@link TrackEntry#delay}. If <= 0, the delay set is the duration of the previous track entry + * minus any mix duration (from the {@link AnimationStateData}) plus the specified `delay` (ie the mix + * ends at (`delay` = 0) or before (`delay` < 0) the previous track entry duration). If the + * previous entry is looping, its next loop completion is used instead of its duration. + * @returns A track entry to allow further customization of animation playback. References to the track entry must not be kept + * after the {@link AnimationStateListener#dispose()} event occurs. */ + AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { + if (loop === void 0) { loop = false; } + if (delay === void 0) { delay = 0; } + if (!animation) + throw new Error("animation cannot be null."); + var last = this.expandToIndex(trackIndex); + if (last) { + while (last.next) + last = last.next; + } + var entry = this.trackEntry(trackIndex, animation, loop, last); + if (!last) { + this.setCurrent(trackIndex, entry, true); + this.queue.drain(); + } + else { + last.next = entry; + entry.previous = last; + if (delay <= 0) + delay += last.getTrackComplete() - entry.mixDuration; + } + entry.delay = delay; + return entry; + }; + /** Sets an empty animation for a track, discarding any queued animations, and sets the track entry's + * {@link TrackEntry#mixduration}. An empty animation has no timelines and serves as a placeholder for mixing in or out. + * + * Mixing out is done by setting an empty animation with a mix duration using either {@link #setEmptyAnimation()}, + * {@link #setEmptyAnimations()}, or {@link #addEmptyAnimation()}. Mixing to an empty animation causes + * the previous animation to be applied less and less over the mix duration. Properties keyed in the previous animation + * transition to the value from lower tracks or to the setup pose value if no lower tracks key the property. A mix duration of + * 0 still mixes out over one frame. + * + * Mixing in is done by first setting an empty animation, then adding an animation using + * {@link #addAnimation()} and on the returned track entry, set the + * {@link TrackEntry#setMixDuration()}. Mixing from an empty animation causes the new animation to be applied more and + * more over the mix duration. Properties keyed in the new animation transition from the value from lower tracks or from the + * setup pose value if no lower tracks key the property to the value keyed in the new animation. */ + AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) { + if (mixDuration === void 0) { mixDuration = 0; } + var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation(), false); + entry.mixDuration = mixDuration; + entry.trackEnd = mixDuration; + return entry; + }; + /** Adds an empty animation to be played after the current or last queued animation for a track, and sets the track entry's + * {@link TrackEntry#mixDuration}. If the track is empty, it is equivalent to calling + * {@link #setEmptyAnimation()}. + * + * See {@link #setEmptyAnimation()}. + * @param delay If > 0, sets {@link TrackEntry#delay}. If <= 0, the delay set is the duration of the previous track entry + * minus any mix duration plus the specified `delay` (ie the mix ends at (`delay` = 0) or + * before (`delay` < 0) the previous track entry duration). If the previous entry is looping, its next + * loop completion is used instead of its duration. + * @return A track entry to allow further customization of animation playback. References to the track entry must not be kept + * after the {@link AnimationStateListener#dispose()} event occurs. */ + AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) { + if (mixDuration === void 0) { mixDuration = 0; } + if (delay === void 0) { delay = 0; } + var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay); + if (delay <= 0) + entry.delay += entry.mixDuration - mixDuration; + entry.mixDuration = mixDuration; + entry.trackEnd = mixDuration; + return entry; + }; + /** Sets an empty animation for every track, discarding any queued animations, and mixes to it over the specified mix + * duration. */ + AnimationState.prototype.setEmptyAnimations = function (mixDuration) { + if (mixDuration === void 0) { mixDuration = 0; } + var oldDrainDisabled = this.queue.drainDisabled; + this.queue.drainDisabled = true; + for (var i = 0, n = this.tracks.length; i < n; i++) { + var current = this.tracks[i]; + if (current) + this.setEmptyAnimation(current.trackIndex, mixDuration); + } + this.queue.drainDisabled = oldDrainDisabled; + this.queue.drain(); + }; + AnimationState.prototype.expandToIndex = function (index) { + if (index < this.tracks.length) + return this.tracks[index]; + Utils.ensureArrayCapacity(this.tracks, index + 1, null); + this.tracks.length = index + 1; + return null; + }; + /** @param last May be null. */ + AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) { + var entry = this.trackEntryPool.obtain(); + entry.trackIndex = trackIndex; + entry.animation = animation; + entry.loop = loop; + entry.holdPrevious = false; + entry.eventThreshold = 0; + entry.attachmentThreshold = 0; + entry.drawOrderThreshold = 0; + entry.animationStart = 0; + entry.animationEnd = animation.duration; + entry.animationLast = -1; + entry.nextAnimationLast = -1; + entry.delay = 0; + entry.trackTime = 0; + entry.trackLast = -1; + entry.nextTrackLast = -1; + entry.trackEnd = Number.MAX_VALUE; + entry.timeScale = 1; + entry.alpha = 1; + entry.interruptAlpha = 1; + entry.mixTime = 0; + entry.mixDuration = !last ? 0 : this.data.getMix(last.animation, animation); + entry.mixBlend = exports.MixBlend.replace; + return entry; + }; + /** Removes the {@link TrackEntry#getNext() next entry} and all entries after it for the specified entry. */ + AnimationState.prototype.clearNext = function (entry) { + var next = entry.next; + while (next) { + this.queue.dispose(next); + next = next.next; + } + entry.next = null; + }; + AnimationState.prototype._animationsChanged = function () { + this.animationsChanged = false; + this.propertyIDs.clear(); + var tracks = this.tracks; + for (var i = 0, n = tracks.length; i < n; i++) { + var entry = tracks[i]; + if (!entry) + continue; + while (entry.mixingFrom) + entry = entry.mixingFrom; + do { + if (!entry.mixingTo || entry.mixBlend != exports.MixBlend.add) + this.computeHold(entry); + entry = entry.mixingTo; + } while (entry); + } + }; + AnimationState.prototype.computeHold = function (entry) { + var to = entry.mixingTo; + var timelines = entry.animation.timelines; + var timelinesCount = entry.animation.timelines.length; + var timelineMode = entry.timelineMode; + timelineMode.length = timelinesCount; + var timelineHoldMix = entry.timelineHoldMix; + timelineHoldMix.length = 0; + var propertyIDs = this.propertyIDs; + if (to && to.holdPrevious) { + for (var i = 0; i < timelinesCount; i++) + timelineMode[i] = propertyIDs.addAll(timelines[i].getPropertyIds()) ? HOLD_FIRST : HOLD_SUBSEQUENT; + return; + } + outer: for (var i = 0; i < timelinesCount; i++) { + var timeline = timelines[i]; + var ids = timeline.getPropertyIds(); + if (!propertyIDs.addAll(ids)) + timelineMode[i] = SUBSEQUENT; + else if (!to || timeline instanceof AttachmentTimeline || timeline instanceof DrawOrderTimeline + || timeline instanceof EventTimeline || !to.animation.hasTimeline(ids)) { + timelineMode[i] = FIRST; + } + else { + for (var next = to.mixingTo; next; next = next.mixingTo) { + if (next.animation.hasTimeline(ids)) + continue; + if (entry.mixDuration > 0) { + timelineMode[i] = HOLD_MIX; + timelineHoldMix[i] = next; + continue outer; + } + break; + } + timelineMode[i] = HOLD_FIRST; + } + } + }; + /** Returns the track entry for the animation currently playing on the track, or null if no animation is currently playing. */ + AnimationState.prototype.getCurrent = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return null; + return this.tracks[trackIndex]; + }; + /** Adds a listener to receive events for all track entries. */ + AnimationState.prototype.addListener = function (listener) { + if (!listener) + throw new Error("listener cannot be null."); + this.listeners.push(listener); + }; + /** Removes the listener added with {@link #addListener()}. */ + AnimationState.prototype.removeListener = function (listener) { + var index = this.listeners.indexOf(listener); + if (index >= 0) + this.listeners.splice(index, 1); + }; + /** Removes all listeners added with {@link #addListener()}. */ + AnimationState.prototype.clearListeners = function () { + this.listeners.length = 0; + }; + /** Discards all listener notifications that have not yet been delivered. This can be useful to call from an + * {@link AnimationStateListener} when it is known that further notifications that may have been already queued for delivery + * are not wanted because new animations are being set. */ + AnimationState.prototype.clearListenerNotifications = function () { + this.queue.clear(); + }; + return AnimationState; + }()); + /** Stores settings and other state for the playback of an animation on an {@link AnimationState} track. + * + * References to a track entry must not be kept after the {@link AnimationStateListener#dispose()} event occurs. */ + var TrackEntry = /** @class */ (function () { + function TrackEntry() { + /** Controls how properties keyed in the animation are mixed with lower tracks. Defaults to {@link MixBlend#replace}, which + * replaces the values from the lower tracks with the animation values. {@link MixBlend#add} adds the animation values to + * the values from the lower tracks. + * + * The `mixBlend` can be set for a new track entry only before {@link AnimationState#apply()} is first + * called. */ + this.mixBlend = exports.MixBlend.replace; + this.timelineMode = new Array(); + this.timelineHoldMix = new Array(); + this.timelinesRotation = new Array(); + } + TrackEntry.prototype.reset = function () { + this.next = null; + this.previous = null; + this.mixingFrom = null; + this.mixingTo = null; + this.animation = null; + this.listener = null; + this.timelineMode.length = 0; + this.timelineHoldMix.length = 0; + this.timelinesRotation.length = 0; + }; + /** Uses {@link #trackTime} to compute the `animationTime`, which is between {@link #animationStart} + * and {@link #animationEnd}. When the `trackTime` is 0, the `animationTime` is equal to the + * `animationStart` time. */ + TrackEntry.prototype.getAnimationTime = function () { + if (this.loop) { + var duration = this.animationEnd - this.animationStart; + if (duration == 0) + return this.animationStart; + return (this.trackTime % duration) + this.animationStart; + } + return Math.min(this.trackTime + this.animationStart, this.animationEnd); + }; + TrackEntry.prototype.setAnimationLast = function (animationLast) { + this.animationLast = animationLast; + this.nextAnimationLast = animationLast; + }; + /** Returns true if at least one loop has been completed. + * + * See {@link AnimationStateListener#complete()}. */ + TrackEntry.prototype.isComplete = function () { + return this.trackTime >= this.animationEnd - this.animationStart; + }; + /** Resets the rotation directions for mixing this entry's rotate timelines. This can be useful to avoid bones rotating the + * long way around when using {@link #alpha} and starting animations on other tracks. + * + * Mixing with {@link MixBlend#replace} involves finding a rotation between two others, which has two possible solutions: + * the short way or the long way around. The two rotations likely change over time, so which direction is the short or long + * way also changes. If the short way was always chosen, bones would flip to the other side when that direction became the + * long way. TrackEntry chooses the short way the first time it is applied and remembers that direction. */ + TrackEntry.prototype.resetRotationDirections = function () { + this.timelinesRotation.length = 0; + }; + TrackEntry.prototype.getTrackComplete = function () { + var duration = this.animationEnd - this.animationStart; + if (duration != 0) { + if (this.loop) + return duration * (1 + ((this.trackTime / duration) | 0)); // Completion of next loop. + if (this.trackTime < duration) + return duration; // Before duration. + } + return this.trackTime; // Next update. + }; + return TrackEntry; + }()); + var EventQueue = /** @class */ (function () { + function EventQueue(animState) { + this.objects = []; + this.drainDisabled = false; + this.animState = animState; + } + EventQueue.prototype.start = function (entry) { + this.objects.push(exports.EventType.start); + this.objects.push(entry); + this.animState.animationsChanged = true; + }; + EventQueue.prototype.interrupt = function (entry) { + this.objects.push(exports.EventType.interrupt); + this.objects.push(entry); + }; + EventQueue.prototype.end = function (entry) { + this.objects.push(exports.EventType.end); + this.objects.push(entry); + this.animState.animationsChanged = true; + }; + EventQueue.prototype.dispose = function (entry) { + this.objects.push(exports.EventType.dispose); + this.objects.push(entry); + }; + EventQueue.prototype.complete = function (entry) { + this.objects.push(exports.EventType.complete); + this.objects.push(entry); + }; + EventQueue.prototype.event = function (entry, event) { + this.objects.push(exports.EventType.event); + this.objects.push(entry); + this.objects.push(event); + }; + EventQueue.prototype.drain = function () { + if (this.drainDisabled) + return; + this.drainDisabled = true; + var objects = this.objects; + var listeners = this.animState.listeners; + for (var i = 0; i < objects.length; i += 2) { + var type = objects[i]; + var entry = objects[i + 1]; + switch (type) { + case exports.EventType.start: + if (entry.listener && entry.listener.start) + entry.listener.start(entry); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].start) + listeners[ii].start(entry); + break; + case exports.EventType.interrupt: + if (entry.listener && entry.listener.interrupt) + entry.listener.interrupt(entry); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].interrupt) + listeners[ii].interrupt(entry); + break; + case exports.EventType.end: + if (entry.listener && entry.listener.end) + entry.listener.end(entry); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].end) + listeners[ii].end(entry); + // Fall through. + case exports.EventType.dispose: + if (entry.listener && entry.listener.dispose) + entry.listener.dispose(entry); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].dispose) + listeners[ii].dispose(entry); + this.animState.trackEntryPool.free(entry); + break; + case exports.EventType.complete: + if (entry.listener && entry.listener.complete) + entry.listener.complete(entry); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].complete) + listeners[ii].complete(entry); + break; + case exports.EventType.event: + var event_3 = objects[i++ + 2]; + if (entry.listener && entry.listener.event) + entry.listener.event(entry, event_3); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].event) + listeners[ii].event(entry, event_3); + break; + } + } + this.clear(); + this.drainDisabled = false; + }; + EventQueue.prototype.clear = function () { + this.objects.length = 0; + }; + return EventQueue; + }()); + exports.EventType = void 0; + (function (EventType) { + EventType[EventType["start"] = 0] = "start"; + EventType[EventType["interrupt"] = 1] = "interrupt"; + EventType[EventType["end"] = 2] = "end"; + EventType[EventType["dispose"] = 3] = "dispose"; + EventType[EventType["complete"] = 4] = "complete"; + EventType[EventType["event"] = 5] = "event"; + })(exports.EventType || (exports.EventType = {})); + var AnimationStateAdapter = /** @class */ (function () { + function AnimationStateAdapter() { + } + AnimationStateAdapter.prototype.start = function (entry) { + }; + AnimationStateAdapter.prototype.interrupt = function (entry) { + }; + AnimationStateAdapter.prototype.end = function (entry) { + }; + AnimationStateAdapter.prototype.dispose = function (entry) { + }; + AnimationStateAdapter.prototype.complete = function (entry) { + }; + AnimationStateAdapter.prototype.event = function (entry, event) { + }; + return AnimationStateAdapter; + }()); + /** 1. A previously applied timeline has set this property. + * + * Result: Mix from the current pose to the timeline pose. */ + var SUBSEQUENT = 0; + /** 1. This is the first timeline to set this property. + * 2. The next track entry applied after this one does not have a timeline to set this property. + * + * Result: Mix from the setup pose to the timeline pose. */ + var FIRST = 1; + /** 1) A previously applied timeline has set this property.
        + * 2) The next track entry to be applied does have a timeline to set this property.
        + * 3) The next track entry after that one does not have a timeline to set this property.
        + * Result: Mix from the current pose to the timeline pose, but do not mix out. This avoids "dipping" when crossfading + * animations that key the same property. A subsequent timeline will set this property using a mix. */ + var HOLD_SUBSEQUENT = 2; + /** 1) This is the first timeline to set this property.
        + * 2) The next track entry to be applied does have a timeline to set this property.
        + * 3) The next track entry after that one does not have a timeline to set this property.
        + * Result: Mix from the setup pose to the timeline pose, but do not mix out. This avoids "dipping" when crossfading animations + * that key the same property. A subsequent timeline will set this property using a mix. */ + var HOLD_FIRST = 3; + /** 1. This is the first timeline to set this property. + * 2. The next track entry to be applied does have a timeline to set this property. + * 3. The next track entry after that one does have a timeline to set this property. + * 4. timelineHoldMix stores the first subsequent track entry that does not have a timeline to set this property. + * + * Result: The same as HOLD except the mix percentage from the timelineHoldMix track entry is used. This handles when more than + * 2 track entries in a row have a timeline that sets the same property. + * + * Eg, A -> B -> C -> D where A, B, and C have a timeline setting same property, but D does not. When A is applied, to avoid + * "dipping" A is not mixed out, however D (the first entry that doesn't set the property) mixing in is used to mix out A + * (which affects B and C). Without using D to mix out, A would be applied fully until mixing completes, then snap into + * place. */ + var HOLD_MIX = 4; + var SETUP = 1; + var CURRENT = 2; + var _emptyAnimation = null; + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores mix (crossfade) durations to be applied when {@link AnimationState} animations are changed. */ + var AnimationStateData = /** @class */ (function () { + function AnimationStateData(skeletonData) { + this.animationToMixTime = {}; + /** The mix duration to use when no mix duration has been defined between two animations. */ + this.defaultMix = 0; + if (!skeletonData) + throw new Error("skeletonData cannot be null."); + this.skeletonData = skeletonData; + } + /** Sets a mix duration by animation name. + * + * See {@link #setMixWith()}. */ + AnimationStateData.prototype.setMix = function (fromName, toName, duration) { + var from = this.skeletonData.findAnimation(fromName); + if (!from) + throw new Error("Animation not found: " + fromName); + var to = this.skeletonData.findAnimation(toName); + if (!to) + throw new Error("Animation not found: " + toName); + this.setMixWith(from, to, duration); + }; + /** Sets the mix duration when changing from the specified animation to the other. + * + * See {@link TrackEntry#mixDuration}. */ + AnimationStateData.prototype.setMixWith = function (from, to, duration) { + if (!from) + throw new Error("from cannot be null."); + if (!to) + throw new Error("to cannot be null."); + var key = from.name + "." + to.name; + this.animationToMixTime[key] = duration; + }; + /** Returns the mix duration to use when changing from the specified animation to the other, or the {@link #defaultMix} if + * no mix duration has been set. */ + AnimationStateData.prototype.getMix = function (from, to) { + var key = from.name + "." + to.name; + var value = this.animationToMixTime[key]; + return value === undefined ? this.defaultMix : value; + }; + return AnimationStateData; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$c = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** An attachment with vertices that make up a polygon. Can be used for hit detection, creating physics bodies, spawning particle + * effects, and more. + * + * See {@link SkeletonBounds} and [Bounding Boxes](http://esotericsoftware.com/spine-bounding-boxes) in the Spine User + * Guide. */ + var BoundingBoxAttachment = /** @class */ (function (_super) { + __extends$c(BoundingBoxAttachment, _super); + function BoundingBoxAttachment(name) { + var _this = _super.call(this, name) || this; + _this.color = new Color(1, 1, 1, 1); + return _this; + } + BoundingBoxAttachment.prototype.copy = function () { + var copy = new BoundingBoxAttachment(this.name); + this.copyTo(copy); + copy.color.setFromColor(this.color); + return copy; + }; + return BoundingBoxAttachment; + }(VertexAttachment)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$b = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** An attachment with vertices that make up a polygon used for clipping the rendering of other attachments. */ + var ClippingAttachment = /** @class */ (function (_super) { + __extends$b(ClippingAttachment, _super); + function ClippingAttachment(name) { + var _this = _super.call(this, name) || this; + // Nonessential. + /** The color of the clipping polygon as it was in Spine. Available only when nonessential data was exported. Clipping polygons + * are not usually rendered at runtime. */ + _this.color = new Color(0.2275, 0.2275, 0.8078, 1); // ce3a3aff + return _this; + } + ClippingAttachment.prototype.copy = function () { + var copy = new ClippingAttachment(this.name); + this.copyTo(copy); + copy.endSlot = this.endSlot; + copy.color.setFromColor(this.color); + return copy; + }; + return ClippingAttachment; + }(VertexAttachment)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$a = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + var Texture = /** @class */ (function () { + function Texture(image) { + this._image = image; + } + Texture.prototype.getImage = function () { + return this._image; + }; + return Texture; + }()); + exports.TextureFilter = void 0; + (function (TextureFilter) { + TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; + TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; + TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; + TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; + TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; + TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; + TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; // WebGLRenderingContext.LINEAR_MIPMAP_LINEAR + })(exports.TextureFilter || (exports.TextureFilter = {})); + exports.TextureWrap = void 0; + (function (TextureWrap) { + TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; + TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; + TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; // WebGLRenderingContext.REPEAT + })(exports.TextureWrap || (exports.TextureWrap = {})); + var TextureRegion = /** @class */ (function () { + function TextureRegion() { + this.u = 0; + this.v = 0; + this.u2 = 0; + this.v2 = 0; + this.width = 0; + this.height = 0; + this.degrees = 0; + this.offsetX = 0; + this.offsetY = 0; + this.originalWidth = 0; + this.originalHeight = 0; + } + return TextureRegion; + }()); + var FakeTexture = /** @class */ (function (_super) { + __extends$a(FakeTexture, _super); + function FakeTexture() { + return _super !== null && _super.apply(this, arguments) || this; + } + FakeTexture.prototype.setFilters = function (minFilter, magFilter) { }; + FakeTexture.prototype.setWraps = function (uWrap, vWrap) { }; + FakeTexture.prototype.dispose = function () { }; + return FakeTexture; + }(Texture)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$9 = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + var TextureAtlas = /** @class */ (function () { + function TextureAtlas(atlasText) { + this.pages = new Array(); + this.regions = new Array(); + var reader = new TextureAtlasReader(atlasText); + var entry = new Array(4); + var page = null; + var region = null; + var pageFields = {}; + pageFields["size"] = function () { + page.width = parseInt(entry[1]); + page.height = parseInt(entry[2]); + }; + pageFields["format"] = function () { + // page.format = Format[tuple[0]]; we don't need format in WebGL + }; + pageFields["filter"] = function () { + page.minFilter = Utils.enumValue(exports.TextureFilter, entry[1]); + page.magFilter = Utils.enumValue(exports.TextureFilter, entry[2]); + }; + pageFields["repeat"] = function () { + if (entry[1].indexOf('x') != -1) + page.uWrap = exports.TextureWrap.Repeat; + if (entry[1].indexOf('y') != -1) + page.vWrap = exports.TextureWrap.Repeat; + }; + pageFields["pma"] = function () { + page.pma = entry[1] == "true"; + }; + var regionFields = {}; + regionFields["xy"] = function () { + region.x = parseInt(entry[1]); + region.y = parseInt(entry[2]); + }; + regionFields["size"] = function () { + region.width = parseInt(entry[1]); + region.height = parseInt(entry[2]); + }; + regionFields["bounds"] = function () { + region.x = parseInt(entry[1]); + region.y = parseInt(entry[2]); + region.width = parseInt(entry[3]); + region.height = parseInt(entry[4]); + }; + regionFields["offset"] = function () { + region.offsetX = parseInt(entry[1]); + region.offsetY = parseInt(entry[2]); + }; + regionFields["orig"] = function () { + region.originalWidth = parseInt(entry[1]); + region.originalHeight = parseInt(entry[2]); + }; + regionFields["offsets"] = function () { + region.offsetX = parseInt(entry[1]); + region.offsetY = parseInt(entry[2]); + region.originalWidth = parseInt(entry[3]); + region.originalHeight = parseInt(entry[4]); + }; + regionFields["rotate"] = function () { + var value = entry[1]; + if (value == "true") + region.degrees = 90; + else if (value != "false") + region.degrees = parseInt(value); + }; + regionFields["index"] = function () { + region.index = parseInt(entry[1]); + }; + var line = reader.readLine(); + // Ignore empty lines before first entry. + while (line && line.trim().length == 0) + line = reader.readLine(); + // Header entries. + while (true) { + if (!line || line.trim().length == 0) + break; + if (reader.readEntry(entry, line) == 0) + break; // Silently ignore all header fields. + line = reader.readLine(); + } + // Page and region entries. + var names = null; + var values = null; + while (true) { + if (line === null) + break; + if (line.trim().length == 0) { + page = null; + line = reader.readLine(); + } + else if (!page) { + page = new TextureAtlasPage(); + page.name = line.trim(); + while (true) { + if (reader.readEntry(entry, line = reader.readLine()) == 0) + break; + var field = pageFields[entry[0]]; + if (field) + field(); + } + this.pages.push(page); + } + else { + region = new TextureAtlasRegion(); + region.page = page; + region.name = line; + while (true) { + var count = reader.readEntry(entry, line = reader.readLine()); + if (count == 0) + break; + var field = regionFields[entry[0]]; + if (field) + field(); + else { + if (!names) { + names = []; + values = []; + } + names.push(entry[0]); + var entryValues = []; + for (var i = 0; i < count; i++) + entryValues.push(parseInt(entry[i + 1])); + values.push(entryValues); + } + } + if (region.originalWidth == 0 && region.originalHeight == 0) { + region.originalWidth = region.width; + region.originalHeight = region.height; + } + if (names && names.length > 0) { + region.names = names; + region.values = values; + names = null; + values = null; + } + region.u = region.x / page.width; + region.v = region.y / page.height; + if (region.degrees == 90) { + region.u2 = (region.x + region.height) / page.width; + region.v2 = (region.y + region.width) / page.height; + } + else { + region.u2 = (region.x + region.width) / page.width; + region.v2 = (region.y + region.height) / page.height; + } + this.regions.push(region); + } + } + } + TextureAtlas.prototype.findRegion = function (name) { + for (var i = 0; i < this.regions.length; i++) { + if (this.regions[i].name == name) { + return this.regions[i]; + } + } + return null; + }; + TextureAtlas.prototype.setTextures = function (assetManager, pathPrefix) { + if (pathPrefix === void 0) { pathPrefix = ""; } + for (var _i = 0, _a = this.pages; _i < _a.length; _i++) { + var page = _a[_i]; + page.setTexture(assetManager.get(pathPrefix + page.name)); + } + }; + TextureAtlas.prototype.dispose = function () { + for (var i = 0; i < this.pages.length; i++) { + this.pages[i].texture.dispose(); + } + }; + return TextureAtlas; + }()); + var TextureAtlasReader = /** @class */ (function () { + function TextureAtlasReader(text) { + this.index = 0; + this.lines = text.split(/\r\n|\r|\n/); + } + TextureAtlasReader.prototype.readLine = function () { + if (this.index >= this.lines.length) + return null; + return this.lines[this.index++]; + }; + TextureAtlasReader.prototype.readEntry = function (entry, line) { + if (!line) + return 0; + line = line.trim(); + if (line.length == 0) + return 0; + var colon = line.indexOf(':'); + if (colon == -1) + return 0; + entry[0] = line.substr(0, colon).trim(); + for (var i = 1, lastMatch = colon + 1;; i++) { + var comma = line.indexOf(',', lastMatch); + if (comma == -1) { + entry[i] = line.substr(lastMatch).trim(); + return i; + } + entry[i] = line.substr(lastMatch, comma - lastMatch).trim(); + lastMatch = comma + 1; + if (i == 4) + return 4; + } + }; + return TextureAtlasReader; + }()); + var TextureAtlasPage = /** @class */ (function () { + function TextureAtlasPage() { + this.minFilter = exports.TextureFilter.Nearest; + this.magFilter = exports.TextureFilter.Nearest; + this.uWrap = exports.TextureWrap.ClampToEdge; + this.vWrap = exports.TextureWrap.ClampToEdge; + } + TextureAtlasPage.prototype.setTexture = function (texture) { + this.texture = texture; + texture.setFilters(this.minFilter, this.magFilter); + texture.setWraps(this.uWrap, this.vWrap); + }; + return TextureAtlasPage; + }()); + var TextureAtlasRegion = /** @class */ (function (_super) { + __extends$9(TextureAtlasRegion, _super); + function TextureAtlasRegion() { + return _super !== null && _super.apply(this, arguments) || this; + } + return TextureAtlasRegion; + }(TextureRegion)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$8 = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** An attachment that displays a textured mesh. A mesh has hull vertices and internal vertices within the hull. Holes are not + * supported. Each vertex has UVs (texture coordinates) and triangles are used to map an image on to the mesh. + * + * See [Mesh attachments](http://esotericsoftware.com/spine-meshes) in the Spine User Guide. */ + var MeshAttachment = /** @class */ (function (_super) { + __extends$8(MeshAttachment, _super); + function MeshAttachment(name) { + var _this = _super.call(this, name) || this; + /** The color to tint the mesh. */ + _this.color = new Color(1, 1, 1, 1); + _this.tempColor = new Color(0, 0, 0, 0); + return _this; + } + /** Calculates {@link #uvs} using {@link #regionUVs} and the {@link #region}. Must be called after changing the region UVs or + * region. */ + MeshAttachment.prototype.updateUVs = function () { + var regionUVs = this.regionUVs; + if (!this.uvs || this.uvs.length != regionUVs.length) + this.uvs = Utils.newFloatArray(regionUVs.length); + var uvs = this.uvs; + var n = this.uvs.length; + var u = this.region.u, v = this.region.v, width = 0, height = 0; + if (this.region instanceof TextureAtlasRegion) { + var region = this.region, image = region.page.texture.getImage(); + var textureWidth = image.width, textureHeight = image.height; + switch (region.degrees) { + case 90: + u -= (region.originalHeight - region.offsetY - region.height) / textureWidth; + v -= (region.originalWidth - region.offsetX - region.width) / textureHeight; + width = region.originalHeight / textureWidth; + height = region.originalWidth / textureHeight; + for (var i = 0; i < n; i += 2) { + uvs[i] = u + regionUVs[i + 1] * width; + uvs[i + 1] = v + (1 - regionUVs[i]) * height; + } + return; + case 180: + u -= (region.originalWidth - region.offsetX - region.width) / textureWidth; + v -= region.offsetY / textureHeight; + width = region.originalWidth / textureWidth; + height = region.originalHeight / textureHeight; + for (var i = 0; i < n; i += 2) { + uvs[i] = u + (1 - regionUVs[i]) * width; + uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height; + } + return; + case 270: + u -= region.offsetY / textureWidth; + v -= region.offsetX / textureHeight; + width = region.originalHeight / textureWidth; + height = region.originalWidth / textureHeight; + for (var i = 0; i < n; i += 2) { + uvs[i] = u + (1 - regionUVs[i + 1]) * width; + uvs[i + 1] = v + regionUVs[i] * height; + } + return; + } + u -= region.offsetX / textureWidth; + v -= (region.originalHeight - region.offsetY - region.height) / textureHeight; + width = region.originalWidth / textureWidth; + height = region.originalHeight / textureHeight; + } + else if (!this.region) { + u = v = 0; + width = height = 1; + } + else { + width = this.region.u2 - u; + height = this.region.v2 - v; + } + for (var i = 0; i < n; i += 2) { + uvs[i] = u + regionUVs[i] * width; + uvs[i + 1] = v + regionUVs[i + 1] * height; + } + }; + /** The parent mesh if this is a linked mesh, else null. A linked mesh shares the {@link #bones}, {@link #vertices}, + * {@link #regionUVs}, {@link #triangles}, {@link #hullLength}, {@link #edges}, {@link #width}, and {@link #height} with the + * parent mesh, but may have a different {@link #name} or {@link #path} (and therefore a different texture). */ + MeshAttachment.prototype.getParentMesh = function () { + return this.parentMesh; + }; + /** @param parentMesh May be null. */ + MeshAttachment.prototype.setParentMesh = function (parentMesh) { + this.parentMesh = parentMesh; + if (parentMesh) { + this.bones = parentMesh.bones; + this.vertices = parentMesh.vertices; + this.worldVerticesLength = parentMesh.worldVerticesLength; + this.regionUVs = parentMesh.regionUVs; + this.triangles = parentMesh.triangles; + this.hullLength = parentMesh.hullLength; + this.worldVerticesLength = parentMesh.worldVerticesLength; + } + }; + MeshAttachment.prototype.copy = function () { + if (this.parentMesh) + return this.newLinkedMesh(); + var copy = new MeshAttachment(this.name); + copy.region = this.region; + copy.path = this.path; + copy.color.setFromColor(this.color); + this.copyTo(copy); + copy.regionUVs = new Array(this.regionUVs.length); + Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length); + copy.uvs = new Array(this.uvs.length); + Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length); + copy.triangles = new Array(this.triangles.length); + Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); + copy.hullLength = this.hullLength; + // Nonessential. + if (this.edges) { + copy.edges = new Array(this.edges.length); + Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); + } + copy.width = this.width; + copy.height = this.height; + return copy; + }; + /** Returns a new mesh with the {@link #parentMesh} set to this mesh's parent mesh, if any, else to this mesh. **/ + MeshAttachment.prototype.newLinkedMesh = function () { + var copy = new MeshAttachment(this.name); + copy.region = this.region; + copy.path = this.path; + copy.color.setFromColor(this.color); + copy.deformAttachment = this.deformAttachment; + copy.setParentMesh(this.parentMesh ? this.parentMesh : this); + copy.updateUVs(); + return copy; + }; + return MeshAttachment; + }(VertexAttachment)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$7 = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** An attachment whose vertices make up a composite Bezier curve. + * + * See {@link PathConstraint} and [Paths](http://esotericsoftware.com/spine-paths) in the Spine User Guide. */ + var PathAttachment = /** @class */ (function (_super) { + __extends$7(PathAttachment, _super); + function PathAttachment(name) { + var _this = _super.call(this, name) || this; + /** If true, the start and end knots are connected. */ + _this.closed = false; + /** If true, additional calculations are performed to make calculating positions along the path more accurate. If false, fewer + * calculations are performed but calculating positions along the path is less accurate. */ + _this.constantSpeed = false; + /** The color of the path as it was in Spine. Available only when nonessential data was exported. Paths are not usually + * rendered at runtime. */ + _this.color = new Color(1, 1, 1, 1); + return _this; + } + PathAttachment.prototype.copy = function () { + var copy = new PathAttachment(this.name); + this.copyTo(copy); + copy.lengths = new Array(this.lengths.length); + Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length); + copy.closed = closed; + copy.constantSpeed = this.constantSpeed; + copy.color.setFromColor(this.color); + return copy; + }; + return PathAttachment; + }(VertexAttachment)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$6 = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** An attachment which is a single point and a rotation. This can be used to spawn projectiles, particles, etc. A bone can be + * used in similar ways, but a PointAttachment is slightly less expensive to compute and can be hidden, shown, and placed in a + * skin. + * + * See [Point Attachments](http://esotericsoftware.com/spine-point-attachments) in the Spine User Guide. */ + var PointAttachment = /** @class */ (function (_super) { + __extends$6(PointAttachment, _super); + function PointAttachment(name) { + var _this = _super.call(this, name) || this; + /** The color of the point attachment as it was in Spine. Available only when nonessential data was exported. Point attachments + * are not usually rendered at runtime. */ + _this.color = new Color(0.38, 0.94, 0, 1); + return _this; + } + PointAttachment.prototype.computeWorldPosition = function (bone, point) { + point.x = this.x * bone.a + this.y * bone.b + bone.worldX; + point.y = this.x * bone.c + this.y * bone.d + bone.worldY; + return point; + }; + PointAttachment.prototype.computeWorldRotation = function (bone) { + var cos = MathUtils.cosDeg(this.rotation), sin = MathUtils.sinDeg(this.rotation); + var x = cos * bone.a + sin * bone.b; + var y = cos * bone.c + sin * bone.d; + return Math.atan2(y, x) * MathUtils.radDeg; + }; + PointAttachment.prototype.copy = function () { + var copy = new PointAttachment(this.name); + copy.x = this.x; + copy.y = this.y; + copy.rotation = this.rotation; + copy.color.setFromColor(this.color); + return copy; + }; + return PointAttachment; + }(VertexAttachment)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$5 = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** An attachment that displays a textured quadrilateral. + * + * See [Region attachments](http://esotericsoftware.com/spine-regions) in the Spine User Guide. */ + var RegionAttachment = /** @class */ (function (_super) { + __extends$5(RegionAttachment, _super); + function RegionAttachment(name) { + var _this = _super.call(this, name) || this; + /** The local x translation. */ + _this.x = 0; + /** The local y translation. */ + _this.y = 0; + /** The local scaleX. */ + _this.scaleX = 1; + /** The local scaleY. */ + _this.scaleY = 1; + /** The local rotation. */ + _this.rotation = 0; + /** The width of the region attachment in Spine. */ + _this.width = 0; + /** The height of the region attachment in Spine. */ + _this.height = 0; + /** The color to tint the region attachment. */ + _this.color = new Color(1, 1, 1, 1); + /** For each of the 4 vertices, a pair of x,y values that is the local position of the vertex. + * + * See {@link #updateOffset()}. */ + _this.offset = Utils.newFloatArray(8); + _this.uvs = Utils.newFloatArray(8); + _this.tempColor = new Color(1, 1, 1, 1); + return _this; + } + /** Calculates the {@link #offset} using the region settings. Must be called after changing region settings. */ + RegionAttachment.prototype.updateOffset = function () { + this.region; + var regionScaleX = this.width / this.region.originalWidth * this.scaleX; + var regionScaleY = this.height / this.region.originalHeight * this.scaleY; + var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; + var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; + var localX2 = localX + this.region.width * regionScaleX; + var localY2 = localY + this.region.height * regionScaleY; + var radians = this.rotation * Math.PI / 180; + var cos = Math.cos(radians); + var sin = Math.sin(radians); + var x = this.x, y = this.y; + var localXCos = localX * cos + x; + var localXSin = localX * sin; + var localYCos = localY * cos + y; + var localYSin = localY * sin; + var localX2Cos = localX2 * cos + x; + var localX2Sin = localX2 * sin; + var localY2Cos = localY2 * cos + y; + var localY2Sin = localY2 * sin; + var offset = this.offset; + offset[0] = localXCos - localYSin; + offset[1] = localYCos + localXSin; + offset[2] = localXCos - localY2Sin; + offset[3] = localY2Cos + localXSin; + offset[4] = localX2Cos - localY2Sin; + offset[5] = localY2Cos + localX2Sin; + offset[6] = localX2Cos - localYSin; + offset[7] = localYCos + localX2Sin; + }; + RegionAttachment.prototype.setRegion = function (region) { + this.region = region; + var uvs = this.uvs; + if (region.degrees == 90) { + uvs[2] = region.u; + uvs[3] = region.v2; + uvs[4] = region.u; + uvs[5] = region.v; + uvs[6] = region.u2; + uvs[7] = region.v; + uvs[0] = region.u2; + uvs[1] = region.v2; + } + else { + uvs[0] = region.u; + uvs[1] = region.v2; + uvs[2] = region.u; + uvs[3] = region.v; + uvs[4] = region.u2; + uvs[5] = region.v; + uvs[6] = region.u2; + uvs[7] = region.v2; + } + }; + /** Transforms the attachment's four vertices to world coordinates. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. + * @param worldVertices The output world vertices. Must have a length >= `offset` + 8. + * @param offset The `worldVertices` index to begin writing values. + * @param stride The number of `worldVertices` entries between the value pairs written. */ + RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) { + var vertexOffset = this.offset; + var x = bone.worldX, y = bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var offsetX = 0, offsetY = 0; + offsetX = vertexOffset[0]; + offsetY = vertexOffset[1]; + worldVertices[offset] = offsetX * a + offsetY * b + x; // br + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[2]; + offsetY = vertexOffset[3]; + worldVertices[offset] = offsetX * a + offsetY * b + x; // bl + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[4]; + offsetY = vertexOffset[5]; + worldVertices[offset] = offsetX * a + offsetY * b + x; // ul + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[6]; + offsetY = vertexOffset[7]; + worldVertices[offset] = offsetX * a + offsetY * b + x; // ur + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + }; + RegionAttachment.prototype.copy = function () { + var copy = new RegionAttachment(this.name); + copy.region = this.region; + copy.rendererObject = this.rendererObject; + copy.path = this.path; + copy.x = this.x; + copy.y = this.y; + copy.scaleX = this.scaleX; + copy.scaleY = this.scaleY; + copy.rotation = this.rotation; + copy.width = this.width; + copy.height = this.height; + Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8); + Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8); + copy.color.setFromColor(this.color); + return copy; + }; + RegionAttachment.X1 = 0; + RegionAttachment.Y1 = 1; + RegionAttachment.C1R = 2; + RegionAttachment.C1G = 3; + RegionAttachment.C1B = 4; + RegionAttachment.C1A = 5; + RegionAttachment.U1 = 6; + RegionAttachment.V1 = 7; + RegionAttachment.X2 = 8; + RegionAttachment.Y2 = 9; + RegionAttachment.C2R = 10; + RegionAttachment.C2G = 11; + RegionAttachment.C2B = 12; + RegionAttachment.C2A = 13; + RegionAttachment.U2 = 14; + RegionAttachment.V2 = 15; + RegionAttachment.X3 = 16; + RegionAttachment.Y3 = 17; + RegionAttachment.C3R = 18; + RegionAttachment.C3G = 19; + RegionAttachment.C3B = 20; + RegionAttachment.C3A = 21; + RegionAttachment.U3 = 22; + RegionAttachment.V3 = 23; + RegionAttachment.X4 = 24; + RegionAttachment.Y4 = 25; + RegionAttachment.C4R = 26; + RegionAttachment.C4G = 27; + RegionAttachment.C4B = 28; + RegionAttachment.C4A = 29; + RegionAttachment.U4 = 30; + RegionAttachment.V4 = 31; + return RegionAttachment; + }(Attachment)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** An {@link AttachmentLoader} that configures attachments using texture regions from an {@link TextureAtlas}. + * + * See [Loading skeleton data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the + * Spine Runtimes Guide. */ + var AtlasAttachmentLoader = /** @class */ (function () { + function AtlasAttachmentLoader(atlas) { + this.atlas = atlas; + } + AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + if (!region) + throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); + region.renderObject = region; + var attachment = new RegionAttachment(name); + attachment.setRegion(region); + return attachment; + }; + AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + if (!region) + throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); + region.renderObject = region; + var attachment = new MeshAttachment(name); + attachment.region = region; + return attachment; + }; + AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { + return new BoundingBoxAttachment(name); + }; + AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { + return new PathAttachment(name); + }; + AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) { + return new PointAttachment(name); + }; + AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) { + return new ClippingAttachment(name); + }; + return AtlasAttachmentLoader; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the setup pose for a {@link Bone}. */ + var BoneData = /** @class */ (function () { + function BoneData(index, name, parent) { + /** The local x translation. */ + this.x = 0; + /** The local y translation. */ + this.y = 0; + /** The local rotation. */ + this.rotation = 0; + /** The local scaleX. */ + this.scaleX = 1; + /** The local scaleY. */ + this.scaleY = 1; + /** The local shearX. */ + this.shearX = 0; + /** The local shearX. */ + this.shearY = 0; + /** The transform mode for how parent world transforms affect this bone. */ + this.transformMode = exports.TransformMode.Normal; + /** When true, {@link Skeleton#updateWorldTransform()} only updates this bone if the {@link Skeleton#skin} contains this + * bone. + * @see Skin#bones */ + this.skinRequired = false; + /** The color of the bone as it was in Spine. Available only when nonessential data was exported. Bones are not usually + * rendered at runtime. */ + this.color = new Color(); + if (index < 0) + throw new Error("index must be >= 0."); + if (!name) + throw new Error("name cannot be null."); + this.index = index; + this.name = name; + this.parent = parent; + } + return BoneData; + }()); + /** Determines how a bone inherits world transforms from parent bones. */ + exports.TransformMode = void 0; + (function (TransformMode) { + TransformMode[TransformMode["Normal"] = 0] = "Normal"; + TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; + TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; + TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; + TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; + })(exports.TransformMode || (exports.TransformMode = {})); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores a bone's current pose. + * + * A bone has a local transform which is used to compute its world transform. A bone also has an applied transform, which is a + * local transform that can be applied to compute the world transform. The local transform and applied transform may differ if a + * constraint or application code modifies the world transform after it was computed from the local transform. */ + var Bone = /** @class */ (function () { + /** @param parent May be null. */ + function Bone(data, skeleton, parent) { + /** The immediate children of this bone. */ + this.children = new Array(); + /** The local x translation. */ + this.x = 0; + /** The local y translation. */ + this.y = 0; + /** The local rotation in degrees, counter clockwise. */ + this.rotation = 0; + /** The local scaleX. */ + this.scaleX = 0; + /** The local scaleY. */ + this.scaleY = 0; + /** The local shearX. */ + this.shearX = 0; + /** The local shearY. */ + this.shearY = 0; + /** The applied local x translation. */ + this.ax = 0; + /** The applied local y translation. */ + this.ay = 0; + /** The applied local rotation in degrees, counter clockwise. */ + this.arotation = 0; + /** The applied local scaleX. */ + this.ascaleX = 0; + /** The applied local scaleY. */ + this.ascaleY = 0; + /** The applied local shearX. */ + this.ashearX = 0; + /** The applied local shearY. */ + this.ashearY = 0; + /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */ + this.a = 0; + /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */ + this.b = 0; + /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */ + this.c = 0; + /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */ + this.d = 0; + /** The world X position. If changed, {@link #updateAppliedTransform()} should be called. */ + this.worldY = 0; + /** The world Y position. If changed, {@link #updateAppliedTransform()} should be called. */ + this.worldX = 0; + this.sorted = false; + this.active = false; + if (!data) + throw new Error("data cannot be null."); + if (!skeleton) + throw new Error("skeleton cannot be null."); + this.data = data; + this.skeleton = skeleton; + this.parent = parent; + this.setToSetupPose(); + } + /** Returns false when the bone has not been computed because {@link BoneData#skinRequired} is true and the + * {@link Skeleton#skin active skin} does not {@link Skin#bones contain} this bone. */ + Bone.prototype.isActive = function () { + return this.active; + }; + /** Computes the world transform using the parent bone and this bone's local applied transform. */ + Bone.prototype.update = function () { + this.updateWorldTransformWith(this.ax, this.ay, this.arotation, this.ascaleX, this.ascaleY, this.ashearX, this.ashearY); + }; + /** Computes the world transform using the parent bone and this bone's local transform. + * + * See {@link #updateWorldTransformWith()}. */ + Bone.prototype.updateWorldTransform = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + /** Computes the world transform using the parent bone and the specified local transform. The applied transform is set to the + * specified local transform. Child bones are not updated. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. */ + Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { + this.ax = x; + this.ay = y; + this.arotation = rotation; + this.ascaleX = scaleX; + this.ascaleY = scaleY; + this.ashearX = shearX; + this.ashearY = shearY; + var parent = this.parent; + if (!parent) { // Root bone. + var skeleton = this.skeleton; + var rotationY = rotation + 90 + shearY; + var sx = skeleton.scaleX; + var sy = skeleton.scaleY; + this.a = MathUtils.cosDeg(rotation + shearX) * scaleX * sx; + this.b = MathUtils.cosDeg(rotationY) * scaleY * sx; + this.c = MathUtils.sinDeg(rotation + shearX) * scaleX * sy; + this.d = MathUtils.sinDeg(rotationY) * scaleY * sy; + this.worldX = x * sx + skeleton.x; + this.worldY = y * sy + skeleton.y; + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + this.worldX = pa * x + pb * y + parent.worldX; + this.worldY = pc * x + pd * y + parent.worldY; + switch (this.data.transformMode) { + case exports.TransformMode.Normal: { + var rotationY = rotation + 90 + shearY; + var la = MathUtils.cosDeg(rotation + shearX) * scaleX; + var lb = MathUtils.cosDeg(rotationY) * scaleY; + var lc = MathUtils.sinDeg(rotation + shearX) * scaleX; + var ld = MathUtils.sinDeg(rotationY) * scaleY; + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + return; + } + case exports.TransformMode.OnlyTranslation: { + var rotationY = rotation + 90 + shearY; + this.a = MathUtils.cosDeg(rotation + shearX) * scaleX; + this.b = MathUtils.cosDeg(rotationY) * scaleY; + this.c = MathUtils.sinDeg(rotation + shearX) * scaleX; + this.d = MathUtils.sinDeg(rotationY) * scaleY; + break; + } + case exports.TransformMode.NoRotationOrReflection: { + var s = pa * pa + pc * pc; + var prx = 0; + if (s > 0.0001) { + s = Math.abs(pa * pd - pb * pc) / s; + pa /= this.skeleton.scaleX; + pc /= this.skeleton.scaleY; + pb = pc * s; + pd = pa * s; + prx = Math.atan2(pc, pa) * MathUtils.radDeg; + } + else { + pa = 0; + pc = 0; + prx = 90 - Math.atan2(pd, pb) * MathUtils.radDeg; + } + var rx = rotation + shearX - prx; + var ry = rotation + shearY - prx + 90; + var la = MathUtils.cosDeg(rx) * scaleX; + var lb = MathUtils.cosDeg(ry) * scaleY; + var lc = MathUtils.sinDeg(rx) * scaleX; + var ld = MathUtils.sinDeg(ry) * scaleY; + this.a = pa * la - pb * lc; + this.b = pa * lb - pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + break; + } + case exports.TransformMode.NoScale: + case exports.TransformMode.NoScaleOrReflection: { + var cos = MathUtils.cosDeg(rotation); + var sin = MathUtils.sinDeg(rotation); + var za = (pa * cos + pb * sin) / this.skeleton.scaleX; + var zc = (pc * cos + pd * sin) / this.skeleton.scaleY; + var s = Math.sqrt(za * za + zc * zc); + if (s > 0.00001) + s = 1 / s; + za *= s; + zc *= s; + s = Math.sqrt(za * za + zc * zc); + if (this.data.transformMode == exports.TransformMode.NoScale + && (pa * pd - pb * pc < 0) != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0)) + s = -s; + var r = Math.PI / 2 + Math.atan2(zc, za); + var zb = Math.cos(r) * s; + var zd = Math.sin(r) * s; + var la = MathUtils.cosDeg(shearX) * scaleX; + var lb = MathUtils.cosDeg(90 + shearY) * scaleY; + var lc = MathUtils.sinDeg(shearX) * scaleX; + var ld = MathUtils.sinDeg(90 + shearY) * scaleY; + this.a = za * la + zb * lc; + this.b = za * lb + zb * ld; + this.c = zc * la + zd * lc; + this.d = zc * lb + zd * ld; + break; + } + } + this.a *= this.skeleton.scaleX; + this.b *= this.skeleton.scaleX; + this.c *= this.skeleton.scaleY; + this.d *= this.skeleton.scaleY; + }; + /** Sets this bone's local transform to the setup pose. */ + Bone.prototype.setToSetupPose = function () { + var data = this.data; + this.x = data.x; + this.y = data.y; + this.rotation = data.rotation; + this.scaleX = data.scaleX; + this.scaleY = data.scaleY; + this.shearX = data.shearX; + this.shearY = data.shearY; + }; + /** The world rotation for the X axis, calculated using {@link #a} and {@link #c}. */ + Bone.prototype.getWorldRotationX = function () { + return Math.atan2(this.c, this.a) * MathUtils.radDeg; + }; + /** The world rotation for the Y axis, calculated using {@link #b} and {@link #d}. */ + Bone.prototype.getWorldRotationY = function () { + return Math.atan2(this.d, this.b) * MathUtils.radDeg; + }; + /** The magnitude (always positive) of the world scale X, calculated using {@link #a} and {@link #c}. */ + Bone.prototype.getWorldScaleX = function () { + return Math.sqrt(this.a * this.a + this.c * this.c); + }; + /** The magnitude (always positive) of the world scale Y, calculated using {@link #b} and {@link #d}. */ + Bone.prototype.getWorldScaleY = function () { + return Math.sqrt(this.b * this.b + this.d * this.d); + }; + /** Computes the applied transform values from the world transform. + * + * If the world transform is modified (by a constraint, {@link #rotateWorld(float)}, etc) then this method should be called so + * the applied transform matches the world transform. The applied transform may be needed by other code (eg to apply other + * constraints). + * + * Some information is ambiguous in the world transform, such as -1,-1 scale versus 180 rotation. The applied transform after + * calling this method is equivalent to the local transform used to compute the world transform, but may not be identical. */ + Bone.prototype.updateAppliedTransform = function () { + var parent = this.parent; + if (!parent) { + this.ax = this.worldX; + this.ay = this.worldY; + this.arotation = Math.atan2(this.c, this.a) * MathUtils.radDeg; + this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c); + this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d); + this.ashearX = 0; + this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * MathUtils.radDeg; + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + var pid = 1 / (pa * pd - pb * pc); + var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; + this.ax = (dx * pd * pid - dy * pb * pid); + this.ay = (dy * pa * pid - dx * pc * pid); + var ia = pid * pd; + var id = pid * pa; + var ib = pid * pb; + var ic = pid * pc; + var ra = ia * this.a - ib * this.c; + var rb = ia * this.b - ib * this.d; + var rc = id * this.c - ic * this.a; + var rd = id * this.d - ic * this.b; + this.ashearX = 0; + this.ascaleX = Math.sqrt(ra * ra + rc * rc); + if (this.ascaleX > 0.0001) { + var det = ra * rd - rb * rc; + this.ascaleY = det / this.ascaleX; + this.ashearY = Math.atan2(ra * rb + rc * rd, det) * MathUtils.radDeg; + this.arotation = Math.atan2(rc, ra) * MathUtils.radDeg; + } + else { + this.ascaleX = 0; + this.ascaleY = Math.sqrt(rb * rb + rd * rd); + this.ashearY = 0; + this.arotation = 90 - Math.atan2(rd, rb) * MathUtils.radDeg; + } + }; + /** Transforms a point from world coordinates to the bone's local coordinates. */ + Bone.prototype.worldToLocal = function (world) { + var invDet = 1 / (this.a * this.d - this.b * this.c); + var x = world.x - this.worldX, y = world.y - this.worldY; + world.x = x * this.d * invDet - y * this.b * invDet; + world.y = y * this.a * invDet - x * this.c * invDet; + return world; + }; + /** Transforms a point from the bone's local coordinates to world coordinates. */ + Bone.prototype.localToWorld = function (local) { + var x = local.x, y = local.y; + local.x = x * this.a + y * this.b + this.worldX; + local.y = x * this.c + y * this.d + this.worldY; + return local; + }; + /** Transforms a world rotation to a local rotation. */ + Bone.prototype.worldToLocalRotation = function (worldRotation) { + var sin = MathUtils.sinDeg(worldRotation), cos = MathUtils.cosDeg(worldRotation); + return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * MathUtils.radDeg + this.rotation - this.shearX; + }; + /** Transforms a local rotation to a world rotation. */ + Bone.prototype.localToWorldRotation = function (localRotation) { + localRotation -= this.rotation - this.shearX; + var sin = MathUtils.sinDeg(localRotation), cos = MathUtils.cosDeg(localRotation); + return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * MathUtils.radDeg; + }; + /** Rotates the world transform the specified amount. + *

        + * After changes are made to the world transform, {@link #updateAppliedTransform()} should be called and {@link #update()} will + * need to be called on any child bones, recursively. */ + Bone.prototype.rotateWorld = function (degrees) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var cos = MathUtils.cosDeg(degrees), sin = MathUtils.sinDeg(degrees); + this.a = cos * a - sin * c; + this.b = cos * b - sin * d; + this.c = sin * a + cos * c; + this.d = sin * b + cos * d; + }; + return Bone; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** The base class for all constraint datas. */ + var ConstraintData = /** @class */ (function () { + function ConstraintData(name, order, skinRequired) { + this.name = name; + this.order = order; + this.skinRequired = skinRequired; + } + return ConstraintData; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var AssetManagerBase = /** @class */ (function () { + function AssetManagerBase(textureLoader, pathPrefix, downloader) { + if (pathPrefix === void 0) { pathPrefix = ""; } + if (downloader === void 0) { downloader = null; } + this.assets = {}; + this.errors = {}; + this.toLoad = 0; + this.loaded = 0; + this.textureLoader = textureLoader; + this.pathPrefix = pathPrefix; + this.downloader = downloader || new Downloader(); + } + AssetManagerBase.prototype.start = function (path) { + this.toLoad++; + return this.pathPrefix + path; + }; + AssetManagerBase.prototype.success = function (callback, path, asset) { + this.toLoad--; + this.loaded++; + this.assets[path] = asset; + if (callback) + callback(path, asset); + }; + AssetManagerBase.prototype.error = function (callback, path, message) { + this.toLoad--; + this.loaded++; + this.errors[path] = message; + if (callback) + callback(path, message); + }; + AssetManagerBase.prototype.setRawDataURI = function (path, data) { + this.downloader.rawDataUris[this.pathPrefix + path] = data; + }; + AssetManagerBase.prototype.loadBinary = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + path = this.start(path); + this.downloader.downloadBinary(path, function (data) { + _this.success(success, path, data); + }, function (status, responseText) { + _this.error(error, path, "Couldn't load binary " + path + ": status " + status + ", " + responseText); + }); + }; + AssetManagerBase.prototype.loadText = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + path = this.start(path); + this.downloader.downloadText(path, function (data) { + _this.success(success, path, data); + }, function (status, responseText) { + _this.error(error, path, "Couldn't load text " + path + ": status " + status + ", " + responseText); + }); + }; + AssetManagerBase.prototype.loadJson = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + path = this.start(path); + this.downloader.downloadJson(path, function (data) { + _this.success(success, path, data); + }, function (status, responseText) { + _this.error(error, path, "Couldn't load JSON " + path + ": status " + status + ", " + responseText); + }); + }; + AssetManagerBase.prototype.loadTexture = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + path = this.start(path); + var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); + var isWebWorker = !isBrowser; // && typeof importScripts !== 'undefined'; + if (isWebWorker) { + fetch(path, { mode: "cors" }).then(function (response) { + if (response.ok) + return response.blob(); + _this.error(error, path, "Couldn't load image: " + path); + return null; + }).then(function (blob) { + return blob ? createImageBitmap(blob, { premultiplyAlpha: "none", colorSpaceConversion: "none" }) : null; + }).then(function (bitmap) { + if (bitmap) + _this.success(success, path, _this.textureLoader(bitmap)); + }); + } + else { + var image_1 = new Image(); + image_1.crossOrigin = "anonymous"; + image_1.onload = function () { + _this.success(success, path, _this.textureLoader(image_1)); + }; + image_1.onerror = function () { + _this.error(error, path, "Couldn't load image: " + path); + }; + if (this.downloader.rawDataUris[path]) + path = this.downloader.rawDataUris[path]; + image_1.src = path; + } + }; + AssetManagerBase.prototype.loadTextureAtlas = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + var index = path.lastIndexOf("/"); + var parent = index >= 0 ? path.substring(0, index + 1) : ""; + path = this.start(path); + this.downloader.downloadText(path, function (atlasText) { + try { + var atlas_1 = new TextureAtlas(atlasText); + var toLoad_1 = atlas_1.pages.length, abort_1 = false; + var _loop_1 = function (page) { + _this.loadTexture(parent + page.name, function (imagePath, texture) { + if (!abort_1) { + page.setTexture(texture); + if (--toLoad_1 == 0) + _this.success(success, path, atlas_1); + } + }, function (imagePath, message) { + if (!abort_1) + _this.error(error, path, "Couldn't load texture atlas " + path + " page image: " + imagePath); + abort_1 = true; + }); + }; + for (var _i = 0, _a = atlas_1.pages; _i < _a.length; _i++) { + var page = _a[_i]; + _loop_1(page); + } + } + catch (e) { + _this.error(error, path, "Couldn't parse texture atlas " + path + ": " + e.message); + } + }, function (status, responseText) { + _this.error(error, path, "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText); + }); + }; + AssetManagerBase.prototype.get = function (path) { + return this.assets[this.pathPrefix + path]; + }; + AssetManagerBase.prototype.require = function (path) { + path = this.pathPrefix + path; + var asset = this.assets[path]; + if (asset) + return asset; + var error = this.errors[path]; + throw Error("Asset not found: " + path + (error ? "\n" + error : "")); + }; + AssetManagerBase.prototype.remove = function (path) { + path = this.pathPrefix + path; + var asset = this.assets[path]; + if (asset.dispose) + asset.dispose(); + delete this.assets[path]; + return asset; + }; + AssetManagerBase.prototype.removeAll = function () { + for (var key in this.assets) { + var asset = this.assets[key]; + if (asset.dispose) + asset.dispose(); + } + this.assets = {}; + }; + AssetManagerBase.prototype.isLoadingComplete = function () { + return this.toLoad == 0; + }; + AssetManagerBase.prototype.getToLoad = function () { + return this.toLoad; + }; + AssetManagerBase.prototype.getLoaded = function () { + return this.loaded; + }; + AssetManagerBase.prototype.dispose = function () { + this.removeAll(); + }; + AssetManagerBase.prototype.hasErrors = function () { + return Object.keys(this.errors).length > 0; + }; + AssetManagerBase.prototype.getErrors = function () { + return this.errors; + }; + return AssetManagerBase; + }()); + var Downloader = /** @class */ (function () { + function Downloader() { + this.callbacks = {}; + this.rawDataUris = {}; + } + Downloader.prototype.downloadText = function (url, success, error) { + var _this = this; + if (this.rawDataUris[url]) + url = this.rawDataUris[url]; + if (this.start(url, success, error)) + return; + var request = new XMLHttpRequest(); + request.overrideMimeType("text/html"); + request.open("GET", url, true); + var done = function () { + _this.finish(url, request.status, request.responseText); + }; + request.onload = done; + request.onerror = done; + request.send(); + }; + Downloader.prototype.downloadJson = function (url, success, error) { + this.downloadText(url, function (data) { + success(JSON.parse(data)); + }, error); + }; + Downloader.prototype.downloadBinary = function (url, success, error) { + var _this = this; + if (this.rawDataUris[url]) + url = this.rawDataUris[url]; + if (this.start(url, success, error)) + return; + var request = new XMLHttpRequest(); + request.open("GET", url, true); + request.responseType = "arraybuffer"; + var onerror = function () { + _this.finish(url, request.status, request.responseText); + }; + request.onload = function () { + if (request.status == 200) + _this.finish(url, 200, new Uint8Array(request.response)); + else + onerror(); + }; + request.onerror = onerror; + request.send(); + }; + Downloader.prototype.start = function (url, success, error) { + var callbacks = this.callbacks[url]; + try { + if (callbacks) + return true; + this.callbacks[url] = callbacks = []; + } + finally { + callbacks.push(success, error); + } + }; + Downloader.prototype.finish = function (url, status, data) { + var callbacks = this.callbacks[url]; + delete this.callbacks[url]; + var args = status == 200 ? [data] : [status, data]; + for (var i = args.length - 1, n = callbacks.length; i < n; i += 2) + callbacks[i].apply(null, args); + }; + return Downloader; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the current pose values for an {@link Event}. + * + * See Timeline {@link Timeline#apply()}, + * AnimationStateListener {@link AnimationStateListener#event()}, and + * [Events](http://esotericsoftware.com/spine-events) in the Spine User Guide. */ + var Event = /** @class */ (function () { + function Event(time, data) { + if (!data) + throw new Error("data cannot be null."); + this.time = time; + this.data = data; + } + return Event; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the setup pose values for an {@link Event}. + * + * See [Events](http://esotericsoftware.com/spine-events) in the Spine User Guide. */ + var EventData = /** @class */ (function () { + function EventData(name) { + this.name = name; + } + return EventData; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the current pose for an IK constraint. An IK constraint adjusts the rotation of 1 or 2 constrained bones so the tip of + * the last bone is as close to the target bone as possible. + * + * See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */ + var IkConstraint = /** @class */ (function () { + function IkConstraint(data, skeleton) { + /** Controls the bend direction of the IK bones, either 1 or -1. */ + this.bendDirection = 0; + /** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */ + this.compress = false; + /** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained + * and the parent bone has local nonuniform scale, stretch is not applied. */ + this.stretch = false; + /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */ + this.mix = 1; + /** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */ + this.softness = 0; + this.active = false; + if (!data) + throw new Error("data cannot be null."); + if (!skeleton) + throw new Error("skeleton cannot be null."); + this.data = data; + this.mix = data.mix; + this.softness = data.softness; + this.bendDirection = data.bendDirection; + this.compress = data.compress; + this.stretch = data.stretch; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + IkConstraint.prototype.isActive = function () { + return this.active; + }; + IkConstraint.prototype.update = function () { + if (this.mix == 0) + return; + var target = this.target; + var bones = this.bones; + switch (bones.length) { + case 1: + this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix); + break; + case 2: + this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.data.uniform, this.softness, this.mix); + break; + } + }; + /** Applies 1 bone IK. The target is specified in the world coordinate system. */ + IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) { + var p = bone.parent; + var pa = p.a, pb = p.b, pc = p.c, pd = p.d; + var rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0; + switch (bone.data.transformMode) { + case exports.TransformMode.OnlyTranslation: + tx = targetX - bone.worldX; + ty = targetY - bone.worldY; + break; + case exports.TransformMode.NoRotationOrReflection: + var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc); + var sa = pa / bone.skeleton.scaleX; + var sc = pc / bone.skeleton.scaleY; + pb = -sc * s * bone.skeleton.scaleX; + pd = sa * s * bone.skeleton.scaleY; + rotationIK += Math.atan2(sc, sa) * MathUtils.radDeg; + // Fall through + default: + var x = targetX - p.worldX, y = targetY - p.worldY; + var d = pa * pd - pb * pc; + tx = (x * pd - y * pb) / d - bone.ax; + ty = (y * pa - x * pc) / d - bone.ay; + } + rotationIK += Math.atan2(ty, tx) * MathUtils.radDeg; + if (bone.ascaleX < 0) + rotationIK += 180; + if (rotationIK > 180) + rotationIK -= 360; + else if (rotationIK < -180) + rotationIK += 360; + var sx = bone.ascaleX, sy = bone.ascaleY; + if (compress || stretch) { + switch (bone.data.transformMode) { + case exports.TransformMode.NoScale: + case exports.TransformMode.NoScaleOrReflection: + tx = targetX - bone.worldX; + ty = targetY - bone.worldY; + } + var b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty); + if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) { + var s = (dd / b - 1) * alpha + 1; + sx *= s; + if (uniform) + sy *= s; + } + } + bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY); + }; + /** Applies 2 bone IK. The target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, uniform, softness, alpha) { + var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, sx = psx, sy = psy, csx = child.ascaleX; + var os1 = 0, os2 = 0, s2 = 0; + if (psx < 0) { + psx = -psx; + os1 = 180; + s2 = -1; + } + else { + os1 = 0; + s2 = 1; + } + if (psy < 0) { + psy = -psy; + s2 = -s2; + } + if (csx < 0) { + csx = -csx; + os2 = 180; + } + else + os2 = 0; + var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; + var u = Math.abs(psx - psy) <= 0.0001; + if (!u || stretch) { + cy = 0; + cwx = a * cx + parent.worldX; + cwy = c * cx + parent.worldY; + } + else { + cy = child.ay; + cwx = a * cx + b * cy + parent.worldX; + cwy = c * cx + d * cy + parent.worldY; + } + var pp = parent.parent; + a = pp.a; + b = pp.b; + c = pp.c; + d = pp.d; + var id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY; + var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; + var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2; + if (l1 < 0.0001) { + this.apply1(parent, targetX, targetY, false, stretch, false, alpha); + child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); + return; + } + x = targetX - pp.worldX; + y = targetY - pp.worldY; + var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; + var dd = tx * tx + ty * ty; + if (softness != 0) { + softness *= psx * (csx + 1) * 0.5; + var td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness; + if (sd > 0) { + var p = Math.min(1, sd / (softness * 2)) - 1; + p = (sd - softness * (1 - p * p)) / td; + tx -= p * tx; + ty -= p * ty; + dd = tx * tx + ty * ty; + } + } + outer: if (u) { + l2 *= psx; + var cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cos < -1) { + cos = -1; + a2 = Math.PI * bendDir; + } + else if (cos > 1) { + cos = 1; + a2 = 0; + if (stretch) { + a = (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1; + sx *= a; + if (uniform) + sy *= a; + } + } + else + a2 = Math.acos(cos) * bendDir; + a = l1 + l2 * cos; + b = l2 * Math.sin(a2); + a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); + } + else { + a = psx * l2; + b = psy * l2; + var aa = a * a, bb = b * b, ta = Math.atan2(ty, tx); + c = bb * l1 * l1 + aa * dd - aa * bb; + var c1 = -2 * bb * l1, c2 = bb - aa; + d = c1 * c1 - 4 * c2 * c; + if (d >= 0) { + var q = Math.sqrt(d); + if (c1 < 0) + q = -q; + q = -(c1 + q) * 0.5; + var r0 = q / c2, r1 = c / q; + var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; + if (r * r <= dd) { + y = Math.sqrt(dd - r * r) * bendDir; + a1 = ta - Math.atan2(y, r); + a2 = Math.atan2(y / psy, (r - l1) / psx); + break outer; + } + } + var minAngle = MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; + var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; + c = -a * l1 / (aa - bb); + if (c >= -1 && c <= 1) { + c = Math.acos(c); + x = a * Math.cos(c) + l1; + y = b * Math.sin(c); + d = x * x + y * y; + if (d < minDist) { + minAngle = c; + minDist = d; + minX = x; + minY = y; + } + if (d > maxDist) { + maxAngle = c; + maxDist = d; + maxX = x; + maxY = y; + } + } + if (dd <= (minDist + maxDist) * 0.5) { + a1 = ta - Math.atan2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } + else { + a1 = ta - Math.atan2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } + } + var os = Math.atan2(cy, cx) * s2; + var rotation = parent.arotation; + a1 = (a1 - os) * MathUtils.radDeg + os1 - rotation; + if (a1 > 180) + a1 -= 360; + else if (a1 < -180) // + a1 += 360; + parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, sy, 0, 0); + rotation = child.arotation; + a2 = ((a2 + os) * MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; + if (a2 > 180) + a2 -= 360; + else if (a2 < -180) // + a2 += 360; + child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); + }; + return IkConstraint; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$4 = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** Stores the setup pose for an {@link IkConstraint}. + *

        + * See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */ + var IkConstraintData = /** @class */ (function (_super) { + __extends$4(IkConstraintData, _super); + function IkConstraintData(name) { + var _this = _super.call(this, name, 0, false) || this; + /** The bones that are constrained by this IK constraint. */ + _this.bones = new Array(); + /** Controls the bend direction of the IK bones, either 1 or -1. */ + _this.bendDirection = 1; + /** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */ + _this.compress = false; + /** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained + * and the parent bone has local nonuniform scale, stretch is not applied. */ + _this.stretch = false; + /** When true, only a single bone is being constrained, and {@link #getCompress()} or {@link #getStretch()} is used, the bone + * is scaled on both the X and Y axes. */ + _this.uniform = false; + /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */ + _this.mix = 1; + /** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */ + _this.softness = 0; + return _this; + } + return IkConstraintData; + }(ConstraintData)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$3 = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** Stores the setup pose for a {@link PathConstraint}. + * + * See [path constraints](http://esotericsoftware.com/spine-path-constraints) in the Spine User Guide. */ + var PathConstraintData = /** @class */ (function (_super) { + __extends$3(PathConstraintData, _super); + function PathConstraintData(name) { + var _this = _super.call(this, name, 0, false) || this; + /** The bones that will be modified by this path constraint. */ + _this.bones = new Array(); + _this.mixRotate = 0; + _this.mixX = 0; + _this.mixY = 0; + return _this; + } + return PathConstraintData; + }(ConstraintData)); + /** Controls how the first bone is positioned along the path. + * + * See [position](http://esotericsoftware.com/spine-path-constraints#Position) in the Spine User Guide. */ + exports.PositionMode = void 0; + (function (PositionMode) { + PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; + PositionMode[PositionMode["Percent"] = 1] = "Percent"; + })(exports.PositionMode || (exports.PositionMode = {})); + /** Controls how bones after the first bone are positioned along the path. + * + * See [spacing](http://esotericsoftware.com/spine-path-constraints#Spacing) in the Spine User Guide. */ + exports.SpacingMode = void 0; + (function (SpacingMode) { + SpacingMode[SpacingMode["Length"] = 0] = "Length"; + SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; + SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; + SpacingMode[SpacingMode["Proportional"] = 3] = "Proportional"; + })(exports.SpacingMode || (exports.SpacingMode = {})); + /** Controls how bones are rotated, translated, and scaled to match the path. + * + * See [rotate mix](http://esotericsoftware.com/spine-path-constraints#Rotate-mix) in the Spine User Guide. */ + exports.RotateMode = void 0; + (function (RotateMode) { + RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; + RotateMode[RotateMode["Chain"] = 1] = "Chain"; + RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; + })(exports.RotateMode || (exports.RotateMode = {})); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the current pose for a path constraint. A path constraint adjusts the rotation, translation, and scale of the + * constrained bones so they follow a {@link PathAttachment}. + * + * See [Path constraints](http://esotericsoftware.com/spine-path-constraints) in the Spine User Guide. */ + var PathConstraint = /** @class */ (function () { + function PathConstraint(data, skeleton) { + /** The position along the path. */ + this.position = 0; + /** The spacing between bones. */ + this.spacing = 0; + this.mixRotate = 0; + this.mixX = 0; + this.mixY = 0; + this.spaces = new Array(); + this.positions = new Array(); + this.world = new Array(); + this.curves = new Array(); + this.lengths = new Array(); + this.segments = new Array(); + this.active = false; + if (!data) + throw new Error("data cannot be null."); + if (!skeleton) + throw new Error("skeleton cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0, n = data.bones.length; i < n; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findSlot(data.target.name); + this.position = data.position; + this.spacing = data.spacing; + this.mixRotate = data.mixRotate; + this.mixX = data.mixX; + this.mixY = data.mixY; + } + PathConstraint.prototype.isActive = function () { + return this.active; + }; + PathConstraint.prototype.update = function () { + var attachment = this.target.getAttachment(); + if (!(attachment instanceof PathAttachment)) + return; + var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY; + if (mixRotate == 0 && mixX == 0 && mixY == 0) + return; + var data = this.data; + var tangents = data.rotateMode == exports.RotateMode.Tangent, scale = data.rotateMode == exports.RotateMode.ChainScale; + var bones = this.bones; + var boneCount = bones.length, spacesCount = tangents ? boneCount : boneCount + 1; + var spaces = Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = Utils.setArraySize(this.lengths, boneCount) : null; + var spacing = this.spacing; + switch (data.spacingMode) { + case exports.SpacingMode.Percent: + if (scale) { + for (var i = 0, n = spacesCount - 1; i < n; i++) { + var bone = bones[i]; + var setupLength = bone.data.length; + if (setupLength < PathConstraint.epsilon) + lengths[i] = 0; + else { + var x = setupLength * bone.a, y = setupLength * bone.c; + lengths[i] = Math.sqrt(x * x + y * y); + } + } + } + Utils.arrayFill(spaces, 1, spacesCount, spacing); + break; + case exports.SpacingMode.Proportional: + var sum = 0; + for (var i = 0, n = spacesCount - 1; i < n;) { + var bone = bones[i]; + var setupLength = bone.data.length; + if (setupLength < PathConstraint.epsilon) { + if (scale) + lengths[i] = 0; + spaces[++i] = spacing; + } + else { + var x = setupLength * bone.a, y = setupLength * bone.c; + var length_1 = Math.sqrt(x * x + y * y); + if (scale) + lengths[i] = length_1; + spaces[++i] = length_1; + sum += length_1; + } + } + if (sum > 0) { + sum = spacesCount / sum * spacing; + for (var i = 1; i < spacesCount; i++) + spaces[i] *= sum; + } + break; + default: + var lengthSpacing = data.spacingMode == exports.SpacingMode.Length; + for (var i = 0, n = spacesCount - 1; i < n;) { + var bone = bones[i]; + var setupLength = bone.data.length; + if (setupLength < PathConstraint.epsilon) { + if (scale) + lengths[i] = 0; + spaces[++i] = spacing; + } + else { + var x = setupLength * bone.a, y = setupLength * bone.c; + var length_2 = Math.sqrt(x * x + y * y); + if (scale) + lengths[i] = length_2; + spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_2 / setupLength; + } + } + } + var positions = this.computeWorldPositions(attachment, spacesCount, tangents); + var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + var tip = false; + if (offsetRotation == 0) + tip = data.rotateMode == exports.RotateMode.Chain; + else { + tip = false; + var p = this.target.bone; + offsetRotation *= p.a * p.d - p.b * p.c > 0 ? MathUtils.degRad : -MathUtils.degRad; + } + for (var i = 0, p = 3; i < boneCount; i++, p += 3) { + var bone = bones[i]; + bone.worldX += (boneX - bone.worldX) * mixX; + bone.worldY += (boneY - bone.worldY) * mixY; + var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + var length_3 = lengths[i]; + if (length_3 != 0) { + var s = (Math.sqrt(dx * dx + dy * dy) / length_3 - 1) * mixRotate + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (mixRotate > 0) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; + if (tangents) + r = positions[p - 1]; + else if (spaces[i + 1] == 0) + r = positions[p + 2]; + else + r = Math.atan2(dy, dx); + r -= Math.atan2(c, a); + if (tip) { + cos = Math.cos(r); + sin = Math.sin(r); + var length_4 = bone.data.length; + boneX += (length_4 * (cos * a - sin * c) - dx) * mixRotate; + boneY += (length_4 * (sin * a + cos * c) - dy) * mixRotate; + } + else { + r += offsetRotation; + } + if (r > MathUtils.PI) + r -= MathUtils.PI2; + else if (r < -MathUtils.PI) // + r += MathUtils.PI2; + r *= mixRotate; + cos = Math.cos(r); + sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + bone.updateAppliedTransform(); + } + }; + PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents) { + var target = this.target; + var position = this.position; + var spaces = this.spaces, out = Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; + var closed = path.closed; + var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; + if (!path.constantSpeed) { + var lengths = path.lengths; + curveCount -= closed ? 1 : 2; + var pathLength_1 = lengths[curveCount]; + if (this.data.positionMode == exports.PositionMode.Percent) + position *= pathLength_1; + var multiplier_1; + switch (this.data.spacingMode) { + case exports.SpacingMode.Percent: + multiplier_1 = pathLength_1; + break; + case exports.SpacingMode.Proportional: + multiplier_1 = pathLength_1 / spacesCount; + break; + default: + multiplier_1 = 1; + } + world = Utils.setArraySize(this.world, 8); + for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i] * multiplier_1; + position += space; + var p = position; + if (closed) { + p %= pathLength_1; + if (p < 0) + p += pathLength_1; + curve = 0; + } + else if (p < 0) { + if (prevCurve != PathConstraint.BEFORE) { + prevCurve = PathConstraint.BEFORE; + path.computeWorldVertices(target, 2, 4, world, 0, 2); + } + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength_1) { + if (prevCurve != PathConstraint.AFTER) { + prevCurve = PathConstraint.AFTER; + path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2); + } + this.addAfterPosition(p - pathLength_1, world, 0, out, o); + continue; + } + // Determine curve containing position. + for (;; curve++) { + var length_5 = lengths[curve]; + if (p > length_5) + continue; + if (curve == 0) + p /= length_5; + else { + var prev = lengths[curve - 1]; + p = (p - prev) / (length_5 - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2); + path.computeWorldVertices(target, 0, 4, world, 4, 2); + } + else + path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2); + } + this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); + } + return out; + } + // World vertices. + if (closed) { + verticesLength += 2; + world = Utils.setArraySize(this.world, verticesLength); + path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2); + path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } + else { + curveCount--; + verticesLength -= 4; + world = Utils.setArraySize(this.world, verticesLength); + path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); + } + // Curve lengths. + var curves = Utils.setArraySize(this.curves, curveCount); + var pathLength = 0; + var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; + for (var i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (this.data.positionMode == exports.PositionMode.Percent) + position *= pathLength; + var multiplier; + switch (this.data.spacingMode) { + case exports.SpacingMode.Percent: + multiplier = pathLength; + break; + case exports.SpacingMode.Proportional: + multiplier = pathLength / spacesCount; + break; + default: + multiplier = 1; + } + var segments = this.segments; + var curveLength = 0; + for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i] * multiplier; + position += space; + var p = position; + if (closed) { + p %= pathLength; + if (p < 0) + p += pathLength; + curve = 0; + } + else if (p < 0) { + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength) { + this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + // Determine curve containing position. + for (;; curve++) { + var length_6 = curves[curve]; + if (p > length_6) + continue; + if (curve == 0) + p /= length_6; + else { + var prev = curves[curve - 1]; + p = (p - prev) / (length_6 - prev); + } + break; + } + // Curve segment lengths. + if (curve != prevCurve) { + prevCurve = curve; + var ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; + curveLength = Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + // Weight by segment length. + p *= curveLength; + for (;; segment++) { + var length_7 = segments[segment]; + if (p > length_7) + continue; + if (segment == 0) + p /= length_7; + else { + var prev = segments[segment - 1]; + p = segment + (p - prev) / (length_7 - prev); + } + break; + } + this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); + } + return out; + }; + PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { + var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { + var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { + if (p == 0 || isNaN(p)) { + out[o] = x1; + out[o + 1] = y1; + out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); + return; + } + var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + if (tangents) { + if (p < 0.001) + out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); + else + out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); + } + }; + PathConstraint.NONE = -1; + PathConstraint.BEFORE = -2; + PathConstraint.AFTER = -3; + PathConstraint.epsilon = 0.00001; + return PathConstraint; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores a slot's current pose. Slots organize attachments for {@link Skeleton#drawOrder} purposes and provide a place to store + * state for an attachment. State cannot be stored in an attachment itself because attachments are stateless and may be shared + * across multiple skeletons. */ + var Slot = /** @class */ (function () { + function Slot(data, bone) { + /** Values to deform the slot's attachment. For an unweighted mesh, the entries are local positions for each vertex. For a + * weighted mesh, the entries are an offset for each vertex which will be added to the mesh's local vertex positions. + * + * See {@link VertexAttachment#computeWorldVertices()} and {@link DeformTimeline}. */ + this.deform = new Array(); + if (!data) + throw new Error("data cannot be null."); + if (!bone) + throw new Error("bone cannot be null."); + this.data = data; + this.bone = bone; + this.color = new Color(); + this.darkColor = !data.darkColor ? null : new Color(); + this.setToSetupPose(); + } + /** The skeleton this slot belongs to. */ + Slot.prototype.getSkeleton = function () { + return this.bone.skeleton; + }; + /** The current attachment for the slot, or null if the slot has no attachment. */ + Slot.prototype.getAttachment = function () { + return this.attachment; + }; + /** Sets the slot's attachment and, if the attachment changed, resets {@link #attachmentTime} and clears the {@link #deform}. + * The deform is not cleared if the old attachment has the same {@link VertexAttachment#getDeformAttachment()} as the specified + * attachment. + * @param attachment May be null. */ + Slot.prototype.setAttachment = function (attachment) { + if (this.attachment == attachment) + return; + if (!(attachment instanceof VertexAttachment) || !(this.attachment instanceof VertexAttachment) + || attachment.deformAttachment != this.attachment.deformAttachment) { + this.deform.length = 0; + } + this.attachment = attachment; + this.attachmentTime = this.bone.skeleton.time; + }; + Slot.prototype.setAttachmentTime = function (time) { + this.attachmentTime = this.bone.skeleton.time - time; + }; + /** The time that has elapsed since the last time the attachment was set or cleared. Relies on Skeleton + * {@link Skeleton#time}. */ + Slot.prototype.getAttachmentTime = function () { + return this.bone.skeleton.time - this.attachmentTime; + }; + /** Sets this slot to the setup pose. */ + Slot.prototype.setToSetupPose = function () { + this.color.setFromColor(this.data.color); + if (this.darkColor) + this.darkColor.setFromColor(this.data.darkColor); + if (!this.data.attachmentName) + this.attachment = null; + else { + this.attachment = null; + this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); + } + }; + return Slot; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the current pose for a transform constraint. A transform constraint adjusts the world transform of the constrained + * bones to match that of the target bone. + * + * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */ + var TransformConstraint = /** @class */ (function () { + function TransformConstraint(data, skeleton) { + this.mixRotate = 0; + this.mixX = 0; + this.mixY = 0; + this.mixScaleX = 0; + this.mixScaleY = 0; + this.mixShearY = 0; + this.temp = new Vector2(); + this.active = false; + if (!data) + throw new Error("data cannot be null."); + if (!skeleton) + throw new Error("skeleton cannot be null."); + this.data = data; + this.mixRotate = data.mixRotate; + this.mixX = data.mixX; + this.mixY = data.mixY; + this.mixScaleX = data.mixScaleX; + this.mixScaleY = data.mixScaleY; + this.mixShearY = data.mixShearY; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + TransformConstraint.prototype.isActive = function () { + return this.active; + }; + TransformConstraint.prototype.update = function () { + if (this.mixRotate == 0 && this.mixX == 0 && this.mixY == 0 && this.mixScaleX == 0 && this.mixScaleX == 0 && this.mixShearY == 0) + return; + if (this.data.local) { + if (this.data.relative) + this.applyRelativeLocal(); + else + this.applyAbsoluteLocal(); + } + else { + if (this.data.relative) + this.applyRelativeWorld(); + else + this.applyAbsoluteWorld(); + } + }; + TransformConstraint.prototype.applyAbsoluteWorld = function () { + var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; + var translate = mixX != 0 || mixY != 0; + var target = this.target; + var ta = target.a, tb = target.b, tc = target.c, td = target.d; + var degRadReflect = ta * td - tb * tc > 0 ? MathUtils.degRad : -MathUtils.degRad; + var offsetRotation = this.data.offsetRotation * degRadReflect; + var offsetShearY = this.data.offsetShearY * degRadReflect; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (mixRotate != 0) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; + if (r > MathUtils.PI) + r -= MathUtils.PI2; + else if (r < -MathUtils.PI) // + r += MathUtils.PI2; + r *= mixRotate; + var cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + if (translate) { + var temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += (temp.x - bone.worldX) * mixX; + bone.worldY += (temp.y - bone.worldY) * mixY; + } + if (mixScaleX != 0) { + var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c); + if (s != 0) + s = (s + (Math.sqrt(ta * ta + tc * tc) - s + this.data.offsetScaleX) * mixScaleX) / s; + bone.a *= s; + bone.c *= s; + } + if (mixScaleY != 0) { + var s = Math.sqrt(bone.b * bone.b + bone.d * bone.d); + if (s != 0) + s = (s + (Math.sqrt(tb * tb + td * td) - s + this.data.offsetScaleY) * mixScaleY) / s; + bone.b *= s; + bone.d *= s; + } + if (mixShearY > 0) { + var b = bone.b, d = bone.d; + var by = Math.atan2(d, b); + var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); + if (r > MathUtils.PI) + r -= MathUtils.PI2; + else if (r < -MathUtils.PI) // + r += MathUtils.PI2; + r = by + (r + offsetShearY) * mixShearY; + var s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + } + bone.updateAppliedTransform(); + } + }; + TransformConstraint.prototype.applyRelativeWorld = function () { + var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; + var translate = mixX != 0 || mixY != 0; + var target = this.target; + var ta = target.a, tb = target.b, tc = target.c, td = target.d; + var degRadReflect = ta * td - tb * tc > 0 ? MathUtils.degRad : -MathUtils.degRad; + var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (mixRotate != 0) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var r = Math.atan2(tc, ta) + offsetRotation; + if (r > MathUtils.PI) + r -= MathUtils.PI2; + else if (r < -MathUtils.PI) // + r += MathUtils.PI2; + r *= mixRotate; + var cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + if (translate) { + var temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += temp.x * mixX; + bone.worldY += temp.y * mixY; + } + if (mixScaleX != 0) { + var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * mixScaleX + 1; + bone.a *= s; + bone.c *= s; + } + if (mixScaleY != 0) { + var s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * mixScaleY + 1; + bone.b *= s; + bone.d *= s; + } + if (mixShearY > 0) { + var r = Math.atan2(td, tb) - Math.atan2(tc, ta); + if (r > MathUtils.PI) + r -= MathUtils.PI2; + else if (r < -MathUtils.PI) // + r += MathUtils.PI2; + var b = bone.b, d = bone.d; + r = Math.atan2(d, b) + (r - MathUtils.PI / 2 + offsetShearY) * mixShearY; + var s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + } + bone.updateAppliedTransform(); + } + }; + TransformConstraint.prototype.applyAbsoluteLocal = function () { + var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; + var target = this.target; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + var rotation = bone.arotation; + if (mixRotate != 0) { + var r = target.arotation - rotation + this.data.offsetRotation; + r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; + rotation += r * mixRotate; + } + var x = bone.ax, y = bone.ay; + x += (target.ax - x + this.data.offsetX) * mixX; + y += (target.ay - y + this.data.offsetY) * mixY; + var scaleX = bone.ascaleX, scaleY = bone.ascaleY; + if (mixScaleX != 0 && scaleX != 0) + scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * mixScaleX) / scaleX; + if (mixScaleY != 0 && scaleY != 0) + scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * mixScaleY) / scaleY; + var shearY = bone.ashearY; + if (mixShearY != 0) { + var r = target.ashearY - shearY + this.data.offsetShearY; + r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; + shearY += r * mixShearY; + } + bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); + } + }; + TransformConstraint.prototype.applyRelativeLocal = function () { + var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; + var target = this.target; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + var rotation = bone.arotation + (target.arotation + this.data.offsetRotation) * mixRotate; + var x = bone.ax + (target.ax + this.data.offsetX) * mixX; + var y = bone.ay + (target.ay + this.data.offsetY) * mixY; + var scaleX = (bone.ascaleX * ((target.ascaleX - 1 + this.data.offsetScaleX) * mixScaleX) + 1); + var scaleY = (bone.ascaleY * ((target.ascaleY - 1 + this.data.offsetScaleY) * mixScaleY) + 1); + var shearY = bone.ashearY + (target.ashearY + this.data.offsetShearY) * mixShearY; + bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); + } + }; + return TransformConstraint; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the current pose for a skeleton. + * + * See [Instance objects](http://esotericsoftware.com/spine-runtime-architecture#Instance-objects) in the Spine Runtimes Guide. */ + var Skeleton = /** @class */ (function () { + function Skeleton(data) { + /** The list of bones and constraints, sorted in the order they should be updated, as computed by {@link #updateCache()}. */ + this._updateCache = new Array(); + /** Returns the skeleton's time. This can be used for tracking, such as with Slot {@link Slot#attachmentTime}. + *

        + * See {@link #update()}. */ + this.time = 0; + /** Scales the entire skeleton on the X axis. This affects all bones, even if the bone's transform mode disallows scale + * inheritance. */ + this.scaleX = 1; + /** Scales the entire skeleton on the Y axis. This affects all bones, even if the bone's transform mode disallows scale + * inheritance. */ + this.scaleY = 1; + /** Sets the skeleton X position, which is added to the root bone worldX position. */ + this.x = 0; + /** Sets the skeleton Y position, which is added to the root bone worldY position. */ + this.y = 0; + if (!data) + throw new Error("data cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) { + var boneData = data.bones[i]; + var bone = void 0; + if (!boneData.parent) + bone = new Bone(boneData, this, null); + else { + var parent_1 = this.bones[boneData.parent.index]; + bone = new Bone(boneData, this, parent_1); + parent_1.children.push(bone); + } + this.bones.push(bone); + } + this.slots = new Array(); + this.drawOrder = new Array(); + for (var i = 0; i < data.slots.length; i++) { + var slotData = data.slots[i]; + var bone = this.bones[slotData.boneData.index]; + var slot = new Slot(slotData, bone); + this.slots.push(slot); + this.drawOrder.push(slot); + } + this.ikConstraints = new Array(); + for (var i = 0; i < data.ikConstraints.length; i++) { + var ikConstraintData = data.ikConstraints[i]; + this.ikConstraints.push(new IkConstraint(ikConstraintData, this)); + } + this.transformConstraints = new Array(); + for (var i = 0; i < data.transformConstraints.length; i++) { + var transformConstraintData = data.transformConstraints[i]; + this.transformConstraints.push(new TransformConstraint(transformConstraintData, this)); + } + this.pathConstraints = new Array(); + for (var i = 0; i < data.pathConstraints.length; i++) { + var pathConstraintData = data.pathConstraints[i]; + this.pathConstraints.push(new PathConstraint(pathConstraintData, this)); + } + this.color = new Color(1, 1, 1, 1); + this.updateCache(); + } + /** Caches information about bones and constraints. Must be called if the {@link #getSkin()} is modified or if bones, + * constraints, or weighted path attachments are added or removed. */ + Skeleton.prototype.updateCache = function () { + var updateCache = this._updateCache; + updateCache.length = 0; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + bone.sorted = bone.data.skinRequired; + bone.active = !bone.sorted; + } + if (this.skin) { + var skinBones = this.skin.bones; + for (var i = 0, n = this.skin.bones.length; i < n; i++) { + var bone = this.bones[skinBones[i].index]; + do { + bone.sorted = false; + bone.active = true; + bone = bone.parent; + } while (bone); + } + } + // IK first, lowest hierarchy depth first. + var ikConstraints = this.ikConstraints; + var transformConstraints = this.transformConstraints; + var pathConstraints = this.pathConstraints; + var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length; + var constraintCount = ikCount + transformCount + pathCount; + outer: for (var i = 0; i < constraintCount; i++) { + for (var ii = 0; ii < ikCount; ii++) { + var constraint = ikConstraints[ii]; + if (constraint.data.order == i) { + this.sortIkConstraint(constraint); + continue outer; + } + } + for (var ii = 0; ii < transformCount; ii++) { + var constraint = transformConstraints[ii]; + if (constraint.data.order == i) { + this.sortTransformConstraint(constraint); + continue outer; + } + } + for (var ii = 0; ii < pathCount; ii++) { + var constraint = pathConstraints[ii]; + if (constraint.data.order == i) { + this.sortPathConstraint(constraint); + continue outer; + } + } + } + for (var i = 0, n = bones.length; i < n; i++) + this.sortBone(bones[i]); + }; + Skeleton.prototype.sortIkConstraint = function (constraint) { + constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true))); + if (!constraint.active) + return; + var target = constraint.target; + this.sortBone(target); + var constrained = constraint.bones; + var parent = constrained[0]; + this.sortBone(parent); + if (constrained.length == 1) { + this._updateCache.push(constraint); + this.sortReset(parent.children); + } + else { + var child = constrained[constrained.length - 1]; + this.sortBone(child); + this._updateCache.push(constraint); + this.sortReset(parent.children); + child.sorted = true; + } + }; + Skeleton.prototype.sortPathConstraint = function (constraint) { + constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true))); + if (!constraint.active) + return; + var slot = constraint.target; + var slotIndex = slot.data.index; + var slotBone = slot.bone; + if (this.skin) + this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); + if (this.data.defaultSkin && this.data.defaultSkin != this.skin) + this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); + for (var i = 0, n = this.data.skins.length; i < n; i++) + this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone); + var attachment = slot.getAttachment(); + if (attachment instanceof PathAttachment) + this.sortPathConstraintAttachmentWith(attachment, slotBone); + var constrained = constraint.bones; + var boneCount = constrained.length; + for (var i = 0; i < boneCount; i++) + this.sortBone(constrained[i]); + this._updateCache.push(constraint); + for (var i = 0; i < boneCount; i++) + this.sortReset(constrained[i].children); + for (var i = 0; i < boneCount; i++) + constrained[i].sorted = true; + }; + Skeleton.prototype.sortTransformConstraint = function (constraint) { + constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true))); + if (!constraint.active) + return; + this.sortBone(constraint.target); + var constrained = constraint.bones; + var boneCount = constrained.length; + if (constraint.data.local) { + for (var i = 0; i < boneCount; i++) { + var child = constrained[i]; + this.sortBone(child.parent); + this.sortBone(child); + } + } + else { + for (var i = 0; i < boneCount; i++) { + this.sortBone(constrained[i]); + } + } + this._updateCache.push(constraint); + for (var i = 0; i < boneCount; i++) + this.sortReset(constrained[i].children); + for (var i = 0; i < boneCount; i++) + constrained[i].sorted = true; + }; + Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { + var attachments = skin.attachments[slotIndex]; + if (!attachments) + return; + for (var key in attachments) { + this.sortPathConstraintAttachmentWith(attachments[key], slotBone); + } + }; + Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { + if (!(attachment instanceof PathAttachment)) + return; + var pathBones = attachment.bones; + if (!pathBones) + this.sortBone(slotBone); + else { + var bones = this.bones; + for (var i = 0, n = pathBones.length; i < n;) { + var nn = pathBones[i++]; + nn += i; + while (i < nn) + this.sortBone(bones[pathBones[i++]]); + } + } + }; + Skeleton.prototype.sortBone = function (bone) { + if (bone.sorted) + return; + var parent = bone.parent; + if (parent) + this.sortBone(parent); + bone.sorted = true; + this._updateCache.push(bone); + }; + Skeleton.prototype.sortReset = function (bones) { + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (!bone.active) + continue; + if (bone.sorted) + this.sortReset(bone.children); + bone.sorted = false; + } + }; + /** Updates the world transform for each bone and applies all constraints. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. */ + Skeleton.prototype.updateWorldTransform = function () { + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + bone.ax = bone.x; + bone.ay = bone.y; + bone.arotation = bone.rotation; + bone.ascaleX = bone.scaleX; + bone.ascaleY = bone.scaleY; + bone.ashearX = bone.shearX; + bone.ashearY = bone.shearY; + } + var updateCache = this._updateCache; + for (var i = 0, n = updateCache.length; i < n; i++) + updateCache[i].update(); + }; + Skeleton.prototype.updateWorldTransformWith = function (parent) { + // Apply the parent bone transform to the root bone. The root bone always inherits scale, rotation and reflection. + var rootBone = this.getRootBone(); + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + rootBone.worldX = pa * this.x + pb * this.y + parent.worldX; + rootBone.worldY = pc * this.x + pd * this.y + parent.worldY; + var rotationY = rootBone.rotation + 90 + rootBone.shearY; + var la = MathUtils.cosDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; + var lb = MathUtils.cosDeg(rotationY) * rootBone.scaleY; + var lc = MathUtils.sinDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; + var ld = MathUtils.sinDeg(rotationY) * rootBone.scaleY; + rootBone.a = (pa * la + pb * lc) * this.scaleX; + rootBone.b = (pa * lb + pb * ld) * this.scaleX; + rootBone.c = (pc * la + pd * lc) * this.scaleY; + rootBone.d = (pc * lb + pd * ld) * this.scaleY; + // Update everything except root bone. + var updateCache = this._updateCache; + for (var i = 0, n = updateCache.length; i < n; i++) { + var updatable = updateCache[i]; + if (updatable != rootBone) + updatable.update(); + } + }; + /** Sets the bones, constraints, and slots to their setup pose values. */ + Skeleton.prototype.setToSetupPose = function () { + this.setBonesToSetupPose(); + this.setSlotsToSetupPose(); + }; + /** Sets the bones and constraints to their setup pose values. */ + Skeleton.prototype.setBonesToSetupPose = function () { + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + bones[i].setToSetupPose(); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + constraint.mix = constraint.data.mix; + constraint.softness = constraint.data.softness; + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + } + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + var data = constraint.data; + constraint.mixRotate = data.mixRotate; + constraint.mixX = data.mixX; + constraint.mixY = data.mixY; + constraint.mixScaleX = data.mixScaleX; + constraint.mixScaleY = data.mixScaleY; + constraint.mixShearY = data.mixShearY; + } + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + var data = constraint.data; + constraint.position = data.position; + constraint.spacing = data.spacing; + constraint.mixRotate = data.mixRotate; + constraint.mixX = data.mixX; + constraint.mixY = data.mixY; + } + }; + /** Sets the slots and draw order to their setup pose values. */ + Skeleton.prototype.setSlotsToSetupPose = function () { + var slots = this.slots; + Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); + for (var i = 0, n = slots.length; i < n; i++) + slots[i].setToSetupPose(); + }; + /** @returns May return null. */ + Skeleton.prototype.getRootBone = function () { + if (this.bones.length == 0) + return null; + return this.bones[0]; + }; + /** @returns May be null. */ + Skeleton.prototype.findBone = function (boneName) { + if (!boneName) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.data.name == boneName) + return bone; + } + return null; + }; + /** @returns -1 if the bone was not found. */ + Skeleton.prototype.findBoneIndex = function (boneName) { + if (!boneName) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].data.name == boneName) + return i; + return -1; + }; + /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it + * repeatedly. + * @returns May be null. */ + Skeleton.prototype.findSlot = function (slotName) { + if (!slotName) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) + return slot; + } + return null; + }; + /** @returns -1 if the bone was not found. */ + Skeleton.prototype.findSlotIndex = function (slotName) { + if (!slotName) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].data.name == slotName) + return i; + return -1; + }; + /** Sets a skin by name. + * + * See {@link #setSkin()}. */ + Skeleton.prototype.setSkinByName = function (skinName) { + var skin = this.data.findSkin(skinName); + if (!skin) + throw new Error("Skin not found: " + skinName); + this.setSkin(skin); + }; + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#defaultSkin default skin}. If the + * skin is changed, {@link #updateCache()} is called. + * + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * + * After changing the skin, the visible attachments can be reset to those attached in the setup pose by calling + * {@link #setSlotsToSetupPose()}. Also, often {@link AnimationState#apply()} is called before the next time the + * skeleton is rendered to allow any attachment keys in the current animation(s) to hide or show attachments from the new skin. + * @param newSkin May be null. */ + Skeleton.prototype.setSkin = function (newSkin) { + if (newSkin == this.skin) + return; + if (newSkin) { + if (this.skin) + newSkin.attachAll(this, this.skin); + else { + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + var name_1 = slot.data.attachmentName; + if (name_1) { + var attachment = newSkin.getAttachment(i, name_1); + if (attachment) + slot.setAttachment(attachment); + } + } + } + } + this.skin = newSkin; + this.updateCache(); + }; + /** Finds an attachment by looking in the {@link #skin} and {@link SkeletonData#defaultSkin} using the slot name and attachment + * name. + * + * See {@link #getAttachment()}. + * @returns May be null. */ + Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { + return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); + }; + /** Finds an attachment by looking in the {@link #skin} and {@link SkeletonData#defaultSkin} using the slot index and + * attachment name. First the skin is checked and if the attachment was not found, the default skin is checked. + * + * See [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide. + * @returns May be null. */ + Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { + if (!attachmentName) + throw new Error("attachmentName cannot be null."); + if (this.skin) { + var attachment = this.skin.getAttachment(slotIndex, attachmentName); + if (attachment) + return attachment; + } + if (this.data.defaultSkin) + return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); + return null; + }; + /** A convenience method to set an attachment by finding the slot with {@link #findSlot()}, finding the attachment with + * {@link #getAttachment()}, then setting the slot's {@link Slot#attachment}. + * @param attachmentName May be null to clear the slot's attachment. */ + Skeleton.prototype.setAttachment = function (slotName, attachmentName) { + if (!slotName) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) { + var attachment = null; + if (attachmentName) { + attachment = this.getAttachment(i, attachmentName); + if (!attachment) + throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); + } + slot.setAttachment(attachment); + return; + } + } + throw new Error("Slot not found: " + slotName); + }; + /** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method + * than to call it repeatedly. + * @return May be null. */ + Skeleton.prototype.findIkConstraint = function (constraintName) { + if (!constraintName) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var ikConstraint = ikConstraints[i]; + if (ikConstraint.data.name == constraintName) + return ikConstraint; + } + return null; + }; + /** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of + * this method than to call it repeatedly. + * @return May be null. */ + Skeleton.prototype.findTransformConstraint = function (constraintName) { + if (!constraintName) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + /** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method + * than to call it repeatedly. + * @return May be null. */ + Skeleton.prototype.findPathConstraint = function (constraintName) { + if (!constraintName) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset An output value, the distance from the skeleton origin to the bottom left corner of the AABB. + * @param size An output value, the width and height of the AABB. + * @param temp Working memory to temporarily store attachments' computed world vertices. */ + Skeleton.prototype.getBounds = function (offset, size, temp) { + if (temp === void 0) { temp = new Array(2); } + if (!offset) + throw new Error("offset cannot be null."); + if (!size) + throw new Error("size cannot be null."); + var drawOrder = this.drawOrder; + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + if (!slot.bone.active) + continue; + var verticesLength = 0; + var vertices = null; + var attachment = slot.getAttachment(); + if (attachment instanceof RegionAttachment) { + verticesLength = 8; + vertices = Utils.setArraySize(temp, verticesLength, 0); + attachment.computeWorldVertices(slot.bone, vertices, 0, 2); + } + else if (attachment instanceof MeshAttachment) { + var mesh = attachment; + verticesLength = mesh.worldVerticesLength; + vertices = Utils.setArraySize(temp, verticesLength, 0); + mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2); + } + if (vertices) { + for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) { + var x = vertices[ii], y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + } + offset.set(minX, minY); + size.set(maxX - minX, maxY - minY); + }; + /** Increments the skeleton's {@link #time}. */ + Skeleton.prototype.update = function (delta) { + this.time += delta; + }; + return Skeleton; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the setup pose and all of the stateless data for a skeleton. + * + * See [Data objects](http://esotericsoftware.com/spine-runtime-architecture#Data-objects) in the Spine Runtimes + * Guide. */ + var SkeletonData = /** @class */ (function () { + function SkeletonData() { + /** The skeleton's bones, sorted parent first. The root bone is always the first bone. */ + this.bones = new Array(); // Ordered parents first. + /** The skeleton's slots. */ + this.slots = new Array(); // Setup pose draw order. + this.skins = new Array(); + /** The skeleton's events. */ + this.events = new Array(); + /** The skeleton's animations. */ + this.animations = new Array(); + /** The skeleton's IK constraints. */ + this.ikConstraints = new Array(); + /** The skeleton's transform constraints. */ + this.transformConstraints = new Array(); + /** The skeleton's path constraints. */ + this.pathConstraints = new Array(); + // Nonessential + /** The dopesheet FPS in Spine. Available only when nonessential data was exported. */ + this.fps = 0; + } + /** Finds a bone by comparing each bone's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + SkeletonData.prototype.findBone = function (boneName) { + if (!boneName) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.name == boneName) + return bone; + } + return null; + }; + SkeletonData.prototype.findBoneIndex = function (boneName) { + if (!boneName) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].name == boneName) + return i; + return -1; + }; + /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + SkeletonData.prototype.findSlot = function (slotName) { + if (!slotName) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.name == slotName) + return slot; + } + return null; + }; + SkeletonData.prototype.findSlotIndex = function (slotName) { + if (!slotName) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].name == slotName) + return i; + return -1; + }; + /** Finds a skin by comparing each skin's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + SkeletonData.prototype.findSkin = function (skinName) { + if (!skinName) + throw new Error("skinName cannot be null."); + var skins = this.skins; + for (var i = 0, n = skins.length; i < n; i++) { + var skin = skins[i]; + if (skin.name == skinName) + return skin; + } + return null; + }; + /** Finds an event by comparing each events's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + SkeletonData.prototype.findEvent = function (eventDataName) { + if (!eventDataName) + throw new Error("eventDataName cannot be null."); + var events = this.events; + for (var i = 0, n = events.length; i < n; i++) { + var event_1 = events[i]; + if (event_1.name == eventDataName) + return event_1; + } + return null; + }; + /** Finds an animation by comparing each animation's name. It is more efficient to cache the results of this method than to + * call it multiple times. + * @returns May be null. */ + SkeletonData.prototype.findAnimation = function (animationName) { + if (!animationName) + throw new Error("animationName cannot be null."); + var animations = this.animations; + for (var i = 0, n = animations.length; i < n; i++) { + var animation = animations[i]; + if (animation.name == animationName) + return animation; + } + return null; + }; + /** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method + * than to call it multiple times. + * @return May be null. */ + SkeletonData.prototype.findIkConstraint = function (constraintName) { + if (!constraintName) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + /** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of + * this method than to call it multiple times. + * @return May be null. */ + SkeletonData.prototype.findTransformConstraint = function (constraintName) { + if (!constraintName) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + /** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method + * than to call it multiple times. + * @return May be null. */ + SkeletonData.prototype.findPathConstraint = function (constraintName) { + if (!constraintName) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + return SkeletonData; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores an entry in the skin consisting of the slot index, name, and attachment **/ + var SkinEntry = /** @class */ (function () { + function SkinEntry(slotIndex, name, attachment) { + this.slotIndex = slotIndex; + this.name = name; + this.attachment = attachment; + } + return SkinEntry; + }()); + /** Stores attachments by slot index and attachment name. + * + * See SkeletonData {@link SkeletonData#defaultSkin}, Skeleton {@link Skeleton#skin}, and + * [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide. */ + var Skin = /** @class */ (function () { + function Skin(name) { + this.attachments = new Array(); + this.bones = Array(); + this.constraints = new Array(); + if (!name) + throw new Error("name cannot be null."); + this.name = name; + } + /** Adds an attachment to the skin for the specified slot index and name. */ + Skin.prototype.setAttachment = function (slotIndex, name, attachment) { + if (!attachment) + throw new Error("attachment cannot be null."); + var attachments = this.attachments; + if (slotIndex >= attachments.length) + attachments.length = slotIndex + 1; + if (!attachments[slotIndex]) + attachments[slotIndex] = {}; + attachments[slotIndex][name] = attachment; + }; + /** Adds all attachments, bones, and constraints from the specified skin to this skin. */ + Skin.prototype.addSkin = function (skin) { + for (var i = 0; i < skin.bones.length; i++) { + var bone = skin.bones[i]; + var contained = false; + for (var ii = 0; ii < this.bones.length; ii++) { + if (this.bones[ii] == bone) { + contained = true; + break; + } + } + if (!contained) + this.bones.push(bone); + } + for (var i = 0; i < skin.constraints.length; i++) { + var constraint = skin.constraints[i]; + var contained = false; + for (var ii = 0; ii < this.constraints.length; ii++) { + if (this.constraints[ii] == constraint) { + contained = true; + break; + } + } + if (!contained) + this.constraints.push(constraint); + } + var attachments = skin.getAttachments(); + for (var i = 0; i < attachments.length; i++) { + var attachment = attachments[i]; + this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); + } + }; + /** Adds all bones and constraints and copies of all attachments from the specified skin to this skin. Mesh attachments are not + * copied, instead a new linked mesh is created. The attachment copies can be modified without affecting the originals. */ + Skin.prototype.copySkin = function (skin) { + for (var i = 0; i < skin.bones.length; i++) { + var bone = skin.bones[i]; + var contained = false; + for (var ii = 0; ii < this.bones.length; ii++) { + if (this.bones[ii] == bone) { + contained = true; + break; + } + } + if (!contained) + this.bones.push(bone); + } + for (var i = 0; i < skin.constraints.length; i++) { + var constraint = skin.constraints[i]; + var contained = false; + for (var ii = 0; ii < this.constraints.length; ii++) { + if (this.constraints[ii] == constraint) { + contained = true; + break; + } + } + if (!contained) + this.constraints.push(constraint); + } + var attachments = skin.getAttachments(); + for (var i = 0; i < attachments.length; i++) { + var attachment = attachments[i]; + if (!attachment.attachment) + continue; + if (attachment.attachment instanceof MeshAttachment) { + attachment.attachment = attachment.attachment.newLinkedMesh(); + this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); + } + else { + attachment.attachment = attachment.attachment.copy(); + this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); + } + } + }; + /** Returns the attachment for the specified slot index and name, or null. */ + Skin.prototype.getAttachment = function (slotIndex, name) { + var dictionary = this.attachments[slotIndex]; + return dictionary ? dictionary[name] : null; + }; + /** Removes the attachment in the skin for the specified slot index and name, if any. */ + Skin.prototype.removeAttachment = function (slotIndex, name) { + var dictionary = this.attachments[slotIndex]; + if (dictionary) + dictionary[name] = null; + }; + /** Returns all attachments in this skin. */ + Skin.prototype.getAttachments = function () { + var entries = new Array(); + for (var i = 0; i < this.attachments.length; i++) { + var slotAttachments = this.attachments[i]; + if (slotAttachments) { + for (var name_1 in slotAttachments) { + var attachment = slotAttachments[name_1]; + if (attachment) + entries.push(new SkinEntry(i, name_1, attachment)); + } + } + } + return entries; + }; + /** Returns all attachments in this skin for the specified slot index. */ + Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) { + var slotAttachments = this.attachments[slotIndex]; + if (slotAttachments) { + for (var name_2 in slotAttachments) { + var attachment = slotAttachments[name_2]; + if (attachment) + attachments.push(new SkinEntry(slotIndex, name_2, attachment)); + } + } + }; + /** Clears all attachments, bones, and constraints. */ + Skin.prototype.clear = function () { + this.attachments.length = 0; + this.bones.length = 0; + this.constraints.length = 0; + }; + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + Skin.prototype.attachAll = function (skeleton, oldSkin) { + var slotIndex = 0; + for (var i = 0; i < skeleton.slots.length; i++) { + var slot = skeleton.slots[i]; + var slotAttachment = slot.getAttachment(); + if (slotAttachment && slotIndex < oldSkin.attachments.length) { + var dictionary = oldSkin.attachments[slotIndex]; + for (var key in dictionary) { + var skinAttachment = dictionary[key]; + if (slotAttachment == skinAttachment) { + var attachment = this.getAttachment(slotIndex, key); + if (attachment) + slot.setAttachment(attachment); + break; + } + } + } + slotIndex++; + } + }; + return Skin; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the setup pose for a {@link Slot}. */ + var SlotData = /** @class */ (function () { + function SlotData(index, name, boneData) { + /** The color used to tint the slot's attachment. If {@link #getDarkColor()} is set, this is used as the light color for two + * color tinting. */ + this.color = new Color(1, 1, 1, 1); + if (index < 0) + throw new Error("index must be >= 0."); + if (!name) + throw new Error("name cannot be null."); + if (!boneData) + throw new Error("boneData cannot be null."); + this.index = index; + this.name = name; + this.boneData = boneData; + } + return SlotData; + }()); + /** Determines how images are blended with existing pixels when drawn. */ + exports.BlendMode = void 0; + (function (BlendMode) { + BlendMode[BlendMode["Normal"] = 0] = "Normal"; + BlendMode[BlendMode["Additive"] = 1] = "Additive"; + BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; + BlendMode[BlendMode["Screen"] = 3] = "Screen"; + })(exports.BlendMode || (exports.BlendMode = {})); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$2 = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** Stores the setup pose for a {@link TransformConstraint}. + * + * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */ + var TransformConstraintData = /** @class */ (function (_super) { + __extends$2(TransformConstraintData, _super); + function TransformConstraintData(name) { + var _this = _super.call(this, name, 0, false) || this; + /** The bones that will be modified by this transform constraint. */ + _this.bones = new Array(); + _this.mixRotate = 0; + _this.mixX = 0; + _this.mixY = 0; + _this.mixScaleX = 0; + _this.mixScaleY = 0; + _this.mixShearY = 0; + /** An offset added to the constrained bone rotation. */ + _this.offsetRotation = 0; + /** An offset added to the constrained bone X translation. */ + _this.offsetX = 0; + /** An offset added to the constrained bone Y translation. */ + _this.offsetY = 0; + /** An offset added to the constrained bone scaleX. */ + _this.offsetScaleX = 0; + /** An offset added to the constrained bone scaleY. */ + _this.offsetScaleY = 0; + /** An offset added to the constrained bone shearY. */ + _this.offsetShearY = 0; + _this.relative = false; + _this.local = false; + return _this; + } + return TransformConstraintData; + }(ConstraintData)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Loads skeleton data in the Spine binary format. + * + * See [Spine binary format](http://esotericsoftware.com/spine-binary-format) and + * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine + * Runtimes Guide. */ + var SkeletonBinary = /** @class */ (function () { + function SkeletonBinary(attachmentLoader) { + /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at + * runtime than were used in Spine. + * + * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */ + this.scale = 1; + this.linkedMeshes = new Array(); + this.attachmentLoader = attachmentLoader; + } + SkeletonBinary.prototype.readSkeletonData = function (binary) { + var scale = this.scale; + var skeletonData = new SkeletonData(); + skeletonData.name = ""; // BOZO + var input = new BinaryInput(binary); + var lowHash = input.readInt32(); + var highHash = input.readInt32(); + skeletonData.hash = highHash == 0 && lowHash == 0 ? null : highHash.toString(16) + lowHash.toString(16); + skeletonData.version = input.readString(); + skeletonData.x = input.readFloat(); + skeletonData.y = input.readFloat(); + skeletonData.width = input.readFloat(); + skeletonData.height = input.readFloat(); + var nonessential = input.readBoolean(); + if (nonessential) { + skeletonData.fps = input.readFloat(); + skeletonData.imagesPath = input.readString(); + skeletonData.audioPath = input.readString(); + } + var n = 0; + // Strings. + n = input.readInt(true); + for (var i = 0; i < n; i++) + input.strings.push(input.readString()); + // Bones. + n = input.readInt(true); + for (var i = 0; i < n; i++) { + var name_1 = input.readString(); + var parent_1 = i == 0 ? null : skeletonData.bones[input.readInt(true)]; + var data = new BoneData(i, name_1, parent_1); + data.rotation = input.readFloat(); + data.x = input.readFloat() * scale; + data.y = input.readFloat() * scale; + data.scaleX = input.readFloat(); + data.scaleY = input.readFloat(); + data.shearX = input.readFloat(); + data.shearY = input.readFloat(); + data.length = input.readFloat() * scale; + data.transformMode = input.readInt(true); + data.skinRequired = input.readBoolean(); + if (nonessential) + Color.rgba8888ToColor(data.color, input.readInt32()); + skeletonData.bones.push(data); + } + // Slots. + n = input.readInt(true); + for (var i = 0; i < n; i++) { + var slotName = input.readString(); + var boneData = skeletonData.bones[input.readInt(true)]; + var data = new SlotData(i, slotName, boneData); + Color.rgba8888ToColor(data.color, input.readInt32()); + var darkColor = input.readInt32(); + if (darkColor != -1) + Color.rgb888ToColor(data.darkColor = new Color(), darkColor); + data.attachmentName = input.readStringRef(); + data.blendMode = input.readInt(true); + skeletonData.slots.push(data); + } + // IK constraints. + n = input.readInt(true); + for (var i = 0, nn = void 0; i < n; i++) { + var data = new IkConstraintData(input.readString()); + data.order = input.readInt(true); + data.skinRequired = input.readBoolean(); + nn = input.readInt(true); + for (var ii = 0; ii < nn; ii++) + data.bones.push(skeletonData.bones[input.readInt(true)]); + data.target = skeletonData.bones[input.readInt(true)]; + data.mix = input.readFloat(); + data.softness = input.readFloat() * scale; + data.bendDirection = input.readByte(); + data.compress = input.readBoolean(); + data.stretch = input.readBoolean(); + data.uniform = input.readBoolean(); + skeletonData.ikConstraints.push(data); + } + // Transform constraints. + n = input.readInt(true); + for (var i = 0, nn = void 0; i < n; i++) { + var data = new TransformConstraintData(input.readString()); + data.order = input.readInt(true); + data.skinRequired = input.readBoolean(); + nn = input.readInt(true); + for (var ii = 0; ii < nn; ii++) + data.bones.push(skeletonData.bones[input.readInt(true)]); + data.target = skeletonData.bones[input.readInt(true)]; + data.local = input.readBoolean(); + data.relative = input.readBoolean(); + data.offsetRotation = input.readFloat(); + data.offsetX = input.readFloat() * scale; + data.offsetY = input.readFloat() * scale; + data.offsetScaleX = input.readFloat(); + data.offsetScaleY = input.readFloat(); + data.offsetShearY = input.readFloat(); + data.mixRotate = input.readFloat(); + data.mixX = input.readFloat(); + data.mixY = input.readFloat(); + data.mixScaleX = input.readFloat(); + data.mixScaleY = input.readFloat(); + data.mixShearY = input.readFloat(); + skeletonData.transformConstraints.push(data); + } + // Path constraints. + n = input.readInt(true); + for (var i = 0, nn = void 0; i < n; i++) { + var data = new PathConstraintData(input.readString()); + data.order = input.readInt(true); + data.skinRequired = input.readBoolean(); + nn = input.readInt(true); + for (var ii = 0; ii < nn; ii++) + data.bones.push(skeletonData.bones[input.readInt(true)]); + data.target = skeletonData.slots[input.readInt(true)]; + data.positionMode = input.readInt(true); + data.spacingMode = input.readInt(true); + data.rotateMode = input.readInt(true); + data.offsetRotation = input.readFloat(); + data.position = input.readFloat(); + if (data.positionMode == exports.PositionMode.Fixed) + data.position *= scale; + data.spacing = input.readFloat(); + if (data.spacingMode == exports.SpacingMode.Length || data.spacingMode == exports.SpacingMode.Fixed) + data.spacing *= scale; + data.mixRotate = input.readFloat(); + data.mixX = input.readFloat(); + data.mixY = input.readFloat(); + skeletonData.pathConstraints.push(data); + } + // Default skin. + var defaultSkin = this.readSkin(input, skeletonData, true, nonessential); + if (defaultSkin) { + skeletonData.defaultSkin = defaultSkin; + skeletonData.skins.push(defaultSkin); + } + // Skins. + { + var i = skeletonData.skins.length; + Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); + for (; i < n; i++) + skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential); + } + // Linked meshes. + n = this.linkedMeshes.length; + for (var i = 0; i < n; i++) { + var linkedMesh = this.linkedMeshes[i]; + var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + var parent_2 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_2 : linkedMesh.mesh; + linkedMesh.mesh.setParentMesh(parent_2); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + // Events. + n = input.readInt(true); + for (var i = 0; i < n; i++) { + var data = new EventData(input.readStringRef()); + data.intValue = input.readInt(false); + data.floatValue = input.readFloat(); + data.stringValue = input.readString(); + data.audioPath = input.readString(); + if (data.audioPath) { + data.volume = input.readFloat(); + data.balance = input.readFloat(); + } + skeletonData.events.push(data); + } + // Animations. + n = input.readInt(true); + for (var i = 0; i < n; i++) + skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData)); + return skeletonData; + }; + SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) { + var skin = null; + var slotCount = 0; + if (defaultSkin) { + slotCount = input.readInt(true); + if (slotCount == 0) + return null; + skin = new Skin("default"); + } + else { + skin = new Skin(input.readStringRef()); + skin.bones.length = input.readInt(true); + for (var i = 0, n = skin.bones.length; i < n; i++) + skin.bones[i] = skeletonData.bones[input.readInt(true)]; + for (var i = 0, n = input.readInt(true); i < n; i++) + skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]); + for (var i = 0, n = input.readInt(true); i < n; i++) + skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]); + for (var i = 0, n = input.readInt(true); i < n; i++) + skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]); + slotCount = input.readInt(true); + } + for (var i = 0; i < slotCount; i++) { + var slotIndex = input.readInt(true); + for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { + var name_2 = input.readStringRef(); + var attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name_2, nonessential); + if (attachment) + skin.setAttachment(slotIndex, name_2, attachment); + } + } + return skin; + }; + SkeletonBinary.prototype.readAttachment = function (input, skeletonData, skin, slotIndex, attachmentName, nonessential) { + var scale = this.scale; + var name = input.readStringRef(); + if (!name) + name = attachmentName; + switch (input.readByte()) { + case AttachmentType.Region: { + var path = input.readStringRef(); + var rotation = input.readFloat(); + var x = input.readFloat(); + var y = input.readFloat(); + var scaleX = input.readFloat(); + var scaleY = input.readFloat(); + var width = input.readFloat(); + var height = input.readFloat(); + var color = input.readInt32(); + if (!path) + path = name; + var region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (!region) + return null; + region.path = path; + region.x = x * scale; + region.y = y * scale; + region.scaleX = scaleX; + region.scaleY = scaleY; + region.rotation = rotation; + region.width = width * scale; + region.height = height * scale; + Color.rgba8888ToColor(region.color, color); + region.updateOffset(); + return region; + } + case AttachmentType.BoundingBox: { + var vertexCount = input.readInt(true); + var vertices = this.readVertices(input, vertexCount); + var color = nonessential ? input.readInt32() : 0; + var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (!box) + return null; + box.worldVerticesLength = vertexCount << 1; + box.vertices = vertices.vertices; + box.bones = vertices.bones; + if (nonessential) + Color.rgba8888ToColor(box.color, color); + return box; + } + case AttachmentType.Mesh: { + var path = input.readStringRef(); + var color = input.readInt32(); + var vertexCount = input.readInt(true); + var uvs = this.readFloatArray(input, vertexCount << 1, 1); + var triangles = this.readShortArray(input); + var vertices = this.readVertices(input, vertexCount); + var hullLength = input.readInt(true); + var edges = null; + var width = 0, height = 0; + if (nonessential) { + edges = this.readShortArray(input); + width = input.readFloat(); + height = input.readFloat(); + } + if (!path) + path = name; + var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (!mesh) + return null; + mesh.path = path; + Color.rgba8888ToColor(mesh.color, color); + mesh.bones = vertices.bones; + mesh.vertices = vertices.vertices; + mesh.worldVerticesLength = vertexCount << 1; + mesh.triangles = triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + mesh.hullLength = hullLength << 1; + if (nonessential) { + mesh.edges = edges; + mesh.width = width * scale; + mesh.height = height * scale; + } + return mesh; + } + case AttachmentType.LinkedMesh: { + var path = input.readStringRef(); + var color = input.readInt32(); + var skinName = input.readStringRef(); + var parent_3 = input.readStringRef(); + var inheritDeform = input.readBoolean(); + var width = 0, height = 0; + if (nonessential) { + width = input.readFloat(); + height = input.readFloat(); + } + if (!path) + path = name; + var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (!mesh) + return null; + mesh.path = path; + Color.rgba8888ToColor(mesh.color, color); + if (nonessential) { + mesh.width = width * scale; + mesh.height = height * scale; + } + this.linkedMeshes.push(new LinkedMesh$1(mesh, skinName, slotIndex, parent_3, inheritDeform)); + return mesh; + } + case AttachmentType.Path: { + var closed_1 = input.readBoolean(); + var constantSpeed = input.readBoolean(); + var vertexCount = input.readInt(true); + var vertices = this.readVertices(input, vertexCount); + var lengths = Utils.newArray(vertexCount / 3, 0); + for (var i = 0, n = lengths.length; i < n; i++) + lengths[i] = input.readFloat() * scale; + var color = nonessential ? input.readInt32() : 0; + var path = this.attachmentLoader.newPathAttachment(skin, name); + if (!path) + return null; + path.closed = closed_1; + path.constantSpeed = constantSpeed; + path.worldVerticesLength = vertexCount << 1; + path.vertices = vertices.vertices; + path.bones = vertices.bones; + path.lengths = lengths; + if (nonessential) + Color.rgba8888ToColor(path.color, color); + return path; + } + case AttachmentType.Point: { + var rotation = input.readFloat(); + var x = input.readFloat(); + var y = input.readFloat(); + var color = nonessential ? input.readInt32() : 0; + var point = this.attachmentLoader.newPointAttachment(skin, name); + if (!point) + return null; + point.x = x * scale; + point.y = y * scale; + point.rotation = rotation; + if (nonessential) + Color.rgba8888ToColor(point.color, color); + return point; + } + case AttachmentType.Clipping: { + var endSlotIndex = input.readInt(true); + var vertexCount = input.readInt(true); + var vertices = this.readVertices(input, vertexCount); + var color = nonessential ? input.readInt32() : 0; + var clip = this.attachmentLoader.newClippingAttachment(skin, name); + if (!clip) + return null; + clip.endSlot = skeletonData.slots[endSlotIndex]; + clip.worldVerticesLength = vertexCount << 1; + clip.vertices = vertices.vertices; + clip.bones = vertices.bones; + if (nonessential) + Color.rgba8888ToColor(clip.color, color); + return clip; + } + } + return null; + }; + SkeletonBinary.prototype.readVertices = function (input, vertexCount) { + var scale = this.scale; + var verticesLength = vertexCount << 1; + var vertices = new Vertices(); + if (!input.readBoolean()) { + vertices.vertices = this.readFloatArray(input, verticesLength, scale); + return vertices; + } + var weights = new Array(); + var bonesArray = new Array(); + for (var i = 0; i < vertexCount; i++) { + var boneCount = input.readInt(true); + bonesArray.push(boneCount); + for (var ii = 0; ii < boneCount; ii++) { + bonesArray.push(input.readInt(true)); + weights.push(input.readFloat() * scale); + weights.push(input.readFloat() * scale); + weights.push(input.readFloat()); + } + } + vertices.vertices = Utils.toFloatArray(weights); + vertices.bones = bonesArray; + return vertices; + }; + SkeletonBinary.prototype.readFloatArray = function (input, n, scale) { + var array = new Array(n); + if (scale == 1) { + for (var i = 0; i < n; i++) + array[i] = input.readFloat(); + } + else { + for (var i = 0; i < n; i++) + array[i] = input.readFloat() * scale; + } + return array; + }; + SkeletonBinary.prototype.readShortArray = function (input) { + var n = input.readInt(true); + var array = new Array(n); + for (var i = 0; i < n; i++) + array[i] = input.readShort(); + return array; + }; + SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) { + input.readInt(true); // Number of timelines. + var timelines = new Array(); + var scale = this.scale; + new Color(); + new Color(); + // Slot timelines. + for (var i = 0, n = input.readInt(true); i < n; i++) { + var slotIndex = input.readInt(true); + for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { + var timelineType = input.readByte(); + var frameCount = input.readInt(true); + var frameLast = frameCount - 1; + switch (timelineType) { + case SLOT_ATTACHMENT: { + var timeline = new AttachmentTimeline(frameCount, slotIndex); + for (var frame = 0; frame < frameCount; frame++) + timeline.setFrame(frame, input.readFloat(), input.readStringRef()); + timelines.push(timeline); + break; + } + case SLOT_RGBA: { + var bezierCount = input.readInt(true); + var timeline = new RGBATimeline(frameCount, bezierCount, slotIndex); + var time = input.readFloat(); + var r = input.readUnsignedByte() / 255.0; + var g = input.readUnsignedByte() / 255.0; + var b = input.readUnsignedByte() / 255.0; + var a = input.readUnsignedByte() / 255.0; + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, r, g, b, a); + if (frame == frameLast) + break; + var time2 = input.readFloat(); + var r2 = input.readUnsignedByte() / 255.0; + var g2 = input.readUnsignedByte() / 255.0; + var b2 = input.readUnsignedByte() / 255.0; + var a2 = input.readUnsignedByte() / 255.0; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); + setBezier(input, timeline, bezier++, frame, 3, time, time2, a, a2, 1); + } + time = time2; + r = r2; + g = g2; + b = b2; + a = a2; + } + timelines.push(timeline); + break; + } + case SLOT_RGB: { + var bezierCount = input.readInt(true); + var timeline = new RGBTimeline(frameCount, bezierCount, slotIndex); + var time = input.readFloat(); + var r = input.readUnsignedByte() / 255.0; + var g = input.readUnsignedByte() / 255.0; + var b = input.readUnsignedByte() / 255.0; + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, r, g, b); + if (frame == frameLast) + break; + var time2 = input.readFloat(); + var r2 = input.readUnsignedByte() / 255.0; + var g2 = input.readUnsignedByte() / 255.0; + var b2 = input.readUnsignedByte() / 255.0; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); + } + time = time2; + r = r2; + g = g2; + b = b2; + } + timelines.push(timeline); + break; + } + case SLOT_RGBA2: { + var bezierCount = input.readInt(true); + var timeline = new RGBA2Timeline(frameCount, bezierCount, slotIndex); + var time = input.readFloat(); + var r = input.readUnsignedByte() / 255.0; + var g = input.readUnsignedByte() / 255.0; + var b = input.readUnsignedByte() / 255.0; + var a = input.readUnsignedByte() / 255.0; + var r2 = input.readUnsignedByte() / 255.0; + var g2 = input.readUnsignedByte() / 255.0; + var b2 = input.readUnsignedByte() / 255.0; + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, r, g, b, a, r2, g2, b2); + if (frame == frameLast) + break; + var time2 = input.readFloat(); + var nr = input.readUnsignedByte() / 255.0; + var ng = input.readUnsignedByte() / 255.0; + var nb = input.readUnsignedByte() / 255.0; + var na = input.readUnsignedByte() / 255.0; + var nr2 = input.readUnsignedByte() / 255.0; + var ng2 = input.readUnsignedByte() / 255.0; + var nb2 = input.readUnsignedByte() / 255.0; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); + setBezier(input, timeline, bezier++, frame, 3, time, time2, a, na, 1); + setBezier(input, timeline, bezier++, frame, 4, time, time2, r2, nr2, 1); + setBezier(input, timeline, bezier++, frame, 5, time, time2, g2, ng2, 1); + setBezier(input, timeline, bezier++, frame, 6, time, time2, b2, nb2, 1); + } + time = time2; + r = nr; + g = ng; + b = nb; + a = na; + r2 = nr2; + g2 = ng2; + b2 = nb2; + } + timelines.push(timeline); + break; + } + case SLOT_RGB2: { + var bezierCount = input.readInt(true); + var timeline = new RGB2Timeline(frameCount, bezierCount, slotIndex); + var time = input.readFloat(); + var r = input.readUnsignedByte() / 255.0; + var g = input.readUnsignedByte() / 255.0; + var b = input.readUnsignedByte() / 255.0; + var r2 = input.readUnsignedByte() / 255.0; + var g2 = input.readUnsignedByte() / 255.0; + var b2 = input.readUnsignedByte() / 255.0; + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, r, g, b, r2, g2, b2); + if (frame == frameLast) + break; + var time2 = input.readFloat(); + var nr = input.readUnsignedByte() / 255.0; + var ng = input.readUnsignedByte() / 255.0; + var nb = input.readUnsignedByte() / 255.0; + var nr2 = input.readUnsignedByte() / 255.0; + var ng2 = input.readUnsignedByte() / 255.0; + var nb2 = input.readUnsignedByte() / 255.0; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); + setBezier(input, timeline, bezier++, frame, 3, time, time2, r2, nr2, 1); + setBezier(input, timeline, bezier++, frame, 4, time, time2, g2, ng2, 1); + setBezier(input, timeline, bezier++, frame, 5, time, time2, b2, nb2, 1); + } + time = time2; + r = nr; + g = ng; + b = nb; + r2 = nr2; + g2 = ng2; + b2 = nb2; + } + timelines.push(timeline); + break; + } + case SLOT_ALPHA: { + var timeline = new AlphaTimeline(frameCount, input.readInt(true), slotIndex); + var time = input.readFloat(), a = input.readUnsignedByte() / 255; + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, a); + if (frame == frameLast) + break; + var time2 = input.readFloat(); + var a2 = input.readUnsignedByte() / 255; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, a, a2, 1); + } + time = time2; + a = a2; + } + timelines.push(timeline); + break; + } + } + } + } + // Bone timelines. + for (var i = 0, n = input.readInt(true); i < n; i++) { + var boneIndex = input.readInt(true); + for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { + var type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true); + switch (type) { + case BONE_ROTATE: + timelines.push(readTimeline1$1(input, new RotateTimeline(frameCount, bezierCount, boneIndex), 1)); + break; + case BONE_TRANSLATE: + timelines.push(readTimeline2$1(input, new TranslateTimeline(frameCount, bezierCount, boneIndex), scale)); + break; + case BONE_TRANSLATEX: + timelines.push(readTimeline1$1(input, new TranslateXTimeline(frameCount, bezierCount, boneIndex), scale)); + break; + case BONE_TRANSLATEY: + timelines.push(readTimeline1$1(input, new TranslateYTimeline(frameCount, bezierCount, boneIndex), scale)); + break; + case BONE_SCALE: + timelines.push(readTimeline2$1(input, new ScaleTimeline(frameCount, bezierCount, boneIndex), 1)); + break; + case BONE_SCALEX: + timelines.push(readTimeline1$1(input, new ScaleXTimeline(frameCount, bezierCount, boneIndex), 1)); + break; + case BONE_SCALEY: + timelines.push(readTimeline1$1(input, new ScaleYTimeline(frameCount, bezierCount, boneIndex), 1)); + break; + case BONE_SHEAR: + timelines.push(readTimeline2$1(input, new ShearTimeline(frameCount, bezierCount, boneIndex), 1)); + break; + case BONE_SHEARX: + timelines.push(readTimeline1$1(input, new ShearXTimeline(frameCount, bezierCount, boneIndex), 1)); + break; + case BONE_SHEARY: + timelines.push(readTimeline1$1(input, new ShearYTimeline(frameCount, bezierCount, boneIndex), 1)); + } + } + } + // IK constraint timelines. + for (var i = 0, n = input.readInt(true); i < n; i++) { + var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; + var timeline = new IkConstraintTimeline(frameCount, input.readInt(true), index); + var time = input.readFloat(), mix = input.readFloat(), softness = input.readFloat() * scale; + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, mix, softness, input.readByte(), input.readBoolean(), input.readBoolean()); + if (frame == frameLast) + break; + var time2 = input.readFloat(), mix2 = input.readFloat(), softness2 = input.readFloat() * scale; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale); + } + time = time2; + mix = mix2; + softness = softness2; + } + timelines.push(timeline); + } + // Transform constraint timelines. + for (var i = 0, n = input.readInt(true); i < n; i++) { + var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; + var timeline = new TransformConstraintTimeline(frameCount, input.readInt(true), index); + var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(), mixScaleX = input.readFloat(), mixScaleY = input.readFloat(), mixShearY = input.readFloat(); + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); + if (frame == frameLast) + break; + var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(), mixScaleX2 = input.readFloat(), mixScaleY2 = input.readFloat(), mixShearY2 = input.readFloat(); + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); + setBezier(input, timeline, bezier++, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); + setBezier(input, timeline, bezier++, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); + setBezier(input, timeline, bezier++, frame, 5, time, time2, mixShearY, mixShearY2, 1); + } + time = time2; + mixRotate = mixRotate2; + mixX = mixX2; + mixY = mixY2; + mixScaleX = mixScaleX2; + mixScaleY = mixScaleY2; + mixShearY = mixShearY2; + } + timelines.push(timeline); + } + // Path constraint timelines. + for (var i = 0, n = input.readInt(true); i < n; i++) { + var index = input.readInt(true); + var data = skeletonData.pathConstraints[index]; + for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { + switch (input.readByte()) { + case PATH_POSITION: + timelines + .push(readTimeline1$1(input, new PathConstraintPositionTimeline(input.readInt(true), input.readInt(true), index), data.positionMode == exports.PositionMode.Fixed ? scale : 1)); + break; + case PATH_SPACING: + timelines + .push(readTimeline1$1(input, new PathConstraintSpacingTimeline(input.readInt(true), input.readInt(true), index), data.spacingMode == exports.SpacingMode.Length || data.spacingMode == exports.SpacingMode.Fixed ? scale : 1)); + break; + case PATH_MIX: + var timeline = new PathConstraintMixTimeline(input.readInt(true), input.readInt(true), index); + var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(); + for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { + timeline.setFrame(frame, time, mixRotate, mixX, mixY); + if (frame == frameLast) + break; + var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(); + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); + setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); + setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); + } + time = time2; + mixRotate = mixRotate2; + mixX = mixX2; + mixY = mixY2; + } + timelines.push(timeline); + } + } + } + // Deform timelines. + for (var i = 0, n = input.readInt(true); i < n; i++) { + var skin = skeletonData.skins[input.readInt(true)]; + for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { + var slotIndex = input.readInt(true); + for (var iii = 0, nnn = input.readInt(true); iii < nnn; iii++) { + var attachmentName = input.readStringRef(); + var attachment = skin.getAttachment(slotIndex, attachmentName); + var weighted = attachment.bones; + var vertices = attachment.vertices; + var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + var frameCount = input.readInt(true); + var frameLast = frameCount - 1; + var bezierCount = input.readInt(true); + var timeline = new DeformTimeline(frameCount, bezierCount, slotIndex, attachment); + var time = input.readFloat(); + for (var frame = 0, bezier = 0;; frame++) { + var deform = void 0; + var end = input.readInt(true); + if (end == 0) + deform = weighted ? Utils.newFloatArray(deformLength) : vertices; + else { + deform = Utils.newFloatArray(deformLength); + var start = input.readInt(true); + end += start; + if (scale == 1) { + for (var v = start; v < end; v++) + deform[v] = input.readFloat(); + } + else { + for (var v = start; v < end; v++) + deform[v] = input.readFloat() * scale; + } + if (!weighted) { + for (var v = 0, vn = deform.length; v < vn; v++) + deform[v] += vertices[v]; + } + } + timeline.setFrame(frame, time, deform); + if (frame == frameLast) + break; + var time2 = input.readFloat(); + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1); + } + time = time2; + } + timelines.push(timeline); + } + } + } + // Draw order timeline. + var drawOrderCount = input.readInt(true); + if (drawOrderCount > 0) { + var timeline = new DrawOrderTimeline(drawOrderCount); + var slotCount = skeletonData.slots.length; + for (var i = 0; i < drawOrderCount; i++) { + var time = input.readFloat(); + var offsetCount = input.readInt(true); + var drawOrder = Utils.newArray(slotCount, 0); + for (var ii = slotCount - 1; ii >= 0; ii--) + drawOrder[ii] = -1; + var unchanged = Utils.newArray(slotCount - offsetCount, 0); + var originalIndex = 0, unchangedIndex = 0; + for (var ii = 0; ii < offsetCount; ii++) { + var slotIndex = input.readInt(true); + // Collect unchanged items. + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + // Set changed items. + drawOrder[originalIndex + input.readInt(true)] = originalIndex++; + } + // Collect remaining unchanged items. + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + // Fill in unchanged items. + for (var ii = slotCount - 1; ii >= 0; ii--) + if (drawOrder[ii] == -1) + drawOrder[ii] = unchanged[--unchangedIndex]; + timeline.setFrame(i, time, drawOrder); + } + timelines.push(timeline); + } + // Event timeline. + var eventCount = input.readInt(true); + if (eventCount > 0) { + var timeline = new EventTimeline(eventCount); + for (var i = 0; i < eventCount; i++) { + var time = input.readFloat(); + var eventData = skeletonData.events[input.readInt(true)]; + var event_1 = new Event(time, eventData); + event_1.intValue = input.readInt(false); + event_1.floatValue = input.readFloat(); + event_1.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue; + if (event_1.data.audioPath) { + event_1.volume = input.readFloat(); + event_1.balance = input.readFloat(); + } + timeline.setFrame(i, event_1); + } + timelines.push(timeline); + } + var duration = 0; + for (var i = 0, n = timelines.length; i < n; i++) + duration = Math.max(duration, timelines[i].getDuration()); + return new Animation(name, timelines, duration); + }; + return SkeletonBinary; + }()); + var BinaryInput = /** @class */ (function () { + function BinaryInput(data, strings, index, buffer) { + if (strings === void 0) { strings = new Array(); } + if (index === void 0) { index = 0; } + if (buffer === void 0) { buffer = new DataView(data.buffer); } + this.strings = strings; + this.index = index; + this.buffer = buffer; + } + BinaryInput.prototype.readByte = function () { + return this.buffer.getInt8(this.index++); + }; + BinaryInput.prototype.readUnsignedByte = function () { + return this.buffer.getUint8(this.index++); + }; + BinaryInput.prototype.readShort = function () { + var value = this.buffer.getInt16(this.index); + this.index += 2; + return value; + }; + BinaryInput.prototype.readInt32 = function () { + var value = this.buffer.getInt32(this.index); + this.index += 4; + return value; + }; + BinaryInput.prototype.readInt = function (optimizePositive) { + var b = this.readByte(); + var result = b & 0x7F; + if ((b & 0x80) != 0) { + b = this.readByte(); + result |= (b & 0x7F) << 7; + if ((b & 0x80) != 0) { + b = this.readByte(); + result |= (b & 0x7F) << 14; + if ((b & 0x80) != 0) { + b = this.readByte(); + result |= (b & 0x7F) << 21; + if ((b & 0x80) != 0) { + b = this.readByte(); + result |= (b & 0x7F) << 28; + } + } + } + } + return optimizePositive ? result : ((result >>> 1) ^ -(result & 1)); + }; + BinaryInput.prototype.readStringRef = function () { + var index = this.readInt(true); + return index == 0 ? null : this.strings[index - 1]; + }; + BinaryInput.prototype.readString = function () { + var byteCount = this.readInt(true); + switch (byteCount) { + case 0: + return null; + case 1: + return ""; + } + byteCount--; + var chars = ""; + for (var i = 0; i < byteCount;) { + var b = this.readByte(); + switch (b >> 4) { + case 12: + case 13: + chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F)); + i += 2; + break; + case 14: + chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F)); + i += 3; + break; + default: + chars += String.fromCharCode(b); + i++; + } + } + return chars; + }; + BinaryInput.prototype.readFloat = function () { + var value = this.buffer.getFloat32(this.index); + this.index += 4; + return value; + }; + BinaryInput.prototype.readBoolean = function () { + return this.readByte() != 0; + }; + return BinaryInput; + }()); + var LinkedMesh$1 = /** @class */ (function () { + function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + this.inheritDeform = inheritDeform; + } + return LinkedMesh; + }()); + var Vertices = /** @class */ (function () { + function Vertices(bones, vertices) { + if (bones === void 0) { bones = null; } + if (vertices === void 0) { vertices = null; } + this.bones = bones; + this.vertices = vertices; + } + return Vertices; + }()); + var AttachmentType; + (function (AttachmentType) { + AttachmentType[AttachmentType["Region"] = 0] = "Region"; + AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; + AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; + AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; + AttachmentType[AttachmentType["Path"] = 4] = "Path"; + AttachmentType[AttachmentType["Point"] = 5] = "Point"; + AttachmentType[AttachmentType["Clipping"] = 6] = "Clipping"; + })(AttachmentType || (AttachmentType = {})); + function readTimeline1$1(input, timeline, scale) { + var time = input.readFloat(), value = input.readFloat() * scale; + for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { + timeline.setFrame(frame, time, value); + if (frame == frameLast) + break; + var time2 = input.readFloat(), value2 = input.readFloat() * scale; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, value, value2, scale); + } + time = time2; + value = value2; + } + return timeline; + } + function readTimeline2$1(input, timeline, scale) { + var time = input.readFloat(), value1 = input.readFloat() * scale, value2 = input.readFloat() * scale; + for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { + timeline.setFrame(frame, time, value1, value2); + if (frame == frameLast) + break; + var time2 = input.readFloat(), nvalue1 = input.readFloat() * scale, nvalue2 = input.readFloat() * scale; + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, value1, nvalue1, scale); + setBezier(input, timeline, bezier++, frame, 1, time, time2, value2, nvalue2, scale); + } + time = time2; + value1 = nvalue1; + value2 = nvalue2; + } + return timeline; + } + function setBezier(input, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { + timeline.setBezier(bezier, frame, value, time1, value1, input.readFloat(), input.readFloat() * scale, input.readFloat(), input.readFloat() * scale, time2, value2); + } + var BONE_ROTATE = 0; + var BONE_TRANSLATE = 1; + var BONE_TRANSLATEX = 2; + var BONE_TRANSLATEY = 3; + var BONE_SCALE = 4; + var BONE_SCALEX = 5; + var BONE_SCALEY = 6; + var BONE_SHEAR = 7; + var BONE_SHEARX = 8; + var BONE_SHEARY = 9; + var SLOT_ATTACHMENT = 0; + var SLOT_RGBA = 1; + var SLOT_RGB = 2; + var SLOT_RGBA2 = 3; + var SLOT_RGB2 = 4; + var SLOT_ALPHA = 5; + var PATH_POSITION = 0; + var PATH_SPACING = 1; + var PATH_MIX = 2; + var CURVE_STEPPED = 1; + var CURVE_BEZIER = 2; + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Collects each visible {@link BoundingBoxAttachment} and computes the world vertices for its polygon. The polygon vertices are + * provided along with convenience methods for doing hit detection. */ + var SkeletonBounds = /** @class */ (function () { + function SkeletonBounds() { + /** The left edge of the axis aligned bounding box. */ + this.minX = 0; + /** The bottom edge of the axis aligned bounding box. */ + this.minY = 0; + /** The right edge of the axis aligned bounding box. */ + this.maxX = 0; + /** The top edge of the axis aligned bounding box. */ + this.maxY = 0; + /** The visible bounding boxes. */ + this.boundingBoxes = new Array(); + /** The world vertices for the bounding box polygons. */ + this.polygons = new Array(); + this.polygonPool = new Pool(function () { + return Utils.newFloatArray(16); + }); + } + /** Clears any previous polygons, finds all visible bounding box attachments, and computes the world vertices for each bounding + * box's polygon. + * @param updateAabb If true, the axis aligned bounding box containing all the polygons is computed. If false, the + * SkeletonBounds AABB methods will always return true. */ + SkeletonBounds.prototype.update = function (skeleton, updateAabb) { + if (!skeleton) + throw new Error("skeleton cannot be null."); + var boundingBoxes = this.boundingBoxes; + var polygons = this.polygons; + var polygonPool = this.polygonPool; + var slots = skeleton.slots; + var slotCount = slots.length; + boundingBoxes.length = 0; + polygonPool.freeAll(polygons); + polygons.length = 0; + for (var i = 0; i < slotCount; i++) { + var slot = slots[i]; + if (!slot.bone.active) + continue; + var attachment = slot.getAttachment(); + if (attachment instanceof BoundingBoxAttachment) { + var boundingBox = attachment; + boundingBoxes.push(boundingBox); + var polygon = polygonPool.obtain(); + if (polygon.length != boundingBox.worldVerticesLength) { + polygon = Utils.newFloatArray(boundingBox.worldVerticesLength); + } + polygons.push(polygon); + boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2); + } + } + if (updateAabb) { + this.aabbCompute(); + } + else { + this.minX = Number.POSITIVE_INFINITY; + this.minY = Number.POSITIVE_INFINITY; + this.maxX = Number.NEGATIVE_INFINITY; + this.maxY = Number.NEGATIVE_INFINITY; + } + }; + SkeletonBounds.prototype.aabbCompute = function () { + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) { + var polygon = polygons[i]; + var vertices = polygon; + for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { + var x = vertices[ii]; + var y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + }; + /** Returns true if the axis aligned bounding box contains the point. */ + SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { + return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; + }; + /** Returns true if the axis aligned bounding box intersects the line segment. */ + SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { + var minX = this.minX; + var minY = this.minY; + var maxX = this.maxX; + var maxY = this.maxY; + if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) + return false; + var m = (y2 - y1) / (x2 - x1); + var y = m * (minX - x1) + y1; + if (y > minY && y < maxY) + return true; + y = m * (maxX - x1) + y1; + if (y > minY && y < maxY) + return true; + var x = (minY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + x = (maxY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + return false; + }; + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { + return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; + }; + /** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more + * efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. */ + SkeletonBounds.prototype.containsPoint = function (x, y) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.containsPointPolygon(polygons[i], x, y)) + return this.boundingBoxes[i]; + return null; + }; + /** Returns true if the polygon contains the point. */ + SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { + var vertices = polygon; + var nn = polygon.length; + var prevIndex = nn - 2; + var inside = false; + for (var ii = 0; ii < nn; ii += 2) { + var vertexY = vertices[ii + 1]; + var prevY = vertices[prevIndex + 1]; + if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { + var vertexX = vertices[ii]; + if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) + inside = !inside; + } + prevIndex = ii; + } + return inside; + }; + /** Returns the first bounding box attachment that contains any part of the line segment, or null. When doing many checks, it + * is usually more efficient to only call this method if {@link #aabbIntersectsSegment()} returns + * true. */ + SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) + return this.boundingBoxes[i]; + return null; + }; + /** Returns true if the polygon contains any part of the line segment. */ + SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { + var vertices = polygon; + var nn = polygon.length; + var width12 = x1 - x2, height12 = y1 - y2; + var det1 = x1 * y2 - y1 * x2; + var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; + for (var ii = 0; ii < nn; ii += 2) { + var x4 = vertices[ii], y4 = vertices[ii + 1]; + var det2 = x3 * y4 - y3 * x4; + var width34 = x3 - x4, height34 = y3 - y4; + var det3 = width12 * height34 - height12 * width34; + var x = (det1 * width34 - width12 * det2) / det3; + if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { + var y = (det1 * height34 - height12 * det2) / det3; + if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) + return true; + } + x3 = x4; + y3 = y4; + } + return false; + }; + /** Returns the polygon for the specified bounding box, or null. */ + SkeletonBounds.prototype.getPolygon = function (boundingBox) { + if (!boundingBox) + throw new Error("boundingBox cannot be null."); + var index = this.boundingBoxes.indexOf(boundingBox); + return index == -1 ? null : this.polygons[index]; + }; + /** The width of the axis aligned bounding box. */ + SkeletonBounds.prototype.getWidth = function () { + return this.maxX - this.minX; + }; + /** The height of the axis aligned bounding box. */ + SkeletonBounds.prototype.getHeight = function () { + return this.maxY - this.minY; + }; + return SkeletonBounds; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var Triangulator = /** @class */ (function () { + function Triangulator() { + this.convexPolygons = new Array(); + this.convexPolygonsIndices = new Array(); + this.indicesArray = new Array(); + this.isConcaveArray = new Array(); + this.triangles = new Array(); + this.polygonPool = new Pool(function () { + return new Array(); + }); + this.polygonIndicesPool = new Pool(function () { + return new Array(); + }); + } + Triangulator.prototype.triangulate = function (verticesArray) { + var vertices = verticesArray; + var vertexCount = verticesArray.length >> 1; + var indices = this.indicesArray; + indices.length = 0; + for (var i = 0; i < vertexCount; i++) + indices[i] = i; + var isConcave = this.isConcaveArray; + isConcave.length = 0; + for (var i = 0, n = vertexCount; i < n; ++i) + isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices); + var triangles = this.triangles; + triangles.length = 0; + while (vertexCount > 3) { + // Find ear tip. + var previous = vertexCount - 1, i = 0, next = 1; + while (true) { + outer: if (!isConcave[i]) { + var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; + var p1x = vertices[p1], p1y = vertices[p1 + 1]; + var p2x = vertices[p2], p2y = vertices[p2 + 1]; + var p3x = vertices[p3], p3y = vertices[p3 + 1]; + for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) { + if (!isConcave[ii]) + continue; + var v = indices[ii] << 1; + var vx = vertices[v], vy = vertices[v + 1]; + if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) { + if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) { + if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) + break outer; + } + } + } + break; + } + if (next == 0) { + do { + if (!isConcave[i]) + break; + i--; + } while (i > 0); + break; + } + previous = i; + i = next; + next = (next + 1) % vertexCount; + } + // Cut ear tip. + triangles.push(indices[(vertexCount + i - 1) % vertexCount]); + triangles.push(indices[i]); + triangles.push(indices[(i + 1) % vertexCount]); + indices.splice(i, 1); + isConcave.splice(i, 1); + vertexCount--; + var previousIndex = (vertexCount + i - 1) % vertexCount; + var nextIndex = i == vertexCount ? 0 : i; + isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); + isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); + } + if (vertexCount == 3) { + triangles.push(indices[2]); + triangles.push(indices[0]); + triangles.push(indices[1]); + } + return triangles; + }; + Triangulator.prototype.decompose = function (verticesArray, triangles) { + var vertices = verticesArray; + var convexPolygons = this.convexPolygons; + this.polygonPool.freeAll(convexPolygons); + convexPolygons.length = 0; + var convexPolygonsIndices = this.convexPolygonsIndices; + this.polygonIndicesPool.freeAll(convexPolygonsIndices); + convexPolygonsIndices.length = 0; + var polygonIndices = this.polygonIndicesPool.obtain(); + polygonIndices.length = 0; + var polygon = this.polygonPool.obtain(); + polygon.length = 0; + // Merge subsequent triangles if they form a triangle fan. + var fanBaseIndex = -1, lastWinding = 0; + for (var i = 0, n = triangles.length; i < n; i += 3) { + var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; + var x1 = vertices[t1], y1 = vertices[t1 + 1]; + var x2 = vertices[t2], y2 = vertices[t2 + 1]; + var x3 = vertices[t3], y3 = vertices[t3 + 1]; + // If the base of the last triangle is the same as this triangle, check if they form a convex polygon (triangle fan). + var merged = false; + if (fanBaseIndex == t1) { + var o = polygon.length - 4; + var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3); + var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]); + if (winding1 == lastWinding && winding2 == lastWinding) { + polygon.push(x3); + polygon.push(y3); + polygonIndices.push(t3); + merged = true; + } + } + // Otherwise make this triangle the new base. + if (!merged) { + if (polygon.length > 0) { + convexPolygons.push(polygon); + convexPolygonsIndices.push(polygonIndices); + } + else { + this.polygonPool.free(polygon); + this.polygonIndicesPool.free(polygonIndices); + } + polygon = this.polygonPool.obtain(); + polygon.length = 0; + polygon.push(x1); + polygon.push(y1); + polygon.push(x2); + polygon.push(y2); + polygon.push(x3); + polygon.push(y3); + polygonIndices = this.polygonIndicesPool.obtain(); + polygonIndices.length = 0; + polygonIndices.push(t1); + polygonIndices.push(t2); + polygonIndices.push(t3); + lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3); + fanBaseIndex = t1; + } + } + if (polygon.length > 0) { + convexPolygons.push(polygon); + convexPolygonsIndices.push(polygonIndices); + } + // Go through the list of polygons and try to merge the remaining triangles with the found triangle fans. + for (var i = 0, n = convexPolygons.length; i < n; i++) { + polygonIndices = convexPolygonsIndices[i]; + if (polygonIndices.length == 0) + continue; + var firstIndex = polygonIndices[0]; + var lastIndex = polygonIndices[polygonIndices.length - 1]; + polygon = convexPolygons[i]; + var o = polygon.length - 4; + var prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; + var prevX = polygon[o + 2], prevY = polygon[o + 3]; + var firstX = polygon[0], firstY = polygon[1]; + var secondX = polygon[2], secondY = polygon[3]; + var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); + for (var ii = 0; ii < n; ii++) { + if (ii == i) + continue; + var otherIndices = convexPolygonsIndices[ii]; + if (otherIndices.length != 3) + continue; + var otherFirstIndex = otherIndices[0]; + var otherSecondIndex = otherIndices[1]; + var otherLastIndex = otherIndices[2]; + var otherPoly = convexPolygons[ii]; + var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; + if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) + continue; + var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3); + var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY); + if (winding1 == winding && winding2 == winding) { + otherPoly.length = 0; + otherIndices.length = 0; + polygon.push(x3); + polygon.push(y3); + polygonIndices.push(otherLastIndex); + prevPrevX = prevX; + prevPrevY = prevY; + prevX = x3; + prevY = y3; + ii = 0; + } + } + } + // Remove empty polygons that resulted from the merge step above. + for (var i = convexPolygons.length - 1; i >= 0; i--) { + polygon = convexPolygons[i]; + if (polygon.length == 0) { + convexPolygons.splice(i, 1); + this.polygonPool.free(polygon); + polygonIndices = convexPolygonsIndices[i]; + convexPolygonsIndices.splice(i, 1); + this.polygonIndicesPool.free(polygonIndices); + } + } + return convexPolygons; + }; + Triangulator.isConcave = function (index, vertexCount, vertices, indices) { + var previous = indices[(vertexCount + index - 1) % vertexCount] << 1; + var current = indices[index] << 1; + var next = indices[(index + 1) % vertexCount] << 1; + return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]); + }; + Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) { + return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; + }; + Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) { + var px = p2x - p1x, py = p2y - p1y; + return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1; + }; + return Triangulator; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var SkeletonClipping = /** @class */ (function () { + function SkeletonClipping() { + this.triangulator = new Triangulator(); + this.clippingPolygon = new Array(); + this.clipOutput = new Array(); + this.clippedVertices = new Array(); + this.clippedTriangles = new Array(); + this.scratch = new Array(); + } + SkeletonClipping.prototype.clipStart = function (slot, clip) { + if (this.clipAttachment) + return 0; + this.clipAttachment = clip; + var n = clip.worldVerticesLength; + var vertices = Utils.setArraySize(this.clippingPolygon, n); + clip.computeWorldVertices(slot, 0, n, vertices, 0, 2); + var clippingPolygon = this.clippingPolygon; + SkeletonClipping.makeClockwise(clippingPolygon); + var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon)); + for (var i = 0, n_1 = clippingPolygons.length; i < n_1; i++) { + var polygon = clippingPolygons[i]; + SkeletonClipping.makeClockwise(polygon); + polygon.push(polygon[0]); + polygon.push(polygon[1]); + } + return clippingPolygons.length; + }; + SkeletonClipping.prototype.clipEndWithSlot = function (slot) { + if (this.clipAttachment && this.clipAttachment.endSlot == slot.data) + this.clipEnd(); + }; + SkeletonClipping.prototype.clipEnd = function () { + if (!this.clipAttachment) + return; + this.clipAttachment = null; + this.clippingPolygons = null; + this.clippedVertices.length = 0; + this.clippedTriangles.length = 0; + this.clippingPolygon.length = 0; + }; + SkeletonClipping.prototype.isClipping = function () { + return this.clipAttachment != null; + }; + SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) { + var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; + var clippedTriangles = this.clippedTriangles; + var polygons = this.clippingPolygons; + var polygonsCount = this.clippingPolygons.length; + var vertexSize = twoColor ? 12 : 8; + var index = 0; + clippedVertices.length = 0; + clippedTriangles.length = 0; + outer: for (var i = 0; i < trianglesLength; i += 3) { + var vertexOffset = triangles[i] << 1; + var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1]; + var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1]; + vertexOffset = triangles[i + 1] << 1; + var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1]; + var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1]; + vertexOffset = triangles[i + 2] << 1; + var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1]; + var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1]; + for (var p = 0; p < polygonsCount; p++) { + var s = clippedVertices.length; + if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) { + var clipOutputLength = clipOutput.length; + if (clipOutputLength == 0) + continue; + var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; + var d = 1 / (d0 * d2 + d1 * (y1 - y3)); + var clipOutputCount = clipOutputLength >> 1; + var clipOutputItems = this.clipOutput; + var clippedVerticesItems = Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize); + for (var ii = 0; ii < clipOutputLength; ii += 2) { + var x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; + clippedVerticesItems[s] = x; + clippedVerticesItems[s + 1] = y; + clippedVerticesItems[s + 2] = light.r; + clippedVerticesItems[s + 3] = light.g; + clippedVerticesItems[s + 4] = light.b; + clippedVerticesItems[s + 5] = light.a; + var c0 = x - x3, c1 = y - y3; + var a = (d0 * c0 + d1 * c1) * d; + var b = (d4 * c0 + d2 * c1) * d; + var c = 1 - a - b; + clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c; + clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c; + if (twoColor) { + clippedVerticesItems[s + 8] = dark.r; + clippedVerticesItems[s + 9] = dark.g; + clippedVerticesItems[s + 10] = dark.b; + clippedVerticesItems[s + 11] = dark.a; + } + s += vertexSize; + } + s = clippedTriangles.length; + var clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); + clipOutputCount--; + for (var ii = 1; ii < clipOutputCount; ii++) { + clippedTrianglesItems[s] = index; + clippedTrianglesItems[s + 1] = (index + ii); + clippedTrianglesItems[s + 2] = (index + ii + 1); + s += 3; + } + index += clipOutputCount + 1; + } + else { + var clippedVerticesItems = Utils.setArraySize(clippedVertices, s + 3 * vertexSize); + clippedVerticesItems[s] = x1; + clippedVerticesItems[s + 1] = y1; + clippedVerticesItems[s + 2] = light.r; + clippedVerticesItems[s + 3] = light.g; + clippedVerticesItems[s + 4] = light.b; + clippedVerticesItems[s + 5] = light.a; + if (!twoColor) { + clippedVerticesItems[s + 6] = u1; + clippedVerticesItems[s + 7] = v1; + clippedVerticesItems[s + 8] = x2; + clippedVerticesItems[s + 9] = y2; + clippedVerticesItems[s + 10] = light.r; + clippedVerticesItems[s + 11] = light.g; + clippedVerticesItems[s + 12] = light.b; + clippedVerticesItems[s + 13] = light.a; + clippedVerticesItems[s + 14] = u2; + clippedVerticesItems[s + 15] = v2; + clippedVerticesItems[s + 16] = x3; + clippedVerticesItems[s + 17] = y3; + clippedVerticesItems[s + 18] = light.r; + clippedVerticesItems[s + 19] = light.g; + clippedVerticesItems[s + 20] = light.b; + clippedVerticesItems[s + 21] = light.a; + clippedVerticesItems[s + 22] = u3; + clippedVerticesItems[s + 23] = v3; + } + else { + clippedVerticesItems[s + 6] = u1; + clippedVerticesItems[s + 7] = v1; + clippedVerticesItems[s + 8] = dark.r; + clippedVerticesItems[s + 9] = dark.g; + clippedVerticesItems[s + 10] = dark.b; + clippedVerticesItems[s + 11] = dark.a; + clippedVerticesItems[s + 12] = x2; + clippedVerticesItems[s + 13] = y2; + clippedVerticesItems[s + 14] = light.r; + clippedVerticesItems[s + 15] = light.g; + clippedVerticesItems[s + 16] = light.b; + clippedVerticesItems[s + 17] = light.a; + clippedVerticesItems[s + 18] = u2; + clippedVerticesItems[s + 19] = v2; + clippedVerticesItems[s + 20] = dark.r; + clippedVerticesItems[s + 21] = dark.g; + clippedVerticesItems[s + 22] = dark.b; + clippedVerticesItems[s + 23] = dark.a; + clippedVerticesItems[s + 24] = x3; + clippedVerticesItems[s + 25] = y3; + clippedVerticesItems[s + 26] = light.r; + clippedVerticesItems[s + 27] = light.g; + clippedVerticesItems[s + 28] = light.b; + clippedVerticesItems[s + 29] = light.a; + clippedVerticesItems[s + 30] = u3; + clippedVerticesItems[s + 31] = v3; + clippedVerticesItems[s + 32] = dark.r; + clippedVerticesItems[s + 33] = dark.g; + clippedVerticesItems[s + 34] = dark.b; + clippedVerticesItems[s + 35] = dark.a; + } + s = clippedTriangles.length; + var clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3); + clippedTrianglesItems[s] = index; + clippedTrianglesItems[s + 1] = (index + 1); + clippedTrianglesItems[s + 2] = (index + 2); + index += 3; + continue outer; + } + } + } + }; + /** Clips the input triangle against the convex, clockwise clipping area. If the triangle lies entirely within the clipping + * area, false is returned. The clipping area must duplicate the first vertex at the end of the vertices list. */ + SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) { + var originalOutput = output; + var clipped = false; + // Avoid copy at the end. + var input = null; + if (clippingArea.length % 4 >= 2) { + input = output; + output = this.scratch; + } + else + input = this.scratch; + input.length = 0; + input.push(x1); + input.push(y1); + input.push(x2); + input.push(y2); + input.push(x3); + input.push(y3); + input.push(x1); + input.push(y1); + output.length = 0; + var clippingVertices = clippingArea; + var clippingVerticesLast = clippingArea.length - 4; + for (var i = 0;; i += 2) { + var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; + var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; + var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; + var inputVertices = input; + var inputVerticesLength = input.length - 2, outputStart = output.length; + for (var ii = 0; ii < inputVerticesLength; ii += 2) { + var inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; + var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; + var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; + if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { + if (side2) { // v1 inside, v2 inside + output.push(inputX2); + output.push(inputY2); + continue; + } + // v1 inside, v2 outside + var c0 = inputY2 - inputY, c2 = inputX2 - inputX; + var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); + if (Math.abs(s) > 0.000001) { + var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; + output.push(edgeX + (edgeX2 - edgeX) * ua); + output.push(edgeY + (edgeY2 - edgeY) * ua); + } + else { + output.push(edgeX); + output.push(edgeY); + } + } + else if (side2) { // v1 outside, v2 inside + var c0 = inputY2 - inputY, c2 = inputX2 - inputX; + var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); + if (Math.abs(s) > 0.000001) { + var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; + output.push(edgeX + (edgeX2 - edgeX) * ua); + output.push(edgeY + (edgeY2 - edgeY) * ua); + } + else { + output.push(edgeX); + output.push(edgeY); + } + output.push(inputX2); + output.push(inputY2); + } + clipped = true; + } + if (outputStart == output.length) { // All edges outside. + originalOutput.length = 0; + return true; + } + output.push(output[0]); + output.push(output[1]); + if (i == clippingVerticesLast) + break; + var temp = output; + output = input; + output.length = 0; + input = temp; + } + if (originalOutput != output) { + originalOutput.length = 0; + for (var i = 0, n = output.length - 2; i < n; i++) + originalOutput[i] = output[i]; + } + else + originalOutput.length = originalOutput.length - 2; + return clipped; + }; + SkeletonClipping.makeClockwise = function (polygon) { + var vertices = polygon; + var verticeslength = polygon.length; + var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0; + for (var i = 0, n = verticeslength - 3; i < n; i += 2) { + p1x = vertices[i]; + p1y = vertices[i + 1]; + p2x = vertices[i + 2]; + p2y = vertices[i + 3]; + area += p1x * p2y - p2x * p1y; + } + if (area < 0) + return; + for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) { + var x = vertices[i], y = vertices[i + 1]; + var other = lastX - i; + vertices[i] = vertices[other]; + vertices[i + 1] = vertices[other + 1]; + vertices[other] = x; + vertices[other + 1] = y; + } + }; + return SkeletonClipping; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Loads skeleton data in the Spine JSON format. + * + * See [Spine JSON format](http://esotericsoftware.com/spine-json-format) and + * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine + * Runtimes Guide. */ + var SkeletonJson = /** @class */ (function () { + function SkeletonJson(attachmentLoader) { + /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at + * runtime than were used in Spine. + * + * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */ + this.scale = 1; + this.linkedMeshes = new Array(); + this.attachmentLoader = attachmentLoader; + } + SkeletonJson.prototype.readSkeletonData = function (json) { + var scale = this.scale; + var skeletonData = new SkeletonData(); + var root = typeof (json) === "string" ? JSON.parse(json) : json; + // Skeleton + var skeletonMap = root.skeleton; + if (skeletonMap) { + skeletonData.hash = skeletonMap.hash; + skeletonData.version = skeletonMap.spine; + skeletonData.x = skeletonMap.x; + skeletonData.y = skeletonMap.y; + skeletonData.width = skeletonMap.width; + skeletonData.height = skeletonMap.height; + skeletonData.fps = skeletonMap.fps; + skeletonData.imagesPath = skeletonMap.images; + } + // Bones + if (root.bones) { + for (var i = 0; i < root.bones.length; i++) { + var boneMap = root.bones[i]; + var parent_1 = null; + var parentName = getValue(boneMap, "parent", null); + if (parentName) + parent_1 = skeletonData.findBone(parentName); + var data = new BoneData(skeletonData.bones.length, boneMap.name, parent_1); + data.length = getValue(boneMap, "length", 0) * scale; + data.x = getValue(boneMap, "x", 0) * scale; + data.y = getValue(boneMap, "y", 0) * scale; + data.rotation = getValue(boneMap, "rotation", 0); + data.scaleX = getValue(boneMap, "scaleX", 1); + data.scaleY = getValue(boneMap, "scaleY", 1); + data.shearX = getValue(boneMap, "shearX", 0); + data.shearY = getValue(boneMap, "shearY", 0); + data.transformMode = Utils.enumValue(exports.TransformMode, getValue(boneMap, "transform", "Normal")); + data.skinRequired = getValue(boneMap, "skin", false); + var color = getValue(boneMap, "color", null); + if (color) + data.color.setFromString(color); + skeletonData.bones.push(data); + } + } + // Slots. + if (root.slots) { + for (var i = 0; i < root.slots.length; i++) { + var slotMap = root.slots[i]; + var boneData = skeletonData.findBone(slotMap.bone); + var data = new SlotData(skeletonData.slots.length, slotMap.name, boneData); + var color = getValue(slotMap, "color", null); + if (color) + data.color.setFromString(color); + var dark = getValue(slotMap, "dark", null); + if (dark) + data.darkColor = Color.fromString(dark); + data.attachmentName = getValue(slotMap, "attachment", null); + data.blendMode = Utils.enumValue(exports.BlendMode, getValue(slotMap, "blend", "normal")); + skeletonData.slots.push(data); + } + } + // IK constraints + if (root.ik) { + for (var i = 0; i < root.ik.length; i++) { + var constraintMap = root.ik[i]; + var data = new IkConstraintData(constraintMap.name); + data.order = getValue(constraintMap, "order", 0); + data.skinRequired = getValue(constraintMap, "skin", false); + for (var ii = 0; ii < constraintMap.bones.length; ii++) + data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); + data.target = skeletonData.findBone(constraintMap.target); + data.mix = getValue(constraintMap, "mix", 1); + data.softness = getValue(constraintMap, "softness", 0) * scale; + data.bendDirection = getValue(constraintMap, "bendPositive", true) ? 1 : -1; + data.compress = getValue(constraintMap, "compress", false); + data.stretch = getValue(constraintMap, "stretch", false); + data.uniform = getValue(constraintMap, "uniform", false); + skeletonData.ikConstraints.push(data); + } + } + // Transform constraints. + if (root.transform) { + for (var i = 0; i < root.transform.length; i++) { + var constraintMap = root.transform[i]; + var data = new TransformConstraintData(constraintMap.name); + data.order = getValue(constraintMap, "order", 0); + data.skinRequired = getValue(constraintMap, "skin", false); + for (var ii = 0; ii < constraintMap.bones.length; ii++) + data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + data.local = getValue(constraintMap, "local", false); + data.relative = getValue(constraintMap, "relative", false); + data.offsetRotation = getValue(constraintMap, "rotation", 0); + data.offsetX = getValue(constraintMap, "x", 0) * scale; + data.offsetY = getValue(constraintMap, "y", 0) * scale; + data.offsetScaleX = getValue(constraintMap, "scaleX", 0); + data.offsetScaleY = getValue(constraintMap, "scaleY", 0); + data.offsetShearY = getValue(constraintMap, "shearY", 0); + data.mixRotate = getValue(constraintMap, "mixRotate", 1); + data.mixX = getValue(constraintMap, "mixX", 1); + data.mixY = getValue(constraintMap, "mixY", data.mixX); + data.mixScaleX = getValue(constraintMap, "mixScaleX", 1); + data.mixScaleY = getValue(constraintMap, "mixScaleY", data.mixScaleX); + data.mixShearY = getValue(constraintMap, "mixShearY", 1); + skeletonData.transformConstraints.push(data); + } + } + // Path constraints. + if (root.path) { + for (var i = 0; i < root.path.length; i++) { + var constraintMap = root.path[i]; + var data = new PathConstraintData(constraintMap.name); + data.order = getValue(constraintMap, "order", 0); + data.skinRequired = getValue(constraintMap, "skin", false); + for (var ii = 0; ii < constraintMap.bones.length; ii++) + data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); + var targetName = constraintMap.target; + data.target = skeletonData.findSlot(targetName); + data.positionMode = Utils.enumValue(exports.PositionMode, getValue(constraintMap, "positionMode", "Percent")); + data.spacingMode = Utils.enumValue(exports.SpacingMode, getValue(constraintMap, "spacingMode", "Length")); + data.rotateMode = Utils.enumValue(exports.RotateMode, getValue(constraintMap, "rotateMode", "Tangent")); + data.offsetRotation = getValue(constraintMap, "rotation", 0); + data.position = getValue(constraintMap, "position", 0); + if (data.positionMode == exports.PositionMode.Fixed) + data.position *= scale; + data.spacing = getValue(constraintMap, "spacing", 0); + if (data.spacingMode == exports.SpacingMode.Length || data.spacingMode == exports.SpacingMode.Fixed) + data.spacing *= scale; + data.mixRotate = getValue(constraintMap, "mixRotate", 1); + data.mixX = getValue(constraintMap, "mixX", 1); + data.mixY = getValue(constraintMap, "mixY", data.mixX); + skeletonData.pathConstraints.push(data); + } + } + // Skins. + if (root.skins) { + for (var i = 0; i < root.skins.length; i++) { + var skinMap = root.skins[i]; + var skin = new Skin(skinMap.name); + if (skinMap.bones) { + for (var ii = 0; ii < skinMap.bones.length; ii++) + skin.bones.push(skeletonData.findBone(skinMap.bones[ii])); + } + if (skinMap.ik) { + for (var ii = 0; ii < skinMap.ik.length; ii++) + skin.constraints.push(skeletonData.findIkConstraint(skinMap.ik[ii])); + } + if (skinMap.transform) { + for (var ii = 0; ii < skinMap.transform.length; ii++) + skin.constraints.push(skeletonData.findTransformConstraint(skinMap.transform[ii])); + } + if (skinMap.path) { + for (var ii = 0; ii < skinMap.path.length; ii++) + skin.constraints.push(skeletonData.findPathConstraint(skinMap.path[ii])); + } + for (var slotName in skinMap.attachments) { + var slot = skeletonData.findSlot(slotName); + var slotMap = skinMap.attachments[slotName]; + for (var entryName in slotMap) { + var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData); + if (attachment) + skin.setAttachment(slot.index, entryName, attachment); + } + } + skeletonData.skins.push(skin); + if (skin.name == "default") + skeletonData.defaultSkin = skin; + } + } + // Linked meshes. + for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { + var linkedMesh = this.linkedMeshes[i]; + var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + var parent_2 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_2 : linkedMesh.mesh; + linkedMesh.mesh.setParentMesh(parent_2); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + // Events. + if (root.events) { + for (var eventName in root.events) { + var eventMap = root.events[eventName]; + var data = new EventData(eventName); + data.intValue = getValue(eventMap, "int", 0); + data.floatValue = getValue(eventMap, "float", 0); + data.stringValue = getValue(eventMap, "string", ""); + data.audioPath = getValue(eventMap, "audio", null); + if (data.audioPath) { + data.volume = getValue(eventMap, "volume", 1); + data.balance = getValue(eventMap, "balance", 0); + } + skeletonData.events.push(data); + } + } + // Animations. + if (root.animations) { + for (var animationName in root.animations) { + var animationMap = root.animations[animationName]; + this.readAnimation(animationMap, animationName, skeletonData); + } + } + return skeletonData; + }; + SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) { + var scale = this.scale; + name = getValue(map, "name", name); + switch (getValue(map, "type", "region")) { + case "region": { + var path = getValue(map, "path", name); + var region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (!region) + return null; + region.path = path; + region.x = getValue(map, "x", 0) * scale; + region.y = getValue(map, "y", 0) * scale; + region.scaleX = getValue(map, "scaleX", 1); + region.scaleY = getValue(map, "scaleY", 1); + region.rotation = getValue(map, "rotation", 0); + region.width = map.width * scale; + region.height = map.height * scale; + var color = getValue(map, "color", null); + if (color) + region.color.setFromString(color); + region.updateOffset(); + return region; + } + case "boundingbox": { + var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (!box) + return null; + this.readVertices(map, box, map.vertexCount << 1); + var color = getValue(map, "color", null); + if (color) + box.color.setFromString(color); + return box; + } + case "mesh": + case "linkedmesh": { + var path = getValue(map, "path", name); + var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (!mesh) + return null; + mesh.path = path; + var color = getValue(map, "color", null); + if (color) + mesh.color.setFromString(color); + mesh.width = getValue(map, "width", 0) * scale; + mesh.height = getValue(map, "height", 0) * scale; + var parent_3 = getValue(map, "parent", null); + if (parent_3) { + this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, "skin", null), slotIndex, parent_3, getValue(map, "deform", true))); + return mesh; + } + var uvs = map.uvs; + this.readVertices(map, mesh, uvs.length); + mesh.triangles = map.triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + mesh.edges = getValue(map, "edges", null); + mesh.hullLength = getValue(map, "hull", 0) * 2; + return mesh; + } + case "path": { + var path = this.attachmentLoader.newPathAttachment(skin, name); + if (!path) + return null; + path.closed = getValue(map, "closed", false); + path.constantSpeed = getValue(map, "constantSpeed", true); + var vertexCount = map.vertexCount; + this.readVertices(map, path, vertexCount << 1); + var lengths = Utils.newArray(vertexCount / 3, 0); + for (var i = 0; i < map.lengths.length; i++) + lengths[i] = map.lengths[i] * scale; + path.lengths = lengths; + var color = getValue(map, "color", null); + if (color) + path.color.setFromString(color); + return path; + } + case "point": { + var point = this.attachmentLoader.newPointAttachment(skin, name); + if (!point) + return null; + point.x = getValue(map, "x", 0) * scale; + point.y = getValue(map, "y", 0) * scale; + point.rotation = getValue(map, "rotation", 0); + var color = getValue(map, "color", null); + if (color) + point.color.setFromString(color); + return point; + } + case "clipping": { + var clip = this.attachmentLoader.newClippingAttachment(skin, name); + if (!clip) + return null; + var end = getValue(map, "end", null); + if (end) + clip.endSlot = skeletonData.findSlot(end); + var vertexCount = map.vertexCount; + this.readVertices(map, clip, vertexCount << 1); + var color = getValue(map, "color", null); + if (color) + clip.color.setFromString(color); + return clip; + } + } + return null; + }; + SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { + var scale = this.scale; + attachment.worldVerticesLength = verticesLength; + var vertices = map.vertices; + if (verticesLength == vertices.length) { + var scaledVertices = Utils.toFloatArray(vertices); + if (scale != 1) { + for (var i = 0, n = vertices.length; i < n; i++) + scaledVertices[i] *= scale; + } + attachment.vertices = scaledVertices; + return; + } + var weights = new Array(); + var bones = new Array(); + for (var i = 0, n = vertices.length; i < n;) { + var boneCount = vertices[i++]; + bones.push(boneCount); + for (var nn = i + boneCount * 4; i < nn; i += 4) { + bones.push(vertices[i]); + weights.push(vertices[i + 1] * scale); + weights.push(vertices[i + 2] * scale); + weights.push(vertices[i + 3]); + } + } + attachment.bones = bones; + attachment.vertices = Utils.toFloatArray(weights); + }; + SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { + var scale = this.scale; + var timelines = new Array(); + // Slot timelines. + if (map.slots) { + for (var slotName in map.slots) { + var slotMap = map.slots[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + if (!timelineMap) + continue; + if (timelineName == "attachment") { + var timeline = new AttachmentTimeline(timelineMap.length, slotIndex); + for (var frame = 0; frame < timelineMap.length; frame++) { + var keyMap = timelineMap[frame]; + timeline.setFrame(frame, getValue(keyMap, "time", 0), keyMap.name); + } + timelines.push(timeline); + } + else if (timelineName == "rgba") { + var timeline = new RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex); + var keyMap = timelineMap[0]; + var time = getValue(keyMap, "time", 0); + var color = Color.fromString(keyMap.color); + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, color.r, color.g, color.b, color.a); + var nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + var time2 = getValue(nextMap, "time", 0); + var newColor = Color.fromString(nextMap.color); + var curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); + bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); + } + time = time2; + color = newColor; + keyMap = nextMap; + } + timelines.push(timeline); + } + else if (timelineName == "rgb") { + var timeline = new RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex); + var keyMap = timelineMap[0]; + var time = getValue(keyMap, "time", 0); + var color = Color.fromString(keyMap.color); + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, color.r, color.g, color.b); + var nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + var time2 = getValue(nextMap, "time", 0); + var newColor = Color.fromString(nextMap.color); + var curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); + } + time = time2; + color = newColor; + keyMap = nextMap; + } + timelines.push(timeline); + } + else if (timelineName == "alpha") { + timelines.push(readTimeline1(timelineMap, new AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1)); + } + else if (timelineName == "rgba2") { + var timeline = new RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex); + var keyMap = timelineMap[0]; + var time = getValue(keyMap, "time", 0); + var color = Color.fromString(keyMap.light); + var color2 = Color.fromString(keyMap.dark); + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, color.r, color.g, color.b, color.a, color2.r, color2.g, color2.b); + var nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + var time2 = getValue(nextMap, "time", 0); + var newColor = Color.fromString(nextMap.light); + var newColor2 = Color.fromString(nextMap.dark); + var curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); + bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); + bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.r, newColor2.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.g, newColor2.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 6, time, time2, color2.b, newColor2.b, 1); + } + time = time2; + color = newColor; + color2 = newColor2; + keyMap = nextMap; + } + timelines.push(timeline); + } + else if (timelineName == "rgb2") { + var timeline = new RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex); + var keyMap = timelineMap[0]; + var time = getValue(keyMap, "time", 0); + var color = Color.fromString(keyMap.light); + var color2 = Color.fromString(keyMap.dark); + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b); + var nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + var time2 = getValue(nextMap, "time", 0); + var newColor = Color.fromString(nextMap.light); + var newColor2 = Color.fromString(nextMap.dark); + var curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); + bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1); + bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1); + bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1); + } + time = time2; + color = newColor; + color2 = newColor2; + keyMap = nextMap; + } + timelines.push(timeline); + } + } + } + } + // Bone timelines. + if (map.bones) { + for (var boneName in map.bones) { + var boneMap = map.bones[boneName]; + var boneIndex = skeletonData.findBoneIndex(boneName); + for (var timelineName in boneMap) { + var timelineMap = boneMap[timelineName]; + if (timelineMap.length == 0) + continue; + if (timelineName === "rotate") { + timelines.push(readTimeline1(timelineMap, new RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1)); + } + else if (timelineName === "translate") { + var timeline = new TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); + timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, scale)); + } + else if (timelineName === "translatex") { + var timeline = new TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex); + timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); + } + else if (timelineName === "translatey") { + var timeline = new TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex); + timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); + } + else if (timelineName === "scale") { + var timeline = new ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); + timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 1, 1)); + } + else if (timelineName === "scalex") { + var timeline = new ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex); + timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); + } + else if (timelineName === "scaley") { + var timeline = new ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex); + timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); + } + else if (timelineName === "shear") { + var timeline = new ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); + timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, 1)); + } + else if (timelineName === "shearx") { + var timeline = new ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex); + timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); + } + else if (timelineName === "sheary") { + var timeline = new ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex); + timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); + } + } + } + } + // IK constraint timelines. + if (map.ik) { + for (var constraintName in map.ik) { + var constraintMap = map.ik[constraintName]; + var keyMap = constraintMap[0]; + if (!keyMap) + continue; + var constraint = skeletonData.findIkConstraint(constraintName); + var constraintIndex = skeletonData.ikConstraints.indexOf(constraint); + var timeline = new IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex); + var time = getValue(keyMap, "time", 0); + var mix = getValue(keyMap, "mix", 1); + var softness = getValue(keyMap, "softness", 0) * scale; + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, mix, softness, getValue(keyMap, "bendPositive", true) ? 1 : -1, getValue(keyMap, "compress", false), getValue(keyMap, "stretch", false)); + var nextMap = constraintMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + var time2 = getValue(nextMap, "time", 0); + var mix2 = getValue(nextMap, "mix", 1); + var softness2 = getValue(nextMap, "softness", 0) * scale; + var curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale); + } + time = time2; + mix = mix2; + softness = softness2; + keyMap = nextMap; + } + timelines.push(timeline); + } + } + // Transform constraint timelines. + if (map.transform) { + for (var constraintName in map.transform) { + var timelineMap = map.transform[constraintName]; + var keyMap = timelineMap[0]; + if (!keyMap) + continue; + var constraint = skeletonData.findTransformConstraint(constraintName); + var constraintIndex = skeletonData.transformConstraints.indexOf(constraint); + var timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex); + var time = getValue(keyMap, "time", 0); + var mixRotate = getValue(keyMap, "mixRotate", 1); + var mixX = getValue(keyMap, "mixX", 1); + var mixY = getValue(keyMap, "mixY", mixX); + var mixScaleX = getValue(keyMap, "mixScaleX", 1); + var mixScaleY = getValue(keyMap, "mixScaleY", mixScaleX); + var mixShearY = getValue(keyMap, "mixShearY", 1); + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); + var nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + var time2 = getValue(nextMap, "time", 0); + var mixRotate2 = getValue(nextMap, "mixRotate", 1); + var mixX2 = getValue(nextMap, "mixX", 1); + var mixY2 = getValue(nextMap, "mixY", mixX2); + var mixScaleX2 = getValue(nextMap, "mixScaleX", 1); + var mixScaleY2 = getValue(nextMap, "mixScaleY", mixScaleX2); + var mixShearY2 = getValue(nextMap, "mixShearY", 1); + var curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1); + } + time = time2; + mixRotate = mixRotate2; + mixX = mixX2; + mixY = mixY2; + mixScaleX = mixScaleX2; + mixScaleY = mixScaleY2; + mixScaleX = mixScaleX2; + keyMap = nextMap; + } + timelines.push(timeline); + } + } + // Path constraint timelines. + if (map.path) { + for (var constraintName in map.path) { + var constraintMap = map.path[constraintName]; + var constraint = skeletonData.findPathConstraint(constraintName); + var constraintIndex = skeletonData.pathConstraints.indexOf(constraint); + for (var timelineName in constraintMap) { + var timelineMap = constraintMap[timelineName]; + var keyMap = timelineMap[0]; + if (!keyMap) + continue; + if (timelineName === "position") { + var timeline = new PathConstraintPositionTimeline(timelineMap.length, timelineMap.length, constraintIndex); + timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.positionMode == exports.PositionMode.Fixed ? scale : 1)); + } + else if (timelineName === "spacing") { + var timeline = new PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, constraintIndex); + timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.spacingMode == exports.SpacingMode.Length || constraint.spacingMode == exports.SpacingMode.Fixed ? scale : 1)); + } + else if (timelineName === "mix") { + var timeline = new PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, constraintIndex); + var time = getValue(keyMap, "time", 0); + var mixRotate = getValue(keyMap, "mixRotate", 1); + var mixX = getValue(keyMap, "mixX", 1); + var mixY = getValue(keyMap, "mixY", mixX); + for (var frame = 0, bezier = 0;; frame++) { + timeline.setFrame(frame, time, mixRotate, mixX, mixY); + var nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + var time2 = getValue(nextMap, "time", 0); + var mixRotate2 = getValue(nextMap, "mixRotate", 1); + var mixX2 = getValue(nextMap, "mixX", 1); + var mixY2 = getValue(nextMap, "mixY", mixX2); + var curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); + bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); + } + time = time2; + mixRotate = mixRotate2; + mixX = mixX2; + mixY = mixY2; + keyMap = nextMap; + } + timelines.push(timeline); + } + } + } + } + // Deform timelines. + if (map.deform) { + for (var deformName in map.deform) { + var deformMap = map.deform[deformName]; + var skin = skeletonData.findSkin(deformName); + for (var slotName in deformMap) { + var slotMap = deformMap[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + var keyMap = timelineMap[0]; + if (!keyMap) + continue; + var attachment = skin.getAttachment(slotIndex, timelineName); + var weighted = attachment.bones; + var vertices = attachment.vertices; + var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + var timeline = new DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment); + var time = getValue(keyMap, "time", 0); + for (var frame = 0, bezier = 0;; frame++) { + var deform = void 0; + var verticesValue = getValue(keyMap, "vertices", null); + if (!verticesValue) + deform = weighted ? Utils.newFloatArray(deformLength) : vertices; + else { + deform = Utils.newFloatArray(deformLength); + var start = getValue(keyMap, "offset", 0); + Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); + if (scale != 1) { + for (var i = start, n = i + verticesValue.length; i < n; i++) + deform[i] *= scale; + } + if (!weighted) { + for (var i = 0; i < deformLength; i++) + deform[i] += vertices[i]; + } + } + timeline.setFrame(frame, time, deform); + var nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + var time2 = getValue(nextMap, "time", 0); + var curve = keyMap.curve; + if (curve) + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1); + time = time2; + keyMap = nextMap; + } + timelines.push(timeline); + } + } + } + } + // Draw order timelines. + if (map.drawOrder) { + var timeline = new DrawOrderTimeline(map.drawOrder.length); + var slotCount = skeletonData.slots.length; + var frame = 0; + for (var i = 0; i < map.drawOrder.length; i++, frame++) { + var drawOrderMap = map.drawOrder[i]; + var drawOrder = null; + var offsets = getValue(drawOrderMap, "offsets", null); + if (offsets) { + drawOrder = Utils.newArray(slotCount, -1); + var unchanged = Utils.newArray(slotCount - offsets.length, 0); + var originalIndex = 0, unchangedIndex = 0; + for (var ii = 0; ii < offsets.length; ii++) { + var offsetMap = offsets[ii]; + var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); + // Collect unchanged items. + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + // Set changed items. + drawOrder[originalIndex + offsetMap.offset] = originalIndex++; + } + // Collect remaining unchanged items. + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + // Fill in unchanged items. + for (var ii = slotCount - 1; ii >= 0; ii--) + if (drawOrder[ii] == -1) + drawOrder[ii] = unchanged[--unchangedIndex]; + } + timeline.setFrame(frame, getValue(drawOrderMap, "time", 0), drawOrder); + } + timelines.push(timeline); + } + // Event timelines. + if (map.events) { + var timeline = new EventTimeline(map.events.length); + var frame = 0; + for (var i = 0; i < map.events.length; i++, frame++) { + var eventMap = map.events[i]; + var eventData = skeletonData.findEvent(eventMap.name); + var event_1 = new Event(Utils.toSinglePrecision(getValue(eventMap, "time", 0)), eventData); + event_1.intValue = getValue(eventMap, "int", eventData.intValue); + event_1.floatValue = getValue(eventMap, "float", eventData.floatValue); + event_1.stringValue = getValue(eventMap, "string", eventData.stringValue); + if (event_1.data.audioPath) { + event_1.volume = getValue(eventMap, "volume", 1); + event_1.balance = getValue(eventMap, "balance", 0); + } + timeline.setFrame(frame, event_1); + } + timelines.push(timeline); + } + var duration = 0; + for (var i = 0, n = timelines.length; i < n; i++) + duration = Math.max(duration, timelines[i].getDuration()); + skeletonData.animations.push(new Animation(name, timelines, duration)); + }; + return SkeletonJson; + }()); + var LinkedMesh = /** @class */ (function () { + function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + this.inheritDeform = inheritDeform; + } + return LinkedMesh; + }()); + function readTimeline1(keys, timeline, defaultValue, scale) { + var keyMap = keys[0]; + var time = getValue(keyMap, "time", 0); + var value = getValue(keyMap, "value", defaultValue) * scale; + var bezier = 0; + for (var frame = 0;; frame++) { + timeline.setFrame(frame, time, value); + var nextMap = keys[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + return timeline; + } + var time2 = getValue(nextMap, "time", 0); + var value2 = getValue(nextMap, "value", defaultValue) * scale; + if (keyMap.curve) + bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale); + time = time2; + value = value2; + keyMap = nextMap; + } + } + function readTimeline2(keys, timeline, name1, name2, defaultValue, scale) { + var keyMap = keys[0]; + var time = getValue(keyMap, "time", 0); + var value1 = getValue(keyMap, name1, defaultValue) * scale; + var value2 = getValue(keyMap, name2, defaultValue) * scale; + var bezier = 0; + for (var frame = 0;; frame++) { + timeline.setFrame(frame, time, value1, value2); + var nextMap = keys[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + return timeline; + } + var time2 = getValue(nextMap, "time", 0); + var nvalue1 = getValue(nextMap, name1, defaultValue) * scale; + var nvalue2 = getValue(nextMap, name2, defaultValue) * scale; + var curve = keyMap.curve; + if (curve) { + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale); + bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale); + } + time = time2; + value1 = nvalue1; + value2 = nvalue2; + keyMap = nextMap; + } + } + function readCurve(curve, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { + if (curve == "stepped") { + timeline.setStepped(frame); + return bezier; + } + var i = value << 2; + var cx1 = curve[i]; + var cy1 = curve[i + 1] * scale; + var cx2 = curve[i + 2]; + var cy2 = curve[i + 3] * scale; + timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2); + return bezier + 1; + } + function getValue(map, property, defaultValue) { + return map[property] !== undefined ? map[property] : defaultValue; + } + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + (function () { + if (typeof Math.fround === "undefined") { + Math.fround = (function (array) { + return function (x) { + return array[0] = x, array[0]; + }; + })(new Float32Array(1)); + } + })(); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var JitterEffect = /** @class */ (function () { + function JitterEffect(jitterX, jitterY) { + this.jitterX = 0; + this.jitterY = 0; + this.jitterX = jitterX; + this.jitterY = jitterY; + } + JitterEffect.prototype.begin = function (skeleton) { + }; + JitterEffect.prototype.transform = function (position, uv, light, dark) { + position.x += MathUtils.randomTriangular(-this.jitterX, this.jitterY); + position.y += MathUtils.randomTriangular(-this.jitterX, this.jitterY); + }; + JitterEffect.prototype.end = function () { + }; + return JitterEffect; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var SwirlEffect = /** @class */ (function () { + function SwirlEffect(radius) { + this.centerX = 0; + this.centerY = 0; + this.radius = 0; + this.angle = 0; + this.worldX = 0; + this.worldY = 0; + this.radius = radius; + } + SwirlEffect.prototype.begin = function (skeleton) { + this.worldX = skeleton.x + this.centerX; + this.worldY = skeleton.y + this.centerY; + }; + SwirlEffect.prototype.transform = function (position, uv, light, dark) { + var radAngle = this.angle * MathUtils.degreesToRadians; + var x = position.x - this.worldX; + var y = position.y - this.worldY; + var dist = Math.sqrt(x * x + y * y); + if (dist < this.radius) { + var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius); + var cos = Math.cos(theta); + var sin = Math.sin(theta); + position.x = cos * x - sin * y + this.worldX; + position.y = sin * x + cos * y + this.worldY; + } + }; + SwirlEffect.prototype.end = function () { + }; + SwirlEffect.interpolation = new PowOut(2); + return SwirlEffect; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$1 = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + var CanvasTexture = /** @class */ (function (_super) { + __extends$1(CanvasTexture, _super); + function CanvasTexture(image) { + return _super.call(this, image) || this; + } + CanvasTexture.prototype.setFilters = function (minFilter, magFilter) { }; + CanvasTexture.prototype.setWraps = function (uWrap, vWrap) { }; + CanvasTexture.prototype.dispose = function () { }; + return CanvasTexture; + }(Texture)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + var AssetManager = /** @class */ (function (_super) { + __extends(AssetManager, _super); + function AssetManager(pathPrefix, downloader) { + if (pathPrefix === void 0) { pathPrefix = ""; } + if (downloader === void 0) { downloader = null; } + return _super.call(this, function (image) { return new CanvasTexture(image); }, pathPrefix, downloader) || this; + } + return AssetManager; + }(AssetManagerBase)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var SkeletonRenderer = /** @class */ (function () { + function SkeletonRenderer(context) { + this.triangleRendering = false; + this.debugRendering = false; + this.vertices = Utils.newFloatArray(8 * 1024); + this.tempColor = new Color(); + this.ctx = context; + } + SkeletonRenderer.prototype.draw = function (skeleton) { + if (this.triangleRendering) + this.drawTriangles(skeleton); + else + this.drawImages(skeleton); + }; + SkeletonRenderer.prototype.drawImages = function (skeleton) { + var ctx = this.ctx; + var color = this.tempColor; + var skeletonColor = skeleton.color; + var drawOrder = skeleton.drawOrder; + if (this.debugRendering) + ctx.strokeStyle = "green"; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var bone = slot.bone; + if (!bone.active) + continue; + var attachment = slot.getAttachment(); + if (!(attachment instanceof RegionAttachment)) + continue; + var region = attachment.region; + var image = region.page.texture.getImage(); + var slotColor = slot.color; + var regionColor = attachment.color; + color.set(skeletonColor.r * slotColor.r * regionColor.r, skeletonColor.g * slotColor.g * regionColor.g, skeletonColor.b * slotColor.b * regionColor.b, skeletonColor.a * slotColor.a * regionColor.a); + ctx.save(); + ctx.transform(bone.a, bone.c, bone.b, bone.d, bone.worldX, bone.worldY); + ctx.translate(attachment.offset[0], attachment.offset[1]); + ctx.rotate(attachment.rotation * Math.PI / 180); + var atlasScale = attachment.width / region.originalWidth; + ctx.scale(atlasScale * attachment.scaleX, atlasScale * attachment.scaleY); + var w = region.width, h = region.height; + ctx.translate(w / 2, h / 2); + if (attachment.region.degrees == 90) { + var t = w; + w = h; + h = t; + ctx.rotate(-Math.PI / 2); + } + ctx.scale(1, -1); + ctx.translate(-w / 2, -h / 2); + if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) { + ctx.globalAlpha = color.a; + // experimental tinting via compositing, doesn't work + // ctx.globalCompositeOperation = "source-atop"; + // ctx.fillStyle = "rgba(" + (color.r * 255 | 0) + ", " + (color.g * 255 | 0) + ", " + (color.b * 255 | 0) + ", " + color.a + ")"; + // ctx.fillRect(0, 0, w, h); + } + ctx.drawImage(image, region.x, region.y, w, h, 0, 0, w, h); + if (this.debugRendering) + ctx.strokeRect(0, 0, w, h); + ctx.restore(); + } + }; + SkeletonRenderer.prototype.drawTriangles = function (skeleton) { + var ctx = this.ctx; + var color = this.tempColor; + var skeletonColor = skeleton.color; + var drawOrder = skeleton.drawOrder; + var blendMode = null; + var vertices = this.vertices; + var triangles = null; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var attachment = slot.getAttachment(); + var texture = void 0; + var region = void 0; + if (attachment instanceof RegionAttachment) { + var regionAttachment = attachment; + vertices = this.computeRegionVertices(slot, regionAttachment, false); + triangles = SkeletonRenderer.QUAD_TRIANGLES; + region = regionAttachment.region; + texture = region.page.texture.getImage(); + } + else if (attachment instanceof MeshAttachment) { + var mesh = attachment; + vertices = this.computeMeshVertices(slot, mesh, false); + triangles = mesh.triangles; + texture = mesh.region.renderObject.page.texture.getImage(); + } + else + continue; + if (texture) { + if (slot.data.blendMode != blendMode) + blendMode = slot.data.blendMode; + var slotColor = slot.color; + var attachmentColor = attachment.color; + color.set(skeletonColor.r * slotColor.r * attachmentColor.r, skeletonColor.g * slotColor.g * attachmentColor.g, skeletonColor.b * slotColor.b * attachmentColor.b, skeletonColor.a * slotColor.a * attachmentColor.a); + if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) { + ctx.globalAlpha = color.a; + // experimental tinting via compositing, doesn't work + // ctx.globalCompositeOperation = "source-atop"; + // ctx.fillStyle = "rgba(" + (color.r * 255 | 0) + ", " + (color.g * 255 | 0) + ", " + (color.b * 255 | 0) + ", " + color.a + ")"; + // ctx.fillRect(0, 0, w, h); + } + for (var j = 0; j < triangles.length; j += 3) { + var t1 = triangles[j] * 8, t2 = triangles[j + 1] * 8, t3 = triangles[j + 2] * 8; + var x0 = vertices[t1], y0 = vertices[t1 + 1], u0 = vertices[t1 + 6], v0 = vertices[t1 + 7]; + var x1 = vertices[t2], y1 = vertices[t2 + 1], u1 = vertices[t2 + 6], v1 = vertices[t2 + 7]; + var x2 = vertices[t3], y2 = vertices[t3 + 1], u2 = vertices[t3 + 6], v2 = vertices[t3 + 7]; + this.drawTriangle(texture, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2); + if (this.debugRendering) { + ctx.strokeStyle = "green"; + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.lineTo(x0, y0); + ctx.stroke(); + } + } + } + } + this.ctx.globalAlpha = 1; + }; + // Adapted from http://extremelysatisfactorytotalitarianism.com/blog/?p=2120 + // Apache 2 licensed + SkeletonRenderer.prototype.drawTriangle = function (img, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2) { + var ctx = this.ctx; + u0 *= img.width; + v0 *= img.height; + u1 *= img.width; + v1 *= img.height; + u2 *= img.width; + v2 *= img.height; + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.closePath(); + x1 -= x0; + y1 -= y0; + x2 -= x0; + y2 -= y0; + u1 -= u0; + v1 -= v0; + u2 -= u0; + v2 -= v0; + var det = 1 / (u1 * v2 - u2 * v1), + // linear transformation + a = (v2 * x1 - v1 * x2) * det, b = (v2 * y1 - v1 * y2) * det, c = (u1 * x2 - u2 * x1) * det, d = (u1 * y2 - u2 * y1) * det, + // translation + e = x0 - a * u0 - c * v0, f = y0 - b * u0 - d * v0; + ctx.save(); + ctx.transform(a, b, c, d, e, f); + ctx.clip(); + ctx.drawImage(img, 0, 0); + ctx.restore(); + }; + SkeletonRenderer.prototype.computeRegionVertices = function (slot, region, pma) { + var skeletonColor = slot.bone.skeleton.color; + var slotColor = slot.color; + var regionColor = region.color; + var alpha = skeletonColor.a * slotColor.a * regionColor.a; + var multiplier = pma ? alpha : 1; + var color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); + region.computeWorldVertices(slot.bone, this.vertices, 0, SkeletonRenderer.VERTEX_SIZE); + var vertices = this.vertices; + var uvs = region.uvs; + vertices[RegionAttachment.C1R] = color.r; + vertices[RegionAttachment.C1G] = color.g; + vertices[RegionAttachment.C1B] = color.b; + vertices[RegionAttachment.C1A] = color.a; + vertices[RegionAttachment.U1] = uvs[0]; + vertices[RegionAttachment.V1] = uvs[1]; + vertices[RegionAttachment.C2R] = color.r; + vertices[RegionAttachment.C2G] = color.g; + vertices[RegionAttachment.C2B] = color.b; + vertices[RegionAttachment.C2A] = color.a; + vertices[RegionAttachment.U2] = uvs[2]; + vertices[RegionAttachment.V2] = uvs[3]; + vertices[RegionAttachment.C3R] = color.r; + vertices[RegionAttachment.C3G] = color.g; + vertices[RegionAttachment.C3B] = color.b; + vertices[RegionAttachment.C3A] = color.a; + vertices[RegionAttachment.U3] = uvs[4]; + vertices[RegionAttachment.V3] = uvs[5]; + vertices[RegionAttachment.C4R] = color.r; + vertices[RegionAttachment.C4G] = color.g; + vertices[RegionAttachment.C4B] = color.b; + vertices[RegionAttachment.C4A] = color.a; + vertices[RegionAttachment.U4] = uvs[6]; + vertices[RegionAttachment.V4] = uvs[7]; + return vertices; + }; + SkeletonRenderer.prototype.computeMeshVertices = function (slot, mesh, pma) { + var skeletonColor = slot.bone.skeleton.color; + var slotColor = slot.color; + var regionColor = mesh.color; + var alpha = skeletonColor.a * slotColor.a * regionColor.a; + var multiplier = pma ? alpha : 1; + var color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); + var vertexCount = mesh.worldVerticesLength / 2; + var vertices = this.vertices; + if (vertices.length < mesh.worldVerticesLength) + this.vertices = vertices = Utils.newFloatArray(mesh.worldVerticesLength); + mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, SkeletonRenderer.VERTEX_SIZE); + var uvs = mesh.uvs; + for (var i = 0, u = 0, v = 2; i < vertexCount; i++) { + vertices[v++] = color.r; + vertices[v++] = color.g; + vertices[v++] = color.b; + vertices[v++] = color.a; + vertices[v++] = uvs[u++]; + vertices[v++] = uvs[u++]; + v += 2; + } + return vertices; + }; + SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + SkeletonRenderer.VERTEX_SIZE = 2 + 2 + 4; + return SkeletonRenderer; + }()); + + if (globalThis.spine) { + globalThis.spine.canvas = { + AssetManager: AssetManager, + CanvasTexture: CanvasTexture, + SkeletonRenderer: SkeletonRenderer + }; + } + + exports.AlphaTimeline = AlphaTimeline; + exports.Animation = Animation; + exports.AnimationState = AnimationState; + exports.AnimationStateAdapter = AnimationStateAdapter; + exports.AnimationStateData = AnimationStateData; + exports.AssetManager = AssetManager; + exports.AssetManagerBase = AssetManagerBase; + exports.AtlasAttachmentLoader = AtlasAttachmentLoader; + exports.Attachment = Attachment; + exports.AttachmentTimeline = AttachmentTimeline; + exports.BinaryInput = BinaryInput; + exports.Bone = Bone; + exports.BoneData = BoneData; + exports.BoundingBoxAttachment = BoundingBoxAttachment; + exports.CURRENT = CURRENT; + exports.CanvasTexture = CanvasTexture; + exports.ClippingAttachment = ClippingAttachment; + exports.Color = Color; + exports.ConstraintData = ConstraintData; + exports.CurveTimeline = CurveTimeline; + exports.CurveTimeline1 = CurveTimeline1; + exports.CurveTimeline2 = CurveTimeline2; + exports.DebugUtils = DebugUtils; + exports.DeformTimeline = DeformTimeline; + exports.Downloader = Downloader; + exports.DrawOrderTimeline = DrawOrderTimeline; + exports.Event = Event; + exports.EventData = EventData; + exports.EventQueue = EventQueue; + exports.EventTimeline = EventTimeline; + exports.FIRST = FIRST; + exports.FakeTexture = FakeTexture; + exports.HOLD_FIRST = HOLD_FIRST; + exports.HOLD_MIX = HOLD_MIX; + exports.HOLD_SUBSEQUENT = HOLD_SUBSEQUENT; + exports.IkConstraint = IkConstraint; + exports.IkConstraintData = IkConstraintData; + exports.IkConstraintTimeline = IkConstraintTimeline; + exports.IntSet = IntSet; + exports.Interpolation = Interpolation; + exports.JitterEffect = JitterEffect; + exports.MathUtils = MathUtils; + exports.MeshAttachment = MeshAttachment; + exports.PathAttachment = PathAttachment; + exports.PathConstraint = PathConstraint; + exports.PathConstraintData = PathConstraintData; + exports.PathConstraintMixTimeline = PathConstraintMixTimeline; + exports.PathConstraintPositionTimeline = PathConstraintPositionTimeline; + exports.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; + exports.PointAttachment = PointAttachment; + exports.Pool = Pool; + exports.Pow = Pow; + exports.PowOut = PowOut; + exports.RGB2Timeline = RGB2Timeline; + exports.RGBA2Timeline = RGBA2Timeline; + exports.RGBATimeline = RGBATimeline; + exports.RGBTimeline = RGBTimeline; + exports.RegionAttachment = RegionAttachment; + exports.RotateTimeline = RotateTimeline; + exports.SETUP = SETUP; + exports.SUBSEQUENT = SUBSEQUENT; + exports.ScaleTimeline = ScaleTimeline; + exports.ScaleXTimeline = ScaleXTimeline; + exports.ScaleYTimeline = ScaleYTimeline; + exports.ShearTimeline = ShearTimeline; + exports.ShearXTimeline = ShearXTimeline; + exports.ShearYTimeline = ShearYTimeline; + exports.Skeleton = Skeleton; + exports.SkeletonBinary = SkeletonBinary; + exports.SkeletonBounds = SkeletonBounds; + exports.SkeletonClipping = SkeletonClipping; + exports.SkeletonData = SkeletonData; + exports.SkeletonJson = SkeletonJson; + exports.SkeletonRenderer = SkeletonRenderer; + exports.Skin = Skin; + exports.SkinEntry = SkinEntry; + exports.Slot = Slot; + exports.SlotData = SlotData; + exports.StringSet = StringSet; + exports.SwirlEffect = SwirlEffect; + exports.Texture = Texture; + exports.TextureAtlas = TextureAtlas; + exports.TextureAtlasPage = TextureAtlasPage; + exports.TextureAtlasRegion = TextureAtlasRegion; + exports.TextureRegion = TextureRegion; + exports.TimeKeeper = TimeKeeper; + exports.Timeline = Timeline; + exports.TrackEntry = TrackEntry; + exports.TransformConstraint = TransformConstraint; + exports.TransformConstraintData = TransformConstraintData; + exports.TransformConstraintTimeline = TransformConstraintTimeline; + exports.TranslateTimeline = TranslateTimeline; + exports.TranslateXTimeline = TranslateXTimeline; + exports.TranslateYTimeline = TranslateYTimeline; + exports.Triangulator = Triangulator; + exports.Utils = Utils; + exports.Vector2 = Vector2; + exports.VertexAttachment = VertexAttachment; + exports.WindowedMean = WindowedMean; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=spine-canvas.js.map diff --git a/spine-ts/build/spine-canvas.js.map b/spine-ts/build/spine-canvas.js.map index 357a03da2..ea3ee3270 100644 --- a/spine-ts/build/spine-canvas.js.map +++ b/spine-ts/build/spine-canvas.js.map @@ -1 +1 @@ -{"version":3,"file":"spine-canvas.js","sourceRoot":"","sources":["../core/src/Animation.ts","../core/src/AnimationState.ts","../core/src/AnimationStateData.ts","../core/src/AssetManager.ts","../core/src/AtlasAttachmentLoader.ts","../core/src/Bone.ts","../core/src/BoneData.ts","../core/src/ConstraintData.ts","../core/src/Event.ts","../core/src/EventData.ts","../core/src/IkConstraint.ts","../core/src/IkConstraintData.ts","../core/src/PathConstraint.ts","../core/src/PathConstraintData.ts","../core/src/Skeleton.ts","../core/src/SkeletonBinary.ts","../core/src/SkeletonBounds.ts","../core/src/SkeletonClipping.ts","../core/src/SkeletonData.ts","../core/src/SkeletonJson.ts","../core/src/Skin.ts","../core/src/Slot.ts","../core/src/SlotData.ts","../core/src/Texture.ts","../core/src/TextureAtlas.ts","../core/src/TransformConstraint.ts","../core/src/TransformConstraintData.ts","../core/src/Triangulator.ts","../core/src/Updatable.ts","../core/src/Utils.ts","../core/src/VertexEffect.ts","../core/src/polyfills.ts","../core/src/attachments/Attachment.ts","../core/src/attachments/AttachmentLoader.ts","../core/src/attachments/BoundingBoxAttachment.ts","../core/src/attachments/ClippingAttachment.ts","../core/src/attachments/MeshAttachment.ts","../core/src/attachments/PathAttachment.ts","../core/src/attachments/PointAttachment.ts","../core/src/attachments/RegionAttachment.ts","../core/src/vertexeffects/JitterEffect.ts","../core/src/vertexeffects/SwirlEffect.ts","../canvas/src/AssetManager.ts","../canvas/src/CanvasTexture.ts","../canvas/src/SkeletonRenderer.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"spine-canvas.js","sources":["../spine-core/dist/Utils.js","../spine-core/dist/attachments/Attachment.js","../spine-core/dist/Animation.js","../spine-core/dist/AnimationState.js","../spine-core/dist/AnimationStateData.js","../spine-core/dist/attachments/BoundingBoxAttachment.js","../spine-core/dist/attachments/ClippingAttachment.js","../spine-core/dist/Texture.js","../spine-core/dist/TextureAtlas.js","../spine-core/dist/attachments/MeshAttachment.js","../spine-core/dist/attachments/PathAttachment.js","../spine-core/dist/attachments/PointAttachment.js","../spine-core/dist/attachments/RegionAttachment.js","../spine-core/dist/AtlasAttachmentLoader.js","../spine-core/dist/BoneData.js","../spine-core/dist/Bone.js","../spine-core/dist/ConstraintData.js","../spine-core/dist/AssetManagerBase.js","../spine-core/dist/Event.js","../spine-core/dist/EventData.js","../spine-core/dist/IkConstraint.js","../spine-core/dist/IkConstraintData.js","../spine-core/dist/PathConstraintData.js","../spine-core/dist/PathConstraint.js","../spine-core/dist/Slot.js","../spine-core/dist/TransformConstraint.js","../spine-core/dist/Skeleton.js","../spine-core/dist/SkeletonData.js","../spine-core/dist/Skin.js","../spine-core/dist/SlotData.js","../spine-core/dist/TransformConstraintData.js","../spine-core/dist/SkeletonBinary.js","../spine-core/dist/SkeletonBounds.js","../spine-core/dist/Triangulator.js","../spine-core/dist/SkeletonClipping.js","../spine-core/dist/SkeletonJson.js","../spine-core/dist/polyfills.js","../spine-core/dist/vertexeffects/JitterEffect.js","../spine-core/dist/vertexeffects/SwirlEffect.js","../spine-canvas/dist/CanvasTexture.js","../spine-canvas/dist/AssetManager.js","../spine-canvas/dist/SkeletonRenderer.js","../spine-canvas/dist/index.js"],"sourcesContent":["/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar IntSet = /** @class */ (function () {\n function IntSet() {\n this.array = new Array();\n }\n IntSet.prototype.add = function (value) {\n var contains = this.contains(value);\n this.array[value | 0] = value | 0;\n return !contains;\n };\n IntSet.prototype.contains = function (value) {\n return this.array[value | 0] != undefined;\n };\n IntSet.prototype.remove = function (value) {\n this.array[value | 0] = undefined;\n };\n IntSet.prototype.clear = function () {\n this.array.length = 0;\n };\n return IntSet;\n}());\nexport { IntSet };\nvar StringSet = /** @class */ (function () {\n function StringSet() {\n this.entries = {};\n this.size = 0;\n }\n StringSet.prototype.add = function (value) {\n var contains = this.entries[value];\n this.entries[value] = true;\n if (!contains) {\n this.size++;\n return true;\n }\n return false;\n };\n StringSet.prototype.addAll = function (values) {\n var oldSize = this.size;\n for (var i = 0, n = values.length; i < n; i++)\n this.add(values[i]);\n return oldSize != this.size;\n };\n StringSet.prototype.contains = function (value) {\n return this.entries[value];\n };\n StringSet.prototype.clear = function () {\n this.entries = {};\n this.size = 0;\n };\n return StringSet;\n}());\nexport { StringSet };\nvar Color = /** @class */ (function () {\n function Color(r, g, b, a) {\n if (r === void 0) { r = 0; }\n if (g === void 0) { g = 0; }\n if (b === void 0) { b = 0; }\n if (a === void 0) { a = 0; }\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n Color.prototype.set = function (r, g, b, a) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n return this.clamp();\n };\n Color.prototype.setFromColor = function (c) {\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 Color.prototype.setFromString = function (hex) {\n hex = hex.charAt(0) == '#' ? hex.substr(1) : hex;\n this.r = parseInt(hex.substr(0, 2), 16) / 255;\n this.g = parseInt(hex.substr(2, 2), 16) / 255;\n this.b = parseInt(hex.substr(4, 2), 16) / 255;\n this.a = hex.length != 8 ? 1 : parseInt(hex.substr(6, 2), 16) / 255;\n return this;\n };\n Color.prototype.add = function (r, g, b, a) {\n this.r += r;\n this.g += g;\n this.b += b;\n this.a += a;\n return this.clamp();\n };\n Color.prototype.clamp = function () {\n if (this.r < 0)\n this.r = 0;\n else if (this.r > 1)\n this.r = 1;\n if (this.g < 0)\n this.g = 0;\n else if (this.g > 1)\n this.g = 1;\n if (this.b < 0)\n this.b = 0;\n else if (this.b > 1)\n this.b = 1;\n if (this.a < 0)\n this.a = 0;\n else if (this.a > 1)\n this.a = 1;\n return this;\n };\n Color.rgba8888ToColor = function (color, value) {\n color.r = ((value & 0xff000000) >>> 24) / 255;\n color.g = ((value & 0x00ff0000) >>> 16) / 255;\n color.b = ((value & 0x0000ff00) >>> 8) / 255;\n color.a = ((value & 0x000000ff)) / 255;\n };\n Color.rgb888ToColor = function (color, value) {\n color.r = ((value & 0x00ff0000) >>> 16) / 255;\n color.g = ((value & 0x0000ff00) >>> 8) / 255;\n color.b = ((value & 0x000000ff)) / 255;\n };\n Color.fromString = function (hex) {\n return new Color().setFromString(hex);\n };\n Color.WHITE = new Color(1, 1, 1, 1);\n Color.RED = new Color(1, 0, 0, 1);\n Color.GREEN = new Color(0, 1, 0, 1);\n Color.BLUE = new Color(0, 0, 1, 1);\n Color.MAGENTA = new Color(1, 0, 1, 1);\n return Color;\n}());\nexport { Color };\nvar MathUtils = /** @class */ (function () {\n function MathUtils() {\n }\n MathUtils.clamp = function (value, min, max) {\n if (value < min)\n return min;\n if (value > max)\n return max;\n return value;\n };\n MathUtils.cosDeg = function (degrees) {\n return Math.cos(degrees * MathUtils.degRad);\n };\n MathUtils.sinDeg = function (degrees) {\n return Math.sin(degrees * MathUtils.degRad);\n };\n MathUtils.signum = function (value) {\n return value > 0 ? 1 : value < 0 ? -1 : 0;\n };\n MathUtils.toInt = function (x) {\n return x > 0 ? Math.floor(x) : Math.ceil(x);\n };\n MathUtils.cbrt = function (x) {\n var y = Math.pow(Math.abs(x), 1 / 3);\n return x < 0 ? -y : y;\n };\n MathUtils.randomTriangular = function (min, max) {\n return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5);\n };\n MathUtils.randomTriangularWith = function (min, max, mode) {\n var u = Math.random();\n var d = max - min;\n if (u <= (mode - min) / d)\n return min + Math.sqrt(u * d * (mode - min));\n return max - Math.sqrt((1 - u) * d * (max - mode));\n };\n MathUtils.isPowerOfTwo = function (value) {\n return value && (value & (value - 1)) === 0;\n };\n MathUtils.PI = 3.1415927;\n MathUtils.PI2 = MathUtils.PI * 2;\n MathUtils.radiansToDegrees = 180 / MathUtils.PI;\n MathUtils.radDeg = MathUtils.radiansToDegrees;\n MathUtils.degreesToRadians = MathUtils.PI / 180;\n MathUtils.degRad = MathUtils.degreesToRadians;\n return MathUtils;\n}());\nexport { MathUtils };\nvar Interpolation = /** @class */ (function () {\n function Interpolation() {\n }\n Interpolation.prototype.apply = function (start, end, a) {\n return start + (end - start) * this.applyInternal(a);\n };\n return Interpolation;\n}());\nexport { Interpolation };\nvar Pow = /** @class */ (function (_super) {\n __extends(Pow, _super);\n function Pow(power) {\n var _this = _super.call(this) || this;\n _this.power = 2;\n _this.power = power;\n return _this;\n }\n Pow.prototype.applyInternal = function (a) {\n if (a <= 0.5)\n 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 return Pow;\n}(Interpolation));\nexport { Pow };\nvar PowOut = /** @class */ (function (_super) {\n __extends(PowOut, _super);\n function PowOut(power) {\n return _super.call(this, power) || this;\n }\n PowOut.prototype.applyInternal = function (a) {\n return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1;\n };\n return PowOut;\n}(Pow));\nexport { PowOut };\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) {\n for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) {\n dest[j] = source[i];\n }\n };\n Utils.arrayFill = function (array, fromIndex, toIndex, value) {\n for (var i = fromIndex; i < toIndex; i++)\n array[i] = value;\n };\n Utils.setArraySize = function (array, size, value) {\n if (value === void 0) { value = 0; }\n var oldSize = array.length;\n if (oldSize == size)\n return array;\n array.length = size;\n if (oldSize < size) {\n for (var i = oldSize; i < size; i++)\n array[i] = value;\n }\n return array;\n };\n Utils.ensureArrayCapacity = function (array, size, value) {\n if (value === void 0) { value = 0; }\n if (array.length >= size)\n return array;\n return Utils.setArraySize(array, size, value);\n };\n Utils.newArray = function (size, defaultValue) {\n var array = new Array(size);\n for (var i = 0; i < size; i++)\n array[i] = defaultValue;\n return array;\n };\n Utils.newFloatArray = function (size) {\n if (Utils.SUPPORTS_TYPED_ARRAYS)\n return new Float32Array(size);\n else {\n var array = new Array(size);\n for (var i = 0; i < array.length; i++)\n array[i] = 0;\n return array;\n }\n };\n Utils.newShortArray = function (size) {\n if (Utils.SUPPORTS_TYPED_ARRAYS)\n return new Int16Array(size);\n else {\n var array = new Array(size);\n for (var i = 0; i < array.length; i++)\n array[i] = 0;\n return array;\n }\n };\n Utils.toFloatArray = function (array) {\n return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array;\n };\n Utils.toSinglePrecision = function (value) {\n return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value;\n };\n // This function is used to fix WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109\n Utils.webkit602BugfixHelper = function (alpha, blend) {\n };\n Utils.contains = function (array, element, identity) {\n if (identity === void 0) { identity = true; }\n for (var i = 0; i < array.length; i++)\n if (array[i] == element)\n return true;\n return false;\n };\n Utils.enumValue = function (type, name) {\n return type[name[0].toUpperCase() + name.slice(1)];\n };\n Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== \"undefined\";\n return Utils;\n}());\nexport { Utils };\nvar DebugUtils = /** @class */ (function () {\n function DebugUtils() {\n }\n DebugUtils.logBones = function (skeleton) {\n for (var i = 0; i < skeleton.bones.length; i++) {\n var bone = skeleton.bones[i];\n console.log(bone.data.name + \", \" + bone.a + \", \" + bone.b + \", \" + bone.c + \", \" + bone.d + \", \" + bone.worldX + \", \" + bone.worldY);\n }\n };\n return DebugUtils;\n}());\nexport { DebugUtils };\nvar Pool = /** @class */ (function () {\n function Pool(instantiator) {\n this.items = new Array();\n this.instantiator = instantiator;\n }\n Pool.prototype.obtain = function () {\n return this.items.length > 0 ? this.items.pop() : this.instantiator();\n };\n Pool.prototype.free = function (item) {\n if (item.reset)\n item.reset();\n this.items.push(item);\n };\n Pool.prototype.freeAll = function (items) {\n for (var i = 0; i < items.length; i++)\n this.free(items[i]);\n };\n Pool.prototype.clear = function () {\n this.items.length = 0;\n };\n return Pool;\n}());\nexport { Pool };\nvar Vector2 = /** @class */ (function () {\n function Vector2(x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n this.x = x;\n this.y = y;\n }\n Vector2.prototype.set = function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n };\n Vector2.prototype.length = function () {\n var x = this.x;\n var y = this.y;\n return Math.sqrt(x * x + y * y);\n };\n Vector2.prototype.normalize = function () {\n var len = this.length();\n if (len != 0) {\n this.x /= len;\n this.y /= len;\n }\n return this;\n };\n return Vector2;\n}());\nexport { Vector2 };\nvar TimeKeeper = /** @class */ (function () {\n function TimeKeeper() {\n this.maxDelta = 0.064;\n this.framesPerSecond = 0;\n this.delta = 0;\n this.totalTime = 0;\n this.lastTime = Date.now() / 1000;\n this.frameCount = 0;\n this.frameTime = 0;\n }\n TimeKeeper.prototype.update = function () {\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)\n this.delta = this.maxDelta;\n this.lastTime = now;\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 return TimeKeeper;\n}());\nexport { TimeKeeper };\nvar WindowedMean = /** @class */ (function () {\n function WindowedMean(windowSize) {\n if (windowSize === void 0) { windowSize = 32; }\n this.addedValues = 0;\n this.lastValue = 0;\n this.mean = 0;\n this.dirty = true;\n this.values = new Array(windowSize);\n }\n WindowedMean.prototype.hasEnoughData = function () {\n return this.addedValues >= this.values.length;\n };\n WindowedMean.prototype.addValue = function (value) {\n if (this.addedValues < this.values.length)\n this.addedValues++;\n this.values[this.lastValue++] = value;\n if (this.lastValue > this.values.length - 1)\n this.lastValue = 0;\n this.dirty = true;\n };\n WindowedMean.prototype.getMean = function () {\n if (this.hasEnoughData()) {\n if (this.dirty) {\n var mean = 0;\n for (var i = 0; i < this.values.length; i++)\n mean += this.values[i];\n this.mean = mean / this.values.length;\n this.dirty = false;\n }\n return this.mean;\n }\n return 0;\n };\n return WindowedMean;\n}());\nexport { WindowedMean };\n//# sourceMappingURL=Utils.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Utils } from \"../Utils\";\n/** The base class for all attachments. */\nvar Attachment = /** @class */ (function () {\n function Attachment(name) {\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.name = name;\n }\n return Attachment;\n}());\nexport { Attachment };\n/** Base class for an attachment with vertices that are transformed by one or more bones and can be deformed by a slot's\n * {@link Slot#deform}. */\nvar VertexAttachment = /** @class */ (function (_super) {\n __extends(VertexAttachment, _super);\n function VertexAttachment(name) {\n var _this = _super.call(this, name) || this;\n /** The unique ID for this attachment. */\n _this.id = VertexAttachment.nextID++;\n /** The maximum number of world vertex values that can be output by\n * {@link #computeWorldVertices()} using the `count` parameter. */\n _this.worldVerticesLength = 0;\n /** Deform keys for the deform attachment are also applied to this attachment. May be null if no deform keys should be applied. */\n _this.deformAttachment = _this;\n return _this;\n }\n /** Transforms the attachment's local {@link #vertices} to world coordinates. If the slot's {@link Slot#deform} is\n * not empty, it is used to deform the vertices.\n *\n * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine\n * Runtimes Guide.\n * @param start The index of the first {@link #vertices} 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 #worldVerticesLength} - `start`.\n * @param worldVertices The output world vertices. Must have a length >= `offset` + `count` *\n * `stride` / 2.\n * @param offset The `worldVertices` index to begin writing values.\n * @param stride The number of `worldVertices` entries between the value pairs written. */\n VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) {\n count = offset + (count >> 1) * stride;\n var skeleton = slot.bone.skeleton;\n var deformArray = slot.deform;\n var vertices = this.vertices;\n var bones = this.bones;\n if (!bones) {\n if (deformArray.length > 0)\n vertices = deformArray;\n var bone = slot.bone;\n var x = bone.worldX;\n var y = bone.worldY;\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) {\n var vx = vertices[v_1], vy = vertices[v_1 + 1];\n worldVertices[w] = vx * a + vy * b + x;\n worldVertices[w + 1] = vx * c + vy * d + y;\n }\n return;\n }\n var v = 0, skip = 0;\n for (var i = 0; i < start; i += 2) {\n var n = bones[v];\n v += n + 1;\n skip += n;\n }\n var skeletonBones = skeleton.bones;\n if (deformArray.length == 0) {\n for (var w = offset, b = skip * 3; w < count; w += stride) {\n var wx = 0, wy = 0;\n var n = bones[v++];\n n += v;\n for (; v < n; v++, b += 3) {\n var bone = skeletonBones[bones[v]];\n var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2];\n wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight;\n wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight;\n }\n worldVertices[w] = wx;\n worldVertices[w + 1] = wy;\n }\n }\n else {\n var deform = deformArray;\n for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) {\n var wx = 0, wy = 0;\n var n = bones[v++];\n n += v;\n for (; v < n; v++, b += 3, f += 2) {\n var bone = skeletonBones[bones[v]];\n var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2];\n wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight;\n wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight;\n }\n worldVertices[w] = wx;\n worldVertices[w + 1] = wy;\n }\n }\n };\n /** Does not copy id (generated) or name (set on construction). **/\n VertexAttachment.prototype.copyTo = function (attachment) {\n if (this.bones) {\n attachment.bones = new Array(this.bones.length);\n Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length);\n }\n else\n attachment.bones = null;\n if (this.vertices) {\n attachment.vertices = Utils.newFloatArray(this.vertices.length);\n Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length);\n }\n else\n attachment.vertices = null;\n attachment.worldVerticesLength = this.worldVerticesLength;\n attachment.deformAttachment = this.deformAttachment;\n };\n VertexAttachment.nextID = 0;\n return VertexAttachment;\n}(Attachment));\nexport { VertexAttachment };\n//# sourceMappingURL=Attachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VertexAttachment } from \"./attachments/Attachment\";\nimport { StringSet, Utils, MathUtils } from \"./Utils\";\n/** A simple container for a list of timelines and a name. */\nvar Animation = /** @class */ (function () {\n function Animation(name, timelines, duration) {\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.name = name;\n this.setTimelines(timelines);\n this.duration = duration;\n }\n Animation.prototype.setTimelines = function (timelines) {\n if (!timelines)\n throw new Error(\"timelines cannot be null.\");\n this.timelines = timelines;\n this.timelineIds = new StringSet();\n for (var i = 0; i < timelines.length; i++)\n this.timelineIds.addAll(timelines[i].getPropertyIds());\n };\n Animation.prototype.hasTimeline = function (ids) {\n for (var i = 0; i < ids.length; i++)\n if (this.timelineIds.contains(ids[i]))\n return true;\n return false;\n };\n /** Applies all the animation's timelines to the specified skeleton.\n *\n * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}.\n * @param loop If true, the animation repeats after {@link #getDuration()}.\n * @param events May be null to ignore fired events. */\n Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) {\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n if (loop && this.duration != 0) {\n time %= this.duration;\n if (lastTime > 0)\n lastTime %= this.duration;\n }\n var timelines = this.timelines;\n for (var i = 0, n = timelines.length; i < n; i++)\n timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction);\n };\n return Animation;\n}());\nexport { Animation };\n/** Controls how a timeline value is mixed with the setup pose value or current pose value when a timeline's `alpha`\n * < 1.\n *\n * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */\nexport var MixBlend;\n(function (MixBlend) {\n /** Transitions from the setup value to the timeline value (the current value is not used). Before the first key, the setup\n * value is set. */\n MixBlend[MixBlend[\"setup\"] = 0] = \"setup\";\n /** Transitions from the current value to the timeline value. Before the first key, transitions from the current value to\n * the setup value. Timelines which perform instant transitions, such as {@link DrawOrderTimeline} or\n * {@link AttachmentTimeline}, use the setup value before the first key.\n *\n * `first` is intended for the first animations applied, not for animations layered on top of those. */\n MixBlend[MixBlend[\"first\"] = 1] = \"first\";\n /** Transitions from the current value to the timeline value. No change is made before the first key (the current value is\n * kept until the first key).\n *\n * `replace` is intended for animations layered on top of others, not for the first animations applied. */\n MixBlend[MixBlend[\"replace\"] = 2] = \"replace\";\n /** Transitions from the current value to the current value plus the timeline value. No change is made before the first key\n * (the current value is kept until the first key).\n *\n * `add` is intended for animations layered on top of others, not for the first animations applied. Properties\n * keyed by additive animations must be set manually or by another animation before applying the additive animations, else\n * the property values will increase continually. */\n MixBlend[MixBlend[\"add\"] = 3] = \"add\";\n})(MixBlend || (MixBlend = {}));\n/** Indicates whether a timeline's `alpha` is mixing out over time toward 0 (the setup or current pose value) or\n * mixing in toward 1 (the timeline's value).\n *\n * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */\nexport var MixDirection;\n(function (MixDirection) {\n MixDirection[MixDirection[\"mixIn\"] = 0] = \"mixIn\";\n MixDirection[MixDirection[\"mixOut\"] = 1] = \"mixOut\";\n})(MixDirection || (MixDirection = {}));\nvar Property = {\n rotate: 0,\n x: 1,\n y: 2,\n scaleX: 3,\n scaleY: 4,\n shearX: 5,\n shearY: 6,\n rgb: 7,\n alpha: 8,\n rgb2: 9,\n attachment: 10,\n deform: 11,\n event: 12,\n drawOrder: 13,\n ikConstraint: 14,\n transformConstraint: 15,\n pathConstraintPosition: 16,\n pathConstraintSpacing: 17,\n pathConstraintMix: 18\n};\n/** The interface for all timelines. */\nvar Timeline = /** @class */ (function () {\n function Timeline(frameCount, propertyIds) {\n this.propertyIds = propertyIds;\n this.frames = Utils.newFloatArray(frameCount * this.getFrameEntries());\n }\n Timeline.prototype.getPropertyIds = function () {\n return this.propertyIds;\n };\n Timeline.prototype.getFrameEntries = function () {\n return 1;\n };\n Timeline.prototype.getFrameCount = function () {\n return this.frames.length / this.getFrameEntries();\n };\n Timeline.prototype.getDuration = function () {\n return this.frames[this.frames.length - this.getFrameEntries()];\n };\n Timeline.search1 = function (frames, time) {\n var n = frames.length;\n for (var i = 1; i < n; i++)\n if (frames[i] > time)\n return i - 1;\n return n - 1;\n };\n Timeline.search = function (frames, time, step) {\n var n = frames.length;\n for (var i = step; i < n; i += step)\n if (frames[i] > time)\n return i - step;\n return n - step;\n };\n return Timeline;\n}());\nexport { Timeline };\n/** The base class for timelines that use interpolation between key frame values. */\nvar CurveTimeline = /** @class */ (function (_super) {\n __extends(CurveTimeline, _super);\n function CurveTimeline(frameCount, bezierCount, propertyIds) {\n var _this = _super.call(this, frameCount, propertyIds) || this;\n _this.curves = Utils.newFloatArray(frameCount + bezierCount * 18 /*BEZIER_SIZE*/);\n _this.curves[frameCount - 1] = 1 /*STEPPED*/;\n return _this;\n }\n /** Sets the specified key frame to linear interpolation. */\n CurveTimeline.prototype.setLinear = function (frame) {\n this.curves[frame] = 0 /*LINEAR*/;\n };\n /** Sets the specified key frame to stepped interpolation. */\n CurveTimeline.prototype.setStepped = function (frame) {\n this.curves[frame] = 1 /*STEPPED*/;\n };\n /** Shrinks the storage for Bezier curves, for use when bezierCount (specified in the constructor) was larger\n * than the actual number of Bezier curves. */\n CurveTimeline.prototype.shrink = function (bezierCount) {\n var size = this.getFrameCount() + bezierCount * 18 /*BEZIER_SIZE*/;\n if (this.curves.length > size) {\n var newCurves = Utils.newFloatArray(size);\n Utils.arrayCopy(this.curves, 0, newCurves, 0, size);\n this.curves = newCurves;\n }\n };\n /** Stores the segments for the specified Bezier curve. For timelines that modify multiple values, there may be more than\n * one curve per frame.\n * @param bezier The ordinal of this Bezier curve for this timeline, between 0 and bezierCount - 1 (specified\n * in the constructor), inclusive.\n * @param frame Between 0 and frameCount - 1, inclusive.\n * @param value The index of the value for this frame that this curve is used for.\n * @param time1 The time for the first key.\n * @param value1 The value for the first key.\n * @param cx1 The time for the first Bezier handle.\n * @param cy1 The value for the first Bezier handle.\n * @param cx2 The time of the second Bezier handle.\n * @param cy2 The value for the second Bezier handle.\n * @param time2 The time for the second key.\n * @param value2 The value for the second key. */\n CurveTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) {\n var curves = this.curves;\n var i = this.getFrameCount() + bezier * 18 /*BEZIER_SIZE*/;\n if (value == 0)\n curves[frame] = 2 /*BEZIER*/ + i;\n var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03;\n var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006;\n var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy;\n var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667;\n var x = time1 + dx, y = value1 + dy;\n for (var n = i + 18 /*BEZIER_SIZE*/; i < n; i += 2) {\n curves[i] = x;\n curves[i + 1] = y;\n dx += ddx;\n dy += ddy;\n ddx += dddx;\n ddy += dddy;\n x += dx;\n y += dy;\n }\n };\n /** Returns the Bezier interpolated value for the specified time.\n * @param frameIndex The index into {@link #getFrames()} for the values of the frame before time.\n * @param valueOffset The offset from frameIndex to the value this curve is used for.\n * @param i The index of the Bezier segments. See {@link #getCurveType(int)}. */\n CurveTimeline.prototype.getBezierValue = function (time, frameIndex, valueOffset, i) {\n var curves = this.curves;\n if (curves[i] > time) {\n var x_1 = this.frames[frameIndex], y_1 = this.frames[frameIndex + valueOffset];\n return y_1 + (time - x_1) / (curves[i] - x_1) * (curves[i + 1] - y_1);\n }\n var n = i + 18 /*BEZIER_SIZE*/;\n for (i += 2; i < n; i += 2) {\n if (curves[i] >= time) {\n var x_2 = curves[i - 2], y_2 = curves[i - 1];\n return y_2 + (time - x_2) / (curves[i] - x_2) * (curves[i + 1] - y_2);\n }\n }\n frameIndex += this.getFrameEntries();\n var x = curves[n - 2], y = curves[n - 1];\n return y + (time - x) / (this.frames[frameIndex] - x) * (this.frames[frameIndex + valueOffset] - y);\n };\n return CurveTimeline;\n}(Timeline));\nexport { CurveTimeline };\nvar CurveTimeline1 = /** @class */ (function (_super) {\n __extends(CurveTimeline1, _super);\n function CurveTimeline1(frameCount, bezierCount, propertyId) {\n return _super.call(this, frameCount, bezierCount, [propertyId]) || this;\n }\n CurveTimeline1.prototype.getFrameEntries = function () {\n return 2 /*ENTRIES*/;\n };\n /** Sets the time and value for the specified frame.\n * @param frame Between 0 and frameCount, inclusive.\n * @param time The frame time in seconds. */\n CurveTimeline1.prototype.setFrame = function (frame, time, value) {\n frame <<= 1;\n this.frames[frame] = time;\n this.frames[frame + 1 /*VALUE*/] = value;\n };\n /** Returns the interpolated value for the specified time. */\n CurveTimeline1.prototype.getCurveValue = function (time) {\n var frames = this.frames;\n var i = frames.length - 2;\n for (var ii = 2; ii <= i; ii += 2) {\n if (frames[ii] > time) {\n i = ii - 2;\n break;\n }\n }\n var curveType = this.curves[i >> 1];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i], value = frames[i + 1 /*VALUE*/];\n return value + (time - before) / (frames[i + 2 /*ENTRIES*/] - before) * (frames[i + 2 /*ENTRIES*/ + 1 /*VALUE*/] - value);\n case 1 /*STEPPED*/:\n return frames[i + 1 /*VALUE*/];\n }\n return this.getBezierValue(time, i, 1 /*VALUE*/, curveType - 2 /*BEZIER*/);\n };\n return CurveTimeline1;\n}(CurveTimeline));\nexport { CurveTimeline1 };\n/** The base class for a {@link CurveTimeline} which sets two properties. */\nvar CurveTimeline2 = /** @class */ (function (_super) {\n __extends(CurveTimeline2, _super);\n /** @param bezierCount The maximum number of Bezier curves. See {@link #shrink(int)}.\n * @param propertyIds Unique identifiers for the properties the timeline modifies. */\n function CurveTimeline2(frameCount, bezierCount, propertyId1, propertyId2) {\n return _super.call(this, frameCount, bezierCount, [propertyId1, propertyId2]) || this;\n }\n CurveTimeline2.prototype.getFrameEntries = function () {\n return 3 /*ENTRIES*/;\n };\n /** Sets the time and values for the specified frame.\n * @param frame Between 0 and frameCount, inclusive.\n * @param time The frame time in seconds. */\n CurveTimeline2.prototype.setFrame = function (frame, time, value1, value2) {\n frame *= 3 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*VALUE1*/] = value1;\n this.frames[frame + 2 /*VALUE2*/] = value2;\n };\n return CurveTimeline2;\n}(CurveTimeline));\nexport { CurveTimeline2 };\n/** Changes a bone's local {@link Bone#rotation}. */\nvar RotateTimeline = /** @class */ (function (_super) {\n __extends(RotateTimeline, _super);\n function RotateTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.rotate + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.rotation = bone.data.rotation;\n return;\n case MixBlend.first:\n bone.rotation += (bone.data.rotation - bone.rotation) * alpha;\n }\n return;\n }\n var r = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.rotation = bone.data.rotation + r * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n r += bone.data.rotation - bone.rotation;\n case MixBlend.add:\n bone.rotation += r * alpha;\n }\n };\n return RotateTimeline;\n}(CurveTimeline1));\nexport { RotateTimeline };\n/** Changes a bone's local {@link Bone#x} and {@link Bone#y}. */\nvar TranslateTimeline = /** @class */ (function (_super) {\n __extends(TranslateTimeline, _super);\n function TranslateTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.x + \"|\" + boneIndex, Property.y + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x;\n bone.y = bone.data.y;\n return;\n case MixBlend.first:\n bone.x += (bone.data.x - bone.x) * alpha;\n bone.y += (bone.data.y - bone.y) * alpha;\n }\n return;\n }\n var x = 0, y = 0;\n var i = Timeline.search(frames, time, 3 /*ENTRIES*/);\n var curveType = this.curves[i / 3 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before);\n x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t;\n y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n break;\n default:\n x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x + x * alpha;\n bone.y = bone.data.y + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.x += (bone.data.x + x - bone.x) * alpha;\n bone.y += (bone.data.y + y - bone.y) * alpha;\n break;\n case MixBlend.add:\n bone.x += x * alpha;\n bone.y += y * alpha;\n }\n };\n return TranslateTimeline;\n}(CurveTimeline2));\nexport { TranslateTimeline };\n/** Changes a bone's local {@link Bone#x}. */\nvar TranslateXTimeline = /** @class */ (function (_super) {\n __extends(TranslateXTimeline, _super);\n function TranslateXTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.x + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n TranslateXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x;\n return;\n case MixBlend.first:\n bone.x += (bone.data.x - bone.x) * alpha;\n }\n return;\n }\n var x = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x + x * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.x += (bone.data.x + x - bone.x) * alpha;\n break;\n case MixBlend.add:\n bone.x += x * alpha;\n }\n };\n return TranslateXTimeline;\n}(CurveTimeline1));\nexport { TranslateXTimeline };\n/** Changes a bone's local {@link Bone#x}. */\nvar TranslateYTimeline = /** @class */ (function (_super) {\n __extends(TranslateYTimeline, _super);\n function TranslateYTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.y + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n TranslateYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.y = bone.data.y;\n return;\n case MixBlend.first:\n bone.y += (bone.data.y - bone.y) * alpha;\n }\n return;\n }\n var y = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.y = bone.data.y + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.y += (bone.data.y + y - bone.y) * alpha;\n break;\n case MixBlend.add:\n bone.y += y * alpha;\n }\n };\n return TranslateYTimeline;\n}(CurveTimeline1));\nexport { TranslateYTimeline };\n/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */\nvar ScaleTimeline = /** @class */ (function (_super) {\n __extends(ScaleTimeline, _super);\n function ScaleTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + \"|\" + boneIndex, Property.scaleY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.scaleX = bone.data.scaleX;\n bone.scaleY = bone.data.scaleY;\n return;\n case MixBlend.first:\n bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha;\n bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha;\n }\n return;\n }\n var x, y;\n var i = Timeline.search(frames, time, 3 /*ENTRIES*/);\n var curveType = this.curves[i / 3 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before);\n x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t;\n y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n break;\n default:\n x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n x *= bone.data.scaleX;\n y *= bone.data.scaleY;\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n bone.scaleX += x - bone.data.scaleX;\n bone.scaleY += y - bone.data.scaleY;\n }\n else {\n bone.scaleX = x;\n bone.scaleY = y;\n }\n }\n else {\n var bx = 0, by = 0;\n if (direction == MixDirection.mixOut) {\n switch (blend) {\n case MixBlend.setup:\n bx = bone.data.scaleX;\n by = bone.data.scaleY;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = bone.scaleX;\n by = bone.scaleY;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.add:\n bx = bone.scaleX;\n by = bone.scaleY;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bone.data.scaleX) * alpha;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - bone.data.scaleY) * alpha;\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup:\n bx = Math.abs(bone.data.scaleX) * MathUtils.signum(x);\n by = Math.abs(bone.data.scaleY) * MathUtils.signum(y);\n bone.scaleX = bx + (x - bx) * alpha;\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = Math.abs(bone.scaleX) * MathUtils.signum(x);\n by = Math.abs(bone.scaleY) * MathUtils.signum(y);\n bone.scaleX = bx + (x - bx) * alpha;\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.add:\n bx = MathUtils.signum(x);\n by = MathUtils.signum(y);\n bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha;\n bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha;\n }\n }\n }\n };\n return ScaleTimeline;\n}(CurveTimeline2));\nexport { ScaleTimeline };\n/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */\nvar ScaleXTimeline = /** @class */ (function (_super) {\n __extends(ScaleXTimeline, _super);\n function ScaleXTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ScaleXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.scaleX = bone.data.scaleX;\n return;\n case MixBlend.first:\n bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha;\n }\n return;\n }\n var x = this.getCurveValue(time) * bone.data.scaleX;\n if (alpha == 1) {\n if (blend == MixBlend.add)\n bone.scaleX += x - bone.data.scaleX;\n else\n bone.scaleX = x;\n }\n else {\n // Mixing out uses sign of setup or current pose, else use sign of key.\n var bx = 0;\n if (direction == MixDirection.mixOut) {\n switch (blend) {\n case MixBlend.setup:\n bx = bone.data.scaleX;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = bone.scaleX;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n break;\n case MixBlend.add:\n bx = bone.scaleX;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bone.data.scaleX) * alpha;\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup:\n bx = Math.abs(bone.data.scaleX) * MathUtils.signum(x);\n bone.scaleX = bx + (x - bx) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = Math.abs(bone.scaleX) * MathUtils.signum(x);\n bone.scaleX = bx + (x - bx) * alpha;\n break;\n case MixBlend.add:\n bx = MathUtils.signum(x);\n bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha;\n }\n }\n }\n };\n return ScaleXTimeline;\n}(CurveTimeline1));\nexport { ScaleXTimeline };\n/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */\nvar ScaleYTimeline = /** @class */ (function (_super) {\n __extends(ScaleYTimeline, _super);\n function ScaleYTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.scaleY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ScaleYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.scaleY = bone.data.scaleY;\n return;\n case MixBlend.first:\n bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha;\n }\n return;\n }\n var y = this.getCurveValue(time) * bone.data.scaleY;\n if (alpha == 1) {\n if (blend == MixBlend.add)\n bone.scaleY += y - bone.data.scaleY;\n else\n bone.scaleY = y;\n }\n else {\n // Mixing out uses sign of setup or current pose, else use sign of key.\n var by = 0;\n if (direction == MixDirection.mixOut) {\n switch (blend) {\n case MixBlend.setup:\n by = bone.data.scaleY;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n by = bone.scaleY;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.add:\n by = bone.scaleY;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - bone.data.scaleY) * alpha;\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup:\n by = Math.abs(bone.data.scaleY) * MathUtils.signum(y);\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n by = Math.abs(bone.scaleY) * MathUtils.signum(y);\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.add:\n by = MathUtils.signum(y);\n bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha;\n }\n }\n }\n };\n return ScaleYTimeline;\n}(CurveTimeline1));\nexport { ScaleYTimeline };\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nvar ShearTimeline = /** @class */ (function (_super) {\n __extends(ShearTimeline, _super);\n function ShearTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.shearX + \"|\" + boneIndex, Property.shearY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX;\n bone.shearY = bone.data.shearY;\n return;\n case MixBlend.first:\n bone.shearX += (bone.data.shearX - bone.shearX) * alpha;\n bone.shearY += (bone.data.shearY - bone.shearY) * alpha;\n }\n return;\n }\n var x = 0, y = 0;\n var i = Timeline.search(frames, time, 3 /*ENTRIES*/);\n var curveType = this.curves[i / 3 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before);\n x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t;\n y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n break;\n default:\n x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX + x * alpha;\n bone.shearY = bone.data.shearY + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha;\n bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha;\n break;\n case MixBlend.add:\n bone.shearX += x * alpha;\n bone.shearY += y * alpha;\n }\n };\n return ShearTimeline;\n}(CurveTimeline2));\nexport { ShearTimeline };\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nvar ShearXTimeline = /** @class */ (function (_super) {\n __extends(ShearXTimeline, _super);\n function ShearXTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.shearX + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ShearXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX;\n return;\n case MixBlend.first:\n bone.shearX += (bone.data.shearX - bone.shearX) * alpha;\n }\n return;\n }\n var x = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX + x * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha;\n break;\n case MixBlend.add:\n bone.shearX += x * alpha;\n }\n };\n return ShearXTimeline;\n}(CurveTimeline1));\nexport { ShearXTimeline };\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nvar ShearYTimeline = /** @class */ (function (_super) {\n __extends(ShearYTimeline, _super);\n function ShearYTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.shearY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ShearYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.shearY = bone.data.shearY;\n return;\n case MixBlend.first:\n bone.shearY += (bone.data.shearY - bone.shearY) * alpha;\n }\n return;\n }\n var y = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.shearY = bone.data.shearY + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha;\n break;\n case MixBlend.add:\n bone.shearY += y * alpha;\n }\n };\n return ShearYTimeline;\n}(CurveTimeline1));\nexport { ShearYTimeline };\n/** Changes a slot's {@link Slot#color}. */\nvar RGBATimeline = /** @class */ (function (_super) {\n __extends(RGBATimeline, _super);\n function RGBATimeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.alpha + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGBATimeline.prototype.getFrameEntries = function () {\n return 5 /*ENTRIES*/;\n };\n /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */\n RGBATimeline.prototype.setFrame = function (frame, time, r, g, b, a) {\n frame *= 5 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n this.frames[frame + 4 /*A*/] = a;\n };\n RGBATimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var color = slot.color;\n if (time < frames[0]) {\n var setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.setFromColor(setup);\n return;\n case MixBlend.first:\n color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha);\n }\n return;\n }\n var r = 0, g = 0, b = 0, a = 0;\n var i = Timeline.search(frames, time, 5 /*ENTRIES*/);\n var curveType = this.curves[i / 5 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n var t = (time - before) / (frames[i + 5 /*ENTRIES*/] - before);\n r += (frames[i + 5 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 5 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 5 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n a += (frames[i + 5 /*ENTRIES*/ + 4 /*A*/] - a) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n a = this.getBezierValue(time, i, 4 /*A*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n }\n if (alpha == 1)\n color.set(r, g, b, a);\n else {\n if (blend == MixBlend.setup)\n 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 return RGBATimeline;\n}(CurveTimeline));\nexport { RGBATimeline };\n/** Changes a slot's {@link Slot#color}. */\nvar RGBTimeline = /** @class */ (function (_super) {\n __extends(RGBTimeline, _super);\n function RGBTimeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGBTimeline.prototype.getFrameEntries = function () {\n return 4 /*ENTRIES*/;\n };\n /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */\n RGBTimeline.prototype.setFrame = function (frame, time, r, g, b) {\n frame <<= 2;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n };\n RGBTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var color = slot.color;\n if (time < frames[0]) {\n var setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.r = setup.r;\n color.g = setup.g;\n color.b = setup.b;\n return;\n case MixBlend.first:\n color.r += (setup.r - color.r) * alpha;\n color.g += (setup.g - color.g) * alpha;\n color.b += (setup.b - color.b) * alpha;\n }\n return;\n }\n var r = 0, g = 0, b = 0;\n var i = Timeline.search(frames, time, 4 /*ENTRIES*/);\n var curveType = this.curves[i >> 2];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n var t = (time - before) / (frames[i + 4 /*ENTRIES*/] - before);\n r += (frames[i + 4 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 4 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 4 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n }\n if (alpha == 1) {\n color.r = r;\n color.g = g;\n color.b = b;\n }\n else {\n if (blend == MixBlend.setup) {\n var setup = slot.data.color;\n color.r = setup.r;\n color.g = setup.g;\n color.b = setup.b;\n }\n color.r += (r - color.r) * alpha;\n color.g += (g - color.g) * alpha;\n color.b += (b - color.b) * alpha;\n }\n };\n return RGBTimeline;\n}(CurveTimeline));\nexport { RGBTimeline };\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nvar AlphaTimeline = /** @class */ (function (_super) {\n __extends(AlphaTimeline, _super);\n function AlphaTimeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.alpha + \"|\" + slotIndex) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n AlphaTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var color = slot.color;\n if (time < this.frames[0]) { // Time is before first frame.\n var setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.a = setup.a;\n return;\n case MixBlend.first:\n color.a += (setup.a - color.a) * alpha;\n }\n return;\n }\n var a = this.getCurveValue(time);\n if (alpha == 1)\n color.a = a;\n else {\n if (blend == MixBlend.setup)\n color.a = slot.data.color.a;\n color.a += (a - color.a) * alpha;\n }\n };\n return AlphaTimeline;\n}(CurveTimeline1));\nexport { AlphaTimeline };\n/** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */\nvar RGBA2Timeline = /** @class */ (function (_super) {\n __extends(RGBA2Timeline, _super);\n function RGBA2Timeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.alpha + \"|\" + slotIndex,\n Property.rgb2 + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGBA2Timeline.prototype.getFrameEntries = function () {\n return 8 /*ENTRIES*/;\n };\n /** Sets the time in seconds, light, and dark colors for the specified key frame. */\n RGBA2Timeline.prototype.setFrame = function (frame, time, r, g, b, a, r2, g2, b2) {\n frame <<= 3;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n this.frames[frame + 4 /*A*/] = a;\n this.frames[frame + 5 /*R2*/] = r2;\n this.frames[frame + 6 /*G2*/] = g2;\n this.frames[frame + 7 /*B2*/] = b2;\n };\n RGBA2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var light = slot.color, dark = slot.darkColor;\n if (time < frames[0]) {\n var setupLight = slot.data.color, setupDark = slot.data.darkColor;\n switch (blend) {\n case MixBlend.setup:\n light.setFromColor(setupLight);\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n return;\n case MixBlend.first:\n light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha);\n dark.r += (setupDark.r - dark.r) * alpha;\n dark.g += (setupDark.g - dark.g) * alpha;\n dark.b += (setupDark.b - dark.b) * alpha;\n }\n return;\n }\n var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0;\n var i = Timeline.search(frames, time, 8 /*ENTRIES*/);\n var curveType = this.curves[i >> 3];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n r2 = frames[i + 5 /*R2*/];\n g2 = frames[i + 6 /*G2*/];\n b2 = frames[i + 7 /*B2*/];\n var t = (time - before) / (frames[i + 8 /*ENTRIES*/] - before);\n r += (frames[i + 8 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 8 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 8 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n a += (frames[i + 8 /*ENTRIES*/ + 4 /*A*/] - a) * t;\n r2 += (frames[i + 8 /*ENTRIES*/ + 5 /*R2*/] - r2) * t;\n g2 += (frames[i + 8 /*ENTRIES*/ + 6 /*G2*/] - g2) * t;\n b2 += (frames[i + 8 /*ENTRIES*/ + 7 /*B2*/] - b2) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n r2 = frames[i + 5 /*R2*/];\n g2 = frames[i + 6 /*G2*/];\n b2 = frames[i + 7 /*B2*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n a = this.getBezierValue(time, i, 4 /*A*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n r2 = this.getBezierValue(time, i, 5 /*R2*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/);\n g2 = this.getBezierValue(time, i, 6 /*G2*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/);\n b2 = this.getBezierValue(time, i, 7 /*B2*/, curveType + 18 /*BEZIER_SIZE*/ * 6 - 2 /*BEZIER*/);\n }\n if (alpha == 1) {\n light.set(r, g, b, a);\n dark.r = r2;\n dark.g = g2;\n dark.b = b2;\n }\n else {\n if (blend == MixBlend.setup) {\n light.setFromColor(slot.data.color);\n var setupDark = slot.data.darkColor;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n }\n light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha);\n dark.r += (r2 - dark.r) * alpha;\n dark.g += (g2 - dark.g) * alpha;\n dark.b += (b2 - dark.b) * alpha;\n }\n };\n return RGBA2Timeline;\n}(CurveTimeline));\nexport { RGBA2Timeline };\n/** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */\nvar RGB2Timeline = /** @class */ (function (_super) {\n __extends(RGB2Timeline, _super);\n function RGB2Timeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.rgb2 + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGB2Timeline.prototype.getFrameEntries = function () {\n return 7 /*ENTRIES*/;\n };\n /** Sets the time in seconds, light, and dark colors for the specified key frame. */\n RGB2Timeline.prototype.setFrame = function (frame, time, r, g, b, r2, g2, b2) {\n frame *= 7 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n this.frames[frame + 4 /*R2*/] = r2;\n this.frames[frame + 5 /*G2*/] = g2;\n this.frames[frame + 6 /*B2*/] = b2;\n };\n RGB2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var light = slot.color, dark = slot.darkColor;\n if (time < frames[0]) {\n var setupLight = slot.data.color, setupDark = slot.data.darkColor;\n switch (blend) {\n case MixBlend.setup:\n light.r = setupLight.r;\n light.g = setupLight.g;\n light.b = setupLight.b;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n return;\n case MixBlend.first:\n light.r += (setupLight.r - light.r) * alpha;\n light.g += (setupLight.g - light.g) * alpha;\n light.b += (setupLight.b - light.b) * alpha;\n dark.r += (setupDark.r - dark.r) * alpha;\n dark.g += (setupDark.g - dark.g) * alpha;\n dark.b += (setupDark.b - dark.b) * alpha;\n }\n return;\n }\n var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0;\n var i = Timeline.search(frames, time, 7 /*ENTRIES*/);\n var curveType = this.curves[i / 7 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n r2 = frames[i + 4 /*R2*/];\n g2 = frames[i + 5 /*G2*/];\n b2 = frames[i + 6 /*B2*/];\n var t = (time - before) / (frames[i + 7 /*ENTRIES*/] - before);\n r += (frames[i + 7 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 7 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 7 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n r2 += (frames[i + 7 /*ENTRIES*/ + 4 /*R2*/] - r2) * t;\n g2 += (frames[i + 7 /*ENTRIES*/ + 5 /*G2*/] - g2) * t;\n b2 += (frames[i + 7 /*ENTRIES*/ + 6 /*B2*/] - b2) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n r2 = frames[i + 4 /*R2*/];\n g2 = frames[i + 5 /*G2*/];\n b2 = frames[i + 6 /*B2*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n r2 = this.getBezierValue(time, i, 4 /*R2*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n g2 = this.getBezierValue(time, i, 5 /*G2*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/);\n b2 = this.getBezierValue(time, i, 6 /*B2*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/);\n }\n if (alpha == 1) {\n light.r = r;\n light.g = g;\n light.b = b;\n dark.r = r2;\n dark.g = g2;\n dark.b = b2;\n }\n else {\n if (blend == MixBlend.setup) {\n var setupLight = slot.data.color, setupDark = slot.data.darkColor;\n light.r = setupLight.r;\n light.g = setupLight.g;\n light.b = setupLight.b;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n }\n light.r += (r - light.r) * alpha;\n light.g += (g - light.g) * alpha;\n light.b += (b - light.b) * alpha;\n dark.r += (r2 - dark.r) * alpha;\n dark.g += (g2 - dark.g) * alpha;\n dark.b += (b2 - dark.b) * alpha;\n }\n };\n return RGB2Timeline;\n}(CurveTimeline));\nexport { RGB2Timeline };\n/** Changes a slot's {@link Slot#attachment}. */\nvar AttachmentTimeline = /** @class */ (function (_super) {\n __extends(AttachmentTimeline, _super);\n function AttachmentTimeline(frameCount, slotIndex) {\n var _this = _super.call(this, frameCount, [\n Property.attachment + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n _this.attachmentNames = new Array(frameCount);\n return _this;\n }\n AttachmentTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n /** Sets the time in seconds and the attachment name for the specified key frame. */\n AttachmentTimeline.prototype.setFrame = function (frame, time, attachmentName) {\n this.frames[frame] = time;\n this.attachmentNames[frame] = attachmentName;\n };\n AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n if (direction == MixDirection.mixOut) {\n if (blend == MixBlend.setup)\n this.setAttachment(skeleton, slot, slot.data.attachmentName);\n return;\n }\n if (time < this.frames[0]) {\n if (blend == MixBlend.setup || blend == MixBlend.first)\n this.setAttachment(skeleton, slot, slot.data.attachmentName);\n return;\n }\n this.setAttachment(skeleton, slot, this.attachmentNames[Timeline.search1(this.frames, time)]);\n };\n AttachmentTimeline.prototype.setAttachment = function (skeleton, slot, attachmentName) {\n slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\n };\n return AttachmentTimeline;\n}(Timeline));\nexport { AttachmentTimeline };\n/** Changes a slot's {@link Slot#deform} to deform a {@link VertexAttachment}. */\nvar DeformTimeline = /** @class */ (function (_super) {\n __extends(DeformTimeline, _super);\n function DeformTimeline(frameCount, bezierCount, slotIndex, attachment) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.deform + \"|\" + slotIndex + \"|\" + attachment.id\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n _this.attachment = attachment;\n _this.vertices = new Array(frameCount);\n return _this;\n }\n DeformTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n /** Sets the time in seconds and the vertices for the specified key frame.\n * @param vertices Vertex positions for an unweighted VertexAttachment, or deform offsets if it has weights. */\n DeformTimeline.prototype.setFrame = function (frame, time, vertices) {\n this.frames[frame] = time;\n this.vertices[frame] = vertices;\n };\n /** @param value1 Ignored (0 is used for a deform timeline).\n * @param value2 Ignored (1 is used for a deform timeline). */\n DeformTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) {\n var curves = this.curves;\n var i = this.getFrameCount() + bezier * 18 /*BEZIER_SIZE*/;\n if (value == 0)\n curves[frame] = 2 /*BEZIER*/ + i;\n var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06;\n var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018;\n var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy;\n var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667;\n var x = time1 + dx, y = dy;\n for (var n = i + 18 /*BEZIER_SIZE*/; i < n; i += 2) {\n curves[i] = x;\n curves[i + 1] = y;\n dx += ddx;\n dy += ddy;\n ddx += dddx;\n ddy += dddy;\n x += dx;\n y += dy;\n }\n };\n DeformTimeline.prototype.getCurvePercent = function (time, frame) {\n var curves = this.curves;\n var i = curves[frame];\n switch (i) {\n case 0 /*LINEAR*/:\n var x_3 = this.frames[frame];\n return (time - x_3) / (this.frames[frame + this.getFrameEntries()] - x_3);\n case 1 /*STEPPED*/:\n return 0;\n }\n i -= 2 /*BEZIER*/;\n if (curves[i] > time) {\n var x_4 = this.frames[frame];\n return curves[i + 1] * (time - x_4) / (curves[i] - x_4);\n }\n var n = i + 18 /*BEZIER_SIZE*/;\n for (i += 2; i < n; i += 2) {\n if (curves[i] >= time) {\n var x_5 = curves[i - 2], y_3 = curves[i - 1];\n return y_3 + (time - x_5) / (curves[i] - x_5) * (curves[i + 1] - y_3);\n }\n }\n var x = curves[n - 2], y = curves[n - 1];\n return y + (1 - y) * (time - x) / (this.frames[frame + this.getFrameEntries()] - x);\n };\n DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var slotAttachment = slot.getAttachment();\n if (!(slotAttachment instanceof VertexAttachment) || slotAttachment.deformAttachment != this.attachment)\n return;\n var deform = slot.deform;\n if (deform.length == 0)\n blend = MixBlend.setup;\n var vertices = this.vertices;\n var vertexCount = vertices[0].length;\n var frames = this.frames;\n if (time < frames[0]) {\n var vertexAttachment = slotAttachment;\n switch (blend) {\n case MixBlend.setup:\n deform.length = 0;\n return;\n case MixBlend.first:\n if (alpha == 1) {\n deform.length = 0;\n return;\n }\n deform.length = vertexCount;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions.\n var setupVertices = vertexAttachment.vertices;\n for (var i = 0; i < vertexCount; i++)\n deform[i] += (setupVertices[i] - deform[i]) * alpha;\n }\n else {\n // Weighted deform offsets.\n alpha = 1 - alpha;\n for (var i = 0; i < vertexCount; i++)\n deform[i] *= alpha;\n }\n }\n return;\n }\n deform.length = vertexCount;\n if (time >= frames[frames.length - 1]) { // Time is after last frame.\n var lastVertices = vertices[frames.length - 1];\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment.vertices;\n for (var i_1 = 0; i_1 < vertexCount; i_1++)\n deform[i_1] += lastVertices[i_1] - setupVertices[i_1];\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_2 = 0; i_2 < vertexCount; i_2++)\n deform[i_2] += lastVertices[i_2];\n }\n }\n else\n Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount);\n }\n else {\n switch (blend) {\n case MixBlend.setup: {\n var vertexAttachment_1 = slotAttachment;\n if (!vertexAttachment_1.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment_1.vertices;\n for (var i_3 = 0; i_3 < vertexCount; i_3++) {\n var setup = setupVertices[i_3];\n deform[i_3] = setup + (lastVertices[i_3] - setup) * alpha;\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_4 = 0; i_4 < vertexCount; i_4++)\n deform[i_4] = lastVertices[i_4] * alpha;\n }\n break;\n }\n case MixBlend.first:\n case MixBlend.replace:\n for (var i_5 = 0; i_5 < vertexCount; i_5++)\n deform[i_5] += (lastVertices[i_5] - deform[i_5]) * alpha;\n break;\n case MixBlend.add:\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment.vertices;\n for (var i_6 = 0; i_6 < vertexCount; i_6++)\n deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha;\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_7 = 0; i_7 < vertexCount; i_7++)\n deform[i_7] += lastVertices[i_7] * alpha;\n }\n }\n }\n return;\n }\n // Interpolate between the previous frame and the current frame.\n var frame = Timeline.search1(frames, time);\n var percent = this.getCurvePercent(time, frame);\n var prevVertices = vertices[frame];\n var nextVertices = vertices[frame + 1];\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment.vertices;\n for (var i_8 = 0; i_8 < vertexCount; i_8++) {\n var prev = prevVertices[i_8];\n deform[i_8] += prev + (nextVertices[i_8] - prev) * percent - setupVertices[i_8];\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_9 = 0; i_9 < vertexCount; i_9++) {\n var prev = prevVertices[i_9];\n deform[i_9] += prev + (nextVertices[i_9] - prev) * percent;\n }\n }\n }\n else {\n for (var i_10 = 0; i_10 < vertexCount; i_10++) {\n var prev = prevVertices[i_10];\n deform[i_10] = prev + (nextVertices[i_10] - prev) * percent;\n }\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup: {\n var vertexAttachment_2 = slotAttachment;\n if (!vertexAttachment_2.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment_2.vertices;\n for (var i_11 = 0; i_11 < vertexCount; i_11++) {\n var prev = prevVertices[i_11], setup = setupVertices[i_11];\n deform[i_11] = setup + (prev + (nextVertices[i_11] - prev) * percent - setup) * alpha;\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_12 = 0; i_12 < vertexCount; i_12++) {\n var prev = prevVertices[i_12];\n deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha;\n }\n }\n break;\n }\n case MixBlend.first:\n case MixBlend.replace:\n for (var i_13 = 0; i_13 < vertexCount; i_13++) {\n var prev = prevVertices[i_13];\n deform[i_13] += (prev + (nextVertices[i_13] - prev) * percent - deform[i_13]) * alpha;\n }\n break;\n case MixBlend.add:\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment.vertices;\n for (var i_14 = 0; i_14 < vertexCount; i_14++) {\n var prev = prevVertices[i_14];\n deform[i_14] += (prev + (nextVertices[i_14] - prev) * percent - setupVertices[i_14]) * alpha;\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_15 = 0; i_15 < vertexCount; i_15++) {\n var prev = prevVertices[i_15];\n deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha;\n }\n }\n }\n }\n };\n return DeformTimeline;\n}(CurveTimeline));\nexport { DeformTimeline };\n/** Fires an {@link Event} when specific animation times are reached. */\nvar EventTimeline = /** @class */ (function (_super) {\n __extends(EventTimeline, _super);\n function EventTimeline(frameCount) {\n var _this = _super.call(this, frameCount, EventTimeline.propertyIds) || this;\n _this.events = new Array(frameCount);\n return _this;\n }\n EventTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n /** Sets the time in seconds and the event for the specified key frame. */\n EventTimeline.prototype.setFrame = function (frame, event) {\n this.frames[frame] = event.time;\n this.events[frame] = event;\n };\n /** Fires events for frames > `lastTime` and <= `time`. */\n EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n if (!firedEvents)\n return;\n var frames = this.frames;\n var frameCount = this.frames.length;\n if (lastTime > time) { // Fire events after last time for looped animations.\n this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction);\n lastTime = -1;\n }\n else if (lastTime >= frames[frameCount - 1]) // Last time is after last frame.\n return;\n if (time < frames[0])\n return; // Time is before first frame.\n var i = 0;\n if (lastTime < frames[0])\n i = 0;\n else {\n i = Timeline.search1(frames, lastTime) + 1;\n var frameTime = frames[i];\n while (i > 0) { // Fire multiple events with the same frame.\n if (frames[i - 1] != frameTime)\n break;\n i--;\n }\n }\n for (; i < frameCount && time >= frames[i]; i++)\n firedEvents.push(this.events[i]);\n };\n EventTimeline.propertyIds = [\"\" + Property.event];\n return EventTimeline;\n}(Timeline));\nexport { EventTimeline };\n/** Changes a skeleton's {@link Skeleton#drawOrder}. */\nvar DrawOrderTimeline = /** @class */ (function (_super) {\n __extends(DrawOrderTimeline, _super);\n function DrawOrderTimeline(frameCount) {\n var _this = _super.call(this, frameCount, DrawOrderTimeline.propertyIds) || this;\n _this.drawOrders = new Array(frameCount);\n return _this;\n }\n DrawOrderTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n /** Sets the time in seconds and the draw order for the specified key frame.\n * @param drawOrder For each slot in {@link Skeleton#slots}, the index of the new draw order. May be null to use setup pose\n * draw order. */\n DrawOrderTimeline.prototype.setFrame = function (frame, time, drawOrder) {\n this.frames[frame] = time;\n this.drawOrders[frame] = drawOrder;\n };\n DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n if (direction == MixDirection.mixOut) {\n if (blend == MixBlend.setup)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n return;\n }\n if (time < this.frames[0]) {\n if (blend == MixBlend.setup || blend == MixBlend.first)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n return;\n }\n var drawOrderToSetupIndex = this.drawOrders[Timeline.search1(this.frames, time)];\n if (!drawOrderToSetupIndex)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n else {\n var drawOrder = skeleton.drawOrder;\n var slots = skeleton.slots;\n for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++)\n drawOrder[i] = slots[drawOrderToSetupIndex[i]];\n }\n };\n DrawOrderTimeline.propertyIds = [\"\" + Property.drawOrder];\n return DrawOrderTimeline;\n}(Timeline));\nexport { DrawOrderTimeline };\n/** Changes an IK constraint's {@link IkConstraint#mix}, {@link IkConstraint#softness},\n * {@link IkConstraint#bendDirection}, {@link IkConstraint#stretch}, and {@link IkConstraint#compress}. */\nvar IkConstraintTimeline = /** @class */ (function (_super) {\n __extends(IkConstraintTimeline, _super);\n function IkConstraintTimeline(frameCount, bezierCount, ikConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.ikConstraint + \"|\" + ikConstraintIndex\n ]) || this;\n _this.ikConstraintIndex = ikConstraintIndex;\n return _this;\n }\n IkConstraintTimeline.prototype.getFrameEntries = function () {\n return 6 /*ENTRIES*/;\n };\n /** Sets the time in seconds, mix, softness, bend direction, compress, and stretch for the specified key frame. */\n IkConstraintTimeline.prototype.setFrame = function (frame, time, mix, softness, bendDirection, compress, stretch) {\n frame *= 6 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*MIX*/] = mix;\n this.frames[frame + 2 /*SOFTNESS*/] = softness;\n this.frames[frame + 3 /*BEND_DIRECTION*/] = bendDirection;\n this.frames[frame + 4 /*COMPRESS*/] = compress ? 1 : 0;\n this.frames[frame + 5 /*STRETCH*/] = stretch ? 1 : 0;\n };\n IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.ikConstraints[this.ikConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.mix = constraint.data.mix;\n constraint.softness = constraint.data.softness;\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n return;\n case MixBlend.first:\n constraint.mix += (constraint.data.mix - constraint.mix) * alpha;\n constraint.softness += (constraint.data.softness - constraint.softness) * alpha;\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n }\n return;\n }\n var mix = 0, softness = 0;\n var i = Timeline.search(frames, time, 6 /*ENTRIES*/);\n var curveType = this.curves[i / 6 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n mix = frames[i + 1 /*MIX*/];\n softness = frames[i + 2 /*SOFTNESS*/];\n var t = (time - before) / (frames[i + 6 /*ENTRIES*/] - before);\n mix += (frames[i + 6 /*ENTRIES*/ + 1 /*MIX*/] - mix) * t;\n softness += (frames[i + 6 /*ENTRIES*/ + 2 /*SOFTNESS*/] - softness) * t;\n break;\n case 1 /*STEPPED*/:\n mix = frames[i + 1 /*MIX*/];\n softness = frames[i + 2 /*SOFTNESS*/];\n break;\n default:\n mix = this.getBezierValue(time, i, 1 /*MIX*/, curveType - 2 /*BEZIER*/);\n softness = this.getBezierValue(time, i, 2 /*SOFTNESS*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n if (blend == MixBlend.setup) {\n constraint.mix = constraint.data.mix + (mix - constraint.data.mix) * alpha;\n constraint.softness = constraint.data.softness + (softness - constraint.data.softness) * alpha;\n if (direction == MixDirection.mixOut) {\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n }\n else {\n constraint.bendDirection = frames[i + 3 /*BEND_DIRECTION*/];\n constraint.compress = frames[i + 4 /*COMPRESS*/] != 0;\n constraint.stretch = frames[i + 5 /*STRETCH*/] != 0;\n }\n }\n else {\n constraint.mix += (mix - constraint.mix) * alpha;\n constraint.softness += (softness - constraint.softness) * alpha;\n if (direction == MixDirection.mixIn) {\n constraint.bendDirection = frames[i + 3 /*BEND_DIRECTION*/];\n constraint.compress = frames[i + 4 /*COMPRESS*/] != 0;\n constraint.stretch = frames[i + 5 /*STRETCH*/] != 0;\n }\n }\n };\n return IkConstraintTimeline;\n}(CurveTimeline));\nexport { IkConstraintTimeline };\n/** Changes a transform constraint's {@link TransformConstraint#rotateMix}, {@link TransformConstraint#translateMix},\n * {@link TransformConstraint#scaleMix}, and {@link TransformConstraint#shearMix}. */\nvar TransformConstraintTimeline = /** @class */ (function (_super) {\n __extends(TransformConstraintTimeline, _super);\n function TransformConstraintTimeline(frameCount, bezierCount, transformConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.transformConstraint + \"|\" + transformConstraintIndex\n ]) || this;\n _this.transformConstraintIndex = transformConstraintIndex;\n return _this;\n }\n TransformConstraintTimeline.prototype.getFrameEntries = function () {\n return 7 /*ENTRIES*/;\n };\n /** The time in seconds, rotate mix, translate mix, scale mix, and shear mix for the specified key frame. */\n TransformConstraintTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) {\n var frames = this.frames;\n frame *= 7 /*ENTRIES*/;\n frames[frame] = time;\n frames[frame + 1 /*ROTATE*/] = mixRotate;\n frames[frame + 2 /*X*/] = mixX;\n frames[frame + 3 /*Y*/] = mixY;\n frames[frame + 4 /*SCALEX*/] = mixScaleX;\n frames[frame + 5 /*SCALEY*/] = mixScaleY;\n frames[frame + 6 /*SHEARY*/] = mixShearY;\n };\n TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.transformConstraints[this.transformConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n var data = constraint.data;\n switch (blend) {\n case MixBlend.setup:\n constraint.mixRotate = data.mixRotate;\n constraint.mixX = data.mixX;\n constraint.mixY = data.mixY;\n constraint.mixScaleX = data.mixScaleX;\n constraint.mixScaleY = data.mixScaleY;\n constraint.mixShearY = data.mixShearY;\n return;\n case MixBlend.first:\n constraint.mixRotate += (data.mixRotate - constraint.mixRotate) * alpha;\n constraint.mixX += (data.mixX - constraint.mixX) * alpha;\n constraint.mixY += (data.mixY - constraint.mixY) * alpha;\n constraint.mixScaleX += (data.mixScaleX - constraint.mixScaleX) * alpha;\n constraint.mixScaleY += (data.mixScaleY - constraint.mixScaleY) * alpha;\n constraint.mixShearY += (data.mixShearY - constraint.mixShearY) * alpha;\n }\n return;\n }\n var rotate, x, y, scaleX, scaleY, shearY;\n var i = Timeline.search(frames, time, 7 /*ENTRIES*/);\n var curveType = this.curves[i / 7 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n scaleX = frames[i + 4 /*SCALEX*/];\n scaleY = frames[i + 5 /*SCALEY*/];\n shearY = frames[i + 6 /*SHEARY*/];\n var t = (time - before) / (frames[i + 7 /*ENTRIES*/] - before);\n rotate += (frames[i + 7 /*ENTRIES*/ + 1 /*ROTATE*/] - rotate) * t;\n x += (frames[i + 7 /*ENTRIES*/ + 2 /*X*/] - x) * t;\n y += (frames[i + 7 /*ENTRIES*/ + 3 /*Y*/] - y) * t;\n scaleX += (frames[i + 7 /*ENTRIES*/ + 4 /*SCALEX*/] - scaleX) * t;\n scaleY += (frames[i + 7 /*ENTRIES*/ + 5 /*SCALEY*/] - scaleY) * t;\n shearY += (frames[i + 7 /*ENTRIES*/ + 6 /*SHEARY*/] - shearY) * t;\n break;\n case 1 /*STEPPED*/:\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n scaleX = frames[i + 4 /*SCALEX*/];\n scaleY = frames[i + 5 /*SCALEY*/];\n shearY = frames[i + 6 /*SHEARY*/];\n break;\n default:\n rotate = this.getBezierValue(time, i, 1 /*ROTATE*/, curveType - 2 /*BEZIER*/);\n x = this.getBezierValue(time, i, 2 /*X*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 3 /*Y*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n scaleX = this.getBezierValue(time, i, 4 /*SCALEX*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n scaleY = this.getBezierValue(time, i, 5 /*SCALEY*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/);\n shearY = this.getBezierValue(time, i, 6 /*SHEARY*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/);\n }\n if (blend == MixBlend.setup) {\n var data = constraint.data;\n constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha;\n constraint.mixX = data.mixX + (x - data.mixX) * alpha;\n constraint.mixY = data.mixY + (y - data.mixY) * alpha;\n constraint.mixScaleX = data.mixScaleX + (scaleX - data.mixScaleX) * alpha;\n constraint.mixScaleY = data.mixScaleY + (scaleY - data.mixScaleY) * alpha;\n constraint.mixShearY = data.mixShearY + (shearY - data.mixShearY) * alpha;\n }\n else {\n constraint.mixRotate += (rotate - constraint.mixRotate) * alpha;\n constraint.mixX += (x - constraint.mixX) * alpha;\n constraint.mixY += (y - constraint.mixY) * alpha;\n constraint.mixScaleX += (scaleX - constraint.mixScaleX) * alpha;\n constraint.mixScaleY += (scaleY - constraint.mixScaleY) * alpha;\n constraint.mixShearY += (shearY - constraint.mixShearY) * alpha;\n }\n };\n return TransformConstraintTimeline;\n}(CurveTimeline));\nexport { TransformConstraintTimeline };\n/** Changes a path constraint's {@link PathConstraint#position}. */\nvar PathConstraintPositionTimeline = /** @class */ (function (_super) {\n __extends(PathConstraintPositionTimeline, _super);\n function PathConstraintPositionTimeline(frameCount, bezierCount, pathConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintPosition + \"|\" + pathConstraintIndex) || this;\n _this.pathConstraintIndex = pathConstraintIndex;\n return _this;\n }\n PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.pathConstraints[this.pathConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.position = constraint.data.position;\n return;\n case MixBlend.first:\n constraint.position += (constraint.data.position - constraint.position) * alpha;\n }\n return;\n }\n var position = this.getCurveValue(time);\n if (blend == MixBlend.setup)\n constraint.position = constraint.data.position + (position - constraint.data.position) * alpha;\n else\n constraint.position += (position - constraint.position) * alpha;\n };\n return PathConstraintPositionTimeline;\n}(CurveTimeline1));\nexport { PathConstraintPositionTimeline };\n/** Changes a path constraint's {@link PathConstraint#spacing}. */\nvar PathConstraintSpacingTimeline = /** @class */ (function (_super) {\n __extends(PathConstraintSpacingTimeline, _super);\n function PathConstraintSpacingTimeline(frameCount, bezierCount, pathConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintSpacing + \"|\" + pathConstraintIndex) || this;\n /** The index of the path constraint slot in {@link Skeleton#getPathConstraints()} that will be changed. */\n _this.pathConstraintIndex = 0;\n _this.pathConstraintIndex = pathConstraintIndex;\n return _this;\n }\n PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.pathConstraints[this.pathConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.spacing = constraint.data.spacing;\n return;\n case MixBlend.first:\n constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha;\n }\n return;\n }\n var spacing = this.getCurveValue(time);\n if (blend == MixBlend.setup)\n constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha;\n else\n constraint.spacing += (spacing - constraint.spacing) * alpha;\n };\n return PathConstraintSpacingTimeline;\n}(CurveTimeline1));\nexport { PathConstraintSpacingTimeline };\n/** Changes a transform constraint's {@link PathConstraint#getMixRotate()}, {@link PathConstraint#getMixX()}, and\n * {@link PathConstraint#getMixY()}. */\nvar PathConstraintMixTimeline = /** @class */ (function (_super) {\n __extends(PathConstraintMixTimeline, _super);\n function PathConstraintMixTimeline(frameCount, bezierCount, pathConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.pathConstraintMix + \"|\" + pathConstraintIndex\n ]) || this;\n /** The index of the path constraint slot in {@link Skeleton#getPathConstraints()} that will be changed. */\n _this.pathConstraintIndex = 0;\n _this.pathConstraintIndex = pathConstraintIndex;\n return _this;\n }\n PathConstraintMixTimeline.prototype.getFrameEntries = function () {\n return 4 /*ENTRIES*/;\n };\n PathConstraintMixTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY) {\n var frames = this.frames;\n frame <<= 2;\n frames[frame] = time;\n frames[frame + 1 /*ROTATE*/] = mixRotate;\n frames[frame + 2 /*X*/] = mixX;\n frames[frame + 3 /*Y*/] = mixY;\n };\n PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.pathConstraints[this.pathConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.mixRotate = constraint.data.mixRotate;\n constraint.mixX = constraint.data.mixX;\n constraint.mixY = constraint.data.mixY;\n return;\n case MixBlend.first:\n constraint.mixRotate += (constraint.data.mixRotate - constraint.mixRotate) * alpha;\n constraint.mixX += (constraint.data.mixX - constraint.mixX) * alpha;\n constraint.mixY += (constraint.data.mixY - constraint.mixY) * alpha;\n }\n return;\n }\n var rotate, x, y;\n var i = Timeline.search(frames, time, 4 /*ENTRIES*/);\n var curveType = this.curves[i >> 2];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n var t = (time - before) / (frames[i + 4 /*ENTRIES*/] - before);\n rotate += (frames[i + 4 /*ENTRIES*/ + 1 /*ROTATE*/] - rotate) * t;\n x += (frames[i + 4 /*ENTRIES*/ + 2 /*X*/] - x) * t;\n y += (frames[i + 4 /*ENTRIES*/ + 3 /*Y*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n break;\n default:\n rotate = this.getBezierValue(time, i, 1 /*ROTATE*/, curveType - 2 /*BEZIER*/);\n x = this.getBezierValue(time, i, 2 /*X*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 3 /*Y*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n }\n if (blend == MixBlend.setup) {\n var data = constraint.data;\n constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha;\n constraint.mixX = data.mixX + (x - data.mixX) * alpha;\n constraint.mixY = data.mixY + (y - data.mixY) * alpha;\n }\n else {\n constraint.mixRotate += (rotate - constraint.mixRotate) * alpha;\n constraint.mixX += (x - constraint.mixX) * alpha;\n constraint.mixY += (y - constraint.mixY) * alpha;\n }\n };\n return PathConstraintMixTimeline;\n}(CurveTimeline));\nexport { PathConstraintMixTimeline };\n//# sourceMappingURL=Animation.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Animation, MixBlend, AttachmentTimeline, MixDirection, RotateTimeline, DrawOrderTimeline, Timeline, EventTimeline } from \"./Animation\";\nimport { StringSet, Pool, Utils, MathUtils } from \"./Utils\";\n/** Applies animations over time, queues animations for later playback, mixes (crossfading) between animations, and applies\n * multiple animations on top of each other (layering).\n *\n * See [Applying Animations](http://esotericsoftware.com/spine-applying-animations/) in the Spine Runtimes Guide. */\nvar AnimationState = /** @class */ (function () {\n function AnimationState(data) {\n /** The list of tracks that currently have animations, which may contain null entries. */\n this.tracks = new Array();\n /** Multiplier for the delta time when the animation state is updated, causing time for all animations and mixes to play slower\n * or faster. Defaults to 1.\n *\n * See TrackEntry {@link TrackEntry#timeScale} for affecting a single animation. */\n this.timeScale = 1;\n this.unkeyedState = 0;\n this.events = new Array();\n this.listeners = new Array();\n this.queue = new EventQueue(this);\n this.propertyIDs = new StringSet();\n this.animationsChanged = false;\n this.trackEntryPool = new Pool(function () { return new TrackEntry(); });\n this.data = data;\n }\n AnimationState.emptyAnimation = function () {\n if (!_emptyAnimation)\n _emptyAnimation = new Animation(\"\", [], 0);\n return _emptyAnimation;\n };\n /** Increments each track entry {@link TrackEntry#trackTime()}, setting queued animations as current if needed. */\n AnimationState.prototype.update = function (delta) {\n delta *= this.timeScale;\n var tracks = this.tracks;\n for (var i = 0, n = tracks.length; i < n; i++) {\n var current = tracks[i];\n if (!current)\n continue;\n current.animationLast = current.nextAnimationLast;\n current.trackLast = current.nextTrackLast;\n var currentDelta = delta * current.timeScale;\n if (current.delay > 0) {\n current.delay -= currentDelta;\n if (current.delay > 0)\n continue;\n currentDelta = -current.delay;\n current.delay = 0;\n }\n var next = current.next;\n if (next) {\n // When the next entry's delay is passed, change to the next entry, preserving leftover time.\n var nextTime = current.trackLast - next.delay;\n if (nextTime >= 0) {\n next.delay = 0;\n next.trackTime += current.timeScale == 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale;\n current.trackTime += currentDelta;\n this.setCurrent(i, next, true);\n while (next.mixingFrom) {\n next.mixTime += delta;\n next = next.mixingFrom;\n }\n continue;\n }\n }\n else if (current.trackLast >= current.trackEnd && !current.mixingFrom) {\n tracks[i] = null;\n this.queue.end(current);\n this.clearNext(current);\n continue;\n }\n if (current.mixingFrom && this.updateMixingFrom(current, delta)) {\n // End mixing from entries once all have completed.\n var from = current.mixingFrom;\n current.mixingFrom = null;\n if (from)\n from.mixingTo = null;\n while (from) {\n this.queue.end(from);\n from = from.mixingFrom;\n }\n }\n current.trackTime += currentDelta;\n }\n this.queue.drain();\n };\n /** Returns true when all mixing from entries are complete. */\n AnimationState.prototype.updateMixingFrom = function (to, delta) {\n var from = to.mixingFrom;\n if (!from)\n return true;\n var finished = this.updateMixingFrom(from, delta);\n from.animationLast = from.nextAnimationLast;\n from.trackLast = from.nextTrackLast;\n // Require mixTime > 0 to ensure the mixing from entry was applied at least once.\n if (to.mixTime > 0 && to.mixTime >= to.mixDuration) {\n // Require totalAlpha == 0 to ensure mixing is complete, unless mixDuration == 0 (the transition is a single frame).\n if (from.totalAlpha == 0 || to.mixDuration == 0) {\n to.mixingFrom = from.mixingFrom;\n if (from.mixingFrom)\n from.mixingFrom.mixingTo = to;\n to.interruptAlpha = from.interruptAlpha;\n this.queue.end(from);\n }\n return finished;\n }\n from.trackTime += delta * from.timeScale;\n to.mixTime += delta;\n return false;\n };\n /** Poses the skeleton using the track entry animations. There are no side effects other than invoking listeners, so the\n * animation state can be applied to multiple skeletons to pose them identically.\n * @returns True if any animations were applied. */\n AnimationState.prototype.apply = function (skeleton) {\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n if (this.animationsChanged)\n this._animationsChanged();\n var events = this.events;\n var tracks = this.tracks;\n var applied = false;\n for (var i_1 = 0, n_1 = tracks.length; i_1 < n_1; i_1++) {\n var current = tracks[i_1];\n if (!current || current.delay > 0)\n continue;\n applied = true;\n var blend = i_1 == 0 ? MixBlend.first : current.mixBlend;\n // Apply mixing from entries first.\n var mix = current.alpha;\n if (current.mixingFrom)\n mix *= this.applyMixingFrom(current, skeleton, blend);\n else if (current.trackTime >= current.trackEnd && !current.next)\n mix = 0;\n // Apply current entry.\n var animationLast = current.animationLast, animationTime = current.getAnimationTime(), applyTime = animationTime;\n var applyEvents = events;\n if (current.reverse) {\n applyTime = current.animation.duration - applyTime;\n applyEvents = null;\n }\n var timelines = current.animation.timelines;\n var timelineCount = timelines.length;\n if ((i_1 == 0 && mix == 1) || blend == MixBlend.add) {\n for (var ii = 0; ii < timelineCount; ii++) {\n // Fixes issue #302 on IOS9 where mix, blend sometimes became undefined and caused assets\n // to sometimes stop rendering when using color correction, as their RGBA values become NaN.\n // (https://github.com/pixijs/pixi-spine/issues/302)\n Utils.webkit602BugfixHelper(mix, blend);\n var timeline = timelines[ii];\n if (timeline instanceof AttachmentTimeline)\n this.applyAttachmentTimeline(timeline, skeleton, applyTime, blend, true);\n else\n timeline.apply(skeleton, animationLast, applyTime, applyEvents, mix, blend, MixDirection.mixIn);\n }\n }\n else {\n var timelineMode = current.timelineMode;\n var firstFrame = current.timelinesRotation.length != timelineCount << 1;\n if (firstFrame)\n current.timelinesRotation.length = timelineCount << 1;\n for (var ii = 0; ii < timelineCount; ii++) {\n var timeline_1 = timelines[ii];\n var timelineBlend = timelineMode[ii] == SUBSEQUENT ? blend : MixBlend.setup;\n if (timeline_1 instanceof RotateTimeline) {\n this.applyRotateTimeline(timeline_1, skeleton, applyTime, mix, timelineBlend, current.timelinesRotation, ii << 1, firstFrame);\n }\n else if (timeline_1 instanceof AttachmentTimeline) {\n this.applyAttachmentTimeline(timeline_1, skeleton, applyTime, blend, true);\n }\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, blend);\n timeline_1.apply(skeleton, animationLast, applyTime, applyEvents, mix, timelineBlend, MixDirection.mixIn);\n }\n }\n }\n this.queueEvents(current, animationTime);\n events.length = 0;\n current.nextAnimationLast = animationTime;\n current.nextTrackLast = current.trackTime;\n }\n // Set slots attachments to the setup pose, if needed. This occurs if an animation that is mixing out sets attachments so\n // subsequent timelines see any deform, but the subsequent timelines don't set an attachment (eg they are also mixing out or\n // the time is before the first key).\n var setupState = this.unkeyedState + SETUP;\n var slots = skeleton.slots;\n for (var i = 0, n = skeleton.slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.attachmentState == setupState) {\n var attachmentName = slot.data.attachmentName;\n slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName));\n }\n }\n this.unkeyedState += 2; // Increasing after each use avoids the need to reset attachmentState for every slot.\n this.queue.drain();\n return applied;\n };\n AnimationState.prototype.applyMixingFrom = function (to, skeleton, blend) {\n var from = to.mixingFrom;\n if (from.mixingFrom)\n this.applyMixingFrom(from, skeleton, blend);\n var mix = 0;\n if (to.mixDuration == 0) { // Single frame mix to undo mixingFrom changes.\n mix = 1;\n if (blend == MixBlend.first)\n blend = MixBlend.setup;\n }\n else {\n mix = to.mixTime / to.mixDuration;\n if (mix > 1)\n mix = 1;\n if (blend != MixBlend.first)\n blend = from.mixBlend;\n }\n var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold;\n var timelines = from.animation.timelines;\n var timelineCount = timelines.length;\n var alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix);\n var animationLast = from.animationLast, animationTime = from.getAnimationTime(), applyTime = animationTime;\n var events = null;\n if (from.reverse)\n applyTime = from.animation.duration - applyTime;\n else if (mix < from.eventThreshold)\n events = this.events;\n if (blend == MixBlend.add) {\n for (var i = 0; i < timelineCount; i++)\n timelines[i].apply(skeleton, animationLast, applyTime, events, alphaMix, blend, MixDirection.mixOut);\n }\n else {\n var timelineMode = from.timelineMode;\n var timelineHoldMix = from.timelineHoldMix;\n var firstFrame = from.timelinesRotation.length != timelineCount << 1;\n if (firstFrame)\n from.timelinesRotation.length = timelineCount << 1;\n from.totalAlpha = 0;\n for (var i = 0; i < timelineCount; i++) {\n var timeline = timelines[i];\n var direction = MixDirection.mixOut;\n var timelineBlend = void 0;\n var alpha = 0;\n switch (timelineMode[i]) {\n case SUBSEQUENT:\n if (!drawOrder && timeline instanceof DrawOrderTimeline)\n continue;\n timelineBlend = blend;\n alpha = alphaMix;\n break;\n case FIRST:\n timelineBlend = MixBlend.setup;\n alpha = alphaMix;\n break;\n case HOLD_SUBSEQUENT:\n timelineBlend = blend;\n alpha = alphaHold;\n break;\n case HOLD_FIRST:\n timelineBlend = MixBlend.setup;\n alpha = alphaHold;\n break;\n default:\n timelineBlend = MixBlend.setup;\n var holdMix = timelineHoldMix[i];\n alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration);\n break;\n }\n from.totalAlpha += alpha;\n if (timeline instanceof RotateTimeline)\n this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, timelineBlend, from.timelinesRotation, i << 1, firstFrame);\n else if (timeline instanceof AttachmentTimeline)\n this.applyAttachmentTimeline(timeline, skeleton, applyTime, timelineBlend, attachments);\n else {\n // This fixes the WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109\n Utils.webkit602BugfixHelper(alpha, blend);\n if (drawOrder && timeline instanceof DrawOrderTimeline && timelineBlend == MixBlend.setup)\n direction = MixDirection.mixIn;\n timeline.apply(skeleton, animationLast, applyTime, events, alpha, timelineBlend, direction);\n }\n }\n }\n if (to.mixDuration > 0)\n this.queueEvents(from, animationTime);\n this.events.length = 0;\n from.nextAnimationLast = animationTime;\n from.nextTrackLast = from.trackTime;\n return mix;\n };\n AnimationState.prototype.applyAttachmentTimeline = function (timeline, skeleton, time, blend, attachments) {\n var slot = skeleton.slots[timeline.slotIndex];\n if (!slot.bone.active)\n return;\n if (time < timeline.frames[0]) { // Time is before first frame.\n if (blend == MixBlend.setup || blend == MixBlend.first)\n this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments);\n }\n else\n this.setAttachment(skeleton, slot, timeline.attachmentNames[Timeline.search1(timeline.frames, time)], attachments);\n // If an attachment wasn't set (ie before the first frame or attachments is false), set the setup attachment later.\n if (slot.attachmentState <= this.unkeyedState)\n slot.attachmentState = this.unkeyedState + SETUP;\n };\n AnimationState.prototype.setAttachment = function (skeleton, slot, attachmentName, attachments) {\n slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName));\n if (attachments)\n slot.attachmentState = this.unkeyedState + CURRENT;\n };\n AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) {\n if (firstFrame)\n timelinesRotation[i] = 0;\n if (alpha == 1) {\n timeline.apply(skeleton, 0, time, null, 1, blend, MixDirection.mixIn);\n return;\n }\n var bone = skeleton.bones[timeline.boneIndex];\n if (!bone.active)\n return;\n var frames = timeline.frames;\n var r1 = 0, r2 = 0;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.rotation = bone.data.rotation;\n default:\n return;\n case MixBlend.first:\n r1 = bone.rotation;\n r2 = bone.data.rotation;\n }\n }\n else {\n r1 = blend == MixBlend.setup ? bone.data.rotation : bone.rotation;\n r2 = bone.data.rotation + timeline.getCurveValue(time);\n }\n // Mix between rotations using the direction of the shortest route on the first frame while detecting crosses.\n var total = 0, diff = r2 - r1;\n diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360;\n if (diff == 0) {\n total = timelinesRotation[i];\n }\n else {\n var lastTotal = 0, lastDiff = 0;\n if (firstFrame) {\n lastTotal = 0;\n lastDiff = diff;\n }\n else {\n lastTotal = timelinesRotation[i]; // Angle and direction of mix, including loops.\n lastDiff = timelinesRotation[i + 1]; // Difference between bones.\n }\n var 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)\n 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)\n total += 360 * MathUtils.signum(lastTotal);\n timelinesRotation[i] = total;\n }\n timelinesRotation[i + 1] = diff;\n bone.rotation = r1 + total * alpha;\n };\n AnimationState.prototype.queueEvents = function (entry, animationTime) {\n var animationStart = entry.animationStart, animationEnd = entry.animationEnd;\n var duration = animationEnd - animationStart;\n var trackLastWrapped = entry.trackLast % duration;\n // Queue events before complete.\n var events = this.events;\n var i = 0, n = events.length;\n for (; i < n; i++) {\n var event_1 = events[i];\n if (event_1.time < trackLastWrapped)\n break;\n if (event_1.time > animationEnd)\n continue; // Discard events outside animation start/end.\n this.queue.event(entry, event_1);\n }\n // Queue complete if completed a loop iteration or the animation.\n var complete = false;\n if (entry.loop)\n complete = duration == 0 || trackLastWrapped > entry.trackTime % duration;\n else\n complete = animationTime >= animationEnd && entry.animationLast < animationEnd;\n if (complete)\n this.queue.complete(entry);\n // Queue events after complete.\n for (; i < n; i++) {\n var event_2 = events[i];\n if (event_2.time < animationStart)\n continue; // Discard events outside animation start/end.\n this.queue.event(entry, event_2);\n }\n };\n /** Removes all animations from all tracks, leaving skeletons in their current pose.\n *\n * It may be desired to use {@link AnimationState#setEmptyAnimation()} to mix the skeletons back to the setup pose,\n * rather than leaving them in their current pose. */\n AnimationState.prototype.clearTracks = function () {\n var oldDrainDisabled = this.queue.drainDisabled;\n this.queue.drainDisabled = true;\n for (var 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 /** Removes all animations from the track, leaving skeletons in their current pose.\n *\n * It may be desired to use {@link AnimationState#setEmptyAnimation()} to mix the skeletons back to the setup pose,\n * rather than leaving them in their current pose. */\n AnimationState.prototype.clearTrack = function (trackIndex) {\n if (trackIndex >= this.tracks.length)\n return;\n var current = this.tracks[trackIndex];\n if (!current)\n return;\n this.queue.end(current);\n this.clearNext(current);\n var entry = current;\n while (true) {\n var from = entry.mixingFrom;\n if (!from)\n break;\n this.queue.end(from);\n entry.mixingFrom = null;\n entry.mixingTo = null;\n entry = from;\n }\n this.tracks[current.trackIndex] = null;\n this.queue.drain();\n };\n AnimationState.prototype.setCurrent = function (index, current, interrupt) {\n var from = this.expandToIndex(index);\n this.tracks[index] = current;\n current.previous = null;\n if (from) {\n if (interrupt)\n this.queue.interrupt(from);\n current.mixingFrom = from;\n from.mixingTo = current;\n current.mixTime = 0;\n // Store the interrupted mix percentage.\n if (from.mixingFrom && from.mixDuration > 0)\n current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration);\n from.timelinesRotation.length = 0; // Reset rotation for mixing out, in case entry was mixed in.\n }\n this.queue.start(current);\n };\n /** Sets an animation by name.\n *\n * See {@link #setAnimationWith()}. */\n AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) {\n if (loop === void 0) { loop = false; }\n var animation = this.data.skeletonData.findAnimation(animationName);\n if (!animation)\n throw new Error(\"Animation not found: \" + animationName);\n return this.setAnimationWith(trackIndex, animation, loop);\n };\n /** Sets the current animation for a track, discarding any queued animations. If the formerly current track entry was never\n * applied to a skeleton, it is replaced (not mixed from).\n * @param loop If true, the animation will repeat. If false it will not, instead its last frame is applied if played beyond its\n * duration. In either case {@link TrackEntry#trackEnd} determines when the track is cleared.\n * @returns A track entry to allow further customization of animation playback. References to the track entry must not be kept\n * after the {@link AnimationStateListener#dispose()} event occurs. */\n AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) {\n if (loop === void 0) { loop = false; }\n if (!animation)\n throw new Error(\"animation cannot be null.\");\n var interrupt = true;\n var current = this.expandToIndex(trackIndex);\n if (current) {\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.clearNext(current);\n current = current.mixingFrom;\n interrupt = false;\n }\n else\n this.clearNext(current);\n }\n var entry = this.trackEntry(trackIndex, animation, loop, current);\n this.setCurrent(trackIndex, entry, interrupt);\n this.queue.drain();\n return entry;\n };\n /** Queues an animation by name.\n *\n * See {@link #addAnimationWith()}. */\n AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) {\n if (loop === void 0) { loop = false; }\n if (delay === void 0) { delay = 0; }\n var animation = this.data.skeletonData.findAnimation(animationName);\n if (!animation)\n throw new Error(\"Animation not found: \" + animationName);\n return this.addAnimationWith(trackIndex, animation, loop, delay);\n };\n /** Adds an animation to be played after the current or last queued animation for a track. If the track is empty, it is\n * equivalent to calling {@link #setAnimationWith()}.\n * @param delay If > 0, sets {@link TrackEntry#delay}. If <= 0, the delay set is the duration of the previous track entry\n * minus any mix duration (from the {@link AnimationStateData}) plus the specified `delay` (ie the mix\n * ends at (`delay` = 0) or before (`delay` < 0) the previous track entry duration). If the\n * previous entry is looping, its next loop completion is used instead of its duration.\n * @returns A track entry to allow further customization of animation playback. References to the track entry must not be kept\n * after the {@link AnimationStateListener#dispose()} event occurs. */\n AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) {\n if (loop === void 0) { loop = false; }\n if (delay === void 0) { delay = 0; }\n if (!animation)\n throw new Error(\"animation cannot be null.\");\n var last = this.expandToIndex(trackIndex);\n if (last) {\n while (last.next)\n last = last.next;\n }\n var entry = this.trackEntry(trackIndex, animation, loop, last);\n if (!last) {\n this.setCurrent(trackIndex, entry, true);\n this.queue.drain();\n }\n else {\n last.next = entry;\n entry.previous = last;\n if (delay <= 0)\n delay += last.getTrackComplete() - entry.mixDuration;\n }\n entry.delay = delay;\n return entry;\n };\n /** Sets an empty animation for a track, discarding any queued animations, and sets the track entry's\n * {@link TrackEntry#mixduration}. An empty animation has no timelines and serves as a placeholder for mixing in or out.\n *\n * Mixing out is done by setting an empty animation with a mix duration using either {@link #setEmptyAnimation()},\n * {@link #setEmptyAnimations()}, or {@link #addEmptyAnimation()}. Mixing to an empty animation causes\n * the previous animation to be applied less and less over the mix duration. Properties keyed in the previous animation\n * transition to the value from lower tracks or to the setup pose value if no lower tracks key the property. A mix duration of\n * 0 still mixes out over one frame.\n *\n * Mixing in is done by first setting an empty animation, then adding an animation using\n * {@link #addAnimation()} and on the returned track entry, set the\n * {@link TrackEntry#setMixDuration()}. Mixing from an empty animation causes the new animation to be applied more and\n * more over the mix duration. Properties keyed in the new animation transition from the value from lower tracks or from the\n * setup pose value if no lower tracks key the property to the value keyed in the new animation. */\n AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) {\n if (mixDuration === void 0) { mixDuration = 0; }\n var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation(), false);\n entry.mixDuration = mixDuration;\n entry.trackEnd = mixDuration;\n return entry;\n };\n /** Adds an empty animation to be played after the current or last queued animation for a track, and sets the track entry's\n * {@link TrackEntry#mixDuration}. If the track is empty, it is equivalent to calling\n * {@link #setEmptyAnimation()}.\n *\n * See {@link #setEmptyAnimation()}.\n * @param delay If > 0, sets {@link TrackEntry#delay}. If <= 0, the delay set is the duration of the previous track entry\n * minus any mix duration plus the specified `delay` (ie the mix ends at (`delay` = 0) or\n * before (`delay` < 0) the previous track entry duration). If the previous entry is looping, its next\n * loop completion is used instead of its duration.\n * @return A track entry to allow further customization of animation playback. References to the track entry must not be kept\n * after the {@link AnimationStateListener#dispose()} event occurs. */\n AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) {\n if (mixDuration === void 0) { mixDuration = 0; }\n if (delay === void 0) { delay = 0; }\n var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay);\n if (delay <= 0)\n entry.delay += entry.mixDuration - mixDuration;\n entry.mixDuration = mixDuration;\n entry.trackEnd = mixDuration;\n return entry;\n };\n /** Sets an empty animation for every track, discarding any queued animations, and mixes to it over the specified mix\n * duration. */\n AnimationState.prototype.setEmptyAnimations = function (mixDuration) {\n if (mixDuration === void 0) { mixDuration = 0; }\n var oldDrainDisabled = this.queue.drainDisabled;\n this.queue.drainDisabled = true;\n for (var i = 0, n = this.tracks.length; i < n; i++) {\n var current = this.tracks[i];\n if (current)\n this.setEmptyAnimation(current.trackIndex, mixDuration);\n }\n this.queue.drainDisabled = oldDrainDisabled;\n this.queue.drain();\n };\n AnimationState.prototype.expandToIndex = function (index) {\n if (index < this.tracks.length)\n return this.tracks[index];\n Utils.ensureArrayCapacity(this.tracks, index + 1, null);\n this.tracks.length = index + 1;\n return null;\n };\n /** @param last May be null. */\n AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) {\n var entry = this.trackEntryPool.obtain();\n entry.trackIndex = trackIndex;\n entry.animation = animation;\n entry.loop = loop;\n entry.holdPrevious = false;\n entry.eventThreshold = 0;\n entry.attachmentThreshold = 0;\n entry.drawOrderThreshold = 0;\n entry.animationStart = 0;\n entry.animationEnd = animation.duration;\n entry.animationLast = -1;\n entry.nextAnimationLast = -1;\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 entry.alpha = 1;\n entry.interruptAlpha = 1;\n entry.mixTime = 0;\n entry.mixDuration = !last ? 0 : this.data.getMix(last.animation, animation);\n entry.mixBlend = MixBlend.replace;\n return entry;\n };\n /** Removes the {@link TrackEntry#getNext() next entry} and all entries after it for the specified entry. */\n AnimationState.prototype.clearNext = function (entry) {\n var next = entry.next;\n while (next) {\n this.queue.dispose(next);\n next = next.next;\n }\n entry.next = null;\n };\n AnimationState.prototype._animationsChanged = function () {\n this.animationsChanged = false;\n this.propertyIDs.clear();\n var tracks = this.tracks;\n for (var i = 0, n = tracks.length; i < n; i++) {\n var entry = tracks[i];\n if (!entry)\n continue;\n while (entry.mixingFrom)\n entry = entry.mixingFrom;\n do {\n if (!entry.mixingTo || entry.mixBlend != MixBlend.add)\n this.computeHold(entry);\n entry = entry.mixingTo;\n } while (entry);\n }\n };\n AnimationState.prototype.computeHold = function (entry) {\n var to = entry.mixingTo;\n var timelines = entry.animation.timelines;\n var timelinesCount = entry.animation.timelines.length;\n var timelineMode = entry.timelineMode;\n timelineMode.length = timelinesCount;\n var timelineHoldMix = entry.timelineHoldMix;\n timelineHoldMix.length = 0;\n var propertyIDs = this.propertyIDs;\n if (to && to.holdPrevious) {\n for (var i = 0; i < timelinesCount; i++)\n timelineMode[i] = propertyIDs.addAll(timelines[i].getPropertyIds()) ? HOLD_FIRST : HOLD_SUBSEQUENT;\n return;\n }\n outer: for (var i = 0; i < timelinesCount; i++) {\n var timeline = timelines[i];\n var ids = timeline.getPropertyIds();\n if (!propertyIDs.addAll(ids))\n timelineMode[i] = SUBSEQUENT;\n else if (!to || timeline instanceof AttachmentTimeline || timeline instanceof DrawOrderTimeline\n || timeline instanceof EventTimeline || !to.animation.hasTimeline(ids)) {\n timelineMode[i] = FIRST;\n }\n else {\n for (var next = to.mixingTo; next; next = next.mixingTo) {\n if (next.animation.hasTimeline(ids))\n continue;\n if (entry.mixDuration > 0) {\n timelineMode[i] = HOLD_MIX;\n timelineHoldMix[i] = next;\n continue outer;\n }\n break;\n }\n timelineMode[i] = HOLD_FIRST;\n }\n }\n };\n /** Returns the track entry for the animation currently playing on the track, or null if no animation is currently playing. */\n AnimationState.prototype.getCurrent = function (trackIndex) {\n if (trackIndex >= this.tracks.length)\n return null;\n return this.tracks[trackIndex];\n };\n /** Adds a listener to receive events for all track entries. */\n AnimationState.prototype.addListener = function (listener) {\n if (!listener)\n throw new Error(\"listener cannot be null.\");\n this.listeners.push(listener);\n };\n /** Removes the listener added with {@link #addListener()}. */\n AnimationState.prototype.removeListener = function (listener) {\n var index = this.listeners.indexOf(listener);\n if (index >= 0)\n this.listeners.splice(index, 1);\n };\n /** Removes all listeners added with {@link #addListener()}. */\n AnimationState.prototype.clearListeners = function () {\n this.listeners.length = 0;\n };\n /** Discards all listener notifications that have not yet been delivered. This can be useful to call from an\n * {@link AnimationStateListener} when it is known that further notifications that may have been already queued for delivery\n * are not wanted because new animations are being set. */\n AnimationState.prototype.clearListenerNotifications = function () {\n this.queue.clear();\n };\n return AnimationState;\n}());\nexport { AnimationState };\n/** Stores settings and other state for the playback of an animation on an {@link AnimationState} track.\n *\n * References to a track entry must not be kept after the {@link AnimationStateListener#dispose()} event occurs. */\nvar TrackEntry = /** @class */ (function () {\n function TrackEntry() {\n /** Controls how properties keyed in the animation are mixed with lower tracks. Defaults to {@link MixBlend#replace}, which\n * replaces the values from the lower tracks with the animation values. {@link MixBlend#add} adds the animation values to\n * the values from the lower tracks.\n *\n * The `mixBlend` can be set for a new track entry only before {@link AnimationState#apply()} is first\n * called. */\n this.mixBlend = MixBlend.replace;\n this.timelineMode = new Array();\n this.timelineHoldMix = new Array();\n this.timelinesRotation = new Array();\n }\n TrackEntry.prototype.reset = function () {\n this.next = null;\n this.previous = null;\n this.mixingFrom = null;\n this.mixingTo = null;\n this.animation = null;\n this.listener = null;\n this.timelineMode.length = 0;\n this.timelineHoldMix.length = 0;\n this.timelinesRotation.length = 0;\n };\n /** Uses {@link #trackTime} to compute the `animationTime`, which is between {@link #animationStart}\n * and {@link #animationEnd}. When the `trackTime` is 0, the `animationTime` is equal to the\n * `animationStart` time. */\n TrackEntry.prototype.getAnimationTime = function () {\n if (this.loop) {\n var duration = this.animationEnd - this.animationStart;\n if (duration == 0)\n return this.animationStart;\n return (this.trackTime % duration) + this.animationStart;\n }\n return Math.min(this.trackTime + this.animationStart, this.animationEnd);\n };\n TrackEntry.prototype.setAnimationLast = function (animationLast) {\n this.animationLast = animationLast;\n this.nextAnimationLast = animationLast;\n };\n /** Returns true if at least one loop has been completed.\n *\n * See {@link AnimationStateListener#complete()}. */\n TrackEntry.prototype.isComplete = function () {\n return this.trackTime >= this.animationEnd - this.animationStart;\n };\n /** Resets the rotation directions for mixing this entry's rotate timelines. This can be useful to avoid bones rotating the\n * long way around when using {@link #alpha} and starting animations on other tracks.\n *\n * Mixing with {@link MixBlend#replace} involves finding a rotation between two others, which has two possible solutions:\n * the short way or the long way around. The two rotations likely change over time, so which direction is the short or long\n * way also changes. If the short way was always chosen, bones would flip to the other side when that direction became the\n * long way. TrackEntry chooses the short way the first time it is applied and remembers that direction. */\n TrackEntry.prototype.resetRotationDirections = function () {\n this.timelinesRotation.length = 0;\n };\n TrackEntry.prototype.getTrackComplete = function () {\n var duration = this.animationEnd - this.animationStart;\n if (duration != 0) {\n if (this.loop)\n return duration * (1 + ((this.trackTime / duration) | 0)); // Completion of next loop.\n if (this.trackTime < duration)\n return duration; // Before duration.\n }\n return this.trackTime; // Next update.\n };\n return TrackEntry;\n}());\nexport { TrackEntry };\nvar EventQueue = /** @class */ (function () {\n function EventQueue(animState) {\n this.objects = [];\n this.drainDisabled = false;\n this.animState = animState;\n }\n EventQueue.prototype.start = function (entry) {\n this.objects.push(EventType.start);\n this.objects.push(entry);\n this.animState.animationsChanged = true;\n };\n EventQueue.prototype.interrupt = function (entry) {\n this.objects.push(EventType.interrupt);\n this.objects.push(entry);\n };\n EventQueue.prototype.end = function (entry) {\n this.objects.push(EventType.end);\n this.objects.push(entry);\n this.animState.animationsChanged = true;\n };\n EventQueue.prototype.dispose = function (entry) {\n this.objects.push(EventType.dispose);\n this.objects.push(entry);\n };\n EventQueue.prototype.complete = function (entry) {\n this.objects.push(EventType.complete);\n this.objects.push(entry);\n };\n EventQueue.prototype.event = function (entry, event) {\n this.objects.push(EventType.event);\n this.objects.push(entry);\n this.objects.push(event);\n };\n EventQueue.prototype.drain = function () {\n if (this.drainDisabled)\n return;\n this.drainDisabled = true;\n var objects = this.objects;\n var listeners = this.animState.listeners;\n for (var i = 0; i < objects.length; i += 2) {\n var type = objects[i];\n var entry = objects[i + 1];\n switch (type) {\n case EventType.start:\n if (entry.listener && entry.listener.start)\n entry.listener.start(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].start)\n listeners[ii].start(entry);\n break;\n case EventType.interrupt:\n if (entry.listener && entry.listener.interrupt)\n entry.listener.interrupt(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].interrupt)\n listeners[ii].interrupt(entry);\n break;\n case EventType.end:\n if (entry.listener && entry.listener.end)\n entry.listener.end(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].end)\n listeners[ii].end(entry);\n // Fall through.\n case EventType.dispose:\n if (entry.listener && entry.listener.dispose)\n entry.listener.dispose(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].dispose)\n listeners[ii].dispose(entry);\n this.animState.trackEntryPool.free(entry);\n break;\n case EventType.complete:\n if (entry.listener && entry.listener.complete)\n entry.listener.complete(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].complete)\n listeners[ii].complete(entry);\n break;\n case EventType.event:\n var event_3 = objects[i++ + 2];\n if (entry.listener && entry.listener.event)\n entry.listener.event(entry, event_3);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].event)\n listeners[ii].event(entry, event_3);\n break;\n }\n }\n this.clear();\n this.drainDisabled = false;\n };\n EventQueue.prototype.clear = function () {\n this.objects.length = 0;\n };\n return EventQueue;\n}());\nexport { EventQueue };\nexport var EventType;\n(function (EventType) {\n EventType[EventType[\"start\"] = 0] = \"start\";\n EventType[EventType[\"interrupt\"] = 1] = \"interrupt\";\n EventType[EventType[\"end\"] = 2] = \"end\";\n EventType[EventType[\"dispose\"] = 3] = \"dispose\";\n EventType[EventType[\"complete\"] = 4] = \"complete\";\n EventType[EventType[\"event\"] = 5] = \"event\";\n})(EventType || (EventType = {}));\nvar AnimationStateAdapter = /** @class */ (function () {\n function AnimationStateAdapter() {\n }\n AnimationStateAdapter.prototype.start = function (entry) {\n };\n AnimationStateAdapter.prototype.interrupt = function (entry) {\n };\n AnimationStateAdapter.prototype.end = function (entry) {\n };\n AnimationStateAdapter.prototype.dispose = function (entry) {\n };\n AnimationStateAdapter.prototype.complete = function (entry) {\n };\n AnimationStateAdapter.prototype.event = function (entry, event) {\n };\n return AnimationStateAdapter;\n}());\nexport { AnimationStateAdapter };\n/** 1. A previously applied timeline has set this property.\n *\n * Result: Mix from the current pose to the timeline pose. */\nexport var SUBSEQUENT = 0;\n/** 1. This is the first timeline to set this property.\n * 2. The next track entry applied after this one does not have a timeline to set this property.\n *\n * Result: Mix from the setup pose to the timeline pose. */\nexport var FIRST = 1;\n/** 1) A previously applied timeline has set this property.
        \n * 2) The next track entry to be applied does have a timeline to set this property.
        \n * 3) The next track entry after that one does not have a timeline to set this property.
        \n * Result: Mix from the current pose to the timeline pose, but do not mix out. This avoids \"dipping\" when crossfading\n * animations that key the same property. A subsequent timeline will set this property using a mix. */\nexport var HOLD_SUBSEQUENT = 2;\n/** 1) This is the first timeline to set this property.
        \n * 2) The next track entry to be applied does have a timeline to set this property.
        \n * 3) The next track entry after that one does not have a timeline to set this property.
        \n * Result: Mix from the setup pose to the timeline pose, but do not mix out. This avoids \"dipping\" when crossfading animations\n * that key the same property. A subsequent timeline will set this property using a mix. */\nexport var HOLD_FIRST = 3;\n/** 1. This is the first timeline to set this property.\n * 2. The next track entry to be applied does have a timeline to set this property.\n * 3. The next track entry after that one does have a timeline to set this property.\n * 4. timelineHoldMix stores the first subsequent track entry that does not have a timeline to set this property.\n *\n * Result: The same as HOLD except the mix percentage from the timelineHoldMix track entry is used. This handles when more than\n * 2 track entries in a row have a timeline that sets the same property.\n *\n * Eg, A -> B -> C -> D where A, B, and C have a timeline setting same property, but D does not. When A is applied, to avoid\n * \"dipping\" A is not mixed out, however D (the first entry that doesn't set the property) mixing in is used to mix out A\n * (which affects B and C). Without using D to mix out, A would be applied fully until mixing completes, then snap into\n * place. */\nexport var HOLD_MIX = 4;\nexport var SETUP = 1;\nexport var CURRENT = 2;\nvar _emptyAnimation = null;\n//# sourceMappingURL=AnimationState.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n/** Stores mix (crossfade) durations to be applied when {@link AnimationState} animations are changed. */\nvar AnimationStateData = /** @class */ (function () {\n function AnimationStateData(skeletonData) {\n this.animationToMixTime = {};\n /** The mix duration to use when no mix duration has been defined between two animations. */\n this.defaultMix = 0;\n if (!skeletonData)\n throw new Error(\"skeletonData cannot be null.\");\n this.skeletonData = skeletonData;\n }\n /** Sets a mix duration by animation name.\n *\n * See {@link #setMixWith()}. */\n AnimationStateData.prototype.setMix = function (fromName, toName, duration) {\n var from = this.skeletonData.findAnimation(fromName);\n if (!from)\n throw new Error(\"Animation not found: \" + fromName);\n var to = this.skeletonData.findAnimation(toName);\n if (!to)\n throw new Error(\"Animation not found: \" + toName);\n this.setMixWith(from, to, duration);\n };\n /** Sets the mix duration when changing from the specified animation to the other.\n *\n * See {@link TrackEntry#mixDuration}. */\n AnimationStateData.prototype.setMixWith = function (from, to, duration) {\n if (!from)\n throw new Error(\"from cannot be null.\");\n if (!to)\n throw new Error(\"to cannot be null.\");\n var key = from.name + \".\" + to.name;\n this.animationToMixTime[key] = duration;\n };\n /** Returns the mix duration to use when changing from the specified animation to the other, or the {@link #defaultMix} if\n * no mix duration has been set. */\n AnimationStateData.prototype.getMix = function (from, to) {\n var key = from.name + \".\" + to.name;\n var value = this.animationToMixTime[key];\n return value === undefined ? this.defaultMix : value;\n };\n return AnimationStateData;\n}());\nexport { AnimationStateData };\n//# sourceMappingURL=AnimationStateData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\n/** An attachment with vertices that make up a polygon. Can be used for hit detection, creating physics bodies, spawning particle\n * effects, and more.\n *\n * See {@link SkeletonBounds} and [Bounding Boxes](http://esotericsoftware.com/spine-bounding-boxes) in the Spine User\n * Guide. */\nvar BoundingBoxAttachment = /** @class */ (function (_super) {\n __extends(BoundingBoxAttachment, _super);\n function BoundingBoxAttachment(name) {\n var _this = _super.call(this, name) || this;\n _this.color = new Color(1, 1, 1, 1);\n return _this;\n }\n BoundingBoxAttachment.prototype.copy = function () {\n var copy = new BoundingBoxAttachment(this.name);\n this.copyTo(copy);\n copy.color.setFromColor(this.color);\n return copy;\n };\n return BoundingBoxAttachment;\n}(VertexAttachment));\nexport { BoundingBoxAttachment };\n//# sourceMappingURL=BoundingBoxAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\n/** An attachment with vertices that make up a polygon used for clipping the rendering of other attachments. */\nvar ClippingAttachment = /** @class */ (function (_super) {\n __extends(ClippingAttachment, _super);\n function ClippingAttachment(name) {\n var _this = _super.call(this, name) || this;\n // Nonessential.\n /** The color of the clipping polygon as it was in Spine. Available only when nonessential data was exported. Clipping polygons\n * are not usually rendered at runtime. */\n _this.color = new Color(0.2275, 0.2275, 0.8078, 1); // ce3a3aff\n return _this;\n }\n ClippingAttachment.prototype.copy = function () {\n var copy = new ClippingAttachment(this.name);\n this.copyTo(copy);\n copy.endSlot = this.endSlot;\n copy.color.setFromColor(this.color);\n return copy;\n };\n return ClippingAttachment;\n}(VertexAttachment));\nexport { ClippingAttachment };\n//# sourceMappingURL=ClippingAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Texture = /** @class */ (function () {\n function Texture(image) {\n this._image = image;\n }\n Texture.prototype.getImage = function () {\n return this._image;\n };\n return Texture;\n}());\nexport { Texture };\nexport var TextureFilter;\n(function (TextureFilter) {\n TextureFilter[TextureFilter[\"Nearest\"] = 9728] = \"Nearest\";\n TextureFilter[TextureFilter[\"Linear\"] = 9729] = \"Linear\";\n TextureFilter[TextureFilter[\"MipMap\"] = 9987] = \"MipMap\";\n TextureFilter[TextureFilter[\"MipMapNearestNearest\"] = 9984] = \"MipMapNearestNearest\";\n TextureFilter[TextureFilter[\"MipMapLinearNearest\"] = 9985] = \"MipMapLinearNearest\";\n TextureFilter[TextureFilter[\"MipMapNearestLinear\"] = 9986] = \"MipMapNearestLinear\";\n TextureFilter[TextureFilter[\"MipMapLinearLinear\"] = 9987] = \"MipMapLinearLinear\"; // WebGLRenderingContext.LINEAR_MIPMAP_LINEAR\n})(TextureFilter || (TextureFilter = {}));\nexport var TextureWrap;\n(function (TextureWrap) {\n TextureWrap[TextureWrap[\"MirroredRepeat\"] = 33648] = \"MirroredRepeat\";\n TextureWrap[TextureWrap[\"ClampToEdge\"] = 33071] = \"ClampToEdge\";\n TextureWrap[TextureWrap[\"Repeat\"] = 10497] = \"Repeat\"; // WebGLRenderingContext.REPEAT\n})(TextureWrap || (TextureWrap = {}));\nvar TextureRegion = /** @class */ (function () {\n function TextureRegion() {\n this.u = 0;\n this.v = 0;\n this.u2 = 0;\n this.v2 = 0;\n this.width = 0;\n this.height = 0;\n this.degrees = 0;\n this.offsetX = 0;\n this.offsetY = 0;\n this.originalWidth = 0;\n this.originalHeight = 0;\n }\n return TextureRegion;\n}());\nexport { TextureRegion };\nvar FakeTexture = /** @class */ (function (_super) {\n __extends(FakeTexture, _super);\n function FakeTexture() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FakeTexture.prototype.setFilters = function (minFilter, magFilter) { };\n FakeTexture.prototype.setWraps = function (uWrap, vWrap) { };\n FakeTexture.prototype.dispose = function () { };\n return FakeTexture;\n}(Texture));\nexport { FakeTexture };\n//# sourceMappingURL=Texture.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { TextureFilter, TextureWrap, TextureRegion } from \"./Texture\";\nimport { Utils } from \"./Utils\";\nvar TextureAtlas = /** @class */ (function () {\n function TextureAtlas(atlasText) {\n this.pages = new Array();\n this.regions = new Array();\n var reader = new TextureAtlasReader(atlasText);\n var entry = new Array(4);\n var page = null;\n var region = null;\n var pageFields = {};\n pageFields[\"size\"] = function () {\n page.width = parseInt(entry[1]);\n page.height = parseInt(entry[2]);\n };\n pageFields[\"format\"] = function () {\n // page.format = Format[tuple[0]]; we don't need format in WebGL\n };\n pageFields[\"filter\"] = function () {\n page.minFilter = Utils.enumValue(TextureFilter, entry[1]);\n page.magFilter = Utils.enumValue(TextureFilter, entry[2]);\n };\n pageFields[\"repeat\"] = function () {\n if (entry[1].indexOf('x') != -1)\n page.uWrap = TextureWrap.Repeat;\n if (entry[1].indexOf('y') != -1)\n page.vWrap = TextureWrap.Repeat;\n };\n pageFields[\"pma\"] = function () {\n page.pma = entry[1] == \"true\";\n };\n var regionFields = {};\n regionFields[\"xy\"] = function () {\n region.x = parseInt(entry[1]);\n region.y = parseInt(entry[2]);\n };\n regionFields[\"size\"] = function () {\n region.width = parseInt(entry[1]);\n region.height = parseInt(entry[2]);\n };\n regionFields[\"bounds\"] = function () {\n region.x = parseInt(entry[1]);\n region.y = parseInt(entry[2]);\n region.width = parseInt(entry[3]);\n region.height = parseInt(entry[4]);\n };\n regionFields[\"offset\"] = function () {\n region.offsetX = parseInt(entry[1]);\n region.offsetY = parseInt(entry[2]);\n };\n regionFields[\"orig\"] = function () {\n region.originalWidth = parseInt(entry[1]);\n region.originalHeight = parseInt(entry[2]);\n };\n regionFields[\"offsets\"] = function () {\n region.offsetX = parseInt(entry[1]);\n region.offsetY = parseInt(entry[2]);\n region.originalWidth = parseInt(entry[3]);\n region.originalHeight = parseInt(entry[4]);\n };\n regionFields[\"rotate\"] = function () {\n var value = entry[1];\n if (value == \"true\")\n region.degrees = 90;\n else if (value != \"false\")\n region.degrees = parseInt(value);\n };\n regionFields[\"index\"] = function () {\n region.index = parseInt(entry[1]);\n };\n var line = reader.readLine();\n // Ignore empty lines before first entry.\n while (line && line.trim().length == 0)\n line = reader.readLine();\n // Header entries.\n while (true) {\n if (!line || line.trim().length == 0)\n break;\n if (reader.readEntry(entry, line) == 0)\n break; // Silently ignore all header fields.\n line = reader.readLine();\n }\n // Page and region entries.\n var names = null;\n var values = null;\n while (true) {\n if (line === null)\n break;\n if (line.trim().length == 0) {\n page = null;\n line = reader.readLine();\n }\n else if (!page) {\n page = new TextureAtlasPage();\n page.name = line.trim();\n while (true) {\n if (reader.readEntry(entry, line = reader.readLine()) == 0)\n break;\n var field = pageFields[entry[0]];\n if (field)\n field();\n }\n this.pages.push(page);\n }\n else {\n region = new TextureAtlasRegion();\n region.page = page;\n region.name = line;\n while (true) {\n var count = reader.readEntry(entry, line = reader.readLine());\n if (count == 0)\n break;\n var field = regionFields[entry[0]];\n if (field)\n field();\n else {\n if (!names) {\n names = [];\n values = [];\n }\n names.push(entry[0]);\n var entryValues = [];\n for (var i = 0; i < count; i++)\n entryValues.push(parseInt(entry[i + 1]));\n values.push(entryValues);\n }\n }\n if (region.originalWidth == 0 && region.originalHeight == 0) {\n region.originalWidth = region.width;\n region.originalHeight = region.height;\n }\n if (names && names.length > 0) {\n region.names = names;\n region.values = values;\n names = null;\n values = null;\n }\n region.u = region.x / page.width;\n region.v = region.y / page.height;\n if (region.degrees == 90) {\n region.u2 = (region.x + region.height) / page.width;\n region.v2 = (region.y + region.width) / page.height;\n }\n else {\n region.u2 = (region.x + region.width) / page.width;\n region.v2 = (region.y + region.height) / page.height;\n }\n this.regions.push(region);\n }\n }\n }\n TextureAtlas.prototype.findRegion = function (name) {\n for (var 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 TextureAtlas.prototype.setTextures = function (assetManager, pathPrefix) {\n if (pathPrefix === void 0) { pathPrefix = \"\"; }\n for (var _i = 0, _a = this.pages; _i < _a.length; _i++) {\n var page = _a[_i];\n page.setTexture(assetManager.get(pathPrefix + page.name));\n }\n };\n TextureAtlas.prototype.dispose = function () {\n for (var i = 0; i < this.pages.length; i++) {\n this.pages[i].texture.dispose();\n }\n };\n return TextureAtlas;\n}());\nexport { TextureAtlas };\nvar TextureAtlasReader = /** @class */ (function () {\n function TextureAtlasReader(text) {\n this.index = 0;\n this.lines = text.split(/\\r\\n|\\r|\\n/);\n }\n TextureAtlasReader.prototype.readLine = function () {\n if (this.index >= this.lines.length)\n return null;\n return this.lines[this.index++];\n };\n TextureAtlasReader.prototype.readEntry = function (entry, line) {\n if (!line)\n return 0;\n line = line.trim();\n if (line.length == 0)\n return 0;\n var colon = line.indexOf(':');\n if (colon == -1)\n return 0;\n entry[0] = line.substr(0, colon).trim();\n for (var i = 1, lastMatch = colon + 1;; i++) {\n var comma = line.indexOf(',', lastMatch);\n if (comma == -1) {\n entry[i] = line.substr(lastMatch).trim();\n return i;\n }\n entry[i] = line.substr(lastMatch, comma - lastMatch).trim();\n lastMatch = comma + 1;\n if (i == 4)\n return 4;\n }\n };\n return TextureAtlasReader;\n}());\nvar TextureAtlasPage = /** @class */ (function () {\n function TextureAtlasPage() {\n this.minFilter = TextureFilter.Nearest;\n this.magFilter = TextureFilter.Nearest;\n this.uWrap = TextureWrap.ClampToEdge;\n this.vWrap = TextureWrap.ClampToEdge;\n }\n TextureAtlasPage.prototype.setTexture = function (texture) {\n this.texture = texture;\n texture.setFilters(this.minFilter, this.magFilter);\n texture.setWraps(this.uWrap, this.vWrap);\n };\n return TextureAtlasPage;\n}());\nexport { TextureAtlasPage };\nvar TextureAtlasRegion = /** @class */ (function (_super) {\n __extends(TextureAtlasRegion, _super);\n function TextureAtlasRegion() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return TextureAtlasRegion;\n}(TextureRegion));\nexport { TextureAtlasRegion };\n//# sourceMappingURL=TextureAtlas.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { TextureAtlasRegion } from \"../TextureAtlas\";\nimport { Color, Utils } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\n/** An attachment that displays a textured mesh. A mesh has hull vertices and internal vertices within the hull. Holes are not\n * supported. Each vertex has UVs (texture coordinates) and triangles are used to map an image on to the mesh.\n *\n * See [Mesh attachments](http://esotericsoftware.com/spine-meshes) in the Spine User Guide. */\nvar MeshAttachment = /** @class */ (function (_super) {\n __extends(MeshAttachment, _super);\n function MeshAttachment(name) {\n var _this = _super.call(this, name) || this;\n /** The color to tint the mesh. */\n _this.color = new Color(1, 1, 1, 1);\n _this.tempColor = new Color(0, 0, 0, 0);\n return _this;\n }\n /** Calculates {@link #uvs} using {@link #regionUVs} and the {@link #region}. Must be called after changing the region UVs or\n * region. */\n MeshAttachment.prototype.updateUVs = function () {\n var regionUVs = this.regionUVs;\n if (!this.uvs || this.uvs.length != regionUVs.length)\n this.uvs = Utils.newFloatArray(regionUVs.length);\n var uvs = this.uvs;\n var n = this.uvs.length;\n var u = this.region.u, v = this.region.v, width = 0, height = 0;\n if (this.region instanceof TextureAtlasRegion) {\n var region = this.region, image = region.page.texture.getImage();\n var textureWidth = image.width, textureHeight = image.height;\n switch (region.degrees) {\n case 90:\n u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;\n v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;\n width = region.originalHeight / textureWidth;\n height = region.originalWidth / textureHeight;\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + regionUVs[i + 1] * width;\n uvs[i + 1] = v + (1 - regionUVs[i]) * height;\n }\n return;\n case 180:\n u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;\n v -= region.offsetY / textureHeight;\n width = region.originalWidth / textureWidth;\n height = region.originalHeight / textureHeight;\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + (1 - regionUVs[i]) * width;\n uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;\n }\n return;\n case 270:\n u -= region.offsetY / textureWidth;\n v -= region.offsetX / textureHeight;\n width = region.originalHeight / textureWidth;\n height = region.originalWidth / textureHeight;\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + (1 - regionUVs[i + 1]) * width;\n uvs[i + 1] = v + regionUVs[i] * height;\n }\n return;\n }\n u -= region.offsetX / textureWidth;\n v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;\n width = region.originalWidth / textureWidth;\n height = region.originalHeight / textureHeight;\n }\n else if (!this.region) {\n u = v = 0;\n width = height = 1;\n }\n else {\n width = this.region.u2 - u;\n height = this.region.v2 - v;\n }\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + regionUVs[i] * width;\n uvs[i + 1] = v + regionUVs[i + 1] * height;\n }\n };\n /** The parent mesh if this is a linked mesh, else null. A linked mesh shares the {@link #bones}, {@link #vertices},\n * {@link #regionUVs}, {@link #triangles}, {@link #hullLength}, {@link #edges}, {@link #width}, and {@link #height} with the\n * parent mesh, but may have a different {@link #name} or {@link #path} (and therefore a different texture). */\n MeshAttachment.prototype.getParentMesh = function () {\n return this.parentMesh;\n };\n /** @param parentMesh May be null. */\n MeshAttachment.prototype.setParentMesh = function (parentMesh) {\n this.parentMesh = parentMesh;\n if (parentMesh) {\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 MeshAttachment.prototype.copy = function () {\n if (this.parentMesh)\n return this.newLinkedMesh();\n var copy = new MeshAttachment(this.name);\n copy.region = this.region;\n copy.path = this.path;\n copy.color.setFromColor(this.color);\n this.copyTo(copy);\n copy.regionUVs = new Array(this.regionUVs.length);\n Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length);\n copy.uvs = new Array(this.uvs.length);\n Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length);\n copy.triangles = new Array(this.triangles.length);\n Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length);\n copy.hullLength = this.hullLength;\n // Nonessential.\n if (this.edges) {\n copy.edges = new Array(this.edges.length);\n Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length);\n }\n copy.width = this.width;\n copy.height = this.height;\n return copy;\n };\n /** Returns a new mesh with the {@link #parentMesh} set to this mesh's parent mesh, if any, else to this mesh. **/\n MeshAttachment.prototype.newLinkedMesh = function () {\n var copy = new MeshAttachment(this.name);\n copy.region = this.region;\n copy.path = this.path;\n copy.color.setFromColor(this.color);\n copy.deformAttachment = this.deformAttachment;\n copy.setParentMesh(this.parentMesh ? this.parentMesh : this);\n copy.updateUVs();\n return copy;\n };\n return MeshAttachment;\n}(VertexAttachment));\nexport { MeshAttachment };\n//# sourceMappingURL=MeshAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color, Utils } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\n/** An attachment whose vertices make up a composite Bezier curve.\n *\n * See {@link PathConstraint} and [Paths](http://esotericsoftware.com/spine-paths) in the Spine User Guide. */\nvar PathAttachment = /** @class */ (function (_super) {\n __extends(PathAttachment, _super);\n function PathAttachment(name) {\n var _this = _super.call(this, name) || this;\n /** If true, the start and end knots are connected. */\n _this.closed = false;\n /** If true, additional calculations are performed to make calculating positions along the path more accurate. If false, fewer\n * calculations are performed but calculating positions along the path is less accurate. */\n _this.constantSpeed = false;\n /** The color of the path as it was in Spine. Available only when nonessential data was exported. Paths are not usually\n * rendered at runtime. */\n _this.color = new Color(1, 1, 1, 1);\n return _this;\n }\n PathAttachment.prototype.copy = function () {\n var copy = new PathAttachment(this.name);\n this.copyTo(copy);\n copy.lengths = new Array(this.lengths.length);\n Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length);\n copy.closed = closed;\n copy.constantSpeed = this.constantSpeed;\n copy.color.setFromColor(this.color);\n return copy;\n };\n return PathAttachment;\n}(VertexAttachment));\nexport { PathAttachment };\n//# sourceMappingURL=PathAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color, MathUtils } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\n/** An attachment which is a single point and a rotation. This can be used to spawn projectiles, particles, etc. A bone can be\n * used in similar ways, but a PointAttachment is slightly less expensive to compute and can be hidden, shown, and placed in a\n * skin.\n *\n * See [Point Attachments](http://esotericsoftware.com/spine-point-attachments) in the Spine User Guide. */\nvar PointAttachment = /** @class */ (function (_super) {\n __extends(PointAttachment, _super);\n function PointAttachment(name) {\n var _this = _super.call(this, name) || this;\n /** The color of the point attachment as it was in Spine. Available only when nonessential data was exported. Point attachments\n * are not usually rendered at runtime. */\n _this.color = new Color(0.38, 0.94, 0, 1);\n return _this;\n }\n PointAttachment.prototype.computeWorldPosition = function (bone, point) {\n point.x = this.x * bone.a + this.y * bone.b + bone.worldX;\n point.y = this.x * bone.c + this.y * bone.d + bone.worldY;\n return point;\n };\n PointAttachment.prototype.computeWorldRotation = function (bone) {\n var cos = MathUtils.cosDeg(this.rotation), sin = MathUtils.sinDeg(this.rotation);\n var x = cos * bone.a + sin * bone.b;\n var y = cos * bone.c + sin * bone.d;\n return Math.atan2(y, x) * MathUtils.radDeg;\n };\n PointAttachment.prototype.copy = function () {\n var copy = new PointAttachment(this.name);\n copy.x = this.x;\n copy.y = this.y;\n copy.rotation = this.rotation;\n copy.color.setFromColor(this.color);\n return copy;\n };\n return PointAttachment;\n}(VertexAttachment));\nexport { PointAttachment };\n//# sourceMappingURL=PointAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color, Utils } from \"../Utils\";\nimport { Attachment } from \"./Attachment\";\n/** An attachment that displays a textured quadrilateral.\n *\n * See [Region attachments](http://esotericsoftware.com/spine-regions) in the Spine User Guide. */\nvar RegionAttachment = /** @class */ (function (_super) {\n __extends(RegionAttachment, _super);\n function RegionAttachment(name) {\n var _this = _super.call(this, name) || this;\n /** The local x translation. */\n _this.x = 0;\n /** The local y translation. */\n _this.y = 0;\n /** The local scaleX. */\n _this.scaleX = 1;\n /** The local scaleY. */\n _this.scaleY = 1;\n /** The local rotation. */\n _this.rotation = 0;\n /** The width of the region attachment in Spine. */\n _this.width = 0;\n /** The height of the region attachment in Spine. */\n _this.height = 0;\n /** The color to tint the region attachment. */\n _this.color = new Color(1, 1, 1, 1);\n /** For each of the 4 vertices, a pair of x,y values that is the local position of the vertex.\n *\n * See {@link #updateOffset()}. */\n _this.offset = Utils.newFloatArray(8);\n _this.uvs = Utils.newFloatArray(8);\n _this.tempColor = new Color(1, 1, 1, 1);\n return _this;\n }\n /** Calculates the {@link #offset} using the region settings. Must be called after changing region settings. */\n RegionAttachment.prototype.updateOffset = function () {\n var region = this.region;\n var regionScaleX = this.width / this.region.originalWidth * this.scaleX;\n var regionScaleY = this.height / this.region.originalHeight * this.scaleY;\n var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX;\n var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY;\n var localX2 = localX + this.region.width * regionScaleX;\n var localY2 = localY + this.region.height * regionScaleY;\n var radians = this.rotation * Math.PI / 180;\n var cos = Math.cos(radians);\n var sin = Math.sin(radians);\n var x = this.x, y = this.y;\n var localXCos = localX * cos + x;\n var localXSin = localX * sin;\n var localYCos = localY * cos + y;\n var localYSin = localY * sin;\n var localX2Cos = localX2 * cos + x;\n var localX2Sin = localX2 * sin;\n var localY2Cos = localY2 * cos + y;\n var localY2Sin = localY2 * sin;\n var offset = this.offset;\n offset[0] = localXCos - localYSin;\n offset[1] = localYCos + localXSin;\n offset[2] = localXCos - localY2Sin;\n offset[3] = localY2Cos + localXSin;\n offset[4] = localX2Cos - localY2Sin;\n offset[5] = localY2Cos + localX2Sin;\n offset[6] = localX2Cos - localYSin;\n offset[7] = localYCos + localX2Sin;\n };\n RegionAttachment.prototype.setRegion = function (region) {\n this.region = region;\n var uvs = this.uvs;\n if (region.degrees == 90) {\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 }\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 /** Transforms the attachment's four vertices to world coordinates.\n *\n * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine\n * Runtimes Guide.\n * @param worldVertices The output world vertices. Must have a length >= `offset` + 8.\n * @param offset The `worldVertices` index to begin writing values.\n * @param stride The number of `worldVertices` entries between the value pairs written. */\n RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) {\n var vertexOffset = this.offset;\n var x = bone.worldX, y = bone.worldY;\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n var offsetX = 0, offsetY = 0;\n offsetX = vertexOffset[0];\n offsetY = vertexOffset[1];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // br\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n offsetX = vertexOffset[2];\n offsetY = vertexOffset[3];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // bl\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n offsetX = vertexOffset[4];\n offsetY = vertexOffset[5];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // ul\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n offsetX = vertexOffset[6];\n offsetY = vertexOffset[7];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // ur\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n };\n RegionAttachment.prototype.copy = function () {\n var copy = new RegionAttachment(this.name);\n copy.region = this.region;\n copy.rendererObject = this.rendererObject;\n copy.path = this.path;\n copy.x = this.x;\n copy.y = this.y;\n copy.scaleX = this.scaleX;\n copy.scaleY = this.scaleY;\n copy.rotation = this.rotation;\n copy.width = this.width;\n copy.height = this.height;\n Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8);\n Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8);\n copy.color.setFromColor(this.color);\n return copy;\n };\n RegionAttachment.X1 = 0;\n RegionAttachment.Y1 = 1;\n RegionAttachment.C1R = 2;\n RegionAttachment.C1G = 3;\n RegionAttachment.C1B = 4;\n RegionAttachment.C1A = 5;\n RegionAttachment.U1 = 6;\n RegionAttachment.V1 = 7;\n RegionAttachment.X2 = 8;\n RegionAttachment.Y2 = 9;\n RegionAttachment.C2R = 10;\n RegionAttachment.C2G = 11;\n RegionAttachment.C2B = 12;\n RegionAttachment.C2A = 13;\n RegionAttachment.U2 = 14;\n RegionAttachment.V2 = 15;\n RegionAttachment.X3 = 16;\n RegionAttachment.Y3 = 17;\n RegionAttachment.C3R = 18;\n RegionAttachment.C3G = 19;\n RegionAttachment.C3B = 20;\n RegionAttachment.C3A = 21;\n RegionAttachment.U3 = 22;\n RegionAttachment.V3 = 23;\n RegionAttachment.X4 = 24;\n RegionAttachment.Y4 = 25;\n RegionAttachment.C4R = 26;\n RegionAttachment.C4G = 27;\n RegionAttachment.C4B = 28;\n RegionAttachment.C4A = 29;\n RegionAttachment.U4 = 30;\n RegionAttachment.V4 = 31;\n return RegionAttachment;\n}(Attachment));\nexport { RegionAttachment };\n//# sourceMappingURL=RegionAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { BoundingBoxAttachment } from \"./attachments/BoundingBoxAttachment\";\nimport { ClippingAttachment } from \"./attachments/ClippingAttachment\";\nimport { MeshAttachment } from \"./attachments/MeshAttachment\";\nimport { PathAttachment } from \"./attachments/PathAttachment\";\nimport { PointAttachment } from \"./attachments/PointAttachment\";\nimport { RegionAttachment } from \"./attachments/RegionAttachment\";\n/** An {@link AttachmentLoader} that configures attachments using texture regions from an {@link TextureAtlas}.\n *\n * See [Loading skeleton data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the\n * Spine Runtimes Guide. */\nvar AtlasAttachmentLoader = /** @class */ (function () {\n function AtlasAttachmentLoader(atlas) {\n this.atlas = atlas;\n }\n AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) {\n var region = this.atlas.findRegion(path);\n if (!region)\n throw new Error(\"Region not found in atlas: \" + path + \" (region attachment: \" + name + \")\");\n region.renderObject = region;\n var attachment = new RegionAttachment(name);\n attachment.setRegion(region);\n return attachment;\n };\n AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) {\n var region = this.atlas.findRegion(path);\n if (!region)\n throw new Error(\"Region not found in atlas: \" + path + \" (mesh attachment: \" + name + \")\");\n region.renderObject = region;\n var attachment = new MeshAttachment(name);\n attachment.region = region;\n return attachment;\n };\n AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) {\n return new BoundingBoxAttachment(name);\n };\n AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) {\n return new PathAttachment(name);\n };\n AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) {\n return new PointAttachment(name);\n };\n AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) {\n return new ClippingAttachment(name);\n };\n return AtlasAttachmentLoader;\n}());\nexport { AtlasAttachmentLoader };\n//# sourceMappingURL=AtlasAttachmentLoader.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Color } from \"./Utils\";\n/** Stores the setup pose for a {@link Bone}. */\nvar BoneData = /** @class */ (function () {\n function BoneData(index, name, parent) {\n /** The local x translation. */\n this.x = 0;\n /** The local y translation. */\n this.y = 0;\n /** The local rotation. */\n this.rotation = 0;\n /** The local scaleX. */\n this.scaleX = 1;\n /** The local scaleY. */\n this.scaleY = 1;\n /** The local shearX. */\n this.shearX = 0;\n /** The local shearX. */\n this.shearY = 0;\n /** The transform mode for how parent world transforms affect this bone. */\n this.transformMode = TransformMode.Normal;\n /** When true, {@link Skeleton#updateWorldTransform()} only updates this bone if the {@link Skeleton#skin} contains this\n * bone.\n * @see Skin#bones */\n this.skinRequired = false;\n /** The color of the bone as it was in Spine. Available only when nonessential data was exported. Bones are not usually\n * rendered at runtime. */\n this.color = new Color();\n if (index < 0)\n throw new Error(\"index must be >= 0.\");\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.index = index;\n this.name = name;\n this.parent = parent;\n }\n return BoneData;\n}());\nexport { BoneData };\n/** Determines how a bone inherits world transforms from parent bones. */\nexport var TransformMode;\n(function (TransformMode) {\n TransformMode[TransformMode[\"Normal\"] = 0] = \"Normal\";\n TransformMode[TransformMode[\"OnlyTranslation\"] = 1] = \"OnlyTranslation\";\n TransformMode[TransformMode[\"NoRotationOrReflection\"] = 2] = \"NoRotationOrReflection\";\n TransformMode[TransformMode[\"NoScale\"] = 3] = \"NoScale\";\n TransformMode[TransformMode[\"NoScaleOrReflection\"] = 4] = \"NoScaleOrReflection\";\n})(TransformMode || (TransformMode = {}));\n//# sourceMappingURL=BoneData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { TransformMode } from \"./BoneData\";\nimport { MathUtils } from \"./Utils\";\n/** Stores a bone's current pose.\n *\n * A bone has a local transform which is used to compute its world transform. A bone also has an applied transform, which is a\n * local transform that can be applied to compute the world transform. The local transform and applied transform may differ if a\n * constraint or application code modifies the world transform after it was computed from the local transform. */\nvar Bone = /** @class */ (function () {\n /** @param parent May be null. */\n function Bone(data, skeleton, parent) {\n /** The immediate children of this bone. */\n this.children = new Array();\n /** The local x translation. */\n this.x = 0;\n /** The local y translation. */\n this.y = 0;\n /** The local rotation in degrees, counter clockwise. */\n this.rotation = 0;\n /** The local scaleX. */\n this.scaleX = 0;\n /** The local scaleY. */\n this.scaleY = 0;\n /** The local shearX. */\n this.shearX = 0;\n /** The local shearY. */\n this.shearY = 0;\n /** The applied local x translation. */\n this.ax = 0;\n /** The applied local y translation. */\n this.ay = 0;\n /** The applied local rotation in degrees, counter clockwise. */\n this.arotation = 0;\n /** The applied local scaleX. */\n this.ascaleX = 0;\n /** The applied local scaleY. */\n this.ascaleY = 0;\n /** The applied local shearX. */\n this.ashearX = 0;\n /** The applied local shearY. */\n this.ashearY = 0;\n /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */\n this.a = 0;\n /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */\n this.b = 0;\n /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */\n this.c = 0;\n /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */\n this.d = 0;\n /** The world X position. If changed, {@link #updateAppliedTransform()} should be called. */\n this.worldY = 0;\n /** The world Y position. If changed, {@link #updateAppliedTransform()} should be called. */\n this.worldX = 0;\n this.sorted = false;\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.skeleton = skeleton;\n this.parent = parent;\n this.setToSetupPose();\n }\n /** Returns false when the bone has not been computed because {@link BoneData#skinRequired} is true and the\n * {@link Skeleton#skin active skin} does not {@link Skin#bones contain} this bone. */\n Bone.prototype.isActive = function () {\n return this.active;\n };\n /** Computes the world transform using the parent bone and this bone's local applied transform. */\n Bone.prototype.update = function () {\n this.updateWorldTransformWith(this.ax, this.ay, this.arotation, this.ascaleX, this.ascaleY, this.ashearX, this.ashearY);\n };\n /** Computes the world transform using the parent bone and this bone's local transform.\n *\n * See {@link #updateWorldTransformWith()}. */\n Bone.prototype.updateWorldTransform = function () {\n this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY);\n };\n /** Computes the world transform using the parent bone and the specified local transform. The applied transform is set to the\n * specified local transform. Child bones are not updated.\n *\n * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine\n * Runtimes Guide. */\n Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) {\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 var parent = this.parent;\n if (!parent) { // Root bone.\n var skeleton = this.skeleton;\n var rotationY = rotation + 90 + shearY;\n var sx = skeleton.scaleX;\n var sy = skeleton.scaleY;\n this.a = MathUtils.cosDeg(rotation + shearX) * scaleX * sx;\n this.b = MathUtils.cosDeg(rotationY) * scaleY * sx;\n this.c = MathUtils.sinDeg(rotation + shearX) * scaleX * sy;\n this.d = MathUtils.sinDeg(rotationY) * scaleY * sy;\n this.worldX = x * sx + skeleton.x;\n this.worldY = y * sy + skeleton.y;\n return;\n }\n var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d;\n this.worldX = pa * x + pb * y + parent.worldX;\n this.worldY = pc * x + pd * y + parent.worldY;\n switch (this.data.transformMode) {\n case TransformMode.Normal: {\n var rotationY = rotation + 90 + shearY;\n var la = MathUtils.cosDeg(rotation + shearX) * scaleX;\n var lb = MathUtils.cosDeg(rotationY) * scaleY;\n var lc = MathUtils.sinDeg(rotation + shearX) * scaleX;\n var ld = MathUtils.sinDeg(rotationY) * scaleY;\n this.a = pa * la + pb * lc;\n this.b = pa * lb + pb * ld;\n this.c = pc * la + pd * lc;\n this.d = pc * lb + pd * ld;\n return;\n }\n case TransformMode.OnlyTranslation: {\n var rotationY = rotation + 90 + shearY;\n this.a = MathUtils.cosDeg(rotation + shearX) * scaleX;\n this.b = MathUtils.cosDeg(rotationY) * scaleY;\n this.c = MathUtils.sinDeg(rotation + shearX) * scaleX;\n this.d = MathUtils.sinDeg(rotationY) * scaleY;\n break;\n }\n case TransformMode.NoRotationOrReflection: {\n var s = pa * pa + pc * pc;\n var prx = 0;\n if (s > 0.0001) {\n s = Math.abs(pa * pd - pb * pc) / s;\n pa /= this.skeleton.scaleX;\n pc /= this.skeleton.scaleY;\n pb = pc * s;\n pd = pa * s;\n prx = Math.atan2(pc, pa) * MathUtils.radDeg;\n }\n else {\n pa = 0;\n pc = 0;\n prx = 90 - Math.atan2(pd, pb) * MathUtils.radDeg;\n }\n var rx = rotation + shearX - prx;\n var ry = rotation + shearY - prx + 90;\n var la = MathUtils.cosDeg(rx) * scaleX;\n var lb = MathUtils.cosDeg(ry) * scaleY;\n var lc = MathUtils.sinDeg(rx) * scaleX;\n var ld = MathUtils.sinDeg(ry) * scaleY;\n this.a = pa * la - pb * lc;\n this.b = pa * lb - pb * ld;\n this.c = pc * la + pd * lc;\n this.d = pc * lb + pd * ld;\n break;\n }\n case TransformMode.NoScale:\n case TransformMode.NoScaleOrReflection: {\n var cos = MathUtils.cosDeg(rotation);\n var sin = MathUtils.sinDeg(rotation);\n var za = (pa * cos + pb * sin) / this.skeleton.scaleX;\n var zc = (pc * cos + pd * sin) / this.skeleton.scaleY;\n var s = Math.sqrt(za * za + zc * zc);\n if (s > 0.00001)\n s = 1 / s;\n za *= s;\n zc *= s;\n s = Math.sqrt(za * za + zc * zc);\n if (this.data.transformMode == TransformMode.NoScale\n && (pa * pd - pb * pc < 0) != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0))\n s = -s;\n var r = Math.PI / 2 + Math.atan2(zc, za);\n var zb = Math.cos(r) * s;\n var zd = Math.sin(r) * s;\n var la = MathUtils.cosDeg(shearX) * scaleX;\n var lb = MathUtils.cosDeg(90 + shearY) * scaleY;\n var lc = MathUtils.sinDeg(shearX) * scaleX;\n var ld = MathUtils.sinDeg(90 + shearY) * scaleY;\n this.a = za * la + zb * lc;\n this.b = za * lb + zb * ld;\n this.c = zc * la + zd * lc;\n this.d = zc * lb + zd * ld;\n break;\n }\n }\n this.a *= this.skeleton.scaleX;\n this.b *= this.skeleton.scaleX;\n this.c *= this.skeleton.scaleY;\n this.d *= this.skeleton.scaleY;\n };\n /** Sets this bone's local transform to the setup pose. */\n Bone.prototype.setToSetupPose = function () {\n var 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 /** The world rotation for the X axis, calculated using {@link #a} and {@link #c}. */\n Bone.prototype.getWorldRotationX = function () {\n return Math.atan2(this.c, this.a) * MathUtils.radDeg;\n };\n /** The world rotation for the Y axis, calculated using {@link #b} and {@link #d}. */\n Bone.prototype.getWorldRotationY = function () {\n return Math.atan2(this.d, this.b) * MathUtils.radDeg;\n };\n /** The magnitude (always positive) of the world scale X, calculated using {@link #a} and {@link #c}. */\n Bone.prototype.getWorldScaleX = function () {\n return Math.sqrt(this.a * this.a + this.c * this.c);\n };\n /** The magnitude (always positive) of the world scale Y, calculated using {@link #b} and {@link #d}. */\n Bone.prototype.getWorldScaleY = function () {\n return Math.sqrt(this.b * this.b + this.d * this.d);\n };\n /** Computes the applied transform values from the world transform.\n *\n * If the world transform is modified (by a constraint, {@link #rotateWorld(float)}, etc) then this method should be called so\n * the applied transform matches the world transform. The applied transform may be needed by other code (eg to apply other\n * constraints).\n *\n * Some information is ambiguous in the world transform, such as -1,-1 scale versus 180 rotation. The applied transform after\n * calling this method is equivalent to the local transform used to compute the world transform, but may not be identical. */\n Bone.prototype.updateAppliedTransform = function () {\n var parent = this.parent;\n if (!parent) {\n this.ax = this.worldX;\n this.ay = this.worldY;\n this.arotation = Math.atan2(this.c, this.a) * MathUtils.radDeg;\n this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c);\n this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d);\n this.ashearX = 0;\n this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * MathUtils.radDeg;\n return;\n }\n var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d;\n var pid = 1 / (pa * pd - pb * pc);\n var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY;\n this.ax = (dx * pd * pid - dy * pb * pid);\n this.ay = (dy * pa * pid - dx * pc * pid);\n var ia = pid * pd;\n var id = pid * pa;\n var ib = pid * pb;\n var ic = pid * pc;\n var ra = ia * this.a - ib * this.c;\n var rb = ia * this.b - ib * this.d;\n var rc = id * this.c - ic * this.a;\n var rd = id * this.d - ic * this.b;\n this.ashearX = 0;\n this.ascaleX = Math.sqrt(ra * ra + rc * rc);\n if (this.ascaleX > 0.0001) {\n var 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 }\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 /** Transforms a point from world coordinates to the bone's local coordinates. */\n Bone.prototype.worldToLocal = function (world) {\n var invDet = 1 / (this.a * this.d - this.b * this.c);\n var x = world.x - this.worldX, y = world.y - this.worldY;\n world.x = x * this.d * invDet - y * this.b * invDet;\n world.y = y * this.a * invDet - x * this.c * invDet;\n return world;\n };\n /** Transforms a point from the bone's local coordinates to world coordinates. */\n Bone.prototype.localToWorld = function (local) {\n var x = local.x, y = local.y;\n local.x = x * this.a + y * this.b + this.worldX;\n local.y = x * this.c + y * this.d + this.worldY;\n return local;\n };\n /** Transforms a world rotation to a local rotation. */\n Bone.prototype.worldToLocalRotation = function (worldRotation) {\n var sin = MathUtils.sinDeg(worldRotation), cos = MathUtils.cosDeg(worldRotation);\n return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * MathUtils.radDeg + this.rotation - this.shearX;\n };\n /** Transforms a local rotation to a world rotation. */\n Bone.prototype.localToWorldRotation = function (localRotation) {\n localRotation -= this.rotation - this.shearX;\n var sin = MathUtils.sinDeg(localRotation), cos = MathUtils.cosDeg(localRotation);\n return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * MathUtils.radDeg;\n };\n /** Rotates the world transform the specified amount.\n *

        \n * After changes are made to the world transform, {@link #updateAppliedTransform()} should be called and {@link #update()} will\n * need to be called on any child bones, recursively. */\n Bone.prototype.rotateWorld = function (degrees) {\n var a = this.a, b = this.b, c = this.c, d = this.d;\n var cos = MathUtils.cosDeg(degrees), sin = MathUtils.sinDeg(degrees);\n this.a = cos * a - sin * c;\n this.b = cos * b - sin * d;\n this.c = sin * a + cos * c;\n this.d = sin * b + cos * d;\n };\n return Bone;\n}());\nexport { Bone };\n//# sourceMappingURL=Bone.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n/** The base class for all constraint datas. */\nvar ConstraintData = /** @class */ (function () {\n function ConstraintData(name, order, skinRequired) {\n this.name = name;\n this.order = order;\n this.skinRequired = skinRequired;\n }\n return ConstraintData;\n}());\nexport { ConstraintData };\n//# sourceMappingURL=ConstraintData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { TextureAtlas } from \"./TextureAtlas\";\nvar AssetManagerBase = /** @class */ (function () {\n function AssetManagerBase(textureLoader, pathPrefix, downloader) {\n if (pathPrefix === void 0) { pathPrefix = \"\"; }\n if (downloader === void 0) { downloader = null; }\n this.assets = {};\n this.errors = {};\n this.toLoad = 0;\n this.loaded = 0;\n this.textureLoader = textureLoader;\n this.pathPrefix = pathPrefix;\n this.downloader = downloader || new Downloader();\n }\n AssetManagerBase.prototype.start = function (path) {\n this.toLoad++;\n return this.pathPrefix + path;\n };\n AssetManagerBase.prototype.success = function (callback, path, asset) {\n this.toLoad--;\n this.loaded++;\n this.assets[path] = asset;\n if (callback)\n callback(path, asset);\n };\n AssetManagerBase.prototype.error = function (callback, path, message) {\n this.toLoad--;\n this.loaded++;\n this.errors[path] = message;\n if (callback)\n callback(path, message);\n };\n AssetManagerBase.prototype.setRawDataURI = function (path, data) {\n this.downloader.rawDataUris[this.pathPrefix + path] = data;\n };\n AssetManagerBase.prototype.loadBinary = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n this.downloader.downloadBinary(path, function (data) {\n _this.success(success, path, data);\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load binary \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManagerBase.prototype.loadText = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n this.downloader.downloadText(path, function (data) {\n _this.success(success, path, data);\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load text \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManagerBase.prototype.loadJson = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n this.downloader.downloadJson(path, function (data) {\n _this.success(success, path, data);\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load JSON \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManagerBase.prototype.loadTexture = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document);\n var isWebWorker = !isBrowser; // && typeof importScripts !== 'undefined';\n if (isWebWorker) {\n fetch(path, { mode: \"cors\" }).then(function (response) {\n if (response.ok)\n return response.blob();\n _this.error(error, path, \"Couldn't load image: \" + path);\n return null;\n }).then(function (blob) {\n return blob ? createImageBitmap(blob, { premultiplyAlpha: \"none\", colorSpaceConversion: \"none\" }) : null;\n }).then(function (bitmap) {\n if (bitmap)\n _this.success(success, path, _this.textureLoader(bitmap));\n });\n }\n else {\n var image_1 = new Image();\n image_1.crossOrigin = \"anonymous\";\n image_1.onload = function () {\n _this.success(success, path, _this.textureLoader(image_1));\n };\n image_1.onerror = function () {\n _this.error(error, path, \"Couldn't load image: \" + path);\n };\n if (this.downloader.rawDataUris[path])\n path = this.downloader.rawDataUris[path];\n image_1.src = path;\n }\n };\n AssetManagerBase.prototype.loadTextureAtlas = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n var index = path.lastIndexOf(\"/\");\n var parent = index >= 0 ? path.substring(0, index + 1) : \"\";\n path = this.start(path);\n this.downloader.downloadText(path, function (atlasText) {\n try {\n var atlas_1 = new TextureAtlas(atlasText);\n var toLoad_1 = atlas_1.pages.length, abort_1 = false;\n var _loop_1 = function (page) {\n _this.loadTexture(parent + page.name, function (imagePath, texture) {\n if (!abort_1) {\n page.setTexture(texture);\n if (--toLoad_1 == 0)\n _this.success(success, path, atlas_1);\n }\n }, function (imagePath, message) {\n if (!abort_1)\n _this.error(error, path, \"Couldn't load texture atlas \" + path + \" page image: \" + imagePath);\n abort_1 = true;\n });\n };\n for (var _i = 0, _a = atlas_1.pages; _i < _a.length; _i++) {\n var page = _a[_i];\n _loop_1(page);\n }\n }\n catch (e) {\n _this.error(error, path, \"Couldn't parse texture atlas \" + path + \": \" + e.message);\n }\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load texture atlas \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManagerBase.prototype.get = function (path) {\n return this.assets[this.pathPrefix + path];\n };\n AssetManagerBase.prototype.require = function (path) {\n path = this.pathPrefix + path;\n var asset = this.assets[path];\n if (asset)\n return asset;\n var error = this.errors[path];\n throw Error(\"Asset not found: \" + path + (error ? \"\\n\" + error : \"\"));\n };\n AssetManagerBase.prototype.remove = function (path) {\n path = this.pathPrefix + path;\n var asset = this.assets[path];\n if (asset.dispose)\n asset.dispose();\n delete this.assets[path];\n return asset;\n };\n AssetManagerBase.prototype.removeAll = function () {\n for (var key in this.assets) {\n var asset = this.assets[key];\n if (asset.dispose)\n asset.dispose();\n }\n this.assets = {};\n };\n AssetManagerBase.prototype.isLoadingComplete = function () {\n return this.toLoad == 0;\n };\n AssetManagerBase.prototype.getToLoad = function () {\n return this.toLoad;\n };\n AssetManagerBase.prototype.getLoaded = function () {\n return this.loaded;\n };\n AssetManagerBase.prototype.dispose = function () {\n this.removeAll();\n };\n AssetManagerBase.prototype.hasErrors = function () {\n return Object.keys(this.errors).length > 0;\n };\n AssetManagerBase.prototype.getErrors = function () {\n return this.errors;\n };\n return AssetManagerBase;\n}());\nexport { AssetManagerBase };\nvar Downloader = /** @class */ (function () {\n function Downloader() {\n this.callbacks = {};\n this.rawDataUris = {};\n }\n Downloader.prototype.downloadText = function (url, success, error) {\n var _this = this;\n if (this.rawDataUris[url])\n url = this.rawDataUris[url];\n if (this.start(url, success, error))\n return;\n var request = new XMLHttpRequest();\n request.overrideMimeType(\"text/html\");\n request.open(\"GET\", url, true);\n var done = function () {\n _this.finish(url, request.status, request.responseText);\n };\n request.onload = done;\n request.onerror = done;\n request.send();\n };\n Downloader.prototype.downloadJson = function (url, success, error) {\n this.downloadText(url, function (data) {\n success(JSON.parse(data));\n }, error);\n };\n Downloader.prototype.downloadBinary = function (url, success, error) {\n var _this = this;\n if (this.rawDataUris[url])\n url = this.rawDataUris[url];\n if (this.start(url, success, error))\n return;\n var request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = \"arraybuffer\";\n var onerror = function () {\n _this.finish(url, request.status, request.responseText);\n };\n request.onload = function () {\n if (request.status == 200)\n _this.finish(url, 200, new Uint8Array(request.response));\n else\n onerror();\n };\n request.onerror = onerror;\n request.send();\n };\n Downloader.prototype.start = function (url, success, error) {\n var callbacks = this.callbacks[url];\n try {\n if (callbacks)\n return true;\n this.callbacks[url] = callbacks = [];\n }\n finally {\n callbacks.push(success, error);\n }\n };\n Downloader.prototype.finish = function (url, status, data) {\n var callbacks = this.callbacks[url];\n delete this.callbacks[url];\n var args = status == 200 ? [data] : [status, data];\n for (var i = args.length - 1, n = callbacks.length; i < n; i += 2)\n callbacks[i].apply(null, args);\n };\n return Downloader;\n}());\nexport { Downloader };\n//# sourceMappingURL=AssetManagerBase.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n/** Stores the current pose values for an {@link Event}.\n *\n * See Timeline {@link Timeline#apply()},\n * AnimationStateListener {@link AnimationStateListener#event()}, and\n * [Events](http://esotericsoftware.com/spine-events) in the Spine User Guide. */\nvar Event = /** @class */ (function () {\n function Event(time, data) {\n if (!data)\n throw new Error(\"data cannot be null.\");\n this.time = time;\n this.data = data;\n }\n return Event;\n}());\nexport { Event };\n//# sourceMappingURL=Event.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n/** Stores the setup pose values for an {@link Event}.\n *\n * See [Events](http://esotericsoftware.com/spine-events) in the Spine User Guide. */\nvar EventData = /** @class */ (function () {\n function EventData(name) {\n this.name = name;\n }\n return EventData;\n}());\nexport { EventData };\n//# sourceMappingURL=EventData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { TransformMode } from \"./BoneData\";\nimport { MathUtils } from \"./Utils\";\n/** Stores the current pose for an IK constraint. An IK constraint adjusts the rotation of 1 or 2 constrained bones so the tip of\n * the last bone is as close to the target bone as possible.\n *\n * See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */\nvar IkConstraint = /** @class */ (function () {\n function IkConstraint(data, skeleton) {\n /** Controls the bend direction of the IK bones, either 1 or -1. */\n this.bendDirection = 0;\n /** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */\n this.compress = false;\n /** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained\n * and the parent bone has local nonuniform scale, stretch is not applied. */\n this.stretch = false;\n /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */\n this.mix = 1;\n /** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */\n this.softness = 0;\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.mix = data.mix;\n this.softness = data.softness;\n this.bendDirection = data.bendDirection;\n this.compress = data.compress;\n this.stretch = data.stretch;\n this.bones = new Array();\n for (var 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 IkConstraint.prototype.isActive = function () {\n return this.active;\n };\n IkConstraint.prototype.update = function () {\n if (this.mix == 0)\n return;\n var target = this.target;\n var bones = this.bones;\n switch (bones.length) {\n case 1:\n this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix);\n break;\n case 2:\n this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.data.uniform, this.softness, this.mix);\n break;\n }\n };\n /** Applies 1 bone IK. The target is specified in the world coordinate system. */\n IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) {\n var p = bone.parent;\n var pa = p.a, pb = p.b, pc = p.c, pd = p.d;\n var rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0;\n switch (bone.data.transformMode) {\n case TransformMode.OnlyTranslation:\n tx = targetX - bone.worldX;\n ty = targetY - bone.worldY;\n break;\n case TransformMode.NoRotationOrReflection:\n var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);\n var sa = pa / bone.skeleton.scaleX;\n var sc = pc / bone.skeleton.scaleY;\n pb = -sc * s * bone.skeleton.scaleX;\n pd = sa * s * bone.skeleton.scaleY;\n rotationIK += Math.atan2(sc, sa) * MathUtils.radDeg;\n // Fall through\n default:\n var x = targetX - p.worldX, y = targetY - p.worldY;\n var d = pa * pd - pb * pc;\n tx = (x * pd - y * pb) / d - bone.ax;\n ty = (y * pa - x * pc) / d - bone.ay;\n }\n rotationIK += Math.atan2(ty, tx) * MathUtils.radDeg;\n if (bone.ascaleX < 0)\n rotationIK += 180;\n if (rotationIK > 180)\n rotationIK -= 360;\n else if (rotationIK < -180)\n rotationIK += 360;\n var sx = bone.ascaleX, sy = bone.ascaleY;\n if (compress || stretch) {\n switch (bone.data.transformMode) {\n case TransformMode.NoScale:\n case TransformMode.NoScaleOrReflection:\n tx = targetX - bone.worldX;\n ty = targetY - bone.worldY;\n }\n var b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty);\n if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) {\n var s = (dd / b - 1) * alpha + 1;\n sx *= s;\n if (uniform)\n sy *= s;\n }\n }\n bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY);\n };\n /** Applies 2 bone IK. The target is specified in the world coordinate system.\n * @param child A direct descendant of the parent bone. */\n IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, uniform, softness, alpha) {\n var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, sx = psx, sy = psy, csx = child.ascaleX;\n var os1 = 0, os2 = 0, s2 = 0;\n if (psx < 0) {\n psx = -psx;\n os1 = 180;\n s2 = -1;\n }\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 }\n else\n os2 = 0;\n var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d;\n var u = Math.abs(psx - psy) <= 0.0001;\n if (!u || stretch) {\n cy = 0;\n cwx = a * cx + parent.worldX;\n cwy = c * cx + parent.worldY;\n }\n else {\n cy = child.ay;\n cwx = a * cx + b * cy + parent.worldX;\n cwy = c * cx + d * cy + parent.worldY;\n }\n var pp = parent.parent;\n a = pp.a;\n b = pp.b;\n c = pp.c;\n d = pp.d;\n var id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY;\n var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py;\n var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2;\n if (l1 < 0.0001) {\n this.apply1(parent, targetX, targetY, false, stretch, false, alpha);\n child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY);\n return;\n }\n x = targetX - pp.worldX;\n y = targetY - pp.worldY;\n var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py;\n var dd = tx * tx + ty * ty;\n if (softness != 0) {\n softness *= psx * (csx + 1) * 0.5;\n var td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness;\n if (sd > 0) {\n var p = Math.min(1, sd / (softness * 2)) - 1;\n p = (sd - softness * (1 - p * p)) / td;\n tx -= p * tx;\n ty -= p * ty;\n dd = tx * tx + ty * ty;\n }\n }\n outer: if (u) {\n l2 *= psx;\n var cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2);\n if (cos < -1) {\n cos = -1;\n a2 = Math.PI * bendDir;\n }\n else if (cos > 1) {\n cos = 1;\n a2 = 0;\n if (stretch) {\n a = (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1;\n sx *= a;\n if (uniform)\n sy *= a;\n }\n }\n else\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 }\n else {\n a = psx * l2;\n b = psy * l2;\n var aa = a * a, bb = b * b, ta = Math.atan2(ty, tx);\n c = bb * l1 * l1 + aa * dd - aa * bb;\n var c1 = -2 * bb * l1, c2 = bb - aa;\n d = c1 * c1 - 4 * c2 * c;\n if (d >= 0) {\n var q = Math.sqrt(d);\n if (c1 < 0)\n q = -q;\n q = -(c1 + q) * 0.5;\n var r0 = q / c2, r1 = c / q;\n var 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 var minAngle = MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;\n var 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) * 0.5) {\n a1 = ta - Math.atan2(minY * bendDir, minX);\n a2 = minAngle * bendDir;\n }\n else {\n a1 = ta - Math.atan2(maxY * bendDir, maxX);\n a2 = maxAngle * bendDir;\n }\n }\n var os = Math.atan2(cy, cx) * s2;\n var rotation = parent.arotation;\n a1 = (a1 - os) * MathUtils.radDeg + os1 - rotation;\n if (a1 > 180)\n a1 -= 360;\n else if (a1 < -180) //\n a1 += 360;\n parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, sy, 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) //\n a2 += 360;\n child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY);\n };\n return IkConstraint;\n}());\nexport { IkConstraint };\n//# sourceMappingURL=IkConstraint.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConstraintData } from \"./ConstraintData\";\n/** Stores the setup pose for an {@link IkConstraint}.\n *

        \n * See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */\nvar IkConstraintData = /** @class */ (function (_super) {\n __extends(IkConstraintData, _super);\n function IkConstraintData(name) {\n var _this = _super.call(this, name, 0, false) || this;\n /** The bones that are constrained by this IK constraint. */\n _this.bones = new Array();\n /** Controls the bend direction of the IK bones, either 1 or -1. */\n _this.bendDirection = 1;\n /** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */\n _this.compress = false;\n /** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained\n * and the parent bone has local nonuniform scale, stretch is not applied. */\n _this.stretch = false;\n /** When true, only a single bone is being constrained, and {@link #getCompress()} or {@link #getStretch()} is used, the bone\n * is scaled on both the X and Y axes. */\n _this.uniform = false;\n /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */\n _this.mix = 1;\n /** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */\n _this.softness = 0;\n return _this;\n }\n return IkConstraintData;\n}(ConstraintData));\nexport { IkConstraintData };\n//# sourceMappingURL=IkConstraintData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConstraintData } from \"./ConstraintData\";\n/** Stores the setup pose for a {@link PathConstraint}.\n *\n * See [path constraints](http://esotericsoftware.com/spine-path-constraints) in the Spine User Guide. */\nvar PathConstraintData = /** @class */ (function (_super) {\n __extends(PathConstraintData, _super);\n function PathConstraintData(name) {\n var _this = _super.call(this, name, 0, false) || this;\n /** The bones that will be modified by this path constraint. */\n _this.bones = new Array();\n _this.mixRotate = 0;\n _this.mixX = 0;\n _this.mixY = 0;\n return _this;\n }\n return PathConstraintData;\n}(ConstraintData));\nexport { PathConstraintData };\n/** Controls how the first bone is positioned along the path.\n *\n * See [position](http://esotericsoftware.com/spine-path-constraints#Position) in the Spine User Guide. */\nexport var PositionMode;\n(function (PositionMode) {\n PositionMode[PositionMode[\"Fixed\"] = 0] = \"Fixed\";\n PositionMode[PositionMode[\"Percent\"] = 1] = \"Percent\";\n})(PositionMode || (PositionMode = {}));\n/** Controls how bones after the first bone are positioned along the path.\n *\n * See [spacing](http://esotericsoftware.com/spine-path-constraints#Spacing) in the Spine User Guide. */\nexport var SpacingMode;\n(function (SpacingMode) {\n SpacingMode[SpacingMode[\"Length\"] = 0] = \"Length\";\n SpacingMode[SpacingMode[\"Fixed\"] = 1] = \"Fixed\";\n SpacingMode[SpacingMode[\"Percent\"] = 2] = \"Percent\";\n SpacingMode[SpacingMode[\"Proportional\"] = 3] = \"Proportional\";\n})(SpacingMode || (SpacingMode = {}));\n/** Controls how bones are rotated, translated, and scaled to match the path.\n *\n * See [rotate mix](http://esotericsoftware.com/spine-path-constraints#Rotate-mix) in the Spine User Guide. */\nexport var RotateMode;\n(function (RotateMode) {\n RotateMode[RotateMode[\"Tangent\"] = 0] = \"Tangent\";\n RotateMode[RotateMode[\"Chain\"] = 1] = \"Chain\";\n RotateMode[RotateMode[\"ChainScale\"] = 2] = \"ChainScale\";\n})(RotateMode || (RotateMode = {}));\n//# sourceMappingURL=PathConstraintData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { PathAttachment } from \"./attachments/PathAttachment\";\nimport { RotateMode, SpacingMode, PositionMode } from \"./PathConstraintData\";\nimport { Utils, MathUtils } from \"./Utils\";\n/** Stores the current pose for a path constraint. A path constraint adjusts the rotation, translation, and scale of the\n * constrained bones so they follow a {@link PathAttachment}.\n *\n * See [Path constraints](http://esotericsoftware.com/spine-path-constraints) in the Spine User Guide. */\nvar PathConstraint = /** @class */ (function () {\n function PathConstraint(data, skeleton) {\n /** The position along the path. */\n this.position = 0;\n /** The spacing between bones. */\n this.spacing = 0;\n this.mixRotate = 0;\n this.mixX = 0;\n this.mixY = 0;\n this.spaces = new Array();\n this.positions = new Array();\n this.world = new Array();\n this.curves = new Array();\n this.lengths = new Array();\n this.segments = new Array();\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.bones = new Array();\n for (var 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.mixRotate = data.mixRotate;\n this.mixX = data.mixX;\n this.mixY = data.mixY;\n }\n PathConstraint.prototype.isActive = function () {\n return this.active;\n };\n PathConstraint.prototype.update = function () {\n var attachment = this.target.getAttachment();\n if (!(attachment instanceof PathAttachment))\n return;\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY;\n if (mixRotate == 0 && mixX == 0 && mixY == 0)\n return;\n var data = this.data;\n var tangents = data.rotateMode == RotateMode.Tangent, scale = data.rotateMode == RotateMode.ChainScale;\n var bones = this.bones;\n var boneCount = bones.length, spacesCount = tangents ? boneCount : boneCount + 1;\n var spaces = Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = Utils.setArraySize(this.lengths, boneCount) : null;\n var spacing = this.spacing;\n switch (data.spacingMode) {\n case SpacingMode.Percent:\n if (scale) {\n for (var i = 0, n = spacesCount - 1; i < n; i++) {\n var bone = bones[i];\n var setupLength = bone.data.length;\n if (setupLength < PathConstraint.epsilon)\n lengths[i] = 0;\n else {\n var x = setupLength * bone.a, y = setupLength * bone.c;\n lengths[i] = Math.sqrt(x * x + y * y);\n }\n }\n }\n Utils.arrayFill(spaces, 1, spacesCount, spacing);\n break;\n case SpacingMode.Proportional:\n var sum = 0;\n for (var i = 0, n = spacesCount - 1; i < n;) {\n var bone = bones[i];\n var setupLength = bone.data.length;\n if (setupLength < PathConstraint.epsilon) {\n if (scale)\n lengths[i] = 0;\n spaces[++i] = spacing;\n }\n else {\n var x = setupLength * bone.a, y = setupLength * bone.c;\n var length_1 = Math.sqrt(x * x + y * y);\n if (scale)\n lengths[i] = length_1;\n spaces[++i] = length_1;\n sum += length_1;\n }\n }\n if (sum > 0) {\n sum = spacesCount / sum * spacing;\n for (var i = 1; i < spacesCount; i++)\n spaces[i] *= sum;\n }\n break;\n default:\n var lengthSpacing = data.spacingMode == SpacingMode.Length;\n for (var i = 0, n = spacesCount - 1; i < n;) {\n var bone = bones[i];\n var setupLength = bone.data.length;\n if (setupLength < PathConstraint.epsilon) {\n if (scale)\n lengths[i] = 0;\n spaces[++i] = spacing;\n }\n else {\n var x = setupLength * bone.a, y = setupLength * bone.c;\n var length_2 = Math.sqrt(x * x + y * y);\n if (scale)\n lengths[i] = length_2;\n spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_2 / setupLength;\n }\n }\n }\n var positions = this.computeWorldPositions(attachment, spacesCount, tangents);\n var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;\n var tip = false;\n if (offsetRotation == 0)\n tip = data.rotateMode == RotateMode.Chain;\n else {\n tip = false;\n var p = this.target.bone;\n offsetRotation *= p.a * p.d - p.b * p.c > 0 ? MathUtils.degRad : -MathUtils.degRad;\n }\n for (var i = 0, p = 3; i < boneCount; i++, p += 3) {\n var bone = bones[i];\n bone.worldX += (boneX - bone.worldX) * mixX;\n bone.worldY += (boneY - bone.worldY) * mixY;\n var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;\n if (scale) {\n var length_3 = lengths[i];\n if (length_3 != 0) {\n var s = (Math.sqrt(dx * dx + dy * dy) / length_3 - 1) * mixRotate + 1;\n bone.a *= s;\n bone.c *= s;\n }\n }\n boneX = x;\n boneY = y;\n if (mixRotate > 0) {\n var a = bone.a, b = bone.b, c = bone.c, d = bone.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 var length_4 = bone.data.length;\n boneX += (length_4 * (cos * a - sin * c) - dx) * mixRotate;\n boneY += (length_4 * (sin * a + cos * c) - dy) * mixRotate;\n }\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 *= mixRotate;\n cos = Math.cos(r);\n sin = Math.sin(r);\n bone.a = cos * a - sin * c;\n bone.b = cos * b - sin * d;\n bone.c = sin * a + cos * c;\n bone.d = sin * b + cos * d;\n }\n bone.updateAppliedTransform();\n }\n };\n PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents) {\n var target = this.target;\n var position = this.position;\n var spaces = this.spaces, out = Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null;\n var closed = path.closed;\n var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE;\n if (!path.constantSpeed) {\n var lengths = path.lengths;\n curveCount -= closed ? 1 : 2;\n var pathLength_1 = lengths[curveCount];\n if (this.data.positionMode == PositionMode.Percent)\n position *= pathLength_1;\n var multiplier_1;\n switch (this.data.spacingMode) {\n case SpacingMode.Percent:\n multiplier_1 = pathLength_1;\n break;\n case SpacingMode.Proportional:\n multiplier_1 = pathLength_1 / spacesCount;\n break;\n default:\n multiplier_1 = 1;\n }\n world = Utils.setArraySize(this.world, 8);\n for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) {\n var space = spaces[i] * multiplier_1;\n position += space;\n var p = position;\n if (closed) {\n p %= pathLength_1;\n if (p < 0)\n p += pathLength_1;\n curve = 0;\n }\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 }\n else if (p > pathLength_1) {\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_1, world, 0, out, o);\n continue;\n }\n // Determine curve containing position.\n for (;; curve++) {\n var length_5 = lengths[curve];\n if (p > length_5)\n continue;\n if (curve == 0)\n p /= length_5;\n else {\n var prev = lengths[curve - 1];\n p = (p - prev) / (length_5 - 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 }\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, tangents || (i > 0 && space == 0));\n }\n return out;\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 }\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 // Curve lengths.\n var curves = Utils.setArraySize(this.curves, curveCount);\n var pathLength = 0;\n var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0;\n var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0;\n for (var 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 (this.data.positionMode == PositionMode.Percent)\n position *= pathLength;\n var multiplier;\n switch (this.data.spacingMode) {\n case SpacingMode.Percent:\n multiplier = pathLength;\n break;\n case SpacingMode.Proportional:\n multiplier = pathLength / spacesCount;\n break;\n default:\n multiplier = 1;\n }\n var segments = this.segments;\n var curveLength = 0;\n for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) {\n var space = spaces[i] * multiplier;\n position += space;\n var p = position;\n if (closed) {\n p %= pathLength;\n if (p < 0)\n p += pathLength;\n curve = 0;\n }\n else if (p < 0) {\n this.addBeforePosition(p, world, 0, out, o);\n continue;\n }\n else if (p > pathLength) {\n this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o);\n continue;\n }\n // Determine curve containing position.\n for (;; curve++) {\n var length_6 = curves[curve];\n if (p > length_6)\n continue;\n if (curve == 0)\n p /= length_6;\n else {\n var prev = curves[curve - 1];\n p = (p - prev) / (length_6 - prev);\n }\n break;\n }\n // Curve segment lengths.\n if (curve != prevCurve) {\n prevCurve = curve;\n var 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 // Weight by segment length.\n p *= curveLength;\n for (;; segment++) {\n var length_7 = segments[segment];\n if (p > length_7)\n continue;\n if (segment == 0)\n p /= length_7;\n else {\n var prev = segments[segment - 1];\n p = segment + (p - prev) / (length_7 - 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 PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) {\n var 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 PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) {\n var 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 PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) {\n if (p == 0 || isNaN(p)) {\n out[o] = x1;\n out[o + 1] = y1;\n out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1);\n return;\n }\n var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u;\n var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p;\n var 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) {\n if (p < 0.001)\n out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1);\n else\n out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt));\n }\n };\n PathConstraint.NONE = -1;\n PathConstraint.BEFORE = -2;\n PathConstraint.AFTER = -3;\n PathConstraint.epsilon = 0.00001;\n return PathConstraint;\n}());\nexport { PathConstraint };\n//# sourceMappingURL=PathConstraint.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { VertexAttachment } from \"./attachments/Attachment\";\nimport { Color } from \"./Utils\";\n/** Stores a slot's current pose. Slots organize attachments for {@link Skeleton#drawOrder} purposes and provide a place to store\n * state for an attachment. State cannot be stored in an attachment itself because attachments are stateless and may be shared\n * across multiple skeletons. */\nvar Slot = /** @class */ (function () {\n function Slot(data, bone) {\n /** Values to deform the slot's attachment. For an unweighted mesh, the entries are local positions for each vertex. For a\n * weighted mesh, the entries are an offset for each vertex which will be added to the mesh's local vertex positions.\n *\n * See {@link VertexAttachment#computeWorldVertices()} and {@link DeformTimeline}. */\n this.deform = new Array();\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!bone)\n 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 : new Color();\n this.setToSetupPose();\n }\n /** The skeleton this slot belongs to. */\n Slot.prototype.getSkeleton = function () {\n return this.bone.skeleton;\n };\n /** The current attachment for the slot, or null if the slot has no attachment. */\n Slot.prototype.getAttachment = function () {\n return this.attachment;\n };\n /** Sets the slot's attachment and, if the attachment changed, resets {@link #attachmentTime} and clears the {@link #deform}.\n * The deform is not cleared if the old attachment has the same {@link VertexAttachment#getDeformAttachment()} as the specified\n * attachment.\n * @param attachment May be null. */\n Slot.prototype.setAttachment = function (attachment) {\n if (this.attachment == attachment)\n return;\n if (!(attachment instanceof VertexAttachment) || !(this.attachment instanceof VertexAttachment)\n || attachment.deformAttachment != this.attachment.deformAttachment) {\n this.deform.length = 0;\n }\n this.attachment = attachment;\n this.attachmentTime = this.bone.skeleton.time;\n };\n Slot.prototype.setAttachmentTime = function (time) {\n this.attachmentTime = this.bone.skeleton.time - time;\n };\n /** The time that has elapsed since the last time the attachment was set or cleared. Relies on Skeleton\n * {@link Skeleton#time}. */\n Slot.prototype.getAttachmentTime = function () {\n return this.bone.skeleton.time - this.attachmentTime;\n };\n /** Sets this slot to the setup pose. */\n Slot.prototype.setToSetupPose = function () {\n this.color.setFromColor(this.data.color);\n if (this.darkColor)\n this.darkColor.setFromColor(this.data.darkColor);\n if (!this.data.attachmentName)\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 return Slot;\n}());\nexport { Slot };\n//# sourceMappingURL=Slot.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Vector2, MathUtils } from \"./Utils\";\n/** Stores the current pose for a transform constraint. A transform constraint adjusts the world transform of the constrained\n * bones to match that of the target bone.\n *\n * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */\nvar TransformConstraint = /** @class */ (function () {\n function TransformConstraint(data, skeleton) {\n this.mixRotate = 0;\n this.mixX = 0;\n this.mixY = 0;\n this.mixScaleX = 0;\n this.mixScaleY = 0;\n this.mixShearY = 0;\n this.temp = new Vector2();\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.mixRotate = data.mixRotate;\n this.mixX = data.mixX;\n this.mixY = data.mixY;\n this.mixScaleX = data.mixScaleX;\n this.mixScaleY = data.mixScaleY;\n this.mixShearY = data.mixShearY;\n this.bones = new Array();\n for (var 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 TransformConstraint.prototype.isActive = function () {\n return this.active;\n };\n TransformConstraint.prototype.update = function () {\n if (this.mixRotate == 0 && this.mixX == 0 && this.mixY == 0 && this.mixScaleX == 0 && this.mixScaleX == 0 && this.mixShearY == 0)\n return;\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 TransformConstraint.prototype.applyAbsoluteWorld = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var translate = mixX != 0 || mixY != 0;\n var target = this.target;\n var ta = target.a, tb = target.b, tc = target.c, td = target.d;\n var degRadReflect = ta * td - tb * tc > 0 ? MathUtils.degRad : -MathUtils.degRad;\n var offsetRotation = this.data.offsetRotation * degRadReflect;\n var offsetShearY = this.data.offsetShearY * degRadReflect;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (mixRotate != 0) {\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n var 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 *= mixRotate;\n var cos = Math.cos(r), sin = Math.sin(r);\n bone.a = cos * a - sin * c;\n bone.b = cos * b - sin * d;\n bone.c = sin * a + cos * c;\n bone.d = sin * b + cos * d;\n }\n if (translate) {\n var temp = this.temp;\n target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY));\n bone.worldX += (temp.x - bone.worldX) * mixX;\n bone.worldY += (temp.y - bone.worldY) * mixY;\n }\n if (mixScaleX != 0) {\n var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c);\n if (s != 0)\n s = (s + (Math.sqrt(ta * ta + tc * tc) - s + this.data.offsetScaleX) * mixScaleX) / s;\n bone.a *= s;\n bone.c *= s;\n }\n if (mixScaleY != 0) {\n var s = Math.sqrt(bone.b * bone.b + bone.d * bone.d);\n if (s != 0)\n s = (s + (Math.sqrt(tb * tb + td * td) - s + this.data.offsetScaleY) * mixScaleY) / s;\n bone.b *= s;\n bone.d *= s;\n }\n if (mixShearY > 0) {\n var b = bone.b, d = bone.d;\n var by = Math.atan2(d, b);\n var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.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) * mixShearY;\n var s = Math.sqrt(b * b + d * d);\n bone.b = Math.cos(r) * s;\n bone.d = Math.sin(r) * s;\n }\n bone.updateAppliedTransform();\n }\n };\n TransformConstraint.prototype.applyRelativeWorld = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var translate = mixX != 0 || mixY != 0;\n var target = this.target;\n var ta = target.a, tb = target.b, tc = target.c, td = target.d;\n var degRadReflect = ta * td - tb * tc > 0 ? MathUtils.degRad : -MathUtils.degRad;\n var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (mixRotate != 0) {\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n var r = Math.atan2(tc, ta) + offsetRotation;\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI) //\n r += MathUtils.PI2;\n r *= mixRotate;\n var cos = Math.cos(r), sin = Math.sin(r);\n bone.a = cos * a - sin * c;\n bone.b = cos * b - sin * d;\n bone.c = sin * a + cos * c;\n bone.d = sin * b + cos * d;\n }\n if (translate) {\n var temp = this.temp;\n target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY));\n bone.worldX += temp.x * mixX;\n bone.worldY += temp.y * mixY;\n }\n if (mixScaleX != 0) {\n var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * mixScaleX + 1;\n bone.a *= s;\n bone.c *= s;\n }\n if (mixScaleY != 0) {\n var s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * mixScaleY + 1;\n bone.b *= s;\n bone.d *= s;\n }\n if (mixShearY > 0) {\n var r = Math.atan2(td, tb) - Math.atan2(tc, ta);\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI) //\n r += MathUtils.PI2;\n var b = bone.b, d = bone.d;\n r = Math.atan2(d, b) + (r - MathUtils.PI / 2 + offsetShearY) * mixShearY;\n var s = Math.sqrt(b * b + d * d);\n bone.b = Math.cos(r) * s;\n bone.d = Math.sin(r) * s;\n }\n bone.updateAppliedTransform();\n }\n };\n TransformConstraint.prototype.applyAbsoluteLocal = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var target = this.target;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n var rotation = bone.arotation;\n if (mixRotate != 0) {\n var r = target.arotation - rotation + this.data.offsetRotation;\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n rotation += r * mixRotate;\n }\n var x = bone.ax, y = bone.ay;\n x += (target.ax - x + this.data.offsetX) * mixX;\n y += (target.ay - y + this.data.offsetY) * mixY;\n var scaleX = bone.ascaleX, scaleY = bone.ascaleY;\n if (mixScaleX != 0 && scaleX != 0)\n scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * mixScaleX) / scaleX;\n if (mixScaleY != 0 && scaleY != 0)\n scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * mixScaleY) / scaleY;\n var shearY = bone.ashearY;\n if (mixShearY != 0) {\n var r = target.ashearY - shearY + this.data.offsetShearY;\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n shearY += r * mixShearY;\n }\n bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY);\n }\n };\n TransformConstraint.prototype.applyRelativeLocal = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var target = this.target;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n var rotation = bone.arotation + (target.arotation + this.data.offsetRotation) * mixRotate;\n var x = bone.ax + (target.ax + this.data.offsetX) * mixX;\n var y = bone.ay + (target.ay + this.data.offsetY) * mixY;\n var scaleX = (bone.ascaleX * ((target.ascaleX - 1 + this.data.offsetScaleX) * mixScaleX) + 1);\n var scaleY = (bone.ascaleY * ((target.ascaleY - 1 + this.data.offsetScaleY) * mixScaleY) + 1);\n var shearY = bone.ashearY + (target.ashearY + this.data.offsetShearY) * mixShearY;\n bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY);\n }\n };\n return TransformConstraint;\n}());\nexport { TransformConstraint };\n//# sourceMappingURL=TransformConstraint.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { MeshAttachment } from \"./attachments/MeshAttachment\";\nimport { PathAttachment } from \"./attachments/PathAttachment\";\nimport { RegionAttachment } from \"./attachments/RegionAttachment\";\nimport { Bone } from \"./Bone\";\nimport { IkConstraint } from \"./IkConstraint\";\nimport { PathConstraint } from \"./PathConstraint\";\nimport { Slot } from \"./Slot\";\nimport { TransformConstraint } from \"./TransformConstraint\";\nimport { Color, Utils, MathUtils } from \"./Utils\";\n/** Stores the current pose for a skeleton.\n *\n * See [Instance objects](http://esotericsoftware.com/spine-runtime-architecture#Instance-objects) in the Spine Runtimes Guide. */\nvar Skeleton = /** @class */ (function () {\n function Skeleton(data) {\n /** The list of bones and constraints, sorted in the order they should be updated, as computed by {@link #updateCache()}. */\n this._updateCache = new Array();\n /** Returns the skeleton's time. This can be used for tracking, such as with Slot {@link Slot#attachmentTime}.\n *

        \n * See {@link #update()}. */\n this.time = 0;\n /** Scales the entire skeleton on the X axis. This affects all bones, even if the bone's transform mode disallows scale\n * inheritance. */\n this.scaleX = 1;\n /** Scales the entire skeleton on the Y axis. This affects all bones, even if the bone's transform mode disallows scale\n * inheritance. */\n this.scaleY = 1;\n /** Sets the skeleton X position, which is added to the root bone worldX position. */\n this.x = 0;\n /** Sets the skeleton Y position, which is added to the root bone worldY position. */\n this.y = 0;\n if (!data)\n throw new Error(\"data cannot be null.\");\n this.data = data;\n this.bones = new Array();\n for (var i = 0; i < data.bones.length; i++) {\n var boneData = data.bones[i];\n var bone = void 0;\n if (!boneData.parent)\n bone = new Bone(boneData, this, null);\n else {\n var parent_1 = this.bones[boneData.parent.index];\n bone = new Bone(boneData, this, parent_1);\n parent_1.children.push(bone);\n }\n this.bones.push(bone);\n }\n this.slots = new Array();\n this.drawOrder = new Array();\n for (var i = 0; i < data.slots.length; i++) {\n var slotData = data.slots[i];\n var bone = this.bones[slotData.boneData.index];\n var slot = new Slot(slotData, bone);\n this.slots.push(slot);\n this.drawOrder.push(slot);\n }\n this.ikConstraints = new Array();\n for (var i = 0; i < data.ikConstraints.length; i++) {\n var ikConstraintData = data.ikConstraints[i];\n this.ikConstraints.push(new IkConstraint(ikConstraintData, this));\n }\n this.transformConstraints = new Array();\n for (var i = 0; i < data.transformConstraints.length; i++) {\n var transformConstraintData = data.transformConstraints[i];\n this.transformConstraints.push(new TransformConstraint(transformConstraintData, this));\n }\n this.pathConstraints = new Array();\n for (var i = 0; i < data.pathConstraints.length; i++) {\n var pathConstraintData = data.pathConstraints[i];\n this.pathConstraints.push(new PathConstraint(pathConstraintData, this));\n }\n this.color = new Color(1, 1, 1, 1);\n this.updateCache();\n }\n /** Caches information about bones and constraints. Must be called if the {@link #getSkin()} is modified or if bones,\n * constraints, or weighted path attachments are added or removed. */\n Skeleton.prototype.updateCache = function () {\n var updateCache = this._updateCache;\n updateCache.length = 0;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n bone.sorted = bone.data.skinRequired;\n bone.active = !bone.sorted;\n }\n if (this.skin) {\n var skinBones = this.skin.bones;\n for (var i = 0, n = this.skin.bones.length; i < n; i++) {\n var bone = this.bones[skinBones[i].index];\n do {\n bone.sorted = false;\n bone.active = true;\n bone = bone.parent;\n } while (bone);\n }\n }\n // IK first, lowest hierarchy depth first.\n var ikConstraints = this.ikConstraints;\n var transformConstraints = this.transformConstraints;\n var pathConstraints = this.pathConstraints;\n var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length;\n var constraintCount = ikCount + transformCount + pathCount;\n outer: for (var i = 0; i < constraintCount; i++) {\n for (var ii = 0; ii < ikCount; ii++) {\n var constraint = ikConstraints[ii];\n if (constraint.data.order == i) {\n this.sortIkConstraint(constraint);\n continue outer;\n }\n }\n for (var ii = 0; ii < transformCount; ii++) {\n var constraint = transformConstraints[ii];\n if (constraint.data.order == i) {\n this.sortTransformConstraint(constraint);\n continue outer;\n }\n }\n for (var ii = 0; ii < pathCount; ii++) {\n var constraint = pathConstraints[ii];\n if (constraint.data.order == i) {\n this.sortPathConstraint(constraint);\n continue outer;\n }\n }\n }\n for (var i = 0, n = bones.length; i < n; i++)\n this.sortBone(bones[i]);\n };\n Skeleton.prototype.sortIkConstraint = function (constraint) {\n constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true)));\n if (!constraint.active)\n return;\n var target = constraint.target;\n this.sortBone(target);\n var constrained = constraint.bones;\n var parent = constrained[0];\n this.sortBone(parent);\n if (constrained.length == 1) {\n this._updateCache.push(constraint);\n this.sortReset(parent.children);\n }\n else {\n var child = constrained[constrained.length - 1];\n this.sortBone(child);\n this._updateCache.push(constraint);\n this.sortReset(parent.children);\n child.sorted = true;\n }\n };\n Skeleton.prototype.sortPathConstraint = function (constraint) {\n constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true)));\n if (!constraint.active)\n return;\n var slot = constraint.target;\n var slotIndex = slot.data.index;\n var slotBone = slot.bone;\n if (this.skin)\n this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone);\n if (this.data.defaultSkin && this.data.defaultSkin != this.skin)\n this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone);\n for (var i = 0, n = this.data.skins.length; i < n; i++)\n this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone);\n var attachment = slot.getAttachment();\n if (attachment instanceof PathAttachment)\n this.sortPathConstraintAttachmentWith(attachment, slotBone);\n var constrained = constraint.bones;\n var boneCount = constrained.length;\n for (var i = 0; i < boneCount; i++)\n this.sortBone(constrained[i]);\n this._updateCache.push(constraint);\n for (var i = 0; i < boneCount; i++)\n this.sortReset(constrained[i].children);\n for (var i = 0; i < boneCount; i++)\n constrained[i].sorted = true;\n };\n Skeleton.prototype.sortTransformConstraint = function (constraint) {\n constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true)));\n if (!constraint.active)\n return;\n this.sortBone(constraint.target);\n var constrained = constraint.bones;\n var boneCount = constrained.length;\n if (constraint.data.local) {\n for (var i = 0; i < boneCount; i++) {\n var child = constrained[i];\n this.sortBone(child.parent);\n this.sortBone(child);\n }\n }\n else {\n for (var i = 0; i < boneCount; i++) {\n this.sortBone(constrained[i]);\n }\n }\n this._updateCache.push(constraint);\n for (var i = 0; i < boneCount; i++)\n this.sortReset(constrained[i].children);\n for (var i = 0; i < boneCount; i++)\n constrained[i].sorted = true;\n };\n Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) {\n var attachments = skin.attachments[slotIndex];\n if (!attachments)\n return;\n for (var key in attachments) {\n this.sortPathConstraintAttachmentWith(attachments[key], slotBone);\n }\n };\n Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) {\n if (!(attachment instanceof PathAttachment))\n return;\n var pathBones = attachment.bones;\n if (!pathBones)\n this.sortBone(slotBone);\n else {\n var bones = this.bones;\n for (var i = 0, n = pathBones.length; i < n;) {\n var nn = pathBones[i++];\n nn += i;\n while (i < nn)\n this.sortBone(bones[pathBones[i++]]);\n }\n }\n };\n Skeleton.prototype.sortBone = function (bone) {\n if (bone.sorted)\n return;\n var parent = bone.parent;\n if (parent)\n this.sortBone(parent);\n bone.sorted = true;\n this._updateCache.push(bone);\n };\n Skeleton.prototype.sortReset = function (bones) {\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (!bone.active)\n continue;\n if (bone.sorted)\n this.sortReset(bone.children);\n bone.sorted = false;\n }\n };\n /** Updates the world transform for each bone and applies all constraints.\n *\n * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine\n * Runtimes Guide. */\n Skeleton.prototype.updateWorldTransform = function () {\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\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 }\n var updateCache = this._updateCache;\n for (var i = 0, n = updateCache.length; i < n; i++)\n updateCache[i].update();\n };\n Skeleton.prototype.updateWorldTransformWith = function (parent) {\n // Apply the parent bone transform to the root bone. The root bone always inherits scale, rotation and reflection.\n var rootBone = this.getRootBone();\n var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d;\n rootBone.worldX = pa * this.x + pb * this.y + parent.worldX;\n rootBone.worldY = pc * this.x + pd * this.y + parent.worldY;\n var rotationY = rootBone.rotation + 90 + rootBone.shearY;\n var la = MathUtils.cosDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX;\n var lb = MathUtils.cosDeg(rotationY) * rootBone.scaleY;\n var lc = MathUtils.sinDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX;\n var ld = MathUtils.sinDeg(rotationY) * rootBone.scaleY;\n rootBone.a = (pa * la + pb * lc) * this.scaleX;\n rootBone.b = (pa * lb + pb * ld) * this.scaleX;\n rootBone.c = (pc * la + pd * lc) * this.scaleY;\n rootBone.d = (pc * lb + pd * ld) * this.scaleY;\n // Update everything except root bone.\n var updateCache = this._updateCache;\n for (var i = 0, n = updateCache.length; i < n; i++) {\n var updatable = updateCache[i];\n if (updatable != rootBone)\n updatable.update();\n }\n };\n /** Sets the bones, constraints, and slots to their setup pose values. */\n Skeleton.prototype.setToSetupPose = function () {\n this.setBonesToSetupPose();\n this.setSlotsToSetupPose();\n };\n /** Sets the bones and constraints to their setup pose values. */\n Skeleton.prototype.setBonesToSetupPose = function () {\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++)\n bones[i].setToSetupPose();\n var ikConstraints = this.ikConstraints;\n for (var i = 0, n = ikConstraints.length; i < n; i++) {\n var constraint = ikConstraints[i];\n constraint.mix = constraint.data.mix;\n constraint.softness = constraint.data.softness;\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n }\n var transformConstraints = this.transformConstraints;\n for (var i = 0, n = transformConstraints.length; i < n; i++) {\n var constraint = transformConstraints[i];\n var data = constraint.data;\n constraint.mixRotate = data.mixRotate;\n constraint.mixX = data.mixX;\n constraint.mixY = data.mixY;\n constraint.mixScaleX = data.mixScaleX;\n constraint.mixScaleY = data.mixScaleY;\n constraint.mixShearY = data.mixShearY;\n }\n var pathConstraints = this.pathConstraints;\n for (var i = 0, n = pathConstraints.length; i < n; i++) {\n var constraint = pathConstraints[i];\n var data = constraint.data;\n constraint.position = data.position;\n constraint.spacing = data.spacing;\n constraint.mixRotate = data.mixRotate;\n constraint.mixX = data.mixX;\n constraint.mixY = data.mixY;\n }\n };\n /** Sets the slots and draw order to their setup pose values. */\n Skeleton.prototype.setSlotsToSetupPose = function () {\n var slots = this.slots;\n Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length);\n for (var i = 0, n = slots.length; i < n; i++)\n slots[i].setToSetupPose();\n };\n /** @returns May return null. */\n Skeleton.prototype.getRootBone = function () {\n if (this.bones.length == 0)\n return null;\n return this.bones[0];\n };\n /** @returns May be null. */\n Skeleton.prototype.findBone = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (bone.data.name == boneName)\n return bone;\n }\n return null;\n };\n /** @returns -1 if the bone was not found. */\n Skeleton.prototype.findBoneIndex = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++)\n if (bones[i].data.name == boneName)\n return i;\n return -1;\n };\n /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it\n * repeatedly.\n * @returns May be null. */\n Skeleton.prototype.findSlot = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.data.name == slotName)\n return slot;\n }\n return null;\n };\n /** @returns -1 if the bone was not found. */\n Skeleton.prototype.findSlotIndex = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n if (slots[i].data.name == slotName)\n return i;\n return -1;\n };\n /** Sets a skin by name.\n *\n * See {@link #setSkin()}. */\n Skeleton.prototype.setSkinByName = function (skinName) {\n var skin = this.data.findSkin(skinName);\n if (!skin)\n throw new Error(\"Skin not found: \" + skinName);\n this.setSkin(skin);\n };\n /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#defaultSkin default skin}. If the\n * skin is changed, {@link #updateCache()} is called.\n *\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 *\n * After changing the skin, the visible attachments can be reset to those attached in the setup pose by calling\n * {@link #setSlotsToSetupPose()}. Also, often {@link AnimationState#apply()} is called before the next time the\n * skeleton is rendered to allow any attachment keys in the current animation(s) to hide or show attachments from the new skin.\n * @param newSkin May be null. */\n Skeleton.prototype.setSkin = function (newSkin) {\n if (newSkin == this.skin)\n return;\n if (newSkin) {\n if (this.skin)\n newSkin.attachAll(this, this.skin);\n else {\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n var name_1 = slot.data.attachmentName;\n if (name_1) {\n var attachment = newSkin.getAttachment(i, name_1);\n if (attachment)\n slot.setAttachment(attachment);\n }\n }\n }\n }\n this.skin = newSkin;\n this.updateCache();\n };\n /** Finds an attachment by looking in the {@link #skin} and {@link SkeletonData#defaultSkin} using the slot name and attachment\n * name.\n *\n * See {@link #getAttachment()}.\n * @returns May be null. */\n Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) {\n return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName);\n };\n /** Finds an attachment by looking in the {@link #skin} and {@link SkeletonData#defaultSkin} using the slot index and\n * attachment name. First the skin is checked and if the attachment was not found, the default skin is checked.\n *\n * See [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide.\n * @returns May be null. */\n Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) {\n if (!attachmentName)\n throw new Error(\"attachmentName cannot be null.\");\n if (this.skin) {\n var attachment = this.skin.getAttachment(slotIndex, attachmentName);\n if (attachment)\n return attachment;\n }\n if (this.data.defaultSkin)\n return this.data.defaultSkin.getAttachment(slotIndex, attachmentName);\n return null;\n };\n /** A convenience method to set an attachment by finding the slot with {@link #findSlot()}, finding the attachment with\n * {@link #getAttachment()}, then setting the slot's {@link Slot#attachment}.\n * @param attachmentName May be null to clear the slot's attachment. */\n Skeleton.prototype.setAttachment = function (slotName, attachmentName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.data.name == slotName) {\n var attachment = null;\n if (attachmentName) {\n attachment = this.getAttachment(i, attachmentName);\n if (!attachment)\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 /** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method\n * than to call it repeatedly.\n * @return May be null. */\n Skeleton.prototype.findIkConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var ikConstraints = this.ikConstraints;\n for (var i = 0, n = ikConstraints.length; i < n; i++) {\n var ikConstraint = ikConstraints[i];\n if (ikConstraint.data.name == constraintName)\n return ikConstraint;\n }\n return null;\n };\n /** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of\n * this method than to call it repeatedly.\n * @return May be null. */\n Skeleton.prototype.findTransformConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var transformConstraints = this.transformConstraints;\n for (var i = 0, n = transformConstraints.length; i < n; i++) {\n var constraint = transformConstraints[i];\n if (constraint.data.name == constraintName)\n return constraint;\n }\n return null;\n };\n /** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method\n * than to call it repeatedly.\n * @return May be null. */\n Skeleton.prototype.findPathConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var pathConstraints = this.pathConstraints;\n for (var i = 0, n = pathConstraints.length; i < n; i++) {\n var constraint = pathConstraints[i];\n if (constraint.data.name == constraintName)\n return constraint;\n }\n return null;\n };\n /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose.\n * @param offset An output value, the distance from the skeleton origin to the bottom left corner of the AABB.\n * @param size An output value, the width and height of the AABB.\n * @param temp Working memory to temporarily store attachments' computed world vertices. */\n Skeleton.prototype.getBounds = function (offset, size, temp) {\n if (temp === void 0) { temp = new Array(2); }\n if (!offset)\n throw new Error(\"offset cannot be null.\");\n if (!size)\n throw new Error(\"size cannot be null.\");\n var drawOrder = this.drawOrder;\n var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;\n for (var i = 0, n = drawOrder.length; i < n; i++) {\n var slot = drawOrder[i];\n if (!slot.bone.active)\n continue;\n var verticesLength = 0;\n var vertices = null;\n var attachment = slot.getAttachment();\n if (attachment instanceof RegionAttachment) {\n verticesLength = 8;\n vertices = Utils.setArraySize(temp, verticesLength, 0);\n attachment.computeWorldVertices(slot.bone, vertices, 0, 2);\n }\n else if (attachment instanceof MeshAttachment) {\n var mesh = 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) {\n for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) {\n var 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 /** Increments the skeleton's {@link #time}. */\n Skeleton.prototype.update = function (delta) {\n this.time += delta;\n };\n return Skeleton;\n}());\nexport { Skeleton };\n//# sourceMappingURL=Skeleton.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n/** Stores the setup pose and all of the stateless data for a skeleton.\n *\n * See [Data objects](http://esotericsoftware.com/spine-runtime-architecture#Data-objects) in the Spine Runtimes\n * Guide. */\nvar SkeletonData = /** @class */ (function () {\n function SkeletonData() {\n /** The skeleton's bones, sorted parent first. The root bone is always the first bone. */\n this.bones = new Array(); // Ordered parents first.\n /** The skeleton's slots. */\n this.slots = new Array(); // Setup pose draw order.\n this.skins = new Array();\n /** The skeleton's events. */\n this.events = new Array();\n /** The skeleton's animations. */\n this.animations = new Array();\n /** The skeleton's IK constraints. */\n this.ikConstraints = new Array();\n /** The skeleton's transform constraints. */\n this.transformConstraints = new Array();\n /** The skeleton's path constraints. */\n this.pathConstraints = new Array();\n // Nonessential\n /** The dopesheet FPS in Spine. Available only when nonessential data was exported. */\n this.fps = 0;\n }\n /** Finds a bone by comparing each bone's name. It is more efficient to cache the results of this method than to call it\n * multiple times.\n * @returns May be null. */\n SkeletonData.prototype.findBone = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (bone.name == boneName)\n return bone;\n }\n return null;\n };\n SkeletonData.prototype.findBoneIndex = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++)\n if (bones[i].name == boneName)\n return i;\n return -1;\n };\n /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it\n * multiple times.\n * @returns May be null. */\n SkeletonData.prototype.findSlot = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.name == slotName)\n return slot;\n }\n return null;\n };\n SkeletonData.prototype.findSlotIndex = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n if (slots[i].name == slotName)\n return i;\n return -1;\n };\n /** Finds a skin by comparing each skin's name. It is more efficient to cache the results of this method than to call it\n * multiple times.\n * @returns May be null. */\n SkeletonData.prototype.findSkin = function (skinName) {\n if (!skinName)\n throw new Error(\"skinName cannot be null.\");\n var skins = this.skins;\n for (var i = 0, n = skins.length; i < n; i++) {\n var skin = skins[i];\n if (skin.name == skinName)\n return skin;\n }\n return null;\n };\n /** Finds an event by comparing each events's name. It is more efficient to cache the results of this method than to call it\n * multiple times.\n * @returns May be null. */\n SkeletonData.prototype.findEvent = function (eventDataName) {\n if (!eventDataName)\n throw new Error(\"eventDataName cannot be null.\");\n var events = this.events;\n for (var i = 0, n = events.length; i < n; i++) {\n var event_1 = events[i];\n if (event_1.name == eventDataName)\n return event_1;\n }\n return null;\n };\n /** Finds an animation by comparing each animation's name. It is more efficient to cache the results of this method than to\n * call it multiple times.\n * @returns May be null. */\n SkeletonData.prototype.findAnimation = function (animationName) {\n if (!animationName)\n throw new Error(\"animationName cannot be null.\");\n var animations = this.animations;\n for (var i = 0, n = animations.length; i < n; i++) {\n var animation = animations[i];\n if (animation.name == animationName)\n return animation;\n }\n return null;\n };\n /** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method\n * than to call it multiple times.\n * @return May be null. */\n SkeletonData.prototype.findIkConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var ikConstraints = this.ikConstraints;\n for (var i = 0, n = ikConstraints.length; i < n; i++) {\n var constraint = ikConstraints[i];\n if (constraint.name == constraintName)\n return constraint;\n }\n return null;\n };\n /** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of\n * this method than to call it multiple times.\n * @return May be null. */\n SkeletonData.prototype.findTransformConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var transformConstraints = this.transformConstraints;\n for (var i = 0, n = transformConstraints.length; i < n; i++) {\n var constraint = transformConstraints[i];\n if (constraint.name == constraintName)\n return constraint;\n }\n return null;\n };\n /** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method\n * than to call it multiple times.\n * @return May be null. */\n SkeletonData.prototype.findPathConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var pathConstraints = this.pathConstraints;\n for (var i = 0, n = pathConstraints.length; i < n; i++) {\n var constraint = pathConstraints[i];\n if (constraint.name == constraintName)\n return constraint;\n }\n return null;\n };\n return SkeletonData;\n}());\nexport { SkeletonData };\n//# sourceMappingURL=SkeletonData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { MeshAttachment } from \"./attachments/MeshAttachment\";\n/** Stores an entry in the skin consisting of the slot index, name, and attachment **/\nvar SkinEntry = /** @class */ (function () {\n function SkinEntry(slotIndex, name, attachment) {\n this.slotIndex = slotIndex;\n this.name = name;\n this.attachment = attachment;\n }\n return SkinEntry;\n}());\nexport { SkinEntry };\n/** Stores attachments by slot index and attachment name.\n *\n * See SkeletonData {@link SkeletonData#defaultSkin}, Skeleton {@link Skeleton#skin}, and\n * [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide. */\nvar Skin = /** @class */ (function () {\n function Skin(name) {\n this.attachments = new Array();\n this.bones = Array();\n this.constraints = new Array();\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.name = name;\n }\n /** Adds an attachment to the skin for the specified slot index and name. */\n Skin.prototype.setAttachment = function (slotIndex, name, attachment) {\n if (!attachment)\n throw new Error(\"attachment cannot be null.\");\n var attachments = this.attachments;\n if (slotIndex >= attachments.length)\n attachments.length = slotIndex + 1;\n if (!attachments[slotIndex])\n attachments[slotIndex] = {};\n attachments[slotIndex][name] = attachment;\n };\n /** Adds all attachments, bones, and constraints from the specified skin to this skin. */\n Skin.prototype.addSkin = function (skin) {\n for (var i = 0; i < skin.bones.length; i++) {\n var bone = skin.bones[i];\n var contained = false;\n for (var ii = 0; ii < this.bones.length; ii++) {\n if (this.bones[ii] == bone) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.bones.push(bone);\n }\n for (var i = 0; i < skin.constraints.length; i++) {\n var constraint = skin.constraints[i];\n var contained = false;\n for (var ii = 0; ii < this.constraints.length; ii++) {\n if (this.constraints[ii] == constraint) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.constraints.push(constraint);\n }\n var attachments = skin.getAttachments();\n for (var i = 0; i < attachments.length; i++) {\n var attachment = attachments[i];\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n };\n /** Adds all bones and constraints and copies of all attachments from the specified skin to this skin. Mesh attachments are not\n * copied, instead a new linked mesh is created. The attachment copies can be modified without affecting the originals. */\n Skin.prototype.copySkin = function (skin) {\n for (var i = 0; i < skin.bones.length; i++) {\n var bone = skin.bones[i];\n var contained = false;\n for (var ii = 0; ii < this.bones.length; ii++) {\n if (this.bones[ii] == bone) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.bones.push(bone);\n }\n for (var i = 0; i < skin.constraints.length; i++) {\n var constraint = skin.constraints[i];\n var contained = false;\n for (var ii = 0; ii < this.constraints.length; ii++) {\n if (this.constraints[ii] == constraint) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.constraints.push(constraint);\n }\n var attachments = skin.getAttachments();\n for (var i = 0; i < attachments.length; i++) {\n var attachment = attachments[i];\n if (!attachment.attachment)\n continue;\n if (attachment.attachment instanceof MeshAttachment) {\n attachment.attachment = attachment.attachment.newLinkedMesh();\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n else {\n attachment.attachment = attachment.attachment.copy();\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n }\n };\n /** Returns the attachment for the specified slot index and name, or null. */\n Skin.prototype.getAttachment = function (slotIndex, name) {\n var dictionary = this.attachments[slotIndex];\n return dictionary ? dictionary[name] : null;\n };\n /** Removes the attachment in the skin for the specified slot index and name, if any. */\n Skin.prototype.removeAttachment = function (slotIndex, name) {\n var dictionary = this.attachments[slotIndex];\n if (dictionary)\n dictionary[name] = null;\n };\n /** Returns all attachments in this skin. */\n Skin.prototype.getAttachments = function () {\n var entries = new Array();\n for (var i = 0; i < this.attachments.length; i++) {\n var slotAttachments = this.attachments[i];\n if (slotAttachments) {\n for (var name_1 in slotAttachments) {\n var attachment = slotAttachments[name_1];\n if (attachment)\n entries.push(new SkinEntry(i, name_1, attachment));\n }\n }\n }\n return entries;\n };\n /** Returns all attachments in this skin for the specified slot index. */\n Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) {\n var slotAttachments = this.attachments[slotIndex];\n if (slotAttachments) {\n for (var name_2 in slotAttachments) {\n var attachment = slotAttachments[name_2];\n if (attachment)\n attachments.push(new SkinEntry(slotIndex, name_2, attachment));\n }\n }\n };\n /** Clears all attachments, bones, and constraints. */\n Skin.prototype.clear = function () {\n this.attachments.length = 0;\n this.bones.length = 0;\n this.constraints.length = 0;\n };\n /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */\n Skin.prototype.attachAll = function (skeleton, oldSkin) {\n var slotIndex = 0;\n for (var i = 0; i < skeleton.slots.length; i++) {\n var slot = skeleton.slots[i];\n var slotAttachment = slot.getAttachment();\n if (slotAttachment && slotIndex < oldSkin.attachments.length) {\n var dictionary = oldSkin.attachments[slotIndex];\n for (var key in dictionary) {\n var skinAttachment = dictionary[key];\n if (slotAttachment == skinAttachment) {\n var attachment = this.getAttachment(slotIndex, key);\n if (attachment)\n slot.setAttachment(attachment);\n break;\n }\n }\n }\n slotIndex++;\n }\n };\n return Skin;\n}());\nexport { Skin };\n//# sourceMappingURL=Skin.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Color } from \"./Utils\";\n/** Stores the setup pose for a {@link Slot}. */\nvar SlotData = /** @class */ (function () {\n function SlotData(index, name, boneData) {\n /** The color used to tint the slot's attachment. If {@link #getDarkColor()} is set, this is used as the light color for two\n * color tinting. */\n this.color = new Color(1, 1, 1, 1);\n if (index < 0)\n throw new Error(\"index must be >= 0.\");\n if (!name)\n throw new Error(\"name cannot be null.\");\n if (!boneData)\n throw new Error(\"boneData cannot be null.\");\n this.index = index;\n this.name = name;\n this.boneData = boneData;\n }\n return SlotData;\n}());\nexport { SlotData };\n/** Determines how images are blended with existing pixels when drawn. */\nexport var BlendMode;\n(function (BlendMode) {\n BlendMode[BlendMode[\"Normal\"] = 0] = \"Normal\";\n BlendMode[BlendMode[\"Additive\"] = 1] = \"Additive\";\n BlendMode[BlendMode[\"Multiply\"] = 2] = \"Multiply\";\n BlendMode[BlendMode[\"Screen\"] = 3] = \"Screen\";\n})(BlendMode || (BlendMode = {}));\n//# sourceMappingURL=SlotData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConstraintData } from \"./ConstraintData\";\n/** Stores the setup pose for a {@link TransformConstraint}.\n *\n * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */\nvar TransformConstraintData = /** @class */ (function (_super) {\n __extends(TransformConstraintData, _super);\n function TransformConstraintData(name) {\n var _this = _super.call(this, name, 0, false) || this;\n /** The bones that will be modified by this transform constraint. */\n _this.bones = new Array();\n _this.mixRotate = 0;\n _this.mixX = 0;\n _this.mixY = 0;\n _this.mixScaleX = 0;\n _this.mixScaleY = 0;\n _this.mixShearY = 0;\n /** An offset added to the constrained bone rotation. */\n _this.offsetRotation = 0;\n /** An offset added to the constrained bone X translation. */\n _this.offsetX = 0;\n /** An offset added to the constrained bone Y translation. */\n _this.offsetY = 0;\n /** An offset added to the constrained bone scaleX. */\n _this.offsetScaleX = 0;\n /** An offset added to the constrained bone scaleY. */\n _this.offsetScaleY = 0;\n /** An offset added to the constrained bone shearY. */\n _this.offsetShearY = 0;\n _this.relative = false;\n _this.local = false;\n return _this;\n }\n return TransformConstraintData;\n}(ConstraintData));\nexport { TransformConstraintData };\n//# sourceMappingURL=TransformConstraintData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Animation, AttachmentTimeline, RGBATimeline, RGBTimeline, RGBA2Timeline, RGB2Timeline, AlphaTimeline, RotateTimeline, TranslateTimeline, TranslateXTimeline, TranslateYTimeline, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, IkConstraintTimeline, TransformConstraintTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PathConstraintMixTimeline, DeformTimeline, DrawOrderTimeline, EventTimeline } from \"./Animation\";\nimport { BoneData } from \"./BoneData\";\nimport { Event } from \"./Event\";\nimport { EventData } from \"./EventData\";\nimport { IkConstraintData } from \"./IkConstraintData\";\nimport { PathConstraintData, PositionMode, SpacingMode } from \"./PathConstraintData\";\nimport { SkeletonData } from \"./SkeletonData\";\nimport { Skin } from \"./Skin\";\nimport { SlotData } from \"./SlotData\";\nimport { TransformConstraintData } from \"./TransformConstraintData\";\nimport { Color, Utils } from \"./Utils\";\n/** Loads skeleton data in the Spine binary format.\n *\n * See [Spine binary format](http://esotericsoftware.com/spine-binary-format) and\n * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine\n * Runtimes Guide. */\nvar SkeletonBinary = /** @class */ (function () {\n function SkeletonBinary(attachmentLoader) {\n /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at\n * runtime than were used in Spine.\n *\n * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */\n this.scale = 1;\n this.linkedMeshes = new Array();\n this.attachmentLoader = attachmentLoader;\n }\n SkeletonBinary.prototype.readSkeletonData = function (binary) {\n var scale = this.scale;\n var skeletonData = new SkeletonData();\n skeletonData.name = \"\"; // BOZO\n var input = new BinaryInput(binary);\n var lowHash = input.readInt32();\n var highHash = input.readInt32();\n skeletonData.hash = highHash == 0 && lowHash == 0 ? null : highHash.toString(16) + lowHash.toString(16);\n skeletonData.version = input.readString();\n skeletonData.x = input.readFloat();\n skeletonData.y = input.readFloat();\n skeletonData.width = input.readFloat();\n skeletonData.height = input.readFloat();\n var nonessential = input.readBoolean();\n if (nonessential) {\n skeletonData.fps = input.readFloat();\n skeletonData.imagesPath = input.readString();\n skeletonData.audioPath = input.readString();\n }\n var n = 0;\n // Strings.\n n = input.readInt(true);\n for (var i = 0; i < n; i++)\n input.strings.push(input.readString());\n // Bones.\n n = input.readInt(true);\n for (var i = 0; i < n; i++) {\n var name_1 = input.readString();\n var parent_1 = i == 0 ? null : skeletonData.bones[input.readInt(true)];\n var data = new BoneData(i, name_1, parent_1);\n data.rotation = input.readFloat();\n data.x = input.readFloat() * scale;\n data.y = input.readFloat() * scale;\n data.scaleX = input.readFloat();\n data.scaleY = input.readFloat();\n data.shearX = input.readFloat();\n data.shearY = input.readFloat();\n data.length = input.readFloat() * scale;\n data.transformMode = input.readInt(true);\n data.skinRequired = input.readBoolean();\n if (nonessential)\n Color.rgba8888ToColor(data.color, input.readInt32());\n skeletonData.bones.push(data);\n }\n // Slots.\n n = input.readInt(true);\n for (var i = 0; i < n; i++) {\n var slotName = input.readString();\n var boneData = skeletonData.bones[input.readInt(true)];\n var data = new SlotData(i, slotName, boneData);\n Color.rgba8888ToColor(data.color, input.readInt32());\n var darkColor = input.readInt32();\n if (darkColor != -1)\n Color.rgb888ToColor(data.darkColor = new Color(), darkColor);\n data.attachmentName = input.readStringRef();\n data.blendMode = input.readInt(true);\n skeletonData.slots.push(data);\n }\n // IK constraints.\n n = input.readInt(true);\n for (var i = 0, nn = void 0; i < n; i++) {\n var data = new IkConstraintData(input.readString());\n data.order = input.readInt(true);\n data.skinRequired = input.readBoolean();\n nn = input.readInt(true);\n for (var ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.bones[input.readInt(true)];\n data.mix = input.readFloat();\n data.softness = input.readFloat() * scale;\n data.bendDirection = input.readByte();\n data.compress = input.readBoolean();\n data.stretch = input.readBoolean();\n data.uniform = input.readBoolean();\n skeletonData.ikConstraints.push(data);\n }\n // Transform constraints.\n n = input.readInt(true);\n for (var i = 0, nn = void 0; i < n; i++) {\n var data = new TransformConstraintData(input.readString());\n data.order = input.readInt(true);\n data.skinRequired = input.readBoolean();\n nn = input.readInt(true);\n for (var ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.bones[input.readInt(true)];\n data.local = input.readBoolean();\n data.relative = input.readBoolean();\n data.offsetRotation = input.readFloat();\n data.offsetX = input.readFloat() * scale;\n data.offsetY = input.readFloat() * scale;\n data.offsetScaleX = input.readFloat();\n data.offsetScaleY = input.readFloat();\n data.offsetShearY = input.readFloat();\n data.mixRotate = input.readFloat();\n data.mixX = input.readFloat();\n data.mixY = input.readFloat();\n data.mixScaleX = input.readFloat();\n data.mixScaleY = input.readFloat();\n data.mixShearY = input.readFloat();\n skeletonData.transformConstraints.push(data);\n }\n // Path constraints.\n n = input.readInt(true);\n for (var i = 0, nn = void 0; i < n; i++) {\n var data = new PathConstraintData(input.readString());\n data.order = input.readInt(true);\n data.skinRequired = input.readBoolean();\n nn = input.readInt(true);\n for (var ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.slots[input.readInt(true)];\n data.positionMode = input.readInt(true);\n data.spacingMode = input.readInt(true);\n data.rotateMode = input.readInt(true);\n data.offsetRotation = input.readFloat();\n data.position = input.readFloat();\n if (data.positionMode == PositionMode.Fixed)\n data.position *= scale;\n data.spacing = input.readFloat();\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed)\n data.spacing *= scale;\n data.mixRotate = input.readFloat();\n data.mixX = input.readFloat();\n data.mixY = input.readFloat();\n skeletonData.pathConstraints.push(data);\n }\n // Default skin.\n var defaultSkin = this.readSkin(input, skeletonData, true, nonessential);\n if (defaultSkin) {\n skeletonData.defaultSkin = defaultSkin;\n skeletonData.skins.push(defaultSkin);\n }\n // Skins.\n {\n var i = skeletonData.skins.length;\n Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true));\n for (; i < n; i++)\n skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential);\n }\n // Linked meshes.\n n = this.linkedMeshes.length;\n for (var i = 0; i < n; i++) {\n var linkedMesh = this.linkedMeshes[i];\n var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);\n var parent_2 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);\n linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_2 : linkedMesh.mesh;\n linkedMesh.mesh.setParentMesh(parent_2);\n linkedMesh.mesh.updateUVs();\n }\n this.linkedMeshes.length = 0;\n // Events.\n n = input.readInt(true);\n for (var i = 0; i < n; i++) {\n var data = new EventData(input.readStringRef());\n data.intValue = input.readInt(false);\n data.floatValue = input.readFloat();\n data.stringValue = input.readString();\n data.audioPath = input.readString();\n if (data.audioPath) {\n data.volume = input.readFloat();\n data.balance = input.readFloat();\n }\n skeletonData.events.push(data);\n }\n // Animations.\n n = input.readInt(true);\n for (var i = 0; i < n; i++)\n skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData));\n return skeletonData;\n };\n SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) {\n var skin = null;\n var slotCount = 0;\n if (defaultSkin) {\n slotCount = input.readInt(true);\n if (slotCount == 0)\n return null;\n skin = new Skin(\"default\");\n }\n else {\n skin = new Skin(input.readStringRef());\n skin.bones.length = input.readInt(true);\n for (var i = 0, n = skin.bones.length; i < n; i++)\n skin.bones[i] = skeletonData.bones[input.readInt(true)];\n for (var i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]);\n for (var i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);\n for (var i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);\n slotCount = input.readInt(true);\n }\n for (var i = 0; i < slotCount; i++) {\n var slotIndex = input.readInt(true);\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var name_2 = input.readStringRef();\n var attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name_2, nonessential);\n if (attachment)\n skin.setAttachment(slotIndex, name_2, attachment);\n }\n }\n return skin;\n };\n SkeletonBinary.prototype.readAttachment = function (input, skeletonData, skin, slotIndex, attachmentName, nonessential) {\n var scale = this.scale;\n var name = input.readStringRef();\n if (!name)\n name = attachmentName;\n switch (input.readByte()) {\n case AttachmentType.Region: {\n var path = input.readStringRef();\n var rotation = input.readFloat();\n var x = input.readFloat();\n var y = input.readFloat();\n var scaleX = input.readFloat();\n var scaleY = input.readFloat();\n var width = input.readFloat();\n var height = input.readFloat();\n var color = input.readInt32();\n if (!path)\n path = name;\n var region = this.attachmentLoader.newRegionAttachment(skin, name, path);\n if (!region)\n return null;\n region.path = path;\n region.x = x * scale;\n region.y = y * scale;\n region.scaleX = scaleX;\n region.scaleY = scaleY;\n region.rotation = rotation;\n region.width = width * scale;\n region.height = height * scale;\n Color.rgba8888ToColor(region.color, color);\n region.updateOffset();\n return region;\n }\n case AttachmentType.BoundingBox: {\n var vertexCount = input.readInt(true);\n var vertices = this.readVertices(input, vertexCount);\n var color = nonessential ? input.readInt32() : 0;\n var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\n if (!box)\n return null;\n box.worldVerticesLength = vertexCount << 1;\n box.vertices = vertices.vertices;\n box.bones = vertices.bones;\n if (nonessential)\n Color.rgba8888ToColor(box.color, color);\n return box;\n }\n case AttachmentType.Mesh: {\n var path = input.readStringRef();\n var color = input.readInt32();\n var vertexCount = input.readInt(true);\n var uvs = this.readFloatArray(input, vertexCount << 1, 1);\n var triangles = this.readShortArray(input);\n var vertices = this.readVertices(input, vertexCount);\n var hullLength = input.readInt(true);\n var edges = null;\n var width = 0, height = 0;\n if (nonessential) {\n edges = this.readShortArray(input);\n width = input.readFloat();\n height = input.readFloat();\n }\n if (!path)\n path = name;\n var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n if (!mesh)\n return null;\n mesh.path = path;\n Color.rgba8888ToColor(mesh.color, color);\n mesh.bones = vertices.bones;\n mesh.vertices = vertices.vertices;\n mesh.worldVerticesLength = vertexCount << 1;\n mesh.triangles = triangles;\n mesh.regionUVs = uvs;\n mesh.updateUVs();\n mesh.hullLength = hullLength << 1;\n if (nonessential) {\n mesh.edges = edges;\n mesh.width = width * scale;\n mesh.height = height * scale;\n }\n return mesh;\n }\n case AttachmentType.LinkedMesh: {\n var path = input.readStringRef();\n var color = input.readInt32();\n var skinName = input.readStringRef();\n var parent_3 = input.readStringRef();\n var inheritDeform = input.readBoolean();\n var width = 0, height = 0;\n if (nonessential) {\n width = input.readFloat();\n height = input.readFloat();\n }\n if (!path)\n path = name;\n var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n if (!mesh)\n return null;\n mesh.path = path;\n Color.rgba8888ToColor(mesh.color, color);\n if (nonessential) {\n mesh.width = width * scale;\n mesh.height = height * scale;\n }\n this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent_3, inheritDeform));\n return mesh;\n }\n case AttachmentType.Path: {\n var closed_1 = input.readBoolean();\n var constantSpeed = input.readBoolean();\n var vertexCount = input.readInt(true);\n var vertices = this.readVertices(input, vertexCount);\n var lengths = Utils.newArray(vertexCount / 3, 0);\n for (var i = 0, n = lengths.length; i < n; i++)\n lengths[i] = input.readFloat() * scale;\n var color = nonessential ? input.readInt32() : 0;\n var path = this.attachmentLoader.newPathAttachment(skin, name);\n if (!path)\n return null;\n path.closed = closed_1;\n path.constantSpeed = constantSpeed;\n path.worldVerticesLength = vertexCount << 1;\n path.vertices = vertices.vertices;\n path.bones = vertices.bones;\n path.lengths = lengths;\n if (nonessential)\n Color.rgba8888ToColor(path.color, color);\n return path;\n }\n case AttachmentType.Point: {\n var rotation = input.readFloat();\n var x = input.readFloat();\n var y = input.readFloat();\n var color = nonessential ? input.readInt32() : 0;\n var point = this.attachmentLoader.newPointAttachment(skin, name);\n if (!point)\n return null;\n point.x = x * scale;\n point.y = y * scale;\n point.rotation = rotation;\n if (nonessential)\n Color.rgba8888ToColor(point.color, color);\n return point;\n }\n case AttachmentType.Clipping: {\n var endSlotIndex = input.readInt(true);\n var vertexCount = input.readInt(true);\n var vertices = this.readVertices(input, vertexCount);\n var color = nonessential ? input.readInt32() : 0;\n var clip = this.attachmentLoader.newClippingAttachment(skin, name);\n if (!clip)\n return null;\n clip.endSlot = skeletonData.slots[endSlotIndex];\n clip.worldVerticesLength = vertexCount << 1;\n clip.vertices = vertices.vertices;\n clip.bones = vertices.bones;\n if (nonessential)\n Color.rgba8888ToColor(clip.color, color);\n return clip;\n }\n }\n return null;\n };\n SkeletonBinary.prototype.readVertices = function (input, vertexCount) {\n var scale = this.scale;\n var verticesLength = vertexCount << 1;\n var vertices = new Vertices();\n if (!input.readBoolean()) {\n vertices.vertices = this.readFloatArray(input, verticesLength, scale);\n return vertices;\n }\n var weights = new Array();\n var bonesArray = new Array();\n for (var i = 0; i < vertexCount; i++) {\n var boneCount = input.readInt(true);\n bonesArray.push(boneCount);\n for (var ii = 0; ii < boneCount; ii++) {\n bonesArray.push(input.readInt(true));\n weights.push(input.readFloat() * scale);\n weights.push(input.readFloat() * scale);\n weights.push(input.readFloat());\n }\n }\n vertices.vertices = Utils.toFloatArray(weights);\n vertices.bones = bonesArray;\n return vertices;\n };\n SkeletonBinary.prototype.readFloatArray = function (input, n, scale) {\n var array = new Array(n);\n if (scale == 1) {\n for (var i = 0; i < n; i++)\n array[i] = input.readFloat();\n }\n else {\n for (var i = 0; i < n; i++)\n array[i] = input.readFloat() * scale;\n }\n return array;\n };\n SkeletonBinary.prototype.readShortArray = function (input) {\n var n = input.readInt(true);\n var array = new Array(n);\n for (var i = 0; i < n; i++)\n array[i] = input.readShort();\n return array;\n };\n SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) {\n input.readInt(true); // Number of timelines.\n var timelines = new Array();\n var scale = this.scale;\n var tempColor1 = new Color();\n var tempColor2 = new Color();\n // Slot timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var slotIndex = input.readInt(true);\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var timelineType = input.readByte();\n var frameCount = input.readInt(true);\n var frameLast = frameCount - 1;\n switch (timelineType) {\n case SLOT_ATTACHMENT: {\n var timeline = new AttachmentTimeline(frameCount, slotIndex);\n for (var frame = 0; frame < frameCount; frame++)\n timeline.setFrame(frame, input.readFloat(), input.readStringRef());\n timelines.push(timeline);\n break;\n }\n case SLOT_RGBA: {\n var bezierCount = input.readInt(true);\n var timeline = new RGBATimeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n var a = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, a);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n var a2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, a, a2, 1);\n }\n time = time2;\n r = r2;\n g = g2;\n b = b2;\n a = a2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGB: {\n var bezierCount = input.readInt(true);\n var timeline = new RGBTimeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1);\n }\n time = time2;\n r = r2;\n g = g2;\n b = b2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGBA2: {\n var bezierCount = input.readInt(true);\n var timeline = new RGBA2Timeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n var a = input.readUnsignedByte() / 255.0;\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, a, r2, g2, b2);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var nr = input.readUnsignedByte() / 255.0;\n var ng = input.readUnsignedByte() / 255.0;\n var nb = input.readUnsignedByte() / 255.0;\n var na = input.readUnsignedByte() / 255.0;\n var nr2 = input.readUnsignedByte() / 255.0;\n var ng2 = input.readUnsignedByte() / 255.0;\n var nb2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, a, na, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, r2, nr2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, g2, ng2, 1);\n setBezier(input, timeline, bezier++, frame, 6, time, time2, b2, nb2, 1);\n }\n time = time2;\n r = nr;\n g = ng;\n b = nb;\n a = na;\n r2 = nr2;\n g2 = ng2;\n b2 = nb2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGB2: {\n var bezierCount = input.readInt(true);\n var timeline = new RGB2Timeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, r2, g2, b2);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var nr = input.readUnsignedByte() / 255.0;\n var ng = input.readUnsignedByte() / 255.0;\n var nb = input.readUnsignedByte() / 255.0;\n var nr2 = input.readUnsignedByte() / 255.0;\n var ng2 = input.readUnsignedByte() / 255.0;\n var nb2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, r2, nr2, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, g2, ng2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, b2, nb2, 1);\n }\n time = time2;\n r = nr;\n g = ng;\n b = nb;\n r2 = nr2;\n g2 = ng2;\n b2 = nb2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_ALPHA: {\n var timeline = new AlphaTimeline(frameCount, input.readInt(true), slotIndex);\n var time = input.readFloat(), a = input.readUnsignedByte() / 255;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, a);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var a2 = input.readUnsignedByte() / 255;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, a, a2, 1);\n }\n time = time2;\n a = a2;\n }\n timelines.push(timeline);\n break;\n }\n }\n }\n }\n // Bone timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var boneIndex = input.readInt(true);\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true);\n switch (type) {\n case BONE_ROTATE:\n timelines.push(readTimeline1(input, new RotateTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_TRANSLATE:\n timelines.push(readTimeline2(input, new TranslateTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_TRANSLATEX:\n timelines.push(readTimeline1(input, new TranslateXTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_TRANSLATEY:\n timelines.push(readTimeline1(input, new TranslateYTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_SCALE:\n timelines.push(readTimeline2(input, new ScaleTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SCALEX:\n timelines.push(readTimeline1(input, new ScaleXTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SCALEY:\n timelines.push(readTimeline1(input, new ScaleYTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEAR:\n timelines.push(readTimeline2(input, new ShearTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEARX:\n timelines.push(readTimeline1(input, new ShearXTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEARY:\n timelines.push(readTimeline1(input, new ShearYTimeline(frameCount, bezierCount, boneIndex), 1));\n }\n }\n }\n // IK constraint timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1;\n var timeline = new IkConstraintTimeline(frameCount, input.readInt(true), index);\n var time = input.readFloat(), mix = input.readFloat(), softness = input.readFloat() * scale;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mix, softness, input.readByte(), input.readBoolean(), input.readBoolean());\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), mix2 = input.readFloat(), softness2 = input.readFloat() * scale;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale);\n }\n time = time2;\n mix = mix2;\n softness = softness2;\n }\n timelines.push(timeline);\n }\n // Transform constraint timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1;\n var timeline = new TransformConstraintTimeline(frameCount, input.readInt(true), index);\n var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(), mixScaleX = input.readFloat(), mixScaleY = input.readFloat(), mixShearY = input.readFloat();\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(), mixScaleX2 = input.readFloat(), mixScaleY2 = input.readFloat(), mixShearY2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, mixScaleX, mixScaleX2, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, mixScaleY, mixScaleY2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, mixShearY, mixShearY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n mixScaleX = mixScaleX2;\n mixScaleY = mixScaleY2;\n mixShearY = mixShearY2;\n }\n timelines.push(timeline);\n }\n // Path constraint timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var index = input.readInt(true);\n var data = skeletonData.pathConstraints[index];\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n switch (input.readByte()) {\n case PATH_POSITION:\n timelines\n .push(readTimeline1(input, new PathConstraintPositionTimeline(input.readInt(true), input.readInt(true), index), data.positionMode == PositionMode.Fixed ? scale : 1));\n break;\n case PATH_SPACING:\n timelines\n .push(readTimeline1(input, new PathConstraintSpacingTimeline(input.readInt(true), input.readInt(true), index), data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed ? scale : 1));\n break;\n case PATH_MIX:\n var timeline = new PathConstraintMixTimeline(input.readInt(true), input.readInt(true), index);\n var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat();\n for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n }\n timelines.push(timeline);\n }\n }\n }\n // Deform timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var skin = skeletonData.skins[input.readInt(true)];\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var slotIndex = input.readInt(true);\n for (var iii = 0, nnn = input.readInt(true); iii < nnn; iii++) {\n var attachmentName = input.readStringRef();\n var attachment = skin.getAttachment(slotIndex, attachmentName);\n var weighted = attachment.bones;\n var vertices = attachment.vertices;\n var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;\n var frameCount = input.readInt(true);\n var frameLast = frameCount - 1;\n var bezierCount = input.readInt(true);\n var timeline = new DeformTimeline(frameCount, bezierCount, slotIndex, attachment);\n var time = input.readFloat();\n for (var frame = 0, bezier = 0;; frame++) {\n var deform = void 0;\n var end = input.readInt(true);\n if (end == 0)\n deform = weighted ? Utils.newFloatArray(deformLength) : vertices;\n else {\n deform = Utils.newFloatArray(deformLength);\n var start = input.readInt(true);\n end += start;\n if (scale == 1) {\n for (var v = start; v < end; v++)\n deform[v] = input.readFloat();\n }\n else {\n for (var v = start; v < end; v++)\n deform[v] = input.readFloat() * scale;\n }\n if (!weighted) {\n for (var v = 0, vn = deform.length; v < vn; v++)\n deform[v] += vertices[v];\n }\n }\n timeline.setFrame(frame, time, deform);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1);\n }\n time = time2;\n }\n timelines.push(timeline);\n }\n }\n }\n // Draw order timeline.\n var drawOrderCount = input.readInt(true);\n if (drawOrderCount > 0) {\n var timeline = new DrawOrderTimeline(drawOrderCount);\n var slotCount = skeletonData.slots.length;\n for (var i = 0; i < drawOrderCount; i++) {\n var time = input.readFloat();\n var offsetCount = input.readInt(true);\n var drawOrder = Utils.newArray(slotCount, 0);\n for (var ii = slotCount - 1; ii >= 0; ii--)\n drawOrder[ii] = -1;\n var unchanged = Utils.newArray(slotCount - offsetCount, 0);\n var originalIndex = 0, unchangedIndex = 0;\n for (var ii = 0; ii < offsetCount; ii++) {\n var slotIndex = input.readInt(true);\n // Collect unchanged items.\n while (originalIndex != slotIndex)\n unchanged[unchangedIndex++] = originalIndex++;\n // Set changed items.\n drawOrder[originalIndex + input.readInt(true)] = originalIndex++;\n }\n // Collect remaining unchanged items.\n while (originalIndex < slotCount)\n unchanged[unchangedIndex++] = originalIndex++;\n // Fill in unchanged items.\n for (var ii = slotCount - 1; ii >= 0; ii--)\n if (drawOrder[ii] == -1)\n drawOrder[ii] = unchanged[--unchangedIndex];\n timeline.setFrame(i, time, drawOrder);\n }\n timelines.push(timeline);\n }\n // Event timeline.\n var eventCount = input.readInt(true);\n if (eventCount > 0) {\n var timeline = new EventTimeline(eventCount);\n for (var i = 0; i < eventCount; i++) {\n var time = input.readFloat();\n var eventData = skeletonData.events[input.readInt(true)];\n var event_1 = new Event(time, eventData);\n event_1.intValue = input.readInt(false);\n event_1.floatValue = input.readFloat();\n event_1.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue;\n if (event_1.data.audioPath) {\n event_1.volume = input.readFloat();\n event_1.balance = input.readFloat();\n }\n timeline.setFrame(i, event_1);\n }\n timelines.push(timeline);\n }\n var duration = 0;\n for (var i = 0, n = timelines.length; i < n; i++)\n duration = Math.max(duration, timelines[i].getDuration());\n return new Animation(name, timelines, duration);\n };\n return SkeletonBinary;\n}());\nexport { SkeletonBinary };\nvar BinaryInput = /** @class */ (function () {\n function BinaryInput(data, strings, index, buffer) {\n if (strings === void 0) { strings = new Array(); }\n if (index === void 0) { index = 0; }\n if (buffer === void 0) { buffer = new DataView(data.buffer); }\n this.strings = strings;\n this.index = index;\n this.buffer = buffer;\n }\n BinaryInput.prototype.readByte = function () {\n return this.buffer.getInt8(this.index++);\n };\n BinaryInput.prototype.readUnsignedByte = function () {\n return this.buffer.getUint8(this.index++);\n };\n BinaryInput.prototype.readShort = function () {\n var value = this.buffer.getInt16(this.index);\n this.index += 2;\n return value;\n };\n BinaryInput.prototype.readInt32 = function () {\n var value = this.buffer.getInt32(this.index);\n this.index += 4;\n return value;\n };\n BinaryInput.prototype.readInt = function (optimizePositive) {\n var b = this.readByte();\n var result = b & 0x7F;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 7;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 14;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 21;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 28;\n }\n }\n }\n }\n return optimizePositive ? result : ((result >>> 1) ^ -(result & 1));\n };\n BinaryInput.prototype.readStringRef = function () {\n var index = this.readInt(true);\n return index == 0 ? null : this.strings[index - 1];\n };\n BinaryInput.prototype.readString = function () {\n var byteCount = this.readInt(true);\n switch (byteCount) {\n case 0:\n return null;\n case 1:\n return \"\";\n }\n byteCount--;\n var chars = \"\";\n var charCount = 0;\n for (var i = 0; i < byteCount;) {\n var b = this.readByte();\n switch (b >> 4) {\n case 12:\n case 13:\n chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F));\n i += 2;\n break;\n case 14:\n chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F));\n i += 3;\n break;\n default:\n chars += String.fromCharCode(b);\n i++;\n }\n }\n return chars;\n };\n BinaryInput.prototype.readFloat = function () {\n var value = this.buffer.getFloat32(this.index);\n this.index += 4;\n return value;\n };\n BinaryInput.prototype.readBoolean = function () {\n return this.readByte() != 0;\n };\n return BinaryInput;\n}());\nexport { BinaryInput };\nvar LinkedMesh = /** @class */ (function () {\n function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) {\n this.mesh = mesh;\n this.skin = skin;\n this.slotIndex = slotIndex;\n this.parent = parent;\n this.inheritDeform = inheritDeform;\n }\n return LinkedMesh;\n}());\nvar Vertices = /** @class */ (function () {\n function Vertices(bones, vertices) {\n if (bones === void 0) { bones = null; }\n if (vertices === void 0) { vertices = null; }\n this.bones = bones;\n this.vertices = vertices;\n }\n return Vertices;\n}());\nvar AttachmentType;\n(function (AttachmentType) {\n AttachmentType[AttachmentType[\"Region\"] = 0] = \"Region\";\n AttachmentType[AttachmentType[\"BoundingBox\"] = 1] = \"BoundingBox\";\n AttachmentType[AttachmentType[\"Mesh\"] = 2] = \"Mesh\";\n AttachmentType[AttachmentType[\"LinkedMesh\"] = 3] = \"LinkedMesh\";\n AttachmentType[AttachmentType[\"Path\"] = 4] = \"Path\";\n AttachmentType[AttachmentType[\"Point\"] = 5] = \"Point\";\n AttachmentType[AttachmentType[\"Clipping\"] = 6] = \"Clipping\";\n})(AttachmentType || (AttachmentType = {}));\nfunction readTimeline1(input, timeline, scale) {\n var time = input.readFloat(), value = input.readFloat() * scale;\n for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, value);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), value2 = input.readFloat() * scale;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, value, value2, scale);\n }\n time = time2;\n value = value2;\n }\n return timeline;\n}\nfunction readTimeline2(input, timeline, scale) {\n var time = input.readFloat(), value1 = input.readFloat() * scale, value2 = input.readFloat() * scale;\n for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, value1, value2);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), nvalue1 = input.readFloat() * scale, nvalue2 = input.readFloat() * scale;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, value1, nvalue1, scale);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, value2, nvalue2, scale);\n }\n time = time2;\n value1 = nvalue1;\n value2 = nvalue2;\n }\n return timeline;\n}\nfunction setBezier(input, timeline, bezier, frame, value, time1, time2, value1, value2, scale) {\n timeline.setBezier(bezier, frame, value, time1, value1, input.readFloat(), input.readFloat() * scale, input.readFloat(), input.readFloat() * scale, time2, value2);\n}\nvar BONE_ROTATE = 0;\nvar BONE_TRANSLATE = 1;\nvar BONE_TRANSLATEX = 2;\nvar BONE_TRANSLATEY = 3;\nvar BONE_SCALE = 4;\nvar BONE_SCALEX = 5;\nvar BONE_SCALEY = 6;\nvar BONE_SHEAR = 7;\nvar BONE_SHEARX = 8;\nvar BONE_SHEARY = 9;\nvar SLOT_ATTACHMENT = 0;\nvar SLOT_RGBA = 1;\nvar SLOT_RGB = 2;\nvar SLOT_RGBA2 = 3;\nvar SLOT_RGB2 = 4;\nvar SLOT_ALPHA = 5;\nvar PATH_POSITION = 0;\nvar PATH_SPACING = 1;\nvar PATH_MIX = 2;\nvar CURVE_LINEAR = 0;\nvar CURVE_STEPPED = 1;\nvar CURVE_BEZIER = 2;\n//# sourceMappingURL=SkeletonBinary.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { BoundingBoxAttachment } from \"./attachments/BoundingBoxAttachment\";\nimport { Pool, Utils } from \"./Utils\";\n/** Collects each visible {@link BoundingBoxAttachment} and computes the world vertices for its polygon. The polygon vertices are\n * provided along with convenience methods for doing hit detection. */\nvar SkeletonBounds = /** @class */ (function () {\n function SkeletonBounds() {\n /** The left edge of the axis aligned bounding box. */\n this.minX = 0;\n /** The bottom edge of the axis aligned bounding box. */\n this.minY = 0;\n /** The right edge of the axis aligned bounding box. */\n this.maxX = 0;\n /** The top edge of the axis aligned bounding box. */\n this.maxY = 0;\n /** The visible bounding boxes. */\n this.boundingBoxes = new Array();\n /** The world vertices for the bounding box polygons. */\n this.polygons = new Array();\n this.polygonPool = new Pool(function () {\n return Utils.newFloatArray(16);\n });\n }\n /** Clears any previous polygons, finds all visible bounding box attachments, and computes the world vertices for each bounding\n * box's polygon.\n * @param updateAabb If true, the axis aligned bounding box containing all the polygons is computed. If false, the\n * SkeletonBounds AABB methods will always return true. */\n SkeletonBounds.prototype.update = function (skeleton, updateAabb) {\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n var boundingBoxes = this.boundingBoxes;\n var polygons = this.polygons;\n var polygonPool = this.polygonPool;\n var slots = skeleton.slots;\n var slotCount = slots.length;\n boundingBoxes.length = 0;\n polygonPool.freeAll(polygons);\n polygons.length = 0;\n for (var i = 0; i < slotCount; i++) {\n var slot = slots[i];\n if (!slot.bone.active)\n continue;\n var attachment = slot.getAttachment();\n if (attachment instanceof BoundingBoxAttachment) {\n var boundingBox = attachment;\n boundingBoxes.push(boundingBox);\n var 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 if (updateAabb) {\n this.aabbCompute();\n }\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 SkeletonBounds.prototype.aabbCompute = function () {\n var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;\n var polygons = this.polygons;\n for (var i = 0, n = polygons.length; i < n; i++) {\n var polygon = polygons[i];\n var vertices = polygon;\n for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) {\n var x = vertices[ii];\n var 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 /** Returns true if the axis aligned bounding box contains the point. */\n SkeletonBounds.prototype.aabbContainsPoint = function (x, y) {\n return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;\n };\n /** Returns true if the axis aligned bounding box intersects the line segment. */\n SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) {\n var minX = this.minX;\n var minY = this.minY;\n var maxX = this.maxX;\n var 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 var m = (y2 - y1) / (x2 - x1);\n var y = m * (minX - x1) + y1;\n if (y > minY && y < maxY)\n return true;\n y = m * (maxX - x1) + y1;\n if (y > minY && y < maxY)\n return true;\n var x = (minY - y1) / m + x1;\n if (x > minX && x < maxX)\n return true;\n x = (maxY - y1) / m + x1;\n if (x > minX && x < maxX)\n return true;\n return false;\n };\n /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */\n SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) {\n return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY;\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 SkeletonBounds.prototype.containsPoint = function (x, y) {\n var polygons = this.polygons;\n for (var i = 0, n = polygons.length; i < n; i++)\n if (this.containsPointPolygon(polygons[i], x, y))\n return this.boundingBoxes[i];\n return null;\n };\n /** Returns true if the polygon contains the point. */\n SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) {\n var vertices = polygon;\n var nn = polygon.length;\n var prevIndex = nn - 2;\n var inside = false;\n for (var ii = 0; ii < nn; ii += 2) {\n var vertexY = vertices[ii + 1];\n var prevY = vertices[prevIndex + 1];\n if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) {\n var vertexX = vertices[ii];\n if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x)\n inside = !inside;\n }\n prevIndex = ii;\n }\n return inside;\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()} returns\n * true. */\n SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) {\n var polygons = this.polygons;\n for (var i = 0, n = polygons.length; i < n; i++)\n if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2))\n return this.boundingBoxes[i];\n return null;\n };\n /** Returns true if the polygon contains any part of the line segment. */\n SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) {\n var vertices = polygon;\n var nn = polygon.length;\n var width12 = x1 - x2, height12 = y1 - y2;\n var det1 = x1 * y2 - y1 * x2;\n var x3 = vertices[nn - 2], y3 = vertices[nn - 1];\n for (var ii = 0; ii < nn; ii += 2) {\n var x4 = vertices[ii], y4 = vertices[ii + 1];\n var det2 = x3 * y4 - y3 * x4;\n var width34 = x3 - x4, height34 = y3 - y4;\n var det3 = width12 * height34 - height12 * width34;\n var 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 var y = (det1 * height34 - height12 * det2) / det3;\n if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1)))\n return true;\n }\n x3 = x4;\n y3 = y4;\n }\n return false;\n };\n /** Returns the polygon for the specified bounding box, or null. */\n SkeletonBounds.prototype.getPolygon = function (boundingBox) {\n if (!boundingBox)\n throw new Error(\"boundingBox cannot be null.\");\n var index = this.boundingBoxes.indexOf(boundingBox);\n return index == -1 ? null : this.polygons[index];\n };\n /** The width of the axis aligned bounding box. */\n SkeletonBounds.prototype.getWidth = function () {\n return this.maxX - this.minX;\n };\n /** The height of the axis aligned bounding box. */\n SkeletonBounds.prototype.getHeight = function () {\n return this.maxY - this.minY;\n };\n return SkeletonBounds;\n}());\nexport { SkeletonBounds };\n//# sourceMappingURL=SkeletonBounds.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Pool } from \"./Utils\";\nvar Triangulator = /** @class */ (function () {\n function Triangulator() {\n this.convexPolygons = new Array();\n this.convexPolygonsIndices = new Array();\n this.indicesArray = new Array();\n this.isConcaveArray = new Array();\n this.triangles = new Array();\n this.polygonPool = new Pool(function () {\n return new Array();\n });\n this.polygonIndicesPool = new Pool(function () {\n return new Array();\n });\n }\n Triangulator.prototype.triangulate = function (verticesArray) {\n var vertices = verticesArray;\n var vertexCount = verticesArray.length >> 1;\n var indices = this.indicesArray;\n indices.length = 0;\n for (var i = 0; i < vertexCount; i++)\n indices[i] = i;\n var isConcave = this.isConcaveArray;\n isConcave.length = 0;\n for (var i = 0, n = vertexCount; i < n; ++i)\n isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices);\n var triangles = this.triangles;\n triangles.length = 0;\n while (vertexCount > 3) {\n // Find ear tip.\n var previous = vertexCount - 1, i = 0, next = 1;\n while (true) {\n outer: if (!isConcave[i]) {\n var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1;\n var p1x = vertices[p1], p1y = vertices[p1 + 1];\n var p2x = vertices[p2], p2y = vertices[p2 + 1];\n var p3x = vertices[p3], p3y = vertices[p3 + 1];\n for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) {\n if (!isConcave[ii])\n continue;\n var v = indices[ii] << 1;\n var vx = vertices[v], vy = vertices[v + 1];\n if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) {\n if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) {\n if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy))\n break outer;\n }\n }\n }\n break;\n }\n if (next == 0) {\n do {\n if (!isConcave[i])\n break;\n i--;\n } while (i > 0);\n break;\n }\n previous = i;\n i = next;\n next = (next + 1) % vertexCount;\n }\n // Cut ear tip.\n triangles.push(indices[(vertexCount + i - 1) % vertexCount]);\n triangles.push(indices[i]);\n triangles.push(indices[(i + 1) % vertexCount]);\n indices.splice(i, 1);\n isConcave.splice(i, 1);\n vertexCount--;\n var previousIndex = (vertexCount + i - 1) % vertexCount;\n var nextIndex = i == vertexCount ? 0 : i;\n isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices);\n isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices);\n }\n if (vertexCount == 3) {\n triangles.push(indices[2]);\n triangles.push(indices[0]);\n triangles.push(indices[1]);\n }\n return triangles;\n };\n Triangulator.prototype.decompose = function (verticesArray, triangles) {\n var vertices = verticesArray;\n var convexPolygons = this.convexPolygons;\n this.polygonPool.freeAll(convexPolygons);\n convexPolygons.length = 0;\n var convexPolygonsIndices = this.convexPolygonsIndices;\n this.polygonIndicesPool.freeAll(convexPolygonsIndices);\n convexPolygonsIndices.length = 0;\n var polygonIndices = this.polygonIndicesPool.obtain();\n polygonIndices.length = 0;\n var polygon = this.polygonPool.obtain();\n polygon.length = 0;\n // Merge subsequent triangles if they form a triangle fan.\n var fanBaseIndex = -1, lastWinding = 0;\n for (var i = 0, n = triangles.length; i < n; i += 3) {\n var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1;\n var x1 = vertices[t1], y1 = vertices[t1 + 1];\n var x2 = vertices[t2], y2 = vertices[t2 + 1];\n var x3 = vertices[t3], y3 = vertices[t3 + 1];\n // If the base of the last triangle is the same as this triangle, check if they form a convex polygon (triangle fan).\n var merged = false;\n if (fanBaseIndex == t1) {\n var o = polygon.length - 4;\n var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3);\n var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]);\n if (winding1 == lastWinding && winding2 == lastWinding) {\n polygon.push(x3);\n polygon.push(y3);\n polygonIndices.push(t3);\n merged = true;\n }\n }\n // Otherwise make this triangle the new base.\n if (!merged) {\n if (polygon.length > 0) {\n convexPolygons.push(polygon);\n convexPolygonsIndices.push(polygonIndices);\n }\n else {\n this.polygonPool.free(polygon);\n this.polygonIndicesPool.free(polygonIndices);\n }\n polygon = this.polygonPool.obtain();\n polygon.length = 0;\n polygon.push(x1);\n polygon.push(y1);\n polygon.push(x2);\n polygon.push(y2);\n polygon.push(x3);\n polygon.push(y3);\n polygonIndices = this.polygonIndicesPool.obtain();\n polygonIndices.length = 0;\n polygonIndices.push(t1);\n polygonIndices.push(t2);\n polygonIndices.push(t3);\n lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3);\n fanBaseIndex = t1;\n }\n }\n if (polygon.length > 0) {\n convexPolygons.push(polygon);\n convexPolygonsIndices.push(polygonIndices);\n }\n // Go through the list of polygons and try to merge the remaining triangles with the found triangle fans.\n for (var i = 0, n = convexPolygons.length; i < n; i++) {\n polygonIndices = convexPolygonsIndices[i];\n if (polygonIndices.length == 0)\n continue;\n var firstIndex = polygonIndices[0];\n var lastIndex = polygonIndices[polygonIndices.length - 1];\n polygon = convexPolygons[i];\n var o = polygon.length - 4;\n var prevPrevX = polygon[o], prevPrevY = polygon[o + 1];\n var prevX = polygon[o + 2], prevY = polygon[o + 3];\n var firstX = polygon[0], firstY = polygon[1];\n var secondX = polygon[2], secondY = polygon[3];\n var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY);\n for (var ii = 0; ii < n; ii++) {\n if (ii == i)\n continue;\n var otherIndices = convexPolygonsIndices[ii];\n if (otherIndices.length != 3)\n continue;\n var otherFirstIndex = otherIndices[0];\n var otherSecondIndex = otherIndices[1];\n var otherLastIndex = otherIndices[2];\n var otherPoly = convexPolygons[ii];\n var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1];\n if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex)\n continue;\n var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3);\n var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY);\n if (winding1 == winding && winding2 == winding) {\n otherPoly.length = 0;\n otherIndices.length = 0;\n polygon.push(x3);\n polygon.push(y3);\n polygonIndices.push(otherLastIndex);\n prevPrevX = prevX;\n prevPrevY = prevY;\n prevX = x3;\n prevY = y3;\n ii = 0;\n }\n }\n }\n // Remove empty polygons that resulted from the merge step above.\n for (var i = convexPolygons.length - 1; i >= 0; i--) {\n polygon = convexPolygons[i];\n if (polygon.length == 0) {\n convexPolygons.splice(i, 1);\n this.polygonPool.free(polygon);\n polygonIndices = convexPolygonsIndices[i];\n convexPolygonsIndices.splice(i, 1);\n this.polygonIndicesPool.free(polygonIndices);\n }\n }\n return convexPolygons;\n };\n Triangulator.isConcave = function (index, vertexCount, vertices, indices) {\n var previous = indices[(vertexCount + index - 1) % vertexCount] << 1;\n var current = indices[index] << 1;\n var next = indices[(index + 1) % vertexCount] << 1;\n return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]);\n };\n Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) {\n return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0;\n };\n Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) {\n var px = p2x - p1x, py = p2y - p1y;\n return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1;\n };\n return Triangulator;\n}());\nexport { Triangulator };\n//# sourceMappingURL=Triangulator.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Triangulator } from \"./Triangulator\";\nimport { Utils } from \"./Utils\";\nvar SkeletonClipping = /** @class */ (function () {\n function SkeletonClipping() {\n this.triangulator = new Triangulator();\n this.clippingPolygon = new Array();\n this.clipOutput = new Array();\n this.clippedVertices = new Array();\n this.clippedTriangles = new Array();\n this.scratch = new Array();\n }\n SkeletonClipping.prototype.clipStart = function (slot, clip) {\n if (this.clipAttachment)\n return 0;\n this.clipAttachment = clip;\n var n = clip.worldVerticesLength;\n var vertices = Utils.setArraySize(this.clippingPolygon, n);\n clip.computeWorldVertices(slot, 0, n, vertices, 0, 2);\n var clippingPolygon = this.clippingPolygon;\n SkeletonClipping.makeClockwise(clippingPolygon);\n var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon));\n for (var i = 0, n_1 = clippingPolygons.length; i < n_1; i++) {\n var polygon = clippingPolygons[i];\n SkeletonClipping.makeClockwise(polygon);\n polygon.push(polygon[0]);\n polygon.push(polygon[1]);\n }\n return clippingPolygons.length;\n };\n SkeletonClipping.prototype.clipEndWithSlot = function (slot) {\n if (this.clipAttachment && this.clipAttachment.endSlot == slot.data)\n this.clipEnd();\n };\n SkeletonClipping.prototype.clipEnd = function () {\n if (!this.clipAttachment)\n return;\n this.clipAttachment = null;\n this.clippingPolygons = null;\n this.clippedVertices.length = 0;\n this.clippedTriangles.length = 0;\n this.clippingPolygon.length = 0;\n };\n SkeletonClipping.prototype.isClipping = function () {\n return this.clipAttachment != null;\n };\n SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) {\n var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices;\n var clippedTriangles = this.clippedTriangles;\n var polygons = this.clippingPolygons;\n var polygonsCount = this.clippingPolygons.length;\n var vertexSize = twoColor ? 12 : 8;\n var index = 0;\n clippedVertices.length = 0;\n clippedTriangles.length = 0;\n outer: for (var i = 0; i < trianglesLength; i += 3) {\n var vertexOffset = triangles[i] << 1;\n var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1];\n var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1];\n vertexOffset = triangles[i + 1] << 1;\n var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1];\n var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1];\n vertexOffset = triangles[i + 2] << 1;\n var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1];\n var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1];\n for (var p = 0; p < polygonsCount; p++) {\n var s = clippedVertices.length;\n if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) {\n var clipOutputLength = clipOutput.length;\n if (clipOutputLength == 0)\n continue;\n var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1;\n var d = 1 / (d0 * d2 + d1 * (y1 - y3));\n var clipOutputCount = clipOutputLength >> 1;\n var clipOutputItems = this.clipOutput;\n var clippedVerticesItems = Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize);\n for (var ii = 0; ii < clipOutputLength; ii += 2) {\n var x = clipOutputItems[ii], y = clipOutputItems[ii + 1];\n clippedVerticesItems[s] = x;\n clippedVerticesItems[s + 1] = y;\n clippedVerticesItems[s + 2] = light.r;\n clippedVerticesItems[s + 3] = light.g;\n clippedVerticesItems[s + 4] = light.b;\n clippedVerticesItems[s + 5] = light.a;\n var c0 = x - x3, c1 = y - y3;\n var a = (d0 * c0 + d1 * c1) * d;\n var b = (d4 * c0 + d2 * c1) * d;\n var c = 1 - a - b;\n clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c;\n clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c;\n if (twoColor) {\n clippedVerticesItems[s + 8] = dark.r;\n clippedVerticesItems[s + 9] = dark.g;\n clippedVerticesItems[s + 10] = dark.b;\n clippedVerticesItems[s + 11] = dark.a;\n }\n s += vertexSize;\n }\n s = clippedTriangles.length;\n var clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2));\n clipOutputCount--;\n for (var ii = 1; ii < clipOutputCount; ii++) {\n clippedTrianglesItems[s] = index;\n clippedTrianglesItems[s + 1] = (index + ii);\n clippedTrianglesItems[s + 2] = (index + ii + 1);\n s += 3;\n }\n index += clipOutputCount + 1;\n }\n else {\n var clippedVerticesItems = Utils.setArraySize(clippedVertices, s + 3 * vertexSize);\n clippedVerticesItems[s] = x1;\n clippedVerticesItems[s + 1] = y1;\n clippedVerticesItems[s + 2] = light.r;\n clippedVerticesItems[s + 3] = light.g;\n clippedVerticesItems[s + 4] = light.b;\n clippedVerticesItems[s + 5] = light.a;\n if (!twoColor) {\n clippedVerticesItems[s + 6] = u1;\n clippedVerticesItems[s + 7] = v1;\n clippedVerticesItems[s + 8] = x2;\n clippedVerticesItems[s + 9] = y2;\n clippedVerticesItems[s + 10] = light.r;\n clippedVerticesItems[s + 11] = light.g;\n clippedVerticesItems[s + 12] = light.b;\n clippedVerticesItems[s + 13] = light.a;\n clippedVerticesItems[s + 14] = u2;\n clippedVerticesItems[s + 15] = v2;\n clippedVerticesItems[s + 16] = x3;\n clippedVerticesItems[s + 17] = y3;\n clippedVerticesItems[s + 18] = light.r;\n clippedVerticesItems[s + 19] = light.g;\n clippedVerticesItems[s + 20] = light.b;\n clippedVerticesItems[s + 21] = light.a;\n clippedVerticesItems[s + 22] = u3;\n clippedVerticesItems[s + 23] = v3;\n }\n else {\n clippedVerticesItems[s + 6] = u1;\n clippedVerticesItems[s + 7] = v1;\n clippedVerticesItems[s + 8] = dark.r;\n clippedVerticesItems[s + 9] = dark.g;\n clippedVerticesItems[s + 10] = dark.b;\n clippedVerticesItems[s + 11] = dark.a;\n clippedVerticesItems[s + 12] = x2;\n clippedVerticesItems[s + 13] = y2;\n clippedVerticesItems[s + 14] = light.r;\n clippedVerticesItems[s + 15] = light.g;\n clippedVerticesItems[s + 16] = light.b;\n clippedVerticesItems[s + 17] = light.a;\n clippedVerticesItems[s + 18] = u2;\n clippedVerticesItems[s + 19] = v2;\n clippedVerticesItems[s + 20] = dark.r;\n clippedVerticesItems[s + 21] = dark.g;\n clippedVerticesItems[s + 22] = dark.b;\n clippedVerticesItems[s + 23] = dark.a;\n clippedVerticesItems[s + 24] = x3;\n clippedVerticesItems[s + 25] = y3;\n clippedVerticesItems[s + 26] = light.r;\n clippedVerticesItems[s + 27] = light.g;\n clippedVerticesItems[s + 28] = light.b;\n clippedVerticesItems[s + 29] = light.a;\n clippedVerticesItems[s + 30] = u3;\n clippedVerticesItems[s + 31] = v3;\n clippedVerticesItems[s + 32] = dark.r;\n clippedVerticesItems[s + 33] = dark.g;\n clippedVerticesItems[s + 34] = dark.b;\n clippedVerticesItems[s + 35] = dark.a;\n }\n s = clippedTriangles.length;\n var clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3);\n clippedTrianglesItems[s] = index;\n clippedTrianglesItems[s + 1] = (index + 1);\n clippedTrianglesItems[s + 2] = (index + 2);\n index += 3;\n continue outer;\n }\n }\n }\n };\n /** Clips the input triangle against the convex, clockwise clipping area. If the triangle lies entirely within the clipping\n * area, false is returned. The clipping area must duplicate the first vertex at the end of the vertices list. */\n SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) {\n var originalOutput = output;\n var clipped = false;\n // Avoid copy at the end.\n var input = null;\n if (clippingArea.length % 4 >= 2) {\n input = output;\n output = this.scratch;\n }\n else\n input = this.scratch;\n input.length = 0;\n input.push(x1);\n input.push(y1);\n input.push(x2);\n input.push(y2);\n input.push(x3);\n input.push(y3);\n input.push(x1);\n input.push(y1);\n output.length = 0;\n var clippingVertices = clippingArea;\n var clippingVerticesLast = clippingArea.length - 4;\n for (var i = 0;; i += 2) {\n var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1];\n var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3];\n var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2;\n var inputVertices = input;\n var inputVerticesLength = input.length - 2, outputStart = output.length;\n for (var ii = 0; ii < inputVerticesLength; ii += 2) {\n var inputX = inputVertices[ii], inputY = inputVertices[ii + 1];\n var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3];\n var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0;\n if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) {\n if (side2) { // v1 inside, v2 inside\n output.push(inputX2);\n output.push(inputY2);\n continue;\n }\n // v1 inside, v2 outside\n var c0 = inputY2 - inputY, c2 = inputX2 - inputX;\n var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY);\n if (Math.abs(s) > 0.000001) {\n var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s;\n output.push(edgeX + (edgeX2 - edgeX) * ua);\n output.push(edgeY + (edgeY2 - edgeY) * ua);\n }\n else {\n output.push(edgeX);\n output.push(edgeY);\n }\n }\n else if (side2) { // v1 outside, v2 inside\n var c0 = inputY2 - inputY, c2 = inputX2 - inputX;\n var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY);\n if (Math.abs(s) > 0.000001) {\n var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s;\n output.push(edgeX + (edgeX2 - edgeX) * ua);\n output.push(edgeY + (edgeY2 - edgeY) * ua);\n }\n else {\n output.push(edgeX);\n output.push(edgeY);\n }\n output.push(inputX2);\n output.push(inputY2);\n }\n clipped = true;\n }\n if (outputStart == output.length) { // All edges outside.\n originalOutput.length = 0;\n return true;\n }\n output.push(output[0]);\n output.push(output[1]);\n if (i == clippingVerticesLast)\n break;\n var temp = output;\n output = input;\n output.length = 0;\n input = temp;\n }\n if (originalOutput != output) {\n originalOutput.length = 0;\n for (var i = 0, n = output.length - 2; i < n; i++)\n originalOutput[i] = output[i];\n }\n else\n originalOutput.length = originalOutput.length - 2;\n return clipped;\n };\n SkeletonClipping.makeClockwise = function (polygon) {\n var vertices = polygon;\n var verticeslength = polygon.length;\n var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0;\n for (var i = 0, n = verticeslength - 3; i < n; i += 2) {\n p1x = vertices[i];\n p1y = vertices[i + 1];\n p2x = vertices[i + 2];\n p2y = vertices[i + 3];\n area += p1x * p2y - p2x * p1y;\n }\n if (area < 0)\n return;\n for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) {\n var x = vertices[i], y = vertices[i + 1];\n var other = lastX - i;\n vertices[i] = vertices[other];\n vertices[i + 1] = vertices[other + 1];\n vertices[other] = x;\n vertices[other + 1] = y;\n }\n };\n return SkeletonClipping;\n}());\nexport { SkeletonClipping };\n//# sourceMappingURL=SkeletonClipping.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Animation, AttachmentTimeline, RGBATimeline, RGBTimeline, AlphaTimeline, RGBA2Timeline, RGB2Timeline, RotateTimeline, TranslateTimeline, TranslateXTimeline, TranslateYTimeline, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, IkConstraintTimeline, TransformConstraintTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PathConstraintMixTimeline, DeformTimeline, DrawOrderTimeline, EventTimeline } from \"./Animation\";\nimport { BoneData, TransformMode } from \"./BoneData\";\nimport { EventData } from \"./EventData\";\nimport { Event } from \"./Event\";\nimport { IkConstraintData } from \"./IkConstraintData\";\nimport { PathConstraintData, PositionMode, SpacingMode, RotateMode } from \"./PathConstraintData\";\nimport { SkeletonData } from \"./SkeletonData\";\nimport { Skin } from \"./Skin\";\nimport { SlotData, BlendMode } from \"./SlotData\";\nimport { TransformConstraintData } from \"./TransformConstraintData\";\nimport { Utils, Color } from \"./Utils\";\n/** Loads skeleton data in the Spine JSON format.\n *\n * See [Spine JSON format](http://esotericsoftware.com/spine-json-format) and\n * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine\n * Runtimes Guide. */\nvar SkeletonJson = /** @class */ (function () {\n function SkeletonJson(attachmentLoader) {\n /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at\n * runtime than were used in Spine.\n *\n * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */\n this.scale = 1;\n this.linkedMeshes = new Array();\n this.attachmentLoader = attachmentLoader;\n }\n SkeletonJson.prototype.readSkeletonData = function (json) {\n var scale = this.scale;\n var skeletonData = new SkeletonData();\n var root = typeof (json) === \"string\" ? JSON.parse(json) : json;\n // Skeleton\n var skeletonMap = root.skeleton;\n if (skeletonMap) {\n skeletonData.hash = skeletonMap.hash;\n skeletonData.version = skeletonMap.spine;\n skeletonData.x = skeletonMap.x;\n skeletonData.y = skeletonMap.y;\n skeletonData.width = skeletonMap.width;\n skeletonData.height = skeletonMap.height;\n skeletonData.fps = skeletonMap.fps;\n skeletonData.imagesPath = skeletonMap.images;\n }\n // Bones\n if (root.bones) {\n for (var i = 0; i < root.bones.length; i++) {\n var boneMap = root.bones[i];\n var parent_1 = null;\n var parentName = getValue(boneMap, \"parent\", null);\n if (parentName)\n parent_1 = skeletonData.findBone(parentName);\n var data = new BoneData(skeletonData.bones.length, boneMap.name, parent_1);\n data.length = getValue(boneMap, \"length\", 0) * scale;\n data.x = getValue(boneMap, \"x\", 0) * scale;\n data.y = getValue(boneMap, \"y\", 0) * scale;\n data.rotation = getValue(boneMap, \"rotation\", 0);\n data.scaleX = getValue(boneMap, \"scaleX\", 1);\n data.scaleY = getValue(boneMap, \"scaleY\", 1);\n data.shearX = getValue(boneMap, \"shearX\", 0);\n data.shearY = getValue(boneMap, \"shearY\", 0);\n data.transformMode = Utils.enumValue(TransformMode, getValue(boneMap, \"transform\", \"Normal\"));\n data.skinRequired = getValue(boneMap, \"skin\", false);\n var color = getValue(boneMap, \"color\", null);\n if (color)\n data.color.setFromString(color);\n skeletonData.bones.push(data);\n }\n }\n // Slots.\n if (root.slots) {\n for (var i = 0; i < root.slots.length; i++) {\n var slotMap = root.slots[i];\n var boneData = skeletonData.findBone(slotMap.bone);\n var data = new SlotData(skeletonData.slots.length, slotMap.name, boneData);\n var color = getValue(slotMap, \"color\", null);\n if (color)\n data.color.setFromString(color);\n var dark = getValue(slotMap, \"dark\", null);\n if (dark)\n data.darkColor = Color.fromString(dark);\n data.attachmentName = getValue(slotMap, \"attachment\", null);\n data.blendMode = Utils.enumValue(BlendMode, getValue(slotMap, \"blend\", \"normal\"));\n skeletonData.slots.push(data);\n }\n }\n // IK constraints\n if (root.ik) {\n for (var i = 0; i < root.ik.length; i++) {\n var constraintMap = root.ik[i];\n var data = new IkConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (var ii = 0; ii < constraintMap.bones.length; ii++)\n data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));\n data.target = skeletonData.findBone(constraintMap.target);\n data.mix = getValue(constraintMap, \"mix\", 1);\n data.softness = getValue(constraintMap, \"softness\", 0) * scale;\n data.bendDirection = getValue(constraintMap, \"bendPositive\", true) ? 1 : -1;\n data.compress = getValue(constraintMap, \"compress\", false);\n data.stretch = getValue(constraintMap, \"stretch\", false);\n data.uniform = getValue(constraintMap, \"uniform\", false);\n skeletonData.ikConstraints.push(data);\n }\n }\n // Transform constraints.\n if (root.transform) {\n for (var i = 0; i < root.transform.length; i++) {\n var constraintMap = root.transform[i];\n var data = new TransformConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (var ii = 0; ii < constraintMap.bones.length; ii++)\n data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));\n var targetName = constraintMap.target;\n data.target = skeletonData.findBone(targetName);\n data.local = getValue(constraintMap, \"local\", false);\n data.relative = getValue(constraintMap, \"relative\", false);\n data.offsetRotation = getValue(constraintMap, \"rotation\", 0);\n data.offsetX = getValue(constraintMap, \"x\", 0) * scale;\n data.offsetY = getValue(constraintMap, \"y\", 0) * scale;\n data.offsetScaleX = getValue(constraintMap, \"scaleX\", 0);\n data.offsetScaleY = getValue(constraintMap, \"scaleY\", 0);\n data.offsetShearY = getValue(constraintMap, \"shearY\", 0);\n data.mixRotate = getValue(constraintMap, \"mixRotate\", 1);\n data.mixX = getValue(constraintMap, \"mixX\", 1);\n data.mixY = getValue(constraintMap, \"mixY\", data.mixX);\n data.mixScaleX = getValue(constraintMap, \"mixScaleX\", 1);\n data.mixScaleY = getValue(constraintMap, \"mixScaleY\", data.mixScaleX);\n data.mixShearY = getValue(constraintMap, \"mixShearY\", 1);\n skeletonData.transformConstraints.push(data);\n }\n }\n // Path constraints.\n if (root.path) {\n for (var i = 0; i < root.path.length; i++) {\n var constraintMap = root.path[i];\n var data = new PathConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (var ii = 0; ii < constraintMap.bones.length; ii++)\n data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));\n var targetName = constraintMap.target;\n data.target = skeletonData.findSlot(targetName);\n data.positionMode = Utils.enumValue(PositionMode, getValue(constraintMap, \"positionMode\", \"Percent\"));\n data.spacingMode = Utils.enumValue(SpacingMode, getValue(constraintMap, \"spacingMode\", \"Length\"));\n data.rotateMode = Utils.enumValue(RotateMode, getValue(constraintMap, \"rotateMode\", \"Tangent\"));\n data.offsetRotation = getValue(constraintMap, \"rotation\", 0);\n data.position = getValue(constraintMap, \"position\", 0);\n if (data.positionMode == PositionMode.Fixed)\n data.position *= scale;\n data.spacing = getValue(constraintMap, \"spacing\", 0);\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed)\n data.spacing *= scale;\n data.mixRotate = getValue(constraintMap, \"mixRotate\", 1);\n data.mixX = getValue(constraintMap, \"mixX\", 1);\n data.mixY = getValue(constraintMap, \"mixY\", data.mixX);\n skeletonData.pathConstraints.push(data);\n }\n }\n // Skins.\n if (root.skins) {\n for (var i = 0; i < root.skins.length; i++) {\n var skinMap = root.skins[i];\n var skin = new Skin(skinMap.name);\n if (skinMap.bones) {\n for (var ii = 0; ii < skinMap.bones.length; ii++)\n skin.bones.push(skeletonData.findBone(skinMap.bones[ii]));\n }\n if (skinMap.ik) {\n for (var ii = 0; ii < skinMap.ik.length; ii++)\n skin.constraints.push(skeletonData.findIkConstraint(skinMap.ik[ii]));\n }\n if (skinMap.transform) {\n for (var ii = 0; ii < skinMap.transform.length; ii++)\n skin.constraints.push(skeletonData.findTransformConstraint(skinMap.transform[ii]));\n }\n if (skinMap.path) {\n for (var ii = 0; ii < skinMap.path.length; ii++)\n skin.constraints.push(skeletonData.findPathConstraint(skinMap.path[ii]));\n }\n for (var slotName in skinMap.attachments) {\n var slot = skeletonData.findSlot(slotName);\n var slotMap = skinMap.attachments[slotName];\n for (var entryName in slotMap) {\n var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData);\n if (attachment)\n skin.setAttachment(slot.index, entryName, attachment);\n }\n }\n skeletonData.skins.push(skin);\n if (skin.name == \"default\")\n skeletonData.defaultSkin = skin;\n }\n }\n // Linked meshes.\n for (var i = 0, n = this.linkedMeshes.length; i < n; i++) {\n var linkedMesh = this.linkedMeshes[i];\n var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);\n var parent_2 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);\n linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_2 : linkedMesh.mesh;\n linkedMesh.mesh.setParentMesh(parent_2);\n linkedMesh.mesh.updateUVs();\n }\n this.linkedMeshes.length = 0;\n // Events.\n if (root.events) {\n for (var eventName in root.events) {\n var eventMap = root.events[eventName];\n var data = new EventData(eventName);\n data.intValue = getValue(eventMap, \"int\", 0);\n data.floatValue = getValue(eventMap, \"float\", 0);\n data.stringValue = getValue(eventMap, \"string\", \"\");\n data.audioPath = getValue(eventMap, \"audio\", null);\n if (data.audioPath) {\n data.volume = getValue(eventMap, \"volume\", 1);\n data.balance = getValue(eventMap, \"balance\", 0);\n }\n skeletonData.events.push(data);\n }\n }\n // Animations.\n if (root.animations) {\n for (var animationName in root.animations) {\n var animationMap = root.animations[animationName];\n this.readAnimation(animationMap, animationName, skeletonData);\n }\n }\n return skeletonData;\n };\n SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) {\n var scale = this.scale;\n name = getValue(map, \"name\", name);\n switch (getValue(map, \"type\", \"region\")) {\n case \"region\": {\n var path = getValue(map, \"path\", name);\n var region = this.attachmentLoader.newRegionAttachment(skin, name, path);\n if (!region)\n return null;\n region.path = path;\n region.x = getValue(map, \"x\", 0) * scale;\n region.y = getValue(map, \"y\", 0) * scale;\n region.scaleX = getValue(map, \"scaleX\", 1);\n region.scaleY = getValue(map, \"scaleY\", 1);\n region.rotation = getValue(map, \"rotation\", 0);\n region.width = map.width * scale;\n region.height = map.height * scale;\n var color = getValue(map, \"color\", null);\n if (color)\n region.color.setFromString(color);\n region.updateOffset();\n return region;\n }\n case \"boundingbox\": {\n var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\n if (!box)\n return null;\n this.readVertices(map, box, map.vertexCount << 1);\n var color = getValue(map, \"color\", null);\n if (color)\n box.color.setFromString(color);\n return box;\n }\n case \"mesh\":\n case \"linkedmesh\": {\n var path = getValue(map, \"path\", name);\n var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n if (!mesh)\n return null;\n mesh.path = path;\n var color = getValue(map, \"color\", null);\n if (color)\n mesh.color.setFromString(color);\n mesh.width = getValue(map, \"width\", 0) * scale;\n mesh.height = getValue(map, \"height\", 0) * scale;\n var parent_3 = getValue(map, \"parent\", null);\n if (parent_3) {\n this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, \"skin\", null), slotIndex, parent_3, getValue(map, \"deform\", true)));\n return mesh;\n }\n var uvs = map.uvs;\n this.readVertices(map, mesh, uvs.length);\n mesh.triangles = map.triangles;\n mesh.regionUVs = uvs;\n mesh.updateUVs();\n mesh.edges = getValue(map, \"edges\", null);\n mesh.hullLength = getValue(map, \"hull\", 0) * 2;\n return mesh;\n }\n case \"path\": {\n var path = this.attachmentLoader.newPathAttachment(skin, name);\n if (!path)\n return null;\n path.closed = getValue(map, \"closed\", false);\n path.constantSpeed = getValue(map, \"constantSpeed\", true);\n var vertexCount = map.vertexCount;\n this.readVertices(map, path, vertexCount << 1);\n var lengths = Utils.newArray(vertexCount / 3, 0);\n for (var i = 0; i < map.lengths.length; i++)\n lengths[i] = map.lengths[i] * scale;\n path.lengths = lengths;\n var color = getValue(map, \"color\", null);\n if (color)\n path.color.setFromString(color);\n return path;\n }\n case \"point\": {\n var point = this.attachmentLoader.newPointAttachment(skin, name);\n if (!point)\n return null;\n point.x = getValue(map, \"x\", 0) * scale;\n point.y = getValue(map, \"y\", 0) * scale;\n point.rotation = getValue(map, \"rotation\", 0);\n var color = getValue(map, \"color\", null);\n if (color)\n point.color.setFromString(color);\n return point;\n }\n case \"clipping\": {\n var clip = this.attachmentLoader.newClippingAttachment(skin, name);\n if (!clip)\n return null;\n var end = getValue(map, \"end\", null);\n if (end)\n clip.endSlot = skeletonData.findSlot(end);\n var vertexCount = map.vertexCount;\n this.readVertices(map, clip, vertexCount << 1);\n var color = getValue(map, \"color\", null);\n if (color)\n clip.color.setFromString(color);\n return clip;\n }\n }\n return null;\n };\n SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) {\n var scale = this.scale;\n attachment.worldVerticesLength = verticesLength;\n var vertices = map.vertices;\n if (verticesLength == vertices.length) {\n var scaledVertices = Utils.toFloatArray(vertices);\n if (scale != 1) {\n for (var i = 0, n = vertices.length; i < n; i++)\n scaledVertices[i] *= scale;\n }\n attachment.vertices = scaledVertices;\n return;\n }\n var weights = new Array();\n var bones = new Array();\n for (var i = 0, n = vertices.length; i < n;) {\n var boneCount = vertices[i++];\n bones.push(boneCount);\n for (var 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 SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) {\n var scale = this.scale;\n var timelines = new Array();\n // Slot timelines.\n if (map.slots) {\n for (var slotName in map.slots) {\n var slotMap = map.slots[slotName];\n var slotIndex = skeletonData.findSlotIndex(slotName);\n for (var timelineName in slotMap) {\n var timelineMap = slotMap[timelineName];\n if (!timelineMap)\n continue;\n if (timelineName == \"attachment\") {\n var timeline = new AttachmentTimeline(timelineMap.length, slotIndex);\n for (var frame = 0; frame < timelineMap.length; frame++) {\n var keyMap = timelineMap[frame];\n timeline.setFrame(frame, getValue(keyMap, \"time\", 0), keyMap.name);\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgba\") {\n var timeline = new RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.color);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color.a);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.color);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1);\n }\n time = time2;\n color = newColor;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgb\") {\n var timeline = new RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.color);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.color);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n }\n time = time2;\n color = newColor;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"alpha\") {\n timelines.push(readTimeline1(timelineMap, new AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1));\n }\n else if (timelineName == \"rgba2\") {\n var timeline = new RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.light);\n var color2 = Color.fromString(keyMap.dark);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color.a, color2.r, color2.g, color2.b);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.light);\n var newColor2 = Color.fromString(nextMap.dark);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.r, newColor2.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.g, newColor2.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 6, time, time2, color2.b, newColor2.b, 1);\n }\n time = time2;\n color = newColor;\n color2 = newColor2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgb2\") {\n var timeline = new RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.light);\n var color2 = Color.fromString(keyMap.dark);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.light);\n var newColor2 = Color.fromString(nextMap.dark);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1);\n }\n time = time2;\n color = newColor;\n color2 = newColor2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n // Bone timelines.\n if (map.bones) {\n for (var boneName in map.bones) {\n var boneMap = map.bones[boneName];\n var boneIndex = skeletonData.findBoneIndex(boneName);\n for (var timelineName in boneMap) {\n var timelineMap = boneMap[timelineName];\n if (timelineMap.length == 0)\n continue;\n if (timelineName === \"rotate\") {\n timelines.push(readTimeline1(timelineMap, new RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1));\n }\n else if (timelineName === \"translate\") {\n var timeline = new TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 0, scale));\n }\n else if (timelineName === \"translatex\") {\n var timeline = new TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, scale));\n }\n else if (timelineName === \"translatey\") {\n var timeline = new TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, scale));\n }\n else if (timelineName === \"scale\") {\n var timeline = new ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 1, 1));\n }\n else if (timelineName === \"scalex\") {\n var timeline = new ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 1, 1));\n }\n else if (timelineName === \"scaley\") {\n var timeline = new ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 1, 1));\n }\n else if (timelineName === \"shear\") {\n var timeline = new ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 0, 1));\n }\n else if (timelineName === \"shearx\") {\n var timeline = new ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, 1));\n }\n else if (timelineName === \"sheary\") {\n var timeline = new ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, 1));\n }\n }\n }\n }\n // IK constraint timelines.\n if (map.ik) {\n for (var constraintName in map.ik) {\n var constraintMap = map.ik[constraintName];\n var keyMap = constraintMap[0];\n if (!keyMap)\n continue;\n var constraint = skeletonData.findIkConstraint(constraintName);\n var constraintIndex = skeletonData.ikConstraints.indexOf(constraint);\n var timeline = new IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex);\n var time = getValue(keyMap, \"time\", 0);\n var mix = getValue(keyMap, \"mix\", 1);\n var softness = getValue(keyMap, \"softness\", 0) * scale;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mix, softness, getValue(keyMap, \"bendPositive\", true) ? 1 : -1, getValue(keyMap, \"compress\", false), getValue(keyMap, \"stretch\", false));\n var nextMap = constraintMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var mix2 = getValue(nextMap, \"mix\", 1);\n var softness2 = getValue(nextMap, \"softness\", 0) * scale;\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale);\n }\n time = time2;\n mix = mix2;\n softness = softness2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n // Transform constraint timelines.\n if (map.transform) {\n for (var constraintName in map.transform) {\n var timelineMap = map.transform[constraintName];\n var keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n var constraint = skeletonData.findTransformConstraint(constraintName);\n var constraintIndex = skeletonData.transformConstraints.indexOf(constraint);\n var timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex);\n var time = getValue(keyMap, \"time\", 0);\n var mixRotate = getValue(keyMap, \"mixRotate\", 1);\n var mixX = getValue(keyMap, \"mixX\", 1);\n var mixY = getValue(keyMap, \"mixY\", mixX);\n var mixScaleX = getValue(keyMap, \"mixScaleX\", 1);\n var mixScaleY = getValue(keyMap, \"mixScaleY\", mixScaleX);\n var mixShearY = getValue(keyMap, \"mixShearY\", 1);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var mixRotate2 = getValue(nextMap, \"mixRotate\", 1);\n var mixX2 = getValue(nextMap, \"mixX\", 1);\n var mixY2 = getValue(nextMap, \"mixY\", mixX2);\n var mixScaleX2 = getValue(nextMap, \"mixScaleX\", 1);\n var mixScaleY2 = getValue(nextMap, \"mixScaleY\", mixScaleX2);\n var mixShearY2 = getValue(nextMap, \"mixShearY\", 1);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n mixScaleX = mixScaleX2;\n mixScaleY = mixScaleY2;\n mixScaleX = mixScaleX2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n // Path constraint timelines.\n if (map.path) {\n for (var constraintName in map.path) {\n var constraintMap = map.path[constraintName];\n var constraint = skeletonData.findPathConstraint(constraintName);\n var constraintIndex = skeletonData.pathConstraints.indexOf(constraint);\n for (var timelineName in constraintMap) {\n var timelineMap = constraintMap[timelineName];\n var keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n if (timelineName === \"position\") {\n var timeline = new PathConstraintPositionTimeline(timelineMap.length, timelineMap.length, constraintIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.positionMode == PositionMode.Fixed ? scale : 1));\n }\n else if (timelineName === \"spacing\") {\n var timeline = new PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, constraintIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.spacingMode == SpacingMode.Length || constraint.spacingMode == SpacingMode.Fixed ? scale : 1));\n }\n else if (timelineName === \"mix\") {\n var timeline = new PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, constraintIndex);\n var time = getValue(keyMap, \"time\", 0);\n var mixRotate = getValue(keyMap, \"mixRotate\", 1);\n var mixX = getValue(keyMap, \"mixX\", 1);\n var mixY = getValue(keyMap, \"mixY\", mixX);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var mixRotate2 = getValue(nextMap, \"mixRotate\", 1);\n var mixX2 = getValue(nextMap, \"mixX\", 1);\n var mixY2 = getValue(nextMap, \"mixY\", mixX2);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n // Deform timelines.\n if (map.deform) {\n for (var deformName in map.deform) {\n var deformMap = map.deform[deformName];\n var skin = skeletonData.findSkin(deformName);\n for (var slotName in deformMap) {\n var slotMap = deformMap[slotName];\n var slotIndex = skeletonData.findSlotIndex(slotName);\n for (var timelineName in slotMap) {\n var timelineMap = slotMap[timelineName];\n var keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n var attachment = skin.getAttachment(slotIndex, timelineName);\n var weighted = attachment.bones;\n var vertices = attachment.vertices;\n var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;\n var timeline = new DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment);\n var time = getValue(keyMap, \"time\", 0);\n for (var frame = 0, bezier = 0;; frame++) {\n var deform = void 0;\n var verticesValue = getValue(keyMap, \"vertices\", null);\n if (!verticesValue)\n deform = weighted ? Utils.newFloatArray(deformLength) : vertices;\n else {\n deform = Utils.newFloatArray(deformLength);\n var start = getValue(keyMap, \"offset\", 0);\n Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length);\n if (scale != 1) {\n for (var i = start, n = i + verticesValue.length; i < n; i++)\n deform[i] *= scale;\n }\n if (!weighted) {\n for (var i = 0; i < deformLength; i++)\n deform[i] += vertices[i];\n }\n }\n timeline.setFrame(frame, time, deform);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var curve = keyMap.curve;\n if (curve)\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1);\n time = time2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n // Draw order timelines.\n if (map.drawOrder) {\n var timeline = new DrawOrderTimeline(map.drawOrder.length);\n var slotCount = skeletonData.slots.length;\n var frame = 0;\n for (var i = 0; i < map.drawOrder.length; i++, frame++) {\n var drawOrderMap = map.drawOrder[i];\n var drawOrder = null;\n var offsets = getValue(drawOrderMap, \"offsets\", null);\n if (offsets) {\n drawOrder = Utils.newArray(slotCount, -1);\n var unchanged = Utils.newArray(slotCount - offsets.length, 0);\n var originalIndex = 0, unchangedIndex = 0;\n for (var ii = 0; ii < offsets.length; ii++) {\n var offsetMap = offsets[ii];\n var slotIndex = skeletonData.findSlotIndex(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 (var ii = slotCount - 1; ii >= 0; ii--)\n if (drawOrder[ii] == -1)\n drawOrder[ii] = unchanged[--unchangedIndex];\n }\n timeline.setFrame(frame, getValue(drawOrderMap, \"time\", 0), drawOrder);\n }\n timelines.push(timeline);\n }\n // Event timelines.\n if (map.events) {\n var timeline = new EventTimeline(map.events.length);\n var frame = 0;\n for (var i = 0; i < map.events.length; i++, frame++) {\n var eventMap = map.events[i];\n var eventData = skeletonData.findEvent(eventMap.name);\n var event_1 = new Event(Utils.toSinglePrecision(getValue(eventMap, \"time\", 0)), eventData);\n event_1.intValue = getValue(eventMap, \"int\", eventData.intValue);\n event_1.floatValue = getValue(eventMap, \"float\", eventData.floatValue);\n event_1.stringValue = getValue(eventMap, \"string\", eventData.stringValue);\n if (event_1.data.audioPath) {\n event_1.volume = getValue(eventMap, \"volume\", 1);\n event_1.balance = getValue(eventMap, \"balance\", 0);\n }\n timeline.setFrame(frame, event_1);\n }\n timelines.push(timeline);\n }\n var duration = 0;\n for (var i = 0, n = timelines.length; i < n; i++)\n duration = Math.max(duration, timelines[i].getDuration());\n skeletonData.animations.push(new Animation(name, timelines, duration));\n };\n return SkeletonJson;\n}());\nexport { SkeletonJson };\nvar LinkedMesh = /** @class */ (function () {\n function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) {\n this.mesh = mesh;\n this.skin = skin;\n this.slotIndex = slotIndex;\n this.parent = parent;\n this.inheritDeform = inheritDeform;\n }\n return LinkedMesh;\n}());\nfunction readTimeline1(keys, timeline, defaultValue, scale) {\n var keyMap = keys[0];\n var time = getValue(keyMap, \"time\", 0);\n var value = getValue(keyMap, \"value\", defaultValue) * scale;\n var bezier = 0;\n for (var frame = 0;; frame++) {\n timeline.setFrame(frame, time, value);\n var nextMap = keys[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n return timeline;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var value2 = getValue(nextMap, \"value\", defaultValue) * scale;\n if (keyMap.curve)\n bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale);\n time = time2;\n value = value2;\n keyMap = nextMap;\n }\n}\nfunction readTimeline2(keys, timeline, name1, name2, defaultValue, scale) {\n var keyMap = keys[0];\n var time = getValue(keyMap, \"time\", 0);\n var value1 = getValue(keyMap, name1, defaultValue) * scale;\n var value2 = getValue(keyMap, name2, defaultValue) * scale;\n var bezier = 0;\n for (var frame = 0;; frame++) {\n timeline.setFrame(frame, time, value1, value2);\n var nextMap = keys[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n return timeline;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var nvalue1 = getValue(nextMap, name1, defaultValue) * scale;\n var nvalue2 = getValue(nextMap, name2, defaultValue) * scale;\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale);\n }\n time = time2;\n value1 = nvalue1;\n value2 = nvalue2;\n keyMap = nextMap;\n }\n}\nfunction readCurve(curve, timeline, bezier, frame, value, time1, time2, value1, value2, scale) {\n if (curve == \"stepped\") {\n timeline.setStepped(frame);\n return bezier;\n }\n var i = value << 2;\n var cx1 = curve[i];\n var cy1 = curve[i + 1] * scale;\n var cx2 = curve[i + 2];\n var cy2 = curve[i + 3] * scale;\n timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2);\n return bezier + 1;\n}\nfunction getValue(map, property, defaultValue) {\n return map[property] !== undefined ? map[property] : defaultValue;\n}\n//# sourceMappingURL=SkeletonJson.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n(function () {\n if (typeof Math.fround === \"undefined\") {\n Math.fround = (function (array) {\n return function (x) {\n return array[0] = x, array[0];\n };\n })(new Float32Array(1));\n }\n})();\nexport {};\n//# sourceMappingURL=polyfills.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { MathUtils } from \"../Utils\";\nvar JitterEffect = /** @class */ (function () {\n function JitterEffect(jitterX, jitterY) {\n this.jitterX = 0;\n this.jitterY = 0;\n this.jitterX = jitterX;\n this.jitterY = jitterY;\n }\n JitterEffect.prototype.begin = function (skeleton) {\n };\n JitterEffect.prototype.transform = function (position, uv, light, dark) {\n position.x += MathUtils.randomTriangular(-this.jitterX, this.jitterY);\n position.y += MathUtils.randomTriangular(-this.jitterX, this.jitterY);\n };\n JitterEffect.prototype.end = function () {\n };\n return JitterEffect;\n}());\nexport { JitterEffect };\n//# sourceMappingURL=JitterEffect.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { PowOut, MathUtils } from \"../Utils\";\nvar SwirlEffect = /** @class */ (function () {\n function SwirlEffect(radius) {\n this.centerX = 0;\n this.centerY = 0;\n this.radius = 0;\n this.angle = 0;\n this.worldX = 0;\n this.worldY = 0;\n this.radius = radius;\n }\n SwirlEffect.prototype.begin = function (skeleton) {\n this.worldX = skeleton.x + this.centerX;\n this.worldY = skeleton.y + this.centerY;\n };\n SwirlEffect.prototype.transform = function (position, uv, light, dark) {\n var radAngle = this.angle * MathUtils.degreesToRadians;\n var x = position.x - this.worldX;\n var y = position.y - this.worldY;\n var dist = Math.sqrt(x * x + y * y);\n if (dist < this.radius) {\n var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius);\n var cos = Math.cos(theta);\n var sin = Math.sin(theta);\n position.x = cos * x - sin * y + this.worldX;\n position.y = sin * x + cos * y + this.worldY;\n }\n };\n SwirlEffect.prototype.end = function () {\n };\n SwirlEffect.interpolation = new PowOut(2);\n return SwirlEffect;\n}());\nexport { SwirlEffect };\n//# sourceMappingURL=SwirlEffect.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Texture } from \"../../spine-core/dist/index\";\nvar CanvasTexture = /** @class */ (function (_super) {\n __extends(CanvasTexture, _super);\n function CanvasTexture(image) {\n return _super.call(this, image) || this;\n }\n CanvasTexture.prototype.setFilters = function (minFilter, magFilter) { };\n CanvasTexture.prototype.setWraps = function (uWrap, vWrap) { };\n CanvasTexture.prototype.dispose = function () { };\n return CanvasTexture;\n}(Texture));\nexport { CanvasTexture };\n//# sourceMappingURL=CanvasTexture.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AssetManagerBase } from \"../../spine-core/dist/index\";\nimport { CanvasTexture } from \"./CanvasTexture\";\nvar AssetManager = /** @class */ (function (_super) {\n __extends(AssetManager, _super);\n function AssetManager(pathPrefix, downloader) {\n if (pathPrefix === void 0) { pathPrefix = \"\"; }\n if (downloader === void 0) { downloader = null; }\n return _super.call(this, function (image) { return new CanvasTexture(image); }, pathPrefix, downloader) || this;\n }\n return AssetManager;\n}(AssetManagerBase));\nexport { AssetManager };\n//# sourceMappingURL=AssetManager.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Utils, Color, RegionAttachment, MeshAttachment } from \"../../spine-core/dist/index\";\nvar SkeletonRenderer = /** @class */ (function () {\n function SkeletonRenderer(context) {\n this.triangleRendering = false;\n this.debugRendering = false;\n this.vertices = Utils.newFloatArray(8 * 1024);\n this.tempColor = new Color();\n this.ctx = context;\n }\n SkeletonRenderer.prototype.draw = function (skeleton) {\n if (this.triangleRendering)\n this.drawTriangles(skeleton);\n else\n this.drawImages(skeleton);\n };\n SkeletonRenderer.prototype.drawImages = function (skeleton) {\n var ctx = this.ctx;\n var color = this.tempColor;\n var skeletonColor = skeleton.color;\n var drawOrder = skeleton.drawOrder;\n if (this.debugRendering)\n ctx.strokeStyle = \"green\";\n for (var i = 0, n = drawOrder.length; i < n; i++) {\n var slot = drawOrder[i];\n var bone = slot.bone;\n if (!bone.active)\n continue;\n var attachment = slot.getAttachment();\n if (!(attachment instanceof RegionAttachment))\n continue;\n var region = attachment.region;\n var image = region.page.texture.getImage();\n var slotColor = slot.color;\n var regionColor = attachment.color;\n color.set(skeletonColor.r * slotColor.r * regionColor.r, skeletonColor.g * slotColor.g * regionColor.g, skeletonColor.b * slotColor.b * regionColor.b, skeletonColor.a * slotColor.a * regionColor.a);\n ctx.save();\n ctx.transform(bone.a, bone.c, bone.b, bone.d, bone.worldX, bone.worldY);\n ctx.translate(attachment.offset[0], attachment.offset[1]);\n ctx.rotate(attachment.rotation * Math.PI / 180);\n var atlasScale = attachment.width / region.originalWidth;\n ctx.scale(atlasScale * attachment.scaleX, atlasScale * attachment.scaleY);\n var w = region.width, h = region.height;\n ctx.translate(w / 2, h / 2);\n if (attachment.region.degrees == 90) {\n var t = w;\n w = h;\n h = t;\n ctx.rotate(-Math.PI / 2);\n }\n ctx.scale(1, -1);\n ctx.translate(-w / 2, -h / 2);\n if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) {\n ctx.globalAlpha = color.a;\n // experimental tinting via compositing, doesn't work\n // ctx.globalCompositeOperation = \"source-atop\";\n // ctx.fillStyle = \"rgba(\" + (color.r * 255 | 0) + \", \" + (color.g * 255 | 0) + \", \" + (color.b * 255 | 0) + \", \" + color.a + \")\";\n // ctx.fillRect(0, 0, w, h);\n }\n ctx.drawImage(image, region.x, region.y, w, h, 0, 0, w, h);\n if (this.debugRendering)\n ctx.strokeRect(0, 0, w, h);\n ctx.restore();\n }\n };\n SkeletonRenderer.prototype.drawTriangles = function (skeleton) {\n var ctx = this.ctx;\n var color = this.tempColor;\n var skeletonColor = skeleton.color;\n var drawOrder = skeleton.drawOrder;\n var blendMode = null;\n var vertices = this.vertices;\n var triangles = null;\n for (var i = 0, n = drawOrder.length; i < n; i++) {\n var slot = drawOrder[i];\n var attachment = slot.getAttachment();\n var texture = void 0;\n var region = void 0;\n if (attachment instanceof RegionAttachment) {\n var regionAttachment = attachment;\n vertices = this.computeRegionVertices(slot, regionAttachment, false);\n triangles = SkeletonRenderer.QUAD_TRIANGLES;\n region = regionAttachment.region;\n texture = region.page.texture.getImage();\n }\n else if (attachment instanceof MeshAttachment) {\n var mesh = attachment;\n vertices = this.computeMeshVertices(slot, mesh, false);\n triangles = mesh.triangles;\n texture = mesh.region.renderObject.page.texture.getImage();\n }\n else\n continue;\n if (texture) {\n if (slot.data.blendMode != blendMode)\n blendMode = slot.data.blendMode;\n var slotColor = slot.color;\n var attachmentColor = attachment.color;\n color.set(skeletonColor.r * slotColor.r * attachmentColor.r, skeletonColor.g * slotColor.g * attachmentColor.g, skeletonColor.b * slotColor.b * attachmentColor.b, skeletonColor.a * slotColor.a * attachmentColor.a);\n if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) {\n ctx.globalAlpha = color.a;\n // experimental tinting via compositing, doesn't work\n // ctx.globalCompositeOperation = \"source-atop\";\n // ctx.fillStyle = \"rgba(\" + (color.r * 255 | 0) + \", \" + (color.g * 255 | 0) + \", \" + (color.b * 255 | 0) + \", \" + color.a + \")\";\n // ctx.fillRect(0, 0, w, h);\n }\n for (var j = 0; j < triangles.length; j += 3) {\n var t1 = triangles[j] * 8, t2 = triangles[j + 1] * 8, t3 = triangles[j + 2] * 8;\n var x0 = vertices[t1], y0 = vertices[t1 + 1], u0 = vertices[t1 + 6], v0 = vertices[t1 + 7];\n var x1 = vertices[t2], y1 = vertices[t2 + 1], u1 = vertices[t2 + 6], v1 = vertices[t2 + 7];\n var x2 = vertices[t3], y2 = vertices[t3 + 1], u2 = vertices[t3 + 6], v2 = vertices[t3 + 7];\n this.drawTriangle(texture, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2);\n if (this.debugRendering) {\n ctx.strokeStyle = \"green\";\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x0, y0);\n ctx.stroke();\n }\n }\n }\n }\n this.ctx.globalAlpha = 1;\n };\n // Adapted from http://extremelysatisfactorytotalitarianism.com/blog/?p=2120\n // Apache 2 licensed\n SkeletonRenderer.prototype.drawTriangle = function (img, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2) {\n var ctx = this.ctx;\n u0 *= img.width;\n v0 *= img.height;\n u1 *= img.width;\n v1 *= img.height;\n u2 *= img.width;\n v2 *= img.height;\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.closePath();\n x1 -= x0;\n y1 -= y0;\n x2 -= x0;\n y2 -= y0;\n u1 -= u0;\n v1 -= v0;\n u2 -= u0;\n v2 -= v0;\n var det = 1 / (u1 * v2 - u2 * v1), \n // linear transformation\n a = (v2 * x1 - v1 * x2) * det, b = (v2 * y1 - v1 * y2) * det, c = (u1 * x2 - u2 * x1) * det, d = (u1 * y2 - u2 * y1) * det, \n // translation\n e = x0 - a * u0 - c * v0, f = y0 - b * u0 - d * v0;\n ctx.save();\n ctx.transform(a, b, c, d, e, f);\n ctx.clip();\n ctx.drawImage(img, 0, 0);\n ctx.restore();\n };\n SkeletonRenderer.prototype.computeRegionVertices = function (slot, region, pma) {\n var skeletonColor = slot.bone.skeleton.color;\n var slotColor = slot.color;\n var regionColor = region.color;\n var alpha = skeletonColor.a * slotColor.a * regionColor.a;\n var multiplier = pma ? alpha : 1;\n var color = this.tempColor;\n color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha);\n region.computeWorldVertices(slot.bone, this.vertices, 0, SkeletonRenderer.VERTEX_SIZE);\n var vertices = this.vertices;\n var uvs = region.uvs;\n vertices[RegionAttachment.C1R] = color.r;\n vertices[RegionAttachment.C1G] = color.g;\n vertices[RegionAttachment.C1B] = color.b;\n vertices[RegionAttachment.C1A] = color.a;\n vertices[RegionAttachment.U1] = uvs[0];\n vertices[RegionAttachment.V1] = uvs[1];\n vertices[RegionAttachment.C2R] = color.r;\n vertices[RegionAttachment.C2G] = color.g;\n vertices[RegionAttachment.C2B] = color.b;\n vertices[RegionAttachment.C2A] = color.a;\n vertices[RegionAttachment.U2] = uvs[2];\n vertices[RegionAttachment.V2] = uvs[3];\n vertices[RegionAttachment.C3R] = color.r;\n vertices[RegionAttachment.C3G] = color.g;\n vertices[RegionAttachment.C3B] = color.b;\n vertices[RegionAttachment.C3A] = color.a;\n vertices[RegionAttachment.U3] = uvs[4];\n vertices[RegionAttachment.V3] = uvs[5];\n vertices[RegionAttachment.C4R] = color.r;\n vertices[RegionAttachment.C4G] = color.g;\n vertices[RegionAttachment.C4B] = color.b;\n vertices[RegionAttachment.C4A] = color.a;\n vertices[RegionAttachment.U4] = uvs[6];\n vertices[RegionAttachment.V4] = uvs[7];\n return vertices;\n };\n SkeletonRenderer.prototype.computeMeshVertices = function (slot, mesh, pma) {\n var skeletonColor = slot.bone.skeleton.color;\n var slotColor = slot.color;\n var regionColor = mesh.color;\n var alpha = skeletonColor.a * slotColor.a * regionColor.a;\n var multiplier = pma ? alpha : 1;\n var color = this.tempColor;\n color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha);\n var vertexCount = mesh.worldVerticesLength / 2;\n var vertices = this.vertices;\n if (vertices.length < mesh.worldVerticesLength)\n this.vertices = vertices = Utils.newFloatArray(mesh.worldVerticesLength);\n mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, SkeletonRenderer.VERTEX_SIZE);\n var uvs = mesh.uvs;\n for (var i = 0, u = 0, v = 2; i < vertexCount; i++) {\n vertices[v++] = color.r;\n vertices[v++] = color.g;\n vertices[v++] = color.b;\n vertices[v++] = color.a;\n vertices[v++] = uvs[u++];\n vertices[v++] = uvs[u++];\n v += 2;\n }\n return vertices;\n };\n SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0];\n SkeletonRenderer.VERTEX_SIZE = 2 + 2 + 4;\n return SkeletonRenderer;\n}());\nexport { SkeletonRenderer };\n//# sourceMappingURL=SkeletonRenderer.js.map","import { AssetManager } from \"./AssetManager\";\nimport { CanvasTexture } from \"./CanvasTexture\";\nimport { SkeletonRenderer } from \"./SkeletonRenderer\";\nexport * from \"./AssetManager\";\nexport * from \"./CanvasTexture\";\nexport * from \"./SkeletonRenderer\";\nexport * from \"../../spine-core/dist/index\";\nif (globalThis.spine) {\n globalThis.spine.canvas = {\n AssetManager: AssetManager,\n CanvasTexture: CanvasTexture,\n SkeletonRenderer: SkeletonRenderer\n };\n}\n//# sourceMappingURL=index.js.map"],"names":["__extends","this","MixBlend","MixDirection","EventType","TextureFilter","TextureWrap","TransformMode","PositionMode","SpacingMode","RotateMode","BlendMode","LinkedMesh","readTimeline1","readTimeline2"],"mappings":"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,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,OAAO,QAAQ,CAAC;IACxB,KAAK,CAAC;IACN,IAAI,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;IAChF,QAAQ,IAAI,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACrD,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;IACnC,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;IACrC,QAAQ,IAAI,KAAK,GAAG,aAAa,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAClE,QAAQ,IAAI,UAAU,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IACzC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;IACnC,QAAQ,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,UAAU,EAAE,aAAa,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,UAAU,EAAE,aAAa,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7M,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;IACvD,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACrC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB;IACtD,YAAY,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrF,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAChH,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IAC3B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;IAC5D,YAAY,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACpC,YAAY,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACpC,YAAY,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACpC,YAAY,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACpC,YAAY,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACrC,YAAY,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACrC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS;IACT,QAAQ,OAAO,QAAQ,CAAC;IACxB,KAAK,CAAC;IACN,IAAI,gBAAgB,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,IAAI,gBAAgB,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,OAAO,gBAAgB,CAAC;IAC5B,CAAC,EAAE;;ICrPH,IAAI,UAAU,CAAC,KAAK,EAAE;IACtB,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG;IAC9B,QAAQ,YAAY,EAAE,YAAY;IAClC,QAAQ,aAAa,EAAE,aAAa;IACpC,QAAQ,gBAAgB,EAAE,gBAAgB;IAC1C,KAAK,CAAC;IACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/spine-ts/build/spine-core.d.ts b/spine-ts/build/spine-core.d.ts index daa9771f7..14e5601a1 100644 --- a/spine-ts/build/spine-core.d.ts +++ b/spine-ts/build/spine-core.d.ts @@ -1,1258 +1,3299 @@ -declare module spine { - class Animation { - name: string; - timelines: Array; - timelineIds: StringSet; - duration: number; - constructor(name: string, timelines: Array, duration: number); - setTimelines(timelines: Array): void; - hasTimeline(ids: string[]): boolean; - apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - enum MixBlend { - setup = 0, - first = 1, - replace = 2, - add = 3 - } - enum MixDirection { - mixIn = 0, - mixOut = 1 - } - abstract class Timeline { - propertyIds: string[]; - frames: ArrayLike; - constructor(frameCount: number, propertyIds: string[]); - getPropertyIds(): string[]; - getFrameEntries(): number; - getFrameCount(): number; - getDuration(): number; - abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - static search1(frames: ArrayLike, time: number): number; - static search(frames: ArrayLike, time: number, step: number): number; - } - interface BoneTimeline { - boneIndex: number; - } - interface SlotTimeline { - slotIndex: number; - } - abstract class CurveTimeline extends Timeline { - protected curves: ArrayLike; - constructor(frameCount: number, bezierCount: number, propertyIds: string[]); - setLinear(frame: number): void; - setStepped(frame: number): void; - shrink(bezierCount: number): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number; - } - abstract class CurveTimeline1 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value: number): void; - getCurveValue(time: number): number; - } - abstract class CurveTimeline2 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId1: string, propertyId2: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value1: number, value2: number): void; - } - class RotateTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBATimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AlphaTimeline extends CurveTimeline1 implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBA2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGB2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AttachmentTimeline extends Timeline implements SlotTimeline { - slotIndex: number; - attachmentNames: Array; - constructor(frameCount: number, slotIndex: number); - getFrameCount(): number; - setFrame(frame: number, time: number, attachmentName: string): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; - } - class DeformTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - attachment: VertexAttachment; - vertices: Array>; - constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment); - getFrameCount(): number; - setFrame(frame: number, time: number, vertices: ArrayLike): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getCurvePercent(time: number, frame: number): number; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class EventTimeline extends Timeline { - static propertyIds: string[]; - events: Array; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, event: Event): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class DrawOrderTimeline extends Timeline { - static propertyIds: string[]; - drawOrders: Array>; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, time: number, drawOrder: Array): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class IkConstraintTimeline extends CurveTimeline { - ikConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TransformConstraintTimeline extends CurveTimeline { - transformConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintPositionTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintSpacingTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintMixTimeline extends CurveTimeline { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +/** The base class for all constraint datas. */ +declare abstract class ConstraintData { + name: string; + order: number; + skinRequired: boolean; + constructor(name: string, order: number, skinRequired: boolean); } -declare module spine { - class AnimationState { - private static emptyAnimation; - data: AnimationStateData; - tracks: TrackEntry[]; - timeScale: number; - unkeyedState: number; - events: Event[]; - listeners: AnimationStateListener[]; - queue: EventQueue; - propertyIDs: StringSet; - animationsChanged: boolean; - trackEntryPool: Pool; - constructor(data: AnimationStateData); - update(delta: number): void; - updateMixingFrom(to: TrackEntry, delta: number): boolean; - apply(skeleton: Skeleton): boolean; - applyMixingFrom(to: TrackEntry, skeleton: Skeleton, blend: MixBlend): number; - applyAttachmentTimeline(timeline: AttachmentTimeline, skeleton: Skeleton, time: number, blend: MixBlend, attachments: boolean): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string, attachments: boolean): void; - applyRotateTimeline(timeline: RotateTimeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array, i: number, firstFrame: boolean): void; - queueEvents(entry: TrackEntry, animationTime: number): void; - clearTracks(): void; - clearTrack(trackIndex: number): void; - setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; - setAnimation(trackIndex: number, animationName: string, loop?: boolean): TrackEntry; - setAnimationWith(trackIndex: number, animation: Animation, loop?: boolean): TrackEntry; - addAnimation(trackIndex: number, animationName: string, loop?: boolean, delay?: number): TrackEntry; - addAnimationWith(trackIndex: number, animation: Animation, loop?: boolean, delay?: number): TrackEntry; - setEmptyAnimation(trackIndex: number, mixDuration?: number): TrackEntry; - addEmptyAnimation(trackIndex: number, mixDuration?: number, delay?: number): TrackEntry; - setEmptyAnimations(mixDuration?: number): void; - expandToIndex(index: number): TrackEntry; - trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; - clearNext(entry: TrackEntry): void; - _animationsChanged(): void; - computeHold(entry: TrackEntry): void; - getCurrent(trackIndex: number): TrackEntry; - addListener(listener: AnimationStateListener): void; - removeListener(listener: AnimationStateListener): void; - clearListeners(): void; - clearListenerNotifications(): void; - } - class TrackEntry { - animation: Animation; - previous: TrackEntry; - next: TrackEntry; - mixingFrom: TrackEntry; - mixingTo: TrackEntry; - listener: AnimationStateListener; - trackIndex: number; - loop: boolean; - holdPrevious: boolean; - reverse: boolean; - eventThreshold: number; - attachmentThreshold: number; - drawOrderThreshold: number; - animationStart: number; - animationEnd: number; - animationLast: number; - nextAnimationLast: number; - delay: number; - trackTime: number; - trackLast: number; - nextTrackLast: number; - trackEnd: number; - timeScale: number; - alpha: number; - mixTime: number; - mixDuration: number; - interruptAlpha: number; - totalAlpha: number; - mixBlend: MixBlend; - timelineMode: number[]; - timelineHoldMix: TrackEntry[]; - timelinesRotation: number[]; - reset(): void; - getAnimationTime(): number; - setAnimationLast(animationLast: number): void; - isComplete(): boolean; - resetRotationDirections(): void; - getTrackComplete(): number; - } - class EventQueue { - objects: Array; - drainDisabled: boolean; - animState: AnimationState; - constructor(animState: AnimationState); - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - drain(): void; - clear(): void; - } - enum EventType { - start = 0, - interrupt = 1, - end = 2, - dispose = 3, - complete = 4, - event = 5 - } - interface AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } - abstract class AnimationStateAdapter implements AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores the setup pose for an {@link IkConstraint}. + *

        + * See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */ +declare class IkConstraintData extends ConstraintData { + /** The bones that are constrained by this IK constraint. */ + bones: BoneData[]; + /** The bone that is the IK target. */ + target: BoneData; + /** Controls the bend direction of the IK bones, either 1 or -1. */ + bendDirection: number; + /** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */ + compress: boolean; + /** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained + * and the parent bone has local nonuniform scale, stretch is not applied. */ + stretch: boolean; + /** When true, only a single bone is being constrained, and {@link #getCompress()} or {@link #getStretch()} is used, the bone + * is scaled on both the X and Y axes. */ + uniform: boolean; + /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */ + mix: number; + /** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */ + softness: number; + constructor(name: string); } -declare module spine { - class AnimationStateData { - skeletonData: SkeletonData; - animationToMixTime: Map; - defaultMix: number; - constructor(skeletonData: SkeletonData); - setMix(fromName: string, toName: string, duration: number): void; - setMixWith(from: Animation, to: Animation, duration: number): void; - getMix(from: Animation, to: Animation): number; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +/** The interface for items updated by {@link Skeleton#updateWorldTransform()}. */ +interface Updatable { + update(): void; + /** Returns false when this item has not been updated because a skin is required and the {@link Skeleton#skin active skin} + * does not contain this item. + * @see Skin#getBones() + * @see Skin#getConstraints() */ + isActive(): boolean; } -declare module spine { - class AssetManager implements Disposable { - private pathPrefix; - private textureLoader; - private downloader; - private assets; - private errors; - private toLoad; - private loaded; - constructor(textureLoader: (image: HTMLImageElement | ImageBitmap) => Texture, pathPrefix?: string, downloader?: Downloader); - private start; - private success; - private error; - setRawDataURI(path: string, data: string): void; - loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, message: string) => void): void; - loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, message: string) => void): void; - loadJson(path: string, success?: (path: string, object: object) => void, error?: (path: string, message: string) => void): void; - loadTexture(path: string, success?: (path: string, texture: Texture) => void, error?: (path: string, message: string) => void): void; - loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, message: string) => void): void; - get(path: string): any; - require(path: string): any; - remove(path: string): any; - removeAll(): void; - isLoadingComplete(): boolean; - getToLoad(): number; - getLoaded(): number; - dispose(): void; - hasErrors(): boolean; - getErrors(): Map; - } - class Downloader { - private callbacks; - rawDataUris: Map; - downloadText(url: string, success: (data: string) => void, error: (status: number, responseText: string) => void): void; - downloadJson(url: string, success: (data: object) => void, error: (status: number, responseText: string) => void): void; - downloadBinary(url: string, success: (data: Uint8Array) => void, error: (status: number, responseText: string) => void): void; - private start; - private finish; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores the current pose for an IK constraint. An IK constraint adjusts the rotation of 1 or 2 constrained bones so the tip of + * the last bone is as close to the target bone as possible. + * + * See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */ +declare class IkConstraint implements Updatable { + /** The IK constraint's setup pose data. */ + data: IkConstraintData; + /** The bones that will be modified by this IK constraint. */ + bones: Array; + /** The bone that is the IK target. */ + target: Bone; + /** Controls the bend direction of the IK bones, either 1 or -1. */ + bendDirection: number; + /** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */ + compress: boolean; + /** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained + * and the parent bone has local nonuniform scale, stretch is not applied. */ + stretch: boolean; + /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */ + mix: number; + /** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */ + softness: number; + active: boolean; + constructor(data: IkConstraintData, skeleton: Skeleton); + isActive(): boolean; + update(): void; + /** Applies 1 bone IK. The target is specified in the world coordinate system. */ + apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; + /** Applies 2 bone IK. The target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ + apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, uniform: boolean, softness: number, alpha: number): void; } -declare module spine { - class AtlasAttachmentLoader implements AttachmentLoader { - atlas: TextureAtlas; - constructor(atlas: TextureAtlas); - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** An attachment whose vertices make up a composite Bezier curve. + * + * See {@link PathConstraint} and [Paths](http://esotericsoftware.com/spine-paths) in the Spine User Guide. */ +declare class PathAttachment extends VertexAttachment { + /** The lengths along the path in the setup pose from the start of the path to the end of each Bezier curve. */ + lengths: Array; + /** If true, the start and end knots are connected. */ + closed: boolean; + /** If true, additional calculations are performed to make calculating positions along the path more accurate. If false, fewer + * calculations are performed but calculating positions along the path is less accurate. */ + constantSpeed: boolean; + /** The color of the path as it was in Spine. Available only when nonessential data was exported. Paths are not usually + * rendered at runtime. */ + color: Color; + constructor(name: string); + copy(): Attachment; } -declare module spine { - class Bone implements Updatable { - data: BoneData; - skeleton: Skeleton; - parent: Bone; - children: Bone[]; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - ax: number; - ay: number; - arotation: number; - ascaleX: number; - ascaleY: number; - ashearX: number; - ashearY: number; - a: number; - b: number; - c: number; - d: number; - worldY: number; - worldX: number; - sorted: boolean; - active: boolean; - constructor(data: BoneData, skeleton: Skeleton, parent: Bone); - isActive(): boolean; - update(): void; - updateWorldTransform(): void; - updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; - setToSetupPose(): void; - getWorldRotationX(): number; - getWorldRotationY(): number; - getWorldScaleX(): number; - getWorldScaleY(): number; - updateAppliedTransform(): void; - worldToLocal(world: Vector2): Vector2; - localToWorld(local: Vector2): Vector2; - worldToLocalRotation(worldRotation: number): number; - localToWorldRotation(localRotation: number): number; - rotateWorld(degrees: number): void; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores the setup pose for a {@link Slot}. */ +declare class SlotData { + /** The index of the slot in {@link Skeleton#getSlots()}. */ + index: number; + /** The name of the slot, which is unique across all slots in the skeleton. */ + name: string; + /** The bone this slot belongs to. */ + boneData: BoneData; + /** The color used to tint the slot's attachment. If {@link #getDarkColor()} is set, this is used as the light color for two + * color tinting. */ + color: Color; + /** The dark color used to tint the slot's attachment for two color tinting, or null if two color tinting is not used. The dark + * color's alpha is not used. */ + darkColor: Color; + /** The name of the attachment that is visible for this slot in the setup pose, or null if no attachment is visible. */ + attachmentName: string; + /** The blend mode for drawing the slot's attachment. */ + blendMode: BlendMode; + constructor(index: number, name: string, boneData: BoneData); } -declare module spine { - class BoneData { - index: number; - name: string; - parent: BoneData; - length: number; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - transformMode: TransformMode; - skinRequired: boolean; - color: Color; - constructor(index: number, name: string, parent: BoneData); - } - enum TransformMode { - Normal = 0, - OnlyTranslation = 1, - NoRotationOrReflection = 2, - NoScale = 3, - NoScaleOrReflection = 4 - } +/** Determines how images are blended with existing pixels when drawn. */ +declare enum BlendMode { + Normal = 0, + Additive = 1, + Multiply = 2, + Screen = 3 } -declare module spine { - abstract class ConstraintData { - name: string; - order: number; - skinRequired: boolean; - constructor(name: string, order: number, skinRequired: boolean); - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores the setup pose for a {@link PathConstraint}. + * + * See [path constraints](http://esotericsoftware.com/spine-path-constraints) in the Spine User Guide. */ +declare class PathConstraintData extends ConstraintData { + /** The bones that will be modified by this path constraint. */ + bones: BoneData[]; + /** The slot whose path attachment will be used to constrained the bones. */ + target: SlotData; + /** The mode for positioning the first bone on the path. */ + positionMode: PositionMode; + /** The mode for positioning the bones after the first bone on the path. */ + spacingMode: SpacingMode; + /** The mode for adjusting the rotation of the bones. */ + rotateMode: RotateMode; + /** An offset added to the constrained bone rotation. */ + offsetRotation: number; + /** The position along the path. */ + position: number; + /** The spacing between bones. */ + spacing: number; + mixRotate: number; + mixX: number; + mixY: number; + constructor(name: string); } -declare module spine { - class Event { - data: EventData; - intValue: number; - floatValue: number; - stringValue: string; - time: number; - volume: number; - balance: number; - constructor(time: number, data: EventData); - } +/** Controls how the first bone is positioned along the path. + * + * See [position](http://esotericsoftware.com/spine-path-constraints#Position) in the Spine User Guide. */ +declare enum PositionMode { + Fixed = 0, + Percent = 1 } -declare module spine { - class EventData { - name: string; - intValue: number; - floatValue: number; - stringValue: string; - audioPath: string; - volume: number; - balance: number; - constructor(name: string); - } +/** Controls how bones after the first bone are positioned along the path. + * + * See [spacing](http://esotericsoftware.com/spine-path-constraints#Spacing) in the Spine User Guide. */ +declare enum SpacingMode { + Length = 0, + Fixed = 1, + Percent = 2, + Proportional = 3 } -declare module spine { - class IkConstraint implements Updatable { - data: IkConstraintData; - bones: Array; - target: Bone; - bendDirection: number; - compress: boolean; - stretch: boolean; - mix: number; - softness: number; - active: boolean; - constructor(data: IkConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; - apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, uniform: boolean, softness: number, alpha: number): void; - } +/** Controls how bones are rotated, translated, and scaled to match the path. + * + * See [rotate mix](http://esotericsoftware.com/spine-path-constraints#Rotate-mix) in the Spine User Guide. */ +declare enum RotateMode { + Tangent = 0, + Chain = 1, + ChainScale = 2 } -declare module spine { - class IkConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - bendDirection: number; - compress: boolean; - stretch: boolean; - uniform: boolean; - mix: number; - softness: number; - constructor(name: string); - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores the current pose for a path constraint. A path constraint adjusts the rotation, translation, and scale of the + * constrained bones so they follow a {@link PathAttachment}. + * + * See [Path constraints](http://esotericsoftware.com/spine-path-constraints) in the Spine User Guide. */ +declare class PathConstraint implements Updatable { + static NONE: number; + static BEFORE: number; + static AFTER: number; + static epsilon: number; + /** The path constraint's setup pose data. */ + data: PathConstraintData; + /** The bones that will be modified by this path constraint. */ + bones: Array; + /** The slot whose path attachment will be used to constrained the bones. */ + target: Slot; + /** The position along the path. */ + position: number; + /** The spacing between bones. */ + spacing: number; + mixRotate: number; + mixX: number; + mixY: number; + spaces: number[]; + positions: number[]; + world: number[]; + curves: number[]; + lengths: number[]; + segments: number[]; + active: boolean; + constructor(data: PathConstraintData, skeleton: Skeleton); + isActive(): boolean; + update(): void; + computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[]; + addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; } -declare module spine { - class PathConstraint implements Updatable { - static NONE: number; - static BEFORE: number; - static AFTER: number; - static epsilon: number; - data: PathConstraintData; - bones: Array; - target: Slot; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - spaces: number[]; - positions: number[]; - world: number[]; - curves: number[]; - lengths: number[]; - segments: number[]; - active: boolean; - constructor(data: PathConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[]; - addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +/** Stores the setup pose values for an {@link Event}. + * + * See [Events](http://esotericsoftware.com/spine-events) in the Spine User Guide. */ +declare class EventData { + name: string; + intValue: number; + floatValue: number; + stringValue: string; + audioPath: string; + volume: number; + balance: number; + constructor(name: string); } -declare module spine { - class PathConstraintData extends ConstraintData { - bones: BoneData[]; - target: SlotData; - positionMode: PositionMode; - spacingMode: SpacingMode; - rotateMode: RotateMode; - offsetRotation: number; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - constructor(name: string); - } - enum PositionMode { - Fixed = 0, - Percent = 1 - } - enum SpacingMode { - Length = 0, - Fixed = 1, - Percent = 2, - Proportional = 3 - } - enum RotateMode { - Tangent = 0, - Chain = 1, - ChainScale = 2 - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores an entry in the skin consisting of the slot index, name, and attachment **/ +declare class SkinEntry { + slotIndex: number; + name: string; + attachment: Attachment; + constructor(slotIndex: number, name: string, attachment: Attachment); } -declare module spine { - class Skeleton { - data: SkeletonData; - bones: Array; - slots: Array; - drawOrder: Array; - ikConstraints: Array; - transformConstraints: Array; - pathConstraints: Array; - _updateCache: Updatable[]; - skin: Skin; - color: Color; - time: number; - scaleX: number; - scaleY: number; - x: number; - y: number; - constructor(data: SkeletonData); - updateCache(): void; - sortIkConstraint(constraint: IkConstraint): void; - sortPathConstraint(constraint: PathConstraint): void; - sortTransformConstraint(constraint: TransformConstraint): void; - sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; - sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; - sortBone(bone: Bone): void; - sortReset(bones: Array): void; - updateWorldTransform(): void; - updateWorldTransformWith(parent: Bone): void; - setToSetupPose(): void; - setBonesToSetupPose(): void; - setSlotsToSetupPose(): void; - getRootBone(): Bone; - findBone(boneName: string): Bone; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): Slot; - findSlotIndex(slotName: string): number; - setSkinByName(skinName: string): void; - setSkin(newSkin: Skin): void; - getAttachmentByName(slotName: string, attachmentName: string): Attachment; - getAttachment(slotIndex: number, attachmentName: string): Attachment; - setAttachment(slotName: string, attachmentName: string): void; - findIkConstraint(constraintName: string): IkConstraint; - findTransformConstraint(constraintName: string): TransformConstraint; - findPathConstraint(constraintName: string): PathConstraint; - getBounds(offset: Vector2, size: Vector2, temp?: Array): void; - update(delta: number): void; - } +/** Stores attachments by slot index and attachment name. + * + * See SkeletonData {@link SkeletonData#defaultSkin}, Skeleton {@link Skeleton#skin}, and + * [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide. */ +declare class Skin { + /** The skin's name, which is unique across all skins in the skeleton. */ + name: string; + attachments: StringMap[]; + bones: BoneData[]; + constraints: ConstraintData[]; + constructor(name: string); + /** Adds an attachment to the skin for the specified slot index and name. */ + setAttachment(slotIndex: number, name: string, attachment: Attachment): void; + /** Adds all attachments, bones, and constraints from the specified skin to this skin. */ + addSkin(skin: Skin): void; + /** Adds all bones and constraints and copies of all attachments from the specified skin to this skin. Mesh attachments are not + * copied, instead a new linked mesh is created. The attachment copies can be modified without affecting the originals. */ + copySkin(skin: Skin): void; + /** Returns the attachment for the specified slot index and name, or null. */ + getAttachment(slotIndex: number, name: string): Attachment; + /** Removes the attachment in the skin for the specified slot index and name, if any. */ + removeAttachment(slotIndex: number, name: string): void; + /** Returns all attachments in this skin. */ + getAttachments(): Array; + /** Returns all attachments in this skin for the specified slot index. */ + getAttachmentsForSlot(slotIndex: number, attachments: Array): void; + /** Clears all attachments, bones, and constraints. */ + clear(): void; + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ + attachAll(skeleton: Skeleton, oldSkin: Skin): void; } -declare module spine { - class SkeletonBinary { - scale: number; - attachmentLoader: AttachmentLoader; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(binary: Uint8Array): SkeletonData; - private readSkin; - private readAttachment; - private readVertices; - private readFloatArray; - private readShortArray; - private readAnimation; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores the setup pose for a {@link TransformConstraint}. + * + * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */ +declare class TransformConstraintData extends ConstraintData { + /** The bones that will be modified by this transform constraint. */ + bones: BoneData[]; + /** The target bone whose world transform will be copied to the constrained bones. */ + target: BoneData; + mixRotate: number; + mixX: number; + mixY: number; + mixScaleX: number; + mixScaleY: number; + mixShearY: number; + /** An offset added to the constrained bone rotation. */ + offsetRotation: number; + /** An offset added to the constrained bone X translation. */ + offsetX: number; + /** An offset added to the constrained bone Y translation. */ + offsetY: number; + /** An offset added to the constrained bone scaleX. */ + offsetScaleX: number; + /** An offset added to the constrained bone scaleY. */ + offsetScaleY: number; + /** An offset added to the constrained bone shearY. */ + offsetShearY: number; + relative: boolean; + local: boolean; + constructor(name: string); } -declare module spine { - class SkeletonBounds { - minX: number; - minY: number; - maxX: number; - maxY: number; - boundingBoxes: BoundingBoxAttachment[]; - polygons: ArrayLike[]; - private polygonPool; - update(skeleton: Skeleton, updateAabb: boolean): void; - aabbCompute(): void; - aabbContainsPoint(x: number, y: number): boolean; - aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; - aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; - containsPoint(x: number, y: number): BoundingBoxAttachment; - containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; - intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; - intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; - getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; - getWidth(): number; - getHeight(): number; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores the setup pose and all of the stateless data for a skeleton. + * + * See [Data objects](http://esotericsoftware.com/spine-runtime-architecture#Data-objects) in the Spine Runtimes + * Guide. */ +declare class SkeletonData { + /** The skeleton's name, which by default is the name of the skeleton data file, if possible. May be null. */ + name: string; + /** The skeleton's bones, sorted parent first. The root bone is always the first bone. */ + bones: BoneData[]; + /** The skeleton's slots. */ + slots: SlotData[]; + skins: Skin[]; + /** The skeleton's default skin. By default this skin contains all attachments that were not in a skin in Spine. + * + * See {@link Skeleton#getAttachmentByName()}. + * May be null. */ + defaultSkin: Skin; + /** The skeleton's events. */ + events: EventData[]; + /** The skeleton's animations. */ + animations: Animation[]; + /** The skeleton's IK constraints. */ + ikConstraints: IkConstraintData[]; + /** The skeleton's transform constraints. */ + transformConstraints: TransformConstraintData[]; + /** The skeleton's path constraints. */ + pathConstraints: PathConstraintData[]; + /** The X coordinate of the skeleton's axis aligned bounding box in the setup pose. */ + x: number; + /** The Y coordinate of the skeleton's axis aligned bounding box in the setup pose. */ + y: number; + /** The width of the skeleton's axis aligned bounding box in the setup pose. */ + width: number; + /** The height of the skeleton's axis aligned bounding box in the setup pose. */ + height: number; + /** The Spine version used to export the skeleton data, or null. */ + version: string; + /** The skeleton data hash. This value will change if any of the skeleton data has changed. May be null. */ + hash: string; + /** The dopesheet FPS in Spine. Available only when nonessential data was exported. */ + fps: number; + /** The path to the images directory as defined in Spine. Available only when nonessential data was exported. May be null. */ + imagesPath: string; + /** The path to the audio directory as defined in Spine. Available only when nonessential data was exported. May be null. */ + audioPath: string; + /** Finds a bone by comparing each bone's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + findBone(boneName: string): BoneData; + findBoneIndex(boneName: string): number; + /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + findSlot(slotName: string): SlotData; + findSlotIndex(slotName: string): number; + /** Finds a skin by comparing each skin's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + findSkin(skinName: string): Skin; + /** Finds an event by comparing each events's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ + findEvent(eventDataName: string): EventData; + /** Finds an animation by comparing each animation's name. It is more efficient to cache the results of this method than to + * call it multiple times. + * @returns May be null. */ + findAnimation(animationName: string): Animation; + /** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method + * than to call it multiple times. + * @return May be null. */ + findIkConstraint(constraintName: string): IkConstraintData; + /** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of + * this method than to call it multiple times. + * @return May be null. */ + findTransformConstraint(constraintName: string): TransformConstraintData; + /** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method + * than to call it multiple times. + * @return May be null. */ + findPathConstraint(constraintName: string): PathConstraintData; } -declare module spine { - class SkeletonClipping { - private triangulator; - private clippingPolygon; - private clipOutput; - clippedVertices: number[]; - clippedTriangles: number[]; - private scratch; - private clipAttachment; - private clippingPolygons; - clipStart(slot: Slot, clip: ClippingAttachment): number; - clipEndWithSlot(slot: Slot): void; - clipEnd(): void; - isClipping(): boolean; - clipTriangles(vertices: ArrayLike, verticesLength: number, triangles: ArrayLike, trianglesLength: number, uvs: ArrayLike, light: Color, dark: Color, twoColor: boolean): void; - clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array, output: Array): boolean; - static makeClockwise(polygon: ArrayLike): void; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores the current pose for a transform constraint. A transform constraint adjusts the world transform of the constrained + * bones to match that of the target bone. + * + * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */ +declare class TransformConstraint implements Updatable { + /** The transform constraint's setup pose data. */ + data: TransformConstraintData; + /** The bones that will be modified by this transform constraint. */ + bones: Array; + /** The target bone whose world transform will be copied to the constrained bones. */ + target: Bone; + mixRotate: number; + mixX: number; + mixY: number; + mixScaleX: number; + mixScaleY: number; + mixShearY: number; + temp: Vector2; + active: boolean; + constructor(data: TransformConstraintData, skeleton: Skeleton); + isActive(): boolean; + update(): void; + applyAbsoluteWorld(): void; + applyRelativeWorld(): void; + applyAbsoluteLocal(): void; + applyRelativeLocal(): void; } -declare module spine { - class SkeletonData { - name: string; - bones: BoneData[]; - slots: SlotData[]; - skins: Skin[]; - defaultSkin: Skin; - events: EventData[]; - animations: Animation[]; - ikConstraints: IkConstraintData[]; - transformConstraints: TransformConstraintData[]; - pathConstraints: PathConstraintData[]; - x: number; - y: number; - width: number; - height: number; - version: string; - hash: string; - fps: number; - imagesPath: string; - audioPath: string; - findBone(boneName: string): BoneData; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): SlotData; - findSlotIndex(slotName: string): number; - findSkin(skinName: string): Skin; - findEvent(eventDataName: string): EventData; - findAnimation(animationName: string): Animation; - findIkConstraint(constraintName: string): IkConstraintData; - findTransformConstraint(constraintName: string): TransformConstraintData; - findPathConstraint(constraintName: string): PathConstraintData; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores the current pose for a skeleton. + * + * See [Instance objects](http://esotericsoftware.com/spine-runtime-architecture#Instance-objects) in the Spine Runtimes Guide. */ +declare class Skeleton { + /** The skeleton's setup pose data. */ + data: SkeletonData; + /** The skeleton's bones, sorted parent first. The root bone is always the first bone. */ + bones: Array; + /** The skeleton's slots. */ + slots: Array; + /** The skeleton's slots in the order they should be drawn. The returned array may be modified to change the draw order. */ + drawOrder: Array; + /** The skeleton's IK constraints. */ + ikConstraints: Array; + /** The skeleton's transform constraints. */ + transformConstraints: Array; + /** The skeleton's path constraints. */ + pathConstraints: Array; + /** The list of bones and constraints, sorted in the order they should be updated, as computed by {@link #updateCache()}. */ + _updateCache: Updatable[]; + /** The skeleton's current skin. May be null. */ + skin: Skin; + /** The color to tint all the skeleton's attachments. */ + color: Color; + /** Returns the skeleton's time. This can be used for tracking, such as with Slot {@link Slot#attachmentTime}. + *

        + * See {@link #update()}. */ + time: number; + /** Scales the entire skeleton on the X axis. This affects all bones, even if the bone's transform mode disallows scale + * inheritance. */ + scaleX: number; + /** Scales the entire skeleton on the Y axis. This affects all bones, even if the bone's transform mode disallows scale + * inheritance. */ + scaleY: number; + /** Sets the skeleton X position, which is added to the root bone worldX position. */ + x: number; + /** Sets the skeleton Y position, which is added to the root bone worldY position. */ + y: number; + constructor(data: SkeletonData); + /** Caches information about bones and constraints. Must be called if the {@link #getSkin()} is modified or if bones, + * constraints, or weighted path attachments are added or removed. */ + updateCache(): void; + sortIkConstraint(constraint: IkConstraint): void; + sortPathConstraint(constraint: PathConstraint): void; + sortTransformConstraint(constraint: TransformConstraint): void; + sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; + sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; + sortBone(bone: Bone): void; + sortReset(bones: Array): void; + /** Updates the world transform for each bone and applies all constraints. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. */ + updateWorldTransform(): void; + updateWorldTransformWith(parent: Bone): void; + /** Sets the bones, constraints, and slots to their setup pose values. */ + setToSetupPose(): void; + /** Sets the bones and constraints to their setup pose values. */ + setBonesToSetupPose(): void; + /** Sets the slots and draw order to their setup pose values. */ + setSlotsToSetupPose(): void; + /** @returns May return null. */ + getRootBone(): Bone; + /** @returns May be null. */ + findBone(boneName: string): Bone; + /** @returns -1 if the bone was not found. */ + findBoneIndex(boneName: string): number; + /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it + * repeatedly. + * @returns May be null. */ + findSlot(slotName: string): Slot; + /** @returns -1 if the bone was not found. */ + findSlotIndex(slotName: string): number; + /** Sets a skin by name. + * + * See {@link #setSkin()}. */ + setSkinByName(skinName: string): void; + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#defaultSkin default skin}. If the + * skin is changed, {@link #updateCache()} is called. + * + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * + * After changing the skin, the visible attachments can be reset to those attached in the setup pose by calling + * {@link #setSlotsToSetupPose()}. Also, often {@link AnimationState#apply()} is called before the next time the + * skeleton is rendered to allow any attachment keys in the current animation(s) to hide or show attachments from the new skin. + * @param newSkin May be null. */ + setSkin(newSkin: Skin): void; + /** Finds an attachment by looking in the {@link #skin} and {@link SkeletonData#defaultSkin} using the slot name and attachment + * name. + * + * See {@link #getAttachment()}. + * @returns May be null. */ + getAttachmentByName(slotName: string, attachmentName: string): Attachment; + /** Finds an attachment by looking in the {@link #skin} and {@link SkeletonData#defaultSkin} using the slot index and + * attachment name. First the skin is checked and if the attachment was not found, the default skin is checked. + * + * See [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide. + * @returns May be null. */ + getAttachment(slotIndex: number, attachmentName: string): Attachment; + /** A convenience method to set an attachment by finding the slot with {@link #findSlot()}, finding the attachment with + * {@link #getAttachment()}, then setting the slot's {@link Slot#attachment}. + * @param attachmentName May be null to clear the slot's attachment. */ + setAttachment(slotName: string, attachmentName: string): void; + /** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method + * than to call it repeatedly. + * @return May be null. */ + findIkConstraint(constraintName: string): IkConstraint; + /** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of + * this method than to call it repeatedly. + * @return May be null. */ + findTransformConstraint(constraintName: string): TransformConstraint; + /** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method + * than to call it repeatedly. + * @return May be null. */ + findPathConstraint(constraintName: string): PathConstraint; + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset An output value, the distance from the skeleton origin to the bottom left corner of the AABB. + * @param size An output value, the width and height of the AABB. + * @param temp Working memory to temporarily store attachments' computed world vertices. */ + getBounds(offset: Vector2, size: Vector2, temp?: Array): void; + /** Increments the skeleton's {@link #time}. */ + update(delta: number): void; } -declare module spine { - class SkeletonJson { - attachmentLoader: AttachmentLoader; - scale: number; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(json: string | any): SkeletonData; - readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; - readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; - readAnimation(map: any, name: string, skeletonData: SkeletonData): void; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +interface StringMap { + [key: string]: T; } -declare module spine { - class SkinEntry { - slotIndex: number; - name: string; - attachment: Attachment; - constructor(slotIndex: number, name: string, attachment: Attachment); - } - class Skin { - name: string; - attachments: Map[]; - bones: BoneData[]; - constraints: ConstraintData[]; - constructor(name: string); - setAttachment(slotIndex: number, name: string, attachment: Attachment): void; - addSkin(skin: Skin): void; - copySkin(skin: Skin): void; - getAttachment(slotIndex: number, name: string): Attachment; - removeAttachment(slotIndex: number, name: string): void; - getAttachments(): Array; - getAttachmentsForSlot(slotIndex: number, attachments: Array): void; - clear(): void; - attachAll(skeleton: Skeleton, oldSkin: Skin): void; - } +declare class IntSet { + array: number[]; + add(value: number): boolean; + contains(value: number): boolean; + remove(value: number): void; + clear(): void; } -declare module spine { - class Slot { - data: SlotData; - bone: Bone; - color: Color; - darkColor: Color; - attachment: Attachment; - private attachmentTime; - attachmentState: number; - deform: number[]; - constructor(data: SlotData, bone: Bone); - getSkeleton(): Skeleton; - getAttachment(): Attachment; - setAttachment(attachment: Attachment): void; - setAttachmentTime(time: number): void; - getAttachmentTime(): number; - setToSetupPose(): void; - } +declare class StringSet { + entries: StringMap; + size: number; + add(value: string): boolean; + addAll(values: string[]): boolean; + contains(value: string): boolean; + clear(): void; } -declare module spine { - class SlotData { - index: number; - name: string; - boneData: BoneData; - color: Color; - darkColor: Color; - attachmentName: string; - blendMode: BlendMode; - constructor(index: number, name: string, boneData: BoneData); - } - enum BlendMode { - Normal = 0, - Additive = 1, - Multiply = 2, - Screen = 3 - } +interface NumberArrayLike { + readonly length: number; + [n: number]: number; } -declare module spine { - abstract class Texture { - protected _image: HTMLImageElement | ImageBitmap; - constructor(image: HTMLImageElement | ImageBitmap); - getImage(): HTMLImageElement | ImageBitmap; - abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - abstract dispose(): void; - } - enum TextureFilter { - Nearest = 9728, - Linear = 9729, - MipMap = 9987, - MipMapNearestNearest = 9984, - MipMapLinearNearest = 9985, - MipMapNearestLinear = 9986, - MipMapLinearLinear = 9987 - } - enum TextureWrap { - MirroredRepeat = 33648, - ClampToEdge = 33071, - Repeat = 10497 - } - class TextureRegion { - renderObject: any; - u: number; - v: number; - u2: number; - v2: number; - width: number; - height: number; - degrees: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - } - class FakeTexture extends Texture { - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - } +interface Disposable { + dispose(): void; } -declare module spine { - class TextureAtlas implements Disposable { - pages: TextureAtlasPage[]; - regions: TextureAtlasRegion[]; - constructor(atlasText: string); - findRegion(name: string): TextureAtlasRegion; - setTextures(assetManager: AssetManager, pathPrefix?: string): void; - dispose(): void; - } - class TextureAtlasPage { - name: string; - minFilter: TextureFilter; - magFilter: TextureFilter; - uWrap: TextureWrap; - vWrap: TextureWrap; - texture: Texture; - width: number; - height: number; - pma: boolean; - setTexture(texture: Texture): void; - } - class TextureAtlasRegion extends TextureRegion { - page: TextureAtlasPage; - name: string; - x: number; - y: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - index: number; - degrees: number; - names: string[]; - values: number[][]; - } +interface Restorable { + restore(): void; } -declare module spine { - class TransformConstraint implements Updatable { - data: TransformConstraintData; - bones: Array; - target: Bone; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - temp: Vector2; - active: boolean; - constructor(data: TransformConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - applyAbsoluteWorld(): void; - applyRelativeWorld(): void; - applyAbsoluteLocal(): void; - applyRelativeLocal(): void; - } +declare class Color { + r: number; + g: number; + b: number; + a: number; + static WHITE: Color; + static RED: Color; + static GREEN: Color; + static BLUE: Color; + static MAGENTA: Color; + constructor(r?: number, g?: number, b?: number, a?: number); + set(r: number, g: number, b: number, a: number): this; + setFromColor(c: Color): this; + setFromString(hex: string): this; + add(r: number, g: number, b: number, a: number): this; + clamp(): this; + static rgba8888ToColor(color: Color, value: number): void; + static rgb888ToColor(color: Color, value: number): void; + static fromString(hex: string): Color; } -declare module spine { - class TransformConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - offsetRotation: number; - offsetX: number; - offsetY: number; - offsetScaleX: number; - offsetScaleY: number; - offsetShearY: number; - relative: boolean; - local: boolean; - constructor(name: string); - } +declare class MathUtils { + static PI: number; + static PI2: number; + static radiansToDegrees: number; + static radDeg: number; + static degreesToRadians: number; + static degRad: number; + static clamp(value: number, min: number, max: number): number; + static cosDeg(degrees: number): number; + static sinDeg(degrees: number): number; + static signum(value: number): number; + static toInt(x: number): number; + static cbrt(x: number): number; + static randomTriangular(min: number, max: number): number; + static randomTriangularWith(min: number, max: number, mode: number): number; + static isPowerOfTwo(value: number): boolean; } -declare module spine { - class Triangulator { - private convexPolygons; - private convexPolygonsIndices; - private indicesArray; - private isConcaveArray; - private triangles; - private polygonPool; - private polygonIndicesPool; - triangulate(verticesArray: ArrayLike): Array; - decompose(verticesArray: Array, triangles: Array): Array>; - private static isConcave; - private static positiveArea; - private static winding; - } +declare abstract class Interpolation { + protected abstract applyInternal(a: number): number; + apply(start: number, end: number, a: number): number; } -declare module spine { - interface Updatable { - update(): void; - isActive(): boolean; - } +declare class Pow extends Interpolation { + protected power: number; + constructor(power: number); + applyInternal(a: number): number; } -declare module spine { - interface Map { - [key: string]: T; - } - class IntSet { - array: number[]; - add(value: number): boolean; - contains(value: number): boolean; - remove(value: number): void; - clear(): void; - } - class StringSet { - entries: Map; - size: number; - add(value: string): boolean; - addAll(values: string[]): boolean; - contains(value: string): boolean; - clear(): void; - } - interface Disposable { - dispose(): void; - } - interface Restorable { - restore(): void; - } - class Color { - r: number; - g: number; - b: number; - a: number; - static WHITE: Color; - static RED: Color; - static GREEN: Color; - static BLUE: Color; - static MAGENTA: Color; - constructor(r?: number, g?: number, b?: number, a?: number); - set(r: number, g: number, b: number, a: number): this; - setFromColor(c: Color): this; - setFromString(hex: string): this; - add(r: number, g: number, b: number, a: number): this; - clamp(): this; - static rgba8888ToColor(color: Color, value: number): void; - static rgb888ToColor(color: Color, value: number): void; - static fromString(hex: string): Color; - } - class MathUtils { - static PI: number; - static PI2: number; - static radiansToDegrees: number; - static radDeg: number; - static degreesToRadians: number; - static degRad: number; - static clamp(value: number, min: number, max: number): number; - static cosDeg(degrees: number): number; - static sinDeg(degrees: number): number; - static signum(value: number): number; - static toInt(x: number): number; - static cbrt(x: number): number; - static randomTriangular(min: number, max: number): number; - static randomTriangularWith(min: number, max: number, mode: number): number; - } - abstract class Interpolation { - protected abstract applyInternal(a: number): number; - apply(start: number, end: number, a: number): number; - } - class Pow extends Interpolation { - protected power: number; - constructor(power: number); - applyInternal(a: number): number; - } - class PowOut extends Pow { - constructor(power: number); - applyInternal(a: number): number; - } - class Utils { - static SUPPORTS_TYPED_ARRAYS: boolean; - static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; - static arrayFill(array: ArrayLike, fromIndex: number, toIndex: number, value: T): void; - static setArraySize(array: Array, size: number, value?: any): Array; - static ensureArrayCapacity(array: Array, size: number, value?: any): Array; - static newArray(size: number, defaultValue: T): Array; - static newFloatArray(size: number): ArrayLike; - static newShortArray(size: number): ArrayLike; - static toFloatArray(array: Array): number[] | Float32Array; - static toSinglePrecision(value: number): number; - static webkit602BugfixHelper(alpha: number, blend: MixBlend): void; - static contains(array: Array, element: T, identity?: boolean): boolean; - static enumValue(type: any, name: string): any; - } - class DebugUtils { - static logBones(skeleton: Skeleton): void; - } - class Pool { - private items; - private instantiator; - constructor(instantiator: () => T); - obtain(): T; - free(item: T): void; - freeAll(items: ArrayLike): void; - clear(): void; - } - class Vector2 { - x: number; - y: number; - constructor(x?: number, y?: number); - set(x: number, y: number): Vector2; - length(): number; - normalize(): this; - } - class TimeKeeper { - maxDelta: number; - framesPerSecond: number; - delta: number; - totalTime: number; - private lastTime; - private frameCount; - private frameTime; - update(): void; - } - interface ArrayLike { - length: number; - [n: number]: T; - } - class WindowedMean { - values: Array; - addedValues: number; - lastValue: number; - mean: number; - dirty: boolean; - constructor(windowSize?: number); - hasEnoughData(): boolean; - addValue(value: number): void; - getMean(): number; - } +declare class PowOut extends Pow { + constructor(power: number); + applyInternal(a: number): number; } -declare module spine { - interface VertexEffect { - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } +declare class Utils { + static SUPPORTS_TYPED_ARRAYS: boolean; + static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; + static arrayFill(array: ArrayLike, fromIndex: number, toIndex: number, value: T): void; + static setArraySize(array: Array, size: number, value?: any): Array; + static ensureArrayCapacity(array: Array, size: number, value?: any): Array; + static newArray(size: number, defaultValue: T): Array; + static newFloatArray(size: number): NumberArrayLike; + static newShortArray(size: number): NumberArrayLike; + static toFloatArray(array: Array): number[] | Float32Array; + static toSinglePrecision(value: number): number; + static webkit602BugfixHelper(alpha: number, blend: MixBlend): void; + static contains(array: Array, element: T, identity?: boolean): boolean; + static enumValue(type: any, name: string): any; } -interface Math { - fround(n: number): number; +declare class DebugUtils { + static logBones(skeleton: Skeleton): void; } -declare module spine { - abstract class Attachment { - name: string; - constructor(name: string); - abstract copy(): Attachment; - } - abstract class VertexAttachment extends Attachment { - private static nextID; - id: number; - bones: Array; - vertices: ArrayLike; - worldVerticesLength: number; - deformAttachment: VertexAttachment; - constructor(name: string); - computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number, stride: number): void; - copyTo(attachment: VertexAttachment): void; - } +declare class Pool { + private items; + private instantiator; + constructor(instantiator: () => T); + obtain(): T; + free(item: T): void; + freeAll(items: ArrayLike): void; + clear(): void; } -declare module spine { - interface AttachmentLoader { - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } +declare class Vector2 { + x: number; + y: number; + constructor(x?: number, y?: number); + set(x: number, y: number): Vector2; + length(): number; + normalize(): this; } -declare module spine { - class BoundingBoxAttachment extends VertexAttachment { - color: Color; - constructor(name: string); - copy(): Attachment; - } +declare class TimeKeeper { + maxDelta: number; + framesPerSecond: number; + delta: number; + totalTime: number; + private lastTime; + private frameCount; + private frameTime; + update(): void; } -declare module spine { - class ClippingAttachment extends VertexAttachment { - endSlot: SlotData; - color: Color; - constructor(name: string); - copy(): Attachment; - } +interface ArrayLike { + length: number; + [n: number]: T; } -declare module spine { - class MeshAttachment extends VertexAttachment { - region: TextureRegion; - path: string; - regionUVs: ArrayLike; - uvs: ArrayLike; - triangles: Array; - color: Color; - width: number; - height: number; - hullLength: number; - edges: Array; - private parentMesh; - tempColor: Color; - constructor(name: string); - updateUVs(): void; - getParentMesh(): MeshAttachment; - setParentMesh(parentMesh: MeshAttachment): void; - copy(): Attachment; - newLinkedMesh(): MeshAttachment; - } +declare class WindowedMean { + values: Array; + addedValues: number; + lastValue: number; + mean: number; + dirty: boolean; + constructor(windowSize?: number); + hasEnoughData(): boolean; + addValue(value: number): void; + getMean(): number; } -declare module spine { - class PathAttachment extends VertexAttachment { - lengths: Array; - closed: boolean; - constantSpeed: boolean; - color: Color; - constructor(name: string); - copy(): Attachment; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores the setup pose for a {@link Bone}. */ +declare class BoneData { + /** The index of the bone in {@link Skeleton#getBones()}. */ + index: number; + /** The name of the bone, which is unique across all bones in the skeleton. */ + name: string; + /** @returns May be null. */ + parent: BoneData; + /** The bone's length. */ + length: number; + /** The local x translation. */ + x: number; + /** The local y translation. */ + y: number; + /** The local rotation. */ + rotation: number; + /** The local scaleX. */ + scaleX: number; + /** The local scaleY. */ + scaleY: number; + /** The local shearX. */ + shearX: number; + /** The local shearX. */ + shearY: number; + /** The transform mode for how parent world transforms affect this bone. */ + transformMode: TransformMode; + /** When true, {@link Skeleton#updateWorldTransform()} only updates this bone if the {@link Skeleton#skin} contains this + * bone. + * @see Skin#bones */ + skinRequired: boolean; + /** The color of the bone as it was in Spine. Available only when nonessential data was exported. Bones are not usually + * rendered at runtime. */ + color: Color; + constructor(index: number, name: string, parent: BoneData); } -declare module spine { - class PointAttachment extends VertexAttachment { - x: number; - y: number; - rotation: number; - color: Color; - constructor(name: string); - computeWorldPosition(bone: Bone, point: Vector2): Vector2; - computeWorldRotation(bone: Bone): number; - copy(): Attachment; - } +/** Determines how a bone inherits world transforms from parent bones. */ +declare enum TransformMode { + Normal = 0, + OnlyTranslation = 1, + NoRotationOrReflection = 2, + NoScale = 3, + NoScaleOrReflection = 4 } -declare module spine { - class RegionAttachment extends Attachment { - x: number; - y: number; - scaleX: number; - scaleY: number; - rotation: number; - width: number; - height: number; - color: Color; - path: string; - rendererObject: any; - region: TextureRegion; - offset: ArrayLike; - uvs: ArrayLike; - tempColor: Color; - constructor(name: string); - updateOffset(): void; - setRegion(region: TextureRegion): void; - computeWorldVertices(bone: Bone, worldVertices: ArrayLike, offset: number, stride: number): void; - copy(): Attachment; - static X1: number; - static Y1: number; - static C1R: number; - static C1G: number; - static C1B: number; - static C1A: number; - static U1: number; - static V1: number; - static X2: number; - static Y2: number; - static C2R: number; - static C2G: number; - static C2B: number; - static C2A: number; - static U2: number; - static V2: number; - static X3: number; - static Y3: number; - static C3R: number; - static C3G: number; - static C3B: number; - static C3A: number; - static U3: number; - static V3: number; - static X4: number; - static Y4: number; - static C4R: number; - static C4G: number; - static C4B: number; - static C4A: number; - static U4: number; - static V4: number; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores a bone's current pose. + * + * A bone has a local transform which is used to compute its world transform. A bone also has an applied transform, which is a + * local transform that can be applied to compute the world transform. The local transform and applied transform may differ if a + * constraint or application code modifies the world transform after it was computed from the local transform. */ +declare class Bone implements Updatable { + /** The bone's setup pose data. */ + data: BoneData; + /** The skeleton this bone belongs to. */ + skeleton: Skeleton; + /** The parent bone, or null if this is the root bone. */ + parent: Bone; + /** The immediate children of this bone. */ + children: Bone[]; + /** The local x translation. */ + x: number; + /** The local y translation. */ + y: number; + /** The local rotation in degrees, counter clockwise. */ + rotation: number; + /** The local scaleX. */ + scaleX: number; + /** The local scaleY. */ + scaleY: number; + /** The local shearX. */ + shearX: number; + /** The local shearY. */ + shearY: number; + /** The applied local x translation. */ + ax: number; + /** The applied local y translation. */ + ay: number; + /** The applied local rotation in degrees, counter clockwise. */ + arotation: number; + /** The applied local scaleX. */ + ascaleX: number; + /** The applied local scaleY. */ + ascaleY: number; + /** The applied local shearX. */ + ashearX: number; + /** The applied local shearY. */ + ashearY: number; + /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */ + a: number; + /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */ + b: number; + /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */ + c: number; + /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */ + d: number; + /** The world X position. If changed, {@link #updateAppliedTransform()} should be called. */ + worldY: number; + /** The world Y position. If changed, {@link #updateAppliedTransform()} should be called. */ + worldX: number; + sorted: boolean; + active: boolean; + /** @param parent May be null. */ + constructor(data: BoneData, skeleton: Skeleton, parent: Bone); + /** Returns false when the bone has not been computed because {@link BoneData#skinRequired} is true and the + * {@link Skeleton#skin active skin} does not {@link Skin#bones contain} this bone. */ + isActive(): boolean; + /** Computes the world transform using the parent bone and this bone's local applied transform. */ + update(): void; + /** Computes the world transform using the parent bone and this bone's local transform. + * + * See {@link #updateWorldTransformWith()}. */ + updateWorldTransform(): void; + /** Computes the world transform using the parent bone and the specified local transform. The applied transform is set to the + * specified local transform. Child bones are not updated. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. */ + updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; + /** Sets this bone's local transform to the setup pose. */ + setToSetupPose(): void; + /** The world rotation for the X axis, calculated using {@link #a} and {@link #c}. */ + getWorldRotationX(): number; + /** The world rotation for the Y axis, calculated using {@link #b} and {@link #d}. */ + getWorldRotationY(): number; + /** The magnitude (always positive) of the world scale X, calculated using {@link #a} and {@link #c}. */ + getWorldScaleX(): number; + /** The magnitude (always positive) of the world scale Y, calculated using {@link #b} and {@link #d}. */ + getWorldScaleY(): number; + /** Computes the applied transform values from the world transform. + * + * If the world transform is modified (by a constraint, {@link #rotateWorld(float)}, etc) then this method should be called so + * the applied transform matches the world transform. The applied transform may be needed by other code (eg to apply other + * constraints). + * + * Some information is ambiguous in the world transform, such as -1,-1 scale versus 180 rotation. The applied transform after + * calling this method is equivalent to the local transform used to compute the world transform, but may not be identical. */ + updateAppliedTransform(): void; + /** Transforms a point from world coordinates to the bone's local coordinates. */ + worldToLocal(world: Vector2): Vector2; + /** Transforms a point from the bone's local coordinates to world coordinates. */ + localToWorld(local: Vector2): Vector2; + /** Transforms a world rotation to a local rotation. */ + worldToLocalRotation(worldRotation: number): number; + /** Transforms a local rotation to a world rotation. */ + localToWorldRotation(localRotation: number): number; + /** Rotates the world transform the specified amount. + *

        + * After changes are made to the world transform, {@link #updateAppliedTransform()} should be called and {@link #update()} will + * need to be called on any child bones, recursively. */ + rotateWorld(degrees: number): void; } -declare module spine { - class JitterEffect implements VertexEffect { - jitterX: number; - jitterY: number; - constructor(jitterX: number, jitterY: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores a slot's current pose. Slots organize attachments for {@link Skeleton#drawOrder} purposes and provide a place to store + * state for an attachment. State cannot be stored in an attachment itself because attachments are stateless and may be shared + * across multiple skeletons. */ +declare class Slot { + /** The slot's setup pose data. */ + data: SlotData; + /** The bone this slot belongs to. */ + bone: Bone; + /** The color used to tint the slot's attachment. If {@link #getDarkColor()} is set, this is used as the light color for two + * color tinting. */ + color: Color; + /** The dark color used to tint the slot's attachment for two color tinting, or null if two color tinting is not used. The dark + * color's alpha is not used. */ + darkColor: Color; + attachment: Attachment; + private attachmentTime; + attachmentState: number; + /** Values to deform the slot's attachment. For an unweighted mesh, the entries are local positions for each vertex. For a + * weighted mesh, the entries are an offset for each vertex which will be added to the mesh's local vertex positions. + * + * See {@link VertexAttachment#computeWorldVertices()} and {@link DeformTimeline}. */ + deform: number[]; + constructor(data: SlotData, bone: Bone); + /** The skeleton this slot belongs to. */ + getSkeleton(): Skeleton; + /** The current attachment for the slot, or null if the slot has no attachment. */ + getAttachment(): Attachment; + /** Sets the slot's attachment and, if the attachment changed, resets {@link #attachmentTime} and clears the {@link #deform}. + * The deform is not cleared if the old attachment has the same {@link VertexAttachment#getDeformAttachment()} as the specified + * attachment. + * @param attachment May be null. */ + setAttachment(attachment: Attachment): void; + setAttachmentTime(time: number): void; + /** The time that has elapsed since the last time the attachment was set or cleared. Relies on Skeleton + * {@link Skeleton#time}. */ + getAttachmentTime(): number; + /** Sets this slot to the setup pose. */ + setToSetupPose(): void; } -declare module spine { - class SwirlEffect implements VertexEffect { - static interpolation: PowOut; - centerX: number; - centerY: number; - radius: number; - angle: number; - private worldX; - private worldY; - constructor(radius: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** The base class for all attachments. */ +declare abstract class Attachment { + name: string; + constructor(name: string); + abstract copy(): Attachment; } +/** Base class for an attachment with vertices that are transformed by one or more bones and can be deformed by a slot's + * {@link Slot#deform}. */ +declare abstract class VertexAttachment extends Attachment { + private static nextID; + /** The unique ID for this attachment. */ + id: number; + /** The bones which affect the {@link #getVertices()}. The array entries are, for each vertex, the number of bones affecting + * the vertex followed by that many bone indices, which is the index of the bone in {@link Skeleton#bones}. Will be null + * if this attachment has no weights. */ + bones: Array; + /** The vertex positions in the bone's coordinate system. For a non-weighted attachment, the values are `x,y` + * entries for each vertex. For a weighted attachment, the values are `x,y,weight` entries for each bone affecting + * each vertex. */ + vertices: NumberArrayLike; + /** The maximum number of world vertex values that can be output by + * {@link #computeWorldVertices()} using the `count` parameter. */ + worldVerticesLength: number; + /** Deform keys for the deform attachment are also applied to this attachment. May be null if no deform keys should be applied. */ + deformAttachment: VertexAttachment; + constructor(name: string); + /** Transforms the attachment's local {@link #vertices} to world coordinates. If the slot's {@link Slot#deform} is + * not empty, it is used to deform the vertices. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. + * @param start The index of the first {@link #vertices} value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #worldVerticesLength} - `start`. + * @param worldVertices The output world vertices. Must have a length >= `offset` + `count` * + * `stride` / 2. + * @param offset The `worldVertices` index to begin writing values. + * @param stride The number of `worldVertices` entries between the value pairs written. */ + computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: NumberArrayLike, offset: number, stride: number): void; + /** Does not copy id (generated) or name (set on construction). **/ + copyTo(attachment: VertexAttachment): void; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores the current pose values for an {@link Event}. + * + * See Timeline {@link Timeline#apply()}, + * AnimationStateListener {@link AnimationStateListener#event()}, and + * [Events](http://esotericsoftware.com/spine-events) in the Spine User Guide. */ +declare class Event { + data: EventData; + intValue: number; + floatValue: number; + stringValue: string; + time: number; + volume: number; + balance: number; + constructor(time: number, data: EventData); +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** A simple container for a list of timelines and a name. */ +declare class Animation { + /** The animation's name, which is unique across all animations in the skeleton. */ + name: string; + timelines: Array; + timelineIds: StringSet; + /** The duration of the animation in seconds, which is the highest time of all keys in the timeline. */ + duration: number; + constructor(name: string, timelines: Array, duration: number); + setTimelines(timelines: Array): void; + hasTimeline(ids: string[]): boolean; + /** Applies all the animation's timelines to the specified skeleton. + * + * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. + * @param loop If true, the animation repeats after {@link #getDuration()}. + * @param events May be null to ignore fired events. */ + apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Controls how a timeline value is mixed with the setup pose value or current pose value when a timeline's `alpha` + * < 1. + * + * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */ +declare enum MixBlend { + /** Transitions from the setup value to the timeline value (the current value is not used). Before the first key, the setup + * value is set. */ + setup = 0, + /** Transitions from the current value to the timeline value. Before the first key, transitions from the current value to + * the setup value. Timelines which perform instant transitions, such as {@link DrawOrderTimeline} or + * {@link AttachmentTimeline}, use the setup value before the first key. + * + * `first` is intended for the first animations applied, not for animations layered on top of those. */ + first = 1, + /** Transitions from the current value to the timeline value. No change is made before the first key (the current value is + * kept until the first key). + * + * `replace` is intended for animations layered on top of others, not for the first animations applied. */ + replace = 2, + /** Transitions from the current value to the current value plus the timeline value. No change is made before the first key + * (the current value is kept until the first key). + * + * `add` is intended for animations layered on top of others, not for the first animations applied. Properties + * keyed by additive animations must be set manually or by another animation before applying the additive animations, else + * the property values will increase continually. */ + add = 3 +} +/** Indicates whether a timeline's `alpha` is mixing out over time toward 0 (the setup or current pose value) or + * mixing in toward 1 (the timeline's value). + * + * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */ +declare enum MixDirection { + mixIn = 0, + mixOut = 1 +} +/** The interface for all timelines. */ +declare abstract class Timeline { + propertyIds: string[]; + frames: NumberArrayLike; + constructor(frameCount: number, propertyIds: string[]); + getPropertyIds(): string[]; + getFrameEntries(): number; + getFrameCount(): number; + getDuration(): number; + abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + static search1(frames: NumberArrayLike, time: number): number; + static search(frames: NumberArrayLike, time: number, step: number): number; +} +interface BoneTimeline { + /** The index of the bone in {@link Skeleton#bones} that will be changed. */ + boneIndex: number; +} +interface SlotTimeline { + /** The index of the slot in {@link Skeleton#slots} that will be changed. */ + slotIndex: number; +} +/** The base class for timelines that use interpolation between key frame values. */ +declare abstract class CurveTimeline extends Timeline { + protected curves: NumberArrayLike; + constructor(frameCount: number, bezierCount: number, propertyIds: string[]); + /** Sets the specified key frame to linear interpolation. */ + setLinear(frame: number): void; + /** Sets the specified key frame to stepped interpolation. */ + setStepped(frame: number): void; + /** Shrinks the storage for Bezier curves, for use when bezierCount (specified in the constructor) was larger + * than the actual number of Bezier curves. */ + shrink(bezierCount: number): void; + /** Stores the segments for the specified Bezier curve. For timelines that modify multiple values, there may be more than + * one curve per frame. + * @param bezier The ordinal of this Bezier curve for this timeline, between 0 and bezierCount - 1 (specified + * in the constructor), inclusive. + * @param frame Between 0 and frameCount - 1, inclusive. + * @param value The index of the value for this frame that this curve is used for. + * @param time1 The time for the first key. + * @param value1 The value for the first key. + * @param cx1 The time for the first Bezier handle. + * @param cy1 The value for the first Bezier handle. + * @param cx2 The time of the second Bezier handle. + * @param cy2 The value for the second Bezier handle. + * @param time2 The time for the second key. + * @param value2 The value for the second key. */ + setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; + /** Returns the Bezier interpolated value for the specified time. + * @param frameIndex The index into {@link #getFrames()} for the values of the frame before time. + * @param valueOffset The offset from frameIndex to the value this curve is used for. + * @param i The index of the Bezier segments. See {@link #getCurveType(int)}. */ + getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number; +} +declare abstract class CurveTimeline1 extends CurveTimeline { + constructor(frameCount: number, bezierCount: number, propertyId: string); + getFrameEntries(): number; + /** Sets the time and value for the specified frame. + * @param frame Between 0 and frameCount, inclusive. + * @param time The frame time in seconds. */ + setFrame(frame: number, time: number, value: number): void; + /** Returns the interpolated value for the specified time. */ + getCurveValue(time: number): number; +} +/** The base class for a {@link CurveTimeline} which sets two properties. */ +declare abstract class CurveTimeline2 extends CurveTimeline { + /** @param bezierCount The maximum number of Bezier curves. See {@link #shrink(int)}. + * @param propertyIds Unique identifiers for the properties the timeline modifies. */ + constructor(frameCount: number, bezierCount: number, propertyId1: string, propertyId2: string); + getFrameEntries(): number; + /** Sets the time and values for the specified frame. + * @param frame Between 0 and frameCount, inclusive. + * @param time The frame time in seconds. */ + setFrame(frame: number, time: number, value1: number, value2: number): void; +} +/** Changes a bone's local {@link Bone#rotation}. */ +declare class RotateTimeline extends CurveTimeline1 implements BoneTimeline { + boneIndex: number; + constructor(frameCount: number, bezierCount: number, boneIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a bone's local {@link Bone#x} and {@link Bone#y}. */ +declare class TranslateTimeline extends CurveTimeline2 implements BoneTimeline { + boneIndex: number; + constructor(frameCount: number, bezierCount: number, boneIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a bone's local {@link Bone#x}. */ +declare class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline { + boneIndex: number; + constructor(frameCount: number, bezierCount: number, boneIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a bone's local {@link Bone#x}. */ +declare class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline { + boneIndex: number; + constructor(frameCount: number, bezierCount: number, boneIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */ +declare class ScaleTimeline extends CurveTimeline2 implements BoneTimeline { + boneIndex: number; + constructor(frameCount: number, bezierCount: number, boneIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */ +declare class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline { + boneIndex: number; + constructor(frameCount: number, bezierCount: number, boneIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */ +declare class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline { + boneIndex: number; + constructor(frameCount: number, bezierCount: number, boneIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ +declare class ShearTimeline extends CurveTimeline2 implements BoneTimeline { + boneIndex: number; + constructor(frameCount: number, bezierCount: number, boneIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ +declare class ShearXTimeline extends CurveTimeline1 implements BoneTimeline { + boneIndex: number; + constructor(frameCount: number, bezierCount: number, boneIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ +declare class ShearYTimeline extends CurveTimeline1 implements BoneTimeline { + boneIndex: number; + constructor(frameCount: number, bezierCount: number, boneIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a slot's {@link Slot#color}. */ +declare class RGBATimeline extends CurveTimeline implements SlotTimeline { + slotIndex: number; + constructor(frameCount: number, bezierCount: number, slotIndex: number); + getFrameEntries(): number; + /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */ + setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a slot's {@link Slot#color}. */ +declare class RGBTimeline extends CurveTimeline implements SlotTimeline { + slotIndex: number; + constructor(frameCount: number, bezierCount: number, slotIndex: number); + getFrameEntries(): number; + /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */ + setFrame(frame: number, time: number, r: number, g: number, b: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ +declare class AlphaTimeline extends CurveTimeline1 implements SlotTimeline { + slotIndex: number; + constructor(frameCount: number, bezierCount: number, slotIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */ +declare class RGBA2Timeline extends CurveTimeline implements SlotTimeline { + slotIndex: number; + constructor(frameCount: number, bezierCount: number, slotIndex: number); + getFrameEntries(): number; + /** Sets the time in seconds, light, and dark colors for the specified key frame. */ + setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */ +declare class RGB2Timeline extends CurveTimeline implements SlotTimeline { + slotIndex: number; + constructor(frameCount: number, bezierCount: number, slotIndex: number); + getFrameEntries(): number; + /** Sets the time in seconds, light, and dark colors for the specified key frame. */ + setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a slot's {@link Slot#attachment}. */ +declare class AttachmentTimeline extends Timeline implements SlotTimeline { + slotIndex: number; + /** The attachment name for each key frame. May contain null values to clear the attachment. */ + attachmentNames: Array; + constructor(frameCount: number, slotIndex: number); + getFrameCount(): number; + /** Sets the time in seconds and the attachment name for the specified key frame. */ + setFrame(frame: number, time: number, attachmentName: string): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; +} +/** Changes a slot's {@link Slot#deform} to deform a {@link VertexAttachment}. */ +declare class DeformTimeline extends CurveTimeline implements SlotTimeline { + slotIndex: number; + /** The attachment that will be deformed. */ + attachment: VertexAttachment; + /** The vertices for each key frame. */ + vertices: Array; + constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment); + getFrameCount(): number; + /** Sets the time in seconds and the vertices for the specified key frame. + * @param vertices Vertex positions for an unweighted VertexAttachment, or deform offsets if it has weights. */ + setFrame(frame: number, time: number, vertices: NumberArrayLike): void; + /** @param value1 Ignored (0 is used for a deform timeline). + * @param value2 Ignored (1 is used for a deform timeline). */ + setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; + getCurvePercent(time: number, frame: number): number; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Fires an {@link Event} when specific animation times are reached. */ +declare class EventTimeline extends Timeline { + static propertyIds: string[]; + /** The event for each key frame. */ + events: Array; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time in seconds and the event for the specified key frame. */ + setFrame(frame: number, event: Event): void; + /** Fires events for frames > `lastTime` and <= `time`. */ + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a skeleton's {@link Skeleton#drawOrder}. */ +declare class DrawOrderTimeline extends Timeline { + static propertyIds: string[]; + /** The draw order for each key frame. See {@link #setFrame(int, float, int[])}. */ + drawOrders: Array>; + constructor(frameCount: number); + getFrameCount(): number; + /** Sets the time in seconds and the draw order for the specified key frame. + * @param drawOrder For each slot in {@link Skeleton#slots}, the index of the new draw order. May be null to use setup pose + * draw order. */ + setFrame(frame: number, time: number, drawOrder: Array): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes an IK constraint's {@link IkConstraint#mix}, {@link IkConstraint#softness}, + * {@link IkConstraint#bendDirection}, {@link IkConstraint#stretch}, and {@link IkConstraint#compress}. */ +declare class IkConstraintTimeline extends CurveTimeline { + /** The index of the IK constraint slot in {@link Skeleton#ikConstraints} that will be changed. */ + ikConstraintIndex: number; + constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number); + getFrameEntries(): number; + /** Sets the time in seconds, mix, softness, bend direction, compress, and stretch for the specified key frame. */ + setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a transform constraint's {@link TransformConstraint#rotateMix}, {@link TransformConstraint#translateMix}, + * {@link TransformConstraint#scaleMix}, and {@link TransformConstraint#shearMix}. */ +declare class TransformConstraintTimeline extends CurveTimeline { + /** The index of the transform constraint slot in {@link Skeleton#transformConstraints} that will be changed. */ + transformConstraintIndex: number; + constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number); + getFrameEntries(): number; + /** The time in seconds, rotate mix, translate mix, scale mix, and shear mix for the specified key frame. */ + setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a path constraint's {@link PathConstraint#position}. */ +declare class PathConstraintPositionTimeline extends CurveTimeline1 { + /** The index of the path constraint slot in {@link Skeleton#pathConstraints} that will be changed. */ + pathConstraintIndex: number; + constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a path constraint's {@link PathConstraint#spacing}. */ +declare class PathConstraintSpacingTimeline extends CurveTimeline1 { + /** The index of the path constraint slot in {@link Skeleton#getPathConstraints()} that will be changed. */ + pathConstraintIndex: number; + constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} +/** Changes a transform constraint's {@link PathConstraint#getMixRotate()}, {@link PathConstraint#getMixX()}, and + * {@link PathConstraint#getMixY()}. */ +declare class PathConstraintMixTimeline extends CurveTimeline { + /** The index of the path constraint slot in {@link Skeleton#getPathConstraints()} that will be changed. */ + pathConstraintIndex: number; + constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); + getFrameEntries(): number; + setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Stores mix (crossfade) durations to be applied when {@link AnimationState} animations are changed. */ +declare class AnimationStateData { + /** The SkeletonData to look up animations when they are specified by name. */ + skeletonData: SkeletonData; + animationToMixTime: StringMap; + /** The mix duration to use when no mix duration has been defined between two animations. */ + defaultMix: number; + constructor(skeletonData: SkeletonData); + /** Sets a mix duration by animation name. + * + * See {@link #setMixWith()}. */ + setMix(fromName: string, toName: string, duration: number): void; + /** Sets the mix duration when changing from the specified animation to the other. + * + * See {@link TrackEntry#mixDuration}. */ + setMixWith(from: Animation, to: Animation, duration: number): void; + /** Returns the mix duration to use when changing from the specified animation to the other, or the {@link #defaultMix} if + * no mix duration has been set. */ + getMix(from: Animation, to: Animation): number; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Applies animations over time, queues animations for later playback, mixes (crossfading) between animations, and applies + * multiple animations on top of each other (layering). + * + * See [Applying Animations](http://esotericsoftware.com/spine-applying-animations/) in the Spine Runtimes Guide. */ +declare class AnimationState { + private static emptyAnimation; + /** The AnimationStateData to look up mix durations. */ + data: AnimationStateData; + /** The list of tracks that currently have animations, which may contain null entries. */ + tracks: TrackEntry[]; + /** Multiplier for the delta time when the animation state is updated, causing time for all animations and mixes to play slower + * or faster. Defaults to 1. + * + * See TrackEntry {@link TrackEntry#timeScale} for affecting a single animation. */ + timeScale: number; + unkeyedState: number; + events: Event[]; + listeners: AnimationStateListener[]; + queue: EventQueue; + propertyIDs: StringSet; + animationsChanged: boolean; + trackEntryPool: Pool; + constructor(data: AnimationStateData); + /** Increments each track entry {@link TrackEntry#trackTime()}, setting queued animations as current if needed. */ + update(delta: number): void; + /** Returns true when all mixing from entries are complete. */ + updateMixingFrom(to: TrackEntry, delta: number): boolean; + /** Poses the skeleton using the track entry animations. There are no side effects other than invoking listeners, so the + * animation state can be applied to multiple skeletons to pose them identically. + * @returns True if any animations were applied. */ + apply(skeleton: Skeleton): boolean; + applyMixingFrom(to: TrackEntry, skeleton: Skeleton, blend: MixBlend): number; + applyAttachmentTimeline(timeline: AttachmentTimeline, skeleton: Skeleton, time: number, blend: MixBlend, attachments: boolean): void; + setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string, attachments: boolean): void; + applyRotateTimeline(timeline: RotateTimeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array, i: number, firstFrame: boolean): void; + queueEvents(entry: TrackEntry, animationTime: number): void; + /** Removes all animations from all tracks, leaving skeletons in their current pose. + * + * It may be desired to use {@link AnimationState#setEmptyAnimation()} to mix the skeletons back to the setup pose, + * rather than leaving them in their current pose. */ + clearTracks(): void; + /** Removes all animations from the track, leaving skeletons in their current pose. + * + * It may be desired to use {@link AnimationState#setEmptyAnimation()} to mix the skeletons back to the setup pose, + * rather than leaving them in their current pose. */ + clearTrack(trackIndex: number): void; + setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; + /** Sets an animation by name. + * + * See {@link #setAnimationWith()}. */ + setAnimation(trackIndex: number, animationName: string, loop?: boolean): TrackEntry; + /** Sets the current animation for a track, discarding any queued animations. If the formerly current track entry was never + * applied to a skeleton, it is replaced (not mixed from). + * @param loop If true, the animation will repeat. If false it will not, instead its last frame is applied if played beyond its + * duration. In either case {@link TrackEntry#trackEnd} determines when the track is cleared. + * @returns A track entry to allow further customization of animation playback. References to the track entry must not be kept + * after the {@link AnimationStateListener#dispose()} event occurs. */ + setAnimationWith(trackIndex: number, animation: Animation, loop?: boolean): TrackEntry; + /** Queues an animation by name. + * + * See {@link #addAnimationWith()}. */ + addAnimation(trackIndex: number, animationName: string, loop?: boolean, delay?: number): TrackEntry; + /** Adds an animation to be played after the current or last queued animation for a track. If the track is empty, it is + * equivalent to calling {@link #setAnimationWith()}. + * @param delay If > 0, sets {@link TrackEntry#delay}. If <= 0, the delay set is the duration of the previous track entry + * minus any mix duration (from the {@link AnimationStateData}) plus the specified `delay` (ie the mix + * ends at (`delay` = 0) or before (`delay` < 0) the previous track entry duration). If the + * previous entry is looping, its next loop completion is used instead of its duration. + * @returns A track entry to allow further customization of animation playback. References to the track entry must not be kept + * after the {@link AnimationStateListener#dispose()} event occurs. */ + addAnimationWith(trackIndex: number, animation: Animation, loop?: boolean, delay?: number): TrackEntry; + /** Sets an empty animation for a track, discarding any queued animations, and sets the track entry's + * {@link TrackEntry#mixduration}. An empty animation has no timelines and serves as a placeholder for mixing in or out. + * + * Mixing out is done by setting an empty animation with a mix duration using either {@link #setEmptyAnimation()}, + * {@link #setEmptyAnimations()}, or {@link #addEmptyAnimation()}. Mixing to an empty animation causes + * the previous animation to be applied less and less over the mix duration. Properties keyed in the previous animation + * transition to the value from lower tracks or to the setup pose value if no lower tracks key the property. A mix duration of + * 0 still mixes out over one frame. + * + * Mixing in is done by first setting an empty animation, then adding an animation using + * {@link #addAnimation()} and on the returned track entry, set the + * {@link TrackEntry#setMixDuration()}. Mixing from an empty animation causes the new animation to be applied more and + * more over the mix duration. Properties keyed in the new animation transition from the value from lower tracks or from the + * setup pose value if no lower tracks key the property to the value keyed in the new animation. */ + setEmptyAnimation(trackIndex: number, mixDuration?: number): TrackEntry; + /** Adds an empty animation to be played after the current or last queued animation for a track, and sets the track entry's + * {@link TrackEntry#mixDuration}. If the track is empty, it is equivalent to calling + * {@link #setEmptyAnimation()}. + * + * See {@link #setEmptyAnimation()}. + * @param delay If > 0, sets {@link TrackEntry#delay}. If <= 0, the delay set is the duration of the previous track entry + * minus any mix duration plus the specified `delay` (ie the mix ends at (`delay` = 0) or + * before (`delay` < 0) the previous track entry duration). If the previous entry is looping, its next + * loop completion is used instead of its duration. + * @return A track entry to allow further customization of animation playback. References to the track entry must not be kept + * after the {@link AnimationStateListener#dispose()} event occurs. */ + addEmptyAnimation(trackIndex: number, mixDuration?: number, delay?: number): TrackEntry; + /** Sets an empty animation for every track, discarding any queued animations, and mixes to it over the specified mix + * duration. */ + setEmptyAnimations(mixDuration?: number): void; + expandToIndex(index: number): TrackEntry; + /** @param last May be null. */ + trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; + /** Removes the {@link TrackEntry#getNext() next entry} and all entries after it for the specified entry. */ + clearNext(entry: TrackEntry): void; + _animationsChanged(): void; + computeHold(entry: TrackEntry): void; + /** Returns the track entry for the animation currently playing on the track, or null if no animation is currently playing. */ + getCurrent(trackIndex: number): TrackEntry; + /** Adds a listener to receive events for all track entries. */ + addListener(listener: AnimationStateListener): void; + /** Removes the listener added with {@link #addListener()}. */ + removeListener(listener: AnimationStateListener): void; + /** Removes all listeners added with {@link #addListener()}. */ + clearListeners(): void; + /** Discards all listener notifications that have not yet been delivered. This can be useful to call from an + * {@link AnimationStateListener} when it is known that further notifications that may have been already queued for delivery + * are not wanted because new animations are being set. */ + clearListenerNotifications(): void; +} +/** Stores settings and other state for the playback of an animation on an {@link AnimationState} track. + * + * References to a track entry must not be kept after the {@link AnimationStateListener#dispose()} event occurs. */ +declare class TrackEntry { + /** The animation to apply for this track entry. */ + animation: Animation; + previous: TrackEntry; + /** The animation queued to start after this animation, or null. `next` makes up a linked list. */ + next: TrackEntry; + /** The track entry for the previous animation when mixing from the previous animation to this animation, or null if no + * mixing is currently occuring. When mixing from multiple animations, `mixingFrom` makes up a linked list. */ + mixingFrom: TrackEntry; + /** The track entry for the next animation when mixing from this animation to the next animation, or null if no mixing is + * currently occuring. When mixing to multiple animations, `mixingTo` makes up a linked list. */ + mixingTo: TrackEntry; + /** The listener for events generated by this track entry, or null. + * + * A track entry returned from {@link AnimationState#setAnimation()} is already the current animation + * for the track, so the track entry listener {@link AnimationStateListener#start()} will not be called. */ + listener: AnimationStateListener; + /** The index of the track where this track entry is either current or queued. + * + * See {@link AnimationState#getCurrent()}. */ + trackIndex: number; + /** If true, the animation will repeat. If false it will not, instead its last frame is applied if played beyond its + * duration. */ + loop: boolean; + /** If true, when mixing from the previous animation to this animation, the previous animation is applied as normal instead + * of being mixed out. + * + * When mixing between animations that key the same property, if a lower track also keys that property then the value will + * briefly dip toward the lower track value during the mix. This happens because the first animation mixes from 100% to 0% + * while the second animation mixes from 0% to 100%. Setting `holdPrevious` to true applies the first animation + * at 100% during the mix so the lower track value is overwritten. Such dipping does not occur on the lowest track which + * keys the property, only when a higher track also keys the property. + * + * Snapping will occur if `holdPrevious` is true and this animation does not key all the same properties as the + * previous animation. */ + holdPrevious: boolean; + reverse: boolean; + /** When the mix percentage ({@link #mixTime} / {@link #mixDuration}) is less than the + * `eventThreshold`, event timelines are applied while this animation is being mixed out. Defaults to 0, so event + * timelines are not applied while this animation is being mixed out. */ + eventThreshold: number; + /** When the mix percentage ({@link #mixtime} / {@link #mixDuration}) is less than the + * `attachmentThreshold`, attachment timelines are applied while this animation is being mixed out. Defaults to + * 0, so attachment timelines are not applied while this animation is being mixed out. */ + attachmentThreshold: number; + /** When the mix percentage ({@link #mixTime} / {@link #mixDuration}) is less than the + * `drawOrderThreshold`, draw order timelines are applied while this animation is being mixed out. Defaults to 0, + * so draw order timelines are not applied while this animation is being mixed out. */ + drawOrderThreshold: number; + /** Seconds when this animation starts, both initially and after looping. Defaults to 0. + * + * When changing the `animationStart` time, it often makes sense to set {@link #animationLast} to the same + * value to prevent timeline keys before the start time from triggering. */ + animationStart: number; + /** Seconds for the last frame of this animation. Non-looping animations won't play past this time. Looping animations will + * loop back to {@link #animationStart} at this time. Defaults to the animation {@link Animation#duration}. */ + animationEnd: number; + /** The time in seconds this animation was last applied. Some timelines use this for one-time triggers. Eg, when this + * animation is applied, event timelines will fire all events between the `animationLast` time (exclusive) and + * `animationTime` (inclusive). Defaults to -1 to ensure triggers on frame 0 happen the first time this animation + * is applied. */ + animationLast: number; + nextAnimationLast: number; + /** Seconds to postpone playing the animation. When this track entry is the current track entry, `delay` + * postpones incrementing the {@link #trackTime}. When this track entry is queued, `delay` is the time from + * the start of the previous animation to when this track entry will become the current track entry (ie when the previous + * track entry {@link TrackEntry#trackTime} >= this track entry's `delay`). + * + * {@link #timeScale} affects the delay. */ + delay: number; + /** Current time in seconds this track entry has been the current track entry. The track time determines + * {@link #animationTime}. The track time can be set to start the animation at a time other than 0, without affecting + * looping. */ + trackTime: number; + trackLast: number; + nextTrackLast: number; + /** The track time in seconds when this animation will be removed from the track. Defaults to the highest possible float + * value, meaning the animation will be applied until a new animation is set or the track is cleared. If the track end time + * is reached, no other animations are queued for playback, and mixing from any previous animations is complete, then the + * properties keyed by the animation are set to the setup pose and the track is cleared. + * + * It may be desired to use {@link AnimationState#addEmptyAnimation()} rather than have the animation + * abruptly cease being applied. */ + trackEnd: number; + /** Multiplier for the delta time when this track entry is updated, causing time for this animation to pass slower or + * faster. Defaults to 1. + * + * {@link #mixTime} is not affected by track entry time scale, so {@link #mixDuration} may need to be adjusted to + * match the animation speed. + * + * When using {@link AnimationState#addAnimation()} with a `delay` <= 0, note the + * {@link #delay} is set using the mix duration from the {@link AnimationStateData}, assuming time scale to be 1. If + * the time scale is not 1, the delay may need to be adjusted. + * + * See AnimationState {@link AnimationState#timeScale} for affecting all animations. */ + timeScale: number; + /** Values < 1 mix this animation with the skeleton's current pose (usually the pose resulting from lower tracks). Defaults + * to 1, which overwrites the skeleton's current pose with this animation. + * + * Typically track 0 is used to completely pose the skeleton, then alpha is used on higher tracks. It doesn't make sense to + * use alpha on track 0 if the skeleton pose is from the last frame render. */ + alpha: number; + /** Seconds from 0 to the {@link #getMixDuration()} when mixing from the previous animation to this animation. May be + * slightly more than `mixDuration` when the mix is complete. */ + mixTime: number; + /** Seconds for mixing from the previous animation to this animation. Defaults to the value provided by AnimationStateData + * {@link AnimationStateData#getMix()} based on the animation before this animation (if any). + * + * A mix duration of 0 still mixes out over one frame to provide the track entry being mixed out a chance to revert the + * properties it was animating. + * + * The `mixDuration` can be set manually rather than use the value from + * {@link AnimationStateData#getMix()}. In that case, the `mixDuration` can be set for a new + * track entry only before {@link AnimationState#update(float)} is first called. + * + * When using {@link AnimationState#addAnimation()} with a `delay` <= 0, note the + * {@link #delay} is set using the mix duration from the {@link AnimationStateData}, not a mix duration set + * afterward. */ + mixDuration: number; + interruptAlpha: number; + totalAlpha: number; + /** Controls how properties keyed in the animation are mixed with lower tracks. Defaults to {@link MixBlend#replace}, which + * replaces the values from the lower tracks with the animation values. {@link MixBlend#add} adds the animation values to + * the values from the lower tracks. + * + * The `mixBlend` can be set for a new track entry only before {@link AnimationState#apply()} is first + * called. */ + mixBlend: MixBlend; + timelineMode: number[]; + timelineHoldMix: TrackEntry[]; + timelinesRotation: number[]; + reset(): void; + /** Uses {@link #trackTime} to compute the `animationTime`, which is between {@link #animationStart} + * and {@link #animationEnd}. When the `trackTime` is 0, the `animationTime` is equal to the + * `animationStart` time. */ + getAnimationTime(): number; + setAnimationLast(animationLast: number): void; + /** Returns true if at least one loop has been completed. + * + * See {@link AnimationStateListener#complete()}. */ + isComplete(): boolean; + /** Resets the rotation directions for mixing this entry's rotate timelines. This can be useful to avoid bones rotating the + * long way around when using {@link #alpha} and starting animations on other tracks. + * + * Mixing with {@link MixBlend#replace} involves finding a rotation between two others, which has two possible solutions: + * the short way or the long way around. The two rotations likely change over time, so which direction is the short or long + * way also changes. If the short way was always chosen, bones would flip to the other side when that direction became the + * long way. TrackEntry chooses the short way the first time it is applied and remembers that direction. */ + resetRotationDirections(): void; + getTrackComplete(): number; +} +declare class EventQueue { + objects: Array; + drainDisabled: boolean; + animState: AnimationState; + constructor(animState: AnimationState); + start(entry: TrackEntry): void; + interrupt(entry: TrackEntry): void; + end(entry: TrackEntry): void; + dispose(entry: TrackEntry): void; + complete(entry: TrackEntry): void; + event(entry: TrackEntry, event: Event): void; + drain(): void; + clear(): void; +} +declare enum EventType { + start = 0, + interrupt = 1, + end = 2, + dispose = 3, + complete = 4, + event = 5 +} +/** The interface to implement for receiving TrackEntry events. It is always safe to call AnimationState methods when receiving + * events. + * + * See TrackEntry {@link TrackEntry#listener} and AnimationState + * {@link AnimationState#addListener()}. */ +interface AnimationStateListener { + /** Invoked when this entry has been set as the current entry. */ + start(entry: TrackEntry): void; + /** Invoked when another entry has replaced this entry as the current entry. This entry may continue being applied for + * mixing. */ + interrupt(entry: TrackEntry): void; + /** Invoked when this entry is no longer the current entry and will never be applied again. */ + end(entry: TrackEntry): void; + /** Invoked when this entry will be disposed. This may occur without the entry ever being set as the current entry. + * References to the entry should not be kept after dispose is called, as it may be destroyed or reused. */ + dispose(entry: TrackEntry): void; + /** Invoked every time this entry's animation completes a loop. */ + complete(entry: TrackEntry): void; + /** Invoked when this entry's animation triggers an event. */ + event(entry: TrackEntry, event: Event): void; +} +declare abstract class AnimationStateAdapter implements AnimationStateListener { + start(entry: TrackEntry): void; + interrupt(entry: TrackEntry): void; + end(entry: TrackEntry): void; + dispose(entry: TrackEntry): void; + complete(entry: TrackEntry): void; + event(entry: TrackEntry, event: Event): void; +} +/** 1. A previously applied timeline has set this property. + * + * Result: Mix from the current pose to the timeline pose. */ +declare const SUBSEQUENT = 0; +/** 1. This is the first timeline to set this property. + * 2. The next track entry applied after this one does not have a timeline to set this property. + * + * Result: Mix from the setup pose to the timeline pose. */ +declare const FIRST = 1; +/** 1) A previously applied timeline has set this property.
        + * 2) The next track entry to be applied does have a timeline to set this property.
        + * 3) The next track entry after that one does not have a timeline to set this property.
        + * Result: Mix from the current pose to the timeline pose, but do not mix out. This avoids "dipping" when crossfading + * animations that key the same property. A subsequent timeline will set this property using a mix. */ +declare const HOLD_SUBSEQUENT = 2; +/** 1) This is the first timeline to set this property.
        + * 2) The next track entry to be applied does have a timeline to set this property.
        + * 3) The next track entry after that one does not have a timeline to set this property.
        + * Result: Mix from the setup pose to the timeline pose, but do not mix out. This avoids "dipping" when crossfading animations + * that key the same property. A subsequent timeline will set this property using a mix. */ +declare const HOLD_FIRST = 3; +/** 1. This is the first timeline to set this property. + * 2. The next track entry to be applied does have a timeline to set this property. + * 3. The next track entry after that one does have a timeline to set this property. + * 4. timelineHoldMix stores the first subsequent track entry that does not have a timeline to set this property. + * + * Result: The same as HOLD except the mix percentage from the timelineHoldMix track entry is used. This handles when more than + * 2 track entries in a row have a timeline that sets the same property. + * + * Eg, A -> B -> C -> D where A, B, and C have a timeline setting same property, but D does not. When A is applied, to avoid + * "dipping" A is not mixed out, however D (the first entry that doesn't set the property) mixing in is used to mix out A + * (which affects B and C). Without using D to mix out, A would be applied fully until mixing completes, then snap into + * place. */ +declare const HOLD_MIX = 4; +declare const SETUP = 1; +declare const CURRENT = 2; + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** An attachment with vertices that make up a polygon. Can be used for hit detection, creating physics bodies, spawning particle + * effects, and more. + * + * See {@link SkeletonBounds} and [Bounding Boxes](http://esotericsoftware.com/spine-bounding-boxes) in the Spine User + * Guide. */ +declare class BoundingBoxAttachment extends VertexAttachment { + color: Color; + constructor(name: string); + copy(): Attachment; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** An attachment with vertices that make up a polygon used for clipping the rendering of other attachments. */ +declare class ClippingAttachment extends VertexAttachment { + /** Clipping is performed between the clipping polygon's slot and the end slot. Returns null if clipping is done until the end of + * the skeleton's rendering. */ + endSlot: SlotData; + /** The color of the clipping polygon as it was in Spine. Available only when nonessential data was exported. Clipping polygons + * are not usually rendered at runtime. */ + color: Color; + constructor(name: string); + copy(): Attachment; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ +declare abstract class Texture { + protected _image: HTMLImageElement | ImageBitmap; + constructor(image: HTMLImageElement | ImageBitmap); + getImage(): HTMLImageElement | ImageBitmap; + abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + abstract dispose(): void; +} +declare enum TextureFilter { + Nearest = 9728, + Linear = 9729, + MipMap = 9987, + MipMapNearestNearest = 9984, + MipMapLinearNearest = 9985, + MipMapNearestLinear = 9986, + MipMapLinearLinear = 9987 +} +declare enum TextureWrap { + MirroredRepeat = 33648, + ClampToEdge = 33071, + Repeat = 10497 +} +declare class TextureRegion { + renderObject: any; + u: number; + v: number; + u2: number; + v2: number; + width: number; + height: number; + degrees: number; + offsetX: number; + offsetY: number; + originalWidth: number; + originalHeight: number; +} +declare class FakeTexture extends Texture { + setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + dispose(): void; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** An attachment that displays a textured mesh. A mesh has hull vertices and internal vertices within the hull. Holes are not + * supported. Each vertex has UVs (texture coordinates) and triangles are used to map an image on to the mesh. + * + * See [Mesh attachments](http://esotericsoftware.com/spine-meshes) in the Spine User Guide. */ +declare class MeshAttachment extends VertexAttachment { + region: TextureRegion; + /** The name of the texture region for this attachment. */ + path: string; + /** The UV pair for each vertex, normalized within the texture region. */ + regionUVs: NumberArrayLike; + /** The UV pair for each vertex, normalized within the entire texture. + * + * See {@link #updateUVs}. */ + uvs: NumberArrayLike; + /** Triplets of vertex indices which describe the mesh's triangulation. */ + triangles: Array; + /** The color to tint the mesh. */ + color: Color; + /** The width of the mesh's image. Available only when nonessential data was exported. */ + width: number; + /** The height of the mesh's image. Available only when nonessential data was exported. */ + height: number; + /** The number of entries at the beginning of {@link #vertices} that make up the mesh hull. */ + hullLength: number; + /** Vertex index pairs describing edges for controling triangulation. Mesh triangles will never cross edges. Only available if + * nonessential data was exported. Triangulation is not performed at runtime. */ + edges: Array; + private parentMesh; + tempColor: Color; + constructor(name: string); + /** Calculates {@link #uvs} using {@link #regionUVs} and the {@link #region}. Must be called after changing the region UVs or + * region. */ + updateUVs(): void; + /** The parent mesh if this is a linked mesh, else null. A linked mesh shares the {@link #bones}, {@link #vertices}, + * {@link #regionUVs}, {@link #triangles}, {@link #hullLength}, {@link #edges}, {@link #width}, and {@link #height} with the + * parent mesh, but may have a different {@link #name} or {@link #path} (and therefore a different texture). */ + getParentMesh(): MeshAttachment; + /** @param parentMesh May be null. */ + setParentMesh(parentMesh: MeshAttachment): void; + copy(): Attachment; + /** Returns a new mesh with the {@link #parentMesh} set to this mesh's parent mesh, if any, else to this mesh. **/ + newLinkedMesh(): MeshAttachment; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** An attachment which is a single point and a rotation. This can be used to spawn projectiles, particles, etc. A bone can be + * used in similar ways, but a PointAttachment is slightly less expensive to compute and can be hidden, shown, and placed in a + * skin. + * + * See [Point Attachments](http://esotericsoftware.com/spine-point-attachments) in the Spine User Guide. */ +declare class PointAttachment extends VertexAttachment { + x: number; + y: number; + rotation: number; + /** The color of the point attachment as it was in Spine. Available only when nonessential data was exported. Point attachments + * are not usually rendered at runtime. */ + color: Color; + constructor(name: string); + computeWorldPosition(bone: Bone, point: Vector2): Vector2; + computeWorldRotation(bone: Bone): number; + copy(): Attachment; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** An attachment that displays a textured quadrilateral. + * + * See [Region attachments](http://esotericsoftware.com/spine-regions) in the Spine User Guide. */ +declare class RegionAttachment extends Attachment { + /** The local x translation. */ + x: number; + /** The local y translation. */ + y: number; + /** The local scaleX. */ + scaleX: number; + /** The local scaleY. */ + scaleY: number; + /** The local rotation. */ + rotation: number; + /** The width of the region attachment in Spine. */ + width: number; + /** The height of the region attachment in Spine. */ + height: number; + /** The color to tint the region attachment. */ + color: Color; + /** The name of the texture region for this attachment. */ + path: string; + rendererObject: any; + region: TextureRegion; + /** For each of the 4 vertices, a pair of x,y values that is the local position of the vertex. + * + * See {@link #updateOffset()}. */ + offset: NumberArrayLike; + uvs: NumberArrayLike; + tempColor: Color; + constructor(name: string); + /** Calculates the {@link #offset} using the region settings. Must be called after changing region settings. */ + updateOffset(): void; + setRegion(region: TextureRegion): void; + /** Transforms the attachment's four vertices to world coordinates. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. + * @param worldVertices The output world vertices. Must have a length >= `offset` + 8. + * @param offset The `worldVertices` index to begin writing values. + * @param stride The number of `worldVertices` entries between the value pairs written. */ + computeWorldVertices(bone: Bone, worldVertices: NumberArrayLike, offset: number, stride: number): void; + copy(): Attachment; + static X1: number; + static Y1: number; + static C1R: number; + static C1G: number; + static C1B: number; + static C1A: number; + static U1: number; + static V1: number; + static X2: number; + static Y2: number; + static C2R: number; + static C2G: number; + static C2B: number; + static C2A: number; + static U2: number; + static V2: number; + static X3: number; + static Y3: number; + static C3R: number; + static C3G: number; + static C3B: number; + static C3A: number; + static U3: number; + static V3: number; + static X4: number; + static Y4: number; + static C4R: number; + static C4G: number; + static C4B: number; + static C4A: number; + static U4: number; + static V4: number; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** The interface which can be implemented to customize creating and populating attachments. + * + * See [Loading skeleton data](http://esotericsoftware.com/spine-loading-skeleton-data#AttachmentLoader) in the Spine + * Runtimes Guide. */ +interface AttachmentLoader { + /** @return May be null to not load an attachment. */ + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + /** @return May be null to not load an attachment. */ + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + /** @return May be null to not load an attachment. */ + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + /** @return May be null to not load an attachment */ + newPathAttachment(skin: Skin, name: string): PathAttachment; + /** @return May be null to not load an attachment */ + newPointAttachment(skin: Skin, name: string): PointAttachment; + /** @return May be null to not load an attachment */ + newClippingAttachment(skin: Skin, name: string): ClippingAttachment; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +declare class AssetManagerBase implements Disposable { + private pathPrefix; + private textureLoader; + private downloader; + private assets; + private errors; + private toLoad; + private loaded; + constructor(textureLoader: (image: HTMLImageElement | ImageBitmap) => Texture, pathPrefix?: string, downloader?: Downloader); + private start; + private success; + private error; + setRawDataURI(path: string, data: string): void; + loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, message: string) => void): void; + loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, message: string) => void): void; + loadJson(path: string, success?: (path: string, object: object) => void, error?: (path: string, message: string) => void): void; + loadTexture(path: string, success?: (path: string, texture: Texture) => void, error?: (path: string, message: string) => void): void; + loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, message: string) => void): void; + get(path: string): any; + require(path: string): any; + remove(path: string): any; + removeAll(): void; + isLoadingComplete(): boolean; + getToLoad(): number; + getLoaded(): number; + dispose(): void; + hasErrors(): boolean; + getErrors(): StringMap; +} +declare class Downloader { + private callbacks; + rawDataUris: StringMap; + downloadText(url: string, success: (data: string) => void, error: (status: number, responseText: string) => void): void; + downloadJson(url: string, success: (data: object) => void, error: (status: number, responseText: string) => void): void; + downloadBinary(url: string, success: (data: Uint8Array) => void, error: (status: number, responseText: string) => void): void; + private start; + private finish; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +declare class TextureAtlas implements Disposable { + pages: TextureAtlasPage[]; + regions: TextureAtlasRegion[]; + constructor(atlasText: string); + findRegion(name: string): TextureAtlasRegion; + setTextures(assetManager: AssetManagerBase, pathPrefix?: string): void; + dispose(): void; +} +declare class TextureAtlasPage { + name: string; + minFilter: TextureFilter; + magFilter: TextureFilter; + uWrap: TextureWrap; + vWrap: TextureWrap; + texture: Texture; + width: number; + height: number; + pma: boolean; + setTexture(texture: Texture): void; +} +declare class TextureAtlasRegion extends TextureRegion { + page: TextureAtlasPage; + name: string; + x: number; + y: number; + offsetX: number; + offsetY: number; + originalWidth: number; + originalHeight: number; + index: number; + degrees: number; + names: string[]; + values: number[][]; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** An {@link AttachmentLoader} that configures attachments using texture regions from an {@link TextureAtlas}. + * + * See [Loading skeleton data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the + * Spine Runtimes Guide. */ +declare class AtlasAttachmentLoader implements AttachmentLoader { + atlas: TextureAtlas; + constructor(atlas: TextureAtlas); + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + newPathAttachment(skin: Skin, name: string): PathAttachment; + newPointAttachment(skin: Skin, name: string): PointAttachment; + newClippingAttachment(skin: Skin, name: string): ClippingAttachment; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Loads skeleton data in the Spine binary format. + * + * See [Spine binary format](http://esotericsoftware.com/spine-binary-format) and + * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine + * Runtimes Guide. */ +declare class SkeletonBinary { + /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at + * runtime than were used in Spine. + * + * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */ + scale: number; + attachmentLoader: AttachmentLoader; + private linkedMeshes; + constructor(attachmentLoader: AttachmentLoader); + readSkeletonData(binary: Uint8Array): SkeletonData; + private readSkin; + private readAttachment; + private readVertices; + private readFloatArray; + private readShortArray; + private readAnimation; +} +declare class BinaryInput { + strings: string[]; + private index; + private buffer; + constructor(data: Uint8Array, strings?: string[], index?: number, buffer?: DataView); + readByte(): number; + readUnsignedByte(): number; + readShort(): number; + readInt32(): number; + readInt(optimizePositive: boolean): number; + readStringRef(): string; + readString(): string; + readFloat(): number; + readBoolean(): boolean; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Collects each visible {@link BoundingBoxAttachment} and computes the world vertices for its polygon. The polygon vertices are + * provided along with convenience methods for doing hit detection. */ +declare class SkeletonBounds { + /** The left edge of the axis aligned bounding box. */ + minX: number; + /** The bottom edge of the axis aligned bounding box. */ + minY: number; + /** The right edge of the axis aligned bounding box. */ + maxX: number; + /** The top edge of the axis aligned bounding box. */ + maxY: number; + /** The visible bounding boxes. */ + boundingBoxes: BoundingBoxAttachment[]; + /** The world vertices for the bounding box polygons. */ + polygons: NumberArrayLike[]; + private polygonPool; + /** Clears any previous polygons, finds all visible bounding box attachments, and computes the world vertices for each bounding + * box's polygon. + * @param updateAabb If true, the axis aligned bounding box containing all the polygons is computed. If false, the + * SkeletonBounds AABB methods will always return true. */ + update(skeleton: Skeleton, updateAabb: boolean): void; + aabbCompute(): void; + /** Returns true if the axis aligned bounding box contains the point. */ + aabbContainsPoint(x: number, y: number): boolean; + /** Returns true if the axis aligned bounding box intersects the line segment. */ + aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ + aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; + /** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more + * efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. */ + containsPoint(x: number, y: number): BoundingBoxAttachment; + /** Returns true if the polygon contains the point. */ + containsPointPolygon(polygon: NumberArrayLike, x: number, y: number): boolean; + /** Returns the first bounding box attachment that contains any part of the line segment, or null. When doing many checks, it + * is usually more efficient to only call this method if {@link #aabbIntersectsSegment()} returns + * true. */ + intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; + /** Returns true if the polygon contains any part of the line segment. */ + intersectsSegmentPolygon(polygon: NumberArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; + /** Returns the polygon for the specified bounding box, or null. */ + getPolygon(boundingBox: BoundingBoxAttachment): NumberArrayLike; + /** The width of the axis aligned bounding box. */ + getWidth(): number; + /** The height of the axis aligned bounding box. */ + getHeight(): number; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +declare class SkeletonClipping { + private triangulator; + private clippingPolygon; + private clipOutput; + clippedVertices: number[]; + clippedTriangles: number[]; + private scratch; + private clipAttachment; + private clippingPolygons; + clipStart(slot: Slot, clip: ClippingAttachment): number; + clipEndWithSlot(slot: Slot): void; + clipEnd(): void; + isClipping(): boolean; + clipTriangles(vertices: NumberArrayLike, verticesLength: number, triangles: NumberArrayLike, trianglesLength: number, uvs: NumberArrayLike, light: Color, dark: Color, twoColor: boolean): void; + /** Clips the input triangle against the convex, clockwise clipping area. If the triangle lies entirely within the clipping + * area, false is returned. The clipping area must duplicate the first vertex at the end of the vertices list. */ + clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array, output: Array): boolean; + static makeClockwise(polygon: NumberArrayLike): void; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +/** Loads skeleton data in the Spine JSON format. + * + * See [Spine JSON format](http://esotericsoftware.com/spine-json-format) and + * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine + * Runtimes Guide. */ +declare class SkeletonJson { + attachmentLoader: AttachmentLoader; + /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at + * runtime than were used in Spine. + * + * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */ + scale: number; + private linkedMeshes; + constructor(attachmentLoader: AttachmentLoader); + readSkeletonData(json: string | any): SkeletonData; + readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; + readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; + readAnimation(map: any, name: string, skeletonData: SkeletonData): void; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +declare class Triangulator { + private convexPolygons; + private convexPolygonsIndices; + private indicesArray; + private isConcaveArray; + private triangles; + private polygonPool; + private polygonIndicesPool; + triangulate(verticesArray: NumberArrayLike): Array; + decompose(verticesArray: Array, triangles: Array): Array>; + private static isConcave; + private static positiveArea; + private static winding; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +interface VertexEffect { + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +declare class JitterEffect implements VertexEffect { + jitterX: number; + jitterY: number; + constructor(jitterX: number, jitterY: number); + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; +} + +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +declare class SwirlEffect implements VertexEffect { + static interpolation: PowOut; + centerX: number; + centerY: number; + radius: number; + angle: number; + private worldX; + private worldY; + constructor(radius: number); + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; +} + +export { AlphaTimeline, Animation, AnimationState, AnimationStateAdapter, AnimationStateData, AnimationStateListener, ArrayLike, AssetManagerBase, AtlasAttachmentLoader, Attachment, AttachmentLoader, AttachmentTimeline, BinaryInput, BlendMode, Bone, BoneData, BoneTimeline, BoundingBoxAttachment, CURRENT, ClippingAttachment, Color, ConstraintData, CurveTimeline, CurveTimeline1, CurveTimeline2, DebugUtils, DeformTimeline, Disposable, Downloader, DrawOrderTimeline, Event, EventData, EventQueue, EventTimeline, EventType, FIRST, FakeTexture, HOLD_FIRST, HOLD_MIX, HOLD_SUBSEQUENT, IkConstraint, IkConstraintData, IkConstraintTimeline, IntSet, Interpolation, JitterEffect, MathUtils, MeshAttachment, MixBlend, MixDirection, NumberArrayLike, PathAttachment, PathConstraint, PathConstraintData, PathConstraintMixTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PointAttachment, Pool, PositionMode, Pow, PowOut, RGB2Timeline, RGBA2Timeline, RGBATimeline, RGBTimeline, RegionAttachment, Restorable, RotateMode, RotateTimeline, SETUP, SUBSEQUENT, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, Skeleton, SkeletonBinary, SkeletonBounds, SkeletonClipping, SkeletonData, SkeletonJson, Skin, SkinEntry, Slot, SlotData, SlotTimeline, SpacingMode, StringMap, StringSet, SwirlEffect, Texture, TextureAtlas, TextureAtlasPage, TextureAtlasRegion, TextureFilter, TextureRegion, TextureWrap, TimeKeeper, Timeline, TrackEntry, TransformConstraint, TransformConstraintData, TransformConstraintTimeline, TransformMode, TranslateTimeline, TranslateXTimeline, TranslateYTimeline, Triangulator, Updatable, Utils, Vector2, VertexAttachment, VertexEffect, WindowedMean }; +//# sourceMappingURL=spine-core.d.ts.map diff --git a/spine-ts/build/spine-core.js b/spine-ts/build/spine-core.js index 1ecb30041..2f75b2ff4 100644 --- a/spine-ts/build/spine-core.js +++ b/spine-ts/build/spine-core.js @@ -4,6 +4,34 @@ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.spine = {})); }(this, (function (exports) { 'use strict'; + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ var __extends$d = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || @@ -19,7 +47,7 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var IntSet = (function () { + var IntSet = /** @class */ (function () { function IntSet() { this.array = new Array(); } @@ -39,7 +67,7 @@ }; return IntSet; }()); - var StringSet = (function () { + var StringSet = /** @class */ (function () { function StringSet() { this.entries = {}; this.size = 0; @@ -68,7 +96,7 @@ }; return StringSet; }()); - var Color = (function () { + var Color = /** @class */ (function () { function Color(r, g, b, a) { if (r === void 0) { r = 0; } if (g === void 0) { g = 0; } @@ -148,7 +176,7 @@ Color.MAGENTA = new Color(1, 0, 1, 1); return Color; }()); - var MathUtils = (function () { + var MathUtils = /** @class */ (function () { function MathUtils() { } MathUtils.clamp = function (value, min, max) { @@ -195,7 +223,7 @@ MathUtils.degRad = MathUtils.degreesToRadians; return MathUtils; }()); - var Interpolation = (function () { + var Interpolation = /** @class */ (function () { function Interpolation() { } Interpolation.prototype.apply = function (start, end, a) { @@ -203,7 +231,7 @@ }; return Interpolation; }()); - var Pow = (function (_super) { + var Pow = /** @class */ (function (_super) { __extends$d(Pow, _super); function Pow(power) { var _this = _super.call(this) || this; @@ -218,7 +246,7 @@ }; return Pow; }(Interpolation)); - var PowOut = (function (_super) { + var PowOut = /** @class */ (function (_super) { __extends$d(PowOut, _super); function PowOut(power) { return _super.call(this, power) || this; @@ -228,7 +256,7 @@ }; return PowOut; }(Pow)); - var Utils = (function () { + var Utils = /** @class */ (function () { function Utils() { } Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { @@ -290,6 +318,7 @@ Utils.toSinglePrecision = function (value) { return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; }; + // This function is used to fix WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109 Utils.webkit602BugfixHelper = function (alpha, blend) { }; Utils.contains = function (array, element, identity) { @@ -304,7 +333,7 @@ Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; return Utils; }()); - var DebugUtils = (function () { + var DebugUtils = /** @class */ (function () { function DebugUtils() { } DebugUtils.logBones = function (skeleton) { @@ -315,7 +344,7 @@ }; return DebugUtils; }()); - var Pool = (function () { + var Pool = /** @class */ (function () { function Pool(instantiator) { this.items = new Array(); this.instantiator = instantiator; @@ -337,7 +366,7 @@ }; return Pool; }()); - var Vector2 = (function () { + var Vector2 = /** @class */ (function () { function Vector2(x, y) { if (x === void 0) { x = 0; } if (y === void 0) { y = 0; } @@ -364,7 +393,7 @@ }; return Vector2; }()); - var TimeKeeper = (function () { + var TimeKeeper = /** @class */ (function () { function TimeKeeper() { this.maxDelta = 0.064; this.framesPerSecond = 0; @@ -391,7 +420,7 @@ }; return TimeKeeper; }()); - var WindowedMean = (function () { + var WindowedMean = /** @class */ (function () { function WindowedMean(windowSize) { if (windowSize === void 0) { windowSize = 32; } this.addedValues = 0; @@ -427,6 +456,34 @@ return WindowedMean; }()); + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ var __extends$c = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || @@ -442,7 +499,8 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var Attachment = (function () { + /** The base class for all attachments. */ + var Attachment = /** @class */ (function () { function Attachment(name) { if (!name) throw new Error("name cannot be null."); @@ -450,15 +508,32 @@ } return Attachment; }()); - var VertexAttachment = (function (_super) { + /** Base class for an attachment with vertices that are transformed by one or more bones and can be deformed by a slot's + * {@link Slot#deform}. */ + var VertexAttachment = /** @class */ (function (_super) { __extends$c(VertexAttachment, _super); function VertexAttachment(name) { var _this = _super.call(this, name) || this; + /** The unique ID for this attachment. */ _this.id = VertexAttachment.nextID++; + /** The maximum number of world vertex values that can be output by + * {@link #computeWorldVertices()} using the `count` parameter. */ _this.worldVerticesLength = 0; + /** Deform keys for the deform attachment are also applied to this attachment. May be null if no deform keys should be applied. */ _this.deformAttachment = _this; return _this; } + /** Transforms the attachment's local {@link #vertices} to world coordinates. If the slot's {@link Slot#deform} is + * not empty, it is used to deform the vertices. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. + * @param start The index of the first {@link #vertices} value to transform. Each vertex has 2 values, x and y. + * @param count The number of world vertex values to output. Must be <= {@link #worldVerticesLength} - `start`. + * @param worldVertices The output world vertices. Must have a length >= `offset` + `count` * + * `stride` / 2. + * @param offset The `worldVertices` index to begin writing values. + * @param stride The number of `worldVertices` entries between the value pairs written. */ VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) { count = offset + (count >> 1) * stride; var skeleton = slot.bone.skeleton; @@ -518,6 +593,7 @@ } } }; + /** Does not copy id (generated) or name (set on construction). **/ VertexAttachment.prototype.copyTo = function (attachment) { if (this.bones) { attachment.bones = new Array(this.bones.length); @@ -538,6 +614,34 @@ return VertexAttachment; }(Attachment)); + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ var __extends$b = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || @@ -553,7 +657,8 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var Animation = (function () { + /** A simple container for a list of timelines and a name. */ + var Animation = /** @class */ (function () { function Animation(name, timelines, duration) { if (!name) throw new Error("name cannot be null."); @@ -575,6 +680,11 @@ return true; return false; }; + /** Applies all the animation's timelines to the specified skeleton. + * + * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. + * @param loop If true, the animation repeats after {@link #getDuration()}. + * @param events May be null to ignore fired events. */ Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) { if (!skeleton) throw new Error("skeleton cannot be null."); @@ -589,13 +699,38 @@ }; return Animation; }()); + /** Controls how a timeline value is mixed with the setup pose value or current pose value when a timeline's `alpha` + * < 1. + * + * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */ exports.MixBlend = void 0; (function (MixBlend) { + /** Transitions from the setup value to the timeline value (the current value is not used). Before the first key, the setup + * value is set. */ MixBlend[MixBlend["setup"] = 0] = "setup"; + /** Transitions from the current value to the timeline value. Before the first key, transitions from the current value to + * the setup value. Timelines which perform instant transitions, such as {@link DrawOrderTimeline} or + * {@link AttachmentTimeline}, use the setup value before the first key. + * + * `first` is intended for the first animations applied, not for animations layered on top of those. */ MixBlend[MixBlend["first"] = 1] = "first"; + /** Transitions from the current value to the timeline value. No change is made before the first key (the current value is + * kept until the first key). + * + * `replace` is intended for animations layered on top of others, not for the first animations applied. */ MixBlend[MixBlend["replace"] = 2] = "replace"; + /** Transitions from the current value to the current value plus the timeline value. No change is made before the first key + * (the current value is kept until the first key). + * + * `add` is intended for animations layered on top of others, not for the first animations applied. Properties + * keyed by additive animations must be set manually or by another animation before applying the additive animations, else + * the property values will increase continually. */ MixBlend[MixBlend["add"] = 3] = "add"; })(exports.MixBlend || (exports.MixBlend = {})); + /** Indicates whether a timeline's `alpha` is mixing out over time toward 0 (the setup or current pose value) or + * mixing in toward 1 (the timeline's value). + * + * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */ exports.MixDirection = void 0; (function (MixDirection) { MixDirection[MixDirection["mixIn"] = 0] = "mixIn"; @@ -622,7 +757,8 @@ pathConstraintSpacing: 17, pathConstraintMix: 18 }; - var Timeline = (function () { + /** The interface for all timelines. */ + var Timeline = /** @class */ (function () { function Timeline(frameCount, propertyIds) { this.propertyIds = propertyIds; this.frames = Utils.newFloatArray(frameCount * this.getFrameEntries()); @@ -655,39 +791,58 @@ }; return Timeline; }()); - var CurveTimeline = (function (_super) { + /** The base class for timelines that use interpolation between key frame values. */ + var CurveTimeline = /** @class */ (function (_super) { __extends$b(CurveTimeline, _super); function CurveTimeline(frameCount, bezierCount, propertyIds) { var _this = _super.call(this, frameCount, propertyIds) || this; - _this.curves = Utils.newFloatArray(frameCount + bezierCount * 18); - _this.curves[frameCount - 1] = 1; + _this.curves = Utils.newFloatArray(frameCount + bezierCount * 18 /*BEZIER_SIZE*/); + _this.curves[frameCount - 1] = 1 /*STEPPED*/; return _this; } + /** Sets the specified key frame to linear interpolation. */ CurveTimeline.prototype.setLinear = function (frame) { - this.curves[frame] = 0; + this.curves[frame] = 0 /*LINEAR*/; }; + /** Sets the specified key frame to stepped interpolation. */ CurveTimeline.prototype.setStepped = function (frame) { - this.curves[frame] = 1; + this.curves[frame] = 1 /*STEPPED*/; }; + /** Shrinks the storage for Bezier curves, for use when bezierCount (specified in the constructor) was larger + * than the actual number of Bezier curves. */ CurveTimeline.prototype.shrink = function (bezierCount) { - var size = this.getFrameCount() + bezierCount * 18; + var size = this.getFrameCount() + bezierCount * 18 /*BEZIER_SIZE*/; if (this.curves.length > size) { var newCurves = Utils.newFloatArray(size); Utils.arrayCopy(this.curves, 0, newCurves, 0, size); this.curves = newCurves; } }; + /** Stores the segments for the specified Bezier curve. For timelines that modify multiple values, there may be more than + * one curve per frame. + * @param bezier The ordinal of this Bezier curve for this timeline, between 0 and bezierCount - 1 (specified + * in the constructor), inclusive. + * @param frame Between 0 and frameCount - 1, inclusive. + * @param value The index of the value for this frame that this curve is used for. + * @param time1 The time for the first key. + * @param value1 The value for the first key. + * @param cx1 The time for the first Bezier handle. + * @param cy1 The value for the first Bezier handle. + * @param cx2 The time of the second Bezier handle. + * @param cy2 The value for the second Bezier handle. + * @param time2 The time for the second key. + * @param value2 The value for the second key. */ CurveTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; + var i = this.getFrameCount() + bezier * 18 /*BEZIER_SIZE*/; if (value == 0) - curves[frame] = 2 + i; + curves[frame] = 2 /*BEZIER*/ + i; var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03; var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006; var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667; var x = time1 + dx, y = value1 + dy; - for (var n = i + 18; i < n; i += 2) { + for (var n = i + 18 /*BEZIER_SIZE*/; i < n; i += 2) { curves[i] = x; curves[i + 1] = y; dx += ddx; @@ -698,13 +853,17 @@ y += dy; } }; + /** Returns the Bezier interpolated value for the specified time. + * @param frameIndex The index into {@link #getFrames()} for the values of the frame before time. + * @param valueOffset The offset from frameIndex to the value this curve is used for. + * @param i The index of the Bezier segments. See {@link #getCurveType(int)}. */ CurveTimeline.prototype.getBezierValue = function (time, frameIndex, valueOffset, i) { var curves = this.curves; if (curves[i] > time) { var x_1 = this.frames[frameIndex], y_1 = this.frames[frameIndex + valueOffset]; return y_1 + (time - x_1) / (curves[i] - x_1) * (curves[i + 1] - y_1); } - var n = i + 18; + var n = i + 18 /*BEZIER_SIZE*/; for (i += 2; i < n; i += 2) { if (curves[i] >= time) { var x_2 = curves[i - 2], y_2 = curves[i - 1]; @@ -717,19 +876,23 @@ }; return CurveTimeline; }(Timeline)); - var CurveTimeline1 = (function (_super) { + var CurveTimeline1 = /** @class */ (function (_super) { __extends$b(CurveTimeline1, _super); function CurveTimeline1(frameCount, bezierCount, propertyId) { return _super.call(this, frameCount, bezierCount, [propertyId]) || this; } CurveTimeline1.prototype.getFrameEntries = function () { - return 2; + return 2 /*ENTRIES*/; }; + /** Sets the time and value for the specified frame. + * @param frame Between 0 and frameCount, inclusive. + * @param time The frame time in seconds. */ CurveTimeline1.prototype.setFrame = function (frame, time, value) { frame <<= 1; this.frames[frame] = time; - this.frames[frame + 1] = value; + this.frames[frame + 1 /*VALUE*/] = value; }; + /** Returns the interpolated value for the specified time. */ CurveTimeline1.prototype.getCurveValue = function (time) { var frames = this.frames; var i = frames.length - 2; @@ -741,33 +904,40 @@ } var curveType = this.curves[i >> 1]; switch (curveType) { - case 0: - var before = frames[i], value = frames[i + 1]; - return value + (time - before) / (frames[i + 2] - before) * (frames[i + 2 + 1] - value); - case 1: - return frames[i + 1]; + case 0 /*LINEAR*/: + var before = frames[i], value = frames[i + 1 /*VALUE*/]; + return value + (time - before) / (frames[i + 2 /*ENTRIES*/] - before) * (frames[i + 2 /*ENTRIES*/ + 1 /*VALUE*/] - value); + case 1 /*STEPPED*/: + return frames[i + 1 /*VALUE*/]; } - return this.getBezierValue(time, i, 1, curveType - 2); + return this.getBezierValue(time, i, 1 /*VALUE*/, curveType - 2 /*BEZIER*/); }; return CurveTimeline1; }(CurveTimeline)); - var CurveTimeline2 = (function (_super) { + /** The base class for a {@link CurveTimeline} which sets two properties. */ + var CurveTimeline2 = /** @class */ (function (_super) { __extends$b(CurveTimeline2, _super); + /** @param bezierCount The maximum number of Bezier curves. See {@link #shrink(int)}. + * @param propertyIds Unique identifiers for the properties the timeline modifies. */ function CurveTimeline2(frameCount, bezierCount, propertyId1, propertyId2) { return _super.call(this, frameCount, bezierCount, [propertyId1, propertyId2]) || this; } CurveTimeline2.prototype.getFrameEntries = function () { - return 3; + return 3 /*ENTRIES*/; }; + /** Sets the time and values for the specified frame. + * @param frame Between 0 and frameCount, inclusive. + * @param time The frame time in seconds. */ CurveTimeline2.prototype.setFrame = function (frame, time, value1, value2) { - frame *= 3; + frame *= 3 /*ENTRIES*/; this.frames[frame] = time; - this.frames[frame + 1] = value1; - this.frames[frame + 2] = value2; + this.frames[frame + 1 /*VALUE1*/] = value1; + this.frames[frame + 2 /*VALUE2*/] = value2; }; return CurveTimeline2; }(CurveTimeline)); - var RotateTimeline = (function (_super) { + /** Changes a bone's local {@link Bone#rotation}. */ + var RotateTimeline = /** @class */ (function (_super) { __extends$b(RotateTimeline, _super); function RotateTimeline(frameCount, bezierCount, boneIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.rotate + "|" + boneIndex) || this; @@ -804,7 +974,8 @@ }; return RotateTimeline; }(CurveTimeline1)); - var TranslateTimeline = (function (_super) { + /** Changes a bone's local {@link Bone#x} and {@link Bone#y}. */ + var TranslateTimeline = /** @class */ (function (_super) { __extends$b(TranslateTimeline, _super); function TranslateTimeline(frameCount, bezierCount, boneIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex, Property.y + "|" + boneIndex) || this; @@ -830,24 +1001,24 @@ return; } var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; + var i = Timeline.search(frames, time, 3 /*ENTRIES*/); + var curveType = this.curves[i / 3 /*ENTRIES*/]; switch (curveType) { - case 0: + case 0 /*LINEAR*/: var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; + var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before); + x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t; + y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t; break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; + case 1 /*STEPPED*/: + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; break; default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); + x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/); + y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); } switch (blend) { case exports.MixBlend.setup: @@ -866,7 +1037,8 @@ }; return TranslateTimeline; }(CurveTimeline2)); - var TranslateXTimeline = (function (_super) { + /** Changes a bone's local {@link Bone#x}. */ + var TranslateXTimeline = /** @class */ (function (_super) { __extends$b(TranslateXTimeline, _super); function TranslateXTimeline(frameCount, bezierCount, boneIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex) || this; @@ -904,7 +1076,8 @@ }; return TranslateXTimeline; }(CurveTimeline1)); - var TranslateYTimeline = (function (_super) { + /** Changes a bone's local {@link Bone#x}. */ + var TranslateYTimeline = /** @class */ (function (_super) { __extends$b(TranslateYTimeline, _super); function TranslateYTimeline(frameCount, bezierCount, boneIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.y + "|" + boneIndex) || this; @@ -942,7 +1115,8 @@ }; return TranslateYTimeline; }(CurveTimeline1)); - var ScaleTimeline = (function (_super) { + /** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */ + var ScaleTimeline = /** @class */ (function (_super) { __extends$b(ScaleTimeline, _super); function ScaleTimeline(frameCount, bezierCount, boneIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex, Property.scaleY + "|" + boneIndex) || this; @@ -968,24 +1142,24 @@ return; } var x, y; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; + var i = Timeline.search(frames, time, 3 /*ENTRIES*/); + var curveType = this.curves[i / 3 /*ENTRIES*/]; switch (curveType) { - case 0: + case 0 /*LINEAR*/: var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; + var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before); + x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t; + y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t; break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; + case 1 /*STEPPED*/: + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; break; default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); + x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/); + y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); } x *= bone.data.scaleX; y *= bone.data.scaleY; @@ -1049,7 +1223,8 @@ }; return ScaleTimeline; }(CurveTimeline2)); - var ScaleXTimeline = (function (_super) { + /** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */ + var ScaleXTimeline = /** @class */ (function (_super) { __extends$b(ScaleXTimeline, _super); function ScaleXTimeline(frameCount, bezierCount, boneIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex) || this; @@ -1080,6 +1255,7 @@ bone.scaleX = x; } else { + // Mixing out uses sign of setup or current pose, else use sign of key. var bx = 0; if (direction == exports.MixDirection.mixOut) { switch (blend) { @@ -1117,7 +1293,8 @@ }; return ScaleXTimeline; }(CurveTimeline1)); - var ScaleYTimeline = (function (_super) { + /** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */ + var ScaleYTimeline = /** @class */ (function (_super) { __extends$b(ScaleYTimeline, _super); function ScaleYTimeline(frameCount, bezierCount, boneIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.scaleY + "|" + boneIndex) || this; @@ -1148,6 +1325,7 @@ bone.scaleY = y; } else { + // Mixing out uses sign of setup or current pose, else use sign of key. var by = 0; if (direction == exports.MixDirection.mixOut) { switch (blend) { @@ -1185,7 +1363,8 @@ }; return ScaleYTimeline; }(CurveTimeline1)); - var ShearTimeline = (function (_super) { + /** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ + var ShearTimeline = /** @class */ (function (_super) { __extends$b(ShearTimeline, _super); function ShearTimeline(frameCount, bezierCount, boneIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex, Property.shearY + "|" + boneIndex) || this; @@ -1211,24 +1390,24 @@ return; } var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; + var i = Timeline.search(frames, time, 3 /*ENTRIES*/); + var curveType = this.curves[i / 3 /*ENTRIES*/]; switch (curveType) { - case 0: + case 0 /*LINEAR*/: var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; + var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before); + x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t; + y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t; break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; + case 1 /*STEPPED*/: + x = frames[i + 1 /*VALUE1*/]; + y = frames[i + 2 /*VALUE2*/]; break; default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); + x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/); + y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); } switch (blend) { case exports.MixBlend.setup: @@ -1247,7 +1426,8 @@ }; return ShearTimeline; }(CurveTimeline2)); - var ShearXTimeline = (function (_super) { + /** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ + var ShearXTimeline = /** @class */ (function (_super) { __extends$b(ShearXTimeline, _super); function ShearXTimeline(frameCount, bezierCount, boneIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex) || this; @@ -1285,7 +1465,8 @@ }; return ShearXTimeline; }(CurveTimeline1)); - var ShearYTimeline = (function (_super) { + /** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ + var ShearYTimeline = /** @class */ (function (_super) { __extends$b(ShearYTimeline, _super); function ShearYTimeline(frameCount, bezierCount, boneIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.shearY + "|" + boneIndex) || this; @@ -1323,7 +1504,8 @@ }; return ShearYTimeline; }(CurveTimeline1)); - var RGBATimeline = (function (_super) { + /** Changes a slot's {@link Slot#color}. */ + var RGBATimeline = /** @class */ (function (_super) { __extends$b(RGBATimeline, _super); function RGBATimeline(frameCount, bezierCount, slotIndex) { var _this = _super.call(this, frameCount, bezierCount, [ @@ -1335,15 +1517,16 @@ return _this; } RGBATimeline.prototype.getFrameEntries = function () { - return 5; + return 5 /*ENTRIES*/; }; + /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */ RGBATimeline.prototype.setFrame = function (frame, time, r, g, b, a) { - frame *= 5; + frame *= 5 /*ENTRIES*/; this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; + this.frames[frame + 1 /*R*/] = r; + this.frames[frame + 2 /*G*/] = g; + this.frames[frame + 3 /*B*/] = b; + this.frames[frame + 4 /*A*/] = a; }; RGBATimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { var slot = skeleton.slots[this.slotIndex]; @@ -1363,32 +1546,32 @@ return; } var r = 0, g = 0, b = 0, a = 0; - var i = Timeline.search(frames, time, 5); - var curveType = this.curves[i / 5]; + var i = Timeline.search(frames, time, 5 /*ENTRIES*/); + var curveType = this.curves[i / 5 /*ENTRIES*/]; switch (curveType) { - case 0: + case 0 /*LINEAR*/: var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - var t = (time - before) / (frames[i + 5] - before); - r += (frames[i + 5 + 1] - r) * t; - g += (frames[i + 5 + 2] - g) * t; - b += (frames[i + 5 + 3] - b) * t; - a += (frames[i + 5 + 4] - a) * t; + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + a = frames[i + 4 /*A*/]; + var t = (time - before) / (frames[i + 5 /*ENTRIES*/] - before); + r += (frames[i + 5 /*ENTRIES*/ + 1 /*R*/] - r) * t; + g += (frames[i + 5 /*ENTRIES*/ + 2 /*G*/] - g) * t; + b += (frames[i + 5 /*ENTRIES*/ + 3 /*B*/] - b) * t; + a += (frames[i + 5 /*ENTRIES*/ + 4 /*A*/] - a) * t; break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; + case 1 /*STEPPED*/: + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + a = frames[i + 4 /*A*/]; break; default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); + r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/); + g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); + a = this.getBezierValue(time, i, 4 /*A*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/); } if (alpha == 1) color.set(r, g, b, a); @@ -1400,7 +1583,8 @@ }; return RGBATimeline; }(CurveTimeline)); - var RGBTimeline = (function (_super) { + /** Changes a slot's {@link Slot#color}. */ + var RGBTimeline = /** @class */ (function (_super) { __extends$b(RGBTimeline, _super); function RGBTimeline(frameCount, bezierCount, slotIndex) { var _this = _super.call(this, frameCount, bezierCount, [ @@ -1411,14 +1595,15 @@ return _this; } RGBTimeline.prototype.getFrameEntries = function () { - return 4; + return 4 /*ENTRIES*/; }; + /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */ RGBTimeline.prototype.setFrame = function (frame, time, r, g, b) { frame <<= 2; this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; + this.frames[frame + 1 /*R*/] = r; + this.frames[frame + 2 /*G*/] = g; + this.frames[frame + 3 /*B*/] = b; }; RGBTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { var slot = skeleton.slots[this.slotIndex]; @@ -1442,28 +1627,28 @@ return; } var r = 0, g = 0, b = 0; - var i = Timeline.search(frames, time, 4); + var i = Timeline.search(frames, time, 4 /*ENTRIES*/); var curveType = this.curves[i >> 2]; switch (curveType) { - case 0: + case 0 /*LINEAR*/: var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - r += (frames[i + 4 + 1] - r) * t; - g += (frames[i + 4 + 2] - g) * t; - b += (frames[i + 4 + 3] - b) * t; + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + var t = (time - before) / (frames[i + 4 /*ENTRIES*/] - before); + r += (frames[i + 4 /*ENTRIES*/ + 1 /*R*/] - r) * t; + g += (frames[i + 4 /*ENTRIES*/ + 2 /*G*/] - g) * t; + b += (frames[i + 4 /*ENTRIES*/ + 3 /*B*/] - b) * t; break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; + case 1 /*STEPPED*/: + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; break; default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); + r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/); + g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); } if (alpha == 1) { color.r = r; @@ -1484,7 +1669,8 @@ }; return RGBTimeline; }(CurveTimeline)); - var AlphaTimeline = (function (_super) { + /** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */ + var AlphaTimeline = /** @class */ (function (_super) { __extends$b(AlphaTimeline, _super); function AlphaTimeline(frameCount, bezierCount, slotIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.alpha + "|" + slotIndex) || this; @@ -1497,7 +1683,7 @@ if (!slot.bone.active) return; var color = slot.color; - if (time < this.frames[0]) { + if (time < this.frames[0]) { // Time is before first frame. var setup = slot.data.color; switch (blend) { case exports.MixBlend.setup: @@ -1519,7 +1705,8 @@ }; return AlphaTimeline; }(CurveTimeline1)); - var RGBA2Timeline = (function (_super) { + /** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */ + var RGBA2Timeline = /** @class */ (function (_super) { __extends$b(RGBA2Timeline, _super); function RGBA2Timeline(frameCount, bezierCount, slotIndex) { var _this = _super.call(this, frameCount, bezierCount, [ @@ -1532,18 +1719,19 @@ return _this; } RGBA2Timeline.prototype.getFrameEntries = function () { - return 8; + return 8 /*ENTRIES*/; }; + /** Sets the time in seconds, light, and dark colors for the specified key frame. */ RGBA2Timeline.prototype.setFrame = function (frame, time, r, g, b, a, r2, g2, b2) { frame <<= 3; this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; - this.frames[frame + 5] = r2; - this.frames[frame + 6] = g2; - this.frames[frame + 7] = b2; + this.frames[frame + 1 /*R*/] = r; + this.frames[frame + 2 /*G*/] = g; + this.frames[frame + 3 /*B*/] = b; + this.frames[frame + 4 /*A*/] = a; + this.frames[frame + 5 /*R2*/] = r2; + this.frames[frame + 6 /*G2*/] = g2; + this.frames[frame + 7 /*B2*/] = b2; }; RGBA2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { var slot = skeleton.slots[this.slotIndex]; @@ -1569,44 +1757,44 @@ return; } var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 8); + var i = Timeline.search(frames, time, 8 /*ENTRIES*/); var curveType = this.curves[i >> 3]; switch (curveType) { - case 0: + case 0 /*LINEAR*/: var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; - var t = (time - before) / (frames[i + 8] - before); - r += (frames[i + 8 + 1] - r) * t; - g += (frames[i + 8 + 2] - g) * t; - b += (frames[i + 8 + 3] - b) * t; - a += (frames[i + 8 + 4] - a) * t; - r2 += (frames[i + 8 + 5] - r2) * t; - g2 += (frames[i + 8 + 6] - g2) * t; - b2 += (frames[i + 8 + 7] - b2) * t; + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + a = frames[i + 4 /*A*/]; + r2 = frames[i + 5 /*R2*/]; + g2 = frames[i + 6 /*G2*/]; + b2 = frames[i + 7 /*B2*/]; + var t = (time - before) / (frames[i + 8 /*ENTRIES*/] - before); + r += (frames[i + 8 /*ENTRIES*/ + 1 /*R*/] - r) * t; + g += (frames[i + 8 /*ENTRIES*/ + 2 /*G*/] - g) * t; + b += (frames[i + 8 /*ENTRIES*/ + 3 /*B*/] - b) * t; + a += (frames[i + 8 /*ENTRIES*/ + 4 /*A*/] - a) * t; + r2 += (frames[i + 8 /*ENTRIES*/ + 5 /*R2*/] - r2) * t; + g2 += (frames[i + 8 /*ENTRIES*/ + 6 /*G2*/] - g2) * t; + b2 += (frames[i + 8 /*ENTRIES*/ + 7 /*B2*/] - b2) * t; break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; + case 1 /*STEPPED*/: + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + a = frames[i + 4 /*A*/]; + r2 = frames[i + 5 /*R2*/]; + g2 = frames[i + 6 /*G2*/]; + b2 = frames[i + 7 /*B2*/]; break; default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - r2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - g2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - b2 = this.getBezierValue(time, i, 7, curveType + 18 * 6 - 2); + r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/); + g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); + a = this.getBezierValue(time, i, 4 /*A*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/); + r2 = this.getBezierValue(time, i, 5 /*R2*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/); + g2 = this.getBezierValue(time, i, 6 /*G2*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/); + b2 = this.getBezierValue(time, i, 7 /*B2*/, curveType + 18 /*BEZIER_SIZE*/ * 6 - 2 /*BEZIER*/); } if (alpha == 1) { light.set(r, g, b, a); @@ -1630,7 +1818,8 @@ }; return RGBA2Timeline; }(CurveTimeline)); - var RGB2Timeline = (function (_super) { + /** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */ + var RGB2Timeline = /** @class */ (function (_super) { __extends$b(RGB2Timeline, _super); function RGB2Timeline(frameCount, bezierCount, slotIndex) { var _this = _super.call(this, frameCount, bezierCount, [ @@ -1642,17 +1831,18 @@ return _this; } RGB2Timeline.prototype.getFrameEntries = function () { - return 7; + return 7 /*ENTRIES*/; }; + /** Sets the time in seconds, light, and dark colors for the specified key frame. */ RGB2Timeline.prototype.setFrame = function (frame, time, r, g, b, r2, g2, b2) { - frame *= 7; + frame *= 7 /*ENTRIES*/; this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = r2; - this.frames[frame + 5] = g2; - this.frames[frame + 6] = b2; + this.frames[frame + 1 /*R*/] = r; + this.frames[frame + 2 /*G*/] = g; + this.frames[frame + 3 /*B*/] = b; + this.frames[frame + 4 /*R2*/] = r2; + this.frames[frame + 5 /*G2*/] = g2; + this.frames[frame + 6 /*B2*/] = b2; }; RGB2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { var slot = skeleton.slots[this.slotIndex]; @@ -1682,40 +1872,40 @@ return; } var r = 0, g = 0, b = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; + var i = Timeline.search(frames, time, 7 /*ENTRIES*/); + var curveType = this.curves[i / 7 /*ENTRIES*/]; switch (curveType) { - case 0: + case 0 /*LINEAR*/: var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - r += (frames[i + 7 + 1] - r) * t; - g += (frames[i + 7 + 2] - g) * t; - b += (frames[i + 7 + 3] - b) * t; - r2 += (frames[i + 7 + 4] - r2) * t; - g2 += (frames[i + 7 + 5] - g2) * t; - b2 += (frames[i + 7 + 6] - b2) * t; + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + r2 = frames[i + 4 /*R2*/]; + g2 = frames[i + 5 /*G2*/]; + b2 = frames[i + 6 /*B2*/]; + var t = (time - before) / (frames[i + 7 /*ENTRIES*/] - before); + r += (frames[i + 7 /*ENTRIES*/ + 1 /*R*/] - r) * t; + g += (frames[i + 7 /*ENTRIES*/ + 2 /*G*/] - g) * t; + b += (frames[i + 7 /*ENTRIES*/ + 3 /*B*/] - b) * t; + r2 += (frames[i + 7 /*ENTRIES*/ + 4 /*R2*/] - r2) * t; + g2 += (frames[i + 7 /*ENTRIES*/ + 5 /*G2*/] - g2) * t; + b2 += (frames[i + 7 /*ENTRIES*/ + 6 /*B2*/] - b2) * t; break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; + case 1 /*STEPPED*/: + r = frames[i + 1 /*R*/]; + g = frames[i + 2 /*G*/]; + b = frames[i + 3 /*B*/]; + r2 = frames[i + 4 /*R2*/]; + g2 = frames[i + 5 /*G2*/]; + b2 = frames[i + 6 /*B2*/]; break; default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - r2 = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - g2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - b2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); + r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/); + g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); + r2 = this.getBezierValue(time, i, 4 /*R2*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/); + g2 = this.getBezierValue(time, i, 5 /*G2*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/); + b2 = this.getBezierValue(time, i, 6 /*B2*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/); } if (alpha == 1) { light.r = r; @@ -1745,7 +1935,8 @@ }; return RGB2Timeline; }(CurveTimeline)); - var AttachmentTimeline = (function (_super) { + /** Changes a slot's {@link Slot#attachment}. */ + var AttachmentTimeline = /** @class */ (function (_super) { __extends$b(AttachmentTimeline, _super); function AttachmentTimeline(frameCount, slotIndex) { var _this = _super.call(this, frameCount, [ @@ -1759,6 +1950,7 @@ AttachmentTimeline.prototype.getFrameCount = function () { return this.frames.length; }; + /** Sets the time in seconds and the attachment name for the specified key frame. */ AttachmentTimeline.prototype.setFrame = function (frame, time, attachmentName) { this.frames[frame] = time; this.attachmentNames[frame] = attachmentName; @@ -1784,7 +1976,8 @@ }; return AttachmentTimeline; }(Timeline)); - var DeformTimeline = (function (_super) { + /** Changes a slot's {@link Slot#deform} to deform a {@link VertexAttachment}. */ + var DeformTimeline = /** @class */ (function (_super) { __extends$b(DeformTimeline, _super); function DeformTimeline(frameCount, bezierCount, slotIndex, attachment) { var _this = _super.call(this, frameCount, bezierCount, [ @@ -1799,21 +1992,25 @@ DeformTimeline.prototype.getFrameCount = function () { return this.frames.length; }; + /** Sets the time in seconds and the vertices for the specified key frame. + * @param vertices Vertex positions for an unweighted VertexAttachment, or deform offsets if it has weights. */ DeformTimeline.prototype.setFrame = function (frame, time, vertices) { this.frames[frame] = time; this.vertices[frame] = vertices; }; + /** @param value1 Ignored (0 is used for a deform timeline). + * @param value2 Ignored (1 is used for a deform timeline). */ DeformTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; + var i = this.getFrameCount() + bezier * 18 /*BEZIER_SIZE*/; if (value == 0) - curves[frame] = 2 + i; + curves[frame] = 2 /*BEZIER*/ + i; var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06; var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018; var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667; var x = time1 + dx, y = dy; - for (var n = i + 18; i < n; i += 2) { + for (var n = i + 18 /*BEZIER_SIZE*/; i < n; i += 2) { curves[i] = x; curves[i + 1] = y; dx += ddx; @@ -1828,18 +2025,18 @@ var curves = this.curves; var i = curves[frame]; switch (i) { - case 0: + case 0 /*LINEAR*/: var x_3 = this.frames[frame]; return (time - x_3) / (this.frames[frame + this.getFrameEntries()] - x_3); - case 1: + case 1 /*STEPPED*/: return 0; } - i -= 2; + i -= 2 /*BEZIER*/; if (curves[i] > time) { var x_4 = this.frames[frame]; return curves[i + 1] * (time - x_4) / (curves[i] - x_4); } - var n = i + 18; + var n = i + 18 /*BEZIER_SIZE*/; for (i += 2; i < n; i += 2) { if (curves[i] >= time) { var x_5 = curves[i - 2], y_3 = curves[i - 1]; @@ -1875,11 +2072,13 @@ } deform.length = vertexCount; if (!vertexAttachment.bones) { + // Unweighted vertex positions. var setupVertices = vertexAttachment.vertices; for (var i = 0; i < vertexCount; i++) deform[i] += (setupVertices[i] - deform[i]) * alpha; } else { + // Weighted deform offsets. alpha = 1 - alpha; for (var i = 0; i < vertexCount; i++) deform[i] *= alpha; @@ -1888,17 +2087,19 @@ return; } deform.length = vertexCount; - if (time >= frames[frames.length - 1]) { + if (time >= frames[frames.length - 1]) { // Time is after last frame. var lastVertices = vertices[frames.length - 1]; if (alpha == 1) { if (blend == exports.MixBlend.add) { var vertexAttachment = slotAttachment; if (!vertexAttachment.bones) { + // Unweighted vertex positions, with alpha. var setupVertices = vertexAttachment.vertices; for (var i_1 = 0; i_1 < vertexCount; i_1++) deform[i_1] += lastVertices[i_1] - setupVertices[i_1]; } else { + // Weighted deform offsets, with alpha. for (var i_2 = 0; i_2 < vertexCount; i_2++) deform[i_2] += lastVertices[i_2]; } @@ -1911,6 +2112,7 @@ case exports.MixBlend.setup: { var vertexAttachment_1 = slotAttachment; if (!vertexAttachment_1.bones) { + // Unweighted vertex positions, with alpha. var setupVertices = vertexAttachment_1.vertices; for (var i_3 = 0; i_3 < vertexCount; i_3++) { var setup = setupVertices[i_3]; @@ -1918,6 +2120,7 @@ } } else { + // Weighted deform offsets, with alpha. for (var i_4 = 0; i_4 < vertexCount; i_4++) deform[i_4] = lastVertices[i_4] * alpha; } @@ -1931,11 +2134,13 @@ case exports.MixBlend.add: var vertexAttachment = slotAttachment; if (!vertexAttachment.bones) { + // Unweighted vertex positions, with alpha. var setupVertices = vertexAttachment.vertices; for (var i_6 = 0; i_6 < vertexCount; i_6++) deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha; } else { + // Weighted deform offsets, with alpha. for (var i_7 = 0; i_7 < vertexCount; i_7++) deform[i_7] += lastVertices[i_7] * alpha; } @@ -1943,6 +2148,7 @@ } return; } + // Interpolate between the previous frame and the current frame. var frame = Timeline.search1(frames, time); var percent = this.getCurvePercent(time, frame); var prevVertices = vertices[frame]; @@ -1951,6 +2157,7 @@ if (blend == exports.MixBlend.add) { var vertexAttachment = slotAttachment; if (!vertexAttachment.bones) { + // Unweighted vertex positions, with alpha. var setupVertices = vertexAttachment.vertices; for (var i_8 = 0; i_8 < vertexCount; i_8++) { var prev = prevVertices[i_8]; @@ -1958,6 +2165,7 @@ } } else { + // Weighted deform offsets, with alpha. for (var i_9 = 0; i_9 < vertexCount; i_9++) { var prev = prevVertices[i_9]; deform[i_9] += prev + (nextVertices[i_9] - prev) * percent; @@ -1976,6 +2184,7 @@ case exports.MixBlend.setup: { var vertexAttachment_2 = slotAttachment; if (!vertexAttachment_2.bones) { + // Unweighted vertex positions, with alpha. var setupVertices = vertexAttachment_2.vertices; for (var i_11 = 0; i_11 < vertexCount; i_11++) { var prev = prevVertices[i_11], setup = setupVertices[i_11]; @@ -1983,6 +2192,7 @@ } } else { + // Weighted deform offsets, with alpha. for (var i_12 = 0; i_12 < vertexCount; i_12++) { var prev = prevVertices[i_12]; deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha; @@ -2000,6 +2210,7 @@ case exports.MixBlend.add: var vertexAttachment = slotAttachment; if (!vertexAttachment.bones) { + // Unweighted vertex positions, with alpha. var setupVertices = vertexAttachment.vertices; for (var i_14 = 0; i_14 < vertexCount; i_14++) { var prev = prevVertices[i_14]; @@ -2007,6 +2218,7 @@ } } else { + // Weighted deform offsets, with alpha. for (var i_15 = 0; i_15 < vertexCount; i_15++) { var prev = prevVertices[i_15]; deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha; @@ -2017,7 +2229,8 @@ }; return DeformTimeline; }(CurveTimeline)); - var EventTimeline = (function (_super) { + /** Fires an {@link Event} when specific animation times are reached. */ + var EventTimeline = /** @class */ (function (_super) { __extends$b(EventTimeline, _super); function EventTimeline(frameCount) { var _this = _super.call(this, frameCount, EventTimeline.propertyIds) || this; @@ -2027,30 +2240,32 @@ EventTimeline.prototype.getFrameCount = function () { return this.frames.length; }; + /** Sets the time in seconds and the event for the specified key frame. */ EventTimeline.prototype.setFrame = function (frame, event) { this.frames[frame] = event.time; this.events[frame] = event; }; + /** Fires events for frames > `lastTime` and <= `time`. */ EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { if (!firedEvents) return; var frames = this.frames; var frameCount = this.frames.length; - if (lastTime > time) { + if (lastTime > time) { // Fire events after last time for looped animations. this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction); lastTime = -1; } - else if (lastTime >= frames[frameCount - 1]) + else if (lastTime >= frames[frameCount - 1]) // Last time is after last frame. return; if (time < frames[0]) - return; + return; // Time is before first frame. var i = 0; if (lastTime < frames[0]) i = 0; else { i = Timeline.search1(frames, lastTime) + 1; var frameTime = frames[i]; - while (i > 0) { + while (i > 0) { // Fire multiple events with the same frame. if (frames[i - 1] != frameTime) break; i--; @@ -2062,7 +2277,8 @@ EventTimeline.propertyIds = ["" + Property.event]; return EventTimeline; }(Timeline)); - var DrawOrderTimeline = (function (_super) { + /** Changes a skeleton's {@link Skeleton#drawOrder}. */ + var DrawOrderTimeline = /** @class */ (function (_super) { __extends$b(DrawOrderTimeline, _super); function DrawOrderTimeline(frameCount) { var _this = _super.call(this, frameCount, DrawOrderTimeline.propertyIds) || this; @@ -2072,6 +2288,9 @@ DrawOrderTimeline.prototype.getFrameCount = function () { return this.frames.length; }; + /** Sets the time in seconds and the draw order for the specified key frame. + * @param drawOrder For each slot in {@link Skeleton#slots}, the index of the new draw order. May be null to use setup pose + * draw order. */ DrawOrderTimeline.prototype.setFrame = function (frame, time, drawOrder) { this.frames[frame] = time; this.drawOrders[frame] = drawOrder; @@ -2100,7 +2319,9 @@ DrawOrderTimeline.propertyIds = ["" + Property.drawOrder]; return DrawOrderTimeline; }(Timeline)); - var IkConstraintTimeline = (function (_super) { + /** Changes an IK constraint's {@link IkConstraint#mix}, {@link IkConstraint#softness}, + * {@link IkConstraint#bendDirection}, {@link IkConstraint#stretch}, and {@link IkConstraint#compress}. */ + var IkConstraintTimeline = /** @class */ (function (_super) { __extends$b(IkConstraintTimeline, _super); function IkConstraintTimeline(frameCount, bezierCount, ikConstraintIndex) { var _this = _super.call(this, frameCount, bezierCount, [ @@ -2110,16 +2331,17 @@ return _this; } IkConstraintTimeline.prototype.getFrameEntries = function () { - return 6; + return 6 /*ENTRIES*/; }; + /** Sets the time in seconds, mix, softness, bend direction, compress, and stretch for the specified key frame. */ IkConstraintTimeline.prototype.setFrame = function (frame, time, mix, softness, bendDirection, compress, stretch) { - frame *= 6; + frame *= 6 /*ENTRIES*/; this.frames[frame] = time; - this.frames[frame + 1] = mix; - this.frames[frame + 2] = softness; - this.frames[frame + 3] = bendDirection; - this.frames[frame + 4] = compress ? 1 : 0; - this.frames[frame + 5] = stretch ? 1 : 0; + this.frames[frame + 1 /*MIX*/] = mix; + this.frames[frame + 2 /*SOFTNESS*/] = softness; + this.frames[frame + 3 /*BEND_DIRECTION*/] = bendDirection; + this.frames[frame + 4 /*COMPRESS*/] = compress ? 1 : 0; + this.frames[frame + 5 /*STRETCH*/] = stretch ? 1 : 0; }; IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; @@ -2145,24 +2367,24 @@ return; } var mix = 0, softness = 0; - var i = Timeline.search(frames, time, 6); - var curveType = this.curves[i / 6]; + var i = Timeline.search(frames, time, 6 /*ENTRIES*/); + var curveType = this.curves[i / 6 /*ENTRIES*/]; switch (curveType) { - case 0: + case 0 /*LINEAR*/: var before = frames[i]; - mix = frames[i + 1]; - softness = frames[i + 2]; - var t = (time - before) / (frames[i + 6] - before); - mix += (frames[i + 6 + 1] - mix) * t; - softness += (frames[i + 6 + 2] - softness) * t; + mix = frames[i + 1 /*MIX*/]; + softness = frames[i + 2 /*SOFTNESS*/]; + var t = (time - before) / (frames[i + 6 /*ENTRIES*/] - before); + mix += (frames[i + 6 /*ENTRIES*/ + 1 /*MIX*/] - mix) * t; + softness += (frames[i + 6 /*ENTRIES*/ + 2 /*SOFTNESS*/] - softness) * t; break; - case 1: - mix = frames[i + 1]; - softness = frames[i + 2]; + case 1 /*STEPPED*/: + mix = frames[i + 1 /*MIX*/]; + softness = frames[i + 2 /*SOFTNESS*/]; break; default: - mix = this.getBezierValue(time, i, 1, curveType - 2); - softness = this.getBezierValue(time, i, 2, curveType + 18 - 2); + mix = this.getBezierValue(time, i, 1 /*MIX*/, curveType - 2 /*BEZIER*/); + softness = this.getBezierValue(time, i, 2 /*SOFTNESS*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); } if (blend == exports.MixBlend.setup) { constraint.mix = constraint.data.mix + (mix - constraint.data.mix) * alpha; @@ -2173,24 +2395,26 @@ constraint.stretch = constraint.data.stretch; } else { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; + constraint.bendDirection = frames[i + 3 /*BEND_DIRECTION*/]; + constraint.compress = frames[i + 4 /*COMPRESS*/] != 0; + constraint.stretch = frames[i + 5 /*STRETCH*/] != 0; } } else { constraint.mix += (mix - constraint.mix) * alpha; constraint.softness += (softness - constraint.softness) * alpha; if (direction == exports.MixDirection.mixIn) { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; + constraint.bendDirection = frames[i + 3 /*BEND_DIRECTION*/]; + constraint.compress = frames[i + 4 /*COMPRESS*/] != 0; + constraint.stretch = frames[i + 5 /*STRETCH*/] != 0; } } }; return IkConstraintTimeline; }(CurveTimeline)); - var TransformConstraintTimeline = (function (_super) { + /** Changes a transform constraint's {@link TransformConstraint#rotateMix}, {@link TransformConstraint#translateMix}, + * {@link TransformConstraint#scaleMix}, and {@link TransformConstraint#shearMix}. */ + var TransformConstraintTimeline = /** @class */ (function (_super) { __extends$b(TransformConstraintTimeline, _super); function TransformConstraintTimeline(frameCount, bezierCount, transformConstraintIndex) { var _this = _super.call(this, frameCount, bezierCount, [ @@ -2200,18 +2424,19 @@ return _this; } TransformConstraintTimeline.prototype.getFrameEntries = function () { - return 7; + return 7 /*ENTRIES*/; }; + /** The time in seconds, rotate mix, translate mix, scale mix, and shear mix for the specified key frame. */ TransformConstraintTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) { var frames = this.frames; - frame *= 7; + frame *= 7 /*ENTRIES*/; frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; - frames[frame + 4] = mixScaleX; - frames[frame + 5] = mixScaleY; - frames[frame + 6] = mixShearY; + frames[frame + 1 /*ROTATE*/] = mixRotate; + frames[frame + 2 /*X*/] = mixX; + frames[frame + 3 /*Y*/] = mixY; + frames[frame + 4 /*SCALEX*/] = mixScaleX; + frames[frame + 5 /*SCALEY*/] = mixScaleY; + frames[frame + 6 /*SHEARY*/] = mixShearY; }; TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; @@ -2240,40 +2465,40 @@ return; } var rotate, x, y, scaleX, scaleY, shearY; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; + var i = Timeline.search(frames, time, 7 /*ENTRIES*/); + var curveType = this.curves[i / 7 /*ENTRIES*/]; switch (curveType) { - case 0: + case 0 /*LINEAR*/: var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - rotate += (frames[i + 7 + 1] - rotate) * t; - x += (frames[i + 7 + 2] - x) * t; - y += (frames[i + 7 + 3] - y) * t; - scaleX += (frames[i + 7 + 4] - scaleX) * t; - scaleY += (frames[i + 7 + 5] - scaleY) * t; - shearY += (frames[i + 7 + 6] - shearY) * t; + rotate = frames[i + 1 /*ROTATE*/]; + x = frames[i + 2 /*X*/]; + y = frames[i + 3 /*Y*/]; + scaleX = frames[i + 4 /*SCALEX*/]; + scaleY = frames[i + 5 /*SCALEY*/]; + shearY = frames[i + 6 /*SHEARY*/]; + var t = (time - before) / (frames[i + 7 /*ENTRIES*/] - before); + rotate += (frames[i + 7 /*ENTRIES*/ + 1 /*ROTATE*/] - rotate) * t; + x += (frames[i + 7 /*ENTRIES*/ + 2 /*X*/] - x) * t; + y += (frames[i + 7 /*ENTRIES*/ + 3 /*Y*/] - y) * t; + scaleX += (frames[i + 7 /*ENTRIES*/ + 4 /*SCALEX*/] - scaleX) * t; + scaleY += (frames[i + 7 /*ENTRIES*/ + 5 /*SCALEY*/] - scaleY) * t; + shearY += (frames[i + 7 /*ENTRIES*/ + 6 /*SHEARY*/] - shearY) * t; break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; + case 1 /*STEPPED*/: + rotate = frames[i + 1 /*ROTATE*/]; + x = frames[i + 2 /*X*/]; + y = frames[i + 3 /*Y*/]; + scaleX = frames[i + 4 /*SCALEX*/]; + scaleY = frames[i + 5 /*SCALEY*/]; + shearY = frames[i + 6 /*SHEARY*/]; break; default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - scaleX = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - scaleY = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - shearY = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); + rotate = this.getBezierValue(time, i, 1 /*ROTATE*/, curveType - 2 /*BEZIER*/); + x = this.getBezierValue(time, i, 2 /*X*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + y = this.getBezierValue(time, i, 3 /*Y*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); + scaleX = this.getBezierValue(time, i, 4 /*SCALEX*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/); + scaleY = this.getBezierValue(time, i, 5 /*SCALEY*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/); + shearY = this.getBezierValue(time, i, 6 /*SHEARY*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/); } if (blend == exports.MixBlend.setup) { var data = constraint.data; @@ -2295,7 +2520,8 @@ }; return TransformConstraintTimeline; }(CurveTimeline)); - var PathConstraintPositionTimeline = (function (_super) { + /** Changes a path constraint's {@link PathConstraint#position}. */ + var PathConstraintPositionTimeline = /** @class */ (function (_super) { __extends$b(PathConstraintPositionTimeline, _super); function PathConstraintPositionTimeline(frameCount, bezierCount, pathConstraintIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintPosition + "|" + pathConstraintIndex) || this; @@ -2325,10 +2551,12 @@ }; return PathConstraintPositionTimeline; }(CurveTimeline1)); - var PathConstraintSpacingTimeline = (function (_super) { + /** Changes a path constraint's {@link PathConstraint#spacing}. */ + var PathConstraintSpacingTimeline = /** @class */ (function (_super) { __extends$b(PathConstraintSpacingTimeline, _super); function PathConstraintSpacingTimeline(frameCount, bezierCount, pathConstraintIndex) { var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintSpacing + "|" + pathConstraintIndex) || this; + /** The index of the path constraint slot in {@link Skeleton#getPathConstraints()} that will be changed. */ _this.pathConstraintIndex = 0; _this.pathConstraintIndex = pathConstraintIndex; return _this; @@ -2356,26 +2584,29 @@ }; return PathConstraintSpacingTimeline; }(CurveTimeline1)); - var PathConstraintMixTimeline = (function (_super) { + /** Changes a transform constraint's {@link PathConstraint#getMixRotate()}, {@link PathConstraint#getMixX()}, and + * {@link PathConstraint#getMixY()}. */ + var PathConstraintMixTimeline = /** @class */ (function (_super) { __extends$b(PathConstraintMixTimeline, _super); function PathConstraintMixTimeline(frameCount, bezierCount, pathConstraintIndex) { var _this = _super.call(this, frameCount, bezierCount, [ Property.pathConstraintMix + "|" + pathConstraintIndex ]) || this; + /** The index of the path constraint slot in {@link Skeleton#getPathConstraints()} that will be changed. */ _this.pathConstraintIndex = 0; _this.pathConstraintIndex = pathConstraintIndex; return _this; } PathConstraintMixTimeline.prototype.getFrameEntries = function () { - return 4; + return 4 /*ENTRIES*/; }; PathConstraintMixTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY) { var frames = this.frames; frame <<= 2; frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; + frames[frame + 1 /*ROTATE*/] = mixRotate; + frames[frame + 2 /*X*/] = mixX; + frames[frame + 3 /*Y*/] = mixY; }; PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; @@ -2397,28 +2628,28 @@ return; } var rotate, x, y; - var i = Timeline.search(frames, time, 4); + var i = Timeline.search(frames, time, 4 /*ENTRIES*/); var curveType = this.curves[i >> 2]; switch (curveType) { - case 0: + case 0 /*LINEAR*/: var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - rotate += (frames[i + 4 + 1] - rotate) * t; - x += (frames[i + 4 + 2] - x) * t; - y += (frames[i + 4 + 3] - y) * t; + rotate = frames[i + 1 /*ROTATE*/]; + x = frames[i + 2 /*X*/]; + y = frames[i + 3 /*Y*/]; + var t = (time - before) / (frames[i + 4 /*ENTRIES*/] - before); + rotate += (frames[i + 4 /*ENTRIES*/ + 1 /*ROTATE*/] - rotate) * t; + x += (frames[i + 4 /*ENTRIES*/ + 2 /*X*/] - x) * t; + y += (frames[i + 4 /*ENTRIES*/ + 3 /*Y*/] - y) * t; break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; + case 1 /*STEPPED*/: + rotate = frames[i + 1 /*ROTATE*/]; + x = frames[i + 2 /*X*/]; + y = frames[i + 3 /*Y*/]; break; default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); + rotate = this.getBezierValue(time, i, 1 /*ROTATE*/, curveType - 2 /*BEZIER*/); + x = this.getBezierValue(time, i, 2 /*X*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/); + y = this.getBezierValue(time, i, 3 /*Y*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/); } if (blend == exports.MixBlend.setup) { var data = constraint.data; @@ -2435,9 +2666,46 @@ return PathConstraintMixTimeline; }(CurveTimeline)); - var AnimationState = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Applies animations over time, queues animations for later playback, mixes (crossfading) between animations, and applies + * multiple animations on top of each other (layering). + * + * See [Applying Animations](http://esotericsoftware.com/spine-applying-animations/) in the Spine Runtimes Guide. */ + var AnimationState = /** @class */ (function () { function AnimationState(data) { + /** The list of tracks that currently have animations, which may contain null entries. */ this.tracks = new Array(); + /** Multiplier for the delta time when the animation state is updated, causing time for all animations and mixes to play slower + * or faster. Defaults to 1. + * + * See TrackEntry {@link TrackEntry#timeScale} for affecting a single animation. */ this.timeScale = 1; this.unkeyedState = 0; this.events = new Array(); @@ -2453,6 +2721,7 @@ _emptyAnimation = new Animation("", [], 0); return _emptyAnimation; }; + /** Increments each track entry {@link TrackEntry#trackTime()}, setting queued animations as current if needed. */ AnimationState.prototype.update = function (delta) { delta *= this.timeScale; var tracks = this.tracks; @@ -2472,6 +2741,7 @@ } var next = current.next; if (next) { + // When the next entry's delay is passed, change to the next entry, preserving leftover time. var nextTime = current.trackLast - next.delay; if (nextTime >= 0) { next.delay = 0; @@ -2492,6 +2762,7 @@ continue; } if (current.mixingFrom && this.updateMixingFrom(current, delta)) { + // End mixing from entries once all have completed. var from = current.mixingFrom; current.mixingFrom = null; if (from) @@ -2505,6 +2776,7 @@ } this.queue.drain(); }; + /** Returns true when all mixing from entries are complete. */ AnimationState.prototype.updateMixingFrom = function (to, delta) { var from = to.mixingFrom; if (!from) @@ -2512,7 +2784,9 @@ var finished = this.updateMixingFrom(from, delta); from.animationLast = from.nextAnimationLast; from.trackLast = from.nextTrackLast; + // Require mixTime > 0 to ensure the mixing from entry was applied at least once. if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { + // Require totalAlpha == 0 to ensure mixing is complete, unless mixDuration == 0 (the transition is a single frame). if (from.totalAlpha == 0 || to.mixDuration == 0) { to.mixingFrom = from.mixingFrom; if (from.mixingFrom) @@ -2526,6 +2800,9 @@ to.mixTime += delta; return false; }; + /** Poses the skeleton using the track entry animations. There are no side effects other than invoking listeners, so the + * animation state can be applied to multiple skeletons to pose them identically. + * @returns True if any animations were applied. */ AnimationState.prototype.apply = function (skeleton) { if (!skeleton) throw new Error("skeleton cannot be null."); @@ -2540,11 +2817,13 @@ continue; applied = true; var blend = i_1 == 0 ? exports.MixBlend.first : current.mixBlend; + // Apply mixing from entries first. var mix = current.alpha; if (current.mixingFrom) mix *= this.applyMixingFrom(current, skeleton, blend); else if (current.trackTime >= current.trackEnd && !current.next) mix = 0; + // Apply current entry. var animationLast = current.animationLast, animationTime = current.getAnimationTime(), applyTime = animationTime; var applyEvents = events; if (current.reverse) { @@ -2555,6 +2834,9 @@ var timelineCount = timelines.length; if ((i_1 == 0 && mix == 1) || blend == exports.MixBlend.add) { for (var ii = 0; ii < timelineCount; ii++) { + // Fixes issue #302 on IOS9 where mix, blend sometimes became undefined and caused assets + // to sometimes stop rendering when using color correction, as their RGBA values become NaN. + // (https://github.com/pixijs/pixi-spine/issues/302) Utils.webkit602BugfixHelper(mix, blend); var timeline = timelines[ii]; if (timeline instanceof AttachmentTimeline) @@ -2578,6 +2860,7 @@ this.applyAttachmentTimeline(timeline_1, skeleton, applyTime, blend, true); } else { + // This fixes the WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109 Utils.webkit602BugfixHelper(mix, blend); timeline_1.apply(skeleton, animationLast, applyTime, applyEvents, mix, timelineBlend, exports.MixDirection.mixIn); } @@ -2588,6 +2871,9 @@ current.nextAnimationLast = animationTime; current.nextTrackLast = current.trackTime; } + // Set slots attachments to the setup pose, if needed. This occurs if an animation that is mixing out sets attachments so + // subsequent timelines see any deform, but the subsequent timelines don't set an attachment (eg they are also mixing out or + // the time is before the first key). var setupState = this.unkeyedState + SETUP; var slots = skeleton.slots; for (var i = 0, n = skeleton.slots.length; i < n; i++) { @@ -2597,7 +2883,7 @@ slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); } } - this.unkeyedState += 2; + this.unkeyedState += 2; // Increasing after each use avoids the need to reset attachmentState for every slot. this.queue.drain(); return applied; }; @@ -2606,7 +2892,7 @@ if (from.mixingFrom) this.applyMixingFrom(from, skeleton, blend); var mix = 0; - if (to.mixDuration == 0) { + if (to.mixDuration == 0) { // Single frame mix to undo mixingFrom changes. mix = 1; if (blend == exports.MixBlend.first) blend = exports.MixBlend.setup; @@ -2675,6 +2961,7 @@ else if (timeline instanceof AttachmentTimeline) this.applyAttachmentTimeline(timeline, skeleton, applyTime, timelineBlend, attachments); else { + // This fixes the WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109 Utils.webkit602BugfixHelper(alpha, blend); if (drawOrder && timeline instanceof DrawOrderTimeline && timelineBlend == exports.MixBlend.setup) direction = exports.MixDirection.mixIn; @@ -2693,12 +2980,13 @@ var slot = skeleton.slots[timeline.slotIndex]; if (!slot.bone.active) return; - if (time < timeline.frames[0]) { + if (time < timeline.frames[0]) { // Time is before first frame. if (blend == exports.MixBlend.setup || blend == exports.MixBlend.first) this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments); } else this.setAttachment(skeleton, slot, timeline.attachmentNames[Timeline.search1(timeline.frames, time)], attachments); + // If an attachment wasn't set (ie before the first frame or attachments is false), set the setup attachment later. if (slot.attachmentState <= this.unkeyedState) slot.attachmentState = this.unkeyedState + SETUP; }; @@ -2734,6 +3022,7 @@ r1 = blend == exports.MixBlend.setup ? bone.data.rotation : bone.rotation; r2 = bone.data.rotation + timeline.getCurveValue(time); } + // Mix between rotations using the direction of the shortest route on the first frame while detecting crosses. var total = 0, diff = r2 - r1; diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360; if (diff == 0) { @@ -2746,16 +3035,18 @@ lastDiff = diff; } else { - lastTotal = timelinesRotation[i]; - lastDiff = timelinesRotation[i + 1]; + lastTotal = timelinesRotation[i]; // Angle and direction of mix, including loops. + lastDiff = timelinesRotation[i + 1]; // Difference between bones. } var current = diff > 0, dir = lastTotal >= 0; + // Detect cross at 0 (not 180). if (MathUtils.signum(lastDiff) != MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { + // A cross after a 360 rotation is a loop. if (Math.abs(lastTotal) > 180) lastTotal += 360 * MathUtils.signum(lastTotal); dir = current; } - total = diff + lastTotal - lastTotal % 360; + total = diff + lastTotal - lastTotal % 360; // Store loops as part of lastTotal. if (dir != current) total += 360 * MathUtils.signum(lastTotal); timelinesRotation[i] = total; @@ -2767,6 +3058,7 @@ var animationStart = entry.animationStart, animationEnd = entry.animationEnd; var duration = animationEnd - animationStart; var trackLastWrapped = entry.trackLast % duration; + // Queue events before complete. var events = this.events; var i = 0, n = events.length; for (; i < n; i++) { @@ -2774,9 +3066,10 @@ if (event_1.time < trackLastWrapped) break; if (event_1.time > animationEnd) - continue; + continue; // Discard events outside animation start/end. this.queue.event(entry, event_1); } + // Queue complete if completed a loop iteration or the animation. var complete = false; if (entry.loop) complete = duration == 0 || trackLastWrapped > entry.trackTime % duration; @@ -2784,13 +3077,18 @@ complete = animationTime >= animationEnd && entry.animationLast < animationEnd; if (complete) this.queue.complete(entry); + // Queue events after complete. for (; i < n; i++) { var event_2 = events[i]; if (event_2.time < animationStart) - continue; + continue; // Discard events outside animation start/end. this.queue.event(entry, event_2); } }; + /** Removes all animations from all tracks, leaving skeletons in their current pose. + * + * It may be desired to use {@link AnimationState#setEmptyAnimation()} to mix the skeletons back to the setup pose, + * rather than leaving them in their current pose. */ AnimationState.prototype.clearTracks = function () { var oldDrainDisabled = this.queue.drainDisabled; this.queue.drainDisabled = true; @@ -2800,6 +3098,10 @@ this.queue.drainDisabled = oldDrainDisabled; this.queue.drain(); }; + /** Removes all animations from the track, leaving skeletons in their current pose. + * + * It may be desired to use {@link AnimationState#setEmptyAnimation()} to mix the skeletons back to the setup pose, + * rather than leaving them in their current pose. */ AnimationState.prototype.clearTrack = function (trackIndex) { if (trackIndex >= this.tracks.length) return; @@ -2831,12 +3133,16 @@ current.mixingFrom = from; from.mixingTo = current; current.mixTime = 0; + // Store the interrupted mix percentage. if (from.mixingFrom && from.mixDuration > 0) current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration); - from.timelinesRotation.length = 0; + from.timelinesRotation.length = 0; // Reset rotation for mixing out, in case entry was mixed in. } this.queue.start(current); }; + /** Sets an animation by name. + * + * See {@link #setAnimationWith()}. */ AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { if (loop === void 0) { loop = false; } var animation = this.data.skeletonData.findAnimation(animationName); @@ -2844,6 +3150,12 @@ throw new Error("Animation not found: " + animationName); return this.setAnimationWith(trackIndex, animation, loop); }; + /** Sets the current animation for a track, discarding any queued animations. If the formerly current track entry was never + * applied to a skeleton, it is replaced (not mixed from). + * @param loop If true, the animation will repeat. If false it will not, instead its last frame is applied if played beyond its + * duration. In either case {@link TrackEntry#trackEnd} determines when the track is cleared. + * @returns A track entry to allow further customization of animation playback. References to the track entry must not be kept + * after the {@link AnimationStateListener#dispose()} event occurs. */ AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { if (loop === void 0) { loop = false; } if (!animation) @@ -2852,6 +3164,7 @@ var current = this.expandToIndex(trackIndex); if (current) { if (current.nextTrackLast == -1) { + // Don't mix from an entry that was never applied. this.tracks[trackIndex] = current.mixingFrom; this.queue.interrupt(current); this.queue.end(current); @@ -2867,6 +3180,9 @@ this.queue.drain(); return entry; }; + /** Queues an animation by name. + * + * See {@link #addAnimationWith()}. */ AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { if (loop === void 0) { loop = false; } if (delay === void 0) { delay = 0; } @@ -2875,6 +3191,14 @@ throw new Error("Animation not found: " + animationName); return this.addAnimationWith(trackIndex, animation, loop, delay); }; + /** Adds an animation to be played after the current or last queued animation for a track. If the track is empty, it is + * equivalent to calling {@link #setAnimationWith()}. + * @param delay If > 0, sets {@link TrackEntry#delay}. If <= 0, the delay set is the duration of the previous track entry + * minus any mix duration (from the {@link AnimationStateData}) plus the specified `delay` (ie the mix + * ends at (`delay` = 0) or before (`delay` < 0) the previous track entry duration). If the + * previous entry is looping, its next loop completion is used instead of its duration. + * @returns A track entry to allow further customization of animation playback. References to the track entry must not be kept + * after the {@link AnimationStateListener#dispose()} event occurs. */ AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { if (loop === void 0) { loop = false; } if (delay === void 0) { delay = 0; } @@ -2899,6 +3223,20 @@ entry.delay = delay; return entry; }; + /** Sets an empty animation for a track, discarding any queued animations, and sets the track entry's + * {@link TrackEntry#mixduration}. An empty animation has no timelines and serves as a placeholder for mixing in or out. + * + * Mixing out is done by setting an empty animation with a mix duration using either {@link #setEmptyAnimation()}, + * {@link #setEmptyAnimations()}, or {@link #addEmptyAnimation()}. Mixing to an empty animation causes + * the previous animation to be applied less and less over the mix duration. Properties keyed in the previous animation + * transition to the value from lower tracks or to the setup pose value if no lower tracks key the property. A mix duration of + * 0 still mixes out over one frame. + * + * Mixing in is done by first setting an empty animation, then adding an animation using + * {@link #addAnimation()} and on the returned track entry, set the + * {@link TrackEntry#setMixDuration()}. Mixing from an empty animation causes the new animation to be applied more and + * more over the mix duration. Properties keyed in the new animation transition from the value from lower tracks or from the + * setup pose value if no lower tracks key the property to the value keyed in the new animation. */ AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) { if (mixDuration === void 0) { mixDuration = 0; } var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation(), false); @@ -2906,6 +3244,17 @@ entry.trackEnd = mixDuration; return entry; }; + /** Adds an empty animation to be played after the current or last queued animation for a track, and sets the track entry's + * {@link TrackEntry#mixDuration}. If the track is empty, it is equivalent to calling + * {@link #setEmptyAnimation()}. + * + * See {@link #setEmptyAnimation()}. + * @param delay If > 0, sets {@link TrackEntry#delay}. If <= 0, the delay set is the duration of the previous track entry + * minus any mix duration plus the specified `delay` (ie the mix ends at (`delay` = 0) or + * before (`delay` < 0) the previous track entry duration). If the previous entry is looping, its next + * loop completion is used instead of its duration. + * @return A track entry to allow further customization of animation playback. References to the track entry must not be kept + * after the {@link AnimationStateListener#dispose()} event occurs. */ AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) { if (mixDuration === void 0) { mixDuration = 0; } if (delay === void 0) { delay = 0; } @@ -2916,6 +3265,8 @@ entry.trackEnd = mixDuration; return entry; }; + /** Sets an empty animation for every track, discarding any queued animations, and mixes to it over the specified mix + * duration. */ AnimationState.prototype.setEmptyAnimations = function (mixDuration) { if (mixDuration === void 0) { mixDuration = 0; } var oldDrainDisabled = this.queue.drainDisabled; @@ -2935,6 +3286,7 @@ this.tracks.length = index + 1; return null; }; + /** @param last May be null. */ AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) { var entry = this.trackEntryPool.obtain(); entry.trackIndex = trackIndex; @@ -2961,6 +3313,7 @@ entry.mixBlend = exports.MixBlend.replace; return entry; }; + /** Removes the {@link TrackEntry#getNext() next entry} and all entries after it for the specified entry. */ AnimationState.prototype.clearNext = function (entry) { var next = entry.next; while (next) { @@ -3024,31 +3377,47 @@ } } }; + /** Returns the track entry for the animation currently playing on the track, or null if no animation is currently playing. */ AnimationState.prototype.getCurrent = function (trackIndex) { if (trackIndex >= this.tracks.length) return null; return this.tracks[trackIndex]; }; + /** Adds a listener to receive events for all track entries. */ AnimationState.prototype.addListener = function (listener) { if (!listener) throw new Error("listener cannot be null."); this.listeners.push(listener); }; + /** Removes the listener added with {@link #addListener()}. */ AnimationState.prototype.removeListener = function (listener) { var index = this.listeners.indexOf(listener); if (index >= 0) this.listeners.splice(index, 1); }; + /** Removes all listeners added with {@link #addListener()}. */ AnimationState.prototype.clearListeners = function () { this.listeners.length = 0; }; + /** Discards all listener notifications that have not yet been delivered. This can be useful to call from an + * {@link AnimationStateListener} when it is known that further notifications that may have been already queued for delivery + * are not wanted because new animations are being set. */ AnimationState.prototype.clearListenerNotifications = function () { this.queue.clear(); }; return AnimationState; }()); - var TrackEntry = (function () { + /** Stores settings and other state for the playback of an animation on an {@link AnimationState} track. + * + * References to a track entry must not be kept after the {@link AnimationStateListener#dispose()} event occurs. */ + var TrackEntry = /** @class */ (function () { function TrackEntry() { + /** Controls how properties keyed in the animation are mixed with lower tracks. Defaults to {@link MixBlend#replace}, which + * replaces the values from the lower tracks with the animation values. {@link MixBlend#add} adds the animation values to + * the values from the lower tracks. + * + * The `mixBlend` can be set for a new track entry only before {@link AnimationState#apply()} is first + * called. */ this.mixBlend = exports.MixBlend.replace; this.timelineMode = new Array(); this.timelineHoldMix = new Array(); @@ -3065,6 +3434,9 @@ this.timelineHoldMix.length = 0; this.timelinesRotation.length = 0; }; + /** Uses {@link #trackTime} to compute the `animationTime`, which is between {@link #animationStart} + * and {@link #animationEnd}. When the `trackTime` is 0, the `animationTime` is equal to the + * `animationStart` time. */ TrackEntry.prototype.getAnimationTime = function () { if (this.loop) { var duration = this.animationEnd - this.animationStart; @@ -3078,9 +3450,19 @@ this.animationLast = animationLast; this.nextAnimationLast = animationLast; }; + /** Returns true if at least one loop has been completed. + * + * See {@link AnimationStateListener#complete()}. */ TrackEntry.prototype.isComplete = function () { return this.trackTime >= this.animationEnd - this.animationStart; }; + /** Resets the rotation directions for mixing this entry's rotate timelines. This can be useful to avoid bones rotating the + * long way around when using {@link #alpha} and starting animations on other tracks. + * + * Mixing with {@link MixBlend#replace} involves finding a rotation between two others, which has two possible solutions: + * the short way or the long way around. The two rotations likely change over time, so which direction is the short or long + * way also changes. If the short way was always chosen, bones would flip to the other side when that direction became the + * long way. TrackEntry chooses the short way the first time it is applied and remembers that direction. */ TrackEntry.prototype.resetRotationDirections = function () { this.timelinesRotation.length = 0; }; @@ -3088,15 +3470,15 @@ var duration = this.animationEnd - this.animationStart; if (duration != 0) { if (this.loop) - return duration * (1 + ((this.trackTime / duration) | 0)); + return duration * (1 + ((this.trackTime / duration) | 0)); // Completion of next loop. if (this.trackTime < duration) - return duration; + return duration; // Before duration. } - return this.trackTime; + return this.trackTime; // Next update. }; return TrackEntry; }()); - var EventQueue = (function () { + var EventQueue = /** @class */ (function () { function EventQueue(animState) { this.objects = []; this.drainDisabled = false; @@ -3159,6 +3541,7 @@ for (var ii = 0; ii < listeners.length; ii++) if (listeners[ii].end) listeners[ii].end(entry); + // Fall through. case exports.EventType.dispose: if (entry.listener && entry.listener.dispose) entry.listener.dispose(entry); @@ -3201,7 +3584,7 @@ EventType[EventType["complete"] = 4] = "complete"; EventType[EventType["event"] = 5] = "event"; })(exports.EventType || (exports.EventType = {})); - var AnimationStateAdapter = (function () { + var AnimationStateAdapter = /** @class */ (function () { function AnimationStateAdapter() { } AnimationStateAdapter.prototype.start = function (entry) { @@ -3218,23 +3601,85 @@ }; return AnimationStateAdapter; }()); + /** 1. A previously applied timeline has set this property. + * + * Result: Mix from the current pose to the timeline pose. */ var SUBSEQUENT = 0; + /** 1. This is the first timeline to set this property. + * 2. The next track entry applied after this one does not have a timeline to set this property. + * + * Result: Mix from the setup pose to the timeline pose. */ var FIRST = 1; + /** 1) A previously applied timeline has set this property.
        + * 2) The next track entry to be applied does have a timeline to set this property.
        + * 3) The next track entry after that one does not have a timeline to set this property.
        + * Result: Mix from the current pose to the timeline pose, but do not mix out. This avoids "dipping" when crossfading + * animations that key the same property. A subsequent timeline will set this property using a mix. */ var HOLD_SUBSEQUENT = 2; + /** 1) This is the first timeline to set this property.
        + * 2) The next track entry to be applied does have a timeline to set this property.
        + * 3) The next track entry after that one does not have a timeline to set this property.
        + * Result: Mix from the setup pose to the timeline pose, but do not mix out. This avoids "dipping" when crossfading animations + * that key the same property. A subsequent timeline will set this property using a mix. */ var HOLD_FIRST = 3; + /** 1. This is the first timeline to set this property. + * 2. The next track entry to be applied does have a timeline to set this property. + * 3. The next track entry after that one does have a timeline to set this property. + * 4. timelineHoldMix stores the first subsequent track entry that does not have a timeline to set this property. + * + * Result: The same as HOLD except the mix percentage from the timelineHoldMix track entry is used. This handles when more than + * 2 track entries in a row have a timeline that sets the same property. + * + * Eg, A -> B -> C -> D where A, B, and C have a timeline setting same property, but D does not. When A is applied, to avoid + * "dipping" A is not mixed out, however D (the first entry that doesn't set the property) mixing in is used to mix out A + * (which affects B and C). Without using D to mix out, A would be applied fully until mixing completes, then snap into + * place. */ var HOLD_MIX = 4; var SETUP = 1; var CURRENT = 2; var _emptyAnimation = null; - var AnimationStateData = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores mix (crossfade) durations to be applied when {@link AnimationState} animations are changed. */ + var AnimationStateData = /** @class */ (function () { function AnimationStateData(skeletonData) { this.animationToMixTime = {}; + /** The mix duration to use when no mix duration has been defined between two animations. */ this.defaultMix = 0; if (!skeletonData) throw new Error("skeletonData cannot be null."); this.skeletonData = skeletonData; } + /** Sets a mix duration by animation name. + * + * See {@link #setMixWith()}. */ AnimationStateData.prototype.setMix = function (fromName, toName, duration) { var from = this.skeletonData.findAnimation(fromName); if (!from) @@ -3244,6 +3689,9 @@ throw new Error("Animation not found: " + toName); this.setMixWith(from, to, duration); }; + /** Sets the mix duration when changing from the specified animation to the other. + * + * See {@link TrackEntry#mixDuration}. */ AnimationStateData.prototype.setMixWith = function (from, to, duration) { if (!from) throw new Error("from cannot be null."); @@ -3252,6 +3700,8 @@ var key = from.name + "." + to.name; this.animationToMixTime[key] = duration; }; + /** Returns the mix duration to use when changing from the specified animation to the other, or the {@link #defaultMix} if + * no mix duration has been set. */ AnimationStateData.prototype.getMix = function (from, to) { var key = from.name + "." + to.name; var value = this.animationToMixTime[key]; @@ -3260,6 +3710,34 @@ return AnimationStateData; }()); + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ var __extends$a = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || @@ -3275,7 +3753,135 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var Texture = (function () { + /** An attachment with vertices that make up a polygon. Can be used for hit detection, creating physics bodies, spawning particle + * effects, and more. + * + * See {@link SkeletonBounds} and [Bounding Boxes](http://esotericsoftware.com/spine-bounding-boxes) in the Spine User + * Guide. */ + var BoundingBoxAttachment = /** @class */ (function (_super) { + __extends$a(BoundingBoxAttachment, _super); + function BoundingBoxAttachment(name) { + var _this = _super.call(this, name) || this; + _this.color = new Color(1, 1, 1, 1); + return _this; + } + BoundingBoxAttachment.prototype.copy = function () { + var copy = new BoundingBoxAttachment(this.name); + this.copyTo(copy); + copy.color.setFromColor(this.color); + return copy; + }; + return BoundingBoxAttachment; + }(VertexAttachment)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$9 = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + /** An attachment with vertices that make up a polygon used for clipping the rendering of other attachments. */ + var ClippingAttachment = /** @class */ (function (_super) { + __extends$9(ClippingAttachment, _super); + function ClippingAttachment(name) { + var _this = _super.call(this, name) || this; + // Nonessential. + /** The color of the clipping polygon as it was in Spine. Available only when nonessential data was exported. Clipping polygons + * are not usually rendered at runtime. */ + _this.color = new Color(0.2275, 0.2275, 0.8078, 1); // ce3a3aff + return _this; + } + ClippingAttachment.prototype.copy = function () { + var copy = new ClippingAttachment(this.name); + this.copyTo(copy); + copy.endSlot = this.endSlot; + copy.color.setFromColor(this.color); + return copy; + }; + return ClippingAttachment; + }(VertexAttachment)); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$8 = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + var Texture = /** @class */ (function () { function Texture(image) { this._image = image; } @@ -3292,15 +3898,15 @@ TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; - TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; + TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; // WebGLRenderingContext.LINEAR_MIPMAP_LINEAR })(exports.TextureFilter || (exports.TextureFilter = {})); exports.TextureWrap = void 0; (function (TextureWrap) { TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; - TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; + TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; // WebGLRenderingContext.REPEAT })(exports.TextureWrap || (exports.TextureWrap = {})); - var TextureRegion = (function () { + var TextureRegion = /** @class */ (function () { function TextureRegion() { this.u = 0; this.v = 0; @@ -3316,8 +3922,8 @@ } return TextureRegion; }()); - var FakeTexture = (function (_super) { - __extends$a(FakeTexture, _super); + var FakeTexture = /** @class */ (function (_super) { + __extends$8(FakeTexture, _super); function FakeTexture() { return _super !== null && _super.apply(this, arguments) || this; } @@ -3327,7 +3933,35 @@ return FakeTexture; }(Texture)); - var __extends$9 = (this && this.__extends) || (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var __extends$7 = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || @@ -3342,7 +3976,7 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var TextureAtlas = (function () { + var TextureAtlas = /** @class */ (function () { function TextureAtlas(atlasText) { this.pages = new Array(); this.regions = new Array(); @@ -3356,6 +3990,7 @@ page.height = parseInt(entry[2]); }; pageFields["format"] = function () { + // page.format = Format[tuple[0]]; we don't need format in WebGL }; pageFields["filter"] = function () { page.minFilter = Utils.enumValue(exports.TextureFilter, entry[1]); @@ -3410,15 +4045,18 @@ region.index = parseInt(entry[1]); }; var line = reader.readLine(); + // Ignore empty lines before first entry. while (line && line.trim().length == 0) line = reader.readLine(); + // Header entries. while (true) { if (!line || line.trim().length == 0) break; if (reader.readEntry(entry, line) == 0) - break; + break; // Silently ignore all header fields. line = reader.readLine(); } + // Page and region entries. var names = null; var values = null; while (true) { @@ -3509,7 +4147,7 @@ }; return TextureAtlas; }()); - var TextureAtlasReader = (function () { + var TextureAtlasReader = /** @class */ (function () { function TextureAtlasReader(text) { this.index = 0; this.lines = text.split(/\r\n|\r|\n/); @@ -3543,7 +4181,7 @@ }; return TextureAtlasReader; }()); - var TextureAtlasPage = (function () { + var TextureAtlasPage = /** @class */ (function () { function TextureAtlasPage() { this.minFilter = exports.TextureFilter.Nearest; this.magFilter = exports.TextureFilter.Nearest; @@ -3557,328 +4195,42 @@ }; return TextureAtlasPage; }()); - var TextureAtlasRegion = (function (_super) { - __extends$9(TextureAtlasRegion, _super); + var TextureAtlasRegion = /** @class */ (function (_super) { + __extends$7(TextureAtlasRegion, _super); function TextureAtlasRegion() { return _super !== null && _super.apply(this, arguments) || this; } return TextureAtlasRegion; }(TextureRegion)); - var AssetManager = (function () { - function AssetManager(textureLoader, pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - this.assets = {}; - this.errors = {}; - this.toLoad = 0; - this.loaded = 0; - this.textureLoader = textureLoader; - this.pathPrefix = pathPrefix; - this.downloader = downloader || new Downloader(); - } - AssetManager.prototype.start = function (path) { - this.toLoad++; - return this.pathPrefix + path; - }; - AssetManager.prototype.success = function (callback, path, asset) { - this.toLoad--; - this.loaded++; - this.assets[path] = asset; - if (callback) - callback(path, asset); - }; - AssetManager.prototype.error = function (callback, path, message) { - this.toLoad--; - this.loaded++; - this.errors[path] = message; - if (callback) - callback(path, message); - }; - AssetManager.prototype.setRawDataURI = function (path, data) { - this.downloader.rawDataUris[this.pathPrefix + path] = data; - }; - AssetManager.prototype.loadBinary = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadBinary(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load binary " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadText = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadText(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load text " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadJson = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadJson(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load JSON " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadTexture = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); - var isWebWorker = !isBrowser; - if (isWebWorker) { - fetch(path, { mode: "cors" }).then(function (response) { - if (response.ok) - return response.blob(); - _this.error(error, path, "Couldn't load image: " + path); - return null; - }).then(function (blob) { - return blob ? createImageBitmap(blob, { premultiplyAlpha: "none", colorSpaceConversion: "none" }) : null; - }).then(function (bitmap) { - if (bitmap) - _this.success(success, path, _this.textureLoader(bitmap)); - }); - } - else { - var image_1 = new Image(); - image_1.crossOrigin = "anonymous"; - image_1.onload = function () { - _this.success(success, path, _this.textureLoader(image_1)); - }; - image_1.onerror = function () { - _this.error(error, path, "Couldn't load image: " + path); - }; - if (this.downloader.rawDataUris[path]) - path = this.downloader.rawDataUris[path]; - image_1.src = path; - } - }; - AssetManager.prototype.loadTextureAtlas = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - var index = path.lastIndexOf("/"); - var parent = index >= 0 ? path.substring(0, index + 1) : ""; - path = this.start(path); - this.downloader.downloadText(path, function (atlasText) { - try { - var atlas_1 = new TextureAtlas(atlasText); - var toLoad_1 = atlas_1.pages.length, abort_1 = false; - var _loop_1 = function (page) { - _this.loadTexture(parent + page.name, function (imagePath, texture) { - if (!abort_1) { - page.setTexture(texture); - if (--toLoad_1 == 0) - _this.success(success, path, atlas_1); - } - }, function (imagePath, message) { - if (!abort_1) - _this.error(error, path, "Couldn't load texture atlas " + path + " page image: " + imagePath); - abort_1 = true; - }); - }; - for (var _i = 0, _a = atlas_1.pages; _i < _a.length; _i++) { - var page = _a[_i]; - _loop_1(page); - } - } - catch (e) { - _this.error(error, path, "Couldn't parse texture atlas " + path + ": " + e.message); - } - }, function (status, responseText) { - _this.error(error, path, "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.get = function (path) { - return this.assets[this.pathPrefix + path]; - }; - AssetManager.prototype.require = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset) - return asset; - var error = this.errors[path]; - throw Error("Asset not found: " + path + (error ? "\n" + error : "")); - }; - AssetManager.prototype.remove = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset.dispose) - asset.dispose(); - delete this.assets[path]; - return asset; - }; - AssetManager.prototype.removeAll = function () { - for (var key in this.assets) { - var asset = this.assets[key]; - if (asset.dispose) - asset.dispose(); - } - this.assets = {}; - }; - AssetManager.prototype.isLoadingComplete = function () { - return this.toLoad == 0; - }; - AssetManager.prototype.getToLoad = function () { - return this.toLoad; - }; - AssetManager.prototype.getLoaded = function () { - return this.loaded; - }; - AssetManager.prototype.dispose = function () { - this.removeAll(); - }; - AssetManager.prototype.hasErrors = function () { - return Object.keys(this.errors).length > 0; - }; - AssetManager.prototype.getErrors = function () { - return this.errors; - }; - return AssetManager; - }()); - var Downloader = (function () { - function Downloader() { - this.callbacks = {}; - this.rawDataUris = {}; - } - Downloader.prototype.downloadText = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.overrideMimeType("text/html"); - request.open("GET", url, true); - var done = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = done; - request.onerror = done; - request.send(); - }; - Downloader.prototype.downloadJson = function (url, success, error) { - this.downloadText(url, function (data) { - success(JSON.parse(data)); - }, error); - }; - Downloader.prototype.downloadBinary = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.open("GET", url, true); - request.responseType = "arraybuffer"; - var onerror = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = function () { - if (request.status == 200) - _this.finish(url, 200, new Uint8Array(request.response)); - else - onerror(); - }; - request.onerror = onerror; - request.send(); - }; - Downloader.prototype.start = function (url, success, error) { - var callbacks = this.callbacks[url]; - try { - if (callbacks) - return true; - this.callbacks[url] = callbacks = []; - } - finally { - callbacks.push(success, error); - } - }; - Downloader.prototype.finish = function (url, status, data) { - var callbacks = this.callbacks[url]; - delete this.callbacks[url]; - var args = status == 200 ? [data] : [status, data]; - for (var i = args.length - 1, n = callbacks.length; i < n; i += 2) - callbacks[i].apply(null, args); - }; - return Downloader; - }()); - - var __extends$8 = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - var BoundingBoxAttachment = (function (_super) { - __extends$8(BoundingBoxAttachment, _super); - function BoundingBoxAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new Color(1, 1, 1, 1); - return _this; - } - BoundingBoxAttachment.prototype.copy = function () { - var copy = new BoundingBoxAttachment(this.name); - this.copyTo(copy); - copy.color.setFromColor(this.color); - return copy; - }; - return BoundingBoxAttachment; - }(VertexAttachment)); - - var __extends$7 = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - var ClippingAttachment = (function (_super) { - __extends$7(ClippingAttachment, _super); - function ClippingAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new Color(0.2275, 0.2275, 0.8078, 1); - return _this; - } - ClippingAttachment.prototype.copy = function () { - var copy = new ClippingAttachment(this.name); - this.copyTo(copy); - copy.endSlot = this.endSlot; - copy.color.setFromColor(this.color); - return copy; - }; - return ClippingAttachment; - }(VertexAttachment)); - + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ var __extends$6 = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || @@ -3894,14 +4246,21 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var MeshAttachment = (function (_super) { + /** An attachment that displays a textured mesh. A mesh has hull vertices and internal vertices within the hull. Holes are not + * supported. Each vertex has UVs (texture coordinates) and triangles are used to map an image on to the mesh. + * + * See [Mesh attachments](http://esotericsoftware.com/spine-meshes) in the Spine User Guide. */ + var MeshAttachment = /** @class */ (function (_super) { __extends$6(MeshAttachment, _super); function MeshAttachment(name) { var _this = _super.call(this, name) || this; + /** The color to tint the mesh. */ _this.color = new Color(1, 1, 1, 1); _this.tempColor = new Color(0, 0, 0, 0); return _this; } + /** Calculates {@link #uvs} using {@link #regionUVs} and the {@link #region}. Must be called after changing the region UVs or + * region. */ MeshAttachment.prototype.updateUVs = function () { var regionUVs = this.regionUVs; if (!this.uvs || this.uvs.length != regionUVs.length) @@ -3962,9 +4321,13 @@ uvs[i + 1] = v + regionUVs[i + 1] * height; } }; + /** The parent mesh if this is a linked mesh, else null. A linked mesh shares the {@link #bones}, {@link #vertices}, + * {@link #regionUVs}, {@link #triangles}, {@link #hullLength}, {@link #edges}, {@link #width}, and {@link #height} with the + * parent mesh, but may have a different {@link #name} or {@link #path} (and therefore a different texture). */ MeshAttachment.prototype.getParentMesh = function () { return this.parentMesh; }; + /** @param parentMesh May be null. */ MeshAttachment.prototype.setParentMesh = function (parentMesh) { this.parentMesh = parentMesh; if (parentMesh) { @@ -3992,6 +4355,7 @@ copy.triangles = new Array(this.triangles.length); Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); copy.hullLength = this.hullLength; + // Nonessential. if (this.edges) { copy.edges = new Array(this.edges.length); Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); @@ -4000,6 +4364,7 @@ copy.height = this.height; return copy; }; + /** Returns a new mesh with the {@link #parentMesh} set to this mesh's parent mesh, if any, else to this mesh. **/ MeshAttachment.prototype.newLinkedMesh = function () { var copy = new MeshAttachment(this.name); copy.region = this.region; @@ -4013,6 +4378,34 @@ return MeshAttachment; }(VertexAttachment)); + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ var __extends$5 = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || @@ -4028,12 +4421,20 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var PathAttachment = (function (_super) { + /** An attachment whose vertices make up a composite Bezier curve. + * + * See {@link PathConstraint} and [Paths](http://esotericsoftware.com/spine-paths) in the Spine User Guide. */ + var PathAttachment = /** @class */ (function (_super) { __extends$5(PathAttachment, _super); function PathAttachment(name) { var _this = _super.call(this, name) || this; + /** If true, the start and end knots are connected. */ _this.closed = false; + /** If true, additional calculations are performed to make calculating positions along the path more accurate. If false, fewer + * calculations are performed but calculating positions along the path is less accurate. */ _this.constantSpeed = false; + /** The color of the path as it was in Spine. Available only when nonessential data was exported. Paths are not usually + * rendered at runtime. */ _this.color = new Color(1, 1, 1, 1); return _this; } @@ -4050,6 +4451,34 @@ return PathAttachment; }(VertexAttachment)); + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ var __extends$4 = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || @@ -4065,10 +4494,17 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var PointAttachment = (function (_super) { + /** An attachment which is a single point and a rotation. This can be used to spawn projectiles, particles, etc. A bone can be + * used in similar ways, but a PointAttachment is slightly less expensive to compute and can be hidden, shown, and placed in a + * skin. + * + * See [Point Attachments](http://esotericsoftware.com/spine-point-attachments) in the Spine User Guide. */ + var PointAttachment = /** @class */ (function (_super) { __extends$4(PointAttachment, _super); function PointAttachment(name) { var _this = _super.call(this, name) || this; + /** The color of the point attachment as it was in Spine. Available only when nonessential data was exported. Point attachments + * are not usually rendered at runtime. */ _this.color = new Color(0.38, 0.94, 0, 1); return _this; } @@ -4094,6 +4530,34 @@ return PointAttachment; }(VertexAttachment)); + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ var __extends$3 = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || @@ -4109,23 +4573,38 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var RegionAttachment = (function (_super) { + /** An attachment that displays a textured quadrilateral. + * + * See [Region attachments](http://esotericsoftware.com/spine-regions) in the Spine User Guide. */ + var RegionAttachment = /** @class */ (function (_super) { __extends$3(RegionAttachment, _super); function RegionAttachment(name) { var _this = _super.call(this, name) || this; + /** The local x translation. */ _this.x = 0; + /** The local y translation. */ _this.y = 0; + /** The local scaleX. */ _this.scaleX = 1; + /** The local scaleY. */ _this.scaleY = 1; + /** The local rotation. */ _this.rotation = 0; + /** The width of the region attachment in Spine. */ _this.width = 0; + /** The height of the region attachment in Spine. */ _this.height = 0; + /** The color to tint the region attachment. */ _this.color = new Color(1, 1, 1, 1); + /** For each of the 4 vertices, a pair of x,y values that is the local position of the vertex. + * + * See {@link #updateOffset()}. */ _this.offset = Utils.newFloatArray(8); _this.uvs = Utils.newFloatArray(8); _this.tempColor = new Color(1, 1, 1, 1); return _this; } + /** Calculates the {@link #offset} using the region settings. Must be called after changing region settings. */ RegionAttachment.prototype.updateOffset = function () { this.region; var regionScaleX = this.width / this.region.originalWidth * this.scaleX; @@ -4180,6 +4659,13 @@ uvs[7] = region.v2; } }; + /** Transforms the attachment's four vertices to world coordinates. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. + * @param worldVertices The output world vertices. Must have a length >= `offset` + 8. + * @param offset The `worldVertices` index to begin writing values. + * @param stride The number of `worldVertices` entries between the value pairs written. */ RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) { var vertexOffset = this.offset; var x = bone.worldX, y = bone.worldY; @@ -4187,22 +4673,22 @@ var offsetX = 0, offsetY = 0; offsetX = vertexOffset[0]; offsetY = vertexOffset[1]; - worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset] = offsetX * a + offsetY * b + x; // br worldVertices[offset + 1] = offsetX * c + offsetY * d + y; offset += stride; offsetX = vertexOffset[2]; offsetY = vertexOffset[3]; - worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset] = offsetX * a + offsetY * b + x; // bl worldVertices[offset + 1] = offsetX * c + offsetY * d + y; offset += stride; offsetX = vertexOffset[4]; offsetY = vertexOffset[5]; - worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset] = offsetX * a + offsetY * b + x; // ul worldVertices[offset + 1] = offsetX * c + offsetY * d + y; offset += stride; offsetX = vertexOffset[6]; offsetY = vertexOffset[7]; - worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset] = offsetX * a + offsetY * b + x; // ur worldVertices[offset + 1] = offsetX * c + offsetY * d + y; }; RegionAttachment.prototype.copy = function () { @@ -4257,7 +4743,39 @@ return RegionAttachment; }(Attachment)); - var AtlasAttachmentLoader = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** An {@link AttachmentLoader} that configures attachments using texture regions from an {@link TextureAtlas}. + * + * See [Loading skeleton data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the + * Spine Runtimes Guide. */ + var AtlasAttachmentLoader = /** @class */ (function () { function AtlasAttachmentLoader(atlas) { this.atlas = atlas; } @@ -4294,17 +4812,59 @@ return AtlasAttachmentLoader; }()); - var BoneData = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the setup pose for a {@link Bone}. */ + var BoneData = /** @class */ (function () { function BoneData(index, name, parent) { + /** The local x translation. */ this.x = 0; + /** The local y translation. */ this.y = 0; + /** The local rotation. */ this.rotation = 0; + /** The local scaleX. */ this.scaleX = 1; + /** The local scaleY. */ this.scaleY = 1; + /** The local shearX. */ this.shearX = 0; + /** The local shearX. */ this.shearY = 0; + /** The transform mode for how parent world transforms affect this bone. */ this.transformMode = exports.TransformMode.Normal; + /** When true, {@link Skeleton#updateWorldTransform()} only updates this bone if the {@link Skeleton#skin} contains this + * bone. + * @see Skin#bones */ this.skinRequired = false; + /** The color of the bone as it was in Spine. Available only when nonessential data was exported. Bones are not usually + * rendered at runtime. */ this.color = new Color(); if (index < 0) throw new Error("index must be >= 0."); @@ -4316,6 +4876,7 @@ } return BoneData; }()); + /** Determines how a bone inherits world transforms from parent bones. */ exports.TransformMode = void 0; (function (TransformMode) { TransformMode[TransformMode["Normal"] = 0] = "Normal"; @@ -4325,28 +4886,83 @@ TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; })(exports.TransformMode || (exports.TransformMode = {})); - var Bone = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores a bone's current pose. + * + * A bone has a local transform which is used to compute its world transform. A bone also has an applied transform, which is a + * local transform that can be applied to compute the world transform. The local transform and applied transform may differ if a + * constraint or application code modifies the world transform after it was computed from the local transform. */ + var Bone = /** @class */ (function () { + /** @param parent May be null. */ function Bone(data, skeleton, parent) { + /** The immediate children of this bone. */ this.children = new Array(); + /** The local x translation. */ this.x = 0; + /** The local y translation. */ this.y = 0; + /** The local rotation in degrees, counter clockwise. */ this.rotation = 0; + /** The local scaleX. */ this.scaleX = 0; + /** The local scaleY. */ this.scaleY = 0; + /** The local shearX. */ this.shearX = 0; + /** The local shearY. */ this.shearY = 0; + /** The applied local x translation. */ this.ax = 0; + /** The applied local y translation. */ this.ay = 0; + /** The applied local rotation in degrees, counter clockwise. */ this.arotation = 0; + /** The applied local scaleX. */ this.ascaleX = 0; + /** The applied local scaleY. */ this.ascaleY = 0; + /** The applied local shearX. */ this.ashearX = 0; + /** The applied local shearY. */ this.ashearY = 0; + /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */ this.a = 0; + /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */ this.b = 0; + /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */ this.c = 0; + /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */ this.d = 0; + /** The world X position. If changed, {@link #updateAppliedTransform()} should be called. */ this.worldY = 0; + /** The world Y position. If changed, {@link #updateAppliedTransform()} should be called. */ this.worldX = 0; this.sorted = false; this.active = false; @@ -4359,15 +4975,26 @@ this.parent = parent; this.setToSetupPose(); } + /** Returns false when the bone has not been computed because {@link BoneData#skinRequired} is true and the + * {@link Skeleton#skin active skin} does not {@link Skin#bones contain} this bone. */ Bone.prototype.isActive = function () { return this.active; }; + /** Computes the world transform using the parent bone and this bone's local applied transform. */ Bone.prototype.update = function () { this.updateWorldTransformWith(this.ax, this.ay, this.arotation, this.ascaleX, this.ascaleY, this.ashearX, this.ashearY); }; + /** Computes the world transform using the parent bone and this bone's local transform. + * + * See {@link #updateWorldTransformWith()}. */ Bone.prototype.updateWorldTransform = function () { this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); }; + /** Computes the world transform using the parent bone and the specified local transform. The applied transform is set to the + * specified local transform. Child bones are not updated. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. */ Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { this.ax = x; this.ay = y; @@ -4377,7 +5004,7 @@ this.ashearX = shearX; this.ashearY = shearY; var parent = this.parent; - if (!parent) { + if (!parent) { // Root bone. var skeleton = this.skeleton; var rotationY = rotation + 90 + shearY; var sx = skeleton.scaleX; @@ -4476,6 +5103,7 @@ this.c *= this.skeleton.scaleY; this.d *= this.skeleton.scaleY; }; + /** Sets this bone's local transform to the setup pose. */ Bone.prototype.setToSetupPose = function () { var data = this.data; this.x = data.x; @@ -4486,18 +5114,30 @@ this.shearX = data.shearX; this.shearY = data.shearY; }; + /** The world rotation for the X axis, calculated using {@link #a} and {@link #c}. */ Bone.prototype.getWorldRotationX = function () { return Math.atan2(this.c, this.a) * MathUtils.radDeg; }; + /** The world rotation for the Y axis, calculated using {@link #b} and {@link #d}. */ Bone.prototype.getWorldRotationY = function () { return Math.atan2(this.d, this.b) * MathUtils.radDeg; }; + /** The magnitude (always positive) of the world scale X, calculated using {@link #a} and {@link #c}. */ Bone.prototype.getWorldScaleX = function () { return Math.sqrt(this.a * this.a + this.c * this.c); }; + /** The magnitude (always positive) of the world scale Y, calculated using {@link #b} and {@link #d}. */ Bone.prototype.getWorldScaleY = function () { return Math.sqrt(this.b * this.b + this.d * this.d); }; + /** Computes the applied transform values from the world transform. + * + * If the world transform is modified (by a constraint, {@link #rotateWorld(float)}, etc) then this method should be called so + * the applied transform matches the world transform. The applied transform may be needed by other code (eg to apply other + * constraints). + * + * Some information is ambiguous in the world transform, such as -1,-1 scale versus 180 rotation. The applied transform after + * calling this method is equivalent to the local transform used to compute the world transform, but may not be identical. */ Bone.prototype.updateAppliedTransform = function () { var parent = this.parent; if (!parent) { @@ -4538,6 +5178,7 @@ this.arotation = 90 - Math.atan2(rd, rb) * MathUtils.radDeg; } }; + /** Transforms a point from world coordinates to the bone's local coordinates. */ Bone.prototype.worldToLocal = function (world) { var invDet = 1 / (this.a * this.d - this.b * this.c); var x = world.x - this.worldX, y = world.y - this.worldY; @@ -4545,21 +5186,28 @@ world.y = y * this.a * invDet - x * this.c * invDet; return world; }; + /** Transforms a point from the bone's local coordinates to world coordinates. */ Bone.prototype.localToWorld = function (local) { var x = local.x, y = local.y; local.x = x * this.a + y * this.b + this.worldX; local.y = x * this.c + y * this.d + this.worldY; return local; }; + /** Transforms a world rotation to a local rotation. */ Bone.prototype.worldToLocalRotation = function (worldRotation) { var sin = MathUtils.sinDeg(worldRotation), cos = MathUtils.cosDeg(worldRotation); return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * MathUtils.radDeg + this.rotation - this.shearX; }; + /** Transforms a local rotation to a world rotation. */ Bone.prototype.localToWorldRotation = function (localRotation) { localRotation -= this.rotation - this.shearX; var sin = MathUtils.sinDeg(localRotation), cos = MathUtils.cosDeg(localRotation); return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * MathUtils.radDeg; }; + /** Rotates the world transform the specified amount. + *

        + * After changes are made to the world transform, {@link #updateAppliedTransform()} should be called and {@link #update()} will + * need to be called on any child bones, recursively. */ Bone.prototype.rotateWorld = function (degrees) { var a = this.a, b = this.b, c = this.c, d = this.d; var cos = MathUtils.cosDeg(degrees), sin = MathUtils.sinDeg(degrees); @@ -4571,7 +5219,36 @@ return Bone; }()); - var ConstraintData = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** The base class for all constraint datas. */ + var ConstraintData = /** @class */ (function () { function ConstraintData(name, order, skinRequired) { this.name = name; this.order = order; @@ -4580,7 +5257,319 @@ return ConstraintData; }()); - var Event = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var AssetManagerBase = /** @class */ (function () { + function AssetManagerBase(textureLoader, pathPrefix, downloader) { + if (pathPrefix === void 0) { pathPrefix = ""; } + if (downloader === void 0) { downloader = null; } + this.assets = {}; + this.errors = {}; + this.toLoad = 0; + this.loaded = 0; + this.textureLoader = textureLoader; + this.pathPrefix = pathPrefix; + this.downloader = downloader || new Downloader(); + } + AssetManagerBase.prototype.start = function (path) { + this.toLoad++; + return this.pathPrefix + path; + }; + AssetManagerBase.prototype.success = function (callback, path, asset) { + this.toLoad--; + this.loaded++; + this.assets[path] = asset; + if (callback) + callback(path, asset); + }; + AssetManagerBase.prototype.error = function (callback, path, message) { + this.toLoad--; + this.loaded++; + this.errors[path] = message; + if (callback) + callback(path, message); + }; + AssetManagerBase.prototype.setRawDataURI = function (path, data) { + this.downloader.rawDataUris[this.pathPrefix + path] = data; + }; + AssetManagerBase.prototype.loadBinary = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + path = this.start(path); + this.downloader.downloadBinary(path, function (data) { + _this.success(success, path, data); + }, function (status, responseText) { + _this.error(error, path, "Couldn't load binary " + path + ": status " + status + ", " + responseText); + }); + }; + AssetManagerBase.prototype.loadText = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + path = this.start(path); + this.downloader.downloadText(path, function (data) { + _this.success(success, path, data); + }, function (status, responseText) { + _this.error(error, path, "Couldn't load text " + path + ": status " + status + ", " + responseText); + }); + }; + AssetManagerBase.prototype.loadJson = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + path = this.start(path); + this.downloader.downloadJson(path, function (data) { + _this.success(success, path, data); + }, function (status, responseText) { + _this.error(error, path, "Couldn't load JSON " + path + ": status " + status + ", " + responseText); + }); + }; + AssetManagerBase.prototype.loadTexture = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + path = this.start(path); + var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); + var isWebWorker = !isBrowser; // && typeof importScripts !== 'undefined'; + if (isWebWorker) { + fetch(path, { mode: "cors" }).then(function (response) { + if (response.ok) + return response.blob(); + _this.error(error, path, "Couldn't load image: " + path); + return null; + }).then(function (blob) { + return blob ? createImageBitmap(blob, { premultiplyAlpha: "none", colorSpaceConversion: "none" }) : null; + }).then(function (bitmap) { + if (bitmap) + _this.success(success, path, _this.textureLoader(bitmap)); + }); + } + else { + var image_1 = new Image(); + image_1.crossOrigin = "anonymous"; + image_1.onload = function () { + _this.success(success, path, _this.textureLoader(image_1)); + }; + image_1.onerror = function () { + _this.error(error, path, "Couldn't load image: " + path); + }; + if (this.downloader.rawDataUris[path]) + path = this.downloader.rawDataUris[path]; + image_1.src = path; + } + }; + AssetManagerBase.prototype.loadTextureAtlas = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + var index = path.lastIndexOf("/"); + var parent = index >= 0 ? path.substring(0, index + 1) : ""; + path = this.start(path); + this.downloader.downloadText(path, function (atlasText) { + try { + var atlas_1 = new TextureAtlas(atlasText); + var toLoad_1 = atlas_1.pages.length, abort_1 = false; + var _loop_1 = function (page) { + _this.loadTexture(parent + page.name, function (imagePath, texture) { + if (!abort_1) { + page.setTexture(texture); + if (--toLoad_1 == 0) + _this.success(success, path, atlas_1); + } + }, function (imagePath, message) { + if (!abort_1) + _this.error(error, path, "Couldn't load texture atlas " + path + " page image: " + imagePath); + abort_1 = true; + }); + }; + for (var _i = 0, _a = atlas_1.pages; _i < _a.length; _i++) { + var page = _a[_i]; + _loop_1(page); + } + } + catch (e) { + _this.error(error, path, "Couldn't parse texture atlas " + path + ": " + e.message); + } + }, function (status, responseText) { + _this.error(error, path, "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText); + }); + }; + AssetManagerBase.prototype.get = function (path) { + return this.assets[this.pathPrefix + path]; + }; + AssetManagerBase.prototype.require = function (path) { + path = this.pathPrefix + path; + var asset = this.assets[path]; + if (asset) + return asset; + var error = this.errors[path]; + throw Error("Asset not found: " + path + (error ? "\n" + error : "")); + }; + AssetManagerBase.prototype.remove = function (path) { + path = this.pathPrefix + path; + var asset = this.assets[path]; + if (asset.dispose) + asset.dispose(); + delete this.assets[path]; + return asset; + }; + AssetManagerBase.prototype.removeAll = function () { + for (var key in this.assets) { + var asset = this.assets[key]; + if (asset.dispose) + asset.dispose(); + } + this.assets = {}; + }; + AssetManagerBase.prototype.isLoadingComplete = function () { + return this.toLoad == 0; + }; + AssetManagerBase.prototype.getToLoad = function () { + return this.toLoad; + }; + AssetManagerBase.prototype.getLoaded = function () { + return this.loaded; + }; + AssetManagerBase.prototype.dispose = function () { + this.removeAll(); + }; + AssetManagerBase.prototype.hasErrors = function () { + return Object.keys(this.errors).length > 0; + }; + AssetManagerBase.prototype.getErrors = function () { + return this.errors; + }; + return AssetManagerBase; + }()); + var Downloader = /** @class */ (function () { + function Downloader() { + this.callbacks = {}; + this.rawDataUris = {}; + } + Downloader.prototype.downloadText = function (url, success, error) { + var _this = this; + if (this.rawDataUris[url]) + url = this.rawDataUris[url]; + if (this.start(url, success, error)) + return; + var request = new XMLHttpRequest(); + request.overrideMimeType("text/html"); + request.open("GET", url, true); + var done = function () { + _this.finish(url, request.status, request.responseText); + }; + request.onload = done; + request.onerror = done; + request.send(); + }; + Downloader.prototype.downloadJson = function (url, success, error) { + this.downloadText(url, function (data) { + success(JSON.parse(data)); + }, error); + }; + Downloader.prototype.downloadBinary = function (url, success, error) { + var _this = this; + if (this.rawDataUris[url]) + url = this.rawDataUris[url]; + if (this.start(url, success, error)) + return; + var request = new XMLHttpRequest(); + request.open("GET", url, true); + request.responseType = "arraybuffer"; + var onerror = function () { + _this.finish(url, request.status, request.responseText); + }; + request.onload = function () { + if (request.status == 200) + _this.finish(url, 200, new Uint8Array(request.response)); + else + onerror(); + }; + request.onerror = onerror; + request.send(); + }; + Downloader.prototype.start = function (url, success, error) { + var callbacks = this.callbacks[url]; + try { + if (callbacks) + return true; + this.callbacks[url] = callbacks = []; + } + finally { + callbacks.push(success, error); + } + }; + Downloader.prototype.finish = function (url, status, data) { + var callbacks = this.callbacks[url]; + delete this.callbacks[url]; + var args = status == 200 ? [data] : [status, data]; + for (var i = args.length - 1, n = callbacks.length; i < n; i += 2) + callbacks[i].apply(null, args); + }; + return Downloader; + }()); + + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the current pose values for an {@link Event}. + * + * See Timeline {@link Timeline#apply()}, + * AnimationStateListener {@link AnimationStateListener#event()}, and + * [Events](http://esotericsoftware.com/spine-events) in the Spine User Guide. */ + var Event = /** @class */ (function () { function Event(time, data) { if (!data) throw new Error("data cannot be null."); @@ -4590,19 +5579,88 @@ return Event; }()); - var EventData = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the setup pose values for an {@link Event}. + * + * See [Events](http://esotericsoftware.com/spine-events) in the Spine User Guide. */ + var EventData = /** @class */ (function () { function EventData(name) { this.name = name; } return EventData; }()); - var IkConstraint = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the current pose for an IK constraint. An IK constraint adjusts the rotation of 1 or 2 constrained bones so the tip of + * the last bone is as close to the target bone as possible. + * + * See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */ + var IkConstraint = /** @class */ (function () { function IkConstraint(data, skeleton) { + /** Controls the bend direction of the IK bones, either 1 or -1. */ this.bendDirection = 0; + /** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */ this.compress = false; + /** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained + * and the parent bone has local nonuniform scale, stretch is not applied. */ this.stretch = false; + /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */ this.mix = 1; + /** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */ this.softness = 0; this.active = false; if (!data) @@ -4637,6 +5695,7 @@ break; } }; + /** Applies 1 bone IK. The target is specified in the world coordinate system. */ IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) { var p = bone.parent; var pa = p.a, pb = p.b, pc = p.c, pd = p.d; @@ -4653,6 +5712,7 @@ pb = -sc * s * bone.skeleton.scaleX; pd = sa * s * bone.skeleton.scaleY; rotationIK += Math.atan2(sc, sa) * MathUtils.radDeg; + // Fall through default: var x = targetX - p.worldX, y = targetY - p.worldY; var d = pa * pd - pb * pc; @@ -4684,6 +5744,8 @@ } bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY); }; + /** Applies 2 bone IK. The target is specified in the world coordinate system. + * @param child A direct descendant of the parent bone. */ IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, uniform, softness, alpha) { var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, sx = psx, sy = psy, csx = child.ascaleX; var os1 = 0, os2 = 0, s2 = 0; @@ -4825,20 +5887,48 @@ a1 = (a1 - os) * MathUtils.radDeg + os1 - rotation; if (a1 > 180) a1 -= 360; - else if (a1 < -180) + else if (a1 < -180) // a1 += 360; parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, sy, 0, 0); rotation = child.arotation; a2 = ((a2 + os) * MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; if (a2 > 180) a2 -= 360; - else if (a2 < -180) + else if (a2 < -180) // a2 += 360; child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); }; return IkConstraint; }()); + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ var __extends$2 = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || @@ -4854,22 +5944,62 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var IkConstraintData = (function (_super) { + /** Stores the setup pose for an {@link IkConstraint}. + *

        + * See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */ + var IkConstraintData = /** @class */ (function (_super) { __extends$2(IkConstraintData, _super); function IkConstraintData(name) { var _this = _super.call(this, name, 0, false) || this; + /** The bones that are constrained by this IK constraint. */ _this.bones = new Array(); + /** Controls the bend direction of the IK bones, either 1 or -1. */ _this.bendDirection = 1; + /** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */ _this.compress = false; + /** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained + * and the parent bone has local nonuniform scale, stretch is not applied. */ _this.stretch = false; + /** When true, only a single bone is being constrained, and {@link #getCompress()} or {@link #getStretch()} is used, the bone + * is scaled on both the X and Y axes. */ _this.uniform = false; + /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */ _this.mix = 1; + /** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */ _this.softness = 0; return _this; } return IkConstraintData; }(ConstraintData)); + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ var __extends$1 = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || @@ -4885,10 +6015,14 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var PathConstraintData = (function (_super) { + /** Stores the setup pose for a {@link PathConstraint}. + * + * See [path constraints](http://esotericsoftware.com/spine-path-constraints) in the Spine User Guide. */ + var PathConstraintData = /** @class */ (function (_super) { __extends$1(PathConstraintData, _super); function PathConstraintData(name) { var _this = _super.call(this, name, 0, false) || this; + /** The bones that will be modified by this path constraint. */ _this.bones = new Array(); _this.mixRotate = 0; _this.mixX = 0; @@ -4897,11 +6031,17 @@ } return PathConstraintData; }(ConstraintData)); + /** Controls how the first bone is positioned along the path. + * + * See [position](http://esotericsoftware.com/spine-path-constraints#Position) in the Spine User Guide. */ exports.PositionMode = void 0; (function (PositionMode) { PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; PositionMode[PositionMode["Percent"] = 1] = "Percent"; })(exports.PositionMode || (exports.PositionMode = {})); + /** Controls how bones after the first bone are positioned along the path. + * + * See [spacing](http://esotericsoftware.com/spine-path-constraints#Spacing) in the Spine User Guide. */ exports.SpacingMode = void 0; (function (SpacingMode) { SpacingMode[SpacingMode["Length"] = 0] = "Length"; @@ -4909,6 +6049,9 @@ SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; SpacingMode[SpacingMode["Proportional"] = 3] = "Proportional"; })(exports.SpacingMode || (exports.SpacingMode = {})); + /** Controls how bones are rotated, translated, and scaled to match the path. + * + * See [rotate mix](http://esotericsoftware.com/spine-path-constraints#Rotate-mix) in the Spine User Guide. */ exports.RotateMode = void 0; (function (RotateMode) { RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; @@ -4916,9 +6059,43 @@ RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; })(exports.RotateMode || (exports.RotateMode = {})); - var PathConstraint = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the current pose for a path constraint. A path constraint adjusts the rotation, translation, and scale of the + * constrained bones so they follow a {@link PathAttachment}. + * + * See [Path constraints](http://esotericsoftware.com/spine-path-constraints) in the Spine User Guide. */ + var PathConstraint = /** @class */ (function () { function PathConstraint(data, skeleton) { + /** The position along the path. */ this.position = 0; + /** The spacing between bones. */ this.spacing = 0; this.mixRotate = 0; this.mixX = 0; @@ -5067,7 +6244,7 @@ } if (r > MathUtils.PI) r -= MathUtils.PI2; - else if (r < -MathUtils.PI) + else if (r < -MathUtils.PI) // r += MathUtils.PI2; r *= mixRotate; cos = Math.cos(r); @@ -5130,6 +6307,7 @@ this.addAfterPosition(p - pathLength_1, world, 0, out, o); continue; } + // Determine curve containing position. for (;; curve++) { var length_5 = lengths[curve]; if (p > length_5) @@ -5155,6 +6333,7 @@ } return out; } + // World vertices. if (closed) { verticesLength += 2; world = Utils.setArraySize(this.world, verticesLength); @@ -5169,6 +6348,7 @@ world = Utils.setArraySize(this.world, verticesLength); path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); } + // Curve lengths. var curves = Utils.setArraySize(this.curves, curveCount); var pathLength = 0; var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; @@ -5237,6 +6417,7 @@ this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); continue; } + // Determine curve containing position. for (;; curve++) { var length_6 = curves[curve]; if (p > length_6) @@ -5249,6 +6430,7 @@ } break; } + // Curve segment lengths. if (curve != prevCurve) { prevCurve = curve; var ii = curve * 6; @@ -5288,6 +6470,7 @@ segments[9] = curveLength; segment = 0; } + // Weight by segment length. p *= curveLength; for (;; segment++) { var length_7 = segments[segment]; @@ -5343,8 +6526,43 @@ return PathConstraint; }()); - var Slot = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores a slot's current pose. Slots organize attachments for {@link Skeleton#drawOrder} purposes and provide a place to store + * state for an attachment. State cannot be stored in an attachment itself because attachments are stateless and may be shared + * across multiple skeletons. */ + var Slot = /** @class */ (function () { function Slot(data, bone) { + /** Values to deform the slot's attachment. For an unweighted mesh, the entries are local positions for each vertex. For a + * weighted mesh, the entries are an offset for each vertex which will be added to the mesh's local vertex positions. + * + * See {@link VertexAttachment#computeWorldVertices()} and {@link DeformTimeline}. */ this.deform = new Array(); if (!data) throw new Error("data cannot be null."); @@ -5356,12 +6574,18 @@ this.darkColor = !data.darkColor ? null : new Color(); this.setToSetupPose(); } + /** The skeleton this slot belongs to. */ Slot.prototype.getSkeleton = function () { return this.bone.skeleton; }; + /** The current attachment for the slot, or null if the slot has no attachment. */ Slot.prototype.getAttachment = function () { return this.attachment; }; + /** Sets the slot's attachment and, if the attachment changed, resets {@link #attachmentTime} and clears the {@link #deform}. + * The deform is not cleared if the old attachment has the same {@link VertexAttachment#getDeformAttachment()} as the specified + * attachment. + * @param attachment May be null. */ Slot.prototype.setAttachment = function (attachment) { if (this.attachment == attachment) return; @@ -5375,9 +6599,12 @@ Slot.prototype.setAttachmentTime = function (time) { this.attachmentTime = this.bone.skeleton.time - time; }; + /** The time that has elapsed since the last time the attachment was set or cleared. Relies on Skeleton + * {@link Skeleton#time}. */ Slot.prototype.getAttachmentTime = function () { return this.bone.skeleton.time - this.attachmentTime; }; + /** Sets this slot to the setup pose. */ Slot.prototype.setToSetupPose = function () { this.color.setFromColor(this.data.color); if (this.darkColor) @@ -5392,7 +6619,39 @@ return Slot; }()); - var TransformConstraint = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the current pose for a transform constraint. A transform constraint adjusts the world transform of the constrained + * bones to match that of the target bone. + * + * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */ + var TransformConstraint = /** @class */ (function () { function TransformConstraint(data, skeleton) { this.mixRotate = 0; this.mixX = 0; @@ -5453,7 +6712,7 @@ var r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; if (r > MathUtils.PI) r -= MathUtils.PI2; - else if (r < -MathUtils.PI) + else if (r < -MathUtils.PI) // r += MathUtils.PI2; r *= mixRotate; var cos = Math.cos(r), sin = Math.sin(r); @@ -5488,7 +6747,7 @@ var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); if (r > MathUtils.PI) r -= MathUtils.PI2; - else if (r < -MathUtils.PI) + else if (r < -MathUtils.PI) // r += MathUtils.PI2; r = by + (r + offsetShearY) * mixShearY; var s = Math.sqrt(b * b + d * d); @@ -5513,7 +6772,7 @@ var r = Math.atan2(tc, ta) + offsetRotation; if (r > MathUtils.PI) r -= MathUtils.PI2; - else if (r < -MathUtils.PI) + else if (r < -MathUtils.PI) // r += MathUtils.PI2; r *= mixRotate; var cos = Math.cos(r), sin = Math.sin(r); @@ -5542,7 +6801,7 @@ var r = Math.atan2(td, tb) - Math.atan2(tc, ta); if (r > MathUtils.PI) r -= MathUtils.PI2; - else if (r < -MathUtils.PI) + else if (r < -MathUtils.PI) // r += MathUtils.PI2; var b = bone.b, d = bone.d; r = Math.atan2(d, b) + (r - MathUtils.PI / 2 + offsetShearY) * mixShearY; @@ -5600,13 +6859,54 @@ return TransformConstraint; }()); - var Skeleton = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the current pose for a skeleton. + * + * See [Instance objects](http://esotericsoftware.com/spine-runtime-architecture#Instance-objects) in the Spine Runtimes Guide. */ + var Skeleton = /** @class */ (function () { function Skeleton(data) { + /** The list of bones and constraints, sorted in the order they should be updated, as computed by {@link #updateCache()}. */ this._updateCache = new Array(); + /** Returns the skeleton's time. This can be used for tracking, such as with Slot {@link Slot#attachmentTime}. + *

        + * See {@link #update()}. */ this.time = 0; + /** Scales the entire skeleton on the X axis. This affects all bones, even if the bone's transform mode disallows scale + * inheritance. */ this.scaleX = 1; + /** Scales the entire skeleton on the Y axis. This affects all bones, even if the bone's transform mode disallows scale + * inheritance. */ this.scaleY = 1; + /** Sets the skeleton X position, which is added to the root bone worldX position. */ this.x = 0; + /** Sets the skeleton Y position, which is added to the root bone worldY position. */ this.y = 0; if (!data) throw new Error("data cannot be null."); @@ -5651,6 +6951,8 @@ this.color = new Color(1, 1, 1, 1); this.updateCache(); } + /** Caches information about bones and constraints. Must be called if the {@link #getSkin()} is modified or if bones, + * constraints, or weighted path attachments are added or removed. */ Skeleton.prototype.updateCache = function () { var updateCache = this._updateCache; updateCache.length = 0; @@ -5671,6 +6973,7 @@ } while (bone); } } + // IK first, lowest hierarchy depth first. var ikConstraints = this.ikConstraints; var transformConstraints = this.transformConstraints; var pathConstraints = this.pathConstraints; @@ -5817,6 +7120,10 @@ bone.sorted = false; } }; + /** Updates the world transform for each bone and applies all constraints. + * + * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine + * Runtimes Guide. */ Skeleton.prototype.updateWorldTransform = function () { var bones = this.bones; for (var i = 0, n = bones.length; i < n; i++) { @@ -5834,6 +7141,7 @@ updateCache[i].update(); }; Skeleton.prototype.updateWorldTransformWith = function (parent) { + // Apply the parent bone transform to the root bone. The root bone always inherits scale, rotation and reflection. var rootBone = this.getRootBone(); var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; rootBone.worldX = pa * this.x + pb * this.y + parent.worldX; @@ -5847,6 +7155,7 @@ rootBone.b = (pa * lb + pb * ld) * this.scaleX; rootBone.c = (pc * la + pd * lc) * this.scaleY; rootBone.d = (pc * lb + pd * ld) * this.scaleY; + // Update everything except root bone. var updateCache = this._updateCache; for (var i = 0, n = updateCache.length; i < n; i++) { var updatable = updateCache[i]; @@ -5854,10 +7163,12 @@ updatable.update(); } }; + /** Sets the bones, constraints, and slots to their setup pose values. */ Skeleton.prototype.setToSetupPose = function () { this.setBonesToSetupPose(); this.setSlotsToSetupPose(); }; + /** Sets the bones and constraints to their setup pose values. */ Skeleton.prototype.setBonesToSetupPose = function () { var bones = this.bones; for (var i = 0, n = bones.length; i < n; i++) @@ -5893,17 +7204,20 @@ constraint.mixY = data.mixY; } }; + /** Sets the slots and draw order to their setup pose values. */ Skeleton.prototype.setSlotsToSetupPose = function () { var slots = this.slots; Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); for (var i = 0, n = slots.length; i < n; i++) slots[i].setToSetupPose(); }; + /** @returns May return null. */ Skeleton.prototype.getRootBone = function () { if (this.bones.length == 0) return null; return this.bones[0]; }; + /** @returns May be null. */ Skeleton.prototype.findBone = function (boneName) { if (!boneName) throw new Error("boneName cannot be null."); @@ -5915,6 +7229,7 @@ } return null; }; + /** @returns -1 if the bone was not found. */ Skeleton.prototype.findBoneIndex = function (boneName) { if (!boneName) throw new Error("boneName cannot be null."); @@ -5924,6 +7239,9 @@ return i; return -1; }; + /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it + * repeatedly. + * @returns May be null. */ Skeleton.prototype.findSlot = function (slotName) { if (!slotName) throw new Error("slotName cannot be null."); @@ -5935,6 +7253,7 @@ } return null; }; + /** @returns -1 if the bone was not found. */ Skeleton.prototype.findSlotIndex = function (slotName) { if (!slotName) throw new Error("slotName cannot be null."); @@ -5944,12 +7263,25 @@ return i; return -1; }; + /** Sets a skin by name. + * + * See {@link #setSkin()}. */ Skeleton.prototype.setSkinByName = function (skinName) { var skin = this.data.findSkin(skinName); if (!skin) throw new Error("Skin not found: " + skinName); this.setSkin(skin); }; + /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#defaultSkin default skin}. If the + * skin is changed, {@link #updateCache()} is called. + * + * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was no + * old skin, each slot's setup mode attachment is attached from the new skin. + * + * After changing the skin, the visible attachments can be reset to those attached in the setup pose by calling + * {@link #setSlotsToSetupPose()}. Also, often {@link AnimationState#apply()} is called before the next time the + * skeleton is rendered to allow any attachment keys in the current animation(s) to hide or show attachments from the new skin. + * @param newSkin May be null. */ Skeleton.prototype.setSkin = function (newSkin) { if (newSkin == this.skin) return; @@ -5972,9 +7304,19 @@ this.skin = newSkin; this.updateCache(); }; + /** Finds an attachment by looking in the {@link #skin} and {@link SkeletonData#defaultSkin} using the slot name and attachment + * name. + * + * See {@link #getAttachment()}. + * @returns May be null. */ Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); }; + /** Finds an attachment by looking in the {@link #skin} and {@link SkeletonData#defaultSkin} using the slot index and + * attachment name. First the skin is checked and if the attachment was not found, the default skin is checked. + * + * See [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide. + * @returns May be null. */ Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { if (!attachmentName) throw new Error("attachmentName cannot be null."); @@ -5987,6 +7329,9 @@ return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); return null; }; + /** A convenience method to set an attachment by finding the slot with {@link #findSlot()}, finding the attachment with + * {@link #getAttachment()}, then setting the slot's {@link Slot#attachment}. + * @param attachmentName May be null to clear the slot's attachment. */ Skeleton.prototype.setAttachment = function (slotName, attachmentName) { if (!slotName) throw new Error("slotName cannot be null."); @@ -6006,6 +7351,9 @@ } throw new Error("Slot not found: " + slotName); }; + /** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method + * than to call it repeatedly. + * @return May be null. */ Skeleton.prototype.findIkConstraint = function (constraintName) { if (!constraintName) throw new Error("constraintName cannot be null."); @@ -6017,6 +7365,9 @@ } return null; }; + /** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of + * this method than to call it repeatedly. + * @return May be null. */ Skeleton.prototype.findTransformConstraint = function (constraintName) { if (!constraintName) throw new Error("constraintName cannot be null."); @@ -6028,6 +7379,9 @@ } return null; }; + /** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method + * than to call it repeatedly. + * @return May be null. */ Skeleton.prototype.findPathConstraint = function (constraintName) { if (!constraintName) throw new Error("constraintName cannot be null."); @@ -6039,6 +7393,10 @@ } return null; }; + /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose. + * @param offset An output value, the distance from the skeleton origin to the bottom left corner of the AABB. + * @param size An output value, the width and height of the AABB. + * @param temp Working memory to temporarily store attachments' computed world vertices. */ Skeleton.prototype.getBounds = function (offset, size, temp) { if (temp === void 0) { temp = new Array(2); } if (!offset) @@ -6078,24 +7436,69 @@ offset.set(minX, minY); size.set(maxX - minX, maxY - minY); }; + /** Increments the skeleton's {@link #time}. */ Skeleton.prototype.update = function (delta) { this.time += delta; }; return Skeleton; }()); - var SkeletonData = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the setup pose and all of the stateless data for a skeleton. + * + * See [Data objects](http://esotericsoftware.com/spine-runtime-architecture#Data-objects) in the Spine Runtimes + * Guide. */ + var SkeletonData = /** @class */ (function () { function SkeletonData() { - this.bones = new Array(); - this.slots = new Array(); + /** The skeleton's bones, sorted parent first. The root bone is always the first bone. */ + this.bones = new Array(); // Ordered parents first. + /** The skeleton's slots. */ + this.slots = new Array(); // Setup pose draw order. this.skins = new Array(); + /** The skeleton's events. */ this.events = new Array(); + /** The skeleton's animations. */ this.animations = new Array(); + /** The skeleton's IK constraints. */ this.ikConstraints = new Array(); + /** The skeleton's transform constraints. */ this.transformConstraints = new Array(); + /** The skeleton's path constraints. */ this.pathConstraints = new Array(); + // Nonessential + /** The dopesheet FPS in Spine. Available only when nonessential data was exported. */ this.fps = 0; } + /** Finds a bone by comparing each bone's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ SkeletonData.prototype.findBone = function (boneName) { if (!boneName) throw new Error("boneName cannot be null."); @@ -6116,6 +7519,9 @@ return i; return -1; }; + /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ SkeletonData.prototype.findSlot = function (slotName) { if (!slotName) throw new Error("slotName cannot be null."); @@ -6136,6 +7542,9 @@ return i; return -1; }; + /** Finds a skin by comparing each skin's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ SkeletonData.prototype.findSkin = function (skinName) { if (!skinName) throw new Error("skinName cannot be null."); @@ -6147,6 +7556,9 @@ } return null; }; + /** Finds an event by comparing each events's name. It is more efficient to cache the results of this method than to call it + * multiple times. + * @returns May be null. */ SkeletonData.prototype.findEvent = function (eventDataName) { if (!eventDataName) throw new Error("eventDataName cannot be null."); @@ -6158,6 +7570,9 @@ } return null; }; + /** Finds an animation by comparing each animation's name. It is more efficient to cache the results of this method than to + * call it multiple times. + * @returns May be null. */ SkeletonData.prototype.findAnimation = function (animationName) { if (!animationName) throw new Error("animationName cannot be null."); @@ -6169,6 +7584,9 @@ } return null; }; + /** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method + * than to call it multiple times. + * @return May be null. */ SkeletonData.prototype.findIkConstraint = function (constraintName) { if (!constraintName) throw new Error("constraintName cannot be null."); @@ -6180,6 +7598,9 @@ } return null; }; + /** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of + * this method than to call it multiple times. + * @return May be null. */ SkeletonData.prototype.findTransformConstraint = function (constraintName) { if (!constraintName) throw new Error("constraintName cannot be null."); @@ -6191,6 +7612,9 @@ } return null; }; + /** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method + * than to call it multiple times. + * @return May be null. */ SkeletonData.prototype.findPathConstraint = function (constraintName) { if (!constraintName) throw new Error("constraintName cannot be null."); @@ -6205,7 +7629,36 @@ return SkeletonData; }()); - var SkinEntry = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores an entry in the skin consisting of the slot index, name, and attachment **/ + var SkinEntry = /** @class */ (function () { function SkinEntry(slotIndex, name, attachment) { this.slotIndex = slotIndex; this.name = name; @@ -6213,7 +7666,11 @@ } return SkinEntry; }()); - var Skin = (function () { + /** Stores attachments by slot index and attachment name. + * + * See SkeletonData {@link SkeletonData#defaultSkin}, Skeleton {@link Skeleton#skin}, and + * [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide. */ + var Skin = /** @class */ (function () { function Skin(name) { this.attachments = new Array(); this.bones = Array(); @@ -6222,6 +7679,7 @@ throw new Error("name cannot be null."); this.name = name; } + /** Adds an attachment to the skin for the specified slot index and name. */ Skin.prototype.setAttachment = function (slotIndex, name, attachment) { if (!attachment) throw new Error("attachment cannot be null."); @@ -6232,6 +7690,7 @@ attachments[slotIndex] = {}; attachments[slotIndex][name] = attachment; }; + /** Adds all attachments, bones, and constraints from the specified skin to this skin. */ Skin.prototype.addSkin = function (skin) { for (var i = 0; i < skin.bones.length; i++) { var bone = skin.bones[i]; @@ -6263,6 +7722,8 @@ this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); } }; + /** Adds all bones and constraints and copies of all attachments from the specified skin to this skin. Mesh attachments are not + * copied, instead a new linked mesh is created. The attachment copies can be modified without affecting the originals. */ Skin.prototype.copySkin = function (skin) { for (var i = 0; i < skin.bones.length; i++) { var bone = skin.bones[i]; @@ -6303,15 +7764,18 @@ } } }; + /** Returns the attachment for the specified slot index and name, or null. */ Skin.prototype.getAttachment = function (slotIndex, name) { var dictionary = this.attachments[slotIndex]; return dictionary ? dictionary[name] : null; }; + /** Removes the attachment in the skin for the specified slot index and name, if any. */ Skin.prototype.removeAttachment = function (slotIndex, name) { var dictionary = this.attachments[slotIndex]; if (dictionary) dictionary[name] = null; }; + /** Returns all attachments in this skin. */ Skin.prototype.getAttachments = function () { var entries = new Array(); for (var i = 0; i < this.attachments.length; i++) { @@ -6326,6 +7790,7 @@ } return entries; }; + /** Returns all attachments in this skin for the specified slot index. */ Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) { var slotAttachments = this.attachments[slotIndex]; if (slotAttachments) { @@ -6336,11 +7801,13 @@ } } }; + /** Clears all attachments, bones, and constraints. */ Skin.prototype.clear = function () { this.attachments.length = 0; this.bones.length = 0; this.constraints.length = 0; }; + /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */ Skin.prototype.attachAll = function (skeleton, oldSkin) { var slotIndex = 0; for (var i = 0; i < skeleton.slots.length; i++) { @@ -6364,8 +7831,39 @@ return Skin; }()); - var SlotData = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Stores the setup pose for a {@link Slot}. */ + var SlotData = /** @class */ (function () { function SlotData(index, name, boneData) { + /** The color used to tint the slot's attachment. If {@link #getDarkColor()} is set, this is used as the light color for two + * color tinting. */ this.color = new Color(1, 1, 1, 1); if (index < 0) throw new Error("index must be >= 0."); @@ -6379,6 +7877,7 @@ } return SlotData; }()); + /** Determines how images are blended with existing pixels when drawn. */ exports.BlendMode = void 0; (function (BlendMode) { BlendMode[BlendMode["Normal"] = 0] = "Normal"; @@ -6387,6 +7886,34 @@ BlendMode[BlendMode["Screen"] = 3] = "Screen"; })(exports.BlendMode || (exports.BlendMode = {})); + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || @@ -6402,10 +7929,14 @@ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); - var TransformConstraintData = (function (_super) { + /** Stores the setup pose for a {@link TransformConstraint}. + * + * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */ + var TransformConstraintData = /** @class */ (function (_super) { __extends(TransformConstraintData, _super); function TransformConstraintData(name) { var _this = _super.call(this, name, 0, false) || this; + /** The bones that will be modified by this transform constraint. */ _this.bones = new Array(); _this.mixRotate = 0; _this.mixX = 0; @@ -6413,11 +7944,17 @@ _this.mixScaleX = 0; _this.mixScaleY = 0; _this.mixShearY = 0; + /** An offset added to the constrained bone rotation. */ _this.offsetRotation = 0; + /** An offset added to the constrained bone X translation. */ _this.offsetX = 0; + /** An offset added to the constrained bone Y translation. */ _this.offsetY = 0; + /** An offset added to the constrained bone scaleX. */ _this.offsetScaleX = 0; + /** An offset added to the constrained bone scaleY. */ _this.offsetScaleY = 0; + /** An offset added to the constrained bone shearY. */ _this.offsetShearY = 0; _this.relative = false; _this.local = false; @@ -6426,8 +7963,45 @@ return TransformConstraintData; }(ConstraintData)); - var SkeletonBinary = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Loads skeleton data in the Spine binary format. + * + * See [Spine binary format](http://esotericsoftware.com/spine-binary-format) and + * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine + * Runtimes Guide. */ + var SkeletonBinary = /** @class */ (function () { function SkeletonBinary(attachmentLoader) { + /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at + * runtime than were used in Spine. + * + * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */ this.scale = 1; this.linkedMeshes = new Array(); this.attachmentLoader = attachmentLoader; @@ -6435,7 +8009,7 @@ SkeletonBinary.prototype.readSkeletonData = function (binary) { var scale = this.scale; var skeletonData = new SkeletonData(); - skeletonData.name = ""; + skeletonData.name = ""; // BOZO var input = new BinaryInput(binary); var lowHash = input.readInt32(); var highHash = input.readInt32(); @@ -6452,9 +8026,11 @@ skeletonData.audioPath = input.readString(); } var n = 0; + // Strings. n = input.readInt(true); for (var i = 0; i < n; i++) input.strings.push(input.readString()); + // Bones. n = input.readInt(true); for (var i = 0; i < n; i++) { var name_1 = input.readString(); @@ -6474,6 +8050,7 @@ Color.rgba8888ToColor(data.color, input.readInt32()); skeletonData.bones.push(data); } + // Slots. n = input.readInt(true); for (var i = 0; i < n; i++) { var slotName = input.readString(); @@ -6487,6 +8064,7 @@ data.blendMode = input.readInt(true); skeletonData.slots.push(data); } + // IK constraints. n = input.readInt(true); for (var i = 0, nn = void 0; i < n; i++) { var data = new IkConstraintData(input.readString()); @@ -6504,6 +8082,7 @@ data.uniform = input.readBoolean(); skeletonData.ikConstraints.push(data); } + // Transform constraints. n = input.readInt(true); for (var i = 0, nn = void 0; i < n; i++) { var data = new TransformConstraintData(input.readString()); @@ -6529,6 +8108,7 @@ data.mixShearY = input.readFloat(); skeletonData.transformConstraints.push(data); } + // Path constraints. n = input.readInt(true); for (var i = 0, nn = void 0; i < n; i++) { var data = new PathConstraintData(input.readString()); @@ -6553,17 +8133,20 @@ data.mixY = input.readFloat(); skeletonData.pathConstraints.push(data); } + // Default skin. var defaultSkin = this.readSkin(input, skeletonData, true, nonessential); if (defaultSkin) { skeletonData.defaultSkin = defaultSkin; skeletonData.skins.push(defaultSkin); } + // Skins. { var i = skeletonData.skins.length; Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); for (; i < n; i++) skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential); } + // Linked meshes. n = this.linkedMeshes.length; for (var i = 0; i < n; i++) { var linkedMesh = this.linkedMeshes[i]; @@ -6574,6 +8157,7 @@ linkedMesh.mesh.updateUVs(); } this.linkedMeshes.length = 0; + // Events. n = input.readInt(true); for (var i = 0; i < n; i++) { var data = new EventData(input.readStringRef()); @@ -6587,6 +8171,7 @@ } skeletonData.events.push(data); } + // Animations. n = input.readInt(true); for (var i = 0; i < n; i++) skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData)); @@ -6833,11 +8418,12 @@ return array; }; SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) { - input.readInt(true); + input.readInt(true); // Number of timelines. var timelines = new Array(); var scale = this.scale; new Color(); new Color(); + // Slot timelines. for (var i = 0, n = input.readInt(true); i < n; i++) { var slotIndex = input.readInt(true); for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { @@ -7037,6 +8623,7 @@ } } } + // Bone timelines. for (var i = 0, n = input.readInt(true); i < n; i++) { var boneIndex = input.readInt(true); for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { @@ -7074,6 +8661,7 @@ } } } + // IK constraint timelines. for (var i = 0, n = input.readInt(true); i < n; i++) { var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; var timeline = new IkConstraintTimeline(frameCount, input.readInt(true), index); @@ -7097,6 +8685,7 @@ } timelines.push(timeline); } + // Transform constraint timelines. for (var i = 0, n = input.readInt(true); i < n; i++) { var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; var timeline = new TransformConstraintTimeline(frameCount, input.readInt(true), index); @@ -7128,6 +8717,7 @@ } timelines.push(timeline); } + // Path constraint timelines. for (var i = 0, n = input.readInt(true); i < n; i++) { var index = input.readInt(true); var data = skeletonData.pathConstraints[index]; @@ -7167,6 +8757,7 @@ } } } + // Deform timelines. for (var i = 0, n = input.readInt(true); i < n; i++) { var skin = skeletonData.skins[input.readInt(true)]; for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { @@ -7221,6 +8812,7 @@ } } } + // Draw order timeline. var drawOrderCount = input.readInt(true); if (drawOrderCount > 0) { var timeline = new DrawOrderTimeline(drawOrderCount); @@ -7235,12 +8827,16 @@ var originalIndex = 0, unchangedIndex = 0; for (var ii = 0; ii < offsetCount; ii++) { var slotIndex = input.readInt(true); + // Collect unchanged items. while (originalIndex != slotIndex) unchanged[unchangedIndex++] = originalIndex++; + // Set changed items. drawOrder[originalIndex + input.readInt(true)] = originalIndex++; } + // Collect remaining unchanged items. while (originalIndex < slotCount) unchanged[unchangedIndex++] = originalIndex++; + // Fill in unchanged items. for (var ii = slotCount - 1; ii >= 0; ii--) if (drawOrder[ii] == -1) drawOrder[ii] = unchanged[--unchangedIndex]; @@ -7248,6 +8844,7 @@ } timelines.push(timeline); } + // Event timeline. var eventCount = input.readInt(true); if (eventCount > 0) { var timeline = new EventTimeline(eventCount); @@ -7273,7 +8870,7 @@ }; return SkeletonBinary; }()); - var BinaryInput = (function () { + var BinaryInput = /** @class */ (function () { function BinaryInput(data, strings, index, buffer) { if (strings === void 0) { strings = new Array(); } if (index === void 0) { index = 0; } @@ -7362,7 +8959,7 @@ }; return BinaryInput; }()); - var LinkedMesh$1 = (function () { + var LinkedMesh$1 = /** @class */ (function () { function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { this.mesh = mesh; this.skin = skin; @@ -7372,7 +8969,7 @@ } return LinkedMesh; }()); - var Vertices = (function () { + var Vertices = /** @class */ (function () { function Vertices(bones, vertices) { if (bones === void 0) { bones = null; } if (vertices === void 0) { vertices = null; } @@ -7456,18 +9053,58 @@ var CURVE_STEPPED = 1; var CURVE_BEZIER = 2; - var SkeletonBounds = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Collects each visible {@link BoundingBoxAttachment} and computes the world vertices for its polygon. The polygon vertices are + * provided along with convenience methods for doing hit detection. */ + var SkeletonBounds = /** @class */ (function () { function SkeletonBounds() { + /** The left edge of the axis aligned bounding box. */ this.minX = 0; + /** The bottom edge of the axis aligned bounding box. */ this.minY = 0; + /** The right edge of the axis aligned bounding box. */ this.maxX = 0; + /** The top edge of the axis aligned bounding box. */ this.maxY = 0; + /** The visible bounding boxes. */ this.boundingBoxes = new Array(); + /** The world vertices for the bounding box polygons. */ this.polygons = new Array(); this.polygonPool = new Pool(function () { return Utils.newFloatArray(16); }); } + /** Clears any previous polygons, finds all visible bounding box attachments, and computes the world vertices for each bounding + * box's polygon. + * @param updateAabb If true, the axis aligned bounding box containing all the polygons is computed. If false, the + * SkeletonBounds AABB methods will always return true. */ SkeletonBounds.prototype.update = function (skeleton, updateAabb) { if (!skeleton) throw new Error("skeleton cannot be null."); @@ -7525,9 +9162,11 @@ this.maxX = maxX; this.maxY = maxY; }; + /** Returns true if the axis aligned bounding box contains the point. */ SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; }; + /** Returns true if the axis aligned bounding box intersects the line segment. */ SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { var minX = this.minX; var minY = this.minY; @@ -7550,9 +9189,12 @@ return true; return false; }; + /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; }; + /** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more + * efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. */ SkeletonBounds.prototype.containsPoint = function (x, y) { var polygons = this.polygons; for (var i = 0, n = polygons.length; i < n; i++) @@ -7560,6 +9202,7 @@ return this.boundingBoxes[i]; return null; }; + /** Returns true if the polygon contains the point. */ SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { var vertices = polygon; var nn = polygon.length; @@ -7577,6 +9220,9 @@ } return inside; }; + /** Returns the first bounding box attachment that contains any part of the line segment, or null. When doing many checks, it + * is usually more efficient to only call this method if {@link #aabbIntersectsSegment()} returns + * true. */ SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { var polygons = this.polygons; for (var i = 0, n = polygons.length; i < n; i++) @@ -7584,6 +9230,7 @@ return this.boundingBoxes[i]; return null; }; + /** Returns true if the polygon contains any part of the line segment. */ SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { var vertices = polygon; var nn = polygon.length; @@ -7606,22 +9253,53 @@ } return false; }; + /** Returns the polygon for the specified bounding box, or null. */ SkeletonBounds.prototype.getPolygon = function (boundingBox) { if (!boundingBox) throw new Error("boundingBox cannot be null."); var index = this.boundingBoxes.indexOf(boundingBox); return index == -1 ? null : this.polygons[index]; }; + /** The width of the axis aligned bounding box. */ SkeletonBounds.prototype.getWidth = function () { return this.maxX - this.minX; }; + /** The height of the axis aligned bounding box. */ SkeletonBounds.prototype.getHeight = function () { return this.maxY - this.minY; }; return SkeletonBounds; }()); - var Triangulator = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var Triangulator = /** @class */ (function () { function Triangulator() { this.convexPolygons = new Array(); this.convexPolygonsIndices = new Array(); @@ -7649,6 +9327,7 @@ var triangles = this.triangles; triangles.length = 0; while (vertexCount > 3) { + // Find ear tip. var previous = vertexCount - 1, i = 0, next = 1; while (true) { outer: if (!isConcave[i]) { @@ -7682,6 +9361,7 @@ i = next; next = (next + 1) % vertexCount; } + // Cut ear tip. triangles.push(indices[(vertexCount + i - 1) % vertexCount]); triangles.push(indices[i]); triangles.push(indices[(i + 1) % vertexCount]); @@ -7712,12 +9392,14 @@ polygonIndices.length = 0; var polygon = this.polygonPool.obtain(); polygon.length = 0; + // Merge subsequent triangles if they form a triangle fan. var fanBaseIndex = -1, lastWinding = 0; for (var i = 0, n = triangles.length; i < n; i += 3) { var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; var x1 = vertices[t1], y1 = vertices[t1 + 1]; var x2 = vertices[t2], y2 = vertices[t2 + 1]; var x3 = vertices[t3], y3 = vertices[t3 + 1]; + // If the base of the last triangle is the same as this triangle, check if they form a convex polygon (triangle fan). var merged = false; if (fanBaseIndex == t1) { var o = polygon.length - 4; @@ -7730,6 +9412,7 @@ merged = true; } } + // Otherwise make this triangle the new base. if (!merged) { if (polygon.length > 0) { convexPolygons.push(polygon); @@ -7760,6 +9443,7 @@ convexPolygons.push(polygon); convexPolygonsIndices.push(polygonIndices); } + // Go through the list of polygons and try to merge the remaining triangles with the found triangle fans. for (var i = 0, n = convexPolygons.length; i < n; i++) { polygonIndices = convexPolygonsIndices[i]; if (polygonIndices.length == 0) @@ -7802,6 +9486,7 @@ } } } + // Remove empty polygons that resulted from the merge step above. for (var i = convexPolygons.length - 1; i >= 0; i--) { polygon = convexPolygons[i]; if (polygon.length == 0) { @@ -7830,7 +9515,35 @@ return Triangulator; }()); - var SkeletonClipping = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var SkeletonClipping = /** @class */ (function () { function SkeletonClipping() { this.triangulator = new Triangulator(); this.clippingPolygon = new Array(); @@ -8007,9 +9720,12 @@ } } }; + /** Clips the input triangle against the convex, clockwise clipping area. If the triangle lies entirely within the clipping + * area, false is returned. The clipping area must duplicate the first vertex at the end of the vertices list. */ SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) { var originalOutput = output; var clipped = false; + // Avoid copy at the end. var input = null; if (clippingArea.length % 4 >= 2) { input = output; @@ -8040,11 +9756,12 @@ var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { - if (side2) { + if (side2) { // v1 inside, v2 inside output.push(inputX2); output.push(inputY2); continue; } + // v1 inside, v2 outside var c0 = inputY2 - inputY, c2 = inputX2 - inputX; var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); if (Math.abs(s) > 0.000001) { @@ -8057,7 +9774,7 @@ output.push(edgeY); } } - else if (side2) { + else if (side2) { // v1 outside, v2 inside var c0 = inputY2 - inputY, c2 = inputX2 - inputX; var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); if (Math.abs(s) > 0.000001) { @@ -8074,7 +9791,7 @@ } clipped = true; } - if (outputStart == output.length) { + if (outputStart == output.length) { // All edges outside. originalOutput.length = 0; return true; } @@ -8121,8 +9838,45 @@ return SkeletonClipping; }()); - var SkeletonJson = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + /** Loads skeleton data in the Spine JSON format. + * + * See [Spine JSON format](http://esotericsoftware.com/spine-json-format) and + * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine + * Runtimes Guide. */ + var SkeletonJson = /** @class */ (function () { function SkeletonJson(attachmentLoader) { + /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at + * runtime than were used in Spine. + * + * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */ this.scale = 1; this.linkedMeshes = new Array(); this.attachmentLoader = attachmentLoader; @@ -8131,6 +9885,7 @@ var scale = this.scale; var skeletonData = new SkeletonData(); var root = typeof (json) === "string" ? JSON.parse(json) : json; + // Skeleton var skeletonMap = root.skeleton; if (skeletonMap) { skeletonData.hash = skeletonMap.hash; @@ -8142,6 +9897,7 @@ skeletonData.fps = skeletonMap.fps; skeletonData.imagesPath = skeletonMap.images; } + // Bones if (root.bones) { for (var i = 0; i < root.bones.length; i++) { var boneMap = root.bones[i]; @@ -8166,6 +9922,7 @@ skeletonData.bones.push(data); } } + // Slots. if (root.slots) { for (var i = 0; i < root.slots.length; i++) { var slotMap = root.slots[i]; @@ -8182,6 +9939,7 @@ skeletonData.slots.push(data); } } + // IK constraints if (root.ik) { for (var i = 0; i < root.ik.length; i++) { var constraintMap = root.ik[i]; @@ -8200,6 +9958,7 @@ skeletonData.ikConstraints.push(data); } } + // Transform constraints. if (root.transform) { for (var i = 0; i < root.transform.length; i++) { var constraintMap = root.transform[i]; @@ -8227,6 +9986,7 @@ skeletonData.transformConstraints.push(data); } } + // Path constraints. if (root.path) { for (var i = 0; i < root.path.length; i++) { var constraintMap = root.path[i]; @@ -8253,6 +10013,7 @@ skeletonData.pathConstraints.push(data); } } + // Skins. if (root.skins) { for (var i = 0; i < root.skins.length; i++) { var skinMap = root.skins[i]; @@ -8287,6 +10048,7 @@ skeletonData.defaultSkin = skin; } } + // Linked meshes. for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { var linkedMesh = this.linkedMeshes[i]; var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); @@ -8296,6 +10058,7 @@ linkedMesh.mesh.updateUVs(); } this.linkedMeshes.length = 0; + // Events. if (root.events) { for (var eventName in root.events) { var eventMap = root.events[eventName]; @@ -8311,6 +10074,7 @@ skeletonData.events.push(data); } } + // Animations. if (root.animations) { for (var animationName in root.animations) { var animationMap = root.animations[animationName]; @@ -8455,6 +10219,7 @@ SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { var scale = this.scale; var timelines = new Array(); + // Slot timelines. if (map.slots) { for (var slotName in map.slots) { var slotMap = map.slots[slotName]; @@ -8595,6 +10360,7 @@ } } } + // Bone timelines. if (map.bones) { for (var boneName in map.bones) { var boneMap = map.bones[boneName]; @@ -8645,6 +10411,7 @@ } } } + // IK constraint timelines. if (map.ik) { for (var constraintName in map.ik) { var constraintMap = map.ik[constraintName]; @@ -8680,6 +10447,7 @@ timelines.push(timeline); } } + // Transform constraint timelines. if (map.transform) { for (var constraintName in map.transform) { var timelineMap = map.transform[constraintName]; @@ -8731,6 +10499,7 @@ timelines.push(timeline); } } + // Path constraint timelines. if (map.path) { for (var constraintName in map.path) { var constraintMap = map.path[constraintName]; @@ -8783,6 +10552,7 @@ } } } + // Deform timelines. if (map.deform) { for (var deformName in map.deform) { var deformMap = map.deform[deformName]; @@ -8837,6 +10607,7 @@ } } } + // Draw order timelines. if (map.drawOrder) { var timeline = new DrawOrderTimeline(map.drawOrder.length); var slotCount = skeletonData.slots.length; @@ -8852,12 +10623,16 @@ for (var ii = 0; ii < offsets.length; ii++) { var offsetMap = offsets[ii]; var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); + // Collect unchanged items. while (originalIndex != slotIndex) unchanged[unchangedIndex++] = originalIndex++; + // Set changed items. drawOrder[originalIndex + offsetMap.offset] = originalIndex++; } + // Collect remaining unchanged items. while (originalIndex < slotCount) unchanged[unchangedIndex++] = originalIndex++; + // Fill in unchanged items. for (var ii = slotCount - 1; ii >= 0; ii--) if (drawOrder[ii] == -1) drawOrder[ii] = unchanged[--unchangedIndex]; @@ -8866,6 +10641,7 @@ } timelines.push(timeline); } + // Event timelines. if (map.events) { var timeline = new EventTimeline(map.events.length); var frame = 0; @@ -8891,7 +10667,7 @@ }; return SkeletonJson; }()); - var LinkedMesh = (function () { + var LinkedMesh = /** @class */ (function () { function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { this.mesh = mesh; this.skin = skin; @@ -8966,6 +10742,34 @@ return map[property] !== undefined ? map[property] : defaultValue; } + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ (function () { if (typeof Math.fround === "undefined") { Math.fround = (function (array) { @@ -8976,7 +10780,35 @@ } })(); - var JitterEffect = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var JitterEffect = /** @class */ (function () { function JitterEffect(jitterX, jitterY) { this.jitterX = 0; this.jitterY = 0; @@ -8994,7 +10826,35 @@ return JitterEffect; }()); - var SwirlEffect = (function () { + /****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + var SwirlEffect = /** @class */ (function () { function SwirlEffect(radius) { this.centerX = 0; this.centerY = 0; @@ -9027,14 +10887,12 @@ return SwirlEffect; }()); - console.log("Spine 4.0.1"); - exports.AlphaTimeline = AlphaTimeline; exports.Animation = Animation; exports.AnimationState = AnimationState; exports.AnimationStateAdapter = AnimationStateAdapter; exports.AnimationStateData = AnimationStateData; - exports.AssetManager = AssetManager; + exports.AssetManagerBase = AssetManagerBase; exports.AtlasAttachmentLoader = AtlasAttachmentLoader; exports.Attachment = Attachment; exports.AttachmentTimeline = AttachmentTimeline; diff --git a/spine-ts/build/spine-core.js.map b/spine-ts/build/spine-core.js.map index e5b88b787..d79fc76cc 100644 --- a/spine-ts/build/spine-core.js.map +++ b/spine-ts/build/spine-core.js.map @@ -1 +1 @@ -{"version":3,"file":"spine-core.js","sources":["../spine-core/build/Utils.js","../spine-core/build/attachments/Attachment.js","../spine-core/build/Animation.js","../spine-core/build/AnimationState.js","../spine-core/build/AnimationStateData.js","../spine-core/build/Texture.js","../spine-core/build/TextureAtlas.js","../spine-core/build/AssetManager.js","../spine-core/build/attachments/BoundingBoxAttachment.js","../spine-core/build/attachments/ClippingAttachment.js","../spine-core/build/attachments/MeshAttachment.js","../spine-core/build/attachments/PathAttachment.js","../spine-core/build/attachments/PointAttachment.js","../spine-core/build/attachments/RegionAttachment.js","../spine-core/build/AtlasAttachmentLoader.js","../spine-core/build/BoneData.js","../spine-core/build/Bone.js","../spine-core/build/ConstraintData.js","../spine-core/build/Event.js","../spine-core/build/EventData.js","../spine-core/build/IkConstraint.js","../spine-core/build/IkConstraintData.js","../spine-core/build/PathConstraintData.js","../spine-core/build/PathConstraint.js","../spine-core/build/Slot.js","../spine-core/build/TransformConstraint.js","../spine-core/build/Skeleton.js","../spine-core/build/SkeletonData.js","../spine-core/build/Skin.js","../spine-core/build/SlotData.js","../spine-core/build/TransformConstraintData.js","../spine-core/build/SkeletonBinary.js","../spine-core/build/SkeletonBounds.js","../spine-core/build/Triangulator.js","../spine-core/build/SkeletonClipping.js","../spine-core/build/SkeletonJson.js","../spine-core/build/polyfills.js","../spine-core/build/vertexeffects/JitterEffect.js","../spine-core/build/vertexeffects/SwirlEffect.js","../spine-core/build/index.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar IntSet = (function () {\n function IntSet() {\n this.array = new Array();\n }\n IntSet.prototype.add = function (value) {\n var contains = this.contains(value);\n this.array[value | 0] = value | 0;\n return !contains;\n };\n IntSet.prototype.contains = function (value) {\n return this.array[value | 0] != undefined;\n };\n IntSet.prototype.remove = function (value) {\n this.array[value | 0] = undefined;\n };\n IntSet.prototype.clear = function () {\n this.array.length = 0;\n };\n return IntSet;\n}());\nexport { IntSet };\nvar StringSet = (function () {\n function StringSet() {\n this.entries = {};\n this.size = 0;\n }\n StringSet.prototype.add = function (value) {\n var contains = this.entries[value];\n this.entries[value] = true;\n if (!contains) {\n this.size++;\n return true;\n }\n return false;\n };\n StringSet.prototype.addAll = function (values) {\n var oldSize = this.size;\n for (var i = 0, n = values.length; i < n; i++)\n this.add(values[i]);\n return oldSize != this.size;\n };\n StringSet.prototype.contains = function (value) {\n return this.entries[value];\n };\n StringSet.prototype.clear = function () {\n this.entries = {};\n this.size = 0;\n };\n return StringSet;\n}());\nexport { StringSet };\nvar Color = (function () {\n function Color(r, g, b, a) {\n if (r === void 0) { r = 0; }\n if (g === void 0) { g = 0; }\n if (b === void 0) { b = 0; }\n if (a === void 0) { a = 0; }\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n Color.prototype.set = function (r, g, b, a) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n return this.clamp();\n };\n Color.prototype.setFromColor = function (c) {\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 Color.prototype.setFromString = function (hex) {\n hex = hex.charAt(0) == '#' ? hex.substr(1) : hex;\n this.r = parseInt(hex.substr(0, 2), 16) / 255;\n this.g = parseInt(hex.substr(2, 2), 16) / 255;\n this.b = parseInt(hex.substr(4, 2), 16) / 255;\n this.a = hex.length != 8 ? 1 : parseInt(hex.substr(6, 2), 16) / 255;\n return this;\n };\n Color.prototype.add = function (r, g, b, a) {\n this.r += r;\n this.g += g;\n this.b += b;\n this.a += a;\n return this.clamp();\n };\n Color.prototype.clamp = function () {\n if (this.r < 0)\n this.r = 0;\n else if (this.r > 1)\n this.r = 1;\n if (this.g < 0)\n this.g = 0;\n else if (this.g > 1)\n this.g = 1;\n if (this.b < 0)\n this.b = 0;\n else if (this.b > 1)\n this.b = 1;\n if (this.a < 0)\n this.a = 0;\n else if (this.a > 1)\n this.a = 1;\n return this;\n };\n Color.rgba8888ToColor = function (color, value) {\n color.r = ((value & 0xff000000) >>> 24) / 255;\n color.g = ((value & 0x00ff0000) >>> 16) / 255;\n color.b = ((value & 0x0000ff00) >>> 8) / 255;\n color.a = ((value & 0x000000ff)) / 255;\n };\n Color.rgb888ToColor = function (color, value) {\n color.r = ((value & 0x00ff0000) >>> 16) / 255;\n color.g = ((value & 0x0000ff00) >>> 8) / 255;\n color.b = ((value & 0x000000ff)) / 255;\n };\n Color.fromString = function (hex) {\n return new Color().setFromString(hex);\n };\n Color.WHITE = new Color(1, 1, 1, 1);\n Color.RED = new Color(1, 0, 0, 1);\n Color.GREEN = new Color(0, 1, 0, 1);\n Color.BLUE = new Color(0, 0, 1, 1);\n Color.MAGENTA = new Color(1, 0, 1, 1);\n return Color;\n}());\nexport { Color };\nvar MathUtils = (function () {\n function MathUtils() {\n }\n MathUtils.clamp = function (value, min, max) {\n if (value < min)\n return min;\n if (value > max)\n return max;\n return value;\n };\n MathUtils.cosDeg = function (degrees) {\n return Math.cos(degrees * MathUtils.degRad);\n };\n MathUtils.sinDeg = function (degrees) {\n return Math.sin(degrees * MathUtils.degRad);\n };\n MathUtils.signum = function (value) {\n return value > 0 ? 1 : value < 0 ? -1 : 0;\n };\n MathUtils.toInt = function (x) {\n return x > 0 ? Math.floor(x) : Math.ceil(x);\n };\n MathUtils.cbrt = function (x) {\n var y = Math.pow(Math.abs(x), 1 / 3);\n return x < 0 ? -y : y;\n };\n MathUtils.randomTriangular = function (min, max) {\n return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5);\n };\n MathUtils.randomTriangularWith = function (min, max, mode) {\n var u = Math.random();\n var d = max - min;\n if (u <= (mode - min) / d)\n return min + Math.sqrt(u * d * (mode - min));\n return max - Math.sqrt((1 - u) * d * (max - mode));\n };\n MathUtils.isPowerOfTwo = function (value) {\n return value && (value & (value - 1)) === 0;\n };\n MathUtils.PI = 3.1415927;\n MathUtils.PI2 = MathUtils.PI * 2;\n MathUtils.radiansToDegrees = 180 / MathUtils.PI;\n MathUtils.radDeg = MathUtils.radiansToDegrees;\n MathUtils.degreesToRadians = MathUtils.PI / 180;\n MathUtils.degRad = MathUtils.degreesToRadians;\n return MathUtils;\n}());\nexport { MathUtils };\nvar Interpolation = (function () {\n function Interpolation() {\n }\n Interpolation.prototype.apply = function (start, end, a) {\n return start + (end - start) * this.applyInternal(a);\n };\n return Interpolation;\n}());\nexport { Interpolation };\nvar Pow = (function (_super) {\n __extends(Pow, _super);\n function Pow(power) {\n var _this = _super.call(this) || this;\n _this.power = 2;\n _this.power = power;\n return _this;\n }\n Pow.prototype.applyInternal = function (a) {\n if (a <= 0.5)\n 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 return Pow;\n}(Interpolation));\nexport { Pow };\nvar PowOut = (function (_super) {\n __extends(PowOut, _super);\n function PowOut(power) {\n return _super.call(this, power) || this;\n }\n PowOut.prototype.applyInternal = function (a) {\n return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1;\n };\n return PowOut;\n}(Pow));\nexport { PowOut };\nvar Utils = (function () {\n function Utils() {\n }\n Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) {\n for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) {\n dest[j] = source[i];\n }\n };\n Utils.arrayFill = function (array, fromIndex, toIndex, value) {\n for (var i = fromIndex; i < toIndex; i++)\n array[i] = value;\n };\n Utils.setArraySize = function (array, size, value) {\n if (value === void 0) { value = 0; }\n var oldSize = array.length;\n if (oldSize == size)\n return array;\n array.length = size;\n if (oldSize < size) {\n for (var i = oldSize; i < size; i++)\n array[i] = value;\n }\n return array;\n };\n Utils.ensureArrayCapacity = function (array, size, value) {\n if (value === void 0) { value = 0; }\n if (array.length >= size)\n return array;\n return Utils.setArraySize(array, size, value);\n };\n Utils.newArray = function (size, defaultValue) {\n var array = new Array(size);\n for (var i = 0; i < size; i++)\n array[i] = defaultValue;\n return array;\n };\n Utils.newFloatArray = function (size) {\n if (Utils.SUPPORTS_TYPED_ARRAYS)\n return new Float32Array(size);\n else {\n var array = new Array(size);\n for (var i = 0; i < array.length; i++)\n array[i] = 0;\n return array;\n }\n };\n Utils.newShortArray = function (size) {\n if (Utils.SUPPORTS_TYPED_ARRAYS)\n return new Int16Array(size);\n else {\n var array = new Array(size);\n for (var i = 0; i < array.length; i++)\n array[i] = 0;\n return array;\n }\n };\n Utils.toFloatArray = function (array) {\n return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array;\n };\n Utils.toSinglePrecision = function (value) {\n return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value;\n };\n Utils.webkit602BugfixHelper = function (alpha, blend) {\n };\n Utils.contains = function (array, element, identity) {\n if (identity === void 0) { identity = true; }\n for (var i = 0; i < array.length; i++)\n if (array[i] == element)\n return true;\n return false;\n };\n Utils.enumValue = function (type, name) {\n return type[name[0].toUpperCase() + name.slice(1)];\n };\n Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== \"undefined\";\n return Utils;\n}());\nexport { Utils };\nvar DebugUtils = (function () {\n function DebugUtils() {\n }\n DebugUtils.logBones = function (skeleton) {\n for (var i = 0; i < skeleton.bones.length; i++) {\n var bone = skeleton.bones[i];\n console.log(bone.data.name + \", \" + bone.a + \", \" + bone.b + \", \" + bone.c + \", \" + bone.d + \", \" + bone.worldX + \", \" + bone.worldY);\n }\n };\n return DebugUtils;\n}());\nexport { DebugUtils };\nvar Pool = (function () {\n function Pool(instantiator) {\n this.items = new Array();\n this.instantiator = instantiator;\n }\n Pool.prototype.obtain = function () {\n return this.items.length > 0 ? this.items.pop() : this.instantiator();\n };\n Pool.prototype.free = function (item) {\n if (item.reset)\n item.reset();\n this.items.push(item);\n };\n Pool.prototype.freeAll = function (items) {\n for (var i = 0; i < items.length; i++)\n this.free(items[i]);\n };\n Pool.prototype.clear = function () {\n this.items.length = 0;\n };\n return Pool;\n}());\nexport { Pool };\nvar Vector2 = (function () {\n function Vector2(x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n this.x = x;\n this.y = y;\n }\n Vector2.prototype.set = function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n };\n Vector2.prototype.length = function () {\n var x = this.x;\n var y = this.y;\n return Math.sqrt(x * x + y * y);\n };\n Vector2.prototype.normalize = function () {\n var len = this.length();\n if (len != 0) {\n this.x /= len;\n this.y /= len;\n }\n return this;\n };\n return Vector2;\n}());\nexport { Vector2 };\nvar TimeKeeper = (function () {\n function TimeKeeper() {\n this.maxDelta = 0.064;\n this.framesPerSecond = 0;\n this.delta = 0;\n this.totalTime = 0;\n this.lastTime = Date.now() / 1000;\n this.frameCount = 0;\n this.frameTime = 0;\n }\n TimeKeeper.prototype.update = function () {\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)\n this.delta = this.maxDelta;\n this.lastTime = now;\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 return TimeKeeper;\n}());\nexport { TimeKeeper };\nvar WindowedMean = (function () {\n function WindowedMean(windowSize) {\n if (windowSize === void 0) { windowSize = 32; }\n this.addedValues = 0;\n this.lastValue = 0;\n this.mean = 0;\n this.dirty = true;\n this.values = new Array(windowSize);\n }\n WindowedMean.prototype.hasEnoughData = function () {\n return this.addedValues >= this.values.length;\n };\n WindowedMean.prototype.addValue = function (value) {\n if (this.addedValues < this.values.length)\n this.addedValues++;\n this.values[this.lastValue++] = value;\n if (this.lastValue > this.values.length - 1)\n this.lastValue = 0;\n this.dirty = true;\n };\n WindowedMean.prototype.getMean = function () {\n if (this.hasEnoughData()) {\n if (this.dirty) {\n var mean = 0;\n for (var i = 0; i < this.values.length; i++)\n mean += this.values[i];\n this.mean = mean / this.values.length;\n this.dirty = false;\n }\n return this.mean;\n }\n return 0;\n };\n return WindowedMean;\n}());\nexport { WindowedMean };\n//# sourceMappingURL=Utils.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Utils } from \"../Utils\";\nvar Attachment = (function () {\n function Attachment(name) {\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.name = name;\n }\n return Attachment;\n}());\nexport { Attachment };\nvar VertexAttachment = (function (_super) {\n __extends(VertexAttachment, _super);\n function VertexAttachment(name) {\n var _this = _super.call(this, name) || this;\n _this.id = VertexAttachment.nextID++;\n _this.worldVerticesLength = 0;\n _this.deformAttachment = _this;\n return _this;\n }\n VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) {\n count = offset + (count >> 1) * stride;\n var skeleton = slot.bone.skeleton;\n var deformArray = slot.deform;\n var vertices = this.vertices;\n var bones = this.bones;\n if (!bones) {\n if (deformArray.length > 0)\n vertices = deformArray;\n var bone = slot.bone;\n var x = bone.worldX;\n var y = bone.worldY;\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) {\n var vx = vertices[v_1], vy = vertices[v_1 + 1];\n worldVertices[w] = vx * a + vy * b + x;\n worldVertices[w + 1] = vx * c + vy * d + y;\n }\n return;\n }\n var v = 0, skip = 0;\n for (var i = 0; i < start; i += 2) {\n var n = bones[v];\n v += n + 1;\n skip += n;\n }\n var skeletonBones = skeleton.bones;\n if (deformArray.length == 0) {\n for (var w = offset, b = skip * 3; w < count; w += stride) {\n var wx = 0, wy = 0;\n var n = bones[v++];\n n += v;\n for (; v < n; v++, b += 3) {\n var bone = skeletonBones[bones[v]];\n var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2];\n wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight;\n wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight;\n }\n worldVertices[w] = wx;\n worldVertices[w + 1] = wy;\n }\n }\n else {\n var deform = deformArray;\n for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) {\n var wx = 0, wy = 0;\n var n = bones[v++];\n n += v;\n for (; v < n; v++, b += 3, f += 2) {\n var bone = skeletonBones[bones[v]];\n var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2];\n wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight;\n wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight;\n }\n worldVertices[w] = wx;\n worldVertices[w + 1] = wy;\n }\n }\n };\n VertexAttachment.prototype.copyTo = function (attachment) {\n if (this.bones) {\n attachment.bones = new Array(this.bones.length);\n Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length);\n }\n else\n attachment.bones = null;\n if (this.vertices) {\n attachment.vertices = Utils.newFloatArray(this.vertices.length);\n Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length);\n }\n else\n attachment.vertices = null;\n attachment.worldVerticesLength = this.worldVerticesLength;\n attachment.deformAttachment = this.deformAttachment;\n };\n VertexAttachment.nextID = 0;\n return VertexAttachment;\n}(Attachment));\nexport { VertexAttachment };\n//# sourceMappingURL=Attachment.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VertexAttachment } from \"./attachments/Attachment\";\nimport { StringSet, Utils, MathUtils } from \"./Utils\";\nvar Animation = (function () {\n function Animation(name, timelines, duration) {\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.name = name;\n this.setTimelines(timelines);\n this.duration = duration;\n }\n Animation.prototype.setTimelines = function (timelines) {\n if (!timelines)\n throw new Error(\"timelines cannot be null.\");\n this.timelines = timelines;\n this.timelineIds = new StringSet();\n for (var i = 0; i < timelines.length; i++)\n this.timelineIds.addAll(timelines[i].getPropertyIds());\n };\n Animation.prototype.hasTimeline = function (ids) {\n for (var i = 0; i < ids.length; i++)\n if (this.timelineIds.contains(ids[i]))\n return true;\n return false;\n };\n Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) {\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n if (loop && this.duration != 0) {\n time %= this.duration;\n if (lastTime > 0)\n lastTime %= this.duration;\n }\n var timelines = this.timelines;\n for (var i = 0, n = timelines.length; i < n; i++)\n timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction);\n };\n return Animation;\n}());\nexport { Animation };\nexport var MixBlend;\n(function (MixBlend) {\n MixBlend[MixBlend[\"setup\"] = 0] = \"setup\";\n MixBlend[MixBlend[\"first\"] = 1] = \"first\";\n MixBlend[MixBlend[\"replace\"] = 2] = \"replace\";\n MixBlend[MixBlend[\"add\"] = 3] = \"add\";\n})(MixBlend || (MixBlend = {}));\nexport var MixDirection;\n(function (MixDirection) {\n MixDirection[MixDirection[\"mixIn\"] = 0] = \"mixIn\";\n MixDirection[MixDirection[\"mixOut\"] = 1] = \"mixOut\";\n})(MixDirection || (MixDirection = {}));\nvar Property = {\n rotate: 0,\n x: 1,\n y: 2,\n scaleX: 3,\n scaleY: 4,\n shearX: 5,\n shearY: 6,\n rgb: 7,\n alpha: 8,\n rgb2: 9,\n attachment: 10,\n deform: 11,\n event: 12,\n drawOrder: 13,\n ikConstraint: 14,\n transformConstraint: 15,\n pathConstraintPosition: 16,\n pathConstraintSpacing: 17,\n pathConstraintMix: 18\n};\nvar Timeline = (function () {\n function Timeline(frameCount, propertyIds) {\n this.propertyIds = propertyIds;\n this.frames = Utils.newFloatArray(frameCount * this.getFrameEntries());\n }\n Timeline.prototype.getPropertyIds = function () {\n return this.propertyIds;\n };\n Timeline.prototype.getFrameEntries = function () {\n return 1;\n };\n Timeline.prototype.getFrameCount = function () {\n return this.frames.length / this.getFrameEntries();\n };\n Timeline.prototype.getDuration = function () {\n return this.frames[this.frames.length - this.getFrameEntries()];\n };\n Timeline.search1 = function (frames, time) {\n var n = frames.length;\n for (var i = 1; i < n; i++)\n if (frames[i] > time)\n return i - 1;\n return n - 1;\n };\n Timeline.search = function (frames, time, step) {\n var n = frames.length;\n for (var i = step; i < n; i += step)\n if (frames[i] > time)\n return i - step;\n return n - step;\n };\n return Timeline;\n}());\nexport { Timeline };\nvar CurveTimeline = (function (_super) {\n __extends(CurveTimeline, _super);\n function CurveTimeline(frameCount, bezierCount, propertyIds) {\n var _this = _super.call(this, frameCount, propertyIds) || this;\n _this.curves = Utils.newFloatArray(frameCount + bezierCount * 18);\n _this.curves[frameCount - 1] = 1;\n return _this;\n }\n CurveTimeline.prototype.setLinear = function (frame) {\n this.curves[frame] = 0;\n };\n CurveTimeline.prototype.setStepped = function (frame) {\n this.curves[frame] = 1;\n };\n CurveTimeline.prototype.shrink = function (bezierCount) {\n var size = this.getFrameCount() + bezierCount * 18;\n if (this.curves.length > size) {\n var newCurves = Utils.newFloatArray(size);\n Utils.arrayCopy(this.curves, 0, newCurves, 0, size);\n this.curves = newCurves;\n }\n };\n CurveTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) {\n var curves = this.curves;\n var i = this.getFrameCount() + bezier * 18;\n if (value == 0)\n curves[frame] = 2 + i;\n var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03;\n var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006;\n var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy;\n var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667;\n var x = time1 + dx, y = value1 + dy;\n for (var n = i + 18; i < n; i += 2) {\n curves[i] = x;\n curves[i + 1] = y;\n dx += ddx;\n dy += ddy;\n ddx += dddx;\n ddy += dddy;\n x += dx;\n y += dy;\n }\n };\n CurveTimeline.prototype.getBezierValue = function (time, frameIndex, valueOffset, i) {\n var curves = this.curves;\n if (curves[i] > time) {\n var x_1 = this.frames[frameIndex], y_1 = this.frames[frameIndex + valueOffset];\n return y_1 + (time - x_1) / (curves[i] - x_1) * (curves[i + 1] - y_1);\n }\n var n = i + 18;\n for (i += 2; i < n; i += 2) {\n if (curves[i] >= time) {\n var x_2 = curves[i - 2], y_2 = curves[i - 1];\n return y_2 + (time - x_2) / (curves[i] - x_2) * (curves[i + 1] - y_2);\n }\n }\n frameIndex += this.getFrameEntries();\n var x = curves[n - 2], y = curves[n - 1];\n return y + (time - x) / (this.frames[frameIndex] - x) * (this.frames[frameIndex + valueOffset] - y);\n };\n return CurveTimeline;\n}(Timeline));\nexport { CurveTimeline };\nvar CurveTimeline1 = (function (_super) {\n __extends(CurveTimeline1, _super);\n function CurveTimeline1(frameCount, bezierCount, propertyId) {\n return _super.call(this, frameCount, bezierCount, [propertyId]) || this;\n }\n CurveTimeline1.prototype.getFrameEntries = function () {\n return 2;\n };\n CurveTimeline1.prototype.setFrame = function (frame, time, value) {\n frame <<= 1;\n this.frames[frame] = time;\n this.frames[frame + 1] = value;\n };\n CurveTimeline1.prototype.getCurveValue = function (time) {\n var frames = this.frames;\n var i = frames.length - 2;\n for (var ii = 2; ii <= i; ii += 2) {\n if (frames[ii] > time) {\n i = ii - 2;\n break;\n }\n }\n var curveType = this.curves[i >> 1];\n switch (curveType) {\n case 0:\n var before = frames[i], value = frames[i + 1];\n return value + (time - before) / (frames[i + 2] - before) * (frames[i + 2 + 1] - value);\n case 1:\n return frames[i + 1];\n }\n return this.getBezierValue(time, i, 1, curveType - 2);\n };\n return CurveTimeline1;\n}(CurveTimeline));\nexport { CurveTimeline1 };\nvar CurveTimeline2 = (function (_super) {\n __extends(CurveTimeline2, _super);\n function CurveTimeline2(frameCount, bezierCount, propertyId1, propertyId2) {\n return _super.call(this, frameCount, bezierCount, [propertyId1, propertyId2]) || this;\n }\n CurveTimeline2.prototype.getFrameEntries = function () {\n return 3;\n };\n CurveTimeline2.prototype.setFrame = function (frame, time, value1, value2) {\n frame *= 3;\n this.frames[frame] = time;\n this.frames[frame + 1] = value1;\n this.frames[frame + 2] = value2;\n };\n return CurveTimeline2;\n}(CurveTimeline));\nexport { CurveTimeline2 };\nvar RotateTimeline = (function (_super) {\n __extends(RotateTimeline, _super);\n function RotateTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.rotate + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.rotation = bone.data.rotation;\n return;\n case MixBlend.first:\n bone.rotation += (bone.data.rotation - bone.rotation) * alpha;\n }\n return;\n }\n var r = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.rotation = bone.data.rotation + r * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n r += bone.data.rotation - bone.rotation;\n case MixBlend.add:\n bone.rotation += r * alpha;\n }\n };\n return RotateTimeline;\n}(CurveTimeline1));\nexport { RotateTimeline };\nvar TranslateTimeline = (function (_super) {\n __extends(TranslateTimeline, _super);\n function TranslateTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.x + \"|\" + boneIndex, Property.y + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x;\n bone.y = bone.data.y;\n return;\n case MixBlend.first:\n bone.x += (bone.data.x - bone.x) * alpha;\n bone.y += (bone.data.y - bone.y) * alpha;\n }\n return;\n }\n var x = 0, y = 0;\n var i = Timeline.search(frames, time, 3);\n var curveType = this.curves[i / 3];\n switch (curveType) {\n case 0:\n var before = frames[i];\n x = frames[i + 1];\n y = frames[i + 2];\n var t = (time - before) / (frames[i + 3] - before);\n x += (frames[i + 3 + 1] - x) * t;\n y += (frames[i + 3 + 2] - y) * t;\n break;\n case 1:\n x = frames[i + 1];\n y = frames[i + 2];\n break;\n default:\n x = this.getBezierValue(time, i, 1, curveType - 2);\n y = this.getBezierValue(time, i, 2, curveType + 18 - 2);\n }\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x + x * alpha;\n bone.y = bone.data.y + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.x += (bone.data.x + x - bone.x) * alpha;\n bone.y += (bone.data.y + y - bone.y) * alpha;\n break;\n case MixBlend.add:\n bone.x += x * alpha;\n bone.y += y * alpha;\n }\n };\n return TranslateTimeline;\n}(CurveTimeline2));\nexport { TranslateTimeline };\nvar TranslateXTimeline = (function (_super) {\n __extends(TranslateXTimeline, _super);\n function TranslateXTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.x + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n TranslateXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x;\n return;\n case MixBlend.first:\n bone.x += (bone.data.x - bone.x) * alpha;\n }\n return;\n }\n var x = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x + x * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.x += (bone.data.x + x - bone.x) * alpha;\n break;\n case MixBlend.add:\n bone.x += x * alpha;\n }\n };\n return TranslateXTimeline;\n}(CurveTimeline1));\nexport { TranslateXTimeline };\nvar TranslateYTimeline = (function (_super) {\n __extends(TranslateYTimeline, _super);\n function TranslateYTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.y + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n TranslateYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.y = bone.data.y;\n return;\n case MixBlend.first:\n bone.y += (bone.data.y - bone.y) * alpha;\n }\n return;\n }\n var y = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.y = bone.data.y + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.y += (bone.data.y + y - bone.y) * alpha;\n break;\n case MixBlend.add:\n bone.y += y * alpha;\n }\n };\n return TranslateYTimeline;\n}(CurveTimeline1));\nexport { TranslateYTimeline };\nvar ScaleTimeline = (function (_super) {\n __extends(ScaleTimeline, _super);\n function ScaleTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + \"|\" + boneIndex, Property.scaleY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.scaleX = bone.data.scaleX;\n bone.scaleY = bone.data.scaleY;\n return;\n case MixBlend.first:\n bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha;\n bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha;\n }\n return;\n }\n var x, y;\n var i = Timeline.search(frames, time, 3);\n var curveType = this.curves[i / 3];\n switch (curveType) {\n case 0:\n var before = frames[i];\n x = frames[i + 1];\n y = frames[i + 2];\n var t = (time - before) / (frames[i + 3] - before);\n x += (frames[i + 3 + 1] - x) * t;\n y += (frames[i + 3 + 2] - y) * t;\n break;\n case 1:\n x = frames[i + 1];\n y = frames[i + 2];\n break;\n default:\n x = this.getBezierValue(time, i, 1, curveType - 2);\n y = this.getBezierValue(time, i, 2, curveType + 18 - 2);\n }\n x *= bone.data.scaleX;\n y *= bone.data.scaleY;\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n bone.scaleX += x - bone.data.scaleX;\n bone.scaleY += y - bone.data.scaleY;\n }\n else {\n bone.scaleX = x;\n bone.scaleY = y;\n }\n }\n else {\n var bx = 0, by = 0;\n if (direction == MixDirection.mixOut) {\n switch (blend) {\n case MixBlend.setup:\n bx = bone.data.scaleX;\n by = bone.data.scaleY;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = bone.scaleX;\n by = bone.scaleY;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.add:\n bx = bone.scaleX;\n by = bone.scaleY;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bone.data.scaleX) * alpha;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - bone.data.scaleY) * alpha;\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup:\n bx = Math.abs(bone.data.scaleX) * MathUtils.signum(x);\n by = Math.abs(bone.data.scaleY) * MathUtils.signum(y);\n bone.scaleX = bx + (x - bx) * alpha;\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = Math.abs(bone.scaleX) * MathUtils.signum(x);\n by = Math.abs(bone.scaleY) * MathUtils.signum(y);\n bone.scaleX = bx + (x - bx) * alpha;\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.add:\n bx = MathUtils.signum(x);\n by = MathUtils.signum(y);\n bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha;\n bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha;\n }\n }\n }\n };\n return ScaleTimeline;\n}(CurveTimeline2));\nexport { ScaleTimeline };\nvar ScaleXTimeline = (function (_super) {\n __extends(ScaleXTimeline, _super);\n function ScaleXTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ScaleXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.scaleX = bone.data.scaleX;\n return;\n case MixBlend.first:\n bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha;\n }\n return;\n }\n var x = this.getCurveValue(time) * bone.data.scaleX;\n if (alpha == 1) {\n if (blend == MixBlend.add)\n bone.scaleX += x - bone.data.scaleX;\n else\n bone.scaleX = x;\n }\n else {\n var bx = 0;\n if (direction == MixDirection.mixOut) {\n switch (blend) {\n case MixBlend.setup:\n bx = bone.data.scaleX;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = bone.scaleX;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n break;\n case MixBlend.add:\n bx = bone.scaleX;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bone.data.scaleX) * alpha;\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup:\n bx = Math.abs(bone.data.scaleX) * MathUtils.signum(x);\n bone.scaleX = bx + (x - bx) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = Math.abs(bone.scaleX) * MathUtils.signum(x);\n bone.scaleX = bx + (x - bx) * alpha;\n break;\n case MixBlend.add:\n bx = MathUtils.signum(x);\n bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha;\n }\n }\n }\n };\n return ScaleXTimeline;\n}(CurveTimeline1));\nexport { ScaleXTimeline };\nvar ScaleYTimeline = (function (_super) {\n __extends(ScaleYTimeline, _super);\n function ScaleYTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.scaleY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ScaleYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.scaleY = bone.data.scaleY;\n return;\n case MixBlend.first:\n bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha;\n }\n return;\n }\n var y = this.getCurveValue(time) * bone.data.scaleY;\n if (alpha == 1) {\n if (blend == MixBlend.add)\n bone.scaleY += y - bone.data.scaleY;\n else\n bone.scaleY = y;\n }\n else {\n var by = 0;\n if (direction == MixDirection.mixOut) {\n switch (blend) {\n case MixBlend.setup:\n by = bone.data.scaleY;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n by = bone.scaleY;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.add:\n by = bone.scaleY;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - bone.data.scaleY) * alpha;\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup:\n by = Math.abs(bone.data.scaleY) * MathUtils.signum(y);\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n by = Math.abs(bone.scaleY) * MathUtils.signum(y);\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.add:\n by = MathUtils.signum(y);\n bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha;\n }\n }\n }\n };\n return ScaleYTimeline;\n}(CurveTimeline1));\nexport { ScaleYTimeline };\nvar ShearTimeline = (function (_super) {\n __extends(ShearTimeline, _super);\n function ShearTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.shearX + \"|\" + boneIndex, Property.shearY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX;\n bone.shearY = bone.data.shearY;\n return;\n case MixBlend.first:\n bone.shearX += (bone.data.shearX - bone.shearX) * alpha;\n bone.shearY += (bone.data.shearY - bone.shearY) * alpha;\n }\n return;\n }\n var x = 0, y = 0;\n var i = Timeline.search(frames, time, 3);\n var curveType = this.curves[i / 3];\n switch (curveType) {\n case 0:\n var before = frames[i];\n x = frames[i + 1];\n y = frames[i + 2];\n var t = (time - before) / (frames[i + 3] - before);\n x += (frames[i + 3 + 1] - x) * t;\n y += (frames[i + 3 + 2] - y) * t;\n break;\n case 1:\n x = frames[i + 1];\n y = frames[i + 2];\n break;\n default:\n x = this.getBezierValue(time, i, 1, curveType - 2);\n y = this.getBezierValue(time, i, 2, curveType + 18 - 2);\n }\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX + x * alpha;\n bone.shearY = bone.data.shearY + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha;\n bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha;\n break;\n case MixBlend.add:\n bone.shearX += x * alpha;\n bone.shearY += y * alpha;\n }\n };\n return ShearTimeline;\n}(CurveTimeline2));\nexport { ShearTimeline };\nvar ShearXTimeline = (function (_super) {\n __extends(ShearXTimeline, _super);\n function ShearXTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.shearX + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ShearXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX;\n return;\n case MixBlend.first:\n bone.shearX += (bone.data.shearX - bone.shearX) * alpha;\n }\n return;\n }\n var x = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX + x * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha;\n break;\n case MixBlend.add:\n bone.shearX += x * alpha;\n }\n };\n return ShearXTimeline;\n}(CurveTimeline1));\nexport { ShearXTimeline };\nvar ShearYTimeline = (function (_super) {\n __extends(ShearYTimeline, _super);\n function ShearYTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.shearY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ShearYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.shearY = bone.data.shearY;\n return;\n case MixBlend.first:\n bone.shearY += (bone.data.shearY - bone.shearY) * alpha;\n }\n return;\n }\n var y = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.shearY = bone.data.shearY + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha;\n break;\n case MixBlend.add:\n bone.shearY += y * alpha;\n }\n };\n return ShearYTimeline;\n}(CurveTimeline1));\nexport { ShearYTimeline };\nvar RGBATimeline = (function (_super) {\n __extends(RGBATimeline, _super);\n function RGBATimeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.alpha + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGBATimeline.prototype.getFrameEntries = function () {\n return 5;\n };\n RGBATimeline.prototype.setFrame = function (frame, time, r, g, b, a) {\n frame *= 5;\n this.frames[frame] = time;\n this.frames[frame + 1] = r;\n this.frames[frame + 2] = g;\n this.frames[frame + 3] = b;\n this.frames[frame + 4] = a;\n };\n RGBATimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var color = slot.color;\n if (time < frames[0]) {\n var setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.setFromColor(setup);\n return;\n case MixBlend.first:\n color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha);\n }\n return;\n }\n var r = 0, g = 0, b = 0, a = 0;\n var i = Timeline.search(frames, time, 5);\n var curveType = this.curves[i / 5];\n switch (curveType) {\n case 0:\n var before = frames[i];\n r = frames[i + 1];\n g = frames[i + 2];\n b = frames[i + 3];\n a = frames[i + 4];\n var t = (time - before) / (frames[i + 5] - before);\n r += (frames[i + 5 + 1] - r) * t;\n g += (frames[i + 5 + 2] - g) * t;\n b += (frames[i + 5 + 3] - b) * t;\n a += (frames[i + 5 + 4] - a) * t;\n break;\n case 1:\n r = frames[i + 1];\n g = frames[i + 2];\n b = frames[i + 3];\n a = frames[i + 4];\n break;\n default:\n r = this.getBezierValue(time, i, 1, curveType - 2);\n g = this.getBezierValue(time, i, 2, curveType + 18 - 2);\n b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2);\n a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2);\n }\n if (alpha == 1)\n color.set(r, g, b, a);\n else {\n if (blend == MixBlend.setup)\n 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 return RGBATimeline;\n}(CurveTimeline));\nexport { RGBATimeline };\nvar RGBTimeline = (function (_super) {\n __extends(RGBTimeline, _super);\n function RGBTimeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGBTimeline.prototype.getFrameEntries = function () {\n return 4;\n };\n RGBTimeline.prototype.setFrame = function (frame, time, r, g, b) {\n frame <<= 2;\n this.frames[frame] = time;\n this.frames[frame + 1] = r;\n this.frames[frame + 2] = g;\n this.frames[frame + 3] = b;\n };\n RGBTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var color = slot.color;\n if (time < frames[0]) {\n var setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.r = setup.r;\n color.g = setup.g;\n color.b = setup.b;\n return;\n case MixBlend.first:\n color.r += (setup.r - color.r) * alpha;\n color.g += (setup.g - color.g) * alpha;\n color.b += (setup.b - color.b) * alpha;\n }\n return;\n }\n var r = 0, g = 0, b = 0;\n var i = Timeline.search(frames, time, 4);\n var curveType = this.curves[i >> 2];\n switch (curveType) {\n case 0:\n var before = frames[i];\n r = frames[i + 1];\n g = frames[i + 2];\n b = frames[i + 3];\n var t = (time - before) / (frames[i + 4] - before);\n r += (frames[i + 4 + 1] - r) * t;\n g += (frames[i + 4 + 2] - g) * t;\n b += (frames[i + 4 + 3] - b) * t;\n break;\n case 1:\n r = frames[i + 1];\n g = frames[i + 2];\n b = frames[i + 3];\n break;\n default:\n r = this.getBezierValue(time, i, 1, curveType - 2);\n g = this.getBezierValue(time, i, 2, curveType + 18 - 2);\n b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2);\n }\n if (alpha == 1) {\n color.r = r;\n color.g = g;\n color.b = b;\n }\n else {\n if (blend == MixBlend.setup) {\n var setup = slot.data.color;\n color.r = setup.r;\n color.g = setup.g;\n color.b = setup.b;\n }\n color.r += (r - color.r) * alpha;\n color.g += (g - color.g) * alpha;\n color.b += (b - color.b) * alpha;\n }\n };\n return RGBTimeline;\n}(CurveTimeline));\nexport { RGBTimeline };\nvar AlphaTimeline = (function (_super) {\n __extends(AlphaTimeline, _super);\n function AlphaTimeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.alpha + \"|\" + slotIndex) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n AlphaTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var color = slot.color;\n if (time < this.frames[0]) {\n var setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.a = setup.a;\n return;\n case MixBlend.first:\n color.a += (setup.a - color.a) * alpha;\n }\n return;\n }\n var a = this.getCurveValue(time);\n if (alpha == 1)\n color.a = a;\n else {\n if (blend == MixBlend.setup)\n color.a = slot.data.color.a;\n color.a += (a - color.a) * alpha;\n }\n };\n return AlphaTimeline;\n}(CurveTimeline1));\nexport { AlphaTimeline };\nvar RGBA2Timeline = (function (_super) {\n __extends(RGBA2Timeline, _super);\n function RGBA2Timeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.alpha + \"|\" + slotIndex,\n Property.rgb2 + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGBA2Timeline.prototype.getFrameEntries = function () {\n return 8;\n };\n RGBA2Timeline.prototype.setFrame = function (frame, time, r, g, b, a, r2, g2, b2) {\n frame <<= 3;\n this.frames[frame] = time;\n this.frames[frame + 1] = r;\n this.frames[frame + 2] = g;\n this.frames[frame + 3] = b;\n this.frames[frame + 4] = a;\n this.frames[frame + 5] = r2;\n this.frames[frame + 6] = g2;\n this.frames[frame + 7] = b2;\n };\n RGBA2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var light = slot.color, dark = slot.darkColor;\n if (time < frames[0]) {\n var setupLight = slot.data.color, setupDark = slot.data.darkColor;\n switch (blend) {\n case MixBlend.setup:\n light.setFromColor(setupLight);\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n return;\n case MixBlend.first:\n light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha);\n dark.r += (setupDark.r - dark.r) * alpha;\n dark.g += (setupDark.g - dark.g) * alpha;\n dark.b += (setupDark.b - dark.b) * alpha;\n }\n return;\n }\n var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0;\n var i = Timeline.search(frames, time, 8);\n var curveType = this.curves[i >> 3];\n switch (curveType) {\n case 0:\n var before = frames[i];\n r = frames[i + 1];\n g = frames[i + 2];\n b = frames[i + 3];\n a = frames[i + 4];\n r2 = frames[i + 5];\n g2 = frames[i + 6];\n b2 = frames[i + 7];\n var t = (time - before) / (frames[i + 8] - before);\n r += (frames[i + 8 + 1] - r) * t;\n g += (frames[i + 8 + 2] - g) * t;\n b += (frames[i + 8 + 3] - b) * t;\n a += (frames[i + 8 + 4] - a) * t;\n r2 += (frames[i + 8 + 5] - r2) * t;\n g2 += (frames[i + 8 + 6] - g2) * t;\n b2 += (frames[i + 8 + 7] - b2) * t;\n break;\n case 1:\n r = frames[i + 1];\n g = frames[i + 2];\n b = frames[i + 3];\n a = frames[i + 4];\n r2 = frames[i + 5];\n g2 = frames[i + 6];\n b2 = frames[i + 7];\n break;\n default:\n r = this.getBezierValue(time, i, 1, curveType - 2);\n g = this.getBezierValue(time, i, 2, curveType + 18 - 2);\n b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2);\n a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2);\n r2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2);\n g2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2);\n b2 = this.getBezierValue(time, i, 7, curveType + 18 * 6 - 2);\n }\n if (alpha == 1) {\n light.set(r, g, b, a);\n dark.r = r2;\n dark.g = g2;\n dark.b = b2;\n }\n else {\n if (blend == MixBlend.setup) {\n light.setFromColor(slot.data.color);\n var setupDark = slot.data.darkColor;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n }\n light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha);\n dark.r += (r2 - dark.r) * alpha;\n dark.g += (g2 - dark.g) * alpha;\n dark.b += (b2 - dark.b) * alpha;\n }\n };\n return RGBA2Timeline;\n}(CurveTimeline));\nexport { RGBA2Timeline };\nvar RGB2Timeline = (function (_super) {\n __extends(RGB2Timeline, _super);\n function RGB2Timeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.rgb2 + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGB2Timeline.prototype.getFrameEntries = function () {\n return 7;\n };\n RGB2Timeline.prototype.setFrame = function (frame, time, r, g, b, r2, g2, b2) {\n frame *= 7;\n this.frames[frame] = time;\n this.frames[frame + 1] = r;\n this.frames[frame + 2] = g;\n this.frames[frame + 3] = b;\n this.frames[frame + 4] = r2;\n this.frames[frame + 5] = g2;\n this.frames[frame + 6] = b2;\n };\n RGB2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var light = slot.color, dark = slot.darkColor;\n if (time < frames[0]) {\n var setupLight = slot.data.color, setupDark = slot.data.darkColor;\n switch (blend) {\n case MixBlend.setup:\n light.r = setupLight.r;\n light.g = setupLight.g;\n light.b = setupLight.b;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n return;\n case MixBlend.first:\n light.r += (setupLight.r - light.r) * alpha;\n light.g += (setupLight.g - light.g) * alpha;\n light.b += (setupLight.b - light.b) * alpha;\n dark.r += (setupDark.r - dark.r) * alpha;\n dark.g += (setupDark.g - dark.g) * alpha;\n dark.b += (setupDark.b - dark.b) * alpha;\n }\n return;\n }\n var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0;\n var i = Timeline.search(frames, time, 7);\n var curveType = this.curves[i / 7];\n switch (curveType) {\n case 0:\n var before = frames[i];\n r = frames[i + 1];\n g = frames[i + 2];\n b = frames[i + 3];\n r2 = frames[i + 4];\n g2 = frames[i + 5];\n b2 = frames[i + 6];\n var t = (time - before) / (frames[i + 7] - before);\n r += (frames[i + 7 + 1] - r) * t;\n g += (frames[i + 7 + 2] - g) * t;\n b += (frames[i + 7 + 3] - b) * t;\n r2 += (frames[i + 7 + 4] - r2) * t;\n g2 += (frames[i + 7 + 5] - g2) * t;\n b2 += (frames[i + 7 + 6] - b2) * t;\n break;\n case 1:\n r = frames[i + 1];\n g = frames[i + 2];\n b = frames[i + 3];\n r2 = frames[i + 4];\n g2 = frames[i + 5];\n b2 = frames[i + 6];\n break;\n default:\n r = this.getBezierValue(time, i, 1, curveType - 2);\n g = this.getBezierValue(time, i, 2, curveType + 18 - 2);\n b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2);\n r2 = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2);\n g2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2);\n b2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2);\n }\n if (alpha == 1) {\n light.r = r;\n light.g = g;\n light.b = b;\n dark.r = r2;\n dark.g = g2;\n dark.b = b2;\n }\n else {\n if (blend == MixBlend.setup) {\n var setupLight = slot.data.color, setupDark = slot.data.darkColor;\n light.r = setupLight.r;\n light.g = setupLight.g;\n light.b = setupLight.b;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n }\n light.r += (r - light.r) * alpha;\n light.g += (g - light.g) * alpha;\n light.b += (b - light.b) * alpha;\n dark.r += (r2 - dark.r) * alpha;\n dark.g += (g2 - dark.g) * alpha;\n dark.b += (b2 - dark.b) * alpha;\n }\n };\n return RGB2Timeline;\n}(CurveTimeline));\nexport { RGB2Timeline };\nvar AttachmentTimeline = (function (_super) {\n __extends(AttachmentTimeline, _super);\n function AttachmentTimeline(frameCount, slotIndex) {\n var _this = _super.call(this, frameCount, [\n Property.attachment + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n _this.attachmentNames = new Array(frameCount);\n return _this;\n }\n AttachmentTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n AttachmentTimeline.prototype.setFrame = function (frame, time, attachmentName) {\n this.frames[frame] = time;\n this.attachmentNames[frame] = attachmentName;\n };\n AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n if (direction == MixDirection.mixOut) {\n if (blend == MixBlend.setup)\n this.setAttachment(skeleton, slot, slot.data.attachmentName);\n return;\n }\n if (time < this.frames[0]) {\n if (blend == MixBlend.setup || blend == MixBlend.first)\n this.setAttachment(skeleton, slot, slot.data.attachmentName);\n return;\n }\n this.setAttachment(skeleton, slot, this.attachmentNames[Timeline.search1(this.frames, time)]);\n };\n AttachmentTimeline.prototype.setAttachment = function (skeleton, slot, attachmentName) {\n slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\n };\n return AttachmentTimeline;\n}(Timeline));\nexport { AttachmentTimeline };\nvar DeformTimeline = (function (_super) {\n __extends(DeformTimeline, _super);\n function DeformTimeline(frameCount, bezierCount, slotIndex, attachment) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.deform + \"|\" + slotIndex + \"|\" + attachment.id\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n _this.attachment = attachment;\n _this.vertices = new Array(frameCount);\n return _this;\n }\n DeformTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n DeformTimeline.prototype.setFrame = function (frame, time, vertices) {\n this.frames[frame] = time;\n this.vertices[frame] = vertices;\n };\n DeformTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) {\n var curves = this.curves;\n var i = this.getFrameCount() + bezier * 18;\n if (value == 0)\n curves[frame] = 2 + i;\n var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06;\n var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018;\n var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy;\n var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667;\n var x = time1 + dx, y = dy;\n for (var n = i + 18; i < n; i += 2) {\n curves[i] = x;\n curves[i + 1] = y;\n dx += ddx;\n dy += ddy;\n ddx += dddx;\n ddy += dddy;\n x += dx;\n y += dy;\n }\n };\n DeformTimeline.prototype.getCurvePercent = function (time, frame) {\n var curves = this.curves;\n var i = curves[frame];\n switch (i) {\n case 0:\n var x_3 = this.frames[frame];\n return (time - x_3) / (this.frames[frame + this.getFrameEntries()] - x_3);\n case 1:\n return 0;\n }\n i -= 2;\n if (curves[i] > time) {\n var x_4 = this.frames[frame];\n return curves[i + 1] * (time - x_4) / (curves[i] - x_4);\n }\n var n = i + 18;\n for (i += 2; i < n; i += 2) {\n if (curves[i] >= time) {\n var x_5 = curves[i - 2], y_3 = curves[i - 1];\n return y_3 + (time - x_5) / (curves[i] - x_5) * (curves[i + 1] - y_3);\n }\n }\n var x = curves[n - 2], y = curves[n - 1];\n return y + (1 - y) * (time - x) / (this.frames[frame + this.getFrameEntries()] - x);\n };\n DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var slotAttachment = slot.getAttachment();\n if (!(slotAttachment instanceof VertexAttachment) || slotAttachment.deformAttachment != this.attachment)\n return;\n var deform = slot.deform;\n if (deform.length == 0)\n blend = MixBlend.setup;\n var vertices = this.vertices;\n var vertexCount = vertices[0].length;\n var frames = this.frames;\n if (time < frames[0]) {\n var vertexAttachment = slotAttachment;\n switch (blend) {\n case MixBlend.setup:\n deform.length = 0;\n return;\n case MixBlend.first:\n if (alpha == 1) {\n deform.length = 0;\n return;\n }\n deform.length = vertexCount;\n if (!vertexAttachment.bones) {\n var setupVertices = vertexAttachment.vertices;\n for (var i = 0; i < vertexCount; i++)\n deform[i] += (setupVertices[i] - deform[i]) * alpha;\n }\n else {\n alpha = 1 - alpha;\n for (var i = 0; i < vertexCount; i++)\n deform[i] *= alpha;\n }\n }\n return;\n }\n deform.length = vertexCount;\n if (time >= frames[frames.length - 1]) {\n var lastVertices = vertices[frames.length - 1];\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n var setupVertices = vertexAttachment.vertices;\n for (var i_1 = 0; i_1 < vertexCount; i_1++)\n deform[i_1] += lastVertices[i_1] - setupVertices[i_1];\n }\n else {\n for (var i_2 = 0; i_2 < vertexCount; i_2++)\n deform[i_2] += lastVertices[i_2];\n }\n }\n else\n Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount);\n }\n else {\n switch (blend) {\n case MixBlend.setup: {\n var vertexAttachment_1 = slotAttachment;\n if (!vertexAttachment_1.bones) {\n var setupVertices = vertexAttachment_1.vertices;\n for (var i_3 = 0; i_3 < vertexCount; i_3++) {\n var setup = setupVertices[i_3];\n deform[i_3] = setup + (lastVertices[i_3] - setup) * alpha;\n }\n }\n else {\n for (var i_4 = 0; i_4 < vertexCount; i_4++)\n deform[i_4] = lastVertices[i_4] * alpha;\n }\n break;\n }\n case MixBlend.first:\n case MixBlend.replace:\n for (var i_5 = 0; i_5 < vertexCount; i_5++)\n deform[i_5] += (lastVertices[i_5] - deform[i_5]) * alpha;\n break;\n case MixBlend.add:\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n var setupVertices = vertexAttachment.vertices;\n for (var i_6 = 0; i_6 < vertexCount; i_6++)\n deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha;\n }\n else {\n for (var i_7 = 0; i_7 < vertexCount; i_7++)\n deform[i_7] += lastVertices[i_7] * alpha;\n }\n }\n }\n return;\n }\n var frame = Timeline.search1(frames, time);\n var percent = this.getCurvePercent(time, frame);\n var prevVertices = vertices[frame];\n var nextVertices = vertices[frame + 1];\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n var setupVertices = vertexAttachment.vertices;\n for (var i_8 = 0; i_8 < vertexCount; i_8++) {\n var prev = prevVertices[i_8];\n deform[i_8] += prev + (nextVertices[i_8] - prev) * percent - setupVertices[i_8];\n }\n }\n else {\n for (var i_9 = 0; i_9 < vertexCount; i_9++) {\n var prev = prevVertices[i_9];\n deform[i_9] += prev + (nextVertices[i_9] - prev) * percent;\n }\n }\n }\n else {\n for (var i_10 = 0; i_10 < vertexCount; i_10++) {\n var prev = prevVertices[i_10];\n deform[i_10] = prev + (nextVertices[i_10] - prev) * percent;\n }\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup: {\n var vertexAttachment_2 = slotAttachment;\n if (!vertexAttachment_2.bones) {\n var setupVertices = vertexAttachment_2.vertices;\n for (var i_11 = 0; i_11 < vertexCount; i_11++) {\n var prev = prevVertices[i_11], setup = setupVertices[i_11];\n deform[i_11] = setup + (prev + (nextVertices[i_11] - prev) * percent - setup) * alpha;\n }\n }\n else {\n for (var i_12 = 0; i_12 < vertexCount; i_12++) {\n var prev = prevVertices[i_12];\n deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha;\n }\n }\n break;\n }\n case MixBlend.first:\n case MixBlend.replace:\n for (var i_13 = 0; i_13 < vertexCount; i_13++) {\n var prev = prevVertices[i_13];\n deform[i_13] += (prev + (nextVertices[i_13] - prev) * percent - deform[i_13]) * alpha;\n }\n break;\n case MixBlend.add:\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n var setupVertices = vertexAttachment.vertices;\n for (var i_14 = 0; i_14 < vertexCount; i_14++) {\n var prev = prevVertices[i_14];\n deform[i_14] += (prev + (nextVertices[i_14] - prev) * percent - setupVertices[i_14]) * alpha;\n }\n }\n else {\n for (var i_15 = 0; i_15 < vertexCount; i_15++) {\n var prev = prevVertices[i_15];\n deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha;\n }\n }\n }\n }\n };\n return DeformTimeline;\n}(CurveTimeline));\nexport { DeformTimeline };\nvar EventTimeline = (function (_super) {\n __extends(EventTimeline, _super);\n function EventTimeline(frameCount) {\n var _this = _super.call(this, frameCount, EventTimeline.propertyIds) || this;\n _this.events = new Array(frameCount);\n return _this;\n }\n EventTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n EventTimeline.prototype.setFrame = function (frame, event) {\n this.frames[frame] = event.time;\n this.events[frame] = event;\n };\n EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n if (!firedEvents)\n return;\n var frames = this.frames;\n var frameCount = this.frames.length;\n if (lastTime > time) {\n this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction);\n lastTime = -1;\n }\n else if (lastTime >= frames[frameCount - 1])\n return;\n if (time < frames[0])\n return;\n var i = 0;\n if (lastTime < frames[0])\n i = 0;\n else {\n i = Timeline.search1(frames, lastTime) + 1;\n var frameTime = frames[i];\n while (i > 0) {\n if (frames[i - 1] != frameTime)\n break;\n i--;\n }\n }\n for (; i < frameCount && time >= frames[i]; i++)\n firedEvents.push(this.events[i]);\n };\n EventTimeline.propertyIds = [\"\" + Property.event];\n return EventTimeline;\n}(Timeline));\nexport { EventTimeline };\nvar DrawOrderTimeline = (function (_super) {\n __extends(DrawOrderTimeline, _super);\n function DrawOrderTimeline(frameCount) {\n var _this = _super.call(this, frameCount, DrawOrderTimeline.propertyIds) || this;\n _this.drawOrders = new Array(frameCount);\n return _this;\n }\n DrawOrderTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n DrawOrderTimeline.prototype.setFrame = function (frame, time, drawOrder) {\n this.frames[frame] = time;\n this.drawOrders[frame] = drawOrder;\n };\n DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n if (direction == MixDirection.mixOut) {\n if (blend == MixBlend.setup)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n return;\n }\n if (time < this.frames[0]) {\n if (blend == MixBlend.setup || blend == MixBlend.first)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n return;\n }\n var drawOrderToSetupIndex = this.drawOrders[Timeline.search1(this.frames, time)];\n if (!drawOrderToSetupIndex)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n else {\n var drawOrder = skeleton.drawOrder;\n var slots = skeleton.slots;\n for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++)\n drawOrder[i] = slots[drawOrderToSetupIndex[i]];\n }\n };\n DrawOrderTimeline.propertyIds = [\"\" + Property.drawOrder];\n return DrawOrderTimeline;\n}(Timeline));\nexport { DrawOrderTimeline };\nvar IkConstraintTimeline = (function (_super) {\n __extends(IkConstraintTimeline, _super);\n function IkConstraintTimeline(frameCount, bezierCount, ikConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.ikConstraint + \"|\" + ikConstraintIndex\n ]) || this;\n _this.ikConstraintIndex = ikConstraintIndex;\n return _this;\n }\n IkConstraintTimeline.prototype.getFrameEntries = function () {\n return 6;\n };\n IkConstraintTimeline.prototype.setFrame = function (frame, time, mix, softness, bendDirection, compress, stretch) {\n frame *= 6;\n this.frames[frame] = time;\n this.frames[frame + 1] = mix;\n this.frames[frame + 2] = softness;\n this.frames[frame + 3] = bendDirection;\n this.frames[frame + 4] = compress ? 1 : 0;\n this.frames[frame + 5] = stretch ? 1 : 0;\n };\n IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.ikConstraints[this.ikConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.mix = constraint.data.mix;\n constraint.softness = constraint.data.softness;\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n return;\n case MixBlend.first:\n constraint.mix += (constraint.data.mix - constraint.mix) * alpha;\n constraint.softness += (constraint.data.softness - constraint.softness) * alpha;\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n }\n return;\n }\n var mix = 0, softness = 0;\n var i = Timeline.search(frames, time, 6);\n var curveType = this.curves[i / 6];\n switch (curveType) {\n case 0:\n var before = frames[i];\n mix = frames[i + 1];\n softness = frames[i + 2];\n var t = (time - before) / (frames[i + 6] - before);\n mix += (frames[i + 6 + 1] - mix) * t;\n softness += (frames[i + 6 + 2] - softness) * t;\n break;\n case 1:\n mix = frames[i + 1];\n softness = frames[i + 2];\n break;\n default:\n mix = this.getBezierValue(time, i, 1, curveType - 2);\n softness = this.getBezierValue(time, i, 2, curveType + 18 - 2);\n }\n if (blend == MixBlend.setup) {\n constraint.mix = constraint.data.mix + (mix - constraint.data.mix) * alpha;\n constraint.softness = constraint.data.softness + (softness - constraint.data.softness) * alpha;\n if (direction == MixDirection.mixOut) {\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n }\n else {\n constraint.bendDirection = frames[i + 3];\n constraint.compress = frames[i + 4] != 0;\n constraint.stretch = frames[i + 5] != 0;\n }\n }\n else {\n constraint.mix += (mix - constraint.mix) * alpha;\n constraint.softness += (softness - constraint.softness) * alpha;\n if (direction == MixDirection.mixIn) {\n constraint.bendDirection = frames[i + 3];\n constraint.compress = frames[i + 4] != 0;\n constraint.stretch = frames[i + 5] != 0;\n }\n }\n };\n return IkConstraintTimeline;\n}(CurveTimeline));\nexport { IkConstraintTimeline };\nvar TransformConstraintTimeline = (function (_super) {\n __extends(TransformConstraintTimeline, _super);\n function TransformConstraintTimeline(frameCount, bezierCount, transformConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.transformConstraint + \"|\" + transformConstraintIndex\n ]) || this;\n _this.transformConstraintIndex = transformConstraintIndex;\n return _this;\n }\n TransformConstraintTimeline.prototype.getFrameEntries = function () {\n return 7;\n };\n TransformConstraintTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) {\n var frames = this.frames;\n frame *= 7;\n frames[frame] = time;\n frames[frame + 1] = mixRotate;\n frames[frame + 2] = mixX;\n frames[frame + 3] = mixY;\n frames[frame + 4] = mixScaleX;\n frames[frame + 5] = mixScaleY;\n frames[frame + 6] = mixShearY;\n };\n TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.transformConstraints[this.transformConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n var data = constraint.data;\n switch (blend) {\n case MixBlend.setup:\n constraint.mixRotate = data.mixRotate;\n constraint.mixX = data.mixX;\n constraint.mixY = data.mixY;\n constraint.mixScaleX = data.mixScaleX;\n constraint.mixScaleY = data.mixScaleY;\n constraint.mixShearY = data.mixShearY;\n return;\n case MixBlend.first:\n constraint.mixRotate += (data.mixRotate - constraint.mixRotate) * alpha;\n constraint.mixX += (data.mixX - constraint.mixX) * alpha;\n constraint.mixY += (data.mixY - constraint.mixY) * alpha;\n constraint.mixScaleX += (data.mixScaleX - constraint.mixScaleX) * alpha;\n constraint.mixScaleY += (data.mixScaleY - constraint.mixScaleY) * alpha;\n constraint.mixShearY += (data.mixShearY - constraint.mixShearY) * alpha;\n }\n return;\n }\n var rotate, x, y, scaleX, scaleY, shearY;\n var i = Timeline.search(frames, time, 7);\n var curveType = this.curves[i / 7];\n switch (curveType) {\n case 0:\n var before = frames[i];\n rotate = frames[i + 1];\n x = frames[i + 2];\n y = frames[i + 3];\n scaleX = frames[i + 4];\n scaleY = frames[i + 5];\n shearY = frames[i + 6];\n var t = (time - before) / (frames[i + 7] - before);\n rotate += (frames[i + 7 + 1] - rotate) * t;\n x += (frames[i + 7 + 2] - x) * t;\n y += (frames[i + 7 + 3] - y) * t;\n scaleX += (frames[i + 7 + 4] - scaleX) * t;\n scaleY += (frames[i + 7 + 5] - scaleY) * t;\n shearY += (frames[i + 7 + 6] - shearY) * t;\n break;\n case 1:\n rotate = frames[i + 1];\n x = frames[i + 2];\n y = frames[i + 3];\n scaleX = frames[i + 4];\n scaleY = frames[i + 5];\n shearY = frames[i + 6];\n break;\n default:\n rotate = this.getBezierValue(time, i, 1, curveType - 2);\n x = this.getBezierValue(time, i, 2, curveType + 18 - 2);\n y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2);\n scaleX = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2);\n scaleY = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2);\n shearY = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2);\n }\n if (blend == MixBlend.setup) {\n var data = constraint.data;\n constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha;\n constraint.mixX = data.mixX + (x - data.mixX) * alpha;\n constraint.mixY = data.mixY + (y - data.mixY) * alpha;\n constraint.mixScaleX = data.mixScaleX + (scaleX - data.mixScaleX) * alpha;\n constraint.mixScaleY = data.mixScaleY + (scaleY - data.mixScaleY) * alpha;\n constraint.mixShearY = data.mixShearY + (shearY - data.mixShearY) * alpha;\n }\n else {\n constraint.mixRotate += (rotate - constraint.mixRotate) * alpha;\n constraint.mixX += (x - constraint.mixX) * alpha;\n constraint.mixY += (y - constraint.mixY) * alpha;\n constraint.mixScaleX += (scaleX - constraint.mixScaleX) * alpha;\n constraint.mixScaleY += (scaleY - constraint.mixScaleY) * alpha;\n constraint.mixShearY += (shearY - constraint.mixShearY) * alpha;\n }\n };\n return TransformConstraintTimeline;\n}(CurveTimeline));\nexport { TransformConstraintTimeline };\nvar PathConstraintPositionTimeline = (function (_super) {\n __extends(PathConstraintPositionTimeline, _super);\n function PathConstraintPositionTimeline(frameCount, bezierCount, pathConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintPosition + \"|\" + pathConstraintIndex) || this;\n _this.pathConstraintIndex = pathConstraintIndex;\n return _this;\n }\n PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.pathConstraints[this.pathConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.position = constraint.data.position;\n return;\n case MixBlend.first:\n constraint.position += (constraint.data.position - constraint.position) * alpha;\n }\n return;\n }\n var position = this.getCurveValue(time);\n if (blend == MixBlend.setup)\n constraint.position = constraint.data.position + (position - constraint.data.position) * alpha;\n else\n constraint.position += (position - constraint.position) * alpha;\n };\n return PathConstraintPositionTimeline;\n}(CurveTimeline1));\nexport { PathConstraintPositionTimeline };\nvar PathConstraintSpacingTimeline = (function (_super) {\n __extends(PathConstraintSpacingTimeline, _super);\n function PathConstraintSpacingTimeline(frameCount, bezierCount, pathConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintSpacing + \"|\" + pathConstraintIndex) || this;\n _this.pathConstraintIndex = 0;\n _this.pathConstraintIndex = pathConstraintIndex;\n return _this;\n }\n PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.pathConstraints[this.pathConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.spacing = constraint.data.spacing;\n return;\n case MixBlend.first:\n constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha;\n }\n return;\n }\n var spacing = this.getCurveValue(time);\n if (blend == MixBlend.setup)\n constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha;\n else\n constraint.spacing += (spacing - constraint.spacing) * alpha;\n };\n return PathConstraintSpacingTimeline;\n}(CurveTimeline1));\nexport { PathConstraintSpacingTimeline };\nvar PathConstraintMixTimeline = (function (_super) {\n __extends(PathConstraintMixTimeline, _super);\n function PathConstraintMixTimeline(frameCount, bezierCount, pathConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.pathConstraintMix + \"|\" + pathConstraintIndex\n ]) || this;\n _this.pathConstraintIndex = 0;\n _this.pathConstraintIndex = pathConstraintIndex;\n return _this;\n }\n PathConstraintMixTimeline.prototype.getFrameEntries = function () {\n return 4;\n };\n PathConstraintMixTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY) {\n var frames = this.frames;\n frame <<= 2;\n frames[frame] = time;\n frames[frame + 1] = mixRotate;\n frames[frame + 2] = mixX;\n frames[frame + 3] = mixY;\n };\n PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.pathConstraints[this.pathConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.mixRotate = constraint.data.mixRotate;\n constraint.mixX = constraint.data.mixX;\n constraint.mixY = constraint.data.mixY;\n return;\n case MixBlend.first:\n constraint.mixRotate += (constraint.data.mixRotate - constraint.mixRotate) * alpha;\n constraint.mixX += (constraint.data.mixX - constraint.mixX) * alpha;\n constraint.mixY += (constraint.data.mixY - constraint.mixY) * alpha;\n }\n return;\n }\n var rotate, x, y;\n var i = Timeline.search(frames, time, 4);\n var curveType = this.curves[i >> 2];\n switch (curveType) {\n case 0:\n var before = frames[i];\n rotate = frames[i + 1];\n x = frames[i + 2];\n y = frames[i + 3];\n var t = (time - before) / (frames[i + 4] - before);\n rotate += (frames[i + 4 + 1] - rotate) * t;\n x += (frames[i + 4 + 2] - x) * t;\n y += (frames[i + 4 + 3] - y) * t;\n break;\n case 1:\n rotate = frames[i + 1];\n x = frames[i + 2];\n y = frames[i + 3];\n break;\n default:\n rotate = this.getBezierValue(time, i, 1, curveType - 2);\n x = this.getBezierValue(time, i, 2, curveType + 18 - 2);\n y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2);\n }\n if (blend == MixBlend.setup) {\n var data = constraint.data;\n constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha;\n constraint.mixX = data.mixX + (x - data.mixX) * alpha;\n constraint.mixY = data.mixY + (y - data.mixY) * alpha;\n }\n else {\n constraint.mixRotate += (rotate - constraint.mixRotate) * alpha;\n constraint.mixX += (x - constraint.mixX) * alpha;\n constraint.mixY += (y - constraint.mixY) * alpha;\n }\n };\n return PathConstraintMixTimeline;\n}(CurveTimeline));\nexport { PathConstraintMixTimeline };\n//# sourceMappingURL=Animation.js.map","import { Animation, MixBlend, AttachmentTimeline, MixDirection, RotateTimeline, DrawOrderTimeline, Timeline, EventTimeline } from \"./Animation\";\nimport { StringSet, Pool, Utils, MathUtils } from \"./Utils\";\nvar AnimationState = (function () {\n function AnimationState(data) {\n this.tracks = new Array();\n this.timeScale = 1;\n this.unkeyedState = 0;\n this.events = new Array();\n this.listeners = new Array();\n this.queue = new EventQueue(this);\n this.propertyIDs = new StringSet();\n this.animationsChanged = false;\n this.trackEntryPool = new Pool(function () { return new TrackEntry(); });\n this.data = data;\n }\n AnimationState.emptyAnimation = function () {\n if (!_emptyAnimation)\n _emptyAnimation = new Animation(\"\", [], 0);\n return _emptyAnimation;\n };\n AnimationState.prototype.update = function (delta) {\n delta *= this.timeScale;\n var tracks = this.tracks;\n for (var i = 0, n = tracks.length; i < n; i++) {\n var current = tracks[i];\n if (!current)\n continue;\n current.animationLast = current.nextAnimationLast;\n current.trackLast = current.nextTrackLast;\n var currentDelta = delta * current.timeScale;\n if (current.delay > 0) {\n current.delay -= currentDelta;\n if (current.delay > 0)\n continue;\n currentDelta = -current.delay;\n current.delay = 0;\n }\n var next = current.next;\n if (next) {\n var nextTime = current.trackLast - next.delay;\n if (nextTime >= 0) {\n next.delay = 0;\n next.trackTime += current.timeScale == 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale;\n current.trackTime += currentDelta;\n this.setCurrent(i, next, true);\n while (next.mixingFrom) {\n next.mixTime += delta;\n next = next.mixingFrom;\n }\n continue;\n }\n }\n else if (current.trackLast >= current.trackEnd && !current.mixingFrom) {\n tracks[i] = null;\n this.queue.end(current);\n this.clearNext(current);\n continue;\n }\n if (current.mixingFrom && this.updateMixingFrom(current, delta)) {\n var from = current.mixingFrom;\n current.mixingFrom = null;\n if (from)\n from.mixingTo = null;\n while (from) {\n this.queue.end(from);\n from = from.mixingFrom;\n }\n }\n current.trackTime += currentDelta;\n }\n this.queue.drain();\n };\n AnimationState.prototype.updateMixingFrom = function (to, delta) {\n var from = to.mixingFrom;\n if (!from)\n return true;\n var finished = this.updateMixingFrom(from, delta);\n from.animationLast = from.nextAnimationLast;\n from.trackLast = from.nextTrackLast;\n if (to.mixTime > 0 && to.mixTime >= to.mixDuration) {\n if (from.totalAlpha == 0 || to.mixDuration == 0) {\n to.mixingFrom = from.mixingFrom;\n if (from.mixingFrom)\n from.mixingFrom.mixingTo = to;\n to.interruptAlpha = from.interruptAlpha;\n this.queue.end(from);\n }\n return finished;\n }\n from.trackTime += delta * from.timeScale;\n to.mixTime += delta;\n return false;\n };\n AnimationState.prototype.apply = function (skeleton) {\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n if (this.animationsChanged)\n this._animationsChanged();\n var events = this.events;\n var tracks = this.tracks;\n var applied = false;\n for (var i_1 = 0, n_1 = tracks.length; i_1 < n_1; i_1++) {\n var current = tracks[i_1];\n if (!current || current.delay > 0)\n continue;\n applied = true;\n var blend = i_1 == 0 ? MixBlend.first : current.mixBlend;\n var mix = current.alpha;\n if (current.mixingFrom)\n mix *= this.applyMixingFrom(current, skeleton, blend);\n else if (current.trackTime >= current.trackEnd && !current.next)\n mix = 0;\n var animationLast = current.animationLast, animationTime = current.getAnimationTime(), applyTime = animationTime;\n var applyEvents = events;\n if (current.reverse) {\n applyTime = current.animation.duration - applyTime;\n applyEvents = null;\n }\n var timelines = current.animation.timelines;\n var timelineCount = timelines.length;\n if ((i_1 == 0 && mix == 1) || blend == MixBlend.add) {\n for (var ii = 0; ii < timelineCount; ii++) {\n Utils.webkit602BugfixHelper(mix, blend);\n var timeline = timelines[ii];\n if (timeline instanceof AttachmentTimeline)\n this.applyAttachmentTimeline(timeline, skeleton, applyTime, blend, true);\n else\n timeline.apply(skeleton, animationLast, applyTime, applyEvents, mix, blend, MixDirection.mixIn);\n }\n }\n else {\n var timelineMode = current.timelineMode;\n var firstFrame = current.timelinesRotation.length != timelineCount << 1;\n if (firstFrame)\n current.timelinesRotation.length = timelineCount << 1;\n for (var ii = 0; ii < timelineCount; ii++) {\n var timeline_1 = timelines[ii];\n var timelineBlend = timelineMode[ii] == SUBSEQUENT ? blend : MixBlend.setup;\n if (timeline_1 instanceof RotateTimeline) {\n this.applyRotateTimeline(timeline_1, skeleton, applyTime, mix, timelineBlend, current.timelinesRotation, ii << 1, firstFrame);\n }\n else if (timeline_1 instanceof AttachmentTimeline) {\n this.applyAttachmentTimeline(timeline_1, skeleton, applyTime, blend, true);\n }\n else {\n Utils.webkit602BugfixHelper(mix, blend);\n timeline_1.apply(skeleton, animationLast, applyTime, applyEvents, mix, timelineBlend, MixDirection.mixIn);\n }\n }\n }\n this.queueEvents(current, animationTime);\n events.length = 0;\n current.nextAnimationLast = animationTime;\n current.nextTrackLast = current.trackTime;\n }\n var setupState = this.unkeyedState + SETUP;\n var slots = skeleton.slots;\n for (var i = 0, n = skeleton.slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.attachmentState == setupState) {\n var attachmentName = slot.data.attachmentName;\n slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName));\n }\n }\n this.unkeyedState += 2;\n this.queue.drain();\n return applied;\n };\n AnimationState.prototype.applyMixingFrom = function (to, skeleton, blend) {\n var from = to.mixingFrom;\n if (from.mixingFrom)\n this.applyMixingFrom(from, skeleton, blend);\n var mix = 0;\n if (to.mixDuration == 0) {\n mix = 1;\n if (blend == MixBlend.first)\n blend = MixBlend.setup;\n }\n else {\n mix = to.mixTime / to.mixDuration;\n if (mix > 1)\n mix = 1;\n if (blend != MixBlend.first)\n blend = from.mixBlend;\n }\n var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold;\n var timelines = from.animation.timelines;\n var timelineCount = timelines.length;\n var alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix);\n var animationLast = from.animationLast, animationTime = from.getAnimationTime(), applyTime = animationTime;\n var events = null;\n if (from.reverse)\n applyTime = from.animation.duration - applyTime;\n else if (mix < from.eventThreshold)\n events = this.events;\n if (blend == MixBlend.add) {\n for (var i = 0; i < timelineCount; i++)\n timelines[i].apply(skeleton, animationLast, applyTime, events, alphaMix, blend, MixDirection.mixOut);\n }\n else {\n var timelineMode = from.timelineMode;\n var timelineHoldMix = from.timelineHoldMix;\n var firstFrame = from.timelinesRotation.length != timelineCount << 1;\n if (firstFrame)\n from.timelinesRotation.length = timelineCount << 1;\n from.totalAlpha = 0;\n for (var i = 0; i < timelineCount; i++) {\n var timeline = timelines[i];\n var direction = MixDirection.mixOut;\n var timelineBlend = void 0;\n var alpha = 0;\n switch (timelineMode[i]) {\n case SUBSEQUENT:\n if (!drawOrder && timeline instanceof DrawOrderTimeline)\n continue;\n timelineBlend = blend;\n alpha = alphaMix;\n break;\n case FIRST:\n timelineBlend = MixBlend.setup;\n alpha = alphaMix;\n break;\n case HOLD_SUBSEQUENT:\n timelineBlend = blend;\n alpha = alphaHold;\n break;\n case HOLD_FIRST:\n timelineBlend = MixBlend.setup;\n alpha = alphaHold;\n break;\n default:\n timelineBlend = MixBlend.setup;\n var holdMix = timelineHoldMix[i];\n alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration);\n break;\n }\n from.totalAlpha += alpha;\n if (timeline instanceof RotateTimeline)\n this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, timelineBlend, from.timelinesRotation, i << 1, firstFrame);\n else if (timeline instanceof AttachmentTimeline)\n this.applyAttachmentTimeline(timeline, skeleton, applyTime, timelineBlend, attachments);\n else {\n Utils.webkit602BugfixHelper(alpha, blend);\n if (drawOrder && timeline instanceof DrawOrderTimeline && timelineBlend == MixBlend.setup)\n direction = MixDirection.mixIn;\n timeline.apply(skeleton, animationLast, applyTime, events, alpha, timelineBlend, direction);\n }\n }\n }\n if (to.mixDuration > 0)\n this.queueEvents(from, animationTime);\n this.events.length = 0;\n from.nextAnimationLast = animationTime;\n from.nextTrackLast = from.trackTime;\n return mix;\n };\n AnimationState.prototype.applyAttachmentTimeline = function (timeline, skeleton, time, blend, attachments) {\n var slot = skeleton.slots[timeline.slotIndex];\n if (!slot.bone.active)\n return;\n if (time < timeline.frames[0]) {\n if (blend == MixBlend.setup || blend == MixBlend.first)\n this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments);\n }\n else\n this.setAttachment(skeleton, slot, timeline.attachmentNames[Timeline.search1(timeline.frames, time)], attachments);\n if (slot.attachmentState <= this.unkeyedState)\n slot.attachmentState = this.unkeyedState + SETUP;\n };\n AnimationState.prototype.setAttachment = function (skeleton, slot, attachmentName, attachments) {\n slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName));\n if (attachments)\n slot.attachmentState = this.unkeyedState + CURRENT;\n };\n AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) {\n if (firstFrame)\n timelinesRotation[i] = 0;\n if (alpha == 1) {\n timeline.apply(skeleton, 0, time, null, 1, blend, MixDirection.mixIn);\n return;\n }\n var bone = skeleton.bones[timeline.boneIndex];\n if (!bone.active)\n return;\n var frames = timeline.frames;\n var r1 = 0, r2 = 0;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.rotation = bone.data.rotation;\n default:\n return;\n case MixBlend.first:\n r1 = bone.rotation;\n r2 = bone.data.rotation;\n }\n }\n else {\n r1 = blend == MixBlend.setup ? bone.data.rotation : bone.rotation;\n r2 = bone.data.rotation + timeline.getCurveValue(time);\n }\n var total = 0, diff = r2 - r1;\n diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360;\n if (diff == 0) {\n total = timelinesRotation[i];\n }\n else {\n var lastTotal = 0, lastDiff = 0;\n if (firstFrame) {\n lastTotal = 0;\n lastDiff = diff;\n }\n else {\n lastTotal = timelinesRotation[i];\n lastDiff = timelinesRotation[i + 1];\n }\n var current = diff > 0, dir = lastTotal >= 0;\n if (MathUtils.signum(lastDiff) != MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) {\n if (Math.abs(lastTotal) > 180)\n lastTotal += 360 * MathUtils.signum(lastTotal);\n dir = current;\n }\n total = diff + lastTotal - lastTotal % 360;\n if (dir != current)\n total += 360 * MathUtils.signum(lastTotal);\n timelinesRotation[i] = total;\n }\n timelinesRotation[i + 1] = diff;\n bone.rotation = r1 + total * alpha;\n };\n AnimationState.prototype.queueEvents = function (entry, animationTime) {\n var animationStart = entry.animationStart, animationEnd = entry.animationEnd;\n var duration = animationEnd - animationStart;\n var trackLastWrapped = entry.trackLast % duration;\n var events = this.events;\n var i = 0, n = events.length;\n for (; i < n; i++) {\n var event_1 = events[i];\n if (event_1.time < trackLastWrapped)\n break;\n if (event_1.time > animationEnd)\n continue;\n this.queue.event(entry, event_1);\n }\n var complete = false;\n if (entry.loop)\n complete = duration == 0 || trackLastWrapped > entry.trackTime % duration;\n else\n complete = animationTime >= animationEnd && entry.animationLast < animationEnd;\n if (complete)\n this.queue.complete(entry);\n for (; i < n; i++) {\n var event_2 = events[i];\n if (event_2.time < animationStart)\n continue;\n this.queue.event(entry, event_2);\n }\n };\n AnimationState.prototype.clearTracks = function () {\n var oldDrainDisabled = this.queue.drainDisabled;\n this.queue.drainDisabled = true;\n for (var 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 AnimationState.prototype.clearTrack = function (trackIndex) {\n if (trackIndex >= this.tracks.length)\n return;\n var current = this.tracks[trackIndex];\n if (!current)\n return;\n this.queue.end(current);\n this.clearNext(current);\n var entry = current;\n while (true) {\n var from = entry.mixingFrom;\n if (!from)\n break;\n this.queue.end(from);\n entry.mixingFrom = null;\n entry.mixingTo = null;\n entry = from;\n }\n this.tracks[current.trackIndex] = null;\n this.queue.drain();\n };\n AnimationState.prototype.setCurrent = function (index, current, interrupt) {\n var from = this.expandToIndex(index);\n this.tracks[index] = current;\n current.previous = null;\n if (from) {\n if (interrupt)\n this.queue.interrupt(from);\n current.mixingFrom = from;\n from.mixingTo = current;\n current.mixTime = 0;\n if (from.mixingFrom && from.mixDuration > 0)\n current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration);\n from.timelinesRotation.length = 0;\n }\n this.queue.start(current);\n };\n AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) {\n if (loop === void 0) { loop = false; }\n var animation = this.data.skeletonData.findAnimation(animationName);\n if (!animation)\n throw new Error(\"Animation not found: \" + animationName);\n return this.setAnimationWith(trackIndex, animation, loop);\n };\n AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) {\n if (loop === void 0) { loop = false; }\n if (!animation)\n throw new Error(\"animation cannot be null.\");\n var interrupt = true;\n var current = this.expandToIndex(trackIndex);\n if (current) {\n if (current.nextTrackLast == -1) {\n this.tracks[trackIndex] = current.mixingFrom;\n this.queue.interrupt(current);\n this.queue.end(current);\n this.clearNext(current);\n current = current.mixingFrom;\n interrupt = false;\n }\n else\n this.clearNext(current);\n }\n var entry = this.trackEntry(trackIndex, animation, loop, current);\n this.setCurrent(trackIndex, entry, interrupt);\n this.queue.drain();\n return entry;\n };\n AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) {\n if (loop === void 0) { loop = false; }\n if (delay === void 0) { delay = 0; }\n var animation = this.data.skeletonData.findAnimation(animationName);\n if (!animation)\n throw new Error(\"Animation not found: \" + animationName);\n return this.addAnimationWith(trackIndex, animation, loop, delay);\n };\n AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) {\n if (loop === void 0) { loop = false; }\n if (delay === void 0) { delay = 0; }\n if (!animation)\n throw new Error(\"animation cannot be null.\");\n var last = this.expandToIndex(trackIndex);\n if (last) {\n while (last.next)\n last = last.next;\n }\n var entry = this.trackEntry(trackIndex, animation, loop, last);\n if (!last) {\n this.setCurrent(trackIndex, entry, true);\n this.queue.drain();\n }\n else {\n last.next = entry;\n entry.previous = last;\n if (delay <= 0)\n delay += last.getTrackComplete() - entry.mixDuration;\n }\n entry.delay = delay;\n return entry;\n };\n AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) {\n if (mixDuration === void 0) { mixDuration = 0; }\n var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation(), false);\n entry.mixDuration = mixDuration;\n entry.trackEnd = mixDuration;\n return entry;\n };\n AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) {\n if (mixDuration === void 0) { mixDuration = 0; }\n if (delay === void 0) { delay = 0; }\n var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay);\n if (delay <= 0)\n entry.delay += entry.mixDuration - mixDuration;\n entry.mixDuration = mixDuration;\n entry.trackEnd = mixDuration;\n return entry;\n };\n AnimationState.prototype.setEmptyAnimations = function (mixDuration) {\n if (mixDuration === void 0) { mixDuration = 0; }\n var oldDrainDisabled = this.queue.drainDisabled;\n this.queue.drainDisabled = true;\n for (var i = 0, n = this.tracks.length; i < n; i++) {\n var current = this.tracks[i];\n if (current)\n this.setEmptyAnimation(current.trackIndex, mixDuration);\n }\n this.queue.drainDisabled = oldDrainDisabled;\n this.queue.drain();\n };\n AnimationState.prototype.expandToIndex = function (index) {\n if (index < this.tracks.length)\n return this.tracks[index];\n Utils.ensureArrayCapacity(this.tracks, index + 1, null);\n this.tracks.length = index + 1;\n return null;\n };\n AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) {\n var entry = this.trackEntryPool.obtain();\n entry.trackIndex = trackIndex;\n entry.animation = animation;\n entry.loop = loop;\n entry.holdPrevious = false;\n entry.eventThreshold = 0;\n entry.attachmentThreshold = 0;\n entry.drawOrderThreshold = 0;\n entry.animationStart = 0;\n entry.animationEnd = animation.duration;\n entry.animationLast = -1;\n entry.nextAnimationLast = -1;\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 entry.alpha = 1;\n entry.interruptAlpha = 1;\n entry.mixTime = 0;\n entry.mixDuration = !last ? 0 : this.data.getMix(last.animation, animation);\n entry.mixBlend = MixBlend.replace;\n return entry;\n };\n AnimationState.prototype.clearNext = function (entry) {\n var next = entry.next;\n while (next) {\n this.queue.dispose(next);\n next = next.next;\n }\n entry.next = null;\n };\n AnimationState.prototype._animationsChanged = function () {\n this.animationsChanged = false;\n this.propertyIDs.clear();\n var tracks = this.tracks;\n for (var i = 0, n = tracks.length; i < n; i++) {\n var entry = tracks[i];\n if (!entry)\n continue;\n while (entry.mixingFrom)\n entry = entry.mixingFrom;\n do {\n if (!entry.mixingTo || entry.mixBlend != MixBlend.add)\n this.computeHold(entry);\n entry = entry.mixingTo;\n } while (entry);\n }\n };\n AnimationState.prototype.computeHold = function (entry) {\n var to = entry.mixingTo;\n var timelines = entry.animation.timelines;\n var timelinesCount = entry.animation.timelines.length;\n var timelineMode = entry.timelineMode;\n timelineMode.length = timelinesCount;\n var timelineHoldMix = entry.timelineHoldMix;\n timelineHoldMix.length = 0;\n var propertyIDs = this.propertyIDs;\n if (to && to.holdPrevious) {\n for (var i = 0; i < timelinesCount; i++)\n timelineMode[i] = propertyIDs.addAll(timelines[i].getPropertyIds()) ? HOLD_FIRST : HOLD_SUBSEQUENT;\n return;\n }\n outer: for (var i = 0; i < timelinesCount; i++) {\n var timeline = timelines[i];\n var ids = timeline.getPropertyIds();\n if (!propertyIDs.addAll(ids))\n timelineMode[i] = SUBSEQUENT;\n else if (!to || timeline instanceof AttachmentTimeline || timeline instanceof DrawOrderTimeline\n || timeline instanceof EventTimeline || !to.animation.hasTimeline(ids)) {\n timelineMode[i] = FIRST;\n }\n else {\n for (var next = to.mixingTo; next; next = next.mixingTo) {\n if (next.animation.hasTimeline(ids))\n continue;\n if (entry.mixDuration > 0) {\n timelineMode[i] = HOLD_MIX;\n timelineHoldMix[i] = next;\n continue outer;\n }\n break;\n }\n timelineMode[i] = HOLD_FIRST;\n }\n }\n };\n AnimationState.prototype.getCurrent = function (trackIndex) {\n if (trackIndex >= this.tracks.length)\n return null;\n return this.tracks[trackIndex];\n };\n AnimationState.prototype.addListener = function (listener) {\n if (!listener)\n throw new Error(\"listener cannot be null.\");\n this.listeners.push(listener);\n };\n AnimationState.prototype.removeListener = function (listener) {\n var index = this.listeners.indexOf(listener);\n if (index >= 0)\n this.listeners.splice(index, 1);\n };\n AnimationState.prototype.clearListeners = function () {\n this.listeners.length = 0;\n };\n AnimationState.prototype.clearListenerNotifications = function () {\n this.queue.clear();\n };\n return AnimationState;\n}());\nexport { AnimationState };\nvar TrackEntry = (function () {\n function TrackEntry() {\n this.mixBlend = MixBlend.replace;\n this.timelineMode = new Array();\n this.timelineHoldMix = new Array();\n this.timelinesRotation = new Array();\n }\n TrackEntry.prototype.reset = function () {\n this.next = null;\n this.previous = null;\n this.mixingFrom = null;\n this.mixingTo = null;\n this.animation = null;\n this.listener = null;\n this.timelineMode.length = 0;\n this.timelineHoldMix.length = 0;\n this.timelinesRotation.length = 0;\n };\n TrackEntry.prototype.getAnimationTime = function () {\n if (this.loop) {\n var duration = this.animationEnd - this.animationStart;\n if (duration == 0)\n return this.animationStart;\n return (this.trackTime % duration) + this.animationStart;\n }\n return Math.min(this.trackTime + this.animationStart, this.animationEnd);\n };\n TrackEntry.prototype.setAnimationLast = function (animationLast) {\n this.animationLast = animationLast;\n this.nextAnimationLast = animationLast;\n };\n TrackEntry.prototype.isComplete = function () {\n return this.trackTime >= this.animationEnd - this.animationStart;\n };\n TrackEntry.prototype.resetRotationDirections = function () {\n this.timelinesRotation.length = 0;\n };\n TrackEntry.prototype.getTrackComplete = function () {\n var duration = this.animationEnd - this.animationStart;\n if (duration != 0) {\n if (this.loop)\n return duration * (1 + ((this.trackTime / duration) | 0));\n if (this.trackTime < duration)\n return duration;\n }\n return this.trackTime;\n };\n return TrackEntry;\n}());\nexport { TrackEntry };\nvar EventQueue = (function () {\n function EventQueue(animState) {\n this.objects = [];\n this.drainDisabled = false;\n this.animState = animState;\n }\n EventQueue.prototype.start = function (entry) {\n this.objects.push(EventType.start);\n this.objects.push(entry);\n this.animState.animationsChanged = true;\n };\n EventQueue.prototype.interrupt = function (entry) {\n this.objects.push(EventType.interrupt);\n this.objects.push(entry);\n };\n EventQueue.prototype.end = function (entry) {\n this.objects.push(EventType.end);\n this.objects.push(entry);\n this.animState.animationsChanged = true;\n };\n EventQueue.prototype.dispose = function (entry) {\n this.objects.push(EventType.dispose);\n this.objects.push(entry);\n };\n EventQueue.prototype.complete = function (entry) {\n this.objects.push(EventType.complete);\n this.objects.push(entry);\n };\n EventQueue.prototype.event = function (entry, event) {\n this.objects.push(EventType.event);\n this.objects.push(entry);\n this.objects.push(event);\n };\n EventQueue.prototype.drain = function () {\n if (this.drainDisabled)\n return;\n this.drainDisabled = true;\n var objects = this.objects;\n var listeners = this.animState.listeners;\n for (var i = 0; i < objects.length; i += 2) {\n var type = objects[i];\n var entry = objects[i + 1];\n switch (type) {\n case EventType.start:\n if (entry.listener && entry.listener.start)\n entry.listener.start(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].start)\n listeners[ii].start(entry);\n break;\n case EventType.interrupt:\n if (entry.listener && entry.listener.interrupt)\n entry.listener.interrupt(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].interrupt)\n listeners[ii].interrupt(entry);\n break;\n case EventType.end:\n if (entry.listener && entry.listener.end)\n entry.listener.end(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].end)\n listeners[ii].end(entry);\n case EventType.dispose:\n if (entry.listener && entry.listener.dispose)\n entry.listener.dispose(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].dispose)\n listeners[ii].dispose(entry);\n this.animState.trackEntryPool.free(entry);\n break;\n case EventType.complete:\n if (entry.listener && entry.listener.complete)\n entry.listener.complete(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].complete)\n listeners[ii].complete(entry);\n break;\n case EventType.event:\n var event_3 = objects[i++ + 2];\n if (entry.listener && entry.listener.event)\n entry.listener.event(entry, event_3);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].event)\n listeners[ii].event(entry, event_3);\n break;\n }\n }\n this.clear();\n this.drainDisabled = false;\n };\n EventQueue.prototype.clear = function () {\n this.objects.length = 0;\n };\n return EventQueue;\n}());\nexport { EventQueue };\nexport var EventType;\n(function (EventType) {\n EventType[EventType[\"start\"] = 0] = \"start\";\n EventType[EventType[\"interrupt\"] = 1] = \"interrupt\";\n EventType[EventType[\"end\"] = 2] = \"end\";\n EventType[EventType[\"dispose\"] = 3] = \"dispose\";\n EventType[EventType[\"complete\"] = 4] = \"complete\";\n EventType[EventType[\"event\"] = 5] = \"event\";\n})(EventType || (EventType = {}));\nvar AnimationStateAdapter = (function () {\n function AnimationStateAdapter() {\n }\n AnimationStateAdapter.prototype.start = function (entry) {\n };\n AnimationStateAdapter.prototype.interrupt = function (entry) {\n };\n AnimationStateAdapter.prototype.end = function (entry) {\n };\n AnimationStateAdapter.prototype.dispose = function (entry) {\n };\n AnimationStateAdapter.prototype.complete = function (entry) {\n };\n AnimationStateAdapter.prototype.event = function (entry, event) {\n };\n return AnimationStateAdapter;\n}());\nexport { AnimationStateAdapter };\nexport var SUBSEQUENT = 0;\nexport var FIRST = 1;\nexport var HOLD_SUBSEQUENT = 2;\nexport var HOLD_FIRST = 3;\nexport var HOLD_MIX = 4;\nexport var SETUP = 1;\nexport var CURRENT = 2;\nvar _emptyAnimation = null;\n//# sourceMappingURL=AnimationState.js.map","var AnimationStateData = (function () {\n function AnimationStateData(skeletonData) {\n this.animationToMixTime = {};\n this.defaultMix = 0;\n if (!skeletonData)\n throw new Error(\"skeletonData cannot be null.\");\n this.skeletonData = skeletonData;\n }\n AnimationStateData.prototype.setMix = function (fromName, toName, duration) {\n var from = this.skeletonData.findAnimation(fromName);\n if (!from)\n throw new Error(\"Animation not found: \" + fromName);\n var to = this.skeletonData.findAnimation(toName);\n if (!to)\n throw new Error(\"Animation not found: \" + toName);\n this.setMixWith(from, to, duration);\n };\n AnimationStateData.prototype.setMixWith = function (from, to, duration) {\n if (!from)\n throw new Error(\"from cannot be null.\");\n if (!to)\n throw new Error(\"to cannot be null.\");\n var key = from.name + \".\" + to.name;\n this.animationToMixTime[key] = duration;\n };\n AnimationStateData.prototype.getMix = function (from, to) {\n var key = from.name + \".\" + to.name;\n var value = this.animationToMixTime[key];\n return value === undefined ? this.defaultMix : value;\n };\n return AnimationStateData;\n}());\nexport { AnimationStateData };\n//# sourceMappingURL=AnimationStateData.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Texture = (function () {\n function Texture(image) {\n this._image = image;\n }\n Texture.prototype.getImage = function () {\n return this._image;\n };\n return Texture;\n}());\nexport { Texture };\nexport var TextureFilter;\n(function (TextureFilter) {\n TextureFilter[TextureFilter[\"Nearest\"] = 9728] = \"Nearest\";\n TextureFilter[TextureFilter[\"Linear\"] = 9729] = \"Linear\";\n TextureFilter[TextureFilter[\"MipMap\"] = 9987] = \"MipMap\";\n TextureFilter[TextureFilter[\"MipMapNearestNearest\"] = 9984] = \"MipMapNearestNearest\";\n TextureFilter[TextureFilter[\"MipMapLinearNearest\"] = 9985] = \"MipMapLinearNearest\";\n TextureFilter[TextureFilter[\"MipMapNearestLinear\"] = 9986] = \"MipMapNearestLinear\";\n TextureFilter[TextureFilter[\"MipMapLinearLinear\"] = 9987] = \"MipMapLinearLinear\";\n})(TextureFilter || (TextureFilter = {}));\nexport var TextureWrap;\n(function (TextureWrap) {\n TextureWrap[TextureWrap[\"MirroredRepeat\"] = 33648] = \"MirroredRepeat\";\n TextureWrap[TextureWrap[\"ClampToEdge\"] = 33071] = \"ClampToEdge\";\n TextureWrap[TextureWrap[\"Repeat\"] = 10497] = \"Repeat\";\n})(TextureWrap || (TextureWrap = {}));\nvar TextureRegion = (function () {\n function TextureRegion() {\n this.u = 0;\n this.v = 0;\n this.u2 = 0;\n this.v2 = 0;\n this.width = 0;\n this.height = 0;\n this.degrees = 0;\n this.offsetX = 0;\n this.offsetY = 0;\n this.originalWidth = 0;\n this.originalHeight = 0;\n }\n return TextureRegion;\n}());\nexport { TextureRegion };\nvar FakeTexture = (function (_super) {\n __extends(FakeTexture, _super);\n function FakeTexture() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FakeTexture.prototype.setFilters = function (minFilter, magFilter) { };\n FakeTexture.prototype.setWraps = function (uWrap, vWrap) { };\n FakeTexture.prototype.dispose = function () { };\n return FakeTexture;\n}(Texture));\nexport { FakeTexture };\n//# sourceMappingURL=Texture.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { TextureFilter, TextureWrap, TextureRegion } from \"./Texture\";\nimport { Utils } from \"./Utils\";\nvar TextureAtlas = (function () {\n function TextureAtlas(atlasText) {\n this.pages = new Array();\n this.regions = new Array();\n var reader = new TextureAtlasReader(atlasText);\n var entry = new Array(4);\n var page = null;\n var region = null;\n var pageFields = {};\n pageFields[\"size\"] = function () {\n page.width = parseInt(entry[1]);\n page.height = parseInt(entry[2]);\n };\n pageFields[\"format\"] = function () {\n };\n pageFields[\"filter\"] = function () {\n page.minFilter = Utils.enumValue(TextureFilter, entry[1]);\n page.magFilter = Utils.enumValue(TextureFilter, entry[2]);\n };\n pageFields[\"repeat\"] = function () {\n if (entry[1].indexOf('x') != -1)\n page.uWrap = TextureWrap.Repeat;\n if (entry[1].indexOf('y') != -1)\n page.vWrap = TextureWrap.Repeat;\n };\n pageFields[\"pma\"] = function () {\n page.pma = entry[1] == \"true\";\n };\n var regionFields = {};\n regionFields[\"xy\"] = function () {\n region.x = parseInt(entry[1]);\n region.y = parseInt(entry[2]);\n };\n regionFields[\"size\"] = function () {\n region.width = parseInt(entry[1]);\n region.height = parseInt(entry[2]);\n };\n regionFields[\"bounds\"] = function () {\n region.x = parseInt(entry[1]);\n region.y = parseInt(entry[2]);\n region.width = parseInt(entry[3]);\n region.height = parseInt(entry[4]);\n };\n regionFields[\"offset\"] = function () {\n region.offsetX = parseInt(entry[1]);\n region.offsetY = parseInt(entry[2]);\n };\n regionFields[\"orig\"] = function () {\n region.originalWidth = parseInt(entry[1]);\n region.originalHeight = parseInt(entry[2]);\n };\n regionFields[\"offsets\"] = function () {\n region.offsetX = parseInt(entry[1]);\n region.offsetY = parseInt(entry[2]);\n region.originalWidth = parseInt(entry[3]);\n region.originalHeight = parseInt(entry[4]);\n };\n regionFields[\"rotate\"] = function () {\n var value = entry[1];\n if (value == \"true\")\n region.degrees = 90;\n else if (value != \"false\")\n region.degrees = parseInt(value);\n };\n regionFields[\"index\"] = function () {\n region.index = parseInt(entry[1]);\n };\n var line = reader.readLine();\n while (line && line.trim().length == 0)\n line = reader.readLine();\n while (true) {\n if (!line || line.trim().length == 0)\n break;\n if (reader.readEntry(entry, line) == 0)\n break;\n line = reader.readLine();\n }\n var names = null;\n var values = null;\n while (true) {\n if (line === null)\n break;\n if (line.trim().length == 0) {\n page = null;\n line = reader.readLine();\n }\n else if (!page) {\n page = new TextureAtlasPage();\n page.name = line.trim();\n while (true) {\n if (reader.readEntry(entry, line = reader.readLine()) == 0)\n break;\n var field = pageFields[entry[0]];\n if (field)\n field();\n }\n this.pages.push(page);\n }\n else {\n region = new TextureAtlasRegion();\n region.page = page;\n region.name = line;\n while (true) {\n var count = reader.readEntry(entry, line = reader.readLine());\n if (count == 0)\n break;\n var field = regionFields[entry[0]];\n if (field)\n field();\n else {\n if (!names) {\n names = [];\n values = [];\n }\n names.push(entry[0]);\n var entryValues = [];\n for (var i = 0; i < count; i++)\n entryValues.push(parseInt(entry[i + 1]));\n values.push(entryValues);\n }\n }\n if (region.originalWidth == 0 && region.originalHeight == 0) {\n region.originalWidth = region.width;\n region.originalHeight = region.height;\n }\n if (names && names.length > 0) {\n region.names = names;\n region.values = values;\n names = null;\n values = null;\n }\n region.u = region.x / page.width;\n region.v = region.y / page.height;\n if (region.degrees == 90) {\n region.u2 = (region.x + region.height) / page.width;\n region.v2 = (region.y + region.width) / page.height;\n }\n else {\n region.u2 = (region.x + region.width) / page.width;\n region.v2 = (region.y + region.height) / page.height;\n }\n this.regions.push(region);\n }\n }\n }\n TextureAtlas.prototype.findRegion = function (name) {\n for (var 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 TextureAtlas.prototype.setTextures = function (assetManager, pathPrefix) {\n if (pathPrefix === void 0) { pathPrefix = \"\"; }\n for (var _i = 0, _a = this.pages; _i < _a.length; _i++) {\n var page = _a[_i];\n page.setTexture(assetManager.get(pathPrefix + page.name));\n }\n };\n TextureAtlas.prototype.dispose = function () {\n for (var i = 0; i < this.pages.length; i++) {\n this.pages[i].texture.dispose();\n }\n };\n return TextureAtlas;\n}());\nexport { TextureAtlas };\nvar TextureAtlasReader = (function () {\n function TextureAtlasReader(text) {\n this.index = 0;\n this.lines = text.split(/\\r\\n|\\r|\\n/);\n }\n TextureAtlasReader.prototype.readLine = function () {\n if (this.index >= this.lines.length)\n return null;\n return this.lines[this.index++];\n };\n TextureAtlasReader.prototype.readEntry = function (entry, line) {\n if (!line)\n return 0;\n line = line.trim();\n if (line.length == 0)\n return 0;\n var colon = line.indexOf(':');\n if (colon == -1)\n return 0;\n entry[0] = line.substr(0, colon).trim();\n for (var i = 1, lastMatch = colon + 1;; i++) {\n var comma = line.indexOf(',', lastMatch);\n if (comma == -1) {\n entry[i] = line.substr(lastMatch).trim();\n return i;\n }\n entry[i] = line.substr(lastMatch, comma - lastMatch).trim();\n lastMatch = comma + 1;\n if (i == 4)\n return 4;\n }\n };\n return TextureAtlasReader;\n}());\nvar TextureAtlasPage = (function () {\n function TextureAtlasPage() {\n this.minFilter = TextureFilter.Nearest;\n this.magFilter = TextureFilter.Nearest;\n this.uWrap = TextureWrap.ClampToEdge;\n this.vWrap = TextureWrap.ClampToEdge;\n }\n TextureAtlasPage.prototype.setTexture = function (texture) {\n this.texture = texture;\n texture.setFilters(this.minFilter, this.magFilter);\n texture.setWraps(this.uWrap, this.vWrap);\n };\n return TextureAtlasPage;\n}());\nexport { TextureAtlasPage };\nvar TextureAtlasRegion = (function (_super) {\n __extends(TextureAtlasRegion, _super);\n function TextureAtlasRegion() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return TextureAtlasRegion;\n}(TextureRegion));\nexport { TextureAtlasRegion };\n//# sourceMappingURL=TextureAtlas.js.map","import { TextureAtlas } from \"./TextureAtlas\";\nvar AssetManager = (function () {\n function AssetManager(textureLoader, pathPrefix, downloader) {\n if (pathPrefix === void 0) { pathPrefix = \"\"; }\n if (downloader === void 0) { downloader = null; }\n this.assets = {};\n this.errors = {};\n this.toLoad = 0;\n this.loaded = 0;\n this.textureLoader = textureLoader;\n this.pathPrefix = pathPrefix;\n this.downloader = downloader || new Downloader();\n }\n AssetManager.prototype.start = function (path) {\n this.toLoad++;\n return this.pathPrefix + path;\n };\n AssetManager.prototype.success = function (callback, path, asset) {\n this.toLoad--;\n this.loaded++;\n this.assets[path] = asset;\n if (callback)\n callback(path, asset);\n };\n AssetManager.prototype.error = function (callback, path, message) {\n this.toLoad--;\n this.loaded++;\n this.errors[path] = message;\n if (callback)\n callback(path, message);\n };\n AssetManager.prototype.setRawDataURI = function (path, data) {\n this.downloader.rawDataUris[this.pathPrefix + path] = data;\n };\n AssetManager.prototype.loadBinary = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n this.downloader.downloadBinary(path, function (data) {\n _this.success(success, path, data);\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load binary \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManager.prototype.loadText = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n this.downloader.downloadText(path, function (data) {\n _this.success(success, path, data);\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load text \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManager.prototype.loadJson = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n this.downloader.downloadJson(path, function (data) {\n _this.success(success, path, data);\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load JSON \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManager.prototype.loadTexture = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document);\n var isWebWorker = !isBrowser;\n if (isWebWorker) {\n fetch(path, { mode: \"cors\" }).then(function (response) {\n if (response.ok)\n return response.blob();\n _this.error(error, path, \"Couldn't load image: \" + path);\n return null;\n }).then(function (blob) {\n return blob ? createImageBitmap(blob, { premultiplyAlpha: \"none\", colorSpaceConversion: \"none\" }) : null;\n }).then(function (bitmap) {\n if (bitmap)\n _this.success(success, path, _this.textureLoader(bitmap));\n });\n }\n else {\n var image_1 = new Image();\n image_1.crossOrigin = \"anonymous\";\n image_1.onload = function () {\n _this.success(success, path, _this.textureLoader(image_1));\n };\n image_1.onerror = function () {\n _this.error(error, path, \"Couldn't load image: \" + path);\n };\n if (this.downloader.rawDataUris[path])\n path = this.downloader.rawDataUris[path];\n image_1.src = path;\n }\n };\n AssetManager.prototype.loadTextureAtlas = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n var index = path.lastIndexOf(\"/\");\n var parent = index >= 0 ? path.substring(0, index + 1) : \"\";\n path = this.start(path);\n this.downloader.downloadText(path, function (atlasText) {\n try {\n var atlas_1 = new TextureAtlas(atlasText);\n var toLoad_1 = atlas_1.pages.length, abort_1 = false;\n var _loop_1 = function (page) {\n _this.loadTexture(parent + page.name, function (imagePath, texture) {\n if (!abort_1) {\n page.setTexture(texture);\n if (--toLoad_1 == 0)\n _this.success(success, path, atlas_1);\n }\n }, function (imagePath, message) {\n if (!abort_1)\n _this.error(error, path, \"Couldn't load texture atlas \" + path + \" page image: \" + imagePath);\n abort_1 = true;\n });\n };\n for (var _i = 0, _a = atlas_1.pages; _i < _a.length; _i++) {\n var page = _a[_i];\n _loop_1(page);\n }\n }\n catch (e) {\n _this.error(error, path, \"Couldn't parse texture atlas \" + path + \": \" + e.message);\n }\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load texture atlas \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManager.prototype.get = function (path) {\n return this.assets[this.pathPrefix + path];\n };\n AssetManager.prototype.require = function (path) {\n path = this.pathPrefix + path;\n var asset = this.assets[path];\n if (asset)\n return asset;\n var error = this.errors[path];\n throw Error(\"Asset not found: \" + path + (error ? \"\\n\" + error : \"\"));\n };\n AssetManager.prototype.remove = function (path) {\n path = this.pathPrefix + path;\n var asset = this.assets[path];\n if (asset.dispose)\n asset.dispose();\n delete this.assets[path];\n return asset;\n };\n AssetManager.prototype.removeAll = function () {\n for (var key in this.assets) {\n var asset = this.assets[key];\n if (asset.dispose)\n asset.dispose();\n }\n this.assets = {};\n };\n AssetManager.prototype.isLoadingComplete = function () {\n return this.toLoad == 0;\n };\n AssetManager.prototype.getToLoad = function () {\n return this.toLoad;\n };\n AssetManager.prototype.getLoaded = function () {\n return this.loaded;\n };\n AssetManager.prototype.dispose = function () {\n this.removeAll();\n };\n AssetManager.prototype.hasErrors = function () {\n return Object.keys(this.errors).length > 0;\n };\n AssetManager.prototype.getErrors = function () {\n return this.errors;\n };\n return AssetManager;\n}());\nexport { AssetManager };\nvar Downloader = (function () {\n function Downloader() {\n this.callbacks = {};\n this.rawDataUris = {};\n }\n Downloader.prototype.downloadText = function (url, success, error) {\n var _this = this;\n if (this.rawDataUris[url])\n url = this.rawDataUris[url];\n if (this.start(url, success, error))\n return;\n var request = new XMLHttpRequest();\n request.overrideMimeType(\"text/html\");\n request.open(\"GET\", url, true);\n var done = function () {\n _this.finish(url, request.status, request.responseText);\n };\n request.onload = done;\n request.onerror = done;\n request.send();\n };\n Downloader.prototype.downloadJson = function (url, success, error) {\n this.downloadText(url, function (data) {\n success(JSON.parse(data));\n }, error);\n };\n Downloader.prototype.downloadBinary = function (url, success, error) {\n var _this = this;\n if (this.rawDataUris[url])\n url = this.rawDataUris[url];\n if (this.start(url, success, error))\n return;\n var request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = \"arraybuffer\";\n var onerror = function () {\n _this.finish(url, request.status, request.responseText);\n };\n request.onload = function () {\n if (request.status == 200)\n _this.finish(url, 200, new Uint8Array(request.response));\n else\n onerror();\n };\n request.onerror = onerror;\n request.send();\n };\n Downloader.prototype.start = function (url, success, error) {\n var callbacks = this.callbacks[url];\n try {\n if (callbacks)\n return true;\n this.callbacks[url] = callbacks = [];\n }\n finally {\n callbacks.push(success, error);\n }\n };\n Downloader.prototype.finish = function (url, status, data) {\n var callbacks = this.callbacks[url];\n delete this.callbacks[url];\n var args = status == 200 ? [data] : [status, data];\n for (var i = args.length - 1, n = callbacks.length; i < n; i += 2)\n callbacks[i].apply(null, args);\n };\n return Downloader;\n}());\nexport { Downloader };\n//# sourceMappingURL=AssetManager.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\nvar BoundingBoxAttachment = (function (_super) {\n __extends(BoundingBoxAttachment, _super);\n function BoundingBoxAttachment(name) {\n var _this = _super.call(this, name) || this;\n _this.color = new Color(1, 1, 1, 1);\n return _this;\n }\n BoundingBoxAttachment.prototype.copy = function () {\n var copy = new BoundingBoxAttachment(this.name);\n this.copyTo(copy);\n copy.color.setFromColor(this.color);\n return copy;\n };\n return BoundingBoxAttachment;\n}(VertexAttachment));\nexport { BoundingBoxAttachment };\n//# sourceMappingURL=BoundingBoxAttachment.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\nvar ClippingAttachment = (function (_super) {\n __extends(ClippingAttachment, _super);\n function ClippingAttachment(name) {\n var _this = _super.call(this, name) || this;\n _this.color = new Color(0.2275, 0.2275, 0.8078, 1);\n return _this;\n }\n ClippingAttachment.prototype.copy = function () {\n var copy = new ClippingAttachment(this.name);\n this.copyTo(copy);\n copy.endSlot = this.endSlot;\n copy.color.setFromColor(this.color);\n return copy;\n };\n return ClippingAttachment;\n}(VertexAttachment));\nexport { ClippingAttachment };\n//# sourceMappingURL=ClippingAttachment.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { TextureAtlasRegion } from \"../TextureAtlas\";\nimport { Color, Utils } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\nvar MeshAttachment = (function (_super) {\n __extends(MeshAttachment, _super);\n function MeshAttachment(name) {\n var _this = _super.call(this, name) || this;\n _this.color = new Color(1, 1, 1, 1);\n _this.tempColor = new Color(0, 0, 0, 0);\n return _this;\n }\n MeshAttachment.prototype.updateUVs = function () {\n var regionUVs = this.regionUVs;\n if (!this.uvs || this.uvs.length != regionUVs.length)\n this.uvs = Utils.newFloatArray(regionUVs.length);\n var uvs = this.uvs;\n var n = this.uvs.length;\n var u = this.region.u, v = this.region.v, width = 0, height = 0;\n if (this.region instanceof TextureAtlasRegion) {\n var region = this.region, image = region.page.texture.getImage();\n var textureWidth = image.width, textureHeight = image.height;\n switch (region.degrees) {\n case 90:\n u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;\n v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;\n width = region.originalHeight / textureWidth;\n height = region.originalWidth / textureHeight;\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + regionUVs[i + 1] * width;\n uvs[i + 1] = v + (1 - regionUVs[i]) * height;\n }\n return;\n case 180:\n u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;\n v -= region.offsetY / textureHeight;\n width = region.originalWidth / textureWidth;\n height = region.originalHeight / textureHeight;\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + (1 - regionUVs[i]) * width;\n uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;\n }\n return;\n case 270:\n u -= region.offsetY / textureWidth;\n v -= region.offsetX / textureHeight;\n width = region.originalHeight / textureWidth;\n height = region.originalWidth / textureHeight;\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + (1 - regionUVs[i + 1]) * width;\n uvs[i + 1] = v + regionUVs[i] * height;\n }\n return;\n }\n u -= region.offsetX / textureWidth;\n v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;\n width = region.originalWidth / textureWidth;\n height = region.originalHeight / textureHeight;\n }\n else if (!this.region) {\n u = v = 0;\n width = height = 1;\n }\n else {\n width = this.region.u2 - u;\n height = this.region.v2 - v;\n }\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + regionUVs[i] * width;\n uvs[i + 1] = v + regionUVs[i + 1] * height;\n }\n };\n MeshAttachment.prototype.getParentMesh = function () {\n return this.parentMesh;\n };\n MeshAttachment.prototype.setParentMesh = function (parentMesh) {\n this.parentMesh = parentMesh;\n if (parentMesh) {\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 MeshAttachment.prototype.copy = function () {\n if (this.parentMesh)\n return this.newLinkedMesh();\n var copy = new MeshAttachment(this.name);\n copy.region = this.region;\n copy.path = this.path;\n copy.color.setFromColor(this.color);\n this.copyTo(copy);\n copy.regionUVs = new Array(this.regionUVs.length);\n Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length);\n copy.uvs = new Array(this.uvs.length);\n Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length);\n copy.triangles = new Array(this.triangles.length);\n Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length);\n copy.hullLength = this.hullLength;\n if (this.edges) {\n copy.edges = new Array(this.edges.length);\n Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length);\n }\n copy.width = this.width;\n copy.height = this.height;\n return copy;\n };\n MeshAttachment.prototype.newLinkedMesh = function () {\n var copy = new MeshAttachment(this.name);\n copy.region = this.region;\n copy.path = this.path;\n copy.color.setFromColor(this.color);\n copy.deformAttachment = this.deformAttachment;\n copy.setParentMesh(this.parentMesh ? this.parentMesh : this);\n copy.updateUVs();\n return copy;\n };\n return MeshAttachment;\n}(VertexAttachment));\nexport { MeshAttachment };\n//# sourceMappingURL=MeshAttachment.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color, Utils } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\nvar PathAttachment = (function (_super) {\n __extends(PathAttachment, _super);\n function PathAttachment(name) {\n var _this = _super.call(this, name) || this;\n _this.closed = false;\n _this.constantSpeed = false;\n _this.color = new Color(1, 1, 1, 1);\n return _this;\n }\n PathAttachment.prototype.copy = function () {\n var copy = new PathAttachment(this.name);\n this.copyTo(copy);\n copy.lengths = new Array(this.lengths.length);\n Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length);\n copy.closed = closed;\n copy.constantSpeed = this.constantSpeed;\n copy.color.setFromColor(this.color);\n return copy;\n };\n return PathAttachment;\n}(VertexAttachment));\nexport { PathAttachment };\n//# sourceMappingURL=PathAttachment.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color, MathUtils } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\nvar PointAttachment = (function (_super) {\n __extends(PointAttachment, _super);\n function PointAttachment(name) {\n var _this = _super.call(this, name) || this;\n _this.color = new Color(0.38, 0.94, 0, 1);\n return _this;\n }\n PointAttachment.prototype.computeWorldPosition = function (bone, point) {\n point.x = this.x * bone.a + this.y * bone.b + bone.worldX;\n point.y = this.x * bone.c + this.y * bone.d + bone.worldY;\n return point;\n };\n PointAttachment.prototype.computeWorldRotation = function (bone) {\n var cos = MathUtils.cosDeg(this.rotation), sin = MathUtils.sinDeg(this.rotation);\n var x = cos * bone.a + sin * bone.b;\n var y = cos * bone.c + sin * bone.d;\n return Math.atan2(y, x) * MathUtils.radDeg;\n };\n PointAttachment.prototype.copy = function () {\n var copy = new PointAttachment(this.name);\n copy.x = this.x;\n copy.y = this.y;\n copy.rotation = this.rotation;\n copy.color.setFromColor(this.color);\n return copy;\n };\n return PointAttachment;\n}(VertexAttachment));\nexport { PointAttachment };\n//# sourceMappingURL=PointAttachment.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color, Utils } from \"../Utils\";\nimport { Attachment } from \"./Attachment\";\nvar RegionAttachment = (function (_super) {\n __extends(RegionAttachment, _super);\n function RegionAttachment(name) {\n var _this = _super.call(this, name) || this;\n _this.x = 0;\n _this.y = 0;\n _this.scaleX = 1;\n _this.scaleY = 1;\n _this.rotation = 0;\n _this.width = 0;\n _this.height = 0;\n _this.color = new Color(1, 1, 1, 1);\n _this.offset = Utils.newFloatArray(8);\n _this.uvs = Utils.newFloatArray(8);\n _this.tempColor = new Color(1, 1, 1, 1);\n return _this;\n }\n RegionAttachment.prototype.updateOffset = function () {\n var region = this.region;\n var regionScaleX = this.width / this.region.originalWidth * this.scaleX;\n var regionScaleY = this.height / this.region.originalHeight * this.scaleY;\n var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX;\n var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY;\n var localX2 = localX + this.region.width * regionScaleX;\n var localY2 = localY + this.region.height * regionScaleY;\n var radians = this.rotation * Math.PI / 180;\n var cos = Math.cos(radians);\n var sin = Math.sin(radians);\n var x = this.x, y = this.y;\n var localXCos = localX * cos + x;\n var localXSin = localX * sin;\n var localYCos = localY * cos + y;\n var localYSin = localY * sin;\n var localX2Cos = localX2 * cos + x;\n var localX2Sin = localX2 * sin;\n var localY2Cos = localY2 * cos + y;\n var localY2Sin = localY2 * sin;\n var offset = this.offset;\n offset[0] = localXCos - localYSin;\n offset[1] = localYCos + localXSin;\n offset[2] = localXCos - localY2Sin;\n offset[3] = localY2Cos + localXSin;\n offset[4] = localX2Cos - localY2Sin;\n offset[5] = localY2Cos + localX2Sin;\n offset[6] = localX2Cos - localYSin;\n offset[7] = localYCos + localX2Sin;\n };\n RegionAttachment.prototype.setRegion = function (region) {\n this.region = region;\n var uvs = this.uvs;\n if (region.degrees == 90) {\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 }\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 RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) {\n var vertexOffset = this.offset;\n var x = bone.worldX, y = bone.worldY;\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n var offsetX = 0, offsetY = 0;\n offsetX = vertexOffset[0];\n offsetY = vertexOffset[1];\n worldVertices[offset] = offsetX * a + offsetY * b + x;\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n offsetX = vertexOffset[2];\n offsetY = vertexOffset[3];\n worldVertices[offset] = offsetX * a + offsetY * b + x;\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n offsetX = vertexOffset[4];\n offsetY = vertexOffset[5];\n worldVertices[offset] = offsetX * a + offsetY * b + x;\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n offsetX = vertexOffset[6];\n offsetY = vertexOffset[7];\n worldVertices[offset] = offsetX * a + offsetY * b + x;\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n };\n RegionAttachment.prototype.copy = function () {\n var copy = new RegionAttachment(this.name);\n copy.region = this.region;\n copy.rendererObject = this.rendererObject;\n copy.path = this.path;\n copy.x = this.x;\n copy.y = this.y;\n copy.scaleX = this.scaleX;\n copy.scaleY = this.scaleY;\n copy.rotation = this.rotation;\n copy.width = this.width;\n copy.height = this.height;\n Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8);\n Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8);\n copy.color.setFromColor(this.color);\n return copy;\n };\n RegionAttachment.X1 = 0;\n RegionAttachment.Y1 = 1;\n RegionAttachment.C1R = 2;\n RegionAttachment.C1G = 3;\n RegionAttachment.C1B = 4;\n RegionAttachment.C1A = 5;\n RegionAttachment.U1 = 6;\n RegionAttachment.V1 = 7;\n RegionAttachment.X2 = 8;\n RegionAttachment.Y2 = 9;\n RegionAttachment.C2R = 10;\n RegionAttachment.C2G = 11;\n RegionAttachment.C2B = 12;\n RegionAttachment.C2A = 13;\n RegionAttachment.U2 = 14;\n RegionAttachment.V2 = 15;\n RegionAttachment.X3 = 16;\n RegionAttachment.Y3 = 17;\n RegionAttachment.C3R = 18;\n RegionAttachment.C3G = 19;\n RegionAttachment.C3B = 20;\n RegionAttachment.C3A = 21;\n RegionAttachment.U3 = 22;\n RegionAttachment.V3 = 23;\n RegionAttachment.X4 = 24;\n RegionAttachment.Y4 = 25;\n RegionAttachment.C4R = 26;\n RegionAttachment.C4G = 27;\n RegionAttachment.C4B = 28;\n RegionAttachment.C4A = 29;\n RegionAttachment.U4 = 30;\n RegionAttachment.V4 = 31;\n return RegionAttachment;\n}(Attachment));\nexport { RegionAttachment };\n//# sourceMappingURL=RegionAttachment.js.map","import { BoundingBoxAttachment } from \"./attachments/BoundingBoxAttachment\";\nimport { ClippingAttachment } from \"./attachments/ClippingAttachment\";\nimport { MeshAttachment } from \"./attachments/MeshAttachment\";\nimport { PathAttachment } from \"./attachments/PathAttachment\";\nimport { PointAttachment } from \"./attachments/PointAttachment\";\nimport { RegionAttachment } from \"./attachments/RegionAttachment\";\nvar AtlasAttachmentLoader = (function () {\n function AtlasAttachmentLoader(atlas) {\n this.atlas = atlas;\n }\n AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) {\n var region = this.atlas.findRegion(path);\n if (!region)\n throw new Error(\"Region not found in atlas: \" + path + \" (region attachment: \" + name + \")\");\n region.renderObject = region;\n var attachment = new RegionAttachment(name);\n attachment.setRegion(region);\n return attachment;\n };\n AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) {\n var region = this.atlas.findRegion(path);\n if (!region)\n throw new Error(\"Region not found in atlas: \" + path + \" (mesh attachment: \" + name + \")\");\n region.renderObject = region;\n var attachment = new MeshAttachment(name);\n attachment.region = region;\n return attachment;\n };\n AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) {\n return new BoundingBoxAttachment(name);\n };\n AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) {\n return new PathAttachment(name);\n };\n AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) {\n return new PointAttachment(name);\n };\n AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) {\n return new ClippingAttachment(name);\n };\n return AtlasAttachmentLoader;\n}());\nexport { AtlasAttachmentLoader };\n//# sourceMappingURL=AtlasAttachmentLoader.js.map","import { Color } from \"./Utils\";\nvar BoneData = (function () {\n function BoneData(index, name, parent) {\n this.x = 0;\n this.y = 0;\n this.rotation = 0;\n this.scaleX = 1;\n this.scaleY = 1;\n this.shearX = 0;\n this.shearY = 0;\n this.transformMode = TransformMode.Normal;\n this.skinRequired = false;\n this.color = new Color();\n if (index < 0)\n throw new Error(\"index must be >= 0.\");\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.index = index;\n this.name = name;\n this.parent = parent;\n }\n return BoneData;\n}());\nexport { BoneData };\nexport var TransformMode;\n(function (TransformMode) {\n TransformMode[TransformMode[\"Normal\"] = 0] = \"Normal\";\n TransformMode[TransformMode[\"OnlyTranslation\"] = 1] = \"OnlyTranslation\";\n TransformMode[TransformMode[\"NoRotationOrReflection\"] = 2] = \"NoRotationOrReflection\";\n TransformMode[TransformMode[\"NoScale\"] = 3] = \"NoScale\";\n TransformMode[TransformMode[\"NoScaleOrReflection\"] = 4] = \"NoScaleOrReflection\";\n})(TransformMode || (TransformMode = {}));\n//# sourceMappingURL=BoneData.js.map","import { TransformMode } from \"./BoneData\";\nimport { MathUtils } from \"./Utils\";\nvar Bone = (function () {\n function Bone(data, skeleton, parent) {\n this.children = new Array();\n this.x = 0;\n this.y = 0;\n this.rotation = 0;\n this.scaleX = 0;\n this.scaleY = 0;\n this.shearX = 0;\n this.shearY = 0;\n this.ax = 0;\n this.ay = 0;\n this.arotation = 0;\n this.ascaleX = 0;\n this.ascaleY = 0;\n this.ashearX = 0;\n this.ashearY = 0;\n this.a = 0;\n this.b = 0;\n this.c = 0;\n this.d = 0;\n this.worldY = 0;\n this.worldX = 0;\n this.sorted = false;\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.skeleton = skeleton;\n this.parent = parent;\n this.setToSetupPose();\n }\n Bone.prototype.isActive = function () {\n return this.active;\n };\n Bone.prototype.update = function () {\n this.updateWorldTransformWith(this.ax, this.ay, this.arotation, this.ascaleX, this.ascaleY, this.ashearX, this.ashearY);\n };\n Bone.prototype.updateWorldTransform = function () {\n this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY);\n };\n Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) {\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 var parent = this.parent;\n if (!parent) {\n var skeleton = this.skeleton;\n var rotationY = rotation + 90 + shearY;\n var sx = skeleton.scaleX;\n var sy = skeleton.scaleY;\n this.a = MathUtils.cosDeg(rotation + shearX) * scaleX * sx;\n this.b = MathUtils.cosDeg(rotationY) * scaleY * sx;\n this.c = MathUtils.sinDeg(rotation + shearX) * scaleX * sy;\n this.d = MathUtils.sinDeg(rotationY) * scaleY * sy;\n this.worldX = x * sx + skeleton.x;\n this.worldY = y * sy + skeleton.y;\n return;\n }\n var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d;\n this.worldX = pa * x + pb * y + parent.worldX;\n this.worldY = pc * x + pd * y + parent.worldY;\n switch (this.data.transformMode) {\n case TransformMode.Normal: {\n var rotationY = rotation + 90 + shearY;\n var la = MathUtils.cosDeg(rotation + shearX) * scaleX;\n var lb = MathUtils.cosDeg(rotationY) * scaleY;\n var lc = MathUtils.sinDeg(rotation + shearX) * scaleX;\n var ld = MathUtils.sinDeg(rotationY) * scaleY;\n this.a = pa * la + pb * lc;\n this.b = pa * lb + pb * ld;\n this.c = pc * la + pd * lc;\n this.d = pc * lb + pd * ld;\n return;\n }\n case TransformMode.OnlyTranslation: {\n var rotationY = rotation + 90 + shearY;\n this.a = MathUtils.cosDeg(rotation + shearX) * scaleX;\n this.b = MathUtils.cosDeg(rotationY) * scaleY;\n this.c = MathUtils.sinDeg(rotation + shearX) * scaleX;\n this.d = MathUtils.sinDeg(rotationY) * scaleY;\n break;\n }\n case TransformMode.NoRotationOrReflection: {\n var s = pa * pa + pc * pc;\n var prx = 0;\n if (s > 0.0001) {\n s = Math.abs(pa * pd - pb * pc) / s;\n pa /= this.skeleton.scaleX;\n pc /= this.skeleton.scaleY;\n pb = pc * s;\n pd = pa * s;\n prx = Math.atan2(pc, pa) * MathUtils.radDeg;\n }\n else {\n pa = 0;\n pc = 0;\n prx = 90 - Math.atan2(pd, pb) * MathUtils.radDeg;\n }\n var rx = rotation + shearX - prx;\n var ry = rotation + shearY - prx + 90;\n var la = MathUtils.cosDeg(rx) * scaleX;\n var lb = MathUtils.cosDeg(ry) * scaleY;\n var lc = MathUtils.sinDeg(rx) * scaleX;\n var ld = MathUtils.sinDeg(ry) * scaleY;\n this.a = pa * la - pb * lc;\n this.b = pa * lb - pb * ld;\n this.c = pc * la + pd * lc;\n this.d = pc * lb + pd * ld;\n break;\n }\n case TransformMode.NoScale:\n case TransformMode.NoScaleOrReflection: {\n var cos = MathUtils.cosDeg(rotation);\n var sin = MathUtils.sinDeg(rotation);\n var za = (pa * cos + pb * sin) / this.skeleton.scaleX;\n var zc = (pc * cos + pd * sin) / this.skeleton.scaleY;\n var s = Math.sqrt(za * za + zc * zc);\n if (s > 0.00001)\n s = 1 / s;\n za *= s;\n zc *= s;\n s = Math.sqrt(za * za + zc * zc);\n if (this.data.transformMode == TransformMode.NoScale\n && (pa * pd - pb * pc < 0) != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0))\n s = -s;\n var r = Math.PI / 2 + Math.atan2(zc, za);\n var zb = Math.cos(r) * s;\n var zd = Math.sin(r) * s;\n var la = MathUtils.cosDeg(shearX) * scaleX;\n var lb = MathUtils.cosDeg(90 + shearY) * scaleY;\n var lc = MathUtils.sinDeg(shearX) * scaleX;\n var ld = MathUtils.sinDeg(90 + shearY) * scaleY;\n this.a = za * la + zb * lc;\n this.b = za * lb + zb * ld;\n this.c = zc * la + zd * lc;\n this.d = zc * lb + zd * ld;\n break;\n }\n }\n this.a *= this.skeleton.scaleX;\n this.b *= this.skeleton.scaleX;\n this.c *= this.skeleton.scaleY;\n this.d *= this.skeleton.scaleY;\n };\n Bone.prototype.setToSetupPose = function () {\n var 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 Bone.prototype.getWorldRotationX = function () {\n return Math.atan2(this.c, this.a) * MathUtils.radDeg;\n };\n Bone.prototype.getWorldRotationY = function () {\n return Math.atan2(this.d, this.b) * MathUtils.radDeg;\n };\n Bone.prototype.getWorldScaleX = function () {\n return Math.sqrt(this.a * this.a + this.c * this.c);\n };\n Bone.prototype.getWorldScaleY = function () {\n return Math.sqrt(this.b * this.b + this.d * this.d);\n };\n Bone.prototype.updateAppliedTransform = function () {\n var parent = this.parent;\n if (!parent) {\n this.ax = this.worldX;\n this.ay = this.worldY;\n this.arotation = Math.atan2(this.c, this.a) * MathUtils.radDeg;\n this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c);\n this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d);\n this.ashearX = 0;\n this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * MathUtils.radDeg;\n return;\n }\n var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d;\n var pid = 1 / (pa * pd - pb * pc);\n var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY;\n this.ax = (dx * pd * pid - dy * pb * pid);\n this.ay = (dy * pa * pid - dx * pc * pid);\n var ia = pid * pd;\n var id = pid * pa;\n var ib = pid * pb;\n var ic = pid * pc;\n var ra = ia * this.a - ib * this.c;\n var rb = ia * this.b - ib * this.d;\n var rc = id * this.c - ic * this.a;\n var rd = id * this.d - ic * this.b;\n this.ashearX = 0;\n this.ascaleX = Math.sqrt(ra * ra + rc * rc);\n if (this.ascaleX > 0.0001) {\n var 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 }\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 Bone.prototype.worldToLocal = function (world) {\n var invDet = 1 / (this.a * this.d - this.b * this.c);\n var x = world.x - this.worldX, y = world.y - this.worldY;\n world.x = x * this.d * invDet - y * this.b * invDet;\n world.y = y * this.a * invDet - x * this.c * invDet;\n return world;\n };\n Bone.prototype.localToWorld = function (local) {\n var x = local.x, y = local.y;\n local.x = x * this.a + y * this.b + this.worldX;\n local.y = x * this.c + y * this.d + this.worldY;\n return local;\n };\n Bone.prototype.worldToLocalRotation = function (worldRotation) {\n var sin = MathUtils.sinDeg(worldRotation), cos = MathUtils.cosDeg(worldRotation);\n return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * MathUtils.radDeg + this.rotation - this.shearX;\n };\n Bone.prototype.localToWorldRotation = function (localRotation) {\n localRotation -= this.rotation - this.shearX;\n var sin = MathUtils.sinDeg(localRotation), cos = MathUtils.cosDeg(localRotation);\n return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * MathUtils.radDeg;\n };\n Bone.prototype.rotateWorld = function (degrees) {\n var a = this.a, b = this.b, c = this.c, d = this.d;\n var cos = MathUtils.cosDeg(degrees), sin = MathUtils.sinDeg(degrees);\n this.a = cos * a - sin * c;\n this.b = cos * b - sin * d;\n this.c = sin * a + cos * c;\n this.d = sin * b + cos * d;\n };\n return Bone;\n}());\nexport { Bone };\n//# sourceMappingURL=Bone.js.map","var ConstraintData = (function () {\n function ConstraintData(name, order, skinRequired) {\n this.name = name;\n this.order = order;\n this.skinRequired = skinRequired;\n }\n return ConstraintData;\n}());\nexport { ConstraintData };\n//# sourceMappingURL=ConstraintData.js.map","var Event = (function () {\n function Event(time, data) {\n if (!data)\n throw new Error(\"data cannot be null.\");\n this.time = time;\n this.data = data;\n }\n return Event;\n}());\nexport { Event };\n//# sourceMappingURL=Event.js.map","var EventData = (function () {\n function EventData(name) {\n this.name = name;\n }\n return EventData;\n}());\nexport { EventData };\n//# sourceMappingURL=EventData.js.map","import { TransformMode } from \"./BoneData\";\nimport { MathUtils } from \"./Utils\";\nvar IkConstraint = (function () {\n function IkConstraint(data, skeleton) {\n this.bendDirection = 0;\n this.compress = false;\n this.stretch = false;\n this.mix = 1;\n this.softness = 0;\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.mix = data.mix;\n this.softness = data.softness;\n this.bendDirection = data.bendDirection;\n this.compress = data.compress;\n this.stretch = data.stretch;\n this.bones = new Array();\n for (var 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 IkConstraint.prototype.isActive = function () {\n return this.active;\n };\n IkConstraint.prototype.update = function () {\n if (this.mix == 0)\n return;\n var target = this.target;\n var bones = this.bones;\n switch (bones.length) {\n case 1:\n this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix);\n break;\n case 2:\n this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.data.uniform, this.softness, this.mix);\n break;\n }\n };\n IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) {\n var p = bone.parent;\n var pa = p.a, pb = p.b, pc = p.c, pd = p.d;\n var rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0;\n switch (bone.data.transformMode) {\n case TransformMode.OnlyTranslation:\n tx = targetX - bone.worldX;\n ty = targetY - bone.worldY;\n break;\n case TransformMode.NoRotationOrReflection:\n var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);\n var sa = pa / bone.skeleton.scaleX;\n var sc = pc / bone.skeleton.scaleY;\n pb = -sc * s * bone.skeleton.scaleX;\n pd = sa * s * bone.skeleton.scaleY;\n rotationIK += Math.atan2(sc, sa) * MathUtils.radDeg;\n default:\n var x = targetX - p.worldX, y = targetY - p.worldY;\n var d = pa * pd - pb * pc;\n tx = (x * pd - y * pb) / d - bone.ax;\n ty = (y * pa - x * pc) / d - bone.ay;\n }\n rotationIK += Math.atan2(ty, tx) * MathUtils.radDeg;\n if (bone.ascaleX < 0)\n rotationIK += 180;\n if (rotationIK > 180)\n rotationIK -= 360;\n else if (rotationIK < -180)\n rotationIK += 360;\n var sx = bone.ascaleX, sy = bone.ascaleY;\n if (compress || stretch) {\n switch (bone.data.transformMode) {\n case TransformMode.NoScale:\n case TransformMode.NoScaleOrReflection:\n tx = targetX - bone.worldX;\n ty = targetY - bone.worldY;\n }\n var b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty);\n if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) {\n var s = (dd / b - 1) * alpha + 1;\n sx *= s;\n if (uniform)\n sy *= s;\n }\n }\n bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY);\n };\n IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, uniform, softness, alpha) {\n var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, sx = psx, sy = psy, csx = child.ascaleX;\n var os1 = 0, os2 = 0, s2 = 0;\n if (psx < 0) {\n psx = -psx;\n os1 = 180;\n s2 = -1;\n }\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 }\n else\n os2 = 0;\n var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d;\n var u = Math.abs(psx - psy) <= 0.0001;\n if (!u || stretch) {\n cy = 0;\n cwx = a * cx + parent.worldX;\n cwy = c * cx + parent.worldY;\n }\n else {\n cy = child.ay;\n cwx = a * cx + b * cy + parent.worldX;\n cwy = c * cx + d * cy + parent.worldY;\n }\n var pp = parent.parent;\n a = pp.a;\n b = pp.b;\n c = pp.c;\n d = pp.d;\n var id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY;\n var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py;\n var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2;\n if (l1 < 0.0001) {\n this.apply1(parent, targetX, targetY, false, stretch, false, alpha);\n child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY);\n return;\n }\n x = targetX - pp.worldX;\n y = targetY - pp.worldY;\n var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py;\n var dd = tx * tx + ty * ty;\n if (softness != 0) {\n softness *= psx * (csx + 1) * 0.5;\n var td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness;\n if (sd > 0) {\n var p = Math.min(1, sd / (softness * 2)) - 1;\n p = (sd - softness * (1 - p * p)) / td;\n tx -= p * tx;\n ty -= p * ty;\n dd = tx * tx + ty * ty;\n }\n }\n outer: if (u) {\n l2 *= psx;\n var cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2);\n if (cos < -1) {\n cos = -1;\n a2 = Math.PI * bendDir;\n }\n else if (cos > 1) {\n cos = 1;\n a2 = 0;\n if (stretch) {\n a = (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1;\n sx *= a;\n if (uniform)\n sy *= a;\n }\n }\n else\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 }\n else {\n a = psx * l2;\n b = psy * l2;\n var aa = a * a, bb = b * b, ta = Math.atan2(ty, tx);\n c = bb * l1 * l1 + aa * dd - aa * bb;\n var c1 = -2 * bb * l1, c2 = bb - aa;\n d = c1 * c1 - 4 * c2 * c;\n if (d >= 0) {\n var q = Math.sqrt(d);\n if (c1 < 0)\n q = -q;\n q = -(c1 + q) * 0.5;\n var r0 = q / c2, r1 = c / q;\n var 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 var minAngle = MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;\n var 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) * 0.5) {\n a1 = ta - Math.atan2(minY * bendDir, minX);\n a2 = minAngle * bendDir;\n }\n else {\n a1 = ta - Math.atan2(maxY * bendDir, maxX);\n a2 = maxAngle * bendDir;\n }\n }\n var os = Math.atan2(cy, cx) * s2;\n var rotation = parent.arotation;\n a1 = (a1 - os) * MathUtils.radDeg + os1 - rotation;\n if (a1 > 180)\n a1 -= 360;\n else if (a1 < -180)\n a1 += 360;\n parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, sy, 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)\n a2 += 360;\n child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY);\n };\n return IkConstraint;\n}());\nexport { IkConstraint };\n//# sourceMappingURL=IkConstraint.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConstraintData } from \"./ConstraintData\";\nvar IkConstraintData = (function (_super) {\n __extends(IkConstraintData, _super);\n function IkConstraintData(name) {\n var _this = _super.call(this, name, 0, false) || this;\n _this.bones = new Array();\n _this.bendDirection = 1;\n _this.compress = false;\n _this.stretch = false;\n _this.uniform = false;\n _this.mix = 1;\n _this.softness = 0;\n return _this;\n }\n return IkConstraintData;\n}(ConstraintData));\nexport { IkConstraintData };\n//# sourceMappingURL=IkConstraintData.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConstraintData } from \"./ConstraintData\";\nvar PathConstraintData = (function (_super) {\n __extends(PathConstraintData, _super);\n function PathConstraintData(name) {\n var _this = _super.call(this, name, 0, false) || this;\n _this.bones = new Array();\n _this.mixRotate = 0;\n _this.mixX = 0;\n _this.mixY = 0;\n return _this;\n }\n return PathConstraintData;\n}(ConstraintData));\nexport { PathConstraintData };\nexport var PositionMode;\n(function (PositionMode) {\n PositionMode[PositionMode[\"Fixed\"] = 0] = \"Fixed\";\n PositionMode[PositionMode[\"Percent\"] = 1] = \"Percent\";\n})(PositionMode || (PositionMode = {}));\nexport var SpacingMode;\n(function (SpacingMode) {\n SpacingMode[SpacingMode[\"Length\"] = 0] = \"Length\";\n SpacingMode[SpacingMode[\"Fixed\"] = 1] = \"Fixed\";\n SpacingMode[SpacingMode[\"Percent\"] = 2] = \"Percent\";\n SpacingMode[SpacingMode[\"Proportional\"] = 3] = \"Proportional\";\n})(SpacingMode || (SpacingMode = {}));\nexport var RotateMode;\n(function (RotateMode) {\n RotateMode[RotateMode[\"Tangent\"] = 0] = \"Tangent\";\n RotateMode[RotateMode[\"Chain\"] = 1] = \"Chain\";\n RotateMode[RotateMode[\"ChainScale\"] = 2] = \"ChainScale\";\n})(RotateMode || (RotateMode = {}));\n//# sourceMappingURL=PathConstraintData.js.map","import { PathAttachment } from \"./attachments/PathAttachment\";\nimport { RotateMode, SpacingMode, PositionMode } from \"./PathConstraintData\";\nimport { Utils, MathUtils } from \"./Utils\";\nvar PathConstraint = (function () {\n function PathConstraint(data, skeleton) {\n this.position = 0;\n this.spacing = 0;\n this.mixRotate = 0;\n this.mixX = 0;\n this.mixY = 0;\n this.spaces = new Array();\n this.positions = new Array();\n this.world = new Array();\n this.curves = new Array();\n this.lengths = new Array();\n this.segments = new Array();\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.bones = new Array();\n for (var 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.mixRotate = data.mixRotate;\n this.mixX = data.mixX;\n this.mixY = data.mixY;\n }\n PathConstraint.prototype.isActive = function () {\n return this.active;\n };\n PathConstraint.prototype.update = function () {\n var attachment = this.target.getAttachment();\n if (!(attachment instanceof PathAttachment))\n return;\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY;\n if (mixRotate == 0 && mixX == 0 && mixY == 0)\n return;\n var data = this.data;\n var tangents = data.rotateMode == RotateMode.Tangent, scale = data.rotateMode == RotateMode.ChainScale;\n var bones = this.bones;\n var boneCount = bones.length, spacesCount = tangents ? boneCount : boneCount + 1;\n var spaces = Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = Utils.setArraySize(this.lengths, boneCount) : null;\n var spacing = this.spacing;\n switch (data.spacingMode) {\n case SpacingMode.Percent:\n if (scale) {\n for (var i = 0, n = spacesCount - 1; i < n; i++) {\n var bone = bones[i];\n var setupLength = bone.data.length;\n if (setupLength < PathConstraint.epsilon)\n lengths[i] = 0;\n else {\n var x = setupLength * bone.a, y = setupLength * bone.c;\n lengths[i] = Math.sqrt(x * x + y * y);\n }\n }\n }\n Utils.arrayFill(spaces, 1, spacesCount, spacing);\n break;\n case SpacingMode.Proportional:\n var sum = 0;\n for (var i = 0, n = spacesCount - 1; i < n;) {\n var bone = bones[i];\n var setupLength = bone.data.length;\n if (setupLength < PathConstraint.epsilon) {\n if (scale)\n lengths[i] = 0;\n spaces[++i] = spacing;\n }\n else {\n var x = setupLength * bone.a, y = setupLength * bone.c;\n var length_1 = Math.sqrt(x * x + y * y);\n if (scale)\n lengths[i] = length_1;\n spaces[++i] = length_1;\n sum += length_1;\n }\n }\n if (sum > 0) {\n sum = spacesCount / sum * spacing;\n for (var i = 1; i < spacesCount; i++)\n spaces[i] *= sum;\n }\n break;\n default:\n var lengthSpacing = data.spacingMode == SpacingMode.Length;\n for (var i = 0, n = spacesCount - 1; i < n;) {\n var bone = bones[i];\n var setupLength = bone.data.length;\n if (setupLength < PathConstraint.epsilon) {\n if (scale)\n lengths[i] = 0;\n spaces[++i] = spacing;\n }\n else {\n var x = setupLength * bone.a, y = setupLength * bone.c;\n var length_2 = Math.sqrt(x * x + y * y);\n if (scale)\n lengths[i] = length_2;\n spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_2 / setupLength;\n }\n }\n }\n var positions = this.computeWorldPositions(attachment, spacesCount, tangents);\n var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;\n var tip = false;\n if (offsetRotation == 0)\n tip = data.rotateMode == RotateMode.Chain;\n else {\n tip = false;\n var p = this.target.bone;\n offsetRotation *= p.a * p.d - p.b * p.c > 0 ? MathUtils.degRad : -MathUtils.degRad;\n }\n for (var i = 0, p = 3; i < boneCount; i++, p += 3) {\n var bone = bones[i];\n bone.worldX += (boneX - bone.worldX) * mixX;\n bone.worldY += (boneY - bone.worldY) * mixY;\n var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;\n if (scale) {\n var length_3 = lengths[i];\n if (length_3 != 0) {\n var s = (Math.sqrt(dx * dx + dy * dy) / length_3 - 1) * mixRotate + 1;\n bone.a *= s;\n bone.c *= s;\n }\n }\n boneX = x;\n boneY = y;\n if (mixRotate > 0) {\n var a = bone.a, b = bone.b, c = bone.c, d = bone.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 var length_4 = bone.data.length;\n boneX += (length_4 * (cos * a - sin * c) - dx) * mixRotate;\n boneY += (length_4 * (sin * a + cos * c) - dy) * mixRotate;\n }\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 *= mixRotate;\n cos = Math.cos(r);\n sin = Math.sin(r);\n bone.a = cos * a - sin * c;\n bone.b = cos * b - sin * d;\n bone.c = sin * a + cos * c;\n bone.d = sin * b + cos * d;\n }\n bone.updateAppliedTransform();\n }\n };\n PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents) {\n var target = this.target;\n var position = this.position;\n var spaces = this.spaces, out = Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null;\n var closed = path.closed;\n var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE;\n if (!path.constantSpeed) {\n var lengths = path.lengths;\n curveCount -= closed ? 1 : 2;\n var pathLength_1 = lengths[curveCount];\n if (this.data.positionMode == PositionMode.Percent)\n position *= pathLength_1;\n var multiplier_1;\n switch (this.data.spacingMode) {\n case SpacingMode.Percent:\n multiplier_1 = pathLength_1;\n break;\n case SpacingMode.Proportional:\n multiplier_1 = pathLength_1 / spacesCount;\n break;\n default:\n multiplier_1 = 1;\n }\n world = Utils.setArraySize(this.world, 8);\n for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) {\n var space = spaces[i] * multiplier_1;\n position += space;\n var p = position;\n if (closed) {\n p %= pathLength_1;\n if (p < 0)\n p += pathLength_1;\n curve = 0;\n }\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 }\n else if (p > pathLength_1) {\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_1, world, 0, out, o);\n continue;\n }\n for (;; curve++) {\n var length_5 = lengths[curve];\n if (p > length_5)\n continue;\n if (curve == 0)\n p /= length_5;\n else {\n var prev = lengths[curve - 1];\n p = (p - prev) / (length_5 - 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 }\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, tangents || (i > 0 && space == 0));\n }\n return out;\n }\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 }\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 var curves = Utils.setArraySize(this.curves, curveCount);\n var pathLength = 0;\n var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0;\n var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0;\n for (var 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 (this.data.positionMode == PositionMode.Percent)\n position *= pathLength;\n var multiplier;\n switch (this.data.spacingMode) {\n case SpacingMode.Percent:\n multiplier = pathLength;\n break;\n case SpacingMode.Proportional:\n multiplier = pathLength / spacesCount;\n break;\n default:\n multiplier = 1;\n }\n var segments = this.segments;\n var curveLength = 0;\n for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) {\n var space = spaces[i] * multiplier;\n position += space;\n var p = position;\n if (closed) {\n p %= pathLength;\n if (p < 0)\n p += pathLength;\n curve = 0;\n }\n else if (p < 0) {\n this.addBeforePosition(p, world, 0, out, o);\n continue;\n }\n else if (p > pathLength) {\n this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o);\n continue;\n }\n for (;; curve++) {\n var length_6 = curves[curve];\n if (p > length_6)\n continue;\n if (curve == 0)\n p /= length_6;\n else {\n var prev = curves[curve - 1];\n p = (p - prev) / (length_6 - prev);\n }\n break;\n }\n if (curve != prevCurve) {\n prevCurve = curve;\n var 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 p *= curveLength;\n for (;; segment++) {\n var length_7 = segments[segment];\n if (p > length_7)\n continue;\n if (segment == 0)\n p /= length_7;\n else {\n var prev = segments[segment - 1];\n p = segment + (p - prev) / (length_7 - 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 PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) {\n var 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 PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) {\n var 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 PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) {\n if (p == 0 || isNaN(p)) {\n out[o] = x1;\n out[o + 1] = y1;\n out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1);\n return;\n }\n var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u;\n var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p;\n var 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) {\n if (p < 0.001)\n out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1);\n else\n out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt));\n }\n };\n PathConstraint.NONE = -1;\n PathConstraint.BEFORE = -2;\n PathConstraint.AFTER = -3;\n PathConstraint.epsilon = 0.00001;\n return PathConstraint;\n}());\nexport { PathConstraint };\n//# sourceMappingURL=PathConstraint.js.map","import { VertexAttachment } from \"./attachments/Attachment\";\nimport { Color } from \"./Utils\";\nvar Slot = (function () {\n function Slot(data, bone) {\n this.deform = new Array();\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!bone)\n 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 : new Color();\n this.setToSetupPose();\n }\n Slot.prototype.getSkeleton = function () {\n return this.bone.skeleton;\n };\n Slot.prototype.getAttachment = function () {\n return this.attachment;\n };\n Slot.prototype.setAttachment = function (attachment) {\n if (this.attachment == attachment)\n return;\n if (!(attachment instanceof VertexAttachment) || !(this.attachment instanceof VertexAttachment)\n || attachment.deformAttachment != this.attachment.deformAttachment) {\n this.deform.length = 0;\n }\n this.attachment = attachment;\n this.attachmentTime = this.bone.skeleton.time;\n };\n Slot.prototype.setAttachmentTime = function (time) {\n this.attachmentTime = this.bone.skeleton.time - time;\n };\n Slot.prototype.getAttachmentTime = function () {\n return this.bone.skeleton.time - this.attachmentTime;\n };\n Slot.prototype.setToSetupPose = function () {\n this.color.setFromColor(this.data.color);\n if (this.darkColor)\n this.darkColor.setFromColor(this.data.darkColor);\n if (!this.data.attachmentName)\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 return Slot;\n}());\nexport { Slot };\n//# sourceMappingURL=Slot.js.map","import { Vector2, MathUtils } from \"./Utils\";\nvar TransformConstraint = (function () {\n function TransformConstraint(data, skeleton) {\n this.mixRotate = 0;\n this.mixX = 0;\n this.mixY = 0;\n this.mixScaleX = 0;\n this.mixScaleY = 0;\n this.mixShearY = 0;\n this.temp = new Vector2();\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.mixRotate = data.mixRotate;\n this.mixX = data.mixX;\n this.mixY = data.mixY;\n this.mixScaleX = data.mixScaleX;\n this.mixScaleY = data.mixScaleY;\n this.mixShearY = data.mixShearY;\n this.bones = new Array();\n for (var 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 TransformConstraint.prototype.isActive = function () {\n return this.active;\n };\n TransformConstraint.prototype.update = function () {\n if (this.mixRotate == 0 && this.mixX == 0 && this.mixY == 0 && this.mixScaleX == 0 && this.mixScaleX == 0 && this.mixShearY == 0)\n return;\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 TransformConstraint.prototype.applyAbsoluteWorld = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var translate = mixX != 0 || mixY != 0;\n var target = this.target;\n var ta = target.a, tb = target.b, tc = target.c, td = target.d;\n var degRadReflect = ta * td - tb * tc > 0 ? MathUtils.degRad : -MathUtils.degRad;\n var offsetRotation = this.data.offsetRotation * degRadReflect;\n var offsetShearY = this.data.offsetShearY * degRadReflect;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (mixRotate != 0) {\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n var 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 *= mixRotate;\n var cos = Math.cos(r), sin = Math.sin(r);\n bone.a = cos * a - sin * c;\n bone.b = cos * b - sin * d;\n bone.c = sin * a + cos * c;\n bone.d = sin * b + cos * d;\n }\n if (translate) {\n var temp = this.temp;\n target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY));\n bone.worldX += (temp.x - bone.worldX) * mixX;\n bone.worldY += (temp.y - bone.worldY) * mixY;\n }\n if (mixScaleX != 0) {\n var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c);\n if (s != 0)\n s = (s + (Math.sqrt(ta * ta + tc * tc) - s + this.data.offsetScaleX) * mixScaleX) / s;\n bone.a *= s;\n bone.c *= s;\n }\n if (mixScaleY != 0) {\n var s = Math.sqrt(bone.b * bone.b + bone.d * bone.d);\n if (s != 0)\n s = (s + (Math.sqrt(tb * tb + td * td) - s + this.data.offsetScaleY) * mixScaleY) / s;\n bone.b *= s;\n bone.d *= s;\n }\n if (mixShearY > 0) {\n var b = bone.b, d = bone.d;\n var by = Math.atan2(d, b);\n var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.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) * mixShearY;\n var s = Math.sqrt(b * b + d * d);\n bone.b = Math.cos(r) * s;\n bone.d = Math.sin(r) * s;\n }\n bone.updateAppliedTransform();\n }\n };\n TransformConstraint.prototype.applyRelativeWorld = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var translate = mixX != 0 || mixY != 0;\n var target = this.target;\n var ta = target.a, tb = target.b, tc = target.c, td = target.d;\n var degRadReflect = ta * td - tb * tc > 0 ? MathUtils.degRad : -MathUtils.degRad;\n var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (mixRotate != 0) {\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n var r = Math.atan2(tc, ta) + offsetRotation;\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI)\n r += MathUtils.PI2;\n r *= mixRotate;\n var cos = Math.cos(r), sin = Math.sin(r);\n bone.a = cos * a - sin * c;\n bone.b = cos * b - sin * d;\n bone.c = sin * a + cos * c;\n bone.d = sin * b + cos * d;\n }\n if (translate) {\n var temp = this.temp;\n target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY));\n bone.worldX += temp.x * mixX;\n bone.worldY += temp.y * mixY;\n }\n if (mixScaleX != 0) {\n var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * mixScaleX + 1;\n bone.a *= s;\n bone.c *= s;\n }\n if (mixScaleY != 0) {\n var s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * mixScaleY + 1;\n bone.b *= s;\n bone.d *= s;\n }\n if (mixShearY > 0) {\n var r = Math.atan2(td, tb) - Math.atan2(tc, ta);\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI)\n r += MathUtils.PI2;\n var b = bone.b, d = bone.d;\n r = Math.atan2(d, b) + (r - MathUtils.PI / 2 + offsetShearY) * mixShearY;\n var s = Math.sqrt(b * b + d * d);\n bone.b = Math.cos(r) * s;\n bone.d = Math.sin(r) * s;\n }\n bone.updateAppliedTransform();\n }\n };\n TransformConstraint.prototype.applyAbsoluteLocal = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var target = this.target;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n var rotation = bone.arotation;\n if (mixRotate != 0) {\n var r = target.arotation - rotation + this.data.offsetRotation;\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n rotation += r * mixRotate;\n }\n var x = bone.ax, y = bone.ay;\n x += (target.ax - x + this.data.offsetX) * mixX;\n y += (target.ay - y + this.data.offsetY) * mixY;\n var scaleX = bone.ascaleX, scaleY = bone.ascaleY;\n if (mixScaleX != 0 && scaleX != 0)\n scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * mixScaleX) / scaleX;\n if (mixScaleY != 0 && scaleY != 0)\n scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * mixScaleY) / scaleY;\n var shearY = bone.ashearY;\n if (mixShearY != 0) {\n var r = target.ashearY - shearY + this.data.offsetShearY;\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n shearY += r * mixShearY;\n }\n bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY);\n }\n };\n TransformConstraint.prototype.applyRelativeLocal = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var target = this.target;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n var rotation = bone.arotation + (target.arotation + this.data.offsetRotation) * mixRotate;\n var x = bone.ax + (target.ax + this.data.offsetX) * mixX;\n var y = bone.ay + (target.ay + this.data.offsetY) * mixY;\n var scaleX = (bone.ascaleX * ((target.ascaleX - 1 + this.data.offsetScaleX) * mixScaleX) + 1);\n var scaleY = (bone.ascaleY * ((target.ascaleY - 1 + this.data.offsetScaleY) * mixScaleY) + 1);\n var shearY = bone.ashearY + (target.ashearY + this.data.offsetShearY) * mixShearY;\n bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY);\n }\n };\n return TransformConstraint;\n}());\nexport { TransformConstraint };\n//# sourceMappingURL=TransformConstraint.js.map","import { MeshAttachment } from \"./attachments/MeshAttachment\";\nimport { PathAttachment } from \"./attachments/PathAttachment\";\nimport { RegionAttachment } from \"./attachments/RegionAttachment\";\nimport { Bone } from \"./Bone\";\nimport { IkConstraint } from \"./IkConstraint\";\nimport { PathConstraint } from \"./PathConstraint\";\nimport { Slot } from \"./Slot\";\nimport { TransformConstraint } from \"./TransformConstraint\";\nimport { Color, Utils, MathUtils } from \"./Utils\";\nvar Skeleton = (function () {\n function Skeleton(data) {\n this._updateCache = new Array();\n this.time = 0;\n this.scaleX = 1;\n this.scaleY = 1;\n this.x = 0;\n this.y = 0;\n if (!data)\n throw new Error(\"data cannot be null.\");\n this.data = data;\n this.bones = new Array();\n for (var i = 0; i < data.bones.length; i++) {\n var boneData = data.bones[i];\n var bone = void 0;\n if (!boneData.parent)\n bone = new Bone(boneData, this, null);\n else {\n var parent_1 = this.bones[boneData.parent.index];\n bone = new Bone(boneData, this, parent_1);\n parent_1.children.push(bone);\n }\n this.bones.push(bone);\n }\n this.slots = new Array();\n this.drawOrder = new Array();\n for (var i = 0; i < data.slots.length; i++) {\n var slotData = data.slots[i];\n var bone = this.bones[slotData.boneData.index];\n var slot = new Slot(slotData, bone);\n this.slots.push(slot);\n this.drawOrder.push(slot);\n }\n this.ikConstraints = new Array();\n for (var i = 0; i < data.ikConstraints.length; i++) {\n var ikConstraintData = data.ikConstraints[i];\n this.ikConstraints.push(new IkConstraint(ikConstraintData, this));\n }\n this.transformConstraints = new Array();\n for (var i = 0; i < data.transformConstraints.length; i++) {\n var transformConstraintData = data.transformConstraints[i];\n this.transformConstraints.push(new TransformConstraint(transformConstraintData, this));\n }\n this.pathConstraints = new Array();\n for (var i = 0; i < data.pathConstraints.length; i++) {\n var pathConstraintData = data.pathConstraints[i];\n this.pathConstraints.push(new PathConstraint(pathConstraintData, this));\n }\n this.color = new Color(1, 1, 1, 1);\n this.updateCache();\n }\n Skeleton.prototype.updateCache = function () {\n var updateCache = this._updateCache;\n updateCache.length = 0;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n bone.sorted = bone.data.skinRequired;\n bone.active = !bone.sorted;\n }\n if (this.skin) {\n var skinBones = this.skin.bones;\n for (var i = 0, n = this.skin.bones.length; i < n; i++) {\n var bone = this.bones[skinBones[i].index];\n do {\n bone.sorted = false;\n bone.active = true;\n bone = bone.parent;\n } while (bone);\n }\n }\n var ikConstraints = this.ikConstraints;\n var transformConstraints = this.transformConstraints;\n var pathConstraints = this.pathConstraints;\n var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length;\n var constraintCount = ikCount + transformCount + pathCount;\n outer: for (var i = 0; i < constraintCount; i++) {\n for (var ii = 0; ii < ikCount; ii++) {\n var constraint = ikConstraints[ii];\n if (constraint.data.order == i) {\n this.sortIkConstraint(constraint);\n continue outer;\n }\n }\n for (var ii = 0; ii < transformCount; ii++) {\n var constraint = transformConstraints[ii];\n if (constraint.data.order == i) {\n this.sortTransformConstraint(constraint);\n continue outer;\n }\n }\n for (var ii = 0; ii < pathCount; ii++) {\n var constraint = pathConstraints[ii];\n if (constraint.data.order == i) {\n this.sortPathConstraint(constraint);\n continue outer;\n }\n }\n }\n for (var i = 0, n = bones.length; i < n; i++)\n this.sortBone(bones[i]);\n };\n Skeleton.prototype.sortIkConstraint = function (constraint) {\n constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true)));\n if (!constraint.active)\n return;\n var target = constraint.target;\n this.sortBone(target);\n var constrained = constraint.bones;\n var parent = constrained[0];\n this.sortBone(parent);\n if (constrained.length == 1) {\n this._updateCache.push(constraint);\n this.sortReset(parent.children);\n }\n else {\n var child = constrained[constrained.length - 1];\n this.sortBone(child);\n this._updateCache.push(constraint);\n this.sortReset(parent.children);\n child.sorted = true;\n }\n };\n Skeleton.prototype.sortPathConstraint = function (constraint) {\n constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true)));\n if (!constraint.active)\n return;\n var slot = constraint.target;\n var slotIndex = slot.data.index;\n var slotBone = slot.bone;\n if (this.skin)\n this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone);\n if (this.data.defaultSkin && this.data.defaultSkin != this.skin)\n this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone);\n for (var i = 0, n = this.data.skins.length; i < n; i++)\n this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone);\n var attachment = slot.getAttachment();\n if (attachment instanceof PathAttachment)\n this.sortPathConstraintAttachmentWith(attachment, slotBone);\n var constrained = constraint.bones;\n var boneCount = constrained.length;\n for (var i = 0; i < boneCount; i++)\n this.sortBone(constrained[i]);\n this._updateCache.push(constraint);\n for (var i = 0; i < boneCount; i++)\n this.sortReset(constrained[i].children);\n for (var i = 0; i < boneCount; i++)\n constrained[i].sorted = true;\n };\n Skeleton.prototype.sortTransformConstraint = function (constraint) {\n constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true)));\n if (!constraint.active)\n return;\n this.sortBone(constraint.target);\n var constrained = constraint.bones;\n var boneCount = constrained.length;\n if (constraint.data.local) {\n for (var i = 0; i < boneCount; i++) {\n var child = constrained[i];\n this.sortBone(child.parent);\n this.sortBone(child);\n }\n }\n else {\n for (var i = 0; i < boneCount; i++) {\n this.sortBone(constrained[i]);\n }\n }\n this._updateCache.push(constraint);\n for (var i = 0; i < boneCount; i++)\n this.sortReset(constrained[i].children);\n for (var i = 0; i < boneCount; i++)\n constrained[i].sorted = true;\n };\n Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) {\n var attachments = skin.attachments[slotIndex];\n if (!attachments)\n return;\n for (var key in attachments) {\n this.sortPathConstraintAttachmentWith(attachments[key], slotBone);\n }\n };\n Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) {\n if (!(attachment instanceof PathAttachment))\n return;\n var pathBones = attachment.bones;\n if (!pathBones)\n this.sortBone(slotBone);\n else {\n var bones = this.bones;\n for (var i = 0, n = pathBones.length; i < n;) {\n var nn = pathBones[i++];\n nn += i;\n while (i < nn)\n this.sortBone(bones[pathBones[i++]]);\n }\n }\n };\n Skeleton.prototype.sortBone = function (bone) {\n if (bone.sorted)\n return;\n var parent = bone.parent;\n if (parent)\n this.sortBone(parent);\n bone.sorted = true;\n this._updateCache.push(bone);\n };\n Skeleton.prototype.sortReset = function (bones) {\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (!bone.active)\n continue;\n if (bone.sorted)\n this.sortReset(bone.children);\n bone.sorted = false;\n }\n };\n Skeleton.prototype.updateWorldTransform = function () {\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\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 }\n var updateCache = this._updateCache;\n for (var i = 0, n = updateCache.length; i < n; i++)\n updateCache[i].update();\n };\n Skeleton.prototype.updateWorldTransformWith = function (parent) {\n var rootBone = this.getRootBone();\n var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d;\n rootBone.worldX = pa * this.x + pb * this.y + parent.worldX;\n rootBone.worldY = pc * this.x + pd * this.y + parent.worldY;\n var rotationY = rootBone.rotation + 90 + rootBone.shearY;\n var la = MathUtils.cosDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX;\n var lb = MathUtils.cosDeg(rotationY) * rootBone.scaleY;\n var lc = MathUtils.sinDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX;\n var ld = MathUtils.sinDeg(rotationY) * rootBone.scaleY;\n rootBone.a = (pa * la + pb * lc) * this.scaleX;\n rootBone.b = (pa * lb + pb * ld) * this.scaleX;\n rootBone.c = (pc * la + pd * lc) * this.scaleY;\n rootBone.d = (pc * lb + pd * ld) * this.scaleY;\n var updateCache = this._updateCache;\n for (var i = 0, n = updateCache.length; i < n; i++) {\n var updatable = updateCache[i];\n if (updatable != rootBone)\n updatable.update();\n }\n };\n Skeleton.prototype.setToSetupPose = function () {\n this.setBonesToSetupPose();\n this.setSlotsToSetupPose();\n };\n Skeleton.prototype.setBonesToSetupPose = function () {\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++)\n bones[i].setToSetupPose();\n var ikConstraints = this.ikConstraints;\n for (var i = 0, n = ikConstraints.length; i < n; i++) {\n var constraint = ikConstraints[i];\n constraint.mix = constraint.data.mix;\n constraint.softness = constraint.data.softness;\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n }\n var transformConstraints = this.transformConstraints;\n for (var i = 0, n = transformConstraints.length; i < n; i++) {\n var constraint = transformConstraints[i];\n var data = constraint.data;\n constraint.mixRotate = data.mixRotate;\n constraint.mixX = data.mixX;\n constraint.mixY = data.mixY;\n constraint.mixScaleX = data.mixScaleX;\n constraint.mixScaleY = data.mixScaleY;\n constraint.mixShearY = data.mixShearY;\n }\n var pathConstraints = this.pathConstraints;\n for (var i = 0, n = pathConstraints.length; i < n; i++) {\n var constraint = pathConstraints[i];\n var data = constraint.data;\n constraint.position = data.position;\n constraint.spacing = data.spacing;\n constraint.mixRotate = data.mixRotate;\n constraint.mixX = data.mixX;\n constraint.mixY = data.mixY;\n }\n };\n Skeleton.prototype.setSlotsToSetupPose = function () {\n var slots = this.slots;\n Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length);\n for (var i = 0, n = slots.length; i < n; i++)\n slots[i].setToSetupPose();\n };\n Skeleton.prototype.getRootBone = function () {\n if (this.bones.length == 0)\n return null;\n return this.bones[0];\n };\n Skeleton.prototype.findBone = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (bone.data.name == boneName)\n return bone;\n }\n return null;\n };\n Skeleton.prototype.findBoneIndex = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++)\n if (bones[i].data.name == boneName)\n return i;\n return -1;\n };\n Skeleton.prototype.findSlot = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.data.name == slotName)\n return slot;\n }\n return null;\n };\n Skeleton.prototype.findSlotIndex = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n if (slots[i].data.name == slotName)\n return i;\n return -1;\n };\n Skeleton.prototype.setSkinByName = function (skinName) {\n var skin = this.data.findSkin(skinName);\n if (!skin)\n throw new Error(\"Skin not found: \" + skinName);\n this.setSkin(skin);\n };\n Skeleton.prototype.setSkin = function (newSkin) {\n if (newSkin == this.skin)\n return;\n if (newSkin) {\n if (this.skin)\n newSkin.attachAll(this, this.skin);\n else {\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n var name_1 = slot.data.attachmentName;\n if (name_1) {\n var attachment = newSkin.getAttachment(i, name_1);\n if (attachment)\n slot.setAttachment(attachment);\n }\n }\n }\n }\n this.skin = newSkin;\n this.updateCache();\n };\n Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) {\n return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName);\n };\n Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) {\n if (!attachmentName)\n throw new Error(\"attachmentName cannot be null.\");\n if (this.skin) {\n var attachment = this.skin.getAttachment(slotIndex, attachmentName);\n if (attachment)\n return attachment;\n }\n if (this.data.defaultSkin)\n return this.data.defaultSkin.getAttachment(slotIndex, attachmentName);\n return null;\n };\n Skeleton.prototype.setAttachment = function (slotName, attachmentName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.data.name == slotName) {\n var attachment = null;\n if (attachmentName) {\n attachment = this.getAttachment(i, attachmentName);\n if (!attachment)\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 Skeleton.prototype.findIkConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var ikConstraints = this.ikConstraints;\n for (var i = 0, n = ikConstraints.length; i < n; i++) {\n var ikConstraint = ikConstraints[i];\n if (ikConstraint.data.name == constraintName)\n return ikConstraint;\n }\n return null;\n };\n Skeleton.prototype.findTransformConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var transformConstraints = this.transformConstraints;\n for (var i = 0, n = transformConstraints.length; i < n; i++) {\n var constraint = transformConstraints[i];\n if (constraint.data.name == constraintName)\n return constraint;\n }\n return null;\n };\n Skeleton.prototype.findPathConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var pathConstraints = this.pathConstraints;\n for (var i = 0, n = pathConstraints.length; i < n; i++) {\n var constraint = pathConstraints[i];\n if (constraint.data.name == constraintName)\n return constraint;\n }\n return null;\n };\n Skeleton.prototype.getBounds = function (offset, size, temp) {\n if (temp === void 0) { temp = new Array(2); }\n if (!offset)\n throw new Error(\"offset cannot be null.\");\n if (!size)\n throw new Error(\"size cannot be null.\");\n var drawOrder = this.drawOrder;\n var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;\n for (var i = 0, n = drawOrder.length; i < n; i++) {\n var slot = drawOrder[i];\n if (!slot.bone.active)\n continue;\n var verticesLength = 0;\n var vertices = null;\n var attachment = slot.getAttachment();\n if (attachment instanceof RegionAttachment) {\n verticesLength = 8;\n vertices = Utils.setArraySize(temp, verticesLength, 0);\n attachment.computeWorldVertices(slot.bone, vertices, 0, 2);\n }\n else if (attachment instanceof MeshAttachment) {\n var mesh = 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) {\n for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) {\n var 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 Skeleton.prototype.update = function (delta) {\n this.time += delta;\n };\n return Skeleton;\n}());\nexport { Skeleton };\n//# sourceMappingURL=Skeleton.js.map","var SkeletonData = (function () {\n function SkeletonData() {\n this.bones = new Array();\n this.slots = new Array();\n this.skins = new Array();\n this.events = new Array();\n this.animations = new Array();\n this.ikConstraints = new Array();\n this.transformConstraints = new Array();\n this.pathConstraints = new Array();\n this.fps = 0;\n }\n SkeletonData.prototype.findBone = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (bone.name == boneName)\n return bone;\n }\n return null;\n };\n SkeletonData.prototype.findBoneIndex = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++)\n if (bones[i].name == boneName)\n return i;\n return -1;\n };\n SkeletonData.prototype.findSlot = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.name == slotName)\n return slot;\n }\n return null;\n };\n SkeletonData.prototype.findSlotIndex = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n if (slots[i].name == slotName)\n return i;\n return -1;\n };\n SkeletonData.prototype.findSkin = function (skinName) {\n if (!skinName)\n throw new Error(\"skinName cannot be null.\");\n var skins = this.skins;\n for (var i = 0, n = skins.length; i < n; i++) {\n var skin = skins[i];\n if (skin.name == skinName)\n return skin;\n }\n return null;\n };\n SkeletonData.prototype.findEvent = function (eventDataName) {\n if (!eventDataName)\n throw new Error(\"eventDataName cannot be null.\");\n var events = this.events;\n for (var i = 0, n = events.length; i < n; i++) {\n var event_1 = events[i];\n if (event_1.name == eventDataName)\n return event_1;\n }\n return null;\n };\n SkeletonData.prototype.findAnimation = function (animationName) {\n if (!animationName)\n throw new Error(\"animationName cannot be null.\");\n var animations = this.animations;\n for (var i = 0, n = animations.length; i < n; i++) {\n var animation = animations[i];\n if (animation.name == animationName)\n return animation;\n }\n return null;\n };\n SkeletonData.prototype.findIkConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var ikConstraints = this.ikConstraints;\n for (var i = 0, n = ikConstraints.length; i < n; i++) {\n var constraint = ikConstraints[i];\n if (constraint.name == constraintName)\n return constraint;\n }\n return null;\n };\n SkeletonData.prototype.findTransformConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var transformConstraints = this.transformConstraints;\n for (var i = 0, n = transformConstraints.length; i < n; i++) {\n var constraint = transformConstraints[i];\n if (constraint.name == constraintName)\n return constraint;\n }\n return null;\n };\n SkeletonData.prototype.findPathConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var pathConstraints = this.pathConstraints;\n for (var i = 0, n = pathConstraints.length; i < n; i++) {\n var constraint = pathConstraints[i];\n if (constraint.name == constraintName)\n return constraint;\n }\n return null;\n };\n return SkeletonData;\n}());\nexport { SkeletonData };\n//# sourceMappingURL=SkeletonData.js.map","import { MeshAttachment } from \"./attachments/MeshAttachment\";\nvar SkinEntry = (function () {\n function SkinEntry(slotIndex, name, attachment) {\n this.slotIndex = slotIndex;\n this.name = name;\n this.attachment = attachment;\n }\n return SkinEntry;\n}());\nexport { SkinEntry };\nvar Skin = (function () {\n function Skin(name) {\n this.attachments = new Array();\n this.bones = Array();\n this.constraints = new Array();\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.name = name;\n }\n Skin.prototype.setAttachment = function (slotIndex, name, attachment) {\n if (!attachment)\n throw new Error(\"attachment cannot be null.\");\n var attachments = this.attachments;\n if (slotIndex >= attachments.length)\n attachments.length = slotIndex + 1;\n if (!attachments[slotIndex])\n attachments[slotIndex] = {};\n attachments[slotIndex][name] = attachment;\n };\n Skin.prototype.addSkin = function (skin) {\n for (var i = 0; i < skin.bones.length; i++) {\n var bone = skin.bones[i];\n var contained = false;\n for (var ii = 0; ii < this.bones.length; ii++) {\n if (this.bones[ii] == bone) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.bones.push(bone);\n }\n for (var i = 0; i < skin.constraints.length; i++) {\n var constraint = skin.constraints[i];\n var contained = false;\n for (var ii = 0; ii < this.constraints.length; ii++) {\n if (this.constraints[ii] == constraint) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.constraints.push(constraint);\n }\n var attachments = skin.getAttachments();\n for (var i = 0; i < attachments.length; i++) {\n var attachment = attachments[i];\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n };\n Skin.prototype.copySkin = function (skin) {\n for (var i = 0; i < skin.bones.length; i++) {\n var bone = skin.bones[i];\n var contained = false;\n for (var ii = 0; ii < this.bones.length; ii++) {\n if (this.bones[ii] == bone) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.bones.push(bone);\n }\n for (var i = 0; i < skin.constraints.length; i++) {\n var constraint = skin.constraints[i];\n var contained = false;\n for (var ii = 0; ii < this.constraints.length; ii++) {\n if (this.constraints[ii] == constraint) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.constraints.push(constraint);\n }\n var attachments = skin.getAttachments();\n for (var i = 0; i < attachments.length; i++) {\n var attachment = attachments[i];\n if (!attachment.attachment)\n continue;\n if (attachment.attachment instanceof MeshAttachment) {\n attachment.attachment = attachment.attachment.newLinkedMesh();\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n else {\n attachment.attachment = attachment.attachment.copy();\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n }\n };\n Skin.prototype.getAttachment = function (slotIndex, name) {\n var dictionary = this.attachments[slotIndex];\n return dictionary ? dictionary[name] : null;\n };\n Skin.prototype.removeAttachment = function (slotIndex, name) {\n var dictionary = this.attachments[slotIndex];\n if (dictionary)\n dictionary[name] = null;\n };\n Skin.prototype.getAttachments = function () {\n var entries = new Array();\n for (var i = 0; i < this.attachments.length; i++) {\n var slotAttachments = this.attachments[i];\n if (slotAttachments) {\n for (var name_1 in slotAttachments) {\n var attachment = slotAttachments[name_1];\n if (attachment)\n entries.push(new SkinEntry(i, name_1, attachment));\n }\n }\n }\n return entries;\n };\n Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) {\n var slotAttachments = this.attachments[slotIndex];\n if (slotAttachments) {\n for (var name_2 in slotAttachments) {\n var attachment = slotAttachments[name_2];\n if (attachment)\n attachments.push(new SkinEntry(slotIndex, name_2, attachment));\n }\n }\n };\n Skin.prototype.clear = function () {\n this.attachments.length = 0;\n this.bones.length = 0;\n this.constraints.length = 0;\n };\n Skin.prototype.attachAll = function (skeleton, oldSkin) {\n var slotIndex = 0;\n for (var i = 0; i < skeleton.slots.length; i++) {\n var slot = skeleton.slots[i];\n var slotAttachment = slot.getAttachment();\n if (slotAttachment && slotIndex < oldSkin.attachments.length) {\n var dictionary = oldSkin.attachments[slotIndex];\n for (var key in dictionary) {\n var skinAttachment = dictionary[key];\n if (slotAttachment == skinAttachment) {\n var attachment = this.getAttachment(slotIndex, key);\n if (attachment)\n slot.setAttachment(attachment);\n break;\n }\n }\n }\n slotIndex++;\n }\n };\n return Skin;\n}());\nexport { Skin };\n//# sourceMappingURL=Skin.js.map","import { Color } from \"./Utils\";\nvar SlotData = (function () {\n function SlotData(index, name, boneData) {\n this.color = new Color(1, 1, 1, 1);\n if (index < 0)\n throw new Error(\"index must be >= 0.\");\n if (!name)\n throw new Error(\"name cannot be null.\");\n if (!boneData)\n throw new Error(\"boneData cannot be null.\");\n this.index = index;\n this.name = name;\n this.boneData = boneData;\n }\n return SlotData;\n}());\nexport { SlotData };\nexport var BlendMode;\n(function (BlendMode) {\n BlendMode[BlendMode[\"Normal\"] = 0] = \"Normal\";\n BlendMode[BlendMode[\"Additive\"] = 1] = \"Additive\";\n BlendMode[BlendMode[\"Multiply\"] = 2] = \"Multiply\";\n BlendMode[BlendMode[\"Screen\"] = 3] = \"Screen\";\n})(BlendMode || (BlendMode = {}));\n//# sourceMappingURL=SlotData.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConstraintData } from \"./ConstraintData\";\nvar TransformConstraintData = (function (_super) {\n __extends(TransformConstraintData, _super);\n function TransformConstraintData(name) {\n var _this = _super.call(this, name, 0, false) || this;\n _this.bones = new Array();\n _this.mixRotate = 0;\n _this.mixX = 0;\n _this.mixY = 0;\n _this.mixScaleX = 0;\n _this.mixScaleY = 0;\n _this.mixShearY = 0;\n _this.offsetRotation = 0;\n _this.offsetX = 0;\n _this.offsetY = 0;\n _this.offsetScaleX = 0;\n _this.offsetScaleY = 0;\n _this.offsetShearY = 0;\n _this.relative = false;\n _this.local = false;\n return _this;\n }\n return TransformConstraintData;\n}(ConstraintData));\nexport { TransformConstraintData };\n//# sourceMappingURL=TransformConstraintData.js.map","import { Animation, AttachmentTimeline, RGBATimeline, RGBTimeline, RGBA2Timeline, RGB2Timeline, AlphaTimeline, RotateTimeline, TranslateTimeline, TranslateXTimeline, TranslateYTimeline, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, IkConstraintTimeline, TransformConstraintTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PathConstraintMixTimeline, DeformTimeline, DrawOrderTimeline, EventTimeline } from \"./Animation\";\nimport { BoneData } from \"./BoneData\";\nimport { Event } from \"./Event\";\nimport { EventData } from \"./EventData\";\nimport { IkConstraintData } from \"./IkConstraintData\";\nimport { PathConstraintData, PositionMode, SpacingMode } from \"./PathConstraintData\";\nimport { SkeletonData } from \"./SkeletonData\";\nimport { Skin } from \"./Skin\";\nimport { SlotData } from \"./SlotData\";\nimport { TransformConstraintData } from \"./TransformConstraintData\";\nimport { Color, Utils } from \"./Utils\";\nvar SkeletonBinary = (function () {\n function SkeletonBinary(attachmentLoader) {\n this.scale = 1;\n this.linkedMeshes = new Array();\n this.attachmentLoader = attachmentLoader;\n }\n SkeletonBinary.prototype.readSkeletonData = function (binary) {\n var scale = this.scale;\n var skeletonData = new SkeletonData();\n skeletonData.name = \"\";\n var input = new BinaryInput(binary);\n var lowHash = input.readInt32();\n var highHash = input.readInt32();\n skeletonData.hash = highHash == 0 && lowHash == 0 ? null : highHash.toString(16) + lowHash.toString(16);\n skeletonData.version = input.readString();\n skeletonData.x = input.readFloat();\n skeletonData.y = input.readFloat();\n skeletonData.width = input.readFloat();\n skeletonData.height = input.readFloat();\n var nonessential = input.readBoolean();\n if (nonessential) {\n skeletonData.fps = input.readFloat();\n skeletonData.imagesPath = input.readString();\n skeletonData.audioPath = input.readString();\n }\n var n = 0;\n n = input.readInt(true);\n for (var i = 0; i < n; i++)\n input.strings.push(input.readString());\n n = input.readInt(true);\n for (var i = 0; i < n; i++) {\n var name_1 = input.readString();\n var parent_1 = i == 0 ? null : skeletonData.bones[input.readInt(true)];\n var data = new BoneData(i, name_1, parent_1);\n data.rotation = input.readFloat();\n data.x = input.readFloat() * scale;\n data.y = input.readFloat() * scale;\n data.scaleX = input.readFloat();\n data.scaleY = input.readFloat();\n data.shearX = input.readFloat();\n data.shearY = input.readFloat();\n data.length = input.readFloat() * scale;\n data.transformMode = input.readInt(true);\n data.skinRequired = input.readBoolean();\n if (nonessential)\n Color.rgba8888ToColor(data.color, input.readInt32());\n skeletonData.bones.push(data);\n }\n n = input.readInt(true);\n for (var i = 0; i < n; i++) {\n var slotName = input.readString();\n var boneData = skeletonData.bones[input.readInt(true)];\n var data = new SlotData(i, slotName, boneData);\n Color.rgba8888ToColor(data.color, input.readInt32());\n var darkColor = input.readInt32();\n if (darkColor != -1)\n Color.rgb888ToColor(data.darkColor = new Color(), darkColor);\n data.attachmentName = input.readStringRef();\n data.blendMode = input.readInt(true);\n skeletonData.slots.push(data);\n }\n n = input.readInt(true);\n for (var i = 0, nn = void 0; i < n; i++) {\n var data = new IkConstraintData(input.readString());\n data.order = input.readInt(true);\n data.skinRequired = input.readBoolean();\n nn = input.readInt(true);\n for (var ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.bones[input.readInt(true)];\n data.mix = input.readFloat();\n data.softness = input.readFloat() * scale;\n data.bendDirection = input.readByte();\n data.compress = input.readBoolean();\n data.stretch = input.readBoolean();\n data.uniform = input.readBoolean();\n skeletonData.ikConstraints.push(data);\n }\n n = input.readInt(true);\n for (var i = 0, nn = void 0; i < n; i++) {\n var data = new TransformConstraintData(input.readString());\n data.order = input.readInt(true);\n data.skinRequired = input.readBoolean();\n nn = input.readInt(true);\n for (var ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.bones[input.readInt(true)];\n data.local = input.readBoolean();\n data.relative = input.readBoolean();\n data.offsetRotation = input.readFloat();\n data.offsetX = input.readFloat() * scale;\n data.offsetY = input.readFloat() * scale;\n data.offsetScaleX = input.readFloat();\n data.offsetScaleY = input.readFloat();\n data.offsetShearY = input.readFloat();\n data.mixRotate = input.readFloat();\n data.mixX = input.readFloat();\n data.mixY = input.readFloat();\n data.mixScaleX = input.readFloat();\n data.mixScaleY = input.readFloat();\n data.mixShearY = input.readFloat();\n skeletonData.transformConstraints.push(data);\n }\n n = input.readInt(true);\n for (var i = 0, nn = void 0; i < n; i++) {\n var data = new PathConstraintData(input.readString());\n data.order = input.readInt(true);\n data.skinRequired = input.readBoolean();\n nn = input.readInt(true);\n for (var ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.slots[input.readInt(true)];\n data.positionMode = input.readInt(true);\n data.spacingMode = input.readInt(true);\n data.rotateMode = input.readInt(true);\n data.offsetRotation = input.readFloat();\n data.position = input.readFloat();\n if (data.positionMode == PositionMode.Fixed)\n data.position *= scale;\n data.spacing = input.readFloat();\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed)\n data.spacing *= scale;\n data.mixRotate = input.readFloat();\n data.mixX = input.readFloat();\n data.mixY = input.readFloat();\n skeletonData.pathConstraints.push(data);\n }\n var defaultSkin = this.readSkin(input, skeletonData, true, nonessential);\n if (defaultSkin) {\n skeletonData.defaultSkin = defaultSkin;\n skeletonData.skins.push(defaultSkin);\n }\n {\n var i = skeletonData.skins.length;\n Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true));\n for (; i < n; i++)\n skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential);\n }\n n = this.linkedMeshes.length;\n for (var i = 0; i < n; i++) {\n var linkedMesh = this.linkedMeshes[i];\n var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);\n var parent_2 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);\n linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_2 : linkedMesh.mesh;\n linkedMesh.mesh.setParentMesh(parent_2);\n linkedMesh.mesh.updateUVs();\n }\n this.linkedMeshes.length = 0;\n n = input.readInt(true);\n for (var i = 0; i < n; i++) {\n var data = new EventData(input.readStringRef());\n data.intValue = input.readInt(false);\n data.floatValue = input.readFloat();\n data.stringValue = input.readString();\n data.audioPath = input.readString();\n if (data.audioPath) {\n data.volume = input.readFloat();\n data.balance = input.readFloat();\n }\n skeletonData.events.push(data);\n }\n n = input.readInt(true);\n for (var i = 0; i < n; i++)\n skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData));\n return skeletonData;\n };\n SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) {\n var skin = null;\n var slotCount = 0;\n if (defaultSkin) {\n slotCount = input.readInt(true);\n if (slotCount == 0)\n return null;\n skin = new Skin(\"default\");\n }\n else {\n skin = new Skin(input.readStringRef());\n skin.bones.length = input.readInt(true);\n for (var i = 0, n = skin.bones.length; i < n; i++)\n skin.bones[i] = skeletonData.bones[input.readInt(true)];\n for (var i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]);\n for (var i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);\n for (var i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);\n slotCount = input.readInt(true);\n }\n for (var i = 0; i < slotCount; i++) {\n var slotIndex = input.readInt(true);\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var name_2 = input.readStringRef();\n var attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name_2, nonessential);\n if (attachment)\n skin.setAttachment(slotIndex, name_2, attachment);\n }\n }\n return skin;\n };\n SkeletonBinary.prototype.readAttachment = function (input, skeletonData, skin, slotIndex, attachmentName, nonessential) {\n var scale = this.scale;\n var name = input.readStringRef();\n if (!name)\n name = attachmentName;\n switch (input.readByte()) {\n case AttachmentType.Region: {\n var path = input.readStringRef();\n var rotation = input.readFloat();\n var x = input.readFloat();\n var y = input.readFloat();\n var scaleX = input.readFloat();\n var scaleY = input.readFloat();\n var width = input.readFloat();\n var height = input.readFloat();\n var color = input.readInt32();\n if (!path)\n path = name;\n var region = this.attachmentLoader.newRegionAttachment(skin, name, path);\n if (!region)\n return null;\n region.path = path;\n region.x = x * scale;\n region.y = y * scale;\n region.scaleX = scaleX;\n region.scaleY = scaleY;\n region.rotation = rotation;\n region.width = width * scale;\n region.height = height * scale;\n Color.rgba8888ToColor(region.color, color);\n region.updateOffset();\n return region;\n }\n case AttachmentType.BoundingBox: {\n var vertexCount = input.readInt(true);\n var vertices = this.readVertices(input, vertexCount);\n var color = nonessential ? input.readInt32() : 0;\n var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\n if (!box)\n return null;\n box.worldVerticesLength = vertexCount << 1;\n box.vertices = vertices.vertices;\n box.bones = vertices.bones;\n if (nonessential)\n Color.rgba8888ToColor(box.color, color);\n return box;\n }\n case AttachmentType.Mesh: {\n var path = input.readStringRef();\n var color = input.readInt32();\n var vertexCount = input.readInt(true);\n var uvs = this.readFloatArray(input, vertexCount << 1, 1);\n var triangles = this.readShortArray(input);\n var vertices = this.readVertices(input, vertexCount);\n var hullLength = input.readInt(true);\n var edges = null;\n var width = 0, height = 0;\n if (nonessential) {\n edges = this.readShortArray(input);\n width = input.readFloat();\n height = input.readFloat();\n }\n if (!path)\n path = name;\n var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n if (!mesh)\n return null;\n mesh.path = path;\n Color.rgba8888ToColor(mesh.color, color);\n mesh.bones = vertices.bones;\n mesh.vertices = vertices.vertices;\n mesh.worldVerticesLength = vertexCount << 1;\n mesh.triangles = triangles;\n mesh.regionUVs = uvs;\n mesh.updateUVs();\n mesh.hullLength = hullLength << 1;\n if (nonessential) {\n mesh.edges = edges;\n mesh.width = width * scale;\n mesh.height = height * scale;\n }\n return mesh;\n }\n case AttachmentType.LinkedMesh: {\n var path = input.readStringRef();\n var color = input.readInt32();\n var skinName = input.readStringRef();\n var parent_3 = input.readStringRef();\n var inheritDeform = input.readBoolean();\n var width = 0, height = 0;\n if (nonessential) {\n width = input.readFloat();\n height = input.readFloat();\n }\n if (!path)\n path = name;\n var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n if (!mesh)\n return null;\n mesh.path = path;\n Color.rgba8888ToColor(mesh.color, color);\n if (nonessential) {\n mesh.width = width * scale;\n mesh.height = height * scale;\n }\n this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent_3, inheritDeform));\n return mesh;\n }\n case AttachmentType.Path: {\n var closed_1 = input.readBoolean();\n var constantSpeed = input.readBoolean();\n var vertexCount = input.readInt(true);\n var vertices = this.readVertices(input, vertexCount);\n var lengths = Utils.newArray(vertexCount / 3, 0);\n for (var i = 0, n = lengths.length; i < n; i++)\n lengths[i] = input.readFloat() * scale;\n var color = nonessential ? input.readInt32() : 0;\n var path = this.attachmentLoader.newPathAttachment(skin, name);\n if (!path)\n return null;\n path.closed = closed_1;\n path.constantSpeed = constantSpeed;\n path.worldVerticesLength = vertexCount << 1;\n path.vertices = vertices.vertices;\n path.bones = vertices.bones;\n path.lengths = lengths;\n if (nonessential)\n Color.rgba8888ToColor(path.color, color);\n return path;\n }\n case AttachmentType.Point: {\n var rotation = input.readFloat();\n var x = input.readFloat();\n var y = input.readFloat();\n var color = nonessential ? input.readInt32() : 0;\n var point = this.attachmentLoader.newPointAttachment(skin, name);\n if (!point)\n return null;\n point.x = x * scale;\n point.y = y * scale;\n point.rotation = rotation;\n if (nonessential)\n Color.rgba8888ToColor(point.color, color);\n return point;\n }\n case AttachmentType.Clipping: {\n var endSlotIndex = input.readInt(true);\n var vertexCount = input.readInt(true);\n var vertices = this.readVertices(input, vertexCount);\n var color = nonessential ? input.readInt32() : 0;\n var clip = this.attachmentLoader.newClippingAttachment(skin, name);\n if (!clip)\n return null;\n clip.endSlot = skeletonData.slots[endSlotIndex];\n clip.worldVerticesLength = vertexCount << 1;\n clip.vertices = vertices.vertices;\n clip.bones = vertices.bones;\n if (nonessential)\n Color.rgba8888ToColor(clip.color, color);\n return clip;\n }\n }\n return null;\n };\n SkeletonBinary.prototype.readVertices = function (input, vertexCount) {\n var scale = this.scale;\n var verticesLength = vertexCount << 1;\n var vertices = new Vertices();\n if (!input.readBoolean()) {\n vertices.vertices = this.readFloatArray(input, verticesLength, scale);\n return vertices;\n }\n var weights = new Array();\n var bonesArray = new Array();\n for (var i = 0; i < vertexCount; i++) {\n var boneCount = input.readInt(true);\n bonesArray.push(boneCount);\n for (var ii = 0; ii < boneCount; ii++) {\n bonesArray.push(input.readInt(true));\n weights.push(input.readFloat() * scale);\n weights.push(input.readFloat() * scale);\n weights.push(input.readFloat());\n }\n }\n vertices.vertices = Utils.toFloatArray(weights);\n vertices.bones = bonesArray;\n return vertices;\n };\n SkeletonBinary.prototype.readFloatArray = function (input, n, scale) {\n var array = new Array(n);\n if (scale == 1) {\n for (var i = 0; i < n; i++)\n array[i] = input.readFloat();\n }\n else {\n for (var i = 0; i < n; i++)\n array[i] = input.readFloat() * scale;\n }\n return array;\n };\n SkeletonBinary.prototype.readShortArray = function (input) {\n var n = input.readInt(true);\n var array = new Array(n);\n for (var i = 0; i < n; i++)\n array[i] = input.readShort();\n return array;\n };\n SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) {\n input.readInt(true);\n var timelines = new Array();\n var scale = this.scale;\n var tempColor1 = new Color();\n var tempColor2 = new Color();\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var slotIndex = input.readInt(true);\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var timelineType = input.readByte();\n var frameCount = input.readInt(true);\n var frameLast = frameCount - 1;\n switch (timelineType) {\n case SLOT_ATTACHMENT: {\n var timeline = new AttachmentTimeline(frameCount, slotIndex);\n for (var frame = 0; frame < frameCount; frame++)\n timeline.setFrame(frame, input.readFloat(), input.readStringRef());\n timelines.push(timeline);\n break;\n }\n case SLOT_RGBA: {\n var bezierCount = input.readInt(true);\n var timeline = new RGBATimeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n var a = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, a);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n var a2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, a, a2, 1);\n }\n time = time2;\n r = r2;\n g = g2;\n b = b2;\n a = a2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGB: {\n var bezierCount = input.readInt(true);\n var timeline = new RGBTimeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1);\n }\n time = time2;\n r = r2;\n g = g2;\n b = b2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGBA2: {\n var bezierCount = input.readInt(true);\n var timeline = new RGBA2Timeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n var a = input.readUnsignedByte() / 255.0;\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, a, r2, g2, b2);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var nr = input.readUnsignedByte() / 255.0;\n var ng = input.readUnsignedByte() / 255.0;\n var nb = input.readUnsignedByte() / 255.0;\n var na = input.readUnsignedByte() / 255.0;\n var nr2 = input.readUnsignedByte() / 255.0;\n var ng2 = input.readUnsignedByte() / 255.0;\n var nb2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, a, na, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, r2, nr2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, g2, ng2, 1);\n setBezier(input, timeline, bezier++, frame, 6, time, time2, b2, nb2, 1);\n }\n time = time2;\n r = nr;\n g = ng;\n b = nb;\n a = na;\n r2 = nr2;\n g2 = ng2;\n b2 = nb2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGB2: {\n var bezierCount = input.readInt(true);\n var timeline = new RGB2Timeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, r2, g2, b2);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var nr = input.readUnsignedByte() / 255.0;\n var ng = input.readUnsignedByte() / 255.0;\n var nb = input.readUnsignedByte() / 255.0;\n var nr2 = input.readUnsignedByte() / 255.0;\n var ng2 = input.readUnsignedByte() / 255.0;\n var nb2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, r2, nr2, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, g2, ng2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, b2, nb2, 1);\n }\n time = time2;\n r = nr;\n g = ng;\n b = nb;\n r2 = nr2;\n g2 = ng2;\n b2 = nb2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_ALPHA: {\n var timeline = new AlphaTimeline(frameCount, input.readInt(true), slotIndex);\n var time = input.readFloat(), a = input.readUnsignedByte() / 255;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, a);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var a2 = input.readUnsignedByte() / 255;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, a, a2, 1);\n }\n time = time2;\n a = a2;\n }\n timelines.push(timeline);\n break;\n }\n }\n }\n }\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var boneIndex = input.readInt(true);\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true);\n switch (type) {\n case BONE_ROTATE:\n timelines.push(readTimeline1(input, new RotateTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_TRANSLATE:\n timelines.push(readTimeline2(input, new TranslateTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_TRANSLATEX:\n timelines.push(readTimeline1(input, new TranslateXTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_TRANSLATEY:\n timelines.push(readTimeline1(input, new TranslateYTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_SCALE:\n timelines.push(readTimeline2(input, new ScaleTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SCALEX:\n timelines.push(readTimeline1(input, new ScaleXTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SCALEY:\n timelines.push(readTimeline1(input, new ScaleYTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEAR:\n timelines.push(readTimeline2(input, new ShearTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEARX:\n timelines.push(readTimeline1(input, new ShearXTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEARY:\n timelines.push(readTimeline1(input, new ShearYTimeline(frameCount, bezierCount, boneIndex), 1));\n }\n }\n }\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1;\n var timeline = new IkConstraintTimeline(frameCount, input.readInt(true), index);\n var time = input.readFloat(), mix = input.readFloat(), softness = input.readFloat() * scale;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mix, softness, input.readByte(), input.readBoolean(), input.readBoolean());\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), mix2 = input.readFloat(), softness2 = input.readFloat() * scale;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale);\n }\n time = time2;\n mix = mix2;\n softness = softness2;\n }\n timelines.push(timeline);\n }\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1;\n var timeline = new TransformConstraintTimeline(frameCount, input.readInt(true), index);\n var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(), mixScaleX = input.readFloat(), mixScaleY = input.readFloat(), mixShearY = input.readFloat();\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(), mixScaleX2 = input.readFloat(), mixScaleY2 = input.readFloat(), mixShearY2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, mixScaleX, mixScaleX2, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, mixScaleY, mixScaleY2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, mixShearY, mixShearY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n mixScaleX = mixScaleX2;\n mixScaleY = mixScaleY2;\n mixShearY = mixShearY2;\n }\n timelines.push(timeline);\n }\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var index = input.readInt(true);\n var data = skeletonData.pathConstraints[index];\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n switch (input.readByte()) {\n case PATH_POSITION:\n timelines\n .push(readTimeline1(input, new PathConstraintPositionTimeline(input.readInt(true), input.readInt(true), index), data.positionMode == PositionMode.Fixed ? scale : 1));\n break;\n case PATH_SPACING:\n timelines\n .push(readTimeline1(input, new PathConstraintSpacingTimeline(input.readInt(true), input.readInt(true), index), data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed ? scale : 1));\n break;\n case PATH_MIX:\n var timeline = new PathConstraintMixTimeline(input.readInt(true), input.readInt(true), index);\n var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat();\n for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n }\n timelines.push(timeline);\n }\n }\n }\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var skin = skeletonData.skins[input.readInt(true)];\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var slotIndex = input.readInt(true);\n for (var iii = 0, nnn = input.readInt(true); iii < nnn; iii++) {\n var attachmentName = input.readStringRef();\n var attachment = skin.getAttachment(slotIndex, attachmentName);\n var weighted = attachment.bones;\n var vertices = attachment.vertices;\n var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;\n var frameCount = input.readInt(true);\n var frameLast = frameCount - 1;\n var bezierCount = input.readInt(true);\n var timeline = new DeformTimeline(frameCount, bezierCount, slotIndex, attachment);\n var time = input.readFloat();\n for (var frame = 0, bezier = 0;; frame++) {\n var deform = void 0;\n var end = input.readInt(true);\n if (end == 0)\n deform = weighted ? Utils.newFloatArray(deformLength) : vertices;\n else {\n deform = Utils.newFloatArray(deformLength);\n var start = input.readInt(true);\n end += start;\n if (scale == 1) {\n for (var v = start; v < end; v++)\n deform[v] = input.readFloat();\n }\n else {\n for (var v = start; v < end; v++)\n deform[v] = input.readFloat() * scale;\n }\n if (!weighted) {\n for (var v = 0, vn = deform.length; v < vn; v++)\n deform[v] += vertices[v];\n }\n }\n timeline.setFrame(frame, time, deform);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1);\n }\n time = time2;\n }\n timelines.push(timeline);\n }\n }\n }\n var drawOrderCount = input.readInt(true);\n if (drawOrderCount > 0) {\n var timeline = new DrawOrderTimeline(drawOrderCount);\n var slotCount = skeletonData.slots.length;\n for (var i = 0; i < drawOrderCount; i++) {\n var time = input.readFloat();\n var offsetCount = input.readInt(true);\n var drawOrder = Utils.newArray(slotCount, 0);\n for (var ii = slotCount - 1; ii >= 0; ii--)\n drawOrder[ii] = -1;\n var unchanged = Utils.newArray(slotCount - offsetCount, 0);\n var originalIndex = 0, unchangedIndex = 0;\n for (var ii = 0; ii < offsetCount; ii++) {\n var slotIndex = input.readInt(true);\n while (originalIndex != slotIndex)\n unchanged[unchangedIndex++] = originalIndex++;\n drawOrder[originalIndex + input.readInt(true)] = originalIndex++;\n }\n while (originalIndex < slotCount)\n unchanged[unchangedIndex++] = originalIndex++;\n for (var ii = slotCount - 1; ii >= 0; ii--)\n if (drawOrder[ii] == -1)\n drawOrder[ii] = unchanged[--unchangedIndex];\n timeline.setFrame(i, time, drawOrder);\n }\n timelines.push(timeline);\n }\n var eventCount = input.readInt(true);\n if (eventCount > 0) {\n var timeline = new EventTimeline(eventCount);\n for (var i = 0; i < eventCount; i++) {\n var time = input.readFloat();\n var eventData = skeletonData.events[input.readInt(true)];\n var event_1 = new Event(time, eventData);\n event_1.intValue = input.readInt(false);\n event_1.floatValue = input.readFloat();\n event_1.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue;\n if (event_1.data.audioPath) {\n event_1.volume = input.readFloat();\n event_1.balance = input.readFloat();\n }\n timeline.setFrame(i, event_1);\n }\n timelines.push(timeline);\n }\n var duration = 0;\n for (var i = 0, n = timelines.length; i < n; i++)\n duration = Math.max(duration, timelines[i].getDuration());\n return new Animation(name, timelines, duration);\n };\n return SkeletonBinary;\n}());\nexport { SkeletonBinary };\nvar BinaryInput = (function () {\n function BinaryInput(data, strings, index, buffer) {\n if (strings === void 0) { strings = new Array(); }\n if (index === void 0) { index = 0; }\n if (buffer === void 0) { buffer = new DataView(data.buffer); }\n this.strings = strings;\n this.index = index;\n this.buffer = buffer;\n }\n BinaryInput.prototype.readByte = function () {\n return this.buffer.getInt8(this.index++);\n };\n BinaryInput.prototype.readUnsignedByte = function () {\n return this.buffer.getUint8(this.index++);\n };\n BinaryInput.prototype.readShort = function () {\n var value = this.buffer.getInt16(this.index);\n this.index += 2;\n return value;\n };\n BinaryInput.prototype.readInt32 = function () {\n var value = this.buffer.getInt32(this.index);\n this.index += 4;\n return value;\n };\n BinaryInput.prototype.readInt = function (optimizePositive) {\n var b = this.readByte();\n var result = b & 0x7F;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 7;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 14;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 21;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 28;\n }\n }\n }\n }\n return optimizePositive ? result : ((result >>> 1) ^ -(result & 1));\n };\n BinaryInput.prototype.readStringRef = function () {\n var index = this.readInt(true);\n return index == 0 ? null : this.strings[index - 1];\n };\n BinaryInput.prototype.readString = function () {\n var byteCount = this.readInt(true);\n switch (byteCount) {\n case 0:\n return null;\n case 1:\n return \"\";\n }\n byteCount--;\n var chars = \"\";\n var charCount = 0;\n for (var i = 0; i < byteCount;) {\n var b = this.readByte();\n switch (b >> 4) {\n case 12:\n case 13:\n chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F));\n i += 2;\n break;\n case 14:\n chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F));\n i += 3;\n break;\n default:\n chars += String.fromCharCode(b);\n i++;\n }\n }\n return chars;\n };\n BinaryInput.prototype.readFloat = function () {\n var value = this.buffer.getFloat32(this.index);\n this.index += 4;\n return value;\n };\n BinaryInput.prototype.readBoolean = function () {\n return this.readByte() != 0;\n };\n return BinaryInput;\n}());\nexport { BinaryInput };\nvar LinkedMesh = (function () {\n function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) {\n this.mesh = mesh;\n this.skin = skin;\n this.slotIndex = slotIndex;\n this.parent = parent;\n this.inheritDeform = inheritDeform;\n }\n return LinkedMesh;\n}());\nvar Vertices = (function () {\n function Vertices(bones, vertices) {\n if (bones === void 0) { bones = null; }\n if (vertices === void 0) { vertices = null; }\n this.bones = bones;\n this.vertices = vertices;\n }\n return Vertices;\n}());\nvar AttachmentType;\n(function (AttachmentType) {\n AttachmentType[AttachmentType[\"Region\"] = 0] = \"Region\";\n AttachmentType[AttachmentType[\"BoundingBox\"] = 1] = \"BoundingBox\";\n AttachmentType[AttachmentType[\"Mesh\"] = 2] = \"Mesh\";\n AttachmentType[AttachmentType[\"LinkedMesh\"] = 3] = \"LinkedMesh\";\n AttachmentType[AttachmentType[\"Path\"] = 4] = \"Path\";\n AttachmentType[AttachmentType[\"Point\"] = 5] = \"Point\";\n AttachmentType[AttachmentType[\"Clipping\"] = 6] = \"Clipping\";\n})(AttachmentType || (AttachmentType = {}));\nfunction readTimeline1(input, timeline, scale) {\n var time = input.readFloat(), value = input.readFloat() * scale;\n for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, value);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), value2 = input.readFloat() * scale;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, value, value2, scale);\n }\n time = time2;\n value = value2;\n }\n return timeline;\n}\nfunction readTimeline2(input, timeline, scale) {\n var time = input.readFloat(), value1 = input.readFloat() * scale, value2 = input.readFloat() * scale;\n for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, value1, value2);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), nvalue1 = input.readFloat() * scale, nvalue2 = input.readFloat() * scale;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, value1, nvalue1, scale);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, value2, nvalue2, scale);\n }\n time = time2;\n value1 = nvalue1;\n value2 = nvalue2;\n }\n return timeline;\n}\nfunction setBezier(input, timeline, bezier, frame, value, time1, time2, value1, value2, scale) {\n timeline.setBezier(bezier, frame, value, time1, value1, input.readFloat(), input.readFloat() * scale, input.readFloat(), input.readFloat() * scale, time2, value2);\n}\nvar BONE_ROTATE = 0;\nvar BONE_TRANSLATE = 1;\nvar BONE_TRANSLATEX = 2;\nvar BONE_TRANSLATEY = 3;\nvar BONE_SCALE = 4;\nvar BONE_SCALEX = 5;\nvar BONE_SCALEY = 6;\nvar BONE_SHEAR = 7;\nvar BONE_SHEARX = 8;\nvar BONE_SHEARY = 9;\nvar SLOT_ATTACHMENT = 0;\nvar SLOT_RGBA = 1;\nvar SLOT_RGB = 2;\nvar SLOT_RGBA2 = 3;\nvar SLOT_RGB2 = 4;\nvar SLOT_ALPHA = 5;\nvar PATH_POSITION = 0;\nvar PATH_SPACING = 1;\nvar PATH_MIX = 2;\nvar CURVE_LINEAR = 0;\nvar CURVE_STEPPED = 1;\nvar CURVE_BEZIER = 2;\n//# sourceMappingURL=SkeletonBinary.js.map","import { BoundingBoxAttachment } from \"./attachments/BoundingBoxAttachment\";\nimport { Pool, Utils } from \"./Utils\";\nvar SkeletonBounds = (function () {\n function SkeletonBounds() {\n this.minX = 0;\n this.minY = 0;\n this.maxX = 0;\n this.maxY = 0;\n this.boundingBoxes = new Array();\n this.polygons = new Array();\n this.polygonPool = new Pool(function () {\n return Utils.newFloatArray(16);\n });\n }\n SkeletonBounds.prototype.update = function (skeleton, updateAabb) {\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n var boundingBoxes = this.boundingBoxes;\n var polygons = this.polygons;\n var polygonPool = this.polygonPool;\n var slots = skeleton.slots;\n var slotCount = slots.length;\n boundingBoxes.length = 0;\n polygonPool.freeAll(polygons);\n polygons.length = 0;\n for (var i = 0; i < slotCount; i++) {\n var slot = slots[i];\n if (!slot.bone.active)\n continue;\n var attachment = slot.getAttachment();\n if (attachment instanceof BoundingBoxAttachment) {\n var boundingBox = attachment;\n boundingBoxes.push(boundingBox);\n var 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 if (updateAabb) {\n this.aabbCompute();\n }\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 SkeletonBounds.prototype.aabbCompute = function () {\n var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;\n var polygons = this.polygons;\n for (var i = 0, n = polygons.length; i < n; i++) {\n var polygon = polygons[i];\n var vertices = polygon;\n for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) {\n var x = vertices[ii];\n var 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 SkeletonBounds.prototype.aabbContainsPoint = function (x, y) {\n return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;\n };\n SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) {\n var minX = this.minX;\n var minY = this.minY;\n var maxX = this.maxX;\n var 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 var m = (y2 - y1) / (x2 - x1);\n var y = m * (minX - x1) + y1;\n if (y > minY && y < maxY)\n return true;\n y = m * (maxX - x1) + y1;\n if (y > minY && y < maxY)\n return true;\n var x = (minY - y1) / m + x1;\n if (x > minX && x < maxX)\n return true;\n x = (maxY - y1) / m + x1;\n if (x > minX && x < maxX)\n return true;\n return false;\n };\n SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) {\n return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY;\n };\n SkeletonBounds.prototype.containsPoint = function (x, y) {\n var polygons = this.polygons;\n for (var i = 0, n = polygons.length; i < n; i++)\n if (this.containsPointPolygon(polygons[i], x, y))\n return this.boundingBoxes[i];\n return null;\n };\n SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) {\n var vertices = polygon;\n var nn = polygon.length;\n var prevIndex = nn - 2;\n var inside = false;\n for (var ii = 0; ii < nn; ii += 2) {\n var vertexY = vertices[ii + 1];\n var prevY = vertices[prevIndex + 1];\n if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) {\n var vertexX = vertices[ii];\n if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x)\n inside = !inside;\n }\n prevIndex = ii;\n }\n return inside;\n };\n SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) {\n var polygons = this.polygons;\n for (var i = 0, n = polygons.length; i < n; i++)\n if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2))\n return this.boundingBoxes[i];\n return null;\n };\n SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) {\n var vertices = polygon;\n var nn = polygon.length;\n var width12 = x1 - x2, height12 = y1 - y2;\n var det1 = x1 * y2 - y1 * x2;\n var x3 = vertices[nn - 2], y3 = vertices[nn - 1];\n for (var ii = 0; ii < nn; ii += 2) {\n var x4 = vertices[ii], y4 = vertices[ii + 1];\n var det2 = x3 * y4 - y3 * x4;\n var width34 = x3 - x4, height34 = y3 - y4;\n var det3 = width12 * height34 - height12 * width34;\n var 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 var y = (det1 * height34 - height12 * det2) / det3;\n if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1)))\n return true;\n }\n x3 = x4;\n y3 = y4;\n }\n return false;\n };\n SkeletonBounds.prototype.getPolygon = function (boundingBox) {\n if (!boundingBox)\n throw new Error(\"boundingBox cannot be null.\");\n var index = this.boundingBoxes.indexOf(boundingBox);\n return index == -1 ? null : this.polygons[index];\n };\n SkeletonBounds.prototype.getWidth = function () {\n return this.maxX - this.minX;\n };\n SkeletonBounds.prototype.getHeight = function () {\n return this.maxY - this.minY;\n };\n return SkeletonBounds;\n}());\nexport { SkeletonBounds };\n//# sourceMappingURL=SkeletonBounds.js.map","import { Pool } from \"./Utils\";\nvar Triangulator = (function () {\n function Triangulator() {\n this.convexPolygons = new Array();\n this.convexPolygonsIndices = new Array();\n this.indicesArray = new Array();\n this.isConcaveArray = new Array();\n this.triangles = new Array();\n this.polygonPool = new Pool(function () {\n return new Array();\n });\n this.polygonIndicesPool = new Pool(function () {\n return new Array();\n });\n }\n Triangulator.prototype.triangulate = function (verticesArray) {\n var vertices = verticesArray;\n var vertexCount = verticesArray.length >> 1;\n var indices = this.indicesArray;\n indices.length = 0;\n for (var i = 0; i < vertexCount; i++)\n indices[i] = i;\n var isConcave = this.isConcaveArray;\n isConcave.length = 0;\n for (var i = 0, n = vertexCount; i < n; ++i)\n isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices);\n var triangles = this.triangles;\n triangles.length = 0;\n while (vertexCount > 3) {\n var previous = vertexCount - 1, i = 0, next = 1;\n while (true) {\n outer: if (!isConcave[i]) {\n var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1;\n var p1x = vertices[p1], p1y = vertices[p1 + 1];\n var p2x = vertices[p2], p2y = vertices[p2 + 1];\n var p3x = vertices[p3], p3y = vertices[p3 + 1];\n for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) {\n if (!isConcave[ii])\n continue;\n var v = indices[ii] << 1;\n var vx = vertices[v], vy = vertices[v + 1];\n if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) {\n if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) {\n if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy))\n break outer;\n }\n }\n }\n break;\n }\n if (next == 0) {\n do {\n if (!isConcave[i])\n break;\n i--;\n } while (i > 0);\n break;\n }\n previous = i;\n i = next;\n next = (next + 1) % vertexCount;\n }\n triangles.push(indices[(vertexCount + i - 1) % vertexCount]);\n triangles.push(indices[i]);\n triangles.push(indices[(i + 1) % vertexCount]);\n indices.splice(i, 1);\n isConcave.splice(i, 1);\n vertexCount--;\n var previousIndex = (vertexCount + i - 1) % vertexCount;\n var nextIndex = i == vertexCount ? 0 : i;\n isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices);\n isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices);\n }\n if (vertexCount == 3) {\n triangles.push(indices[2]);\n triangles.push(indices[0]);\n triangles.push(indices[1]);\n }\n return triangles;\n };\n Triangulator.prototype.decompose = function (verticesArray, triangles) {\n var vertices = verticesArray;\n var convexPolygons = this.convexPolygons;\n this.polygonPool.freeAll(convexPolygons);\n convexPolygons.length = 0;\n var convexPolygonsIndices = this.convexPolygonsIndices;\n this.polygonIndicesPool.freeAll(convexPolygonsIndices);\n convexPolygonsIndices.length = 0;\n var polygonIndices = this.polygonIndicesPool.obtain();\n polygonIndices.length = 0;\n var polygon = this.polygonPool.obtain();\n polygon.length = 0;\n var fanBaseIndex = -1, lastWinding = 0;\n for (var i = 0, n = triangles.length; i < n; i += 3) {\n var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1;\n var x1 = vertices[t1], y1 = vertices[t1 + 1];\n var x2 = vertices[t2], y2 = vertices[t2 + 1];\n var x3 = vertices[t3], y3 = vertices[t3 + 1];\n var merged = false;\n if (fanBaseIndex == t1) {\n var o = polygon.length - 4;\n var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3);\n var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]);\n if (winding1 == lastWinding && winding2 == lastWinding) {\n polygon.push(x3);\n polygon.push(y3);\n polygonIndices.push(t3);\n merged = true;\n }\n }\n if (!merged) {\n if (polygon.length > 0) {\n convexPolygons.push(polygon);\n convexPolygonsIndices.push(polygonIndices);\n }\n else {\n this.polygonPool.free(polygon);\n this.polygonIndicesPool.free(polygonIndices);\n }\n polygon = this.polygonPool.obtain();\n polygon.length = 0;\n polygon.push(x1);\n polygon.push(y1);\n polygon.push(x2);\n polygon.push(y2);\n polygon.push(x3);\n polygon.push(y3);\n polygonIndices = this.polygonIndicesPool.obtain();\n polygonIndices.length = 0;\n polygonIndices.push(t1);\n polygonIndices.push(t2);\n polygonIndices.push(t3);\n lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3);\n fanBaseIndex = t1;\n }\n }\n if (polygon.length > 0) {\n convexPolygons.push(polygon);\n convexPolygonsIndices.push(polygonIndices);\n }\n for (var i = 0, n = convexPolygons.length; i < n; i++) {\n polygonIndices = convexPolygonsIndices[i];\n if (polygonIndices.length == 0)\n continue;\n var firstIndex = polygonIndices[0];\n var lastIndex = polygonIndices[polygonIndices.length - 1];\n polygon = convexPolygons[i];\n var o = polygon.length - 4;\n var prevPrevX = polygon[o], prevPrevY = polygon[o + 1];\n var prevX = polygon[o + 2], prevY = polygon[o + 3];\n var firstX = polygon[0], firstY = polygon[1];\n var secondX = polygon[2], secondY = polygon[3];\n var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY);\n for (var ii = 0; ii < n; ii++) {\n if (ii == i)\n continue;\n var otherIndices = convexPolygonsIndices[ii];\n if (otherIndices.length != 3)\n continue;\n var otherFirstIndex = otherIndices[0];\n var otherSecondIndex = otherIndices[1];\n var otherLastIndex = otherIndices[2];\n var otherPoly = convexPolygons[ii];\n var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1];\n if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex)\n continue;\n var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3);\n var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY);\n if (winding1 == winding && winding2 == winding) {\n otherPoly.length = 0;\n otherIndices.length = 0;\n polygon.push(x3);\n polygon.push(y3);\n polygonIndices.push(otherLastIndex);\n prevPrevX = prevX;\n prevPrevY = prevY;\n prevX = x3;\n prevY = y3;\n ii = 0;\n }\n }\n }\n for (var i = convexPolygons.length - 1; i >= 0; i--) {\n polygon = convexPolygons[i];\n if (polygon.length == 0) {\n convexPolygons.splice(i, 1);\n this.polygonPool.free(polygon);\n polygonIndices = convexPolygonsIndices[i];\n convexPolygonsIndices.splice(i, 1);\n this.polygonIndicesPool.free(polygonIndices);\n }\n }\n return convexPolygons;\n };\n Triangulator.isConcave = function (index, vertexCount, vertices, indices) {\n var previous = indices[(vertexCount + index - 1) % vertexCount] << 1;\n var current = indices[index] << 1;\n var next = indices[(index + 1) % vertexCount] << 1;\n return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]);\n };\n Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) {\n return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0;\n };\n Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) {\n var px = p2x - p1x, py = p2y - p1y;\n return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1;\n };\n return Triangulator;\n}());\nexport { Triangulator };\n//# sourceMappingURL=Triangulator.js.map","import { Triangulator } from \"./Triangulator\";\nimport { Utils } from \"./Utils\";\nvar SkeletonClipping = (function () {\n function SkeletonClipping() {\n this.triangulator = new Triangulator();\n this.clippingPolygon = new Array();\n this.clipOutput = new Array();\n this.clippedVertices = new Array();\n this.clippedTriangles = new Array();\n this.scratch = new Array();\n }\n SkeletonClipping.prototype.clipStart = function (slot, clip) {\n if (this.clipAttachment)\n return 0;\n this.clipAttachment = clip;\n var n = clip.worldVerticesLength;\n var vertices = Utils.setArraySize(this.clippingPolygon, n);\n clip.computeWorldVertices(slot, 0, n, vertices, 0, 2);\n var clippingPolygon = this.clippingPolygon;\n SkeletonClipping.makeClockwise(clippingPolygon);\n var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon));\n for (var i = 0, n_1 = clippingPolygons.length; i < n_1; i++) {\n var polygon = clippingPolygons[i];\n SkeletonClipping.makeClockwise(polygon);\n polygon.push(polygon[0]);\n polygon.push(polygon[1]);\n }\n return clippingPolygons.length;\n };\n SkeletonClipping.prototype.clipEndWithSlot = function (slot) {\n if (this.clipAttachment && this.clipAttachment.endSlot == slot.data)\n this.clipEnd();\n };\n SkeletonClipping.prototype.clipEnd = function () {\n if (!this.clipAttachment)\n return;\n this.clipAttachment = null;\n this.clippingPolygons = null;\n this.clippedVertices.length = 0;\n this.clippedTriangles.length = 0;\n this.clippingPolygon.length = 0;\n };\n SkeletonClipping.prototype.isClipping = function () {\n return this.clipAttachment != null;\n };\n SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) {\n var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices;\n var clippedTriangles = this.clippedTriangles;\n var polygons = this.clippingPolygons;\n var polygonsCount = this.clippingPolygons.length;\n var vertexSize = twoColor ? 12 : 8;\n var index = 0;\n clippedVertices.length = 0;\n clippedTriangles.length = 0;\n outer: for (var i = 0; i < trianglesLength; i += 3) {\n var vertexOffset = triangles[i] << 1;\n var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1];\n var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1];\n vertexOffset = triangles[i + 1] << 1;\n var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1];\n var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1];\n vertexOffset = triangles[i + 2] << 1;\n var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1];\n var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1];\n for (var p = 0; p < polygonsCount; p++) {\n var s = clippedVertices.length;\n if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) {\n var clipOutputLength = clipOutput.length;\n if (clipOutputLength == 0)\n continue;\n var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1;\n var d = 1 / (d0 * d2 + d1 * (y1 - y3));\n var clipOutputCount = clipOutputLength >> 1;\n var clipOutputItems = this.clipOutput;\n var clippedVerticesItems = Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize);\n for (var ii = 0; ii < clipOutputLength; ii += 2) {\n var x = clipOutputItems[ii], y = clipOutputItems[ii + 1];\n clippedVerticesItems[s] = x;\n clippedVerticesItems[s + 1] = y;\n clippedVerticesItems[s + 2] = light.r;\n clippedVerticesItems[s + 3] = light.g;\n clippedVerticesItems[s + 4] = light.b;\n clippedVerticesItems[s + 5] = light.a;\n var c0 = x - x3, c1 = y - y3;\n var a = (d0 * c0 + d1 * c1) * d;\n var b = (d4 * c0 + d2 * c1) * d;\n var c = 1 - a - b;\n clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c;\n clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c;\n if (twoColor) {\n clippedVerticesItems[s + 8] = dark.r;\n clippedVerticesItems[s + 9] = dark.g;\n clippedVerticesItems[s + 10] = dark.b;\n clippedVerticesItems[s + 11] = dark.a;\n }\n s += vertexSize;\n }\n s = clippedTriangles.length;\n var clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2));\n clipOutputCount--;\n for (var ii = 1; ii < clipOutputCount; ii++) {\n clippedTrianglesItems[s] = index;\n clippedTrianglesItems[s + 1] = (index + ii);\n clippedTrianglesItems[s + 2] = (index + ii + 1);\n s += 3;\n }\n index += clipOutputCount + 1;\n }\n else {\n var clippedVerticesItems = Utils.setArraySize(clippedVertices, s + 3 * vertexSize);\n clippedVerticesItems[s] = x1;\n clippedVerticesItems[s + 1] = y1;\n clippedVerticesItems[s + 2] = light.r;\n clippedVerticesItems[s + 3] = light.g;\n clippedVerticesItems[s + 4] = light.b;\n clippedVerticesItems[s + 5] = light.a;\n if (!twoColor) {\n clippedVerticesItems[s + 6] = u1;\n clippedVerticesItems[s + 7] = v1;\n clippedVerticesItems[s + 8] = x2;\n clippedVerticesItems[s + 9] = y2;\n clippedVerticesItems[s + 10] = light.r;\n clippedVerticesItems[s + 11] = light.g;\n clippedVerticesItems[s + 12] = light.b;\n clippedVerticesItems[s + 13] = light.a;\n clippedVerticesItems[s + 14] = u2;\n clippedVerticesItems[s + 15] = v2;\n clippedVerticesItems[s + 16] = x3;\n clippedVerticesItems[s + 17] = y3;\n clippedVerticesItems[s + 18] = light.r;\n clippedVerticesItems[s + 19] = light.g;\n clippedVerticesItems[s + 20] = light.b;\n clippedVerticesItems[s + 21] = light.a;\n clippedVerticesItems[s + 22] = u3;\n clippedVerticesItems[s + 23] = v3;\n }\n else {\n clippedVerticesItems[s + 6] = u1;\n clippedVerticesItems[s + 7] = v1;\n clippedVerticesItems[s + 8] = dark.r;\n clippedVerticesItems[s + 9] = dark.g;\n clippedVerticesItems[s + 10] = dark.b;\n clippedVerticesItems[s + 11] = dark.a;\n clippedVerticesItems[s + 12] = x2;\n clippedVerticesItems[s + 13] = y2;\n clippedVerticesItems[s + 14] = light.r;\n clippedVerticesItems[s + 15] = light.g;\n clippedVerticesItems[s + 16] = light.b;\n clippedVerticesItems[s + 17] = light.a;\n clippedVerticesItems[s + 18] = u2;\n clippedVerticesItems[s + 19] = v2;\n clippedVerticesItems[s + 20] = dark.r;\n clippedVerticesItems[s + 21] = dark.g;\n clippedVerticesItems[s + 22] = dark.b;\n clippedVerticesItems[s + 23] = dark.a;\n clippedVerticesItems[s + 24] = x3;\n clippedVerticesItems[s + 25] = y3;\n clippedVerticesItems[s + 26] = light.r;\n clippedVerticesItems[s + 27] = light.g;\n clippedVerticesItems[s + 28] = light.b;\n clippedVerticesItems[s + 29] = light.a;\n clippedVerticesItems[s + 30] = u3;\n clippedVerticesItems[s + 31] = v3;\n clippedVerticesItems[s + 32] = dark.r;\n clippedVerticesItems[s + 33] = dark.g;\n clippedVerticesItems[s + 34] = dark.b;\n clippedVerticesItems[s + 35] = dark.a;\n }\n s = clippedTriangles.length;\n var clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3);\n clippedTrianglesItems[s] = index;\n clippedTrianglesItems[s + 1] = (index + 1);\n clippedTrianglesItems[s + 2] = (index + 2);\n index += 3;\n continue outer;\n }\n }\n }\n };\n SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) {\n var originalOutput = output;\n var clipped = false;\n var input = null;\n if (clippingArea.length % 4 >= 2) {\n input = output;\n output = this.scratch;\n }\n else\n input = this.scratch;\n input.length = 0;\n input.push(x1);\n input.push(y1);\n input.push(x2);\n input.push(y2);\n input.push(x3);\n input.push(y3);\n input.push(x1);\n input.push(y1);\n output.length = 0;\n var clippingVertices = clippingArea;\n var clippingVerticesLast = clippingArea.length - 4;\n for (var i = 0;; i += 2) {\n var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1];\n var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3];\n var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2;\n var inputVertices = input;\n var inputVerticesLength = input.length - 2, outputStart = output.length;\n for (var ii = 0; ii < inputVerticesLength; ii += 2) {\n var inputX = inputVertices[ii], inputY = inputVertices[ii + 1];\n var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3];\n var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0;\n if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) {\n if (side2) {\n output.push(inputX2);\n output.push(inputY2);\n continue;\n }\n var c0 = inputY2 - inputY, c2 = inputX2 - inputX;\n var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY);\n if (Math.abs(s) > 0.000001) {\n var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s;\n output.push(edgeX + (edgeX2 - edgeX) * ua);\n output.push(edgeY + (edgeY2 - edgeY) * ua);\n }\n else {\n output.push(edgeX);\n output.push(edgeY);\n }\n }\n else if (side2) {\n var c0 = inputY2 - inputY, c2 = inputX2 - inputX;\n var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY);\n if (Math.abs(s) > 0.000001) {\n var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s;\n output.push(edgeX + (edgeX2 - edgeX) * ua);\n output.push(edgeY + (edgeY2 - edgeY) * ua);\n }\n else {\n output.push(edgeX);\n output.push(edgeY);\n }\n output.push(inputX2);\n output.push(inputY2);\n }\n clipped = true;\n }\n if (outputStart == output.length) {\n originalOutput.length = 0;\n return true;\n }\n output.push(output[0]);\n output.push(output[1]);\n if (i == clippingVerticesLast)\n break;\n var temp = output;\n output = input;\n output.length = 0;\n input = temp;\n }\n if (originalOutput != output) {\n originalOutput.length = 0;\n for (var i = 0, n = output.length - 2; i < n; i++)\n originalOutput[i] = output[i];\n }\n else\n originalOutput.length = originalOutput.length - 2;\n return clipped;\n };\n SkeletonClipping.makeClockwise = function (polygon) {\n var vertices = polygon;\n var verticeslength = polygon.length;\n var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0;\n for (var i = 0, n = verticeslength - 3; i < n; i += 2) {\n p1x = vertices[i];\n p1y = vertices[i + 1];\n p2x = vertices[i + 2];\n p2y = vertices[i + 3];\n area += p1x * p2y - p2x * p1y;\n }\n if (area < 0)\n return;\n for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) {\n var x = vertices[i], y = vertices[i + 1];\n var other = lastX - i;\n vertices[i] = vertices[other];\n vertices[i + 1] = vertices[other + 1];\n vertices[other] = x;\n vertices[other + 1] = y;\n }\n };\n return SkeletonClipping;\n}());\nexport { SkeletonClipping };\n//# sourceMappingURL=SkeletonClipping.js.map","import { Animation, AttachmentTimeline, RGBATimeline, RGBTimeline, AlphaTimeline, RGBA2Timeline, RGB2Timeline, RotateTimeline, TranslateTimeline, TranslateXTimeline, TranslateYTimeline, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, IkConstraintTimeline, TransformConstraintTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PathConstraintMixTimeline, DeformTimeline, DrawOrderTimeline, EventTimeline } from \"./Animation\";\nimport { BoneData, TransformMode } from \"./BoneData\";\nimport { EventData } from \"./EventData\";\nimport { Event } from \"./Event\";\nimport { IkConstraintData } from \"./IkConstraintData\";\nimport { PathConstraintData, PositionMode, SpacingMode, RotateMode } from \"./PathConstraintData\";\nimport { SkeletonData } from \"./SkeletonData\";\nimport { Skin } from \"./Skin\";\nimport { SlotData, BlendMode } from \"./SlotData\";\nimport { TransformConstraintData } from \"./TransformConstraintData\";\nimport { Utils, Color } from \"./Utils\";\nvar SkeletonJson = (function () {\n function SkeletonJson(attachmentLoader) {\n this.scale = 1;\n this.linkedMeshes = new Array();\n this.attachmentLoader = attachmentLoader;\n }\n SkeletonJson.prototype.readSkeletonData = function (json) {\n var scale = this.scale;\n var skeletonData = new SkeletonData();\n var root = typeof (json) === \"string\" ? JSON.parse(json) : json;\n var skeletonMap = root.skeleton;\n if (skeletonMap) {\n skeletonData.hash = skeletonMap.hash;\n skeletonData.version = skeletonMap.spine;\n skeletonData.x = skeletonMap.x;\n skeletonData.y = skeletonMap.y;\n skeletonData.width = skeletonMap.width;\n skeletonData.height = skeletonMap.height;\n skeletonData.fps = skeletonMap.fps;\n skeletonData.imagesPath = skeletonMap.images;\n }\n if (root.bones) {\n for (var i = 0; i < root.bones.length; i++) {\n var boneMap = root.bones[i];\n var parent_1 = null;\n var parentName = getValue(boneMap, \"parent\", null);\n if (parentName)\n parent_1 = skeletonData.findBone(parentName);\n var data = new BoneData(skeletonData.bones.length, boneMap.name, parent_1);\n data.length = getValue(boneMap, \"length\", 0) * scale;\n data.x = getValue(boneMap, \"x\", 0) * scale;\n data.y = getValue(boneMap, \"y\", 0) * scale;\n data.rotation = getValue(boneMap, \"rotation\", 0);\n data.scaleX = getValue(boneMap, \"scaleX\", 1);\n data.scaleY = getValue(boneMap, \"scaleY\", 1);\n data.shearX = getValue(boneMap, \"shearX\", 0);\n data.shearY = getValue(boneMap, \"shearY\", 0);\n data.transformMode = Utils.enumValue(TransformMode, getValue(boneMap, \"transform\", \"Normal\"));\n data.skinRequired = getValue(boneMap, \"skin\", false);\n var color = getValue(boneMap, \"color\", null);\n if (color)\n data.color.setFromString(color);\n skeletonData.bones.push(data);\n }\n }\n if (root.slots) {\n for (var i = 0; i < root.slots.length; i++) {\n var slotMap = root.slots[i];\n var boneData = skeletonData.findBone(slotMap.bone);\n var data = new SlotData(skeletonData.slots.length, slotMap.name, boneData);\n var color = getValue(slotMap, \"color\", null);\n if (color)\n data.color.setFromString(color);\n var dark = getValue(slotMap, \"dark\", null);\n if (dark)\n data.darkColor = Color.fromString(dark);\n data.attachmentName = getValue(slotMap, \"attachment\", null);\n data.blendMode = Utils.enumValue(BlendMode, getValue(slotMap, \"blend\", \"normal\"));\n skeletonData.slots.push(data);\n }\n }\n if (root.ik) {\n for (var i = 0; i < root.ik.length; i++) {\n var constraintMap = root.ik[i];\n var data = new IkConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (var ii = 0; ii < constraintMap.bones.length; ii++)\n data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));\n data.target = skeletonData.findBone(constraintMap.target);\n data.mix = getValue(constraintMap, \"mix\", 1);\n data.softness = getValue(constraintMap, \"softness\", 0) * scale;\n data.bendDirection = getValue(constraintMap, \"bendPositive\", true) ? 1 : -1;\n data.compress = getValue(constraintMap, \"compress\", false);\n data.stretch = getValue(constraintMap, \"stretch\", false);\n data.uniform = getValue(constraintMap, \"uniform\", false);\n skeletonData.ikConstraints.push(data);\n }\n }\n if (root.transform) {\n for (var i = 0; i < root.transform.length; i++) {\n var constraintMap = root.transform[i];\n var data = new TransformConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (var ii = 0; ii < constraintMap.bones.length; ii++)\n data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));\n var targetName = constraintMap.target;\n data.target = skeletonData.findBone(targetName);\n data.local = getValue(constraintMap, \"local\", false);\n data.relative = getValue(constraintMap, \"relative\", false);\n data.offsetRotation = getValue(constraintMap, \"rotation\", 0);\n data.offsetX = getValue(constraintMap, \"x\", 0) * scale;\n data.offsetY = getValue(constraintMap, \"y\", 0) * scale;\n data.offsetScaleX = getValue(constraintMap, \"scaleX\", 0);\n data.offsetScaleY = getValue(constraintMap, \"scaleY\", 0);\n data.offsetShearY = getValue(constraintMap, \"shearY\", 0);\n data.mixRotate = getValue(constraintMap, \"mixRotate\", 1);\n data.mixX = getValue(constraintMap, \"mixX\", 1);\n data.mixY = getValue(constraintMap, \"mixY\", data.mixX);\n data.mixScaleX = getValue(constraintMap, \"mixScaleX\", 1);\n data.mixScaleY = getValue(constraintMap, \"mixScaleY\", data.mixScaleX);\n data.mixShearY = getValue(constraintMap, \"mixShearY\", 1);\n skeletonData.transformConstraints.push(data);\n }\n }\n if (root.path) {\n for (var i = 0; i < root.path.length; i++) {\n var constraintMap = root.path[i];\n var data = new PathConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (var ii = 0; ii < constraintMap.bones.length; ii++)\n data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));\n var targetName = constraintMap.target;\n data.target = skeletonData.findSlot(targetName);\n data.positionMode = Utils.enumValue(PositionMode, getValue(constraintMap, \"positionMode\", \"Percent\"));\n data.spacingMode = Utils.enumValue(SpacingMode, getValue(constraintMap, \"spacingMode\", \"Length\"));\n data.rotateMode = Utils.enumValue(RotateMode, getValue(constraintMap, \"rotateMode\", \"Tangent\"));\n data.offsetRotation = getValue(constraintMap, \"rotation\", 0);\n data.position = getValue(constraintMap, \"position\", 0);\n if (data.positionMode == PositionMode.Fixed)\n data.position *= scale;\n data.spacing = getValue(constraintMap, \"spacing\", 0);\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed)\n data.spacing *= scale;\n data.mixRotate = getValue(constraintMap, \"mixRotate\", 1);\n data.mixX = getValue(constraintMap, \"mixX\", 1);\n data.mixY = getValue(constraintMap, \"mixY\", data.mixX);\n skeletonData.pathConstraints.push(data);\n }\n }\n if (root.skins) {\n for (var i = 0; i < root.skins.length; i++) {\n var skinMap = root.skins[i];\n var skin = new Skin(skinMap.name);\n if (skinMap.bones) {\n for (var ii = 0; ii < skinMap.bones.length; ii++)\n skin.bones.push(skeletonData.findBone(skinMap.bones[ii]));\n }\n if (skinMap.ik) {\n for (var ii = 0; ii < skinMap.ik.length; ii++)\n skin.constraints.push(skeletonData.findIkConstraint(skinMap.ik[ii]));\n }\n if (skinMap.transform) {\n for (var ii = 0; ii < skinMap.transform.length; ii++)\n skin.constraints.push(skeletonData.findTransformConstraint(skinMap.transform[ii]));\n }\n if (skinMap.path) {\n for (var ii = 0; ii < skinMap.path.length; ii++)\n skin.constraints.push(skeletonData.findPathConstraint(skinMap.path[ii]));\n }\n for (var slotName in skinMap.attachments) {\n var slot = skeletonData.findSlot(slotName);\n var slotMap = skinMap.attachments[slotName];\n for (var entryName in slotMap) {\n var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData);\n if (attachment)\n skin.setAttachment(slot.index, entryName, attachment);\n }\n }\n skeletonData.skins.push(skin);\n if (skin.name == \"default\")\n skeletonData.defaultSkin = skin;\n }\n }\n for (var i = 0, n = this.linkedMeshes.length; i < n; i++) {\n var linkedMesh = this.linkedMeshes[i];\n var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);\n var parent_2 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);\n linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_2 : linkedMesh.mesh;\n linkedMesh.mesh.setParentMesh(parent_2);\n linkedMesh.mesh.updateUVs();\n }\n this.linkedMeshes.length = 0;\n if (root.events) {\n for (var eventName in root.events) {\n var eventMap = root.events[eventName];\n var data = new EventData(eventName);\n data.intValue = getValue(eventMap, \"int\", 0);\n data.floatValue = getValue(eventMap, \"float\", 0);\n data.stringValue = getValue(eventMap, \"string\", \"\");\n data.audioPath = getValue(eventMap, \"audio\", null);\n if (data.audioPath) {\n data.volume = getValue(eventMap, \"volume\", 1);\n data.balance = getValue(eventMap, \"balance\", 0);\n }\n skeletonData.events.push(data);\n }\n }\n if (root.animations) {\n for (var animationName in root.animations) {\n var animationMap = root.animations[animationName];\n this.readAnimation(animationMap, animationName, skeletonData);\n }\n }\n return skeletonData;\n };\n SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) {\n var scale = this.scale;\n name = getValue(map, \"name\", name);\n switch (getValue(map, \"type\", \"region\")) {\n case \"region\": {\n var path = getValue(map, \"path\", name);\n var region = this.attachmentLoader.newRegionAttachment(skin, name, path);\n if (!region)\n return null;\n region.path = path;\n region.x = getValue(map, \"x\", 0) * scale;\n region.y = getValue(map, \"y\", 0) * scale;\n region.scaleX = getValue(map, \"scaleX\", 1);\n region.scaleY = getValue(map, \"scaleY\", 1);\n region.rotation = getValue(map, \"rotation\", 0);\n region.width = map.width * scale;\n region.height = map.height * scale;\n var color = getValue(map, \"color\", null);\n if (color)\n region.color.setFromString(color);\n region.updateOffset();\n return region;\n }\n case \"boundingbox\": {\n var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\n if (!box)\n return null;\n this.readVertices(map, box, map.vertexCount << 1);\n var color = getValue(map, \"color\", null);\n if (color)\n box.color.setFromString(color);\n return box;\n }\n case \"mesh\":\n case \"linkedmesh\": {\n var path = getValue(map, \"path\", name);\n var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n if (!mesh)\n return null;\n mesh.path = path;\n var color = getValue(map, \"color\", null);\n if (color)\n mesh.color.setFromString(color);\n mesh.width = getValue(map, \"width\", 0) * scale;\n mesh.height = getValue(map, \"height\", 0) * scale;\n var parent_3 = getValue(map, \"parent\", null);\n if (parent_3) {\n this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, \"skin\", null), slotIndex, parent_3, getValue(map, \"deform\", true)));\n return mesh;\n }\n var uvs = map.uvs;\n this.readVertices(map, mesh, uvs.length);\n mesh.triangles = map.triangles;\n mesh.regionUVs = uvs;\n mesh.updateUVs();\n mesh.edges = getValue(map, \"edges\", null);\n mesh.hullLength = getValue(map, \"hull\", 0) * 2;\n return mesh;\n }\n case \"path\": {\n var path = this.attachmentLoader.newPathAttachment(skin, name);\n if (!path)\n return null;\n path.closed = getValue(map, \"closed\", false);\n path.constantSpeed = getValue(map, \"constantSpeed\", true);\n var vertexCount = map.vertexCount;\n this.readVertices(map, path, vertexCount << 1);\n var lengths = Utils.newArray(vertexCount / 3, 0);\n for (var i = 0; i < map.lengths.length; i++)\n lengths[i] = map.lengths[i] * scale;\n path.lengths = lengths;\n var color = getValue(map, \"color\", null);\n if (color)\n path.color.setFromString(color);\n return path;\n }\n case \"point\": {\n var point = this.attachmentLoader.newPointAttachment(skin, name);\n if (!point)\n return null;\n point.x = getValue(map, \"x\", 0) * scale;\n point.y = getValue(map, \"y\", 0) * scale;\n point.rotation = getValue(map, \"rotation\", 0);\n var color = getValue(map, \"color\", null);\n if (color)\n point.color.setFromString(color);\n return point;\n }\n case \"clipping\": {\n var clip = this.attachmentLoader.newClippingAttachment(skin, name);\n if (!clip)\n return null;\n var end = getValue(map, \"end\", null);\n if (end)\n clip.endSlot = skeletonData.findSlot(end);\n var vertexCount = map.vertexCount;\n this.readVertices(map, clip, vertexCount << 1);\n var color = getValue(map, \"color\", null);\n if (color)\n clip.color.setFromString(color);\n return clip;\n }\n }\n return null;\n };\n SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) {\n var scale = this.scale;\n attachment.worldVerticesLength = verticesLength;\n var vertices = map.vertices;\n if (verticesLength == vertices.length) {\n var scaledVertices = Utils.toFloatArray(vertices);\n if (scale != 1) {\n for (var i = 0, n = vertices.length; i < n; i++)\n scaledVertices[i] *= scale;\n }\n attachment.vertices = scaledVertices;\n return;\n }\n var weights = new Array();\n var bones = new Array();\n for (var i = 0, n = vertices.length; i < n;) {\n var boneCount = vertices[i++];\n bones.push(boneCount);\n for (var 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 SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) {\n var scale = this.scale;\n var timelines = new Array();\n if (map.slots) {\n for (var slotName in map.slots) {\n var slotMap = map.slots[slotName];\n var slotIndex = skeletonData.findSlotIndex(slotName);\n for (var timelineName in slotMap) {\n var timelineMap = slotMap[timelineName];\n if (!timelineMap)\n continue;\n if (timelineName == \"attachment\") {\n var timeline = new AttachmentTimeline(timelineMap.length, slotIndex);\n for (var frame = 0; frame < timelineMap.length; frame++) {\n var keyMap = timelineMap[frame];\n timeline.setFrame(frame, getValue(keyMap, \"time\", 0), keyMap.name);\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgba\") {\n var timeline = new RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.color);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color.a);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.color);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1);\n }\n time = time2;\n color = newColor;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgb\") {\n var timeline = new RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.color);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.color);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n }\n time = time2;\n color = newColor;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"alpha\") {\n timelines.push(readTimeline1(timelineMap, new AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1));\n }\n else if (timelineName == \"rgba2\") {\n var timeline = new RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.light);\n var color2 = Color.fromString(keyMap.dark);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color.a, color2.r, color2.g, color2.b);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.light);\n var newColor2 = Color.fromString(nextMap.dark);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.r, newColor2.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.g, newColor2.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 6, time, time2, color2.b, newColor2.b, 1);\n }\n time = time2;\n color = newColor;\n color2 = newColor2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgb2\") {\n var timeline = new RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.light);\n var color2 = Color.fromString(keyMap.dark);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.light);\n var newColor2 = Color.fromString(nextMap.dark);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1);\n }\n time = time2;\n color = newColor;\n color2 = newColor2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n if (map.bones) {\n for (var boneName in map.bones) {\n var boneMap = map.bones[boneName];\n var boneIndex = skeletonData.findBoneIndex(boneName);\n for (var timelineName in boneMap) {\n var timelineMap = boneMap[timelineName];\n if (timelineMap.length == 0)\n continue;\n if (timelineName === \"rotate\") {\n timelines.push(readTimeline1(timelineMap, new RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1));\n }\n else if (timelineName === \"translate\") {\n var timeline = new TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 0, scale));\n }\n else if (timelineName === \"translatex\") {\n var timeline = new TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, scale));\n }\n else if (timelineName === \"translatey\") {\n var timeline = new TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, scale));\n }\n else if (timelineName === \"scale\") {\n var timeline = new ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 1, 1));\n }\n else if (timelineName === \"scalex\") {\n var timeline = new ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 1, 1));\n }\n else if (timelineName === \"scaley\") {\n var timeline = new ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 1, 1));\n }\n else if (timelineName === \"shear\") {\n var timeline = new ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 0, 1));\n }\n else if (timelineName === \"shearx\") {\n var timeline = new ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, 1));\n }\n else if (timelineName === \"sheary\") {\n var timeline = new ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, 1));\n }\n }\n }\n }\n if (map.ik) {\n for (var constraintName in map.ik) {\n var constraintMap = map.ik[constraintName];\n var keyMap = constraintMap[0];\n if (!keyMap)\n continue;\n var constraint = skeletonData.findIkConstraint(constraintName);\n var constraintIndex = skeletonData.ikConstraints.indexOf(constraint);\n var timeline = new IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex);\n var time = getValue(keyMap, \"time\", 0);\n var mix = getValue(keyMap, \"mix\", 1);\n var softness = getValue(keyMap, \"softness\", 0) * scale;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mix, softness, getValue(keyMap, \"bendPositive\", true) ? 1 : -1, getValue(keyMap, \"compress\", false), getValue(keyMap, \"stretch\", false));\n var nextMap = constraintMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var mix2 = getValue(nextMap, \"mix\", 1);\n var softness2 = getValue(nextMap, \"softness\", 0) * scale;\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale);\n }\n time = time2;\n mix = mix2;\n softness = softness2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n if (map.transform) {\n for (var constraintName in map.transform) {\n var timelineMap = map.transform[constraintName];\n var keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n var constraint = skeletonData.findTransformConstraint(constraintName);\n var constraintIndex = skeletonData.transformConstraints.indexOf(constraint);\n var timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex);\n var time = getValue(keyMap, \"time\", 0);\n var mixRotate = getValue(keyMap, \"mixRotate\", 1);\n var mixX = getValue(keyMap, \"mixX\", 1);\n var mixY = getValue(keyMap, \"mixY\", mixX);\n var mixScaleX = getValue(keyMap, \"mixScaleX\", 1);\n var mixScaleY = getValue(keyMap, \"mixScaleY\", mixScaleX);\n var mixShearY = getValue(keyMap, \"mixShearY\", 1);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var mixRotate2 = getValue(nextMap, \"mixRotate\", 1);\n var mixX2 = getValue(nextMap, \"mixX\", 1);\n var mixY2 = getValue(nextMap, \"mixY\", mixX2);\n var mixScaleX2 = getValue(nextMap, \"mixScaleX\", 1);\n var mixScaleY2 = getValue(nextMap, \"mixScaleY\", mixScaleX2);\n var mixShearY2 = getValue(nextMap, \"mixShearY\", 1);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n mixScaleX = mixScaleX2;\n mixScaleY = mixScaleY2;\n mixScaleX = mixScaleX2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n if (map.path) {\n for (var constraintName in map.path) {\n var constraintMap = map.path[constraintName];\n var constraint = skeletonData.findPathConstraint(constraintName);\n var constraintIndex = skeletonData.pathConstraints.indexOf(constraint);\n for (var timelineName in constraintMap) {\n var timelineMap = constraintMap[timelineName];\n var keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n if (timelineName === \"position\") {\n var timeline = new PathConstraintPositionTimeline(timelineMap.length, timelineMap.length, constraintIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.positionMode == PositionMode.Fixed ? scale : 1));\n }\n else if (timelineName === \"spacing\") {\n var timeline = new PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, constraintIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.spacingMode == SpacingMode.Length || constraint.spacingMode == SpacingMode.Fixed ? scale : 1));\n }\n else if (timelineName === \"mix\") {\n var timeline = new PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, constraintIndex);\n var time = getValue(keyMap, \"time\", 0);\n var mixRotate = getValue(keyMap, \"mixRotate\", 1);\n var mixX = getValue(keyMap, \"mixX\", 1);\n var mixY = getValue(keyMap, \"mixY\", mixX);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var mixRotate2 = getValue(nextMap, \"mixRotate\", 1);\n var mixX2 = getValue(nextMap, \"mixX\", 1);\n var mixY2 = getValue(nextMap, \"mixY\", mixX2);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n if (map.deform) {\n for (var deformName in map.deform) {\n var deformMap = map.deform[deformName];\n var skin = skeletonData.findSkin(deformName);\n for (var slotName in deformMap) {\n var slotMap = deformMap[slotName];\n var slotIndex = skeletonData.findSlotIndex(slotName);\n for (var timelineName in slotMap) {\n var timelineMap = slotMap[timelineName];\n var keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n var attachment = skin.getAttachment(slotIndex, timelineName);\n var weighted = attachment.bones;\n var vertices = attachment.vertices;\n var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;\n var timeline = new DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment);\n var time = getValue(keyMap, \"time\", 0);\n for (var frame = 0, bezier = 0;; frame++) {\n var deform = void 0;\n var verticesValue = getValue(keyMap, \"vertices\", null);\n if (!verticesValue)\n deform = weighted ? Utils.newFloatArray(deformLength) : vertices;\n else {\n deform = Utils.newFloatArray(deformLength);\n var start = getValue(keyMap, \"offset\", 0);\n Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length);\n if (scale != 1) {\n for (var i = start, n = i + verticesValue.length; i < n; i++)\n deform[i] *= scale;\n }\n if (!weighted) {\n for (var i = 0; i < deformLength; i++)\n deform[i] += vertices[i];\n }\n }\n timeline.setFrame(frame, time, deform);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var curve = keyMap.curve;\n if (curve)\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1);\n time = time2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n if (map.drawOrder) {\n var timeline = new DrawOrderTimeline(map.drawOrder.length);\n var slotCount = skeletonData.slots.length;\n var frame = 0;\n for (var i = 0; i < map.drawOrder.length; i++, frame++) {\n var drawOrderMap = map.drawOrder[i];\n var drawOrder = null;\n var offsets = getValue(drawOrderMap, \"offsets\", null);\n if (offsets) {\n drawOrder = Utils.newArray(slotCount, -1);\n var unchanged = Utils.newArray(slotCount - offsets.length, 0);\n var originalIndex = 0, unchangedIndex = 0;\n for (var ii = 0; ii < offsets.length; ii++) {\n var offsetMap = offsets[ii];\n var slotIndex = skeletonData.findSlotIndex(offsetMap.slot);\n while (originalIndex != slotIndex)\n unchanged[unchangedIndex++] = originalIndex++;\n drawOrder[originalIndex + offsetMap.offset] = originalIndex++;\n }\n while (originalIndex < slotCount)\n unchanged[unchangedIndex++] = originalIndex++;\n for (var ii = slotCount - 1; ii >= 0; ii--)\n if (drawOrder[ii] == -1)\n drawOrder[ii] = unchanged[--unchangedIndex];\n }\n timeline.setFrame(frame, getValue(drawOrderMap, \"time\", 0), drawOrder);\n }\n timelines.push(timeline);\n }\n if (map.events) {\n var timeline = new EventTimeline(map.events.length);\n var frame = 0;\n for (var i = 0; i < map.events.length; i++, frame++) {\n var eventMap = map.events[i];\n var eventData = skeletonData.findEvent(eventMap.name);\n var event_1 = new Event(Utils.toSinglePrecision(getValue(eventMap, \"time\", 0)), eventData);\n event_1.intValue = getValue(eventMap, \"int\", eventData.intValue);\n event_1.floatValue = getValue(eventMap, \"float\", eventData.floatValue);\n event_1.stringValue = getValue(eventMap, \"string\", eventData.stringValue);\n if (event_1.data.audioPath) {\n event_1.volume = getValue(eventMap, \"volume\", 1);\n event_1.balance = getValue(eventMap, \"balance\", 0);\n }\n timeline.setFrame(frame, event_1);\n }\n timelines.push(timeline);\n }\n var duration = 0;\n for (var i = 0, n = timelines.length; i < n; i++)\n duration = Math.max(duration, timelines[i].getDuration());\n skeletonData.animations.push(new Animation(name, timelines, duration));\n };\n return SkeletonJson;\n}());\nexport { SkeletonJson };\nvar LinkedMesh = (function () {\n function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) {\n this.mesh = mesh;\n this.skin = skin;\n this.slotIndex = slotIndex;\n this.parent = parent;\n this.inheritDeform = inheritDeform;\n }\n return LinkedMesh;\n}());\nfunction readTimeline1(keys, timeline, defaultValue, scale) {\n var keyMap = keys[0];\n var time = getValue(keyMap, \"time\", 0);\n var value = getValue(keyMap, \"value\", defaultValue) * scale;\n var bezier = 0;\n for (var frame = 0;; frame++) {\n timeline.setFrame(frame, time, value);\n var nextMap = keys[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n return timeline;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var value2 = getValue(nextMap, \"value\", defaultValue) * scale;\n if (keyMap.curve)\n bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale);\n time = time2;\n value = value2;\n keyMap = nextMap;\n }\n}\nfunction readTimeline2(keys, timeline, name1, name2, defaultValue, scale) {\n var keyMap = keys[0];\n var time = getValue(keyMap, \"time\", 0);\n var value1 = getValue(keyMap, name1, defaultValue) * scale;\n var value2 = getValue(keyMap, name2, defaultValue) * scale;\n var bezier = 0;\n for (var frame = 0;; frame++) {\n timeline.setFrame(frame, time, value1, value2);\n var nextMap = keys[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n return timeline;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var nvalue1 = getValue(nextMap, name1, defaultValue) * scale;\n var nvalue2 = getValue(nextMap, name2, defaultValue) * scale;\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale);\n }\n time = time2;\n value1 = nvalue1;\n value2 = nvalue2;\n keyMap = nextMap;\n }\n}\nfunction readCurve(curve, timeline, bezier, frame, value, time1, time2, value1, value2, scale) {\n if (curve == \"stepped\") {\n timeline.setStepped(frame);\n return bezier;\n }\n var i = value << 2;\n var cx1 = curve[i];\n var cy1 = curve[i + 1] * scale;\n var cx2 = curve[i + 2];\n var cy2 = curve[i + 3] * scale;\n timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2);\n return bezier + 1;\n}\nfunction getValue(map, property, defaultValue) {\n return map[property] !== undefined ? map[property] : defaultValue;\n}\n//# sourceMappingURL=SkeletonJson.js.map","(function () {\n if (typeof Math.fround === \"undefined\") {\n Math.fround = (function (array) {\n return function (x) {\n return array[0] = x, array[0];\n };\n })(new Float32Array(1));\n }\n})();\nexport {};\n//# sourceMappingURL=polyfills.js.map","import { MathUtils } from \"../Utils\";\nvar JitterEffect = (function () {\n function JitterEffect(jitterX, jitterY) {\n this.jitterX = 0;\n this.jitterY = 0;\n this.jitterX = jitterX;\n this.jitterY = jitterY;\n }\n JitterEffect.prototype.begin = function (skeleton) {\n };\n JitterEffect.prototype.transform = function (position, uv, light, dark) {\n position.x += MathUtils.randomTriangular(-this.jitterX, this.jitterY);\n position.y += MathUtils.randomTriangular(-this.jitterX, this.jitterY);\n };\n JitterEffect.prototype.end = function () {\n };\n return JitterEffect;\n}());\nexport { JitterEffect };\n//# sourceMappingURL=JitterEffect.js.map","import { PowOut, MathUtils } from \"../Utils\";\nvar SwirlEffect = (function () {\n function SwirlEffect(radius) {\n this.centerX = 0;\n this.centerY = 0;\n this.radius = 0;\n this.angle = 0;\n this.worldX = 0;\n this.worldY = 0;\n this.radius = radius;\n }\n SwirlEffect.prototype.begin = function (skeleton) {\n this.worldX = skeleton.x + this.centerX;\n this.worldY = skeleton.y + this.centerY;\n };\n SwirlEffect.prototype.transform = function (position, uv, light, dark) {\n var radAngle = this.angle * MathUtils.degreesToRadians;\n var x = position.x - this.worldX;\n var y = position.y - this.worldY;\n var dist = Math.sqrt(x * x + y * y);\n if (dist < this.radius) {\n var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius);\n var cos = Math.cos(theta);\n var sin = Math.sin(theta);\n position.x = cos * x - sin * y + this.worldX;\n position.y = sin * x + cos * y + this.worldY;\n }\n };\n SwirlEffect.prototype.end = function () {\n };\n SwirlEffect.interpolation = new PowOut(2);\n return SwirlEffect;\n}());\nexport { SwirlEffect };\n//# sourceMappingURL=SwirlEffect.js.map","export * from \"./Animation\";\nexport * from \"./AnimationState\";\nexport * from \"./AnimationStateData\";\nexport * from \"./AssetManager\";\nexport * from \"./AtlasAttachmentLoader\";\nexport * from \"./Bone\";\nexport * from \"./BoneData\";\nexport * from \"./ConstraintData\";\nexport * from \"./Event\";\nexport * from \"./EventData\";\nexport * from \"./IkConstraint\";\nexport * from \"./IkConstraintData\";\nexport * from \"./PathConstraint\";\nexport * from \"./PathConstraintData\";\nexport * from \"./Skeleton\";\nexport * from \"./SkeletonBinary\";\nexport * from \"./SkeletonBounds\";\nexport * from \"./SkeletonClipping\";\nexport * from \"./SkeletonData\";\nexport * from \"./SkeletonJson\";\nexport * from \"./Skin\";\nexport * from \"./Slot\";\nexport * from \"./SlotData\";\nexport * from \"./Texture\";\nexport * from \"./TextureAtlas\";\nexport * from \"./TransformConstraint\";\nexport * from \"./TransformConstraintData\";\nexport * from \"./Triangulator\";\nexport * from \"./Updatable\";\nexport * from \"./Utils\";\nexport * from \"./VertexEffect\";\nexport * from \"./polyfills\";\nexport * from \"./attachments/Attachment\";\nexport * from \"./attachments/AttachmentLoader\";\nexport * from \"./attachments/BoundingBoxAttachment\";\nexport * from \"./attachments/ClippingAttachment\";\nexport * from \"./attachments/MeshAttachment\";\nexport * from \"./attachments/PathAttachment\";\nexport * from \"./attachments/PointAttachment\";\nexport * from \"./attachments/RegionAttachment\";\nexport * from \"./vertexeffects/JitterEffect\";\nexport * from \"./vertexeffects/SwirlEffect\";\nconsole.log(\"Spine 4.0.1\");\n//# sourceMappingURL=index.js.map"],"names":["__extends","this","MixBlend","MixDirection","EventType","TextureFilter","TextureWrap","TransformMode","PositionMode","SpacingMode","RotateMode","BlendMode","LinkedMesh","readTimeline1","readTimeline2"],"mappings":"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gB,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7B,IAAI,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7B,IAAI,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7B,IAAI,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAI,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAI,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAI,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAI,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAI,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAI,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAI,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"} \ No newline at end of file +{"version":3,"file":"spine-core.js","sources":["../spine-core/dist/Utils.js","../spine-core/dist/attachments/Attachment.js","../spine-core/dist/Animation.js","../spine-core/dist/AnimationState.js","../spine-core/dist/AnimationStateData.js","../spine-core/dist/attachments/BoundingBoxAttachment.js","../spine-core/dist/attachments/ClippingAttachment.js","../spine-core/dist/Texture.js","../spine-core/dist/TextureAtlas.js","../spine-core/dist/attachments/MeshAttachment.js","../spine-core/dist/attachments/PathAttachment.js","../spine-core/dist/attachments/PointAttachment.js","../spine-core/dist/attachments/RegionAttachment.js","../spine-core/dist/AtlasAttachmentLoader.js","../spine-core/dist/BoneData.js","../spine-core/dist/Bone.js","../spine-core/dist/ConstraintData.js","../spine-core/dist/AssetManagerBase.js","../spine-core/dist/Event.js","../spine-core/dist/EventData.js","../spine-core/dist/IkConstraint.js","../spine-core/dist/IkConstraintData.js","../spine-core/dist/PathConstraintData.js","../spine-core/dist/PathConstraint.js","../spine-core/dist/Slot.js","../spine-core/dist/TransformConstraint.js","../spine-core/dist/Skeleton.js","../spine-core/dist/SkeletonData.js","../spine-core/dist/Skin.js","../spine-core/dist/SlotData.js","../spine-core/dist/TransformConstraintData.js","../spine-core/dist/SkeletonBinary.js","../spine-core/dist/SkeletonBounds.js","../spine-core/dist/Triangulator.js","../spine-core/dist/SkeletonClipping.js","../spine-core/dist/SkeletonJson.js","../spine-core/dist/polyfills.js","../spine-core/dist/vertexeffects/JitterEffect.js","../spine-core/dist/vertexeffects/SwirlEffect.js"],"sourcesContent":["/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar IntSet = /** @class */ (function () {\n function IntSet() {\n this.array = new Array();\n }\n IntSet.prototype.add = function (value) {\n var contains = this.contains(value);\n this.array[value | 0] = value | 0;\n return !contains;\n };\n IntSet.prototype.contains = function (value) {\n return this.array[value | 0] != undefined;\n };\n IntSet.prototype.remove = function (value) {\n this.array[value | 0] = undefined;\n };\n IntSet.prototype.clear = function () {\n this.array.length = 0;\n };\n return IntSet;\n}());\nexport { IntSet };\nvar StringSet = /** @class */ (function () {\n function StringSet() {\n this.entries = {};\n this.size = 0;\n }\n StringSet.prototype.add = function (value) {\n var contains = this.entries[value];\n this.entries[value] = true;\n if (!contains) {\n this.size++;\n return true;\n }\n return false;\n };\n StringSet.prototype.addAll = function (values) {\n var oldSize = this.size;\n for (var i = 0, n = values.length; i < n; i++)\n this.add(values[i]);\n return oldSize != this.size;\n };\n StringSet.prototype.contains = function (value) {\n return this.entries[value];\n };\n StringSet.prototype.clear = function () {\n this.entries = {};\n this.size = 0;\n };\n return StringSet;\n}());\nexport { StringSet };\nvar Color = /** @class */ (function () {\n function Color(r, g, b, a) {\n if (r === void 0) { r = 0; }\n if (g === void 0) { g = 0; }\n if (b === void 0) { b = 0; }\n if (a === void 0) { a = 0; }\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n Color.prototype.set = function (r, g, b, a) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n return this.clamp();\n };\n Color.prototype.setFromColor = function (c) {\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 Color.prototype.setFromString = function (hex) {\n hex = hex.charAt(0) == '#' ? hex.substr(1) : hex;\n this.r = parseInt(hex.substr(0, 2), 16) / 255;\n this.g = parseInt(hex.substr(2, 2), 16) / 255;\n this.b = parseInt(hex.substr(4, 2), 16) / 255;\n this.a = hex.length != 8 ? 1 : parseInt(hex.substr(6, 2), 16) / 255;\n return this;\n };\n Color.prototype.add = function (r, g, b, a) {\n this.r += r;\n this.g += g;\n this.b += b;\n this.a += a;\n return this.clamp();\n };\n Color.prototype.clamp = function () {\n if (this.r < 0)\n this.r = 0;\n else if (this.r > 1)\n this.r = 1;\n if (this.g < 0)\n this.g = 0;\n else if (this.g > 1)\n this.g = 1;\n if (this.b < 0)\n this.b = 0;\n else if (this.b > 1)\n this.b = 1;\n if (this.a < 0)\n this.a = 0;\n else if (this.a > 1)\n this.a = 1;\n return this;\n };\n Color.rgba8888ToColor = function (color, value) {\n color.r = ((value & 0xff000000) >>> 24) / 255;\n color.g = ((value & 0x00ff0000) >>> 16) / 255;\n color.b = ((value & 0x0000ff00) >>> 8) / 255;\n color.a = ((value & 0x000000ff)) / 255;\n };\n Color.rgb888ToColor = function (color, value) {\n color.r = ((value & 0x00ff0000) >>> 16) / 255;\n color.g = ((value & 0x0000ff00) >>> 8) / 255;\n color.b = ((value & 0x000000ff)) / 255;\n };\n Color.fromString = function (hex) {\n return new Color().setFromString(hex);\n };\n Color.WHITE = new Color(1, 1, 1, 1);\n Color.RED = new Color(1, 0, 0, 1);\n Color.GREEN = new Color(0, 1, 0, 1);\n Color.BLUE = new Color(0, 0, 1, 1);\n Color.MAGENTA = new Color(1, 0, 1, 1);\n return Color;\n}());\nexport { Color };\nvar MathUtils = /** @class */ (function () {\n function MathUtils() {\n }\n MathUtils.clamp = function (value, min, max) {\n if (value < min)\n return min;\n if (value > max)\n return max;\n return value;\n };\n MathUtils.cosDeg = function (degrees) {\n return Math.cos(degrees * MathUtils.degRad);\n };\n MathUtils.sinDeg = function (degrees) {\n return Math.sin(degrees * MathUtils.degRad);\n };\n MathUtils.signum = function (value) {\n return value > 0 ? 1 : value < 0 ? -1 : 0;\n };\n MathUtils.toInt = function (x) {\n return x > 0 ? Math.floor(x) : Math.ceil(x);\n };\n MathUtils.cbrt = function (x) {\n var y = Math.pow(Math.abs(x), 1 / 3);\n return x < 0 ? -y : y;\n };\n MathUtils.randomTriangular = function (min, max) {\n return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5);\n };\n MathUtils.randomTriangularWith = function (min, max, mode) {\n var u = Math.random();\n var d = max - min;\n if (u <= (mode - min) / d)\n return min + Math.sqrt(u * d * (mode - min));\n return max - Math.sqrt((1 - u) * d * (max - mode));\n };\n MathUtils.isPowerOfTwo = function (value) {\n return value && (value & (value - 1)) === 0;\n };\n MathUtils.PI = 3.1415927;\n MathUtils.PI2 = MathUtils.PI * 2;\n MathUtils.radiansToDegrees = 180 / MathUtils.PI;\n MathUtils.radDeg = MathUtils.radiansToDegrees;\n MathUtils.degreesToRadians = MathUtils.PI / 180;\n MathUtils.degRad = MathUtils.degreesToRadians;\n return MathUtils;\n}());\nexport { MathUtils };\nvar Interpolation = /** @class */ (function () {\n function Interpolation() {\n }\n Interpolation.prototype.apply = function (start, end, a) {\n return start + (end - start) * this.applyInternal(a);\n };\n return Interpolation;\n}());\nexport { Interpolation };\nvar Pow = /** @class */ (function (_super) {\n __extends(Pow, _super);\n function Pow(power) {\n var _this = _super.call(this) || this;\n _this.power = 2;\n _this.power = power;\n return _this;\n }\n Pow.prototype.applyInternal = function (a) {\n if (a <= 0.5)\n 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 return Pow;\n}(Interpolation));\nexport { Pow };\nvar PowOut = /** @class */ (function (_super) {\n __extends(PowOut, _super);\n function PowOut(power) {\n return _super.call(this, power) || this;\n }\n PowOut.prototype.applyInternal = function (a) {\n return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1;\n };\n return PowOut;\n}(Pow));\nexport { PowOut };\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) {\n for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) {\n dest[j] = source[i];\n }\n };\n Utils.arrayFill = function (array, fromIndex, toIndex, value) {\n for (var i = fromIndex; i < toIndex; i++)\n array[i] = value;\n };\n Utils.setArraySize = function (array, size, value) {\n if (value === void 0) { value = 0; }\n var oldSize = array.length;\n if (oldSize == size)\n return array;\n array.length = size;\n if (oldSize < size) {\n for (var i = oldSize; i < size; i++)\n array[i] = value;\n }\n return array;\n };\n Utils.ensureArrayCapacity = function (array, size, value) {\n if (value === void 0) { value = 0; }\n if (array.length >= size)\n return array;\n return Utils.setArraySize(array, size, value);\n };\n Utils.newArray = function (size, defaultValue) {\n var array = new Array(size);\n for (var i = 0; i < size; i++)\n array[i] = defaultValue;\n return array;\n };\n Utils.newFloatArray = function (size) {\n if (Utils.SUPPORTS_TYPED_ARRAYS)\n return new Float32Array(size);\n else {\n var array = new Array(size);\n for (var i = 0; i < array.length; i++)\n array[i] = 0;\n return array;\n }\n };\n Utils.newShortArray = function (size) {\n if (Utils.SUPPORTS_TYPED_ARRAYS)\n return new Int16Array(size);\n else {\n var array = new Array(size);\n for (var i = 0; i < array.length; i++)\n array[i] = 0;\n return array;\n }\n };\n Utils.toFloatArray = function (array) {\n return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array;\n };\n Utils.toSinglePrecision = function (value) {\n return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value;\n };\n // This function is used to fix WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109\n Utils.webkit602BugfixHelper = function (alpha, blend) {\n };\n Utils.contains = function (array, element, identity) {\n if (identity === void 0) { identity = true; }\n for (var i = 0; i < array.length; i++)\n if (array[i] == element)\n return true;\n return false;\n };\n Utils.enumValue = function (type, name) {\n return type[name[0].toUpperCase() + name.slice(1)];\n };\n Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== \"undefined\";\n return Utils;\n}());\nexport { Utils };\nvar DebugUtils = /** @class */ (function () {\n function DebugUtils() {\n }\n DebugUtils.logBones = function (skeleton) {\n for (var i = 0; i < skeleton.bones.length; i++) {\n var bone = skeleton.bones[i];\n console.log(bone.data.name + \", \" + bone.a + \", \" + bone.b + \", \" + bone.c + \", \" + bone.d + \", \" + bone.worldX + \", \" + bone.worldY);\n }\n };\n return DebugUtils;\n}());\nexport { DebugUtils };\nvar Pool = /** @class */ (function () {\n function Pool(instantiator) {\n this.items = new Array();\n this.instantiator = instantiator;\n }\n Pool.prototype.obtain = function () {\n return this.items.length > 0 ? this.items.pop() : this.instantiator();\n };\n Pool.prototype.free = function (item) {\n if (item.reset)\n item.reset();\n this.items.push(item);\n };\n Pool.prototype.freeAll = function (items) {\n for (var i = 0; i < items.length; i++)\n this.free(items[i]);\n };\n Pool.prototype.clear = function () {\n this.items.length = 0;\n };\n return Pool;\n}());\nexport { Pool };\nvar Vector2 = /** @class */ (function () {\n function Vector2(x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n this.x = x;\n this.y = y;\n }\n Vector2.prototype.set = function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n };\n Vector2.prototype.length = function () {\n var x = this.x;\n var y = this.y;\n return Math.sqrt(x * x + y * y);\n };\n Vector2.prototype.normalize = function () {\n var len = this.length();\n if (len != 0) {\n this.x /= len;\n this.y /= len;\n }\n return this;\n };\n return Vector2;\n}());\nexport { Vector2 };\nvar TimeKeeper = /** @class */ (function () {\n function TimeKeeper() {\n this.maxDelta = 0.064;\n this.framesPerSecond = 0;\n this.delta = 0;\n this.totalTime = 0;\n this.lastTime = Date.now() / 1000;\n this.frameCount = 0;\n this.frameTime = 0;\n }\n TimeKeeper.prototype.update = function () {\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)\n this.delta = this.maxDelta;\n this.lastTime = now;\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 return TimeKeeper;\n}());\nexport { TimeKeeper };\nvar WindowedMean = /** @class */ (function () {\n function WindowedMean(windowSize) {\n if (windowSize === void 0) { windowSize = 32; }\n this.addedValues = 0;\n this.lastValue = 0;\n this.mean = 0;\n this.dirty = true;\n this.values = new Array(windowSize);\n }\n WindowedMean.prototype.hasEnoughData = function () {\n return this.addedValues >= this.values.length;\n };\n WindowedMean.prototype.addValue = function (value) {\n if (this.addedValues < this.values.length)\n this.addedValues++;\n this.values[this.lastValue++] = value;\n if (this.lastValue > this.values.length - 1)\n this.lastValue = 0;\n this.dirty = true;\n };\n WindowedMean.prototype.getMean = function () {\n if (this.hasEnoughData()) {\n if (this.dirty) {\n var mean = 0;\n for (var i = 0; i < this.values.length; i++)\n mean += this.values[i];\n this.mean = mean / this.values.length;\n this.dirty = false;\n }\n return this.mean;\n }\n return 0;\n };\n return WindowedMean;\n}());\nexport { WindowedMean };\n//# sourceMappingURL=Utils.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Utils } from \"../Utils\";\n/** The base class for all attachments. */\nvar Attachment = /** @class */ (function () {\n function Attachment(name) {\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.name = name;\n }\n return Attachment;\n}());\nexport { Attachment };\n/** Base class for an attachment with vertices that are transformed by one or more bones and can be deformed by a slot's\n * {@link Slot#deform}. */\nvar VertexAttachment = /** @class */ (function (_super) {\n __extends(VertexAttachment, _super);\n function VertexAttachment(name) {\n var _this = _super.call(this, name) || this;\n /** The unique ID for this attachment. */\n _this.id = VertexAttachment.nextID++;\n /** The maximum number of world vertex values that can be output by\n * {@link #computeWorldVertices()} using the `count` parameter. */\n _this.worldVerticesLength = 0;\n /** Deform keys for the deform attachment are also applied to this attachment. May be null if no deform keys should be applied. */\n _this.deformAttachment = _this;\n return _this;\n }\n /** Transforms the attachment's local {@link #vertices} to world coordinates. If the slot's {@link Slot#deform} is\n * not empty, it is used to deform the vertices.\n *\n * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine\n * Runtimes Guide.\n * @param start The index of the first {@link #vertices} 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 #worldVerticesLength} - `start`.\n * @param worldVertices The output world vertices. Must have a length >= `offset` + `count` *\n * `stride` / 2.\n * @param offset The `worldVertices` index to begin writing values.\n * @param stride The number of `worldVertices` entries between the value pairs written. */\n VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) {\n count = offset + (count >> 1) * stride;\n var skeleton = slot.bone.skeleton;\n var deformArray = slot.deform;\n var vertices = this.vertices;\n var bones = this.bones;\n if (!bones) {\n if (deformArray.length > 0)\n vertices = deformArray;\n var bone = slot.bone;\n var x = bone.worldX;\n var y = bone.worldY;\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) {\n var vx = vertices[v_1], vy = vertices[v_1 + 1];\n worldVertices[w] = vx * a + vy * b + x;\n worldVertices[w + 1] = vx * c + vy * d + y;\n }\n return;\n }\n var v = 0, skip = 0;\n for (var i = 0; i < start; i += 2) {\n var n = bones[v];\n v += n + 1;\n skip += n;\n }\n var skeletonBones = skeleton.bones;\n if (deformArray.length == 0) {\n for (var w = offset, b = skip * 3; w < count; w += stride) {\n var wx = 0, wy = 0;\n var n = bones[v++];\n n += v;\n for (; v < n; v++, b += 3) {\n var bone = skeletonBones[bones[v]];\n var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2];\n wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight;\n wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight;\n }\n worldVertices[w] = wx;\n worldVertices[w + 1] = wy;\n }\n }\n else {\n var deform = deformArray;\n for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) {\n var wx = 0, wy = 0;\n var n = bones[v++];\n n += v;\n for (; v < n; v++, b += 3, f += 2) {\n var bone = skeletonBones[bones[v]];\n var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2];\n wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight;\n wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight;\n }\n worldVertices[w] = wx;\n worldVertices[w + 1] = wy;\n }\n }\n };\n /** Does not copy id (generated) or name (set on construction). **/\n VertexAttachment.prototype.copyTo = function (attachment) {\n if (this.bones) {\n attachment.bones = new Array(this.bones.length);\n Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length);\n }\n else\n attachment.bones = null;\n if (this.vertices) {\n attachment.vertices = Utils.newFloatArray(this.vertices.length);\n Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length);\n }\n else\n attachment.vertices = null;\n attachment.worldVerticesLength = this.worldVerticesLength;\n attachment.deformAttachment = this.deformAttachment;\n };\n VertexAttachment.nextID = 0;\n return VertexAttachment;\n}(Attachment));\nexport { VertexAttachment };\n//# sourceMappingURL=Attachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VertexAttachment } from \"./attachments/Attachment\";\nimport { StringSet, Utils, MathUtils } from \"./Utils\";\n/** A simple container for a list of timelines and a name. */\nvar Animation = /** @class */ (function () {\n function Animation(name, timelines, duration) {\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.name = name;\n this.setTimelines(timelines);\n this.duration = duration;\n }\n Animation.prototype.setTimelines = function (timelines) {\n if (!timelines)\n throw new Error(\"timelines cannot be null.\");\n this.timelines = timelines;\n this.timelineIds = new StringSet();\n for (var i = 0; i < timelines.length; i++)\n this.timelineIds.addAll(timelines[i].getPropertyIds());\n };\n Animation.prototype.hasTimeline = function (ids) {\n for (var i = 0; i < ids.length; i++)\n if (this.timelineIds.contains(ids[i]))\n return true;\n return false;\n };\n /** Applies all the animation's timelines to the specified skeleton.\n *\n * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}.\n * @param loop If true, the animation repeats after {@link #getDuration()}.\n * @param events May be null to ignore fired events. */\n Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) {\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n if (loop && this.duration != 0) {\n time %= this.duration;\n if (lastTime > 0)\n lastTime %= this.duration;\n }\n var timelines = this.timelines;\n for (var i = 0, n = timelines.length; i < n; i++)\n timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction);\n };\n return Animation;\n}());\nexport { Animation };\n/** Controls how a timeline value is mixed with the setup pose value or current pose value when a timeline's `alpha`\n * < 1.\n *\n * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */\nexport var MixBlend;\n(function (MixBlend) {\n /** Transitions from the setup value to the timeline value (the current value is not used). Before the first key, the setup\n * value is set. */\n MixBlend[MixBlend[\"setup\"] = 0] = \"setup\";\n /** Transitions from the current value to the timeline value. Before the first key, transitions from the current value to\n * the setup value. Timelines which perform instant transitions, such as {@link DrawOrderTimeline} or\n * {@link AttachmentTimeline}, use the setup value before the first key.\n *\n * `first` is intended for the first animations applied, not for animations layered on top of those. */\n MixBlend[MixBlend[\"first\"] = 1] = \"first\";\n /** Transitions from the current value to the timeline value. No change is made before the first key (the current value is\n * kept until the first key).\n *\n * `replace` is intended for animations layered on top of others, not for the first animations applied. */\n MixBlend[MixBlend[\"replace\"] = 2] = \"replace\";\n /** Transitions from the current value to the current value plus the timeline value. No change is made before the first key\n * (the current value is kept until the first key).\n *\n * `add` is intended for animations layered on top of others, not for the first animations applied. Properties\n * keyed by additive animations must be set manually or by another animation before applying the additive animations, else\n * the property values will increase continually. */\n MixBlend[MixBlend[\"add\"] = 3] = \"add\";\n})(MixBlend || (MixBlend = {}));\n/** Indicates whether a timeline's `alpha` is mixing out over time toward 0 (the setup or current pose value) or\n * mixing in toward 1 (the timeline's value).\n *\n * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. */\nexport var MixDirection;\n(function (MixDirection) {\n MixDirection[MixDirection[\"mixIn\"] = 0] = \"mixIn\";\n MixDirection[MixDirection[\"mixOut\"] = 1] = \"mixOut\";\n})(MixDirection || (MixDirection = {}));\nvar Property = {\n rotate: 0,\n x: 1,\n y: 2,\n scaleX: 3,\n scaleY: 4,\n shearX: 5,\n shearY: 6,\n rgb: 7,\n alpha: 8,\n rgb2: 9,\n attachment: 10,\n deform: 11,\n event: 12,\n drawOrder: 13,\n ikConstraint: 14,\n transformConstraint: 15,\n pathConstraintPosition: 16,\n pathConstraintSpacing: 17,\n pathConstraintMix: 18\n};\n/** The interface for all timelines. */\nvar Timeline = /** @class */ (function () {\n function Timeline(frameCount, propertyIds) {\n this.propertyIds = propertyIds;\n this.frames = Utils.newFloatArray(frameCount * this.getFrameEntries());\n }\n Timeline.prototype.getPropertyIds = function () {\n return this.propertyIds;\n };\n Timeline.prototype.getFrameEntries = function () {\n return 1;\n };\n Timeline.prototype.getFrameCount = function () {\n return this.frames.length / this.getFrameEntries();\n };\n Timeline.prototype.getDuration = function () {\n return this.frames[this.frames.length - this.getFrameEntries()];\n };\n Timeline.search1 = function (frames, time) {\n var n = frames.length;\n for (var i = 1; i < n; i++)\n if (frames[i] > time)\n return i - 1;\n return n - 1;\n };\n Timeline.search = function (frames, time, step) {\n var n = frames.length;\n for (var i = step; i < n; i += step)\n if (frames[i] > time)\n return i - step;\n return n - step;\n };\n return Timeline;\n}());\nexport { Timeline };\n/** The base class for timelines that use interpolation between key frame values. */\nvar CurveTimeline = /** @class */ (function (_super) {\n __extends(CurveTimeline, _super);\n function CurveTimeline(frameCount, bezierCount, propertyIds) {\n var _this = _super.call(this, frameCount, propertyIds) || this;\n _this.curves = Utils.newFloatArray(frameCount + bezierCount * 18 /*BEZIER_SIZE*/);\n _this.curves[frameCount - 1] = 1 /*STEPPED*/;\n return _this;\n }\n /** Sets the specified key frame to linear interpolation. */\n CurveTimeline.prototype.setLinear = function (frame) {\n this.curves[frame] = 0 /*LINEAR*/;\n };\n /** Sets the specified key frame to stepped interpolation. */\n CurveTimeline.prototype.setStepped = function (frame) {\n this.curves[frame] = 1 /*STEPPED*/;\n };\n /** Shrinks the storage for Bezier curves, for use when bezierCount (specified in the constructor) was larger\n * than the actual number of Bezier curves. */\n CurveTimeline.prototype.shrink = function (bezierCount) {\n var size = this.getFrameCount() + bezierCount * 18 /*BEZIER_SIZE*/;\n if (this.curves.length > size) {\n var newCurves = Utils.newFloatArray(size);\n Utils.arrayCopy(this.curves, 0, newCurves, 0, size);\n this.curves = newCurves;\n }\n };\n /** Stores the segments for the specified Bezier curve. For timelines that modify multiple values, there may be more than\n * one curve per frame.\n * @param bezier The ordinal of this Bezier curve for this timeline, between 0 and bezierCount - 1 (specified\n * in the constructor), inclusive.\n * @param frame Between 0 and frameCount - 1, inclusive.\n * @param value The index of the value for this frame that this curve is used for.\n * @param time1 The time for the first key.\n * @param value1 The value for the first key.\n * @param cx1 The time for the first Bezier handle.\n * @param cy1 The value for the first Bezier handle.\n * @param cx2 The time of the second Bezier handle.\n * @param cy2 The value for the second Bezier handle.\n * @param time2 The time for the second key.\n * @param value2 The value for the second key. */\n CurveTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) {\n var curves = this.curves;\n var i = this.getFrameCount() + bezier * 18 /*BEZIER_SIZE*/;\n if (value == 0)\n curves[frame] = 2 /*BEZIER*/ + i;\n var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03;\n var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006;\n var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy;\n var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667;\n var x = time1 + dx, y = value1 + dy;\n for (var n = i + 18 /*BEZIER_SIZE*/; i < n; i += 2) {\n curves[i] = x;\n curves[i + 1] = y;\n dx += ddx;\n dy += ddy;\n ddx += dddx;\n ddy += dddy;\n x += dx;\n y += dy;\n }\n };\n /** Returns the Bezier interpolated value for the specified time.\n * @param frameIndex The index into {@link #getFrames()} for the values of the frame before time.\n * @param valueOffset The offset from frameIndex to the value this curve is used for.\n * @param i The index of the Bezier segments. See {@link #getCurveType(int)}. */\n CurveTimeline.prototype.getBezierValue = function (time, frameIndex, valueOffset, i) {\n var curves = this.curves;\n if (curves[i] > time) {\n var x_1 = this.frames[frameIndex], y_1 = this.frames[frameIndex + valueOffset];\n return y_1 + (time - x_1) / (curves[i] - x_1) * (curves[i + 1] - y_1);\n }\n var n = i + 18 /*BEZIER_SIZE*/;\n for (i += 2; i < n; i += 2) {\n if (curves[i] >= time) {\n var x_2 = curves[i - 2], y_2 = curves[i - 1];\n return y_2 + (time - x_2) / (curves[i] - x_2) * (curves[i + 1] - y_2);\n }\n }\n frameIndex += this.getFrameEntries();\n var x = curves[n - 2], y = curves[n - 1];\n return y + (time - x) / (this.frames[frameIndex] - x) * (this.frames[frameIndex + valueOffset] - y);\n };\n return CurveTimeline;\n}(Timeline));\nexport { CurveTimeline };\nvar CurveTimeline1 = /** @class */ (function (_super) {\n __extends(CurveTimeline1, _super);\n function CurveTimeline1(frameCount, bezierCount, propertyId) {\n return _super.call(this, frameCount, bezierCount, [propertyId]) || this;\n }\n CurveTimeline1.prototype.getFrameEntries = function () {\n return 2 /*ENTRIES*/;\n };\n /** Sets the time and value for the specified frame.\n * @param frame Between 0 and frameCount, inclusive.\n * @param time The frame time in seconds. */\n CurveTimeline1.prototype.setFrame = function (frame, time, value) {\n frame <<= 1;\n this.frames[frame] = time;\n this.frames[frame + 1 /*VALUE*/] = value;\n };\n /** Returns the interpolated value for the specified time. */\n CurveTimeline1.prototype.getCurveValue = function (time) {\n var frames = this.frames;\n var i = frames.length - 2;\n for (var ii = 2; ii <= i; ii += 2) {\n if (frames[ii] > time) {\n i = ii - 2;\n break;\n }\n }\n var curveType = this.curves[i >> 1];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i], value = frames[i + 1 /*VALUE*/];\n return value + (time - before) / (frames[i + 2 /*ENTRIES*/] - before) * (frames[i + 2 /*ENTRIES*/ + 1 /*VALUE*/] - value);\n case 1 /*STEPPED*/:\n return frames[i + 1 /*VALUE*/];\n }\n return this.getBezierValue(time, i, 1 /*VALUE*/, curveType - 2 /*BEZIER*/);\n };\n return CurveTimeline1;\n}(CurveTimeline));\nexport { CurveTimeline1 };\n/** The base class for a {@link CurveTimeline} which sets two properties. */\nvar CurveTimeline2 = /** @class */ (function (_super) {\n __extends(CurveTimeline2, _super);\n /** @param bezierCount The maximum number of Bezier curves. See {@link #shrink(int)}.\n * @param propertyIds Unique identifiers for the properties the timeline modifies. */\n function CurveTimeline2(frameCount, bezierCount, propertyId1, propertyId2) {\n return _super.call(this, frameCount, bezierCount, [propertyId1, propertyId2]) || this;\n }\n CurveTimeline2.prototype.getFrameEntries = function () {\n return 3 /*ENTRIES*/;\n };\n /** Sets the time and values for the specified frame.\n * @param frame Between 0 and frameCount, inclusive.\n * @param time The frame time in seconds. */\n CurveTimeline2.prototype.setFrame = function (frame, time, value1, value2) {\n frame *= 3 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*VALUE1*/] = value1;\n this.frames[frame + 2 /*VALUE2*/] = value2;\n };\n return CurveTimeline2;\n}(CurveTimeline));\nexport { CurveTimeline2 };\n/** Changes a bone's local {@link Bone#rotation}. */\nvar RotateTimeline = /** @class */ (function (_super) {\n __extends(RotateTimeline, _super);\n function RotateTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.rotate + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.rotation = bone.data.rotation;\n return;\n case MixBlend.first:\n bone.rotation += (bone.data.rotation - bone.rotation) * alpha;\n }\n return;\n }\n var r = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.rotation = bone.data.rotation + r * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n r += bone.data.rotation - bone.rotation;\n case MixBlend.add:\n bone.rotation += r * alpha;\n }\n };\n return RotateTimeline;\n}(CurveTimeline1));\nexport { RotateTimeline };\n/** Changes a bone's local {@link Bone#x} and {@link Bone#y}. */\nvar TranslateTimeline = /** @class */ (function (_super) {\n __extends(TranslateTimeline, _super);\n function TranslateTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.x + \"|\" + boneIndex, Property.y + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x;\n bone.y = bone.data.y;\n return;\n case MixBlend.first:\n bone.x += (bone.data.x - bone.x) * alpha;\n bone.y += (bone.data.y - bone.y) * alpha;\n }\n return;\n }\n var x = 0, y = 0;\n var i = Timeline.search(frames, time, 3 /*ENTRIES*/);\n var curveType = this.curves[i / 3 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before);\n x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t;\n y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n break;\n default:\n x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x + x * alpha;\n bone.y = bone.data.y + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.x += (bone.data.x + x - bone.x) * alpha;\n bone.y += (bone.data.y + y - bone.y) * alpha;\n break;\n case MixBlend.add:\n bone.x += x * alpha;\n bone.y += y * alpha;\n }\n };\n return TranslateTimeline;\n}(CurveTimeline2));\nexport { TranslateTimeline };\n/** Changes a bone's local {@link Bone#x}. */\nvar TranslateXTimeline = /** @class */ (function (_super) {\n __extends(TranslateXTimeline, _super);\n function TranslateXTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.x + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n TranslateXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x;\n return;\n case MixBlend.first:\n bone.x += (bone.data.x - bone.x) * alpha;\n }\n return;\n }\n var x = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.x = bone.data.x + x * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.x += (bone.data.x + x - bone.x) * alpha;\n break;\n case MixBlend.add:\n bone.x += x * alpha;\n }\n };\n return TranslateXTimeline;\n}(CurveTimeline1));\nexport { TranslateXTimeline };\n/** Changes a bone's local {@link Bone#x}. */\nvar TranslateYTimeline = /** @class */ (function (_super) {\n __extends(TranslateYTimeline, _super);\n function TranslateYTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.y + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n TranslateYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.y = bone.data.y;\n return;\n case MixBlend.first:\n bone.y += (bone.data.y - bone.y) * alpha;\n }\n return;\n }\n var y = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.y = bone.data.y + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.y += (bone.data.y + y - bone.y) * alpha;\n break;\n case MixBlend.add:\n bone.y += y * alpha;\n }\n };\n return TranslateYTimeline;\n}(CurveTimeline1));\nexport { TranslateYTimeline };\n/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */\nvar ScaleTimeline = /** @class */ (function (_super) {\n __extends(ScaleTimeline, _super);\n function ScaleTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + \"|\" + boneIndex, Property.scaleY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.scaleX = bone.data.scaleX;\n bone.scaleY = bone.data.scaleY;\n return;\n case MixBlend.first:\n bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha;\n bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha;\n }\n return;\n }\n var x, y;\n var i = Timeline.search(frames, time, 3 /*ENTRIES*/);\n var curveType = this.curves[i / 3 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before);\n x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t;\n y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n break;\n default:\n x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n x *= bone.data.scaleX;\n y *= bone.data.scaleY;\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n bone.scaleX += x - bone.data.scaleX;\n bone.scaleY += y - bone.data.scaleY;\n }\n else {\n bone.scaleX = x;\n bone.scaleY = y;\n }\n }\n else {\n var bx = 0, by = 0;\n if (direction == MixDirection.mixOut) {\n switch (blend) {\n case MixBlend.setup:\n bx = bone.data.scaleX;\n by = bone.data.scaleY;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = bone.scaleX;\n by = bone.scaleY;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.add:\n bx = bone.scaleX;\n by = bone.scaleY;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bone.data.scaleX) * alpha;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - bone.data.scaleY) * alpha;\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup:\n bx = Math.abs(bone.data.scaleX) * MathUtils.signum(x);\n by = Math.abs(bone.data.scaleY) * MathUtils.signum(y);\n bone.scaleX = bx + (x - bx) * alpha;\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = Math.abs(bone.scaleX) * MathUtils.signum(x);\n by = Math.abs(bone.scaleY) * MathUtils.signum(y);\n bone.scaleX = bx + (x - bx) * alpha;\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.add:\n bx = MathUtils.signum(x);\n by = MathUtils.signum(y);\n bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha;\n bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha;\n }\n }\n }\n };\n return ScaleTimeline;\n}(CurveTimeline2));\nexport { ScaleTimeline };\n/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */\nvar ScaleXTimeline = /** @class */ (function (_super) {\n __extends(ScaleXTimeline, _super);\n function ScaleXTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ScaleXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.scaleX = bone.data.scaleX;\n return;\n case MixBlend.first:\n bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha;\n }\n return;\n }\n var x = this.getCurveValue(time) * bone.data.scaleX;\n if (alpha == 1) {\n if (blend == MixBlend.add)\n bone.scaleX += x - bone.data.scaleX;\n else\n bone.scaleX = x;\n }\n else {\n // Mixing out uses sign of setup or current pose, else use sign of key.\n var bx = 0;\n if (direction == MixDirection.mixOut) {\n switch (blend) {\n case MixBlend.setup:\n bx = bone.data.scaleX;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = bone.scaleX;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;\n break;\n case MixBlend.add:\n bx = bone.scaleX;\n bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bone.data.scaleX) * alpha;\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup:\n bx = Math.abs(bone.data.scaleX) * MathUtils.signum(x);\n bone.scaleX = bx + (x - bx) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bx = Math.abs(bone.scaleX) * MathUtils.signum(x);\n bone.scaleX = bx + (x - bx) * alpha;\n break;\n case MixBlend.add:\n bx = MathUtils.signum(x);\n bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha;\n }\n }\n }\n };\n return ScaleXTimeline;\n}(CurveTimeline1));\nexport { ScaleXTimeline };\n/** Changes a bone's local {@link Bone#scaleX)} and {@link Bone#scaleY}. */\nvar ScaleYTimeline = /** @class */ (function (_super) {\n __extends(ScaleYTimeline, _super);\n function ScaleYTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.scaleY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ScaleYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.scaleY = bone.data.scaleY;\n return;\n case MixBlend.first:\n bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha;\n }\n return;\n }\n var y = this.getCurveValue(time) * bone.data.scaleY;\n if (alpha == 1) {\n if (blend == MixBlend.add)\n bone.scaleY += y - bone.data.scaleY;\n else\n bone.scaleY = y;\n }\n else {\n // Mixing out uses sign of setup or current pose, else use sign of key.\n var by = 0;\n if (direction == MixDirection.mixOut) {\n switch (blend) {\n case MixBlend.setup:\n by = bone.data.scaleY;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n by = bone.scaleY;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;\n break;\n case MixBlend.add:\n by = bone.scaleY;\n bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - bone.data.scaleY) * alpha;\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup:\n by = Math.abs(bone.data.scaleY) * MathUtils.signum(y);\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n by = Math.abs(bone.scaleY) * MathUtils.signum(y);\n bone.scaleY = by + (y - by) * alpha;\n break;\n case MixBlend.add:\n by = MathUtils.signum(y);\n bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha;\n }\n }\n }\n };\n return ScaleYTimeline;\n}(CurveTimeline1));\nexport { ScaleYTimeline };\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nvar ShearTimeline = /** @class */ (function (_super) {\n __extends(ShearTimeline, _super);\n function ShearTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.shearX + \"|\" + boneIndex, Property.shearY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX;\n bone.shearY = bone.data.shearY;\n return;\n case MixBlend.first:\n bone.shearX += (bone.data.shearX - bone.shearX) * alpha;\n bone.shearY += (bone.data.shearY - bone.shearY) * alpha;\n }\n return;\n }\n var x = 0, y = 0;\n var i = Timeline.search(frames, time, 3 /*ENTRIES*/);\n var curveType = this.curves[i / 3 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n var t = (time - before) / (frames[i + 3 /*ENTRIES*/] - before);\n x += (frames[i + 3 /*ENTRIES*/ + 1 /*VALUE1*/] - x) * t;\n y += (frames[i + 3 /*ENTRIES*/ + 2 /*VALUE2*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n x = frames[i + 1 /*VALUE1*/];\n y = frames[i + 2 /*VALUE2*/];\n break;\n default:\n x = this.getBezierValue(time, i, 1 /*VALUE1*/, curveType - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 2 /*VALUE2*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX + x * alpha;\n bone.shearY = bone.data.shearY + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha;\n bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha;\n break;\n case MixBlend.add:\n bone.shearX += x * alpha;\n bone.shearY += y * alpha;\n }\n };\n return ShearTimeline;\n}(CurveTimeline2));\nexport { ShearTimeline };\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nvar ShearXTimeline = /** @class */ (function (_super) {\n __extends(ShearXTimeline, _super);\n function ShearXTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.shearX + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ShearXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX;\n return;\n case MixBlend.first:\n bone.shearX += (bone.data.shearX - bone.shearX) * alpha;\n }\n return;\n }\n var x = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.shearX = bone.data.shearX + x * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha;\n break;\n case MixBlend.add:\n bone.shearX += x * alpha;\n }\n };\n return ShearXTimeline;\n}(CurveTimeline1));\nexport { ShearXTimeline };\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nvar ShearYTimeline = /** @class */ (function (_super) {\n __extends(ShearYTimeline, _super);\n function ShearYTimeline(frameCount, bezierCount, boneIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.shearY + \"|\" + boneIndex) || this;\n _this.boneIndex = 0;\n _this.boneIndex = boneIndex;\n return _this;\n }\n ShearYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var bone = skeleton.bones[this.boneIndex];\n if (!bone.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.shearY = bone.data.shearY;\n return;\n case MixBlend.first:\n bone.shearY += (bone.data.shearY - bone.shearY) * alpha;\n }\n return;\n }\n var y = this.getCurveValue(time);\n switch (blend) {\n case MixBlend.setup:\n bone.shearY = bone.data.shearY + y * alpha;\n break;\n case MixBlend.first:\n case MixBlend.replace:\n bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha;\n break;\n case MixBlend.add:\n bone.shearY += y * alpha;\n }\n };\n return ShearYTimeline;\n}(CurveTimeline1));\nexport { ShearYTimeline };\n/** Changes a slot's {@link Slot#color}. */\nvar RGBATimeline = /** @class */ (function (_super) {\n __extends(RGBATimeline, _super);\n function RGBATimeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.alpha + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGBATimeline.prototype.getFrameEntries = function () {\n return 5 /*ENTRIES*/;\n };\n /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */\n RGBATimeline.prototype.setFrame = function (frame, time, r, g, b, a) {\n frame *= 5 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n this.frames[frame + 4 /*A*/] = a;\n };\n RGBATimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var color = slot.color;\n if (time < frames[0]) {\n var setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.setFromColor(setup);\n return;\n case MixBlend.first:\n color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha);\n }\n return;\n }\n var r = 0, g = 0, b = 0, a = 0;\n var i = Timeline.search(frames, time, 5 /*ENTRIES*/);\n var curveType = this.curves[i / 5 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n var t = (time - before) / (frames[i + 5 /*ENTRIES*/] - before);\n r += (frames[i + 5 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 5 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 5 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n a += (frames[i + 5 /*ENTRIES*/ + 4 /*A*/] - a) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n a = this.getBezierValue(time, i, 4 /*A*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n }\n if (alpha == 1)\n color.set(r, g, b, a);\n else {\n if (blend == MixBlend.setup)\n 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 return RGBATimeline;\n}(CurveTimeline));\nexport { RGBATimeline };\n/** Changes a slot's {@link Slot#color}. */\nvar RGBTimeline = /** @class */ (function (_super) {\n __extends(RGBTimeline, _super);\n function RGBTimeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGBTimeline.prototype.getFrameEntries = function () {\n return 4 /*ENTRIES*/;\n };\n /** Sets the time in seconds, red, green, blue, and alpha for the specified key frame. */\n RGBTimeline.prototype.setFrame = function (frame, time, r, g, b) {\n frame <<= 2;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n };\n RGBTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var color = slot.color;\n if (time < frames[0]) {\n var setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.r = setup.r;\n color.g = setup.g;\n color.b = setup.b;\n return;\n case MixBlend.first:\n color.r += (setup.r - color.r) * alpha;\n color.g += (setup.g - color.g) * alpha;\n color.b += (setup.b - color.b) * alpha;\n }\n return;\n }\n var r = 0, g = 0, b = 0;\n var i = Timeline.search(frames, time, 4 /*ENTRIES*/);\n var curveType = this.curves[i >> 2];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n var t = (time - before) / (frames[i + 4 /*ENTRIES*/] - before);\n r += (frames[i + 4 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 4 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 4 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n }\n if (alpha == 1) {\n color.r = r;\n color.g = g;\n color.b = b;\n }\n else {\n if (blend == MixBlend.setup) {\n var setup = slot.data.color;\n color.r = setup.r;\n color.g = setup.g;\n color.b = setup.b;\n }\n color.r += (r - color.r) * alpha;\n color.g += (g - color.g) * alpha;\n color.b += (b - color.b) * alpha;\n }\n };\n return RGBTimeline;\n}(CurveTimeline));\nexport { RGBTimeline };\n/** Changes a bone's local {@link Bone#shearX} and {@link Bone#shearY}. */\nvar AlphaTimeline = /** @class */ (function (_super) {\n __extends(AlphaTimeline, _super);\n function AlphaTimeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.alpha + \"|\" + slotIndex) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n AlphaTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var color = slot.color;\n if (time < this.frames[0]) { // Time is before first frame.\n var setup = slot.data.color;\n switch (blend) {\n case MixBlend.setup:\n color.a = setup.a;\n return;\n case MixBlend.first:\n color.a += (setup.a - color.a) * alpha;\n }\n return;\n }\n var a = this.getCurveValue(time);\n if (alpha == 1)\n color.a = a;\n else {\n if (blend == MixBlend.setup)\n color.a = slot.data.color.a;\n color.a += (a - color.a) * alpha;\n }\n };\n return AlphaTimeline;\n}(CurveTimeline1));\nexport { AlphaTimeline };\n/** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */\nvar RGBA2Timeline = /** @class */ (function (_super) {\n __extends(RGBA2Timeline, _super);\n function RGBA2Timeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.alpha + \"|\" + slotIndex,\n Property.rgb2 + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGBA2Timeline.prototype.getFrameEntries = function () {\n return 8 /*ENTRIES*/;\n };\n /** Sets the time in seconds, light, and dark colors for the specified key frame. */\n RGBA2Timeline.prototype.setFrame = function (frame, time, r, g, b, a, r2, g2, b2) {\n frame <<= 3;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n this.frames[frame + 4 /*A*/] = a;\n this.frames[frame + 5 /*R2*/] = r2;\n this.frames[frame + 6 /*G2*/] = g2;\n this.frames[frame + 7 /*B2*/] = b2;\n };\n RGBA2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var light = slot.color, dark = slot.darkColor;\n if (time < frames[0]) {\n var setupLight = slot.data.color, setupDark = slot.data.darkColor;\n switch (blend) {\n case MixBlend.setup:\n light.setFromColor(setupLight);\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n return;\n case MixBlend.first:\n light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha);\n dark.r += (setupDark.r - dark.r) * alpha;\n dark.g += (setupDark.g - dark.g) * alpha;\n dark.b += (setupDark.b - dark.b) * alpha;\n }\n return;\n }\n var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0;\n var i = Timeline.search(frames, time, 8 /*ENTRIES*/);\n var curveType = this.curves[i >> 3];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n r2 = frames[i + 5 /*R2*/];\n g2 = frames[i + 6 /*G2*/];\n b2 = frames[i + 7 /*B2*/];\n var t = (time - before) / (frames[i + 8 /*ENTRIES*/] - before);\n r += (frames[i + 8 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 8 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 8 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n a += (frames[i + 8 /*ENTRIES*/ + 4 /*A*/] - a) * t;\n r2 += (frames[i + 8 /*ENTRIES*/ + 5 /*R2*/] - r2) * t;\n g2 += (frames[i + 8 /*ENTRIES*/ + 6 /*G2*/] - g2) * t;\n b2 += (frames[i + 8 /*ENTRIES*/ + 7 /*B2*/] - b2) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n a = frames[i + 4 /*A*/];\n r2 = frames[i + 5 /*R2*/];\n g2 = frames[i + 6 /*G2*/];\n b2 = frames[i + 7 /*B2*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n a = this.getBezierValue(time, i, 4 /*A*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n r2 = this.getBezierValue(time, i, 5 /*R2*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/);\n g2 = this.getBezierValue(time, i, 6 /*G2*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/);\n b2 = this.getBezierValue(time, i, 7 /*B2*/, curveType + 18 /*BEZIER_SIZE*/ * 6 - 2 /*BEZIER*/);\n }\n if (alpha == 1) {\n light.set(r, g, b, a);\n dark.r = r2;\n dark.g = g2;\n dark.b = b2;\n }\n else {\n if (blend == MixBlend.setup) {\n light.setFromColor(slot.data.color);\n var setupDark = slot.data.darkColor;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n }\n light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha);\n dark.r += (r2 - dark.r) * alpha;\n dark.g += (g2 - dark.g) * alpha;\n dark.b += (b2 - dark.b) * alpha;\n }\n };\n return RGBA2Timeline;\n}(CurveTimeline));\nexport { RGBA2Timeline };\n/** Changes a slot's {@link Slot#color} and {@link Slot#darkColor} for two color tinting. */\nvar RGB2Timeline = /** @class */ (function (_super) {\n __extends(RGB2Timeline, _super);\n function RGB2Timeline(frameCount, bezierCount, slotIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.rgb + \"|\" + slotIndex,\n Property.rgb2 + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n return _this;\n }\n RGB2Timeline.prototype.getFrameEntries = function () {\n return 7 /*ENTRIES*/;\n };\n /** Sets the time in seconds, light, and dark colors for the specified key frame. */\n RGB2Timeline.prototype.setFrame = function (frame, time, r, g, b, r2, g2, b2) {\n frame *= 7 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*R*/] = r;\n this.frames[frame + 2 /*G*/] = g;\n this.frames[frame + 3 /*B*/] = b;\n this.frames[frame + 4 /*R2*/] = r2;\n this.frames[frame + 5 /*G2*/] = g2;\n this.frames[frame + 6 /*B2*/] = b2;\n };\n RGB2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var frames = this.frames;\n var light = slot.color, dark = slot.darkColor;\n if (time < frames[0]) {\n var setupLight = slot.data.color, setupDark = slot.data.darkColor;\n switch (blend) {\n case MixBlend.setup:\n light.r = setupLight.r;\n light.g = setupLight.g;\n light.b = setupLight.b;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n return;\n case MixBlend.first:\n light.r += (setupLight.r - light.r) * alpha;\n light.g += (setupLight.g - light.g) * alpha;\n light.b += (setupLight.b - light.b) * alpha;\n dark.r += (setupDark.r - dark.r) * alpha;\n dark.g += (setupDark.g - dark.g) * alpha;\n dark.b += (setupDark.b - dark.b) * alpha;\n }\n return;\n }\n var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0;\n var i = Timeline.search(frames, time, 7 /*ENTRIES*/);\n var curveType = this.curves[i / 7 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n r2 = frames[i + 4 /*R2*/];\n g2 = frames[i + 5 /*G2*/];\n b2 = frames[i + 6 /*B2*/];\n var t = (time - before) / (frames[i + 7 /*ENTRIES*/] - before);\n r += (frames[i + 7 /*ENTRIES*/ + 1 /*R*/] - r) * t;\n g += (frames[i + 7 /*ENTRIES*/ + 2 /*G*/] - g) * t;\n b += (frames[i + 7 /*ENTRIES*/ + 3 /*B*/] - b) * t;\n r2 += (frames[i + 7 /*ENTRIES*/ + 4 /*R2*/] - r2) * t;\n g2 += (frames[i + 7 /*ENTRIES*/ + 5 /*G2*/] - g2) * t;\n b2 += (frames[i + 7 /*ENTRIES*/ + 6 /*B2*/] - b2) * t;\n break;\n case 1 /*STEPPED*/:\n r = frames[i + 1 /*R*/];\n g = frames[i + 2 /*G*/];\n b = frames[i + 3 /*B*/];\n r2 = frames[i + 4 /*R2*/];\n g2 = frames[i + 5 /*G2*/];\n b2 = frames[i + 6 /*B2*/];\n break;\n default:\n r = this.getBezierValue(time, i, 1 /*R*/, curveType - 2 /*BEZIER*/);\n g = this.getBezierValue(time, i, 2 /*G*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n b = this.getBezierValue(time, i, 3 /*B*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n r2 = this.getBezierValue(time, i, 4 /*R2*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n g2 = this.getBezierValue(time, i, 5 /*G2*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/);\n b2 = this.getBezierValue(time, i, 6 /*B2*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/);\n }\n if (alpha == 1) {\n light.r = r;\n light.g = g;\n light.b = b;\n dark.r = r2;\n dark.g = g2;\n dark.b = b2;\n }\n else {\n if (blend == MixBlend.setup) {\n var setupLight = slot.data.color, setupDark = slot.data.darkColor;\n light.r = setupLight.r;\n light.g = setupLight.g;\n light.b = setupLight.b;\n dark.r = setupDark.r;\n dark.g = setupDark.g;\n dark.b = setupDark.b;\n }\n light.r += (r - light.r) * alpha;\n light.g += (g - light.g) * alpha;\n light.b += (b - light.b) * alpha;\n dark.r += (r2 - dark.r) * alpha;\n dark.g += (g2 - dark.g) * alpha;\n dark.b += (b2 - dark.b) * alpha;\n }\n };\n return RGB2Timeline;\n}(CurveTimeline));\nexport { RGB2Timeline };\n/** Changes a slot's {@link Slot#attachment}. */\nvar AttachmentTimeline = /** @class */ (function (_super) {\n __extends(AttachmentTimeline, _super);\n function AttachmentTimeline(frameCount, slotIndex) {\n var _this = _super.call(this, frameCount, [\n Property.attachment + \"|\" + slotIndex\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n _this.attachmentNames = new Array(frameCount);\n return _this;\n }\n AttachmentTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n /** Sets the time in seconds and the attachment name for the specified key frame. */\n AttachmentTimeline.prototype.setFrame = function (frame, time, attachmentName) {\n this.frames[frame] = time;\n this.attachmentNames[frame] = attachmentName;\n };\n AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n if (direction == MixDirection.mixOut) {\n if (blend == MixBlend.setup)\n this.setAttachment(skeleton, slot, slot.data.attachmentName);\n return;\n }\n if (time < this.frames[0]) {\n if (blend == MixBlend.setup || blend == MixBlend.first)\n this.setAttachment(skeleton, slot, slot.data.attachmentName);\n return;\n }\n this.setAttachment(skeleton, slot, this.attachmentNames[Timeline.search1(this.frames, time)]);\n };\n AttachmentTimeline.prototype.setAttachment = function (skeleton, slot, attachmentName) {\n slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName));\n };\n return AttachmentTimeline;\n}(Timeline));\nexport { AttachmentTimeline };\n/** Changes a slot's {@link Slot#deform} to deform a {@link VertexAttachment}. */\nvar DeformTimeline = /** @class */ (function (_super) {\n __extends(DeformTimeline, _super);\n function DeformTimeline(frameCount, bezierCount, slotIndex, attachment) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.deform + \"|\" + slotIndex + \"|\" + attachment.id\n ]) || this;\n _this.slotIndex = 0;\n _this.slotIndex = slotIndex;\n _this.attachment = attachment;\n _this.vertices = new Array(frameCount);\n return _this;\n }\n DeformTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n /** Sets the time in seconds and the vertices for the specified key frame.\n * @param vertices Vertex positions for an unweighted VertexAttachment, or deform offsets if it has weights. */\n DeformTimeline.prototype.setFrame = function (frame, time, vertices) {\n this.frames[frame] = time;\n this.vertices[frame] = vertices;\n };\n /** @param value1 Ignored (0 is used for a deform timeline).\n * @param value2 Ignored (1 is used for a deform timeline). */\n DeformTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) {\n var curves = this.curves;\n var i = this.getFrameCount() + bezier * 18 /*BEZIER_SIZE*/;\n if (value == 0)\n curves[frame] = 2 /*BEZIER*/ + i;\n var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06;\n var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018;\n var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy;\n var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667;\n var x = time1 + dx, y = dy;\n for (var n = i + 18 /*BEZIER_SIZE*/; i < n; i += 2) {\n curves[i] = x;\n curves[i + 1] = y;\n dx += ddx;\n dy += ddy;\n ddx += dddx;\n ddy += dddy;\n x += dx;\n y += dy;\n }\n };\n DeformTimeline.prototype.getCurvePercent = function (time, frame) {\n var curves = this.curves;\n var i = curves[frame];\n switch (i) {\n case 0 /*LINEAR*/:\n var x_3 = this.frames[frame];\n return (time - x_3) / (this.frames[frame + this.getFrameEntries()] - x_3);\n case 1 /*STEPPED*/:\n return 0;\n }\n i -= 2 /*BEZIER*/;\n if (curves[i] > time) {\n var x_4 = this.frames[frame];\n return curves[i + 1] * (time - x_4) / (curves[i] - x_4);\n }\n var n = i + 18 /*BEZIER_SIZE*/;\n for (i += 2; i < n; i += 2) {\n if (curves[i] >= time) {\n var x_5 = curves[i - 2], y_3 = curves[i - 1];\n return y_3 + (time - x_5) / (curves[i] - x_5) * (curves[i + 1] - y_3);\n }\n }\n var x = curves[n - 2], y = curves[n - 1];\n return y + (1 - y) * (time - x) / (this.frames[frame + this.getFrameEntries()] - x);\n };\n DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var slot = skeleton.slots[this.slotIndex];\n if (!slot.bone.active)\n return;\n var slotAttachment = slot.getAttachment();\n if (!(slotAttachment instanceof VertexAttachment) || slotAttachment.deformAttachment != this.attachment)\n return;\n var deform = slot.deform;\n if (deform.length == 0)\n blend = MixBlend.setup;\n var vertices = this.vertices;\n var vertexCount = vertices[0].length;\n var frames = this.frames;\n if (time < frames[0]) {\n var vertexAttachment = slotAttachment;\n switch (blend) {\n case MixBlend.setup:\n deform.length = 0;\n return;\n case MixBlend.first:\n if (alpha == 1) {\n deform.length = 0;\n return;\n }\n deform.length = vertexCount;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions.\n var setupVertices = vertexAttachment.vertices;\n for (var i = 0; i < vertexCount; i++)\n deform[i] += (setupVertices[i] - deform[i]) * alpha;\n }\n else {\n // Weighted deform offsets.\n alpha = 1 - alpha;\n for (var i = 0; i < vertexCount; i++)\n deform[i] *= alpha;\n }\n }\n return;\n }\n deform.length = vertexCount;\n if (time >= frames[frames.length - 1]) { // Time is after last frame.\n var lastVertices = vertices[frames.length - 1];\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment.vertices;\n for (var i_1 = 0; i_1 < vertexCount; i_1++)\n deform[i_1] += lastVertices[i_1] - setupVertices[i_1];\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_2 = 0; i_2 < vertexCount; i_2++)\n deform[i_2] += lastVertices[i_2];\n }\n }\n else\n Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount);\n }\n else {\n switch (blend) {\n case MixBlend.setup: {\n var vertexAttachment_1 = slotAttachment;\n if (!vertexAttachment_1.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment_1.vertices;\n for (var i_3 = 0; i_3 < vertexCount; i_3++) {\n var setup = setupVertices[i_3];\n deform[i_3] = setup + (lastVertices[i_3] - setup) * alpha;\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_4 = 0; i_4 < vertexCount; i_4++)\n deform[i_4] = lastVertices[i_4] * alpha;\n }\n break;\n }\n case MixBlend.first:\n case MixBlend.replace:\n for (var i_5 = 0; i_5 < vertexCount; i_5++)\n deform[i_5] += (lastVertices[i_5] - deform[i_5]) * alpha;\n break;\n case MixBlend.add:\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment.vertices;\n for (var i_6 = 0; i_6 < vertexCount; i_6++)\n deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha;\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_7 = 0; i_7 < vertexCount; i_7++)\n deform[i_7] += lastVertices[i_7] * alpha;\n }\n }\n }\n return;\n }\n // Interpolate between the previous frame and the current frame.\n var frame = Timeline.search1(frames, time);\n var percent = this.getCurvePercent(time, frame);\n var prevVertices = vertices[frame];\n var nextVertices = vertices[frame + 1];\n if (alpha == 1) {\n if (blend == MixBlend.add) {\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment.vertices;\n for (var i_8 = 0; i_8 < vertexCount; i_8++) {\n var prev = prevVertices[i_8];\n deform[i_8] += prev + (nextVertices[i_8] - prev) * percent - setupVertices[i_8];\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_9 = 0; i_9 < vertexCount; i_9++) {\n var prev = prevVertices[i_9];\n deform[i_9] += prev + (nextVertices[i_9] - prev) * percent;\n }\n }\n }\n else {\n for (var i_10 = 0; i_10 < vertexCount; i_10++) {\n var prev = prevVertices[i_10];\n deform[i_10] = prev + (nextVertices[i_10] - prev) * percent;\n }\n }\n }\n else {\n switch (blend) {\n case MixBlend.setup: {\n var vertexAttachment_2 = slotAttachment;\n if (!vertexAttachment_2.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment_2.vertices;\n for (var i_11 = 0; i_11 < vertexCount; i_11++) {\n var prev = prevVertices[i_11], setup = setupVertices[i_11];\n deform[i_11] = setup + (prev + (nextVertices[i_11] - prev) * percent - setup) * alpha;\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_12 = 0; i_12 < vertexCount; i_12++) {\n var prev = prevVertices[i_12];\n deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha;\n }\n }\n break;\n }\n case MixBlend.first:\n case MixBlend.replace:\n for (var i_13 = 0; i_13 < vertexCount; i_13++) {\n var prev = prevVertices[i_13];\n deform[i_13] += (prev + (nextVertices[i_13] - prev) * percent - deform[i_13]) * alpha;\n }\n break;\n case MixBlend.add:\n var vertexAttachment = slotAttachment;\n if (!vertexAttachment.bones) {\n // Unweighted vertex positions, with alpha.\n var setupVertices = vertexAttachment.vertices;\n for (var i_14 = 0; i_14 < vertexCount; i_14++) {\n var prev = prevVertices[i_14];\n deform[i_14] += (prev + (nextVertices[i_14] - prev) * percent - setupVertices[i_14]) * alpha;\n }\n }\n else {\n // Weighted deform offsets, with alpha.\n for (var i_15 = 0; i_15 < vertexCount; i_15++) {\n var prev = prevVertices[i_15];\n deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha;\n }\n }\n }\n }\n };\n return DeformTimeline;\n}(CurveTimeline));\nexport { DeformTimeline };\n/** Fires an {@link Event} when specific animation times are reached. */\nvar EventTimeline = /** @class */ (function (_super) {\n __extends(EventTimeline, _super);\n function EventTimeline(frameCount) {\n var _this = _super.call(this, frameCount, EventTimeline.propertyIds) || this;\n _this.events = new Array(frameCount);\n return _this;\n }\n EventTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n /** Sets the time in seconds and the event for the specified key frame. */\n EventTimeline.prototype.setFrame = function (frame, event) {\n this.frames[frame] = event.time;\n this.events[frame] = event;\n };\n /** Fires events for frames > `lastTime` and <= `time`. */\n EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n if (!firedEvents)\n return;\n var frames = this.frames;\n var frameCount = this.frames.length;\n if (lastTime > time) { // Fire events after last time for looped animations.\n this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction);\n lastTime = -1;\n }\n else if (lastTime >= frames[frameCount - 1]) // Last time is after last frame.\n return;\n if (time < frames[0])\n return; // Time is before first frame.\n var i = 0;\n if (lastTime < frames[0])\n i = 0;\n else {\n i = Timeline.search1(frames, lastTime) + 1;\n var frameTime = frames[i];\n while (i > 0) { // Fire multiple events with the same frame.\n if (frames[i - 1] != frameTime)\n break;\n i--;\n }\n }\n for (; i < frameCount && time >= frames[i]; i++)\n firedEvents.push(this.events[i]);\n };\n EventTimeline.propertyIds = [\"\" + Property.event];\n return EventTimeline;\n}(Timeline));\nexport { EventTimeline };\n/** Changes a skeleton's {@link Skeleton#drawOrder}. */\nvar DrawOrderTimeline = /** @class */ (function (_super) {\n __extends(DrawOrderTimeline, _super);\n function DrawOrderTimeline(frameCount) {\n var _this = _super.call(this, frameCount, DrawOrderTimeline.propertyIds) || this;\n _this.drawOrders = new Array(frameCount);\n return _this;\n }\n DrawOrderTimeline.prototype.getFrameCount = function () {\n return this.frames.length;\n };\n /** Sets the time in seconds and the draw order for the specified key frame.\n * @param drawOrder For each slot in {@link Skeleton#slots}, the index of the new draw order. May be null to use setup pose\n * draw order. */\n DrawOrderTimeline.prototype.setFrame = function (frame, time, drawOrder) {\n this.frames[frame] = time;\n this.drawOrders[frame] = drawOrder;\n };\n DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n if (direction == MixDirection.mixOut) {\n if (blend == MixBlend.setup)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n return;\n }\n if (time < this.frames[0]) {\n if (blend == MixBlend.setup || blend == MixBlend.first)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n return;\n }\n var drawOrderToSetupIndex = this.drawOrders[Timeline.search1(this.frames, time)];\n if (!drawOrderToSetupIndex)\n Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length);\n else {\n var drawOrder = skeleton.drawOrder;\n var slots = skeleton.slots;\n for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++)\n drawOrder[i] = slots[drawOrderToSetupIndex[i]];\n }\n };\n DrawOrderTimeline.propertyIds = [\"\" + Property.drawOrder];\n return DrawOrderTimeline;\n}(Timeline));\nexport { DrawOrderTimeline };\n/** Changes an IK constraint's {@link IkConstraint#mix}, {@link IkConstraint#softness},\n * {@link IkConstraint#bendDirection}, {@link IkConstraint#stretch}, and {@link IkConstraint#compress}. */\nvar IkConstraintTimeline = /** @class */ (function (_super) {\n __extends(IkConstraintTimeline, _super);\n function IkConstraintTimeline(frameCount, bezierCount, ikConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.ikConstraint + \"|\" + ikConstraintIndex\n ]) || this;\n _this.ikConstraintIndex = ikConstraintIndex;\n return _this;\n }\n IkConstraintTimeline.prototype.getFrameEntries = function () {\n return 6 /*ENTRIES*/;\n };\n /** Sets the time in seconds, mix, softness, bend direction, compress, and stretch for the specified key frame. */\n IkConstraintTimeline.prototype.setFrame = function (frame, time, mix, softness, bendDirection, compress, stretch) {\n frame *= 6 /*ENTRIES*/;\n this.frames[frame] = time;\n this.frames[frame + 1 /*MIX*/] = mix;\n this.frames[frame + 2 /*SOFTNESS*/] = softness;\n this.frames[frame + 3 /*BEND_DIRECTION*/] = bendDirection;\n this.frames[frame + 4 /*COMPRESS*/] = compress ? 1 : 0;\n this.frames[frame + 5 /*STRETCH*/] = stretch ? 1 : 0;\n };\n IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.ikConstraints[this.ikConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.mix = constraint.data.mix;\n constraint.softness = constraint.data.softness;\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n return;\n case MixBlend.first:\n constraint.mix += (constraint.data.mix - constraint.mix) * alpha;\n constraint.softness += (constraint.data.softness - constraint.softness) * alpha;\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n }\n return;\n }\n var mix = 0, softness = 0;\n var i = Timeline.search(frames, time, 6 /*ENTRIES*/);\n var curveType = this.curves[i / 6 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n mix = frames[i + 1 /*MIX*/];\n softness = frames[i + 2 /*SOFTNESS*/];\n var t = (time - before) / (frames[i + 6 /*ENTRIES*/] - before);\n mix += (frames[i + 6 /*ENTRIES*/ + 1 /*MIX*/] - mix) * t;\n softness += (frames[i + 6 /*ENTRIES*/ + 2 /*SOFTNESS*/] - softness) * t;\n break;\n case 1 /*STEPPED*/:\n mix = frames[i + 1 /*MIX*/];\n softness = frames[i + 2 /*SOFTNESS*/];\n break;\n default:\n mix = this.getBezierValue(time, i, 1 /*MIX*/, curveType - 2 /*BEZIER*/);\n softness = this.getBezierValue(time, i, 2 /*SOFTNESS*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n }\n if (blend == MixBlend.setup) {\n constraint.mix = constraint.data.mix + (mix - constraint.data.mix) * alpha;\n constraint.softness = constraint.data.softness + (softness - constraint.data.softness) * alpha;\n if (direction == MixDirection.mixOut) {\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n }\n else {\n constraint.bendDirection = frames[i + 3 /*BEND_DIRECTION*/];\n constraint.compress = frames[i + 4 /*COMPRESS*/] != 0;\n constraint.stretch = frames[i + 5 /*STRETCH*/] != 0;\n }\n }\n else {\n constraint.mix += (mix - constraint.mix) * alpha;\n constraint.softness += (softness - constraint.softness) * alpha;\n if (direction == MixDirection.mixIn) {\n constraint.bendDirection = frames[i + 3 /*BEND_DIRECTION*/];\n constraint.compress = frames[i + 4 /*COMPRESS*/] != 0;\n constraint.stretch = frames[i + 5 /*STRETCH*/] != 0;\n }\n }\n };\n return IkConstraintTimeline;\n}(CurveTimeline));\nexport { IkConstraintTimeline };\n/** Changes a transform constraint's {@link TransformConstraint#rotateMix}, {@link TransformConstraint#translateMix},\n * {@link TransformConstraint#scaleMix}, and {@link TransformConstraint#shearMix}. */\nvar TransformConstraintTimeline = /** @class */ (function (_super) {\n __extends(TransformConstraintTimeline, _super);\n function TransformConstraintTimeline(frameCount, bezierCount, transformConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.transformConstraint + \"|\" + transformConstraintIndex\n ]) || this;\n _this.transformConstraintIndex = transformConstraintIndex;\n return _this;\n }\n TransformConstraintTimeline.prototype.getFrameEntries = function () {\n return 7 /*ENTRIES*/;\n };\n /** The time in seconds, rotate mix, translate mix, scale mix, and shear mix for the specified key frame. */\n TransformConstraintTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) {\n var frames = this.frames;\n frame *= 7 /*ENTRIES*/;\n frames[frame] = time;\n frames[frame + 1 /*ROTATE*/] = mixRotate;\n frames[frame + 2 /*X*/] = mixX;\n frames[frame + 3 /*Y*/] = mixY;\n frames[frame + 4 /*SCALEX*/] = mixScaleX;\n frames[frame + 5 /*SCALEY*/] = mixScaleY;\n frames[frame + 6 /*SHEARY*/] = mixShearY;\n };\n TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.transformConstraints[this.transformConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n var data = constraint.data;\n switch (blend) {\n case MixBlend.setup:\n constraint.mixRotate = data.mixRotate;\n constraint.mixX = data.mixX;\n constraint.mixY = data.mixY;\n constraint.mixScaleX = data.mixScaleX;\n constraint.mixScaleY = data.mixScaleY;\n constraint.mixShearY = data.mixShearY;\n return;\n case MixBlend.first:\n constraint.mixRotate += (data.mixRotate - constraint.mixRotate) * alpha;\n constraint.mixX += (data.mixX - constraint.mixX) * alpha;\n constraint.mixY += (data.mixY - constraint.mixY) * alpha;\n constraint.mixScaleX += (data.mixScaleX - constraint.mixScaleX) * alpha;\n constraint.mixScaleY += (data.mixScaleY - constraint.mixScaleY) * alpha;\n constraint.mixShearY += (data.mixShearY - constraint.mixShearY) * alpha;\n }\n return;\n }\n var rotate, x, y, scaleX, scaleY, shearY;\n var i = Timeline.search(frames, time, 7 /*ENTRIES*/);\n var curveType = this.curves[i / 7 /*ENTRIES*/];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n scaleX = frames[i + 4 /*SCALEX*/];\n scaleY = frames[i + 5 /*SCALEY*/];\n shearY = frames[i + 6 /*SHEARY*/];\n var t = (time - before) / (frames[i + 7 /*ENTRIES*/] - before);\n rotate += (frames[i + 7 /*ENTRIES*/ + 1 /*ROTATE*/] - rotate) * t;\n x += (frames[i + 7 /*ENTRIES*/ + 2 /*X*/] - x) * t;\n y += (frames[i + 7 /*ENTRIES*/ + 3 /*Y*/] - y) * t;\n scaleX += (frames[i + 7 /*ENTRIES*/ + 4 /*SCALEX*/] - scaleX) * t;\n scaleY += (frames[i + 7 /*ENTRIES*/ + 5 /*SCALEY*/] - scaleY) * t;\n shearY += (frames[i + 7 /*ENTRIES*/ + 6 /*SHEARY*/] - shearY) * t;\n break;\n case 1 /*STEPPED*/:\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n scaleX = frames[i + 4 /*SCALEX*/];\n scaleY = frames[i + 5 /*SCALEY*/];\n shearY = frames[i + 6 /*SHEARY*/];\n break;\n default:\n rotate = this.getBezierValue(time, i, 1 /*ROTATE*/, curveType - 2 /*BEZIER*/);\n x = this.getBezierValue(time, i, 2 /*X*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 3 /*Y*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n scaleX = this.getBezierValue(time, i, 4 /*SCALEX*/, curveType + 18 /*BEZIER_SIZE*/ * 3 - 2 /*BEZIER*/);\n scaleY = this.getBezierValue(time, i, 5 /*SCALEY*/, curveType + 18 /*BEZIER_SIZE*/ * 4 - 2 /*BEZIER*/);\n shearY = this.getBezierValue(time, i, 6 /*SHEARY*/, curveType + 18 /*BEZIER_SIZE*/ * 5 - 2 /*BEZIER*/);\n }\n if (blend == MixBlend.setup) {\n var data = constraint.data;\n constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha;\n constraint.mixX = data.mixX + (x - data.mixX) * alpha;\n constraint.mixY = data.mixY + (y - data.mixY) * alpha;\n constraint.mixScaleX = data.mixScaleX + (scaleX - data.mixScaleX) * alpha;\n constraint.mixScaleY = data.mixScaleY + (scaleY - data.mixScaleY) * alpha;\n constraint.mixShearY = data.mixShearY + (shearY - data.mixShearY) * alpha;\n }\n else {\n constraint.mixRotate += (rotate - constraint.mixRotate) * alpha;\n constraint.mixX += (x - constraint.mixX) * alpha;\n constraint.mixY += (y - constraint.mixY) * alpha;\n constraint.mixScaleX += (scaleX - constraint.mixScaleX) * alpha;\n constraint.mixScaleY += (scaleY - constraint.mixScaleY) * alpha;\n constraint.mixShearY += (shearY - constraint.mixShearY) * alpha;\n }\n };\n return TransformConstraintTimeline;\n}(CurveTimeline));\nexport { TransformConstraintTimeline };\n/** Changes a path constraint's {@link PathConstraint#position}. */\nvar PathConstraintPositionTimeline = /** @class */ (function (_super) {\n __extends(PathConstraintPositionTimeline, _super);\n function PathConstraintPositionTimeline(frameCount, bezierCount, pathConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintPosition + \"|\" + pathConstraintIndex) || this;\n _this.pathConstraintIndex = pathConstraintIndex;\n return _this;\n }\n PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.pathConstraints[this.pathConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.position = constraint.data.position;\n return;\n case MixBlend.first:\n constraint.position += (constraint.data.position - constraint.position) * alpha;\n }\n return;\n }\n var position = this.getCurveValue(time);\n if (blend == MixBlend.setup)\n constraint.position = constraint.data.position + (position - constraint.data.position) * alpha;\n else\n constraint.position += (position - constraint.position) * alpha;\n };\n return PathConstraintPositionTimeline;\n}(CurveTimeline1));\nexport { PathConstraintPositionTimeline };\n/** Changes a path constraint's {@link PathConstraint#spacing}. */\nvar PathConstraintSpacingTimeline = /** @class */ (function (_super) {\n __extends(PathConstraintSpacingTimeline, _super);\n function PathConstraintSpacingTimeline(frameCount, bezierCount, pathConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintSpacing + \"|\" + pathConstraintIndex) || this;\n /** The index of the path constraint slot in {@link Skeleton#getPathConstraints()} that will be changed. */\n _this.pathConstraintIndex = 0;\n _this.pathConstraintIndex = pathConstraintIndex;\n return _this;\n }\n PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.pathConstraints[this.pathConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.spacing = constraint.data.spacing;\n return;\n case MixBlend.first:\n constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha;\n }\n return;\n }\n var spacing = this.getCurveValue(time);\n if (blend == MixBlend.setup)\n constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha;\n else\n constraint.spacing += (spacing - constraint.spacing) * alpha;\n };\n return PathConstraintSpacingTimeline;\n}(CurveTimeline1));\nexport { PathConstraintSpacingTimeline };\n/** Changes a transform constraint's {@link PathConstraint#getMixRotate()}, {@link PathConstraint#getMixX()}, and\n * {@link PathConstraint#getMixY()}. */\nvar PathConstraintMixTimeline = /** @class */ (function (_super) {\n __extends(PathConstraintMixTimeline, _super);\n function PathConstraintMixTimeline(frameCount, bezierCount, pathConstraintIndex) {\n var _this = _super.call(this, frameCount, bezierCount, [\n Property.pathConstraintMix + \"|\" + pathConstraintIndex\n ]) || this;\n /** The index of the path constraint slot in {@link Skeleton#getPathConstraints()} that will be changed. */\n _this.pathConstraintIndex = 0;\n _this.pathConstraintIndex = pathConstraintIndex;\n return _this;\n }\n PathConstraintMixTimeline.prototype.getFrameEntries = function () {\n return 4 /*ENTRIES*/;\n };\n PathConstraintMixTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY) {\n var frames = this.frames;\n frame <<= 2;\n frames[frame] = time;\n frames[frame + 1 /*ROTATE*/] = mixRotate;\n frames[frame + 2 /*X*/] = mixX;\n frames[frame + 3 /*Y*/] = mixY;\n };\n PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) {\n var constraint = skeleton.pathConstraints[this.pathConstraintIndex];\n if (!constraint.active)\n return;\n var frames = this.frames;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n constraint.mixRotate = constraint.data.mixRotate;\n constraint.mixX = constraint.data.mixX;\n constraint.mixY = constraint.data.mixY;\n return;\n case MixBlend.first:\n constraint.mixRotate += (constraint.data.mixRotate - constraint.mixRotate) * alpha;\n constraint.mixX += (constraint.data.mixX - constraint.mixX) * alpha;\n constraint.mixY += (constraint.data.mixY - constraint.mixY) * alpha;\n }\n return;\n }\n var rotate, x, y;\n var i = Timeline.search(frames, time, 4 /*ENTRIES*/);\n var curveType = this.curves[i >> 2];\n switch (curveType) {\n case 0 /*LINEAR*/:\n var before = frames[i];\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n var t = (time - before) / (frames[i + 4 /*ENTRIES*/] - before);\n rotate += (frames[i + 4 /*ENTRIES*/ + 1 /*ROTATE*/] - rotate) * t;\n x += (frames[i + 4 /*ENTRIES*/ + 2 /*X*/] - x) * t;\n y += (frames[i + 4 /*ENTRIES*/ + 3 /*Y*/] - y) * t;\n break;\n case 1 /*STEPPED*/:\n rotate = frames[i + 1 /*ROTATE*/];\n x = frames[i + 2 /*X*/];\n y = frames[i + 3 /*Y*/];\n break;\n default:\n rotate = this.getBezierValue(time, i, 1 /*ROTATE*/, curveType - 2 /*BEZIER*/);\n x = this.getBezierValue(time, i, 2 /*X*/, curveType + 18 /*BEZIER_SIZE*/ - 2 /*BEZIER*/);\n y = this.getBezierValue(time, i, 3 /*Y*/, curveType + 18 /*BEZIER_SIZE*/ * 2 - 2 /*BEZIER*/);\n }\n if (blend == MixBlend.setup) {\n var data = constraint.data;\n constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha;\n constraint.mixX = data.mixX + (x - data.mixX) * alpha;\n constraint.mixY = data.mixY + (y - data.mixY) * alpha;\n }\n else {\n constraint.mixRotate += (rotate - constraint.mixRotate) * alpha;\n constraint.mixX += (x - constraint.mixX) * alpha;\n constraint.mixY += (y - constraint.mixY) * alpha;\n }\n };\n return PathConstraintMixTimeline;\n}(CurveTimeline));\nexport { PathConstraintMixTimeline };\n//# sourceMappingURL=Animation.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Animation, MixBlend, AttachmentTimeline, MixDirection, RotateTimeline, DrawOrderTimeline, Timeline, EventTimeline } from \"./Animation\";\nimport { StringSet, Pool, Utils, MathUtils } from \"./Utils\";\n/** Applies animations over time, queues animations for later playback, mixes (crossfading) between animations, and applies\n * multiple animations on top of each other (layering).\n *\n * See [Applying Animations](http://esotericsoftware.com/spine-applying-animations/) in the Spine Runtimes Guide. */\nvar AnimationState = /** @class */ (function () {\n function AnimationState(data) {\n /** The list of tracks that currently have animations, which may contain null entries. */\n this.tracks = new Array();\n /** Multiplier for the delta time when the animation state is updated, causing time for all animations and mixes to play slower\n * or faster. Defaults to 1.\n *\n * See TrackEntry {@link TrackEntry#timeScale} for affecting a single animation. */\n this.timeScale = 1;\n this.unkeyedState = 0;\n this.events = new Array();\n this.listeners = new Array();\n this.queue = new EventQueue(this);\n this.propertyIDs = new StringSet();\n this.animationsChanged = false;\n this.trackEntryPool = new Pool(function () { return new TrackEntry(); });\n this.data = data;\n }\n AnimationState.emptyAnimation = function () {\n if (!_emptyAnimation)\n _emptyAnimation = new Animation(\"\", [], 0);\n return _emptyAnimation;\n };\n /** Increments each track entry {@link TrackEntry#trackTime()}, setting queued animations as current if needed. */\n AnimationState.prototype.update = function (delta) {\n delta *= this.timeScale;\n var tracks = this.tracks;\n for (var i = 0, n = tracks.length; i < n; i++) {\n var current = tracks[i];\n if (!current)\n continue;\n current.animationLast = current.nextAnimationLast;\n current.trackLast = current.nextTrackLast;\n var currentDelta = delta * current.timeScale;\n if (current.delay > 0) {\n current.delay -= currentDelta;\n if (current.delay > 0)\n continue;\n currentDelta = -current.delay;\n current.delay = 0;\n }\n var next = current.next;\n if (next) {\n // When the next entry's delay is passed, change to the next entry, preserving leftover time.\n var nextTime = current.trackLast - next.delay;\n if (nextTime >= 0) {\n next.delay = 0;\n next.trackTime += current.timeScale == 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale;\n current.trackTime += currentDelta;\n this.setCurrent(i, next, true);\n while (next.mixingFrom) {\n next.mixTime += delta;\n next = next.mixingFrom;\n }\n continue;\n }\n }\n else if (current.trackLast >= current.trackEnd && !current.mixingFrom) {\n tracks[i] = null;\n this.queue.end(current);\n this.clearNext(current);\n continue;\n }\n if (current.mixingFrom && this.updateMixingFrom(current, delta)) {\n // End mixing from entries once all have completed.\n var from = current.mixingFrom;\n current.mixingFrom = null;\n if (from)\n from.mixingTo = null;\n while (from) {\n this.queue.end(from);\n from = from.mixingFrom;\n }\n }\n current.trackTime += currentDelta;\n }\n this.queue.drain();\n };\n /** Returns true when all mixing from entries are complete. */\n AnimationState.prototype.updateMixingFrom = function (to, delta) {\n var from = to.mixingFrom;\n if (!from)\n return true;\n var finished = this.updateMixingFrom(from, delta);\n from.animationLast = from.nextAnimationLast;\n from.trackLast = from.nextTrackLast;\n // Require mixTime > 0 to ensure the mixing from entry was applied at least once.\n if (to.mixTime > 0 && to.mixTime >= to.mixDuration) {\n // Require totalAlpha == 0 to ensure mixing is complete, unless mixDuration == 0 (the transition is a single frame).\n if (from.totalAlpha == 0 || to.mixDuration == 0) {\n to.mixingFrom = from.mixingFrom;\n if (from.mixingFrom)\n from.mixingFrom.mixingTo = to;\n to.interruptAlpha = from.interruptAlpha;\n this.queue.end(from);\n }\n return finished;\n }\n from.trackTime += delta * from.timeScale;\n to.mixTime += delta;\n return false;\n };\n /** Poses the skeleton using the track entry animations. There are no side effects other than invoking listeners, so the\n * animation state can be applied to multiple skeletons to pose them identically.\n * @returns True if any animations were applied. */\n AnimationState.prototype.apply = function (skeleton) {\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n if (this.animationsChanged)\n this._animationsChanged();\n var events = this.events;\n var tracks = this.tracks;\n var applied = false;\n for (var i_1 = 0, n_1 = tracks.length; i_1 < n_1; i_1++) {\n var current = tracks[i_1];\n if (!current || current.delay > 0)\n continue;\n applied = true;\n var blend = i_1 == 0 ? MixBlend.first : current.mixBlend;\n // Apply mixing from entries first.\n var mix = current.alpha;\n if (current.mixingFrom)\n mix *= this.applyMixingFrom(current, skeleton, blend);\n else if (current.trackTime >= current.trackEnd && !current.next)\n mix = 0;\n // Apply current entry.\n var animationLast = current.animationLast, animationTime = current.getAnimationTime(), applyTime = animationTime;\n var applyEvents = events;\n if (current.reverse) {\n applyTime = current.animation.duration - applyTime;\n applyEvents = null;\n }\n var timelines = current.animation.timelines;\n var timelineCount = timelines.length;\n if ((i_1 == 0 && mix == 1) || blend == MixBlend.add) {\n for (var ii = 0; ii < timelineCount; ii++) {\n // Fixes issue #302 on IOS9 where mix, blend sometimes became undefined and caused assets\n // to sometimes stop rendering when using color correction, as their RGBA values become NaN.\n // (https://github.com/pixijs/pixi-spine/issues/302)\n Utils.webkit602BugfixHelper(mix, blend);\n var timeline = timelines[ii];\n if (timeline instanceof AttachmentTimeline)\n this.applyAttachmentTimeline(timeline, skeleton, applyTime, blend, true);\n else\n timeline.apply(skeleton, animationLast, applyTime, applyEvents, mix, blend, MixDirection.mixIn);\n }\n }\n else {\n var timelineMode = current.timelineMode;\n var firstFrame = current.timelinesRotation.length != timelineCount << 1;\n if (firstFrame)\n current.timelinesRotation.length = timelineCount << 1;\n for (var ii = 0; ii < timelineCount; ii++) {\n var timeline_1 = timelines[ii];\n var timelineBlend = timelineMode[ii] == SUBSEQUENT ? blend : MixBlend.setup;\n if (timeline_1 instanceof RotateTimeline) {\n this.applyRotateTimeline(timeline_1, skeleton, applyTime, mix, timelineBlend, current.timelinesRotation, ii << 1, firstFrame);\n }\n else if (timeline_1 instanceof AttachmentTimeline) {\n this.applyAttachmentTimeline(timeline_1, skeleton, applyTime, blend, true);\n }\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, blend);\n timeline_1.apply(skeleton, animationLast, applyTime, applyEvents, mix, timelineBlend, MixDirection.mixIn);\n }\n }\n }\n this.queueEvents(current, animationTime);\n events.length = 0;\n current.nextAnimationLast = animationTime;\n current.nextTrackLast = current.trackTime;\n }\n // Set slots attachments to the setup pose, if needed. This occurs if an animation that is mixing out sets attachments so\n // subsequent timelines see any deform, but the subsequent timelines don't set an attachment (eg they are also mixing out or\n // the time is before the first key).\n var setupState = this.unkeyedState + SETUP;\n var slots = skeleton.slots;\n for (var i = 0, n = skeleton.slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.attachmentState == setupState) {\n var attachmentName = slot.data.attachmentName;\n slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName));\n }\n }\n this.unkeyedState += 2; // Increasing after each use avoids the need to reset attachmentState for every slot.\n this.queue.drain();\n return applied;\n };\n AnimationState.prototype.applyMixingFrom = function (to, skeleton, blend) {\n var from = to.mixingFrom;\n if (from.mixingFrom)\n this.applyMixingFrom(from, skeleton, blend);\n var mix = 0;\n if (to.mixDuration == 0) { // Single frame mix to undo mixingFrom changes.\n mix = 1;\n if (blend == MixBlend.first)\n blend = MixBlend.setup;\n }\n else {\n mix = to.mixTime / to.mixDuration;\n if (mix > 1)\n mix = 1;\n if (blend != MixBlend.first)\n blend = from.mixBlend;\n }\n var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold;\n var timelines = from.animation.timelines;\n var timelineCount = timelines.length;\n var alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix);\n var animationLast = from.animationLast, animationTime = from.getAnimationTime(), applyTime = animationTime;\n var events = null;\n if (from.reverse)\n applyTime = from.animation.duration - applyTime;\n else if (mix < from.eventThreshold)\n events = this.events;\n if (blend == MixBlend.add) {\n for (var i = 0; i < timelineCount; i++)\n timelines[i].apply(skeleton, animationLast, applyTime, events, alphaMix, blend, MixDirection.mixOut);\n }\n else {\n var timelineMode = from.timelineMode;\n var timelineHoldMix = from.timelineHoldMix;\n var firstFrame = from.timelinesRotation.length != timelineCount << 1;\n if (firstFrame)\n from.timelinesRotation.length = timelineCount << 1;\n from.totalAlpha = 0;\n for (var i = 0; i < timelineCount; i++) {\n var timeline = timelines[i];\n var direction = MixDirection.mixOut;\n var timelineBlend = void 0;\n var alpha = 0;\n switch (timelineMode[i]) {\n case SUBSEQUENT:\n if (!drawOrder && timeline instanceof DrawOrderTimeline)\n continue;\n timelineBlend = blend;\n alpha = alphaMix;\n break;\n case FIRST:\n timelineBlend = MixBlend.setup;\n alpha = alphaMix;\n break;\n case HOLD_SUBSEQUENT:\n timelineBlend = blend;\n alpha = alphaHold;\n break;\n case HOLD_FIRST:\n timelineBlend = MixBlend.setup;\n alpha = alphaHold;\n break;\n default:\n timelineBlend = MixBlend.setup;\n var holdMix = timelineHoldMix[i];\n alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration);\n break;\n }\n from.totalAlpha += alpha;\n if (timeline instanceof RotateTimeline)\n this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, timelineBlend, from.timelinesRotation, i << 1, firstFrame);\n else if (timeline instanceof AttachmentTimeline)\n this.applyAttachmentTimeline(timeline, skeleton, applyTime, timelineBlend, attachments);\n else {\n // This fixes the WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109\n Utils.webkit602BugfixHelper(alpha, blend);\n if (drawOrder && timeline instanceof DrawOrderTimeline && timelineBlend == MixBlend.setup)\n direction = MixDirection.mixIn;\n timeline.apply(skeleton, animationLast, applyTime, events, alpha, timelineBlend, direction);\n }\n }\n }\n if (to.mixDuration > 0)\n this.queueEvents(from, animationTime);\n this.events.length = 0;\n from.nextAnimationLast = animationTime;\n from.nextTrackLast = from.trackTime;\n return mix;\n };\n AnimationState.prototype.applyAttachmentTimeline = function (timeline, skeleton, time, blend, attachments) {\n var slot = skeleton.slots[timeline.slotIndex];\n if (!slot.bone.active)\n return;\n if (time < timeline.frames[0]) { // Time is before first frame.\n if (blend == MixBlend.setup || blend == MixBlend.first)\n this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments);\n }\n else\n this.setAttachment(skeleton, slot, timeline.attachmentNames[Timeline.search1(timeline.frames, time)], attachments);\n // If an attachment wasn't set (ie before the first frame or attachments is false), set the setup attachment later.\n if (slot.attachmentState <= this.unkeyedState)\n slot.attachmentState = this.unkeyedState + SETUP;\n };\n AnimationState.prototype.setAttachment = function (skeleton, slot, attachmentName, attachments) {\n slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName));\n if (attachments)\n slot.attachmentState = this.unkeyedState + CURRENT;\n };\n AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) {\n if (firstFrame)\n timelinesRotation[i] = 0;\n if (alpha == 1) {\n timeline.apply(skeleton, 0, time, null, 1, blend, MixDirection.mixIn);\n return;\n }\n var bone = skeleton.bones[timeline.boneIndex];\n if (!bone.active)\n return;\n var frames = timeline.frames;\n var r1 = 0, r2 = 0;\n if (time < frames[0]) {\n switch (blend) {\n case MixBlend.setup:\n bone.rotation = bone.data.rotation;\n default:\n return;\n case MixBlend.first:\n r1 = bone.rotation;\n r2 = bone.data.rotation;\n }\n }\n else {\n r1 = blend == MixBlend.setup ? bone.data.rotation : bone.rotation;\n r2 = bone.data.rotation + timeline.getCurveValue(time);\n }\n // Mix between rotations using the direction of the shortest route on the first frame while detecting crosses.\n var total = 0, diff = r2 - r1;\n diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360;\n if (diff == 0) {\n total = timelinesRotation[i];\n }\n else {\n var lastTotal = 0, lastDiff = 0;\n if (firstFrame) {\n lastTotal = 0;\n lastDiff = diff;\n }\n else {\n lastTotal = timelinesRotation[i]; // Angle and direction of mix, including loops.\n lastDiff = timelinesRotation[i + 1]; // Difference between bones.\n }\n var 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)\n 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)\n total += 360 * MathUtils.signum(lastTotal);\n timelinesRotation[i] = total;\n }\n timelinesRotation[i + 1] = diff;\n bone.rotation = r1 + total * alpha;\n };\n AnimationState.prototype.queueEvents = function (entry, animationTime) {\n var animationStart = entry.animationStart, animationEnd = entry.animationEnd;\n var duration = animationEnd - animationStart;\n var trackLastWrapped = entry.trackLast % duration;\n // Queue events before complete.\n var events = this.events;\n var i = 0, n = events.length;\n for (; i < n; i++) {\n var event_1 = events[i];\n if (event_1.time < trackLastWrapped)\n break;\n if (event_1.time > animationEnd)\n continue; // Discard events outside animation start/end.\n this.queue.event(entry, event_1);\n }\n // Queue complete if completed a loop iteration or the animation.\n var complete = false;\n if (entry.loop)\n complete = duration == 0 || trackLastWrapped > entry.trackTime % duration;\n else\n complete = animationTime >= animationEnd && entry.animationLast < animationEnd;\n if (complete)\n this.queue.complete(entry);\n // Queue events after complete.\n for (; i < n; i++) {\n var event_2 = events[i];\n if (event_2.time < animationStart)\n continue; // Discard events outside animation start/end.\n this.queue.event(entry, event_2);\n }\n };\n /** Removes all animations from all tracks, leaving skeletons in their current pose.\n *\n * It may be desired to use {@link AnimationState#setEmptyAnimation()} to mix the skeletons back to the setup pose,\n * rather than leaving them in their current pose. */\n AnimationState.prototype.clearTracks = function () {\n var oldDrainDisabled = this.queue.drainDisabled;\n this.queue.drainDisabled = true;\n for (var 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 /** Removes all animations from the track, leaving skeletons in their current pose.\n *\n * It may be desired to use {@link AnimationState#setEmptyAnimation()} to mix the skeletons back to the setup pose,\n * rather than leaving them in their current pose. */\n AnimationState.prototype.clearTrack = function (trackIndex) {\n if (trackIndex >= this.tracks.length)\n return;\n var current = this.tracks[trackIndex];\n if (!current)\n return;\n this.queue.end(current);\n this.clearNext(current);\n var entry = current;\n while (true) {\n var from = entry.mixingFrom;\n if (!from)\n break;\n this.queue.end(from);\n entry.mixingFrom = null;\n entry.mixingTo = null;\n entry = from;\n }\n this.tracks[current.trackIndex] = null;\n this.queue.drain();\n };\n AnimationState.prototype.setCurrent = function (index, current, interrupt) {\n var from = this.expandToIndex(index);\n this.tracks[index] = current;\n current.previous = null;\n if (from) {\n if (interrupt)\n this.queue.interrupt(from);\n current.mixingFrom = from;\n from.mixingTo = current;\n current.mixTime = 0;\n // Store the interrupted mix percentage.\n if (from.mixingFrom && from.mixDuration > 0)\n current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration);\n from.timelinesRotation.length = 0; // Reset rotation for mixing out, in case entry was mixed in.\n }\n this.queue.start(current);\n };\n /** Sets an animation by name.\n *\n * See {@link #setAnimationWith()}. */\n AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) {\n if (loop === void 0) { loop = false; }\n var animation = this.data.skeletonData.findAnimation(animationName);\n if (!animation)\n throw new Error(\"Animation not found: \" + animationName);\n return this.setAnimationWith(trackIndex, animation, loop);\n };\n /** Sets the current animation for a track, discarding any queued animations. If the formerly current track entry was never\n * applied to a skeleton, it is replaced (not mixed from).\n * @param loop If true, the animation will repeat. If false it will not, instead its last frame is applied if played beyond its\n * duration. In either case {@link TrackEntry#trackEnd} determines when the track is cleared.\n * @returns A track entry to allow further customization of animation playback. References to the track entry must not be kept\n * after the {@link AnimationStateListener#dispose()} event occurs. */\n AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) {\n if (loop === void 0) { loop = false; }\n if (!animation)\n throw new Error(\"animation cannot be null.\");\n var interrupt = true;\n var current = this.expandToIndex(trackIndex);\n if (current) {\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.clearNext(current);\n current = current.mixingFrom;\n interrupt = false;\n }\n else\n this.clearNext(current);\n }\n var entry = this.trackEntry(trackIndex, animation, loop, current);\n this.setCurrent(trackIndex, entry, interrupt);\n this.queue.drain();\n return entry;\n };\n /** Queues an animation by name.\n *\n * See {@link #addAnimationWith()}. */\n AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) {\n if (loop === void 0) { loop = false; }\n if (delay === void 0) { delay = 0; }\n var animation = this.data.skeletonData.findAnimation(animationName);\n if (!animation)\n throw new Error(\"Animation not found: \" + animationName);\n return this.addAnimationWith(trackIndex, animation, loop, delay);\n };\n /** Adds an animation to be played after the current or last queued animation for a track. If the track is empty, it is\n * equivalent to calling {@link #setAnimationWith()}.\n * @param delay If > 0, sets {@link TrackEntry#delay}. If <= 0, the delay set is the duration of the previous track entry\n * minus any mix duration (from the {@link AnimationStateData}) plus the specified `delay` (ie the mix\n * ends at (`delay` = 0) or before (`delay` < 0) the previous track entry duration). If the\n * previous entry is looping, its next loop completion is used instead of its duration.\n * @returns A track entry to allow further customization of animation playback. References to the track entry must not be kept\n * after the {@link AnimationStateListener#dispose()} event occurs. */\n AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) {\n if (loop === void 0) { loop = false; }\n if (delay === void 0) { delay = 0; }\n if (!animation)\n throw new Error(\"animation cannot be null.\");\n var last = this.expandToIndex(trackIndex);\n if (last) {\n while (last.next)\n last = last.next;\n }\n var entry = this.trackEntry(trackIndex, animation, loop, last);\n if (!last) {\n this.setCurrent(trackIndex, entry, true);\n this.queue.drain();\n }\n else {\n last.next = entry;\n entry.previous = last;\n if (delay <= 0)\n delay += last.getTrackComplete() - entry.mixDuration;\n }\n entry.delay = delay;\n return entry;\n };\n /** Sets an empty animation for a track, discarding any queued animations, and sets the track entry's\n * {@link TrackEntry#mixduration}. An empty animation has no timelines and serves as a placeholder for mixing in or out.\n *\n * Mixing out is done by setting an empty animation with a mix duration using either {@link #setEmptyAnimation()},\n * {@link #setEmptyAnimations()}, or {@link #addEmptyAnimation()}. Mixing to an empty animation causes\n * the previous animation to be applied less and less over the mix duration. Properties keyed in the previous animation\n * transition to the value from lower tracks or to the setup pose value if no lower tracks key the property. A mix duration of\n * 0 still mixes out over one frame.\n *\n * Mixing in is done by first setting an empty animation, then adding an animation using\n * {@link #addAnimation()} and on the returned track entry, set the\n * {@link TrackEntry#setMixDuration()}. Mixing from an empty animation causes the new animation to be applied more and\n * more over the mix duration. Properties keyed in the new animation transition from the value from lower tracks or from the\n * setup pose value if no lower tracks key the property to the value keyed in the new animation. */\n AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) {\n if (mixDuration === void 0) { mixDuration = 0; }\n var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation(), false);\n entry.mixDuration = mixDuration;\n entry.trackEnd = mixDuration;\n return entry;\n };\n /** Adds an empty animation to be played after the current or last queued animation for a track, and sets the track entry's\n * {@link TrackEntry#mixDuration}. If the track is empty, it is equivalent to calling\n * {@link #setEmptyAnimation()}.\n *\n * See {@link #setEmptyAnimation()}.\n * @param delay If > 0, sets {@link TrackEntry#delay}. If <= 0, the delay set is the duration of the previous track entry\n * minus any mix duration plus the specified `delay` (ie the mix ends at (`delay` = 0) or\n * before (`delay` < 0) the previous track entry duration). If the previous entry is looping, its next\n * loop completion is used instead of its duration.\n * @return A track entry to allow further customization of animation playback. References to the track entry must not be kept\n * after the {@link AnimationStateListener#dispose()} event occurs. */\n AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) {\n if (mixDuration === void 0) { mixDuration = 0; }\n if (delay === void 0) { delay = 0; }\n var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay);\n if (delay <= 0)\n entry.delay += entry.mixDuration - mixDuration;\n entry.mixDuration = mixDuration;\n entry.trackEnd = mixDuration;\n return entry;\n };\n /** Sets an empty animation for every track, discarding any queued animations, and mixes to it over the specified mix\n * duration. */\n AnimationState.prototype.setEmptyAnimations = function (mixDuration) {\n if (mixDuration === void 0) { mixDuration = 0; }\n var oldDrainDisabled = this.queue.drainDisabled;\n this.queue.drainDisabled = true;\n for (var i = 0, n = this.tracks.length; i < n; i++) {\n var current = this.tracks[i];\n if (current)\n this.setEmptyAnimation(current.trackIndex, mixDuration);\n }\n this.queue.drainDisabled = oldDrainDisabled;\n this.queue.drain();\n };\n AnimationState.prototype.expandToIndex = function (index) {\n if (index < this.tracks.length)\n return this.tracks[index];\n Utils.ensureArrayCapacity(this.tracks, index + 1, null);\n this.tracks.length = index + 1;\n return null;\n };\n /** @param last May be null. */\n AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) {\n var entry = this.trackEntryPool.obtain();\n entry.trackIndex = trackIndex;\n entry.animation = animation;\n entry.loop = loop;\n entry.holdPrevious = false;\n entry.eventThreshold = 0;\n entry.attachmentThreshold = 0;\n entry.drawOrderThreshold = 0;\n entry.animationStart = 0;\n entry.animationEnd = animation.duration;\n entry.animationLast = -1;\n entry.nextAnimationLast = -1;\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 entry.alpha = 1;\n entry.interruptAlpha = 1;\n entry.mixTime = 0;\n entry.mixDuration = !last ? 0 : this.data.getMix(last.animation, animation);\n entry.mixBlend = MixBlend.replace;\n return entry;\n };\n /** Removes the {@link TrackEntry#getNext() next entry} and all entries after it for the specified entry. */\n AnimationState.prototype.clearNext = function (entry) {\n var next = entry.next;\n while (next) {\n this.queue.dispose(next);\n next = next.next;\n }\n entry.next = null;\n };\n AnimationState.prototype._animationsChanged = function () {\n this.animationsChanged = false;\n this.propertyIDs.clear();\n var tracks = this.tracks;\n for (var i = 0, n = tracks.length; i < n; i++) {\n var entry = tracks[i];\n if (!entry)\n continue;\n while (entry.mixingFrom)\n entry = entry.mixingFrom;\n do {\n if (!entry.mixingTo || entry.mixBlend != MixBlend.add)\n this.computeHold(entry);\n entry = entry.mixingTo;\n } while (entry);\n }\n };\n AnimationState.prototype.computeHold = function (entry) {\n var to = entry.mixingTo;\n var timelines = entry.animation.timelines;\n var timelinesCount = entry.animation.timelines.length;\n var timelineMode = entry.timelineMode;\n timelineMode.length = timelinesCount;\n var timelineHoldMix = entry.timelineHoldMix;\n timelineHoldMix.length = 0;\n var propertyIDs = this.propertyIDs;\n if (to && to.holdPrevious) {\n for (var i = 0; i < timelinesCount; i++)\n timelineMode[i] = propertyIDs.addAll(timelines[i].getPropertyIds()) ? HOLD_FIRST : HOLD_SUBSEQUENT;\n return;\n }\n outer: for (var i = 0; i < timelinesCount; i++) {\n var timeline = timelines[i];\n var ids = timeline.getPropertyIds();\n if (!propertyIDs.addAll(ids))\n timelineMode[i] = SUBSEQUENT;\n else if (!to || timeline instanceof AttachmentTimeline || timeline instanceof DrawOrderTimeline\n || timeline instanceof EventTimeline || !to.animation.hasTimeline(ids)) {\n timelineMode[i] = FIRST;\n }\n else {\n for (var next = to.mixingTo; next; next = next.mixingTo) {\n if (next.animation.hasTimeline(ids))\n continue;\n if (entry.mixDuration > 0) {\n timelineMode[i] = HOLD_MIX;\n timelineHoldMix[i] = next;\n continue outer;\n }\n break;\n }\n timelineMode[i] = HOLD_FIRST;\n }\n }\n };\n /** Returns the track entry for the animation currently playing on the track, or null if no animation is currently playing. */\n AnimationState.prototype.getCurrent = function (trackIndex) {\n if (trackIndex >= this.tracks.length)\n return null;\n return this.tracks[trackIndex];\n };\n /** Adds a listener to receive events for all track entries. */\n AnimationState.prototype.addListener = function (listener) {\n if (!listener)\n throw new Error(\"listener cannot be null.\");\n this.listeners.push(listener);\n };\n /** Removes the listener added with {@link #addListener()}. */\n AnimationState.prototype.removeListener = function (listener) {\n var index = this.listeners.indexOf(listener);\n if (index >= 0)\n this.listeners.splice(index, 1);\n };\n /** Removes all listeners added with {@link #addListener()}. */\n AnimationState.prototype.clearListeners = function () {\n this.listeners.length = 0;\n };\n /** Discards all listener notifications that have not yet been delivered. This can be useful to call from an\n * {@link AnimationStateListener} when it is known that further notifications that may have been already queued for delivery\n * are not wanted because new animations are being set. */\n AnimationState.prototype.clearListenerNotifications = function () {\n this.queue.clear();\n };\n return AnimationState;\n}());\nexport { AnimationState };\n/** Stores settings and other state for the playback of an animation on an {@link AnimationState} track.\n *\n * References to a track entry must not be kept after the {@link AnimationStateListener#dispose()} event occurs. */\nvar TrackEntry = /** @class */ (function () {\n function TrackEntry() {\n /** Controls how properties keyed in the animation are mixed with lower tracks. Defaults to {@link MixBlend#replace}, which\n * replaces the values from the lower tracks with the animation values. {@link MixBlend#add} adds the animation values to\n * the values from the lower tracks.\n *\n * The `mixBlend` can be set for a new track entry only before {@link AnimationState#apply()} is first\n * called. */\n this.mixBlend = MixBlend.replace;\n this.timelineMode = new Array();\n this.timelineHoldMix = new Array();\n this.timelinesRotation = new Array();\n }\n TrackEntry.prototype.reset = function () {\n this.next = null;\n this.previous = null;\n this.mixingFrom = null;\n this.mixingTo = null;\n this.animation = null;\n this.listener = null;\n this.timelineMode.length = 0;\n this.timelineHoldMix.length = 0;\n this.timelinesRotation.length = 0;\n };\n /** Uses {@link #trackTime} to compute the `animationTime`, which is between {@link #animationStart}\n * and {@link #animationEnd}. When the `trackTime` is 0, the `animationTime` is equal to the\n * `animationStart` time. */\n TrackEntry.prototype.getAnimationTime = function () {\n if (this.loop) {\n var duration = this.animationEnd - this.animationStart;\n if (duration == 0)\n return this.animationStart;\n return (this.trackTime % duration) + this.animationStart;\n }\n return Math.min(this.trackTime + this.animationStart, this.animationEnd);\n };\n TrackEntry.prototype.setAnimationLast = function (animationLast) {\n this.animationLast = animationLast;\n this.nextAnimationLast = animationLast;\n };\n /** Returns true if at least one loop has been completed.\n *\n * See {@link AnimationStateListener#complete()}. */\n TrackEntry.prototype.isComplete = function () {\n return this.trackTime >= this.animationEnd - this.animationStart;\n };\n /** Resets the rotation directions for mixing this entry's rotate timelines. This can be useful to avoid bones rotating the\n * long way around when using {@link #alpha} and starting animations on other tracks.\n *\n * Mixing with {@link MixBlend#replace} involves finding a rotation between two others, which has two possible solutions:\n * the short way or the long way around. The two rotations likely change over time, so which direction is the short or long\n * way also changes. If the short way was always chosen, bones would flip to the other side when that direction became the\n * long way. TrackEntry chooses the short way the first time it is applied and remembers that direction. */\n TrackEntry.prototype.resetRotationDirections = function () {\n this.timelinesRotation.length = 0;\n };\n TrackEntry.prototype.getTrackComplete = function () {\n var duration = this.animationEnd - this.animationStart;\n if (duration != 0) {\n if (this.loop)\n return duration * (1 + ((this.trackTime / duration) | 0)); // Completion of next loop.\n if (this.trackTime < duration)\n return duration; // Before duration.\n }\n return this.trackTime; // Next update.\n };\n return TrackEntry;\n}());\nexport { TrackEntry };\nvar EventQueue = /** @class */ (function () {\n function EventQueue(animState) {\n this.objects = [];\n this.drainDisabled = false;\n this.animState = animState;\n }\n EventQueue.prototype.start = function (entry) {\n this.objects.push(EventType.start);\n this.objects.push(entry);\n this.animState.animationsChanged = true;\n };\n EventQueue.prototype.interrupt = function (entry) {\n this.objects.push(EventType.interrupt);\n this.objects.push(entry);\n };\n EventQueue.prototype.end = function (entry) {\n this.objects.push(EventType.end);\n this.objects.push(entry);\n this.animState.animationsChanged = true;\n };\n EventQueue.prototype.dispose = function (entry) {\n this.objects.push(EventType.dispose);\n this.objects.push(entry);\n };\n EventQueue.prototype.complete = function (entry) {\n this.objects.push(EventType.complete);\n this.objects.push(entry);\n };\n EventQueue.prototype.event = function (entry, event) {\n this.objects.push(EventType.event);\n this.objects.push(entry);\n this.objects.push(event);\n };\n EventQueue.prototype.drain = function () {\n if (this.drainDisabled)\n return;\n this.drainDisabled = true;\n var objects = this.objects;\n var listeners = this.animState.listeners;\n for (var i = 0; i < objects.length; i += 2) {\n var type = objects[i];\n var entry = objects[i + 1];\n switch (type) {\n case EventType.start:\n if (entry.listener && entry.listener.start)\n entry.listener.start(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].start)\n listeners[ii].start(entry);\n break;\n case EventType.interrupt:\n if (entry.listener && entry.listener.interrupt)\n entry.listener.interrupt(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].interrupt)\n listeners[ii].interrupt(entry);\n break;\n case EventType.end:\n if (entry.listener && entry.listener.end)\n entry.listener.end(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].end)\n listeners[ii].end(entry);\n // Fall through.\n case EventType.dispose:\n if (entry.listener && entry.listener.dispose)\n entry.listener.dispose(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].dispose)\n listeners[ii].dispose(entry);\n this.animState.trackEntryPool.free(entry);\n break;\n case EventType.complete:\n if (entry.listener && entry.listener.complete)\n entry.listener.complete(entry);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].complete)\n listeners[ii].complete(entry);\n break;\n case EventType.event:\n var event_3 = objects[i++ + 2];\n if (entry.listener && entry.listener.event)\n entry.listener.event(entry, event_3);\n for (var ii = 0; ii < listeners.length; ii++)\n if (listeners[ii].event)\n listeners[ii].event(entry, event_3);\n break;\n }\n }\n this.clear();\n this.drainDisabled = false;\n };\n EventQueue.prototype.clear = function () {\n this.objects.length = 0;\n };\n return EventQueue;\n}());\nexport { EventQueue };\nexport var EventType;\n(function (EventType) {\n EventType[EventType[\"start\"] = 0] = \"start\";\n EventType[EventType[\"interrupt\"] = 1] = \"interrupt\";\n EventType[EventType[\"end\"] = 2] = \"end\";\n EventType[EventType[\"dispose\"] = 3] = \"dispose\";\n EventType[EventType[\"complete\"] = 4] = \"complete\";\n EventType[EventType[\"event\"] = 5] = \"event\";\n})(EventType || (EventType = {}));\nvar AnimationStateAdapter = /** @class */ (function () {\n function AnimationStateAdapter() {\n }\n AnimationStateAdapter.prototype.start = function (entry) {\n };\n AnimationStateAdapter.prototype.interrupt = function (entry) {\n };\n AnimationStateAdapter.prototype.end = function (entry) {\n };\n AnimationStateAdapter.prototype.dispose = function (entry) {\n };\n AnimationStateAdapter.prototype.complete = function (entry) {\n };\n AnimationStateAdapter.prototype.event = function (entry, event) {\n };\n return AnimationStateAdapter;\n}());\nexport { AnimationStateAdapter };\n/** 1. A previously applied timeline has set this property.\n *\n * Result: Mix from the current pose to the timeline pose. */\nexport var SUBSEQUENT = 0;\n/** 1. This is the first timeline to set this property.\n * 2. The next track entry applied after this one does not have a timeline to set this property.\n *\n * Result: Mix from the setup pose to the timeline pose. */\nexport var FIRST = 1;\n/** 1) A previously applied timeline has set this property.
        \n * 2) The next track entry to be applied does have a timeline to set this property.
        \n * 3) The next track entry after that one does not have a timeline to set this property.
        \n * Result: Mix from the current pose to the timeline pose, but do not mix out. This avoids \"dipping\" when crossfading\n * animations that key the same property. A subsequent timeline will set this property using a mix. */\nexport var HOLD_SUBSEQUENT = 2;\n/** 1) This is the first timeline to set this property.
        \n * 2) The next track entry to be applied does have a timeline to set this property.
        \n * 3) The next track entry after that one does not have a timeline to set this property.
        \n * Result: Mix from the setup pose to the timeline pose, but do not mix out. This avoids \"dipping\" when crossfading animations\n * that key the same property. A subsequent timeline will set this property using a mix. */\nexport var HOLD_FIRST = 3;\n/** 1. This is the first timeline to set this property.\n * 2. The next track entry to be applied does have a timeline to set this property.\n * 3. The next track entry after that one does have a timeline to set this property.\n * 4. timelineHoldMix stores the first subsequent track entry that does not have a timeline to set this property.\n *\n * Result: The same as HOLD except the mix percentage from the timelineHoldMix track entry is used. This handles when more than\n * 2 track entries in a row have a timeline that sets the same property.\n *\n * Eg, A -> B -> C -> D where A, B, and C have a timeline setting same property, but D does not. When A is applied, to avoid\n * \"dipping\" A is not mixed out, however D (the first entry that doesn't set the property) mixing in is used to mix out A\n * (which affects B and C). Without using D to mix out, A would be applied fully until mixing completes, then snap into\n * place. */\nexport var HOLD_MIX = 4;\nexport var SETUP = 1;\nexport var CURRENT = 2;\nvar _emptyAnimation = null;\n//# sourceMappingURL=AnimationState.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n/** Stores mix (crossfade) durations to be applied when {@link AnimationState} animations are changed. */\nvar AnimationStateData = /** @class */ (function () {\n function AnimationStateData(skeletonData) {\n this.animationToMixTime = {};\n /** The mix duration to use when no mix duration has been defined between two animations. */\n this.defaultMix = 0;\n if (!skeletonData)\n throw new Error(\"skeletonData cannot be null.\");\n this.skeletonData = skeletonData;\n }\n /** Sets a mix duration by animation name.\n *\n * See {@link #setMixWith()}. */\n AnimationStateData.prototype.setMix = function (fromName, toName, duration) {\n var from = this.skeletonData.findAnimation(fromName);\n if (!from)\n throw new Error(\"Animation not found: \" + fromName);\n var to = this.skeletonData.findAnimation(toName);\n if (!to)\n throw new Error(\"Animation not found: \" + toName);\n this.setMixWith(from, to, duration);\n };\n /** Sets the mix duration when changing from the specified animation to the other.\n *\n * See {@link TrackEntry#mixDuration}. */\n AnimationStateData.prototype.setMixWith = function (from, to, duration) {\n if (!from)\n throw new Error(\"from cannot be null.\");\n if (!to)\n throw new Error(\"to cannot be null.\");\n var key = from.name + \".\" + to.name;\n this.animationToMixTime[key] = duration;\n };\n /** Returns the mix duration to use when changing from the specified animation to the other, or the {@link #defaultMix} if\n * no mix duration has been set. */\n AnimationStateData.prototype.getMix = function (from, to) {\n var key = from.name + \".\" + to.name;\n var value = this.animationToMixTime[key];\n return value === undefined ? this.defaultMix : value;\n };\n return AnimationStateData;\n}());\nexport { AnimationStateData };\n//# sourceMappingURL=AnimationStateData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\n/** An attachment with vertices that make up a polygon. Can be used for hit detection, creating physics bodies, spawning particle\n * effects, and more.\n *\n * See {@link SkeletonBounds} and [Bounding Boxes](http://esotericsoftware.com/spine-bounding-boxes) in the Spine User\n * Guide. */\nvar BoundingBoxAttachment = /** @class */ (function (_super) {\n __extends(BoundingBoxAttachment, _super);\n function BoundingBoxAttachment(name) {\n var _this = _super.call(this, name) || this;\n _this.color = new Color(1, 1, 1, 1);\n return _this;\n }\n BoundingBoxAttachment.prototype.copy = function () {\n var copy = new BoundingBoxAttachment(this.name);\n this.copyTo(copy);\n copy.color.setFromColor(this.color);\n return copy;\n };\n return BoundingBoxAttachment;\n}(VertexAttachment));\nexport { BoundingBoxAttachment };\n//# sourceMappingURL=BoundingBoxAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\n/** An attachment with vertices that make up a polygon used for clipping the rendering of other attachments. */\nvar ClippingAttachment = /** @class */ (function (_super) {\n __extends(ClippingAttachment, _super);\n function ClippingAttachment(name) {\n var _this = _super.call(this, name) || this;\n // Nonessential.\n /** The color of the clipping polygon as it was in Spine. Available only when nonessential data was exported. Clipping polygons\n * are not usually rendered at runtime. */\n _this.color = new Color(0.2275, 0.2275, 0.8078, 1); // ce3a3aff\n return _this;\n }\n ClippingAttachment.prototype.copy = function () {\n var copy = new ClippingAttachment(this.name);\n this.copyTo(copy);\n copy.endSlot = this.endSlot;\n copy.color.setFromColor(this.color);\n return copy;\n };\n return ClippingAttachment;\n}(VertexAttachment));\nexport { ClippingAttachment };\n//# sourceMappingURL=ClippingAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Texture = /** @class */ (function () {\n function Texture(image) {\n this._image = image;\n }\n Texture.prototype.getImage = function () {\n return this._image;\n };\n return Texture;\n}());\nexport { Texture };\nexport var TextureFilter;\n(function (TextureFilter) {\n TextureFilter[TextureFilter[\"Nearest\"] = 9728] = \"Nearest\";\n TextureFilter[TextureFilter[\"Linear\"] = 9729] = \"Linear\";\n TextureFilter[TextureFilter[\"MipMap\"] = 9987] = \"MipMap\";\n TextureFilter[TextureFilter[\"MipMapNearestNearest\"] = 9984] = \"MipMapNearestNearest\";\n TextureFilter[TextureFilter[\"MipMapLinearNearest\"] = 9985] = \"MipMapLinearNearest\";\n TextureFilter[TextureFilter[\"MipMapNearestLinear\"] = 9986] = \"MipMapNearestLinear\";\n TextureFilter[TextureFilter[\"MipMapLinearLinear\"] = 9987] = \"MipMapLinearLinear\"; // WebGLRenderingContext.LINEAR_MIPMAP_LINEAR\n})(TextureFilter || (TextureFilter = {}));\nexport var TextureWrap;\n(function (TextureWrap) {\n TextureWrap[TextureWrap[\"MirroredRepeat\"] = 33648] = \"MirroredRepeat\";\n TextureWrap[TextureWrap[\"ClampToEdge\"] = 33071] = \"ClampToEdge\";\n TextureWrap[TextureWrap[\"Repeat\"] = 10497] = \"Repeat\"; // WebGLRenderingContext.REPEAT\n})(TextureWrap || (TextureWrap = {}));\nvar TextureRegion = /** @class */ (function () {\n function TextureRegion() {\n this.u = 0;\n this.v = 0;\n this.u2 = 0;\n this.v2 = 0;\n this.width = 0;\n this.height = 0;\n this.degrees = 0;\n this.offsetX = 0;\n this.offsetY = 0;\n this.originalWidth = 0;\n this.originalHeight = 0;\n }\n return TextureRegion;\n}());\nexport { TextureRegion };\nvar FakeTexture = /** @class */ (function (_super) {\n __extends(FakeTexture, _super);\n function FakeTexture() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FakeTexture.prototype.setFilters = function (minFilter, magFilter) { };\n FakeTexture.prototype.setWraps = function (uWrap, vWrap) { };\n FakeTexture.prototype.dispose = function () { };\n return FakeTexture;\n}(Texture));\nexport { FakeTexture };\n//# sourceMappingURL=Texture.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { TextureFilter, TextureWrap, TextureRegion } from \"./Texture\";\nimport { Utils } from \"./Utils\";\nvar TextureAtlas = /** @class */ (function () {\n function TextureAtlas(atlasText) {\n this.pages = new Array();\n this.regions = new Array();\n var reader = new TextureAtlasReader(atlasText);\n var entry = new Array(4);\n var page = null;\n var region = null;\n var pageFields = {};\n pageFields[\"size\"] = function () {\n page.width = parseInt(entry[1]);\n page.height = parseInt(entry[2]);\n };\n pageFields[\"format\"] = function () {\n // page.format = Format[tuple[0]]; we don't need format in WebGL\n };\n pageFields[\"filter\"] = function () {\n page.minFilter = Utils.enumValue(TextureFilter, entry[1]);\n page.magFilter = Utils.enumValue(TextureFilter, entry[2]);\n };\n pageFields[\"repeat\"] = function () {\n if (entry[1].indexOf('x') != -1)\n page.uWrap = TextureWrap.Repeat;\n if (entry[1].indexOf('y') != -1)\n page.vWrap = TextureWrap.Repeat;\n };\n pageFields[\"pma\"] = function () {\n page.pma = entry[1] == \"true\";\n };\n var regionFields = {};\n regionFields[\"xy\"] = function () {\n region.x = parseInt(entry[1]);\n region.y = parseInt(entry[2]);\n };\n regionFields[\"size\"] = function () {\n region.width = parseInt(entry[1]);\n region.height = parseInt(entry[2]);\n };\n regionFields[\"bounds\"] = function () {\n region.x = parseInt(entry[1]);\n region.y = parseInt(entry[2]);\n region.width = parseInt(entry[3]);\n region.height = parseInt(entry[4]);\n };\n regionFields[\"offset\"] = function () {\n region.offsetX = parseInt(entry[1]);\n region.offsetY = parseInt(entry[2]);\n };\n regionFields[\"orig\"] = function () {\n region.originalWidth = parseInt(entry[1]);\n region.originalHeight = parseInt(entry[2]);\n };\n regionFields[\"offsets\"] = function () {\n region.offsetX = parseInt(entry[1]);\n region.offsetY = parseInt(entry[2]);\n region.originalWidth = parseInt(entry[3]);\n region.originalHeight = parseInt(entry[4]);\n };\n regionFields[\"rotate\"] = function () {\n var value = entry[1];\n if (value == \"true\")\n region.degrees = 90;\n else if (value != \"false\")\n region.degrees = parseInt(value);\n };\n regionFields[\"index\"] = function () {\n region.index = parseInt(entry[1]);\n };\n var line = reader.readLine();\n // Ignore empty lines before first entry.\n while (line && line.trim().length == 0)\n line = reader.readLine();\n // Header entries.\n while (true) {\n if (!line || line.trim().length == 0)\n break;\n if (reader.readEntry(entry, line) == 0)\n break; // Silently ignore all header fields.\n line = reader.readLine();\n }\n // Page and region entries.\n var names = null;\n var values = null;\n while (true) {\n if (line === null)\n break;\n if (line.trim().length == 0) {\n page = null;\n line = reader.readLine();\n }\n else if (!page) {\n page = new TextureAtlasPage();\n page.name = line.trim();\n while (true) {\n if (reader.readEntry(entry, line = reader.readLine()) == 0)\n break;\n var field = pageFields[entry[0]];\n if (field)\n field();\n }\n this.pages.push(page);\n }\n else {\n region = new TextureAtlasRegion();\n region.page = page;\n region.name = line;\n while (true) {\n var count = reader.readEntry(entry, line = reader.readLine());\n if (count == 0)\n break;\n var field = regionFields[entry[0]];\n if (field)\n field();\n else {\n if (!names) {\n names = [];\n values = [];\n }\n names.push(entry[0]);\n var entryValues = [];\n for (var i = 0; i < count; i++)\n entryValues.push(parseInt(entry[i + 1]));\n values.push(entryValues);\n }\n }\n if (region.originalWidth == 0 && region.originalHeight == 0) {\n region.originalWidth = region.width;\n region.originalHeight = region.height;\n }\n if (names && names.length > 0) {\n region.names = names;\n region.values = values;\n names = null;\n values = null;\n }\n region.u = region.x / page.width;\n region.v = region.y / page.height;\n if (region.degrees == 90) {\n region.u2 = (region.x + region.height) / page.width;\n region.v2 = (region.y + region.width) / page.height;\n }\n else {\n region.u2 = (region.x + region.width) / page.width;\n region.v2 = (region.y + region.height) / page.height;\n }\n this.regions.push(region);\n }\n }\n }\n TextureAtlas.prototype.findRegion = function (name) {\n for (var 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 TextureAtlas.prototype.setTextures = function (assetManager, pathPrefix) {\n if (pathPrefix === void 0) { pathPrefix = \"\"; }\n for (var _i = 0, _a = this.pages; _i < _a.length; _i++) {\n var page = _a[_i];\n page.setTexture(assetManager.get(pathPrefix + page.name));\n }\n };\n TextureAtlas.prototype.dispose = function () {\n for (var i = 0; i < this.pages.length; i++) {\n this.pages[i].texture.dispose();\n }\n };\n return TextureAtlas;\n}());\nexport { TextureAtlas };\nvar TextureAtlasReader = /** @class */ (function () {\n function TextureAtlasReader(text) {\n this.index = 0;\n this.lines = text.split(/\\r\\n|\\r|\\n/);\n }\n TextureAtlasReader.prototype.readLine = function () {\n if (this.index >= this.lines.length)\n return null;\n return this.lines[this.index++];\n };\n TextureAtlasReader.prototype.readEntry = function (entry, line) {\n if (!line)\n return 0;\n line = line.trim();\n if (line.length == 0)\n return 0;\n var colon = line.indexOf(':');\n if (colon == -1)\n return 0;\n entry[0] = line.substr(0, colon).trim();\n for (var i = 1, lastMatch = colon + 1;; i++) {\n var comma = line.indexOf(',', lastMatch);\n if (comma == -1) {\n entry[i] = line.substr(lastMatch).trim();\n return i;\n }\n entry[i] = line.substr(lastMatch, comma - lastMatch).trim();\n lastMatch = comma + 1;\n if (i == 4)\n return 4;\n }\n };\n return TextureAtlasReader;\n}());\nvar TextureAtlasPage = /** @class */ (function () {\n function TextureAtlasPage() {\n this.minFilter = TextureFilter.Nearest;\n this.magFilter = TextureFilter.Nearest;\n this.uWrap = TextureWrap.ClampToEdge;\n this.vWrap = TextureWrap.ClampToEdge;\n }\n TextureAtlasPage.prototype.setTexture = function (texture) {\n this.texture = texture;\n texture.setFilters(this.minFilter, this.magFilter);\n texture.setWraps(this.uWrap, this.vWrap);\n };\n return TextureAtlasPage;\n}());\nexport { TextureAtlasPage };\nvar TextureAtlasRegion = /** @class */ (function (_super) {\n __extends(TextureAtlasRegion, _super);\n function TextureAtlasRegion() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return TextureAtlasRegion;\n}(TextureRegion));\nexport { TextureAtlasRegion };\n//# sourceMappingURL=TextureAtlas.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { TextureAtlasRegion } from \"../TextureAtlas\";\nimport { Color, Utils } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\n/** An attachment that displays a textured mesh. A mesh has hull vertices and internal vertices within the hull. Holes are not\n * supported. Each vertex has UVs (texture coordinates) and triangles are used to map an image on to the mesh.\n *\n * See [Mesh attachments](http://esotericsoftware.com/spine-meshes) in the Spine User Guide. */\nvar MeshAttachment = /** @class */ (function (_super) {\n __extends(MeshAttachment, _super);\n function MeshAttachment(name) {\n var _this = _super.call(this, name) || this;\n /** The color to tint the mesh. */\n _this.color = new Color(1, 1, 1, 1);\n _this.tempColor = new Color(0, 0, 0, 0);\n return _this;\n }\n /** Calculates {@link #uvs} using {@link #regionUVs} and the {@link #region}. Must be called after changing the region UVs or\n * region. */\n MeshAttachment.prototype.updateUVs = function () {\n var regionUVs = this.regionUVs;\n if (!this.uvs || this.uvs.length != regionUVs.length)\n this.uvs = Utils.newFloatArray(regionUVs.length);\n var uvs = this.uvs;\n var n = this.uvs.length;\n var u = this.region.u, v = this.region.v, width = 0, height = 0;\n if (this.region instanceof TextureAtlasRegion) {\n var region = this.region, image = region.page.texture.getImage();\n var textureWidth = image.width, textureHeight = image.height;\n switch (region.degrees) {\n case 90:\n u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;\n v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;\n width = region.originalHeight / textureWidth;\n height = region.originalWidth / textureHeight;\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + regionUVs[i + 1] * width;\n uvs[i + 1] = v + (1 - regionUVs[i]) * height;\n }\n return;\n case 180:\n u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;\n v -= region.offsetY / textureHeight;\n width = region.originalWidth / textureWidth;\n height = region.originalHeight / textureHeight;\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + (1 - regionUVs[i]) * width;\n uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;\n }\n return;\n case 270:\n u -= region.offsetY / textureWidth;\n v -= region.offsetX / textureHeight;\n width = region.originalHeight / textureWidth;\n height = region.originalWidth / textureHeight;\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + (1 - regionUVs[i + 1]) * width;\n uvs[i + 1] = v + regionUVs[i] * height;\n }\n return;\n }\n u -= region.offsetX / textureWidth;\n v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;\n width = region.originalWidth / textureWidth;\n height = region.originalHeight / textureHeight;\n }\n else if (!this.region) {\n u = v = 0;\n width = height = 1;\n }\n else {\n width = this.region.u2 - u;\n height = this.region.v2 - v;\n }\n for (var i = 0; i < n; i += 2) {\n uvs[i] = u + regionUVs[i] * width;\n uvs[i + 1] = v + regionUVs[i + 1] * height;\n }\n };\n /** The parent mesh if this is a linked mesh, else null. A linked mesh shares the {@link #bones}, {@link #vertices},\n * {@link #regionUVs}, {@link #triangles}, {@link #hullLength}, {@link #edges}, {@link #width}, and {@link #height} with the\n * parent mesh, but may have a different {@link #name} or {@link #path} (and therefore a different texture). */\n MeshAttachment.prototype.getParentMesh = function () {\n return this.parentMesh;\n };\n /** @param parentMesh May be null. */\n MeshAttachment.prototype.setParentMesh = function (parentMesh) {\n this.parentMesh = parentMesh;\n if (parentMesh) {\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 MeshAttachment.prototype.copy = function () {\n if (this.parentMesh)\n return this.newLinkedMesh();\n var copy = new MeshAttachment(this.name);\n copy.region = this.region;\n copy.path = this.path;\n copy.color.setFromColor(this.color);\n this.copyTo(copy);\n copy.regionUVs = new Array(this.regionUVs.length);\n Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length);\n copy.uvs = new Array(this.uvs.length);\n Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length);\n copy.triangles = new Array(this.triangles.length);\n Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length);\n copy.hullLength = this.hullLength;\n // Nonessential.\n if (this.edges) {\n copy.edges = new Array(this.edges.length);\n Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length);\n }\n copy.width = this.width;\n copy.height = this.height;\n return copy;\n };\n /** Returns a new mesh with the {@link #parentMesh} set to this mesh's parent mesh, if any, else to this mesh. **/\n MeshAttachment.prototype.newLinkedMesh = function () {\n var copy = new MeshAttachment(this.name);\n copy.region = this.region;\n copy.path = this.path;\n copy.color.setFromColor(this.color);\n copy.deformAttachment = this.deformAttachment;\n copy.setParentMesh(this.parentMesh ? this.parentMesh : this);\n copy.updateUVs();\n return copy;\n };\n return MeshAttachment;\n}(VertexAttachment));\nexport { MeshAttachment };\n//# sourceMappingURL=MeshAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color, Utils } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\n/** An attachment whose vertices make up a composite Bezier curve.\n *\n * See {@link PathConstraint} and [Paths](http://esotericsoftware.com/spine-paths) in the Spine User Guide. */\nvar PathAttachment = /** @class */ (function (_super) {\n __extends(PathAttachment, _super);\n function PathAttachment(name) {\n var _this = _super.call(this, name) || this;\n /** If true, the start and end knots are connected. */\n _this.closed = false;\n /** If true, additional calculations are performed to make calculating positions along the path more accurate. If false, fewer\n * calculations are performed but calculating positions along the path is less accurate. */\n _this.constantSpeed = false;\n /** The color of the path as it was in Spine. Available only when nonessential data was exported. Paths are not usually\n * rendered at runtime. */\n _this.color = new Color(1, 1, 1, 1);\n return _this;\n }\n PathAttachment.prototype.copy = function () {\n var copy = new PathAttachment(this.name);\n this.copyTo(copy);\n copy.lengths = new Array(this.lengths.length);\n Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length);\n copy.closed = closed;\n copy.constantSpeed = this.constantSpeed;\n copy.color.setFromColor(this.color);\n return copy;\n };\n return PathAttachment;\n}(VertexAttachment));\nexport { PathAttachment };\n//# sourceMappingURL=PathAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color, MathUtils } from \"../Utils\";\nimport { VertexAttachment } from \"./Attachment\";\n/** An attachment which is a single point and a rotation. This can be used to spawn projectiles, particles, etc. A bone can be\n * used in similar ways, but a PointAttachment is slightly less expensive to compute and can be hidden, shown, and placed in a\n * skin.\n *\n * See [Point Attachments](http://esotericsoftware.com/spine-point-attachments) in the Spine User Guide. */\nvar PointAttachment = /** @class */ (function (_super) {\n __extends(PointAttachment, _super);\n function PointAttachment(name) {\n var _this = _super.call(this, name) || this;\n /** The color of the point attachment as it was in Spine. Available only when nonessential data was exported. Point attachments\n * are not usually rendered at runtime. */\n _this.color = new Color(0.38, 0.94, 0, 1);\n return _this;\n }\n PointAttachment.prototype.computeWorldPosition = function (bone, point) {\n point.x = this.x * bone.a + this.y * bone.b + bone.worldX;\n point.y = this.x * bone.c + this.y * bone.d + bone.worldY;\n return point;\n };\n PointAttachment.prototype.computeWorldRotation = function (bone) {\n var cos = MathUtils.cosDeg(this.rotation), sin = MathUtils.sinDeg(this.rotation);\n var x = cos * bone.a + sin * bone.b;\n var y = cos * bone.c + sin * bone.d;\n return Math.atan2(y, x) * MathUtils.radDeg;\n };\n PointAttachment.prototype.copy = function () {\n var copy = new PointAttachment(this.name);\n copy.x = this.x;\n copy.y = this.y;\n copy.rotation = this.rotation;\n copy.color.setFromColor(this.color);\n return copy;\n };\n return PointAttachment;\n}(VertexAttachment));\nexport { PointAttachment };\n//# sourceMappingURL=PointAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color, Utils } from \"../Utils\";\nimport { Attachment } from \"./Attachment\";\n/** An attachment that displays a textured quadrilateral.\n *\n * See [Region attachments](http://esotericsoftware.com/spine-regions) in the Spine User Guide. */\nvar RegionAttachment = /** @class */ (function (_super) {\n __extends(RegionAttachment, _super);\n function RegionAttachment(name) {\n var _this = _super.call(this, name) || this;\n /** The local x translation. */\n _this.x = 0;\n /** The local y translation. */\n _this.y = 0;\n /** The local scaleX. */\n _this.scaleX = 1;\n /** The local scaleY. */\n _this.scaleY = 1;\n /** The local rotation. */\n _this.rotation = 0;\n /** The width of the region attachment in Spine. */\n _this.width = 0;\n /** The height of the region attachment in Spine. */\n _this.height = 0;\n /** The color to tint the region attachment. */\n _this.color = new Color(1, 1, 1, 1);\n /** For each of the 4 vertices, a pair of x,y values that is the local position of the vertex.\n *\n * See {@link #updateOffset()}. */\n _this.offset = Utils.newFloatArray(8);\n _this.uvs = Utils.newFloatArray(8);\n _this.tempColor = new Color(1, 1, 1, 1);\n return _this;\n }\n /** Calculates the {@link #offset} using the region settings. Must be called after changing region settings. */\n RegionAttachment.prototype.updateOffset = function () {\n var region = this.region;\n var regionScaleX = this.width / this.region.originalWidth * this.scaleX;\n var regionScaleY = this.height / this.region.originalHeight * this.scaleY;\n var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX;\n var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY;\n var localX2 = localX + this.region.width * regionScaleX;\n var localY2 = localY + this.region.height * regionScaleY;\n var radians = this.rotation * Math.PI / 180;\n var cos = Math.cos(radians);\n var sin = Math.sin(radians);\n var x = this.x, y = this.y;\n var localXCos = localX * cos + x;\n var localXSin = localX * sin;\n var localYCos = localY * cos + y;\n var localYSin = localY * sin;\n var localX2Cos = localX2 * cos + x;\n var localX2Sin = localX2 * sin;\n var localY2Cos = localY2 * cos + y;\n var localY2Sin = localY2 * sin;\n var offset = this.offset;\n offset[0] = localXCos - localYSin;\n offset[1] = localYCos + localXSin;\n offset[2] = localXCos - localY2Sin;\n offset[3] = localY2Cos + localXSin;\n offset[4] = localX2Cos - localY2Sin;\n offset[5] = localY2Cos + localX2Sin;\n offset[6] = localX2Cos - localYSin;\n offset[7] = localYCos + localX2Sin;\n };\n RegionAttachment.prototype.setRegion = function (region) {\n this.region = region;\n var uvs = this.uvs;\n if (region.degrees == 90) {\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 }\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 /** Transforms the attachment's four vertices to world coordinates.\n *\n * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine\n * Runtimes Guide.\n * @param worldVertices The output world vertices. Must have a length >= `offset` + 8.\n * @param offset The `worldVertices` index to begin writing values.\n * @param stride The number of `worldVertices` entries between the value pairs written. */\n RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) {\n var vertexOffset = this.offset;\n var x = bone.worldX, y = bone.worldY;\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n var offsetX = 0, offsetY = 0;\n offsetX = vertexOffset[0];\n offsetY = vertexOffset[1];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // br\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n offsetX = vertexOffset[2];\n offsetY = vertexOffset[3];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // bl\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n offsetX = vertexOffset[4];\n offsetY = vertexOffset[5];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // ul\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n offset += stride;\n offsetX = vertexOffset[6];\n offsetY = vertexOffset[7];\n worldVertices[offset] = offsetX * a + offsetY * b + x; // ur\n worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n };\n RegionAttachment.prototype.copy = function () {\n var copy = new RegionAttachment(this.name);\n copy.region = this.region;\n copy.rendererObject = this.rendererObject;\n copy.path = this.path;\n copy.x = this.x;\n copy.y = this.y;\n copy.scaleX = this.scaleX;\n copy.scaleY = this.scaleY;\n copy.rotation = this.rotation;\n copy.width = this.width;\n copy.height = this.height;\n Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8);\n Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8);\n copy.color.setFromColor(this.color);\n return copy;\n };\n RegionAttachment.X1 = 0;\n RegionAttachment.Y1 = 1;\n RegionAttachment.C1R = 2;\n RegionAttachment.C1G = 3;\n RegionAttachment.C1B = 4;\n RegionAttachment.C1A = 5;\n RegionAttachment.U1 = 6;\n RegionAttachment.V1 = 7;\n RegionAttachment.X2 = 8;\n RegionAttachment.Y2 = 9;\n RegionAttachment.C2R = 10;\n RegionAttachment.C2G = 11;\n RegionAttachment.C2B = 12;\n RegionAttachment.C2A = 13;\n RegionAttachment.U2 = 14;\n RegionAttachment.V2 = 15;\n RegionAttachment.X3 = 16;\n RegionAttachment.Y3 = 17;\n RegionAttachment.C3R = 18;\n RegionAttachment.C3G = 19;\n RegionAttachment.C3B = 20;\n RegionAttachment.C3A = 21;\n RegionAttachment.U3 = 22;\n RegionAttachment.V3 = 23;\n RegionAttachment.X4 = 24;\n RegionAttachment.Y4 = 25;\n RegionAttachment.C4R = 26;\n RegionAttachment.C4G = 27;\n RegionAttachment.C4B = 28;\n RegionAttachment.C4A = 29;\n RegionAttachment.U4 = 30;\n RegionAttachment.V4 = 31;\n return RegionAttachment;\n}(Attachment));\nexport { RegionAttachment };\n//# sourceMappingURL=RegionAttachment.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { BoundingBoxAttachment } from \"./attachments/BoundingBoxAttachment\";\nimport { ClippingAttachment } from \"./attachments/ClippingAttachment\";\nimport { MeshAttachment } from \"./attachments/MeshAttachment\";\nimport { PathAttachment } from \"./attachments/PathAttachment\";\nimport { PointAttachment } from \"./attachments/PointAttachment\";\nimport { RegionAttachment } from \"./attachments/RegionAttachment\";\n/** An {@link AttachmentLoader} that configures attachments using texture regions from an {@link TextureAtlas}.\n *\n * See [Loading skeleton data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the\n * Spine Runtimes Guide. */\nvar AtlasAttachmentLoader = /** @class */ (function () {\n function AtlasAttachmentLoader(atlas) {\n this.atlas = atlas;\n }\n AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) {\n var region = this.atlas.findRegion(path);\n if (!region)\n throw new Error(\"Region not found in atlas: \" + path + \" (region attachment: \" + name + \")\");\n region.renderObject = region;\n var attachment = new RegionAttachment(name);\n attachment.setRegion(region);\n return attachment;\n };\n AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) {\n var region = this.atlas.findRegion(path);\n if (!region)\n throw new Error(\"Region not found in atlas: \" + path + \" (mesh attachment: \" + name + \")\");\n region.renderObject = region;\n var attachment = new MeshAttachment(name);\n attachment.region = region;\n return attachment;\n };\n AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) {\n return new BoundingBoxAttachment(name);\n };\n AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) {\n return new PathAttachment(name);\n };\n AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) {\n return new PointAttachment(name);\n };\n AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) {\n return new ClippingAttachment(name);\n };\n return AtlasAttachmentLoader;\n}());\nexport { AtlasAttachmentLoader };\n//# sourceMappingURL=AtlasAttachmentLoader.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Color } from \"./Utils\";\n/** Stores the setup pose for a {@link Bone}. */\nvar BoneData = /** @class */ (function () {\n function BoneData(index, name, parent) {\n /** The local x translation. */\n this.x = 0;\n /** The local y translation. */\n this.y = 0;\n /** The local rotation. */\n this.rotation = 0;\n /** The local scaleX. */\n this.scaleX = 1;\n /** The local scaleY. */\n this.scaleY = 1;\n /** The local shearX. */\n this.shearX = 0;\n /** The local shearX. */\n this.shearY = 0;\n /** The transform mode for how parent world transforms affect this bone. */\n this.transformMode = TransformMode.Normal;\n /** When true, {@link Skeleton#updateWorldTransform()} only updates this bone if the {@link Skeleton#skin} contains this\n * bone.\n * @see Skin#bones */\n this.skinRequired = false;\n /** The color of the bone as it was in Spine. Available only when nonessential data was exported. Bones are not usually\n * rendered at runtime. */\n this.color = new Color();\n if (index < 0)\n throw new Error(\"index must be >= 0.\");\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.index = index;\n this.name = name;\n this.parent = parent;\n }\n return BoneData;\n}());\nexport { BoneData };\n/** Determines how a bone inherits world transforms from parent bones. */\nexport var TransformMode;\n(function (TransformMode) {\n TransformMode[TransformMode[\"Normal\"] = 0] = \"Normal\";\n TransformMode[TransformMode[\"OnlyTranslation\"] = 1] = \"OnlyTranslation\";\n TransformMode[TransformMode[\"NoRotationOrReflection\"] = 2] = \"NoRotationOrReflection\";\n TransformMode[TransformMode[\"NoScale\"] = 3] = \"NoScale\";\n TransformMode[TransformMode[\"NoScaleOrReflection\"] = 4] = \"NoScaleOrReflection\";\n})(TransformMode || (TransformMode = {}));\n//# sourceMappingURL=BoneData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { TransformMode } from \"./BoneData\";\nimport { MathUtils } from \"./Utils\";\n/** Stores a bone's current pose.\n *\n * A bone has a local transform which is used to compute its world transform. A bone also has an applied transform, which is a\n * local transform that can be applied to compute the world transform. The local transform and applied transform may differ if a\n * constraint or application code modifies the world transform after it was computed from the local transform. */\nvar Bone = /** @class */ (function () {\n /** @param parent May be null. */\n function Bone(data, skeleton, parent) {\n /** The immediate children of this bone. */\n this.children = new Array();\n /** The local x translation. */\n this.x = 0;\n /** The local y translation. */\n this.y = 0;\n /** The local rotation in degrees, counter clockwise. */\n this.rotation = 0;\n /** The local scaleX. */\n this.scaleX = 0;\n /** The local scaleY. */\n this.scaleY = 0;\n /** The local shearX. */\n this.shearX = 0;\n /** The local shearY. */\n this.shearY = 0;\n /** The applied local x translation. */\n this.ax = 0;\n /** The applied local y translation. */\n this.ay = 0;\n /** The applied local rotation in degrees, counter clockwise. */\n this.arotation = 0;\n /** The applied local scaleX. */\n this.ascaleX = 0;\n /** The applied local scaleY. */\n this.ascaleY = 0;\n /** The applied local shearX. */\n this.ashearX = 0;\n /** The applied local shearY. */\n this.ashearY = 0;\n /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */\n this.a = 0;\n /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */\n this.b = 0;\n /** Part of the world transform matrix for the X axis. If changed, {@link #updateAppliedTransform()} should be called. */\n this.c = 0;\n /** Part of the world transform matrix for the Y axis. If changed, {@link #updateAppliedTransform()} should be called. */\n this.d = 0;\n /** The world X position. If changed, {@link #updateAppliedTransform()} should be called. */\n this.worldY = 0;\n /** The world Y position. If changed, {@link #updateAppliedTransform()} should be called. */\n this.worldX = 0;\n this.sorted = false;\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.skeleton = skeleton;\n this.parent = parent;\n this.setToSetupPose();\n }\n /** Returns false when the bone has not been computed because {@link BoneData#skinRequired} is true and the\n * {@link Skeleton#skin active skin} does not {@link Skin#bones contain} this bone. */\n Bone.prototype.isActive = function () {\n return this.active;\n };\n /** Computes the world transform using the parent bone and this bone's local applied transform. */\n Bone.prototype.update = function () {\n this.updateWorldTransformWith(this.ax, this.ay, this.arotation, this.ascaleX, this.ascaleY, this.ashearX, this.ashearY);\n };\n /** Computes the world transform using the parent bone and this bone's local transform.\n *\n * See {@link #updateWorldTransformWith()}. */\n Bone.prototype.updateWorldTransform = function () {\n this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY);\n };\n /** Computes the world transform using the parent bone and the specified local transform. The applied transform is set to the\n * specified local transform. Child bones are not updated.\n *\n * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine\n * Runtimes Guide. */\n Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) {\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 var parent = this.parent;\n if (!parent) { // Root bone.\n var skeleton = this.skeleton;\n var rotationY = rotation + 90 + shearY;\n var sx = skeleton.scaleX;\n var sy = skeleton.scaleY;\n this.a = MathUtils.cosDeg(rotation + shearX) * scaleX * sx;\n this.b = MathUtils.cosDeg(rotationY) * scaleY * sx;\n this.c = MathUtils.sinDeg(rotation + shearX) * scaleX * sy;\n this.d = MathUtils.sinDeg(rotationY) * scaleY * sy;\n this.worldX = x * sx + skeleton.x;\n this.worldY = y * sy + skeleton.y;\n return;\n }\n var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d;\n this.worldX = pa * x + pb * y + parent.worldX;\n this.worldY = pc * x + pd * y + parent.worldY;\n switch (this.data.transformMode) {\n case TransformMode.Normal: {\n var rotationY = rotation + 90 + shearY;\n var la = MathUtils.cosDeg(rotation + shearX) * scaleX;\n var lb = MathUtils.cosDeg(rotationY) * scaleY;\n var lc = MathUtils.sinDeg(rotation + shearX) * scaleX;\n var ld = MathUtils.sinDeg(rotationY) * scaleY;\n this.a = pa * la + pb * lc;\n this.b = pa * lb + pb * ld;\n this.c = pc * la + pd * lc;\n this.d = pc * lb + pd * ld;\n return;\n }\n case TransformMode.OnlyTranslation: {\n var rotationY = rotation + 90 + shearY;\n this.a = MathUtils.cosDeg(rotation + shearX) * scaleX;\n this.b = MathUtils.cosDeg(rotationY) * scaleY;\n this.c = MathUtils.sinDeg(rotation + shearX) * scaleX;\n this.d = MathUtils.sinDeg(rotationY) * scaleY;\n break;\n }\n case TransformMode.NoRotationOrReflection: {\n var s = pa * pa + pc * pc;\n var prx = 0;\n if (s > 0.0001) {\n s = Math.abs(pa * pd - pb * pc) / s;\n pa /= this.skeleton.scaleX;\n pc /= this.skeleton.scaleY;\n pb = pc * s;\n pd = pa * s;\n prx = Math.atan2(pc, pa) * MathUtils.radDeg;\n }\n else {\n pa = 0;\n pc = 0;\n prx = 90 - Math.atan2(pd, pb) * MathUtils.radDeg;\n }\n var rx = rotation + shearX - prx;\n var ry = rotation + shearY - prx + 90;\n var la = MathUtils.cosDeg(rx) * scaleX;\n var lb = MathUtils.cosDeg(ry) * scaleY;\n var lc = MathUtils.sinDeg(rx) * scaleX;\n var ld = MathUtils.sinDeg(ry) * scaleY;\n this.a = pa * la - pb * lc;\n this.b = pa * lb - pb * ld;\n this.c = pc * la + pd * lc;\n this.d = pc * lb + pd * ld;\n break;\n }\n case TransformMode.NoScale:\n case TransformMode.NoScaleOrReflection: {\n var cos = MathUtils.cosDeg(rotation);\n var sin = MathUtils.sinDeg(rotation);\n var za = (pa * cos + pb * sin) / this.skeleton.scaleX;\n var zc = (pc * cos + pd * sin) / this.skeleton.scaleY;\n var s = Math.sqrt(za * za + zc * zc);\n if (s > 0.00001)\n s = 1 / s;\n za *= s;\n zc *= s;\n s = Math.sqrt(za * za + zc * zc);\n if (this.data.transformMode == TransformMode.NoScale\n && (pa * pd - pb * pc < 0) != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0))\n s = -s;\n var r = Math.PI / 2 + Math.atan2(zc, za);\n var zb = Math.cos(r) * s;\n var zd = Math.sin(r) * s;\n var la = MathUtils.cosDeg(shearX) * scaleX;\n var lb = MathUtils.cosDeg(90 + shearY) * scaleY;\n var lc = MathUtils.sinDeg(shearX) * scaleX;\n var ld = MathUtils.sinDeg(90 + shearY) * scaleY;\n this.a = za * la + zb * lc;\n this.b = za * lb + zb * ld;\n this.c = zc * la + zd * lc;\n this.d = zc * lb + zd * ld;\n break;\n }\n }\n this.a *= this.skeleton.scaleX;\n this.b *= this.skeleton.scaleX;\n this.c *= this.skeleton.scaleY;\n this.d *= this.skeleton.scaleY;\n };\n /** Sets this bone's local transform to the setup pose. */\n Bone.prototype.setToSetupPose = function () {\n var 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 /** The world rotation for the X axis, calculated using {@link #a} and {@link #c}. */\n Bone.prototype.getWorldRotationX = function () {\n return Math.atan2(this.c, this.a) * MathUtils.radDeg;\n };\n /** The world rotation for the Y axis, calculated using {@link #b} and {@link #d}. */\n Bone.prototype.getWorldRotationY = function () {\n return Math.atan2(this.d, this.b) * MathUtils.radDeg;\n };\n /** The magnitude (always positive) of the world scale X, calculated using {@link #a} and {@link #c}. */\n Bone.prototype.getWorldScaleX = function () {\n return Math.sqrt(this.a * this.a + this.c * this.c);\n };\n /** The magnitude (always positive) of the world scale Y, calculated using {@link #b} and {@link #d}. */\n Bone.prototype.getWorldScaleY = function () {\n return Math.sqrt(this.b * this.b + this.d * this.d);\n };\n /** Computes the applied transform values from the world transform.\n *\n * If the world transform is modified (by a constraint, {@link #rotateWorld(float)}, etc) then this method should be called so\n * the applied transform matches the world transform. The applied transform may be needed by other code (eg to apply other\n * constraints).\n *\n * Some information is ambiguous in the world transform, such as -1,-1 scale versus 180 rotation. The applied transform after\n * calling this method is equivalent to the local transform used to compute the world transform, but may not be identical. */\n Bone.prototype.updateAppliedTransform = function () {\n var parent = this.parent;\n if (!parent) {\n this.ax = this.worldX;\n this.ay = this.worldY;\n this.arotation = Math.atan2(this.c, this.a) * MathUtils.radDeg;\n this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c);\n this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d);\n this.ashearX = 0;\n this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * MathUtils.radDeg;\n return;\n }\n var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d;\n var pid = 1 / (pa * pd - pb * pc);\n var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY;\n this.ax = (dx * pd * pid - dy * pb * pid);\n this.ay = (dy * pa * pid - dx * pc * pid);\n var ia = pid * pd;\n var id = pid * pa;\n var ib = pid * pb;\n var ic = pid * pc;\n var ra = ia * this.a - ib * this.c;\n var rb = ia * this.b - ib * this.d;\n var rc = id * this.c - ic * this.a;\n var rd = id * this.d - ic * this.b;\n this.ashearX = 0;\n this.ascaleX = Math.sqrt(ra * ra + rc * rc);\n if (this.ascaleX > 0.0001) {\n var 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 }\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 /** Transforms a point from world coordinates to the bone's local coordinates. */\n Bone.prototype.worldToLocal = function (world) {\n var invDet = 1 / (this.a * this.d - this.b * this.c);\n var x = world.x - this.worldX, y = world.y - this.worldY;\n world.x = x * this.d * invDet - y * this.b * invDet;\n world.y = y * this.a * invDet - x * this.c * invDet;\n return world;\n };\n /** Transforms a point from the bone's local coordinates to world coordinates. */\n Bone.prototype.localToWorld = function (local) {\n var x = local.x, y = local.y;\n local.x = x * this.a + y * this.b + this.worldX;\n local.y = x * this.c + y * this.d + this.worldY;\n return local;\n };\n /** Transforms a world rotation to a local rotation. */\n Bone.prototype.worldToLocalRotation = function (worldRotation) {\n var sin = MathUtils.sinDeg(worldRotation), cos = MathUtils.cosDeg(worldRotation);\n return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * MathUtils.radDeg + this.rotation - this.shearX;\n };\n /** Transforms a local rotation to a world rotation. */\n Bone.prototype.localToWorldRotation = function (localRotation) {\n localRotation -= this.rotation - this.shearX;\n var sin = MathUtils.sinDeg(localRotation), cos = MathUtils.cosDeg(localRotation);\n return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * MathUtils.radDeg;\n };\n /** Rotates the world transform the specified amount.\n *

        \n * After changes are made to the world transform, {@link #updateAppliedTransform()} should be called and {@link #update()} will\n * need to be called on any child bones, recursively. */\n Bone.prototype.rotateWorld = function (degrees) {\n var a = this.a, b = this.b, c = this.c, d = this.d;\n var cos = MathUtils.cosDeg(degrees), sin = MathUtils.sinDeg(degrees);\n this.a = cos * a - sin * c;\n this.b = cos * b - sin * d;\n this.c = sin * a + cos * c;\n this.d = sin * b + cos * d;\n };\n return Bone;\n}());\nexport { Bone };\n//# sourceMappingURL=Bone.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n/** The base class for all constraint datas. */\nvar ConstraintData = /** @class */ (function () {\n function ConstraintData(name, order, skinRequired) {\n this.name = name;\n this.order = order;\n this.skinRequired = skinRequired;\n }\n return ConstraintData;\n}());\nexport { ConstraintData };\n//# sourceMappingURL=ConstraintData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { TextureAtlas } from \"./TextureAtlas\";\nvar AssetManagerBase = /** @class */ (function () {\n function AssetManagerBase(textureLoader, pathPrefix, downloader) {\n if (pathPrefix === void 0) { pathPrefix = \"\"; }\n if (downloader === void 0) { downloader = null; }\n this.assets = {};\n this.errors = {};\n this.toLoad = 0;\n this.loaded = 0;\n this.textureLoader = textureLoader;\n this.pathPrefix = pathPrefix;\n this.downloader = downloader || new Downloader();\n }\n AssetManagerBase.prototype.start = function (path) {\n this.toLoad++;\n return this.pathPrefix + path;\n };\n AssetManagerBase.prototype.success = function (callback, path, asset) {\n this.toLoad--;\n this.loaded++;\n this.assets[path] = asset;\n if (callback)\n callback(path, asset);\n };\n AssetManagerBase.prototype.error = function (callback, path, message) {\n this.toLoad--;\n this.loaded++;\n this.errors[path] = message;\n if (callback)\n callback(path, message);\n };\n AssetManagerBase.prototype.setRawDataURI = function (path, data) {\n this.downloader.rawDataUris[this.pathPrefix + path] = data;\n };\n AssetManagerBase.prototype.loadBinary = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n this.downloader.downloadBinary(path, function (data) {\n _this.success(success, path, data);\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load binary \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManagerBase.prototype.loadText = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n this.downloader.downloadText(path, function (data) {\n _this.success(success, path, data);\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load text \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManagerBase.prototype.loadJson = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n this.downloader.downloadJson(path, function (data) {\n _this.success(success, path, data);\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load JSON \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManagerBase.prototype.loadTexture = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n path = this.start(path);\n var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document);\n var isWebWorker = !isBrowser; // && typeof importScripts !== 'undefined';\n if (isWebWorker) {\n fetch(path, { mode: \"cors\" }).then(function (response) {\n if (response.ok)\n return response.blob();\n _this.error(error, path, \"Couldn't load image: \" + path);\n return null;\n }).then(function (blob) {\n return blob ? createImageBitmap(blob, { premultiplyAlpha: \"none\", colorSpaceConversion: \"none\" }) : null;\n }).then(function (bitmap) {\n if (bitmap)\n _this.success(success, path, _this.textureLoader(bitmap));\n });\n }\n else {\n var image_1 = new Image();\n image_1.crossOrigin = \"anonymous\";\n image_1.onload = function () {\n _this.success(success, path, _this.textureLoader(image_1));\n };\n image_1.onerror = function () {\n _this.error(error, path, \"Couldn't load image: \" + path);\n };\n if (this.downloader.rawDataUris[path])\n path = this.downloader.rawDataUris[path];\n image_1.src = path;\n }\n };\n AssetManagerBase.prototype.loadTextureAtlas = function (path, success, error) {\n var _this = this;\n if (success === void 0) { success = null; }\n if (error === void 0) { error = null; }\n var index = path.lastIndexOf(\"/\");\n var parent = index >= 0 ? path.substring(0, index + 1) : \"\";\n path = this.start(path);\n this.downloader.downloadText(path, function (atlasText) {\n try {\n var atlas_1 = new TextureAtlas(atlasText);\n var toLoad_1 = atlas_1.pages.length, abort_1 = false;\n var _loop_1 = function (page) {\n _this.loadTexture(parent + page.name, function (imagePath, texture) {\n if (!abort_1) {\n page.setTexture(texture);\n if (--toLoad_1 == 0)\n _this.success(success, path, atlas_1);\n }\n }, function (imagePath, message) {\n if (!abort_1)\n _this.error(error, path, \"Couldn't load texture atlas \" + path + \" page image: \" + imagePath);\n abort_1 = true;\n });\n };\n for (var _i = 0, _a = atlas_1.pages; _i < _a.length; _i++) {\n var page = _a[_i];\n _loop_1(page);\n }\n }\n catch (e) {\n _this.error(error, path, \"Couldn't parse texture atlas \" + path + \": \" + e.message);\n }\n }, function (status, responseText) {\n _this.error(error, path, \"Couldn't load texture atlas \" + path + \": status \" + status + \", \" + responseText);\n });\n };\n AssetManagerBase.prototype.get = function (path) {\n return this.assets[this.pathPrefix + path];\n };\n AssetManagerBase.prototype.require = function (path) {\n path = this.pathPrefix + path;\n var asset = this.assets[path];\n if (asset)\n return asset;\n var error = this.errors[path];\n throw Error(\"Asset not found: \" + path + (error ? \"\\n\" + error : \"\"));\n };\n AssetManagerBase.prototype.remove = function (path) {\n path = this.pathPrefix + path;\n var asset = this.assets[path];\n if (asset.dispose)\n asset.dispose();\n delete this.assets[path];\n return asset;\n };\n AssetManagerBase.prototype.removeAll = function () {\n for (var key in this.assets) {\n var asset = this.assets[key];\n if (asset.dispose)\n asset.dispose();\n }\n this.assets = {};\n };\n AssetManagerBase.prototype.isLoadingComplete = function () {\n return this.toLoad == 0;\n };\n AssetManagerBase.prototype.getToLoad = function () {\n return this.toLoad;\n };\n AssetManagerBase.prototype.getLoaded = function () {\n return this.loaded;\n };\n AssetManagerBase.prototype.dispose = function () {\n this.removeAll();\n };\n AssetManagerBase.prototype.hasErrors = function () {\n return Object.keys(this.errors).length > 0;\n };\n AssetManagerBase.prototype.getErrors = function () {\n return this.errors;\n };\n return AssetManagerBase;\n}());\nexport { AssetManagerBase };\nvar Downloader = /** @class */ (function () {\n function Downloader() {\n this.callbacks = {};\n this.rawDataUris = {};\n }\n Downloader.prototype.downloadText = function (url, success, error) {\n var _this = this;\n if (this.rawDataUris[url])\n url = this.rawDataUris[url];\n if (this.start(url, success, error))\n return;\n var request = new XMLHttpRequest();\n request.overrideMimeType(\"text/html\");\n request.open(\"GET\", url, true);\n var done = function () {\n _this.finish(url, request.status, request.responseText);\n };\n request.onload = done;\n request.onerror = done;\n request.send();\n };\n Downloader.prototype.downloadJson = function (url, success, error) {\n this.downloadText(url, function (data) {\n success(JSON.parse(data));\n }, error);\n };\n Downloader.prototype.downloadBinary = function (url, success, error) {\n var _this = this;\n if (this.rawDataUris[url])\n url = this.rawDataUris[url];\n if (this.start(url, success, error))\n return;\n var request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = \"arraybuffer\";\n var onerror = function () {\n _this.finish(url, request.status, request.responseText);\n };\n request.onload = function () {\n if (request.status == 200)\n _this.finish(url, 200, new Uint8Array(request.response));\n else\n onerror();\n };\n request.onerror = onerror;\n request.send();\n };\n Downloader.prototype.start = function (url, success, error) {\n var callbacks = this.callbacks[url];\n try {\n if (callbacks)\n return true;\n this.callbacks[url] = callbacks = [];\n }\n finally {\n callbacks.push(success, error);\n }\n };\n Downloader.prototype.finish = function (url, status, data) {\n var callbacks = this.callbacks[url];\n delete this.callbacks[url];\n var args = status == 200 ? [data] : [status, data];\n for (var i = args.length - 1, n = callbacks.length; i < n; i += 2)\n callbacks[i].apply(null, args);\n };\n return Downloader;\n}());\nexport { Downloader };\n//# sourceMappingURL=AssetManagerBase.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n/** Stores the current pose values for an {@link Event}.\n *\n * See Timeline {@link Timeline#apply()},\n * AnimationStateListener {@link AnimationStateListener#event()}, and\n * [Events](http://esotericsoftware.com/spine-events) in the Spine User Guide. */\nvar Event = /** @class */ (function () {\n function Event(time, data) {\n if (!data)\n throw new Error(\"data cannot be null.\");\n this.time = time;\n this.data = data;\n }\n return Event;\n}());\nexport { Event };\n//# sourceMappingURL=Event.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n/** Stores the setup pose values for an {@link Event}.\n *\n * See [Events](http://esotericsoftware.com/spine-events) in the Spine User Guide. */\nvar EventData = /** @class */ (function () {\n function EventData(name) {\n this.name = name;\n }\n return EventData;\n}());\nexport { EventData };\n//# sourceMappingURL=EventData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { TransformMode } from \"./BoneData\";\nimport { MathUtils } from \"./Utils\";\n/** Stores the current pose for an IK constraint. An IK constraint adjusts the rotation of 1 or 2 constrained bones so the tip of\n * the last bone is as close to the target bone as possible.\n *\n * See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */\nvar IkConstraint = /** @class */ (function () {\n function IkConstraint(data, skeleton) {\n /** Controls the bend direction of the IK bones, either 1 or -1. */\n this.bendDirection = 0;\n /** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */\n this.compress = false;\n /** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained\n * and the parent bone has local nonuniform scale, stretch is not applied. */\n this.stretch = false;\n /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */\n this.mix = 1;\n /** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */\n this.softness = 0;\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.mix = data.mix;\n this.softness = data.softness;\n this.bendDirection = data.bendDirection;\n this.compress = data.compress;\n this.stretch = data.stretch;\n this.bones = new Array();\n for (var 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 IkConstraint.prototype.isActive = function () {\n return this.active;\n };\n IkConstraint.prototype.update = function () {\n if (this.mix == 0)\n return;\n var target = this.target;\n var bones = this.bones;\n switch (bones.length) {\n case 1:\n this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix);\n break;\n case 2:\n this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.data.uniform, this.softness, this.mix);\n break;\n }\n };\n /** Applies 1 bone IK. The target is specified in the world coordinate system. */\n IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) {\n var p = bone.parent;\n var pa = p.a, pb = p.b, pc = p.c, pd = p.d;\n var rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0;\n switch (bone.data.transformMode) {\n case TransformMode.OnlyTranslation:\n tx = targetX - bone.worldX;\n ty = targetY - bone.worldY;\n break;\n case TransformMode.NoRotationOrReflection:\n var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);\n var sa = pa / bone.skeleton.scaleX;\n var sc = pc / bone.skeleton.scaleY;\n pb = -sc * s * bone.skeleton.scaleX;\n pd = sa * s * bone.skeleton.scaleY;\n rotationIK += Math.atan2(sc, sa) * MathUtils.radDeg;\n // Fall through\n default:\n var x = targetX - p.worldX, y = targetY - p.worldY;\n var d = pa * pd - pb * pc;\n tx = (x * pd - y * pb) / d - bone.ax;\n ty = (y * pa - x * pc) / d - bone.ay;\n }\n rotationIK += Math.atan2(ty, tx) * MathUtils.radDeg;\n if (bone.ascaleX < 0)\n rotationIK += 180;\n if (rotationIK > 180)\n rotationIK -= 360;\n else if (rotationIK < -180)\n rotationIK += 360;\n var sx = bone.ascaleX, sy = bone.ascaleY;\n if (compress || stretch) {\n switch (bone.data.transformMode) {\n case TransformMode.NoScale:\n case TransformMode.NoScaleOrReflection:\n tx = targetX - bone.worldX;\n ty = targetY - bone.worldY;\n }\n var b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty);\n if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) {\n var s = (dd / b - 1) * alpha + 1;\n sx *= s;\n if (uniform)\n sy *= s;\n }\n }\n bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY);\n };\n /** Applies 2 bone IK. The target is specified in the world coordinate system.\n * @param child A direct descendant of the parent bone. */\n IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, uniform, softness, alpha) {\n var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, sx = psx, sy = psy, csx = child.ascaleX;\n var os1 = 0, os2 = 0, s2 = 0;\n if (psx < 0) {\n psx = -psx;\n os1 = 180;\n s2 = -1;\n }\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 }\n else\n os2 = 0;\n var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d;\n var u = Math.abs(psx - psy) <= 0.0001;\n if (!u || stretch) {\n cy = 0;\n cwx = a * cx + parent.worldX;\n cwy = c * cx + parent.worldY;\n }\n else {\n cy = child.ay;\n cwx = a * cx + b * cy + parent.worldX;\n cwy = c * cx + d * cy + parent.worldY;\n }\n var pp = parent.parent;\n a = pp.a;\n b = pp.b;\n c = pp.c;\n d = pp.d;\n var id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY;\n var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py;\n var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2;\n if (l1 < 0.0001) {\n this.apply1(parent, targetX, targetY, false, stretch, false, alpha);\n child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY);\n return;\n }\n x = targetX - pp.worldX;\n y = targetY - pp.worldY;\n var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py;\n var dd = tx * tx + ty * ty;\n if (softness != 0) {\n softness *= psx * (csx + 1) * 0.5;\n var td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness;\n if (sd > 0) {\n var p = Math.min(1, sd / (softness * 2)) - 1;\n p = (sd - softness * (1 - p * p)) / td;\n tx -= p * tx;\n ty -= p * ty;\n dd = tx * tx + ty * ty;\n }\n }\n outer: if (u) {\n l2 *= psx;\n var cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2);\n if (cos < -1) {\n cos = -1;\n a2 = Math.PI * bendDir;\n }\n else if (cos > 1) {\n cos = 1;\n a2 = 0;\n if (stretch) {\n a = (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1;\n sx *= a;\n if (uniform)\n sy *= a;\n }\n }\n else\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 }\n else {\n a = psx * l2;\n b = psy * l2;\n var aa = a * a, bb = b * b, ta = Math.atan2(ty, tx);\n c = bb * l1 * l1 + aa * dd - aa * bb;\n var c1 = -2 * bb * l1, c2 = bb - aa;\n d = c1 * c1 - 4 * c2 * c;\n if (d >= 0) {\n var q = Math.sqrt(d);\n if (c1 < 0)\n q = -q;\n q = -(c1 + q) * 0.5;\n var r0 = q / c2, r1 = c / q;\n var 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 var minAngle = MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;\n var 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) * 0.5) {\n a1 = ta - Math.atan2(minY * bendDir, minX);\n a2 = minAngle * bendDir;\n }\n else {\n a1 = ta - Math.atan2(maxY * bendDir, maxX);\n a2 = maxAngle * bendDir;\n }\n }\n var os = Math.atan2(cy, cx) * s2;\n var rotation = parent.arotation;\n a1 = (a1 - os) * MathUtils.radDeg + os1 - rotation;\n if (a1 > 180)\n a1 -= 360;\n else if (a1 < -180) //\n a1 += 360;\n parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, sy, 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) //\n a2 += 360;\n child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY);\n };\n return IkConstraint;\n}());\nexport { IkConstraint };\n//# sourceMappingURL=IkConstraint.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConstraintData } from \"./ConstraintData\";\n/** Stores the setup pose for an {@link IkConstraint}.\n *

        \n * See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */\nvar IkConstraintData = /** @class */ (function (_super) {\n __extends(IkConstraintData, _super);\n function IkConstraintData(name) {\n var _this = _super.call(this, name, 0, false) || this;\n /** The bones that are constrained by this IK constraint. */\n _this.bones = new Array();\n /** Controls the bend direction of the IK bones, either 1 or -1. */\n _this.bendDirection = 1;\n /** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */\n _this.compress = false;\n /** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained\n * and the parent bone has local nonuniform scale, stretch is not applied. */\n _this.stretch = false;\n /** When true, only a single bone is being constrained, and {@link #getCompress()} or {@link #getStretch()} is used, the bone\n * is scaled on both the X and Y axes. */\n _this.uniform = false;\n /** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */\n _this.mix = 1;\n /** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */\n _this.softness = 0;\n return _this;\n }\n return IkConstraintData;\n}(ConstraintData));\nexport { IkConstraintData };\n//# sourceMappingURL=IkConstraintData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConstraintData } from \"./ConstraintData\";\n/** Stores the setup pose for a {@link PathConstraint}.\n *\n * See [path constraints](http://esotericsoftware.com/spine-path-constraints) in the Spine User Guide. */\nvar PathConstraintData = /** @class */ (function (_super) {\n __extends(PathConstraintData, _super);\n function PathConstraintData(name) {\n var _this = _super.call(this, name, 0, false) || this;\n /** The bones that will be modified by this path constraint. */\n _this.bones = new Array();\n _this.mixRotate = 0;\n _this.mixX = 0;\n _this.mixY = 0;\n return _this;\n }\n return PathConstraintData;\n}(ConstraintData));\nexport { PathConstraintData };\n/** Controls how the first bone is positioned along the path.\n *\n * See [position](http://esotericsoftware.com/spine-path-constraints#Position) in the Spine User Guide. */\nexport var PositionMode;\n(function (PositionMode) {\n PositionMode[PositionMode[\"Fixed\"] = 0] = \"Fixed\";\n PositionMode[PositionMode[\"Percent\"] = 1] = \"Percent\";\n})(PositionMode || (PositionMode = {}));\n/** Controls how bones after the first bone are positioned along the path.\n *\n * See [spacing](http://esotericsoftware.com/spine-path-constraints#Spacing) in the Spine User Guide. */\nexport var SpacingMode;\n(function (SpacingMode) {\n SpacingMode[SpacingMode[\"Length\"] = 0] = \"Length\";\n SpacingMode[SpacingMode[\"Fixed\"] = 1] = \"Fixed\";\n SpacingMode[SpacingMode[\"Percent\"] = 2] = \"Percent\";\n SpacingMode[SpacingMode[\"Proportional\"] = 3] = \"Proportional\";\n})(SpacingMode || (SpacingMode = {}));\n/** Controls how bones are rotated, translated, and scaled to match the path.\n *\n * See [rotate mix](http://esotericsoftware.com/spine-path-constraints#Rotate-mix) in the Spine User Guide. */\nexport var RotateMode;\n(function (RotateMode) {\n RotateMode[RotateMode[\"Tangent\"] = 0] = \"Tangent\";\n RotateMode[RotateMode[\"Chain\"] = 1] = \"Chain\";\n RotateMode[RotateMode[\"ChainScale\"] = 2] = \"ChainScale\";\n})(RotateMode || (RotateMode = {}));\n//# sourceMappingURL=PathConstraintData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { PathAttachment } from \"./attachments/PathAttachment\";\nimport { RotateMode, SpacingMode, PositionMode } from \"./PathConstraintData\";\nimport { Utils, MathUtils } from \"./Utils\";\n/** Stores the current pose for a path constraint. A path constraint adjusts the rotation, translation, and scale of the\n * constrained bones so they follow a {@link PathAttachment}.\n *\n * See [Path constraints](http://esotericsoftware.com/spine-path-constraints) in the Spine User Guide. */\nvar PathConstraint = /** @class */ (function () {\n function PathConstraint(data, skeleton) {\n /** The position along the path. */\n this.position = 0;\n /** The spacing between bones. */\n this.spacing = 0;\n this.mixRotate = 0;\n this.mixX = 0;\n this.mixY = 0;\n this.spaces = new Array();\n this.positions = new Array();\n this.world = new Array();\n this.curves = new Array();\n this.lengths = new Array();\n this.segments = new Array();\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.bones = new Array();\n for (var 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.mixRotate = data.mixRotate;\n this.mixX = data.mixX;\n this.mixY = data.mixY;\n }\n PathConstraint.prototype.isActive = function () {\n return this.active;\n };\n PathConstraint.prototype.update = function () {\n var attachment = this.target.getAttachment();\n if (!(attachment instanceof PathAttachment))\n return;\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY;\n if (mixRotate == 0 && mixX == 0 && mixY == 0)\n return;\n var data = this.data;\n var tangents = data.rotateMode == RotateMode.Tangent, scale = data.rotateMode == RotateMode.ChainScale;\n var bones = this.bones;\n var boneCount = bones.length, spacesCount = tangents ? boneCount : boneCount + 1;\n var spaces = Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = Utils.setArraySize(this.lengths, boneCount) : null;\n var spacing = this.spacing;\n switch (data.spacingMode) {\n case SpacingMode.Percent:\n if (scale) {\n for (var i = 0, n = spacesCount - 1; i < n; i++) {\n var bone = bones[i];\n var setupLength = bone.data.length;\n if (setupLength < PathConstraint.epsilon)\n lengths[i] = 0;\n else {\n var x = setupLength * bone.a, y = setupLength * bone.c;\n lengths[i] = Math.sqrt(x * x + y * y);\n }\n }\n }\n Utils.arrayFill(spaces, 1, spacesCount, spacing);\n break;\n case SpacingMode.Proportional:\n var sum = 0;\n for (var i = 0, n = spacesCount - 1; i < n;) {\n var bone = bones[i];\n var setupLength = bone.data.length;\n if (setupLength < PathConstraint.epsilon) {\n if (scale)\n lengths[i] = 0;\n spaces[++i] = spacing;\n }\n else {\n var x = setupLength * bone.a, y = setupLength * bone.c;\n var length_1 = Math.sqrt(x * x + y * y);\n if (scale)\n lengths[i] = length_1;\n spaces[++i] = length_1;\n sum += length_1;\n }\n }\n if (sum > 0) {\n sum = spacesCount / sum * spacing;\n for (var i = 1; i < spacesCount; i++)\n spaces[i] *= sum;\n }\n break;\n default:\n var lengthSpacing = data.spacingMode == SpacingMode.Length;\n for (var i = 0, n = spacesCount - 1; i < n;) {\n var bone = bones[i];\n var setupLength = bone.data.length;\n if (setupLength < PathConstraint.epsilon) {\n if (scale)\n lengths[i] = 0;\n spaces[++i] = spacing;\n }\n else {\n var x = setupLength * bone.a, y = setupLength * bone.c;\n var length_2 = Math.sqrt(x * x + y * y);\n if (scale)\n lengths[i] = length_2;\n spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_2 / setupLength;\n }\n }\n }\n var positions = this.computeWorldPositions(attachment, spacesCount, tangents);\n var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;\n var tip = false;\n if (offsetRotation == 0)\n tip = data.rotateMode == RotateMode.Chain;\n else {\n tip = false;\n var p = this.target.bone;\n offsetRotation *= p.a * p.d - p.b * p.c > 0 ? MathUtils.degRad : -MathUtils.degRad;\n }\n for (var i = 0, p = 3; i < boneCount; i++, p += 3) {\n var bone = bones[i];\n bone.worldX += (boneX - bone.worldX) * mixX;\n bone.worldY += (boneY - bone.worldY) * mixY;\n var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;\n if (scale) {\n var length_3 = lengths[i];\n if (length_3 != 0) {\n var s = (Math.sqrt(dx * dx + dy * dy) / length_3 - 1) * mixRotate + 1;\n bone.a *= s;\n bone.c *= s;\n }\n }\n boneX = x;\n boneY = y;\n if (mixRotate > 0) {\n var a = bone.a, b = bone.b, c = bone.c, d = bone.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 var length_4 = bone.data.length;\n boneX += (length_4 * (cos * a - sin * c) - dx) * mixRotate;\n boneY += (length_4 * (sin * a + cos * c) - dy) * mixRotate;\n }\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 *= mixRotate;\n cos = Math.cos(r);\n sin = Math.sin(r);\n bone.a = cos * a - sin * c;\n bone.b = cos * b - sin * d;\n bone.c = sin * a + cos * c;\n bone.d = sin * b + cos * d;\n }\n bone.updateAppliedTransform();\n }\n };\n PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents) {\n var target = this.target;\n var position = this.position;\n var spaces = this.spaces, out = Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null;\n var closed = path.closed;\n var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE;\n if (!path.constantSpeed) {\n var lengths = path.lengths;\n curveCount -= closed ? 1 : 2;\n var pathLength_1 = lengths[curveCount];\n if (this.data.positionMode == PositionMode.Percent)\n position *= pathLength_1;\n var multiplier_1;\n switch (this.data.spacingMode) {\n case SpacingMode.Percent:\n multiplier_1 = pathLength_1;\n break;\n case SpacingMode.Proportional:\n multiplier_1 = pathLength_1 / spacesCount;\n break;\n default:\n multiplier_1 = 1;\n }\n world = Utils.setArraySize(this.world, 8);\n for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) {\n var space = spaces[i] * multiplier_1;\n position += space;\n var p = position;\n if (closed) {\n p %= pathLength_1;\n if (p < 0)\n p += pathLength_1;\n curve = 0;\n }\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 }\n else if (p > pathLength_1) {\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_1, world, 0, out, o);\n continue;\n }\n // Determine curve containing position.\n for (;; curve++) {\n var length_5 = lengths[curve];\n if (p > length_5)\n continue;\n if (curve == 0)\n p /= length_5;\n else {\n var prev = lengths[curve - 1];\n p = (p - prev) / (length_5 - 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 }\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, tangents || (i > 0 && space == 0));\n }\n return out;\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 }\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 // Curve lengths.\n var curves = Utils.setArraySize(this.curves, curveCount);\n var pathLength = 0;\n var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0;\n var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0;\n for (var 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 (this.data.positionMode == PositionMode.Percent)\n position *= pathLength;\n var multiplier;\n switch (this.data.spacingMode) {\n case SpacingMode.Percent:\n multiplier = pathLength;\n break;\n case SpacingMode.Proportional:\n multiplier = pathLength / spacesCount;\n break;\n default:\n multiplier = 1;\n }\n var segments = this.segments;\n var curveLength = 0;\n for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) {\n var space = spaces[i] * multiplier;\n position += space;\n var p = position;\n if (closed) {\n p %= pathLength;\n if (p < 0)\n p += pathLength;\n curve = 0;\n }\n else if (p < 0) {\n this.addBeforePosition(p, world, 0, out, o);\n continue;\n }\n else if (p > pathLength) {\n this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o);\n continue;\n }\n // Determine curve containing position.\n for (;; curve++) {\n var length_6 = curves[curve];\n if (p > length_6)\n continue;\n if (curve == 0)\n p /= length_6;\n else {\n var prev = curves[curve - 1];\n p = (p - prev) / (length_6 - prev);\n }\n break;\n }\n // Curve segment lengths.\n if (curve != prevCurve) {\n prevCurve = curve;\n var 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 // Weight by segment length.\n p *= curveLength;\n for (;; segment++) {\n var length_7 = segments[segment];\n if (p > length_7)\n continue;\n if (segment == 0)\n p /= length_7;\n else {\n var prev = segments[segment - 1];\n p = segment + (p - prev) / (length_7 - 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 PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) {\n var 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 PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) {\n var 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 PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) {\n if (p == 0 || isNaN(p)) {\n out[o] = x1;\n out[o + 1] = y1;\n out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1);\n return;\n }\n var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u;\n var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p;\n var 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) {\n if (p < 0.001)\n out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1);\n else\n out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt));\n }\n };\n PathConstraint.NONE = -1;\n PathConstraint.BEFORE = -2;\n PathConstraint.AFTER = -3;\n PathConstraint.epsilon = 0.00001;\n return PathConstraint;\n}());\nexport { PathConstraint };\n//# sourceMappingURL=PathConstraint.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { VertexAttachment } from \"./attachments/Attachment\";\nimport { Color } from \"./Utils\";\n/** Stores a slot's current pose. Slots organize attachments for {@link Skeleton#drawOrder} purposes and provide a place to store\n * state for an attachment. State cannot be stored in an attachment itself because attachments are stateless and may be shared\n * across multiple skeletons. */\nvar Slot = /** @class */ (function () {\n function Slot(data, bone) {\n /** Values to deform the slot's attachment. For an unweighted mesh, the entries are local positions for each vertex. For a\n * weighted mesh, the entries are an offset for each vertex which will be added to the mesh's local vertex positions.\n *\n * See {@link VertexAttachment#computeWorldVertices()} and {@link DeformTimeline}. */\n this.deform = new Array();\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!bone)\n 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 : new Color();\n this.setToSetupPose();\n }\n /** The skeleton this slot belongs to. */\n Slot.prototype.getSkeleton = function () {\n return this.bone.skeleton;\n };\n /** The current attachment for the slot, or null if the slot has no attachment. */\n Slot.prototype.getAttachment = function () {\n return this.attachment;\n };\n /** Sets the slot's attachment and, if the attachment changed, resets {@link #attachmentTime} and clears the {@link #deform}.\n * The deform is not cleared if the old attachment has the same {@link VertexAttachment#getDeformAttachment()} as the specified\n * attachment.\n * @param attachment May be null. */\n Slot.prototype.setAttachment = function (attachment) {\n if (this.attachment == attachment)\n return;\n if (!(attachment instanceof VertexAttachment) || !(this.attachment instanceof VertexAttachment)\n || attachment.deformAttachment != this.attachment.deformAttachment) {\n this.deform.length = 0;\n }\n this.attachment = attachment;\n this.attachmentTime = this.bone.skeleton.time;\n };\n Slot.prototype.setAttachmentTime = function (time) {\n this.attachmentTime = this.bone.skeleton.time - time;\n };\n /** The time that has elapsed since the last time the attachment was set or cleared. Relies on Skeleton\n * {@link Skeleton#time}. */\n Slot.prototype.getAttachmentTime = function () {\n return this.bone.skeleton.time - this.attachmentTime;\n };\n /** Sets this slot to the setup pose. */\n Slot.prototype.setToSetupPose = function () {\n this.color.setFromColor(this.data.color);\n if (this.darkColor)\n this.darkColor.setFromColor(this.data.darkColor);\n if (!this.data.attachmentName)\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 return Slot;\n}());\nexport { Slot };\n//# sourceMappingURL=Slot.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Vector2, MathUtils } from \"./Utils\";\n/** Stores the current pose for a transform constraint. A transform constraint adjusts the world transform of the constrained\n * bones to match that of the target bone.\n *\n * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */\nvar TransformConstraint = /** @class */ (function () {\n function TransformConstraint(data, skeleton) {\n this.mixRotate = 0;\n this.mixX = 0;\n this.mixY = 0;\n this.mixScaleX = 0;\n this.mixScaleY = 0;\n this.mixShearY = 0;\n this.temp = new Vector2();\n this.active = false;\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n this.data = data;\n this.mixRotate = data.mixRotate;\n this.mixX = data.mixX;\n this.mixY = data.mixY;\n this.mixScaleX = data.mixScaleX;\n this.mixScaleY = data.mixScaleY;\n this.mixShearY = data.mixShearY;\n this.bones = new Array();\n for (var 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 TransformConstraint.prototype.isActive = function () {\n return this.active;\n };\n TransformConstraint.prototype.update = function () {\n if (this.mixRotate == 0 && this.mixX == 0 && this.mixY == 0 && this.mixScaleX == 0 && this.mixScaleX == 0 && this.mixShearY == 0)\n return;\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 TransformConstraint.prototype.applyAbsoluteWorld = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var translate = mixX != 0 || mixY != 0;\n var target = this.target;\n var ta = target.a, tb = target.b, tc = target.c, td = target.d;\n var degRadReflect = ta * td - tb * tc > 0 ? MathUtils.degRad : -MathUtils.degRad;\n var offsetRotation = this.data.offsetRotation * degRadReflect;\n var offsetShearY = this.data.offsetShearY * degRadReflect;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (mixRotate != 0) {\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n var 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 *= mixRotate;\n var cos = Math.cos(r), sin = Math.sin(r);\n bone.a = cos * a - sin * c;\n bone.b = cos * b - sin * d;\n bone.c = sin * a + cos * c;\n bone.d = sin * b + cos * d;\n }\n if (translate) {\n var temp = this.temp;\n target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY));\n bone.worldX += (temp.x - bone.worldX) * mixX;\n bone.worldY += (temp.y - bone.worldY) * mixY;\n }\n if (mixScaleX != 0) {\n var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c);\n if (s != 0)\n s = (s + (Math.sqrt(ta * ta + tc * tc) - s + this.data.offsetScaleX) * mixScaleX) / s;\n bone.a *= s;\n bone.c *= s;\n }\n if (mixScaleY != 0) {\n var s = Math.sqrt(bone.b * bone.b + bone.d * bone.d);\n if (s != 0)\n s = (s + (Math.sqrt(tb * tb + td * td) - s + this.data.offsetScaleY) * mixScaleY) / s;\n bone.b *= s;\n bone.d *= s;\n }\n if (mixShearY > 0) {\n var b = bone.b, d = bone.d;\n var by = Math.atan2(d, b);\n var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.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) * mixShearY;\n var s = Math.sqrt(b * b + d * d);\n bone.b = Math.cos(r) * s;\n bone.d = Math.sin(r) * s;\n }\n bone.updateAppliedTransform();\n }\n };\n TransformConstraint.prototype.applyRelativeWorld = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var translate = mixX != 0 || mixY != 0;\n var target = this.target;\n var ta = target.a, tb = target.b, tc = target.c, td = target.d;\n var degRadReflect = ta * td - tb * tc > 0 ? MathUtils.degRad : -MathUtils.degRad;\n var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (mixRotate != 0) {\n var a = bone.a, b = bone.b, c = bone.c, d = bone.d;\n var r = Math.atan2(tc, ta) + offsetRotation;\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI) //\n r += MathUtils.PI2;\n r *= mixRotate;\n var cos = Math.cos(r), sin = Math.sin(r);\n bone.a = cos * a - sin * c;\n bone.b = cos * b - sin * d;\n bone.c = sin * a + cos * c;\n bone.d = sin * b + cos * d;\n }\n if (translate) {\n var temp = this.temp;\n target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY));\n bone.worldX += temp.x * mixX;\n bone.worldY += temp.y * mixY;\n }\n if (mixScaleX != 0) {\n var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * mixScaleX + 1;\n bone.a *= s;\n bone.c *= s;\n }\n if (mixScaleY != 0) {\n var s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * mixScaleY + 1;\n bone.b *= s;\n bone.d *= s;\n }\n if (mixShearY > 0) {\n var r = Math.atan2(td, tb) - Math.atan2(tc, ta);\n if (r > MathUtils.PI)\n r -= MathUtils.PI2;\n else if (r < -MathUtils.PI) //\n r += MathUtils.PI2;\n var b = bone.b, d = bone.d;\n r = Math.atan2(d, b) + (r - MathUtils.PI / 2 + offsetShearY) * mixShearY;\n var s = Math.sqrt(b * b + d * d);\n bone.b = Math.cos(r) * s;\n bone.d = Math.sin(r) * s;\n }\n bone.updateAppliedTransform();\n }\n };\n TransformConstraint.prototype.applyAbsoluteLocal = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var target = this.target;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n var rotation = bone.arotation;\n if (mixRotate != 0) {\n var r = target.arotation - rotation + this.data.offsetRotation;\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n rotation += r * mixRotate;\n }\n var x = bone.ax, y = bone.ay;\n x += (target.ax - x + this.data.offsetX) * mixX;\n y += (target.ay - y + this.data.offsetY) * mixY;\n var scaleX = bone.ascaleX, scaleY = bone.ascaleY;\n if (mixScaleX != 0 && scaleX != 0)\n scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * mixScaleX) / scaleX;\n if (mixScaleY != 0 && scaleY != 0)\n scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * mixScaleY) / scaleY;\n var shearY = bone.ashearY;\n if (mixShearY != 0) {\n var r = target.ashearY - shearY + this.data.offsetShearY;\n r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;\n shearY += r * mixShearY;\n }\n bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY);\n }\n };\n TransformConstraint.prototype.applyRelativeLocal = function () {\n var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY;\n var target = this.target;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n var rotation = bone.arotation + (target.arotation + this.data.offsetRotation) * mixRotate;\n var x = bone.ax + (target.ax + this.data.offsetX) * mixX;\n var y = bone.ay + (target.ay + this.data.offsetY) * mixY;\n var scaleX = (bone.ascaleX * ((target.ascaleX - 1 + this.data.offsetScaleX) * mixScaleX) + 1);\n var scaleY = (bone.ascaleY * ((target.ascaleY - 1 + this.data.offsetScaleY) * mixScaleY) + 1);\n var shearY = bone.ashearY + (target.ashearY + this.data.offsetShearY) * mixShearY;\n bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY);\n }\n };\n return TransformConstraint;\n}());\nexport { TransformConstraint };\n//# sourceMappingURL=TransformConstraint.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { MeshAttachment } from \"./attachments/MeshAttachment\";\nimport { PathAttachment } from \"./attachments/PathAttachment\";\nimport { RegionAttachment } from \"./attachments/RegionAttachment\";\nimport { Bone } from \"./Bone\";\nimport { IkConstraint } from \"./IkConstraint\";\nimport { PathConstraint } from \"./PathConstraint\";\nimport { Slot } from \"./Slot\";\nimport { TransformConstraint } from \"./TransformConstraint\";\nimport { Color, Utils, MathUtils } from \"./Utils\";\n/** Stores the current pose for a skeleton.\n *\n * See [Instance objects](http://esotericsoftware.com/spine-runtime-architecture#Instance-objects) in the Spine Runtimes Guide. */\nvar Skeleton = /** @class */ (function () {\n function Skeleton(data) {\n /** The list of bones and constraints, sorted in the order they should be updated, as computed by {@link #updateCache()}. */\n this._updateCache = new Array();\n /** Returns the skeleton's time. This can be used for tracking, such as with Slot {@link Slot#attachmentTime}.\n *

        \n * See {@link #update()}. */\n this.time = 0;\n /** Scales the entire skeleton on the X axis. This affects all bones, even if the bone's transform mode disallows scale\n * inheritance. */\n this.scaleX = 1;\n /** Scales the entire skeleton on the Y axis. This affects all bones, even if the bone's transform mode disallows scale\n * inheritance. */\n this.scaleY = 1;\n /** Sets the skeleton X position, which is added to the root bone worldX position. */\n this.x = 0;\n /** Sets the skeleton Y position, which is added to the root bone worldY position. */\n this.y = 0;\n if (!data)\n throw new Error(\"data cannot be null.\");\n this.data = data;\n this.bones = new Array();\n for (var i = 0; i < data.bones.length; i++) {\n var boneData = data.bones[i];\n var bone = void 0;\n if (!boneData.parent)\n bone = new Bone(boneData, this, null);\n else {\n var parent_1 = this.bones[boneData.parent.index];\n bone = new Bone(boneData, this, parent_1);\n parent_1.children.push(bone);\n }\n this.bones.push(bone);\n }\n this.slots = new Array();\n this.drawOrder = new Array();\n for (var i = 0; i < data.slots.length; i++) {\n var slotData = data.slots[i];\n var bone = this.bones[slotData.boneData.index];\n var slot = new Slot(slotData, bone);\n this.slots.push(slot);\n this.drawOrder.push(slot);\n }\n this.ikConstraints = new Array();\n for (var i = 0; i < data.ikConstraints.length; i++) {\n var ikConstraintData = data.ikConstraints[i];\n this.ikConstraints.push(new IkConstraint(ikConstraintData, this));\n }\n this.transformConstraints = new Array();\n for (var i = 0; i < data.transformConstraints.length; i++) {\n var transformConstraintData = data.transformConstraints[i];\n this.transformConstraints.push(new TransformConstraint(transformConstraintData, this));\n }\n this.pathConstraints = new Array();\n for (var i = 0; i < data.pathConstraints.length; i++) {\n var pathConstraintData = data.pathConstraints[i];\n this.pathConstraints.push(new PathConstraint(pathConstraintData, this));\n }\n this.color = new Color(1, 1, 1, 1);\n this.updateCache();\n }\n /** Caches information about bones and constraints. Must be called if the {@link #getSkin()} is modified or if bones,\n * constraints, or weighted path attachments are added or removed. */\n Skeleton.prototype.updateCache = function () {\n var updateCache = this._updateCache;\n updateCache.length = 0;\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n bone.sorted = bone.data.skinRequired;\n bone.active = !bone.sorted;\n }\n if (this.skin) {\n var skinBones = this.skin.bones;\n for (var i = 0, n = this.skin.bones.length; i < n; i++) {\n var bone = this.bones[skinBones[i].index];\n do {\n bone.sorted = false;\n bone.active = true;\n bone = bone.parent;\n } while (bone);\n }\n }\n // IK first, lowest hierarchy depth first.\n var ikConstraints = this.ikConstraints;\n var transformConstraints = this.transformConstraints;\n var pathConstraints = this.pathConstraints;\n var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length;\n var constraintCount = ikCount + transformCount + pathCount;\n outer: for (var i = 0; i < constraintCount; i++) {\n for (var ii = 0; ii < ikCount; ii++) {\n var constraint = ikConstraints[ii];\n if (constraint.data.order == i) {\n this.sortIkConstraint(constraint);\n continue outer;\n }\n }\n for (var ii = 0; ii < transformCount; ii++) {\n var constraint = transformConstraints[ii];\n if (constraint.data.order == i) {\n this.sortTransformConstraint(constraint);\n continue outer;\n }\n }\n for (var ii = 0; ii < pathCount; ii++) {\n var constraint = pathConstraints[ii];\n if (constraint.data.order == i) {\n this.sortPathConstraint(constraint);\n continue outer;\n }\n }\n }\n for (var i = 0, n = bones.length; i < n; i++)\n this.sortBone(bones[i]);\n };\n Skeleton.prototype.sortIkConstraint = function (constraint) {\n constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true)));\n if (!constraint.active)\n return;\n var target = constraint.target;\n this.sortBone(target);\n var constrained = constraint.bones;\n var parent = constrained[0];\n this.sortBone(parent);\n if (constrained.length == 1) {\n this._updateCache.push(constraint);\n this.sortReset(parent.children);\n }\n else {\n var child = constrained[constrained.length - 1];\n this.sortBone(child);\n this._updateCache.push(constraint);\n this.sortReset(parent.children);\n child.sorted = true;\n }\n };\n Skeleton.prototype.sortPathConstraint = function (constraint) {\n constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true)));\n if (!constraint.active)\n return;\n var slot = constraint.target;\n var slotIndex = slot.data.index;\n var slotBone = slot.bone;\n if (this.skin)\n this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone);\n if (this.data.defaultSkin && this.data.defaultSkin != this.skin)\n this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone);\n for (var i = 0, n = this.data.skins.length; i < n; i++)\n this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone);\n var attachment = slot.getAttachment();\n if (attachment instanceof PathAttachment)\n this.sortPathConstraintAttachmentWith(attachment, slotBone);\n var constrained = constraint.bones;\n var boneCount = constrained.length;\n for (var i = 0; i < boneCount; i++)\n this.sortBone(constrained[i]);\n this._updateCache.push(constraint);\n for (var i = 0; i < boneCount; i++)\n this.sortReset(constrained[i].children);\n for (var i = 0; i < boneCount; i++)\n constrained[i].sorted = true;\n };\n Skeleton.prototype.sortTransformConstraint = function (constraint) {\n constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && Utils.contains(this.skin.constraints, constraint.data, true)));\n if (!constraint.active)\n return;\n this.sortBone(constraint.target);\n var constrained = constraint.bones;\n var boneCount = constrained.length;\n if (constraint.data.local) {\n for (var i = 0; i < boneCount; i++) {\n var child = constrained[i];\n this.sortBone(child.parent);\n this.sortBone(child);\n }\n }\n else {\n for (var i = 0; i < boneCount; i++) {\n this.sortBone(constrained[i]);\n }\n }\n this._updateCache.push(constraint);\n for (var i = 0; i < boneCount; i++)\n this.sortReset(constrained[i].children);\n for (var i = 0; i < boneCount; i++)\n constrained[i].sorted = true;\n };\n Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) {\n var attachments = skin.attachments[slotIndex];\n if (!attachments)\n return;\n for (var key in attachments) {\n this.sortPathConstraintAttachmentWith(attachments[key], slotBone);\n }\n };\n Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) {\n if (!(attachment instanceof PathAttachment))\n return;\n var pathBones = attachment.bones;\n if (!pathBones)\n this.sortBone(slotBone);\n else {\n var bones = this.bones;\n for (var i = 0, n = pathBones.length; i < n;) {\n var nn = pathBones[i++];\n nn += i;\n while (i < nn)\n this.sortBone(bones[pathBones[i++]]);\n }\n }\n };\n Skeleton.prototype.sortBone = function (bone) {\n if (bone.sorted)\n return;\n var parent = bone.parent;\n if (parent)\n this.sortBone(parent);\n bone.sorted = true;\n this._updateCache.push(bone);\n };\n Skeleton.prototype.sortReset = function (bones) {\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (!bone.active)\n continue;\n if (bone.sorted)\n this.sortReset(bone.children);\n bone.sorted = false;\n }\n };\n /** Updates the world transform for each bone and applies all constraints.\n *\n * See [World transforms](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) in the Spine\n * Runtimes Guide. */\n Skeleton.prototype.updateWorldTransform = function () {\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\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 }\n var updateCache = this._updateCache;\n for (var i = 0, n = updateCache.length; i < n; i++)\n updateCache[i].update();\n };\n Skeleton.prototype.updateWorldTransformWith = function (parent) {\n // Apply the parent bone transform to the root bone. The root bone always inherits scale, rotation and reflection.\n var rootBone = this.getRootBone();\n var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d;\n rootBone.worldX = pa * this.x + pb * this.y + parent.worldX;\n rootBone.worldY = pc * this.x + pd * this.y + parent.worldY;\n var rotationY = rootBone.rotation + 90 + rootBone.shearY;\n var la = MathUtils.cosDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX;\n var lb = MathUtils.cosDeg(rotationY) * rootBone.scaleY;\n var lc = MathUtils.sinDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX;\n var ld = MathUtils.sinDeg(rotationY) * rootBone.scaleY;\n rootBone.a = (pa * la + pb * lc) * this.scaleX;\n rootBone.b = (pa * lb + pb * ld) * this.scaleX;\n rootBone.c = (pc * la + pd * lc) * this.scaleY;\n rootBone.d = (pc * lb + pd * ld) * this.scaleY;\n // Update everything except root bone.\n var updateCache = this._updateCache;\n for (var i = 0, n = updateCache.length; i < n; i++) {\n var updatable = updateCache[i];\n if (updatable != rootBone)\n updatable.update();\n }\n };\n /** Sets the bones, constraints, and slots to their setup pose values. */\n Skeleton.prototype.setToSetupPose = function () {\n this.setBonesToSetupPose();\n this.setSlotsToSetupPose();\n };\n /** Sets the bones and constraints to their setup pose values. */\n Skeleton.prototype.setBonesToSetupPose = function () {\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++)\n bones[i].setToSetupPose();\n var ikConstraints = this.ikConstraints;\n for (var i = 0, n = ikConstraints.length; i < n; i++) {\n var constraint = ikConstraints[i];\n constraint.mix = constraint.data.mix;\n constraint.softness = constraint.data.softness;\n constraint.bendDirection = constraint.data.bendDirection;\n constraint.compress = constraint.data.compress;\n constraint.stretch = constraint.data.stretch;\n }\n var transformConstraints = this.transformConstraints;\n for (var i = 0, n = transformConstraints.length; i < n; i++) {\n var constraint = transformConstraints[i];\n var data = constraint.data;\n constraint.mixRotate = data.mixRotate;\n constraint.mixX = data.mixX;\n constraint.mixY = data.mixY;\n constraint.mixScaleX = data.mixScaleX;\n constraint.mixScaleY = data.mixScaleY;\n constraint.mixShearY = data.mixShearY;\n }\n var pathConstraints = this.pathConstraints;\n for (var i = 0, n = pathConstraints.length; i < n; i++) {\n var constraint = pathConstraints[i];\n var data = constraint.data;\n constraint.position = data.position;\n constraint.spacing = data.spacing;\n constraint.mixRotate = data.mixRotate;\n constraint.mixX = data.mixX;\n constraint.mixY = data.mixY;\n }\n };\n /** Sets the slots and draw order to their setup pose values. */\n Skeleton.prototype.setSlotsToSetupPose = function () {\n var slots = this.slots;\n Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length);\n for (var i = 0, n = slots.length; i < n; i++)\n slots[i].setToSetupPose();\n };\n /** @returns May return null. */\n Skeleton.prototype.getRootBone = function () {\n if (this.bones.length == 0)\n return null;\n return this.bones[0];\n };\n /** @returns May be null. */\n Skeleton.prototype.findBone = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (bone.data.name == boneName)\n return bone;\n }\n return null;\n };\n /** @returns -1 if the bone was not found. */\n Skeleton.prototype.findBoneIndex = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++)\n if (bones[i].data.name == boneName)\n return i;\n return -1;\n };\n /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it\n * repeatedly.\n * @returns May be null. */\n Skeleton.prototype.findSlot = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.data.name == slotName)\n return slot;\n }\n return null;\n };\n /** @returns -1 if the bone was not found. */\n Skeleton.prototype.findSlotIndex = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n if (slots[i].data.name == slotName)\n return i;\n return -1;\n };\n /** Sets a skin by name.\n *\n * See {@link #setSkin()}. */\n Skeleton.prototype.setSkinByName = function (skinName) {\n var skin = this.data.findSkin(skinName);\n if (!skin)\n throw new Error(\"Skin not found: \" + skinName);\n this.setSkin(skin);\n };\n /** Sets the skin used to look up attachments before looking in the {@link SkeletonData#defaultSkin default skin}. If the\n * skin is changed, {@link #updateCache()} is called.\n *\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 *\n * After changing the skin, the visible attachments can be reset to those attached in the setup pose by calling\n * {@link #setSlotsToSetupPose()}. Also, often {@link AnimationState#apply()} is called before the next time the\n * skeleton is rendered to allow any attachment keys in the current animation(s) to hide or show attachments from the new skin.\n * @param newSkin May be null. */\n Skeleton.prototype.setSkin = function (newSkin) {\n if (newSkin == this.skin)\n return;\n if (newSkin) {\n if (this.skin)\n newSkin.attachAll(this, this.skin);\n else {\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n var name_1 = slot.data.attachmentName;\n if (name_1) {\n var attachment = newSkin.getAttachment(i, name_1);\n if (attachment)\n slot.setAttachment(attachment);\n }\n }\n }\n }\n this.skin = newSkin;\n this.updateCache();\n };\n /** Finds an attachment by looking in the {@link #skin} and {@link SkeletonData#defaultSkin} using the slot name and attachment\n * name.\n *\n * See {@link #getAttachment()}.\n * @returns May be null. */\n Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) {\n return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName);\n };\n /** Finds an attachment by looking in the {@link #skin} and {@link SkeletonData#defaultSkin} using the slot index and\n * attachment name. First the skin is checked and if the attachment was not found, the default skin is checked.\n *\n * See [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide.\n * @returns May be null. */\n Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) {\n if (!attachmentName)\n throw new Error(\"attachmentName cannot be null.\");\n if (this.skin) {\n var attachment = this.skin.getAttachment(slotIndex, attachmentName);\n if (attachment)\n return attachment;\n }\n if (this.data.defaultSkin)\n return this.data.defaultSkin.getAttachment(slotIndex, attachmentName);\n return null;\n };\n /** A convenience method to set an attachment by finding the slot with {@link #findSlot()}, finding the attachment with\n * {@link #getAttachment()}, then setting the slot's {@link Slot#attachment}.\n * @param attachmentName May be null to clear the slot's attachment. */\n Skeleton.prototype.setAttachment = function (slotName, attachmentName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.data.name == slotName) {\n var attachment = null;\n if (attachmentName) {\n attachment = this.getAttachment(i, attachmentName);\n if (!attachment)\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 /** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method\n * than to call it repeatedly.\n * @return May be null. */\n Skeleton.prototype.findIkConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var ikConstraints = this.ikConstraints;\n for (var i = 0, n = ikConstraints.length; i < n; i++) {\n var ikConstraint = ikConstraints[i];\n if (ikConstraint.data.name == constraintName)\n return ikConstraint;\n }\n return null;\n };\n /** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of\n * this method than to call it repeatedly.\n * @return May be null. */\n Skeleton.prototype.findTransformConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var transformConstraints = this.transformConstraints;\n for (var i = 0, n = transformConstraints.length; i < n; i++) {\n var constraint = transformConstraints[i];\n if (constraint.data.name == constraintName)\n return constraint;\n }\n return null;\n };\n /** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method\n * than to call it repeatedly.\n * @return May be null. */\n Skeleton.prototype.findPathConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var pathConstraints = this.pathConstraints;\n for (var i = 0, n = pathConstraints.length; i < n; i++) {\n var constraint = pathConstraints[i];\n if (constraint.data.name == constraintName)\n return constraint;\n }\n return null;\n };\n /** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose.\n * @param offset An output value, the distance from the skeleton origin to the bottom left corner of the AABB.\n * @param size An output value, the width and height of the AABB.\n * @param temp Working memory to temporarily store attachments' computed world vertices. */\n Skeleton.prototype.getBounds = function (offset, size, temp) {\n if (temp === void 0) { temp = new Array(2); }\n if (!offset)\n throw new Error(\"offset cannot be null.\");\n if (!size)\n throw new Error(\"size cannot be null.\");\n var drawOrder = this.drawOrder;\n var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;\n for (var i = 0, n = drawOrder.length; i < n; i++) {\n var slot = drawOrder[i];\n if (!slot.bone.active)\n continue;\n var verticesLength = 0;\n var vertices = null;\n var attachment = slot.getAttachment();\n if (attachment instanceof RegionAttachment) {\n verticesLength = 8;\n vertices = Utils.setArraySize(temp, verticesLength, 0);\n attachment.computeWorldVertices(slot.bone, vertices, 0, 2);\n }\n else if (attachment instanceof MeshAttachment) {\n var mesh = 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) {\n for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) {\n var 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 /** Increments the skeleton's {@link #time}. */\n Skeleton.prototype.update = function (delta) {\n this.time += delta;\n };\n return Skeleton;\n}());\nexport { Skeleton };\n//# sourceMappingURL=Skeleton.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n/** Stores the setup pose and all of the stateless data for a skeleton.\n *\n * See [Data objects](http://esotericsoftware.com/spine-runtime-architecture#Data-objects) in the Spine Runtimes\n * Guide. */\nvar SkeletonData = /** @class */ (function () {\n function SkeletonData() {\n /** The skeleton's bones, sorted parent first. The root bone is always the first bone. */\n this.bones = new Array(); // Ordered parents first.\n /** The skeleton's slots. */\n this.slots = new Array(); // Setup pose draw order.\n this.skins = new Array();\n /** The skeleton's events. */\n this.events = new Array();\n /** The skeleton's animations. */\n this.animations = new Array();\n /** The skeleton's IK constraints. */\n this.ikConstraints = new Array();\n /** The skeleton's transform constraints. */\n this.transformConstraints = new Array();\n /** The skeleton's path constraints. */\n this.pathConstraints = new Array();\n // Nonessential\n /** The dopesheet FPS in Spine. Available only when nonessential data was exported. */\n this.fps = 0;\n }\n /** Finds a bone by comparing each bone's name. It is more efficient to cache the results of this method than to call it\n * multiple times.\n * @returns May be null. */\n SkeletonData.prototype.findBone = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++) {\n var bone = bones[i];\n if (bone.name == boneName)\n return bone;\n }\n return null;\n };\n SkeletonData.prototype.findBoneIndex = function (boneName) {\n if (!boneName)\n throw new Error(\"boneName cannot be null.\");\n var bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++)\n if (bones[i].name == boneName)\n return i;\n return -1;\n };\n /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it\n * multiple times.\n * @returns May be null. */\n SkeletonData.prototype.findSlot = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++) {\n var slot = slots[i];\n if (slot.name == slotName)\n return slot;\n }\n return null;\n };\n SkeletonData.prototype.findSlotIndex = function (slotName) {\n if (!slotName)\n throw new Error(\"slotName cannot be null.\");\n var slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n if (slots[i].name == slotName)\n return i;\n return -1;\n };\n /** Finds a skin by comparing each skin's name. It is more efficient to cache the results of this method than to call it\n * multiple times.\n * @returns May be null. */\n SkeletonData.prototype.findSkin = function (skinName) {\n if (!skinName)\n throw new Error(\"skinName cannot be null.\");\n var skins = this.skins;\n for (var i = 0, n = skins.length; i < n; i++) {\n var skin = skins[i];\n if (skin.name == skinName)\n return skin;\n }\n return null;\n };\n /** Finds an event by comparing each events's name. It is more efficient to cache the results of this method than to call it\n * multiple times.\n * @returns May be null. */\n SkeletonData.prototype.findEvent = function (eventDataName) {\n if (!eventDataName)\n throw new Error(\"eventDataName cannot be null.\");\n var events = this.events;\n for (var i = 0, n = events.length; i < n; i++) {\n var event_1 = events[i];\n if (event_1.name == eventDataName)\n return event_1;\n }\n return null;\n };\n /** Finds an animation by comparing each animation's name. It is more efficient to cache the results of this method than to\n * call it multiple times.\n * @returns May be null. */\n SkeletonData.prototype.findAnimation = function (animationName) {\n if (!animationName)\n throw new Error(\"animationName cannot be null.\");\n var animations = this.animations;\n for (var i = 0, n = animations.length; i < n; i++) {\n var animation = animations[i];\n if (animation.name == animationName)\n return animation;\n }\n return null;\n };\n /** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method\n * than to call it multiple times.\n * @return May be null. */\n SkeletonData.prototype.findIkConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var ikConstraints = this.ikConstraints;\n for (var i = 0, n = ikConstraints.length; i < n; i++) {\n var constraint = ikConstraints[i];\n if (constraint.name == constraintName)\n return constraint;\n }\n return null;\n };\n /** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of\n * this method than to call it multiple times.\n * @return May be null. */\n SkeletonData.prototype.findTransformConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var transformConstraints = this.transformConstraints;\n for (var i = 0, n = transformConstraints.length; i < n; i++) {\n var constraint = transformConstraints[i];\n if (constraint.name == constraintName)\n return constraint;\n }\n return null;\n };\n /** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method\n * than to call it multiple times.\n * @return May be null. */\n SkeletonData.prototype.findPathConstraint = function (constraintName) {\n if (!constraintName)\n throw new Error(\"constraintName cannot be null.\");\n var pathConstraints = this.pathConstraints;\n for (var i = 0, n = pathConstraints.length; i < n; i++) {\n var constraint = pathConstraints[i];\n if (constraint.name == constraintName)\n return constraint;\n }\n return null;\n };\n return SkeletonData;\n}());\nexport { SkeletonData };\n//# sourceMappingURL=SkeletonData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { MeshAttachment } from \"./attachments/MeshAttachment\";\n/** Stores an entry in the skin consisting of the slot index, name, and attachment **/\nvar SkinEntry = /** @class */ (function () {\n function SkinEntry(slotIndex, name, attachment) {\n this.slotIndex = slotIndex;\n this.name = name;\n this.attachment = attachment;\n }\n return SkinEntry;\n}());\nexport { SkinEntry };\n/** Stores attachments by slot index and attachment name.\n *\n * See SkeletonData {@link SkeletonData#defaultSkin}, Skeleton {@link Skeleton#skin}, and\n * [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide. */\nvar Skin = /** @class */ (function () {\n function Skin(name) {\n this.attachments = new Array();\n this.bones = Array();\n this.constraints = new Array();\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.name = name;\n }\n /** Adds an attachment to the skin for the specified slot index and name. */\n Skin.prototype.setAttachment = function (slotIndex, name, attachment) {\n if (!attachment)\n throw new Error(\"attachment cannot be null.\");\n var attachments = this.attachments;\n if (slotIndex >= attachments.length)\n attachments.length = slotIndex + 1;\n if (!attachments[slotIndex])\n attachments[slotIndex] = {};\n attachments[slotIndex][name] = attachment;\n };\n /** Adds all attachments, bones, and constraints from the specified skin to this skin. */\n Skin.prototype.addSkin = function (skin) {\n for (var i = 0; i < skin.bones.length; i++) {\n var bone = skin.bones[i];\n var contained = false;\n for (var ii = 0; ii < this.bones.length; ii++) {\n if (this.bones[ii] == bone) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.bones.push(bone);\n }\n for (var i = 0; i < skin.constraints.length; i++) {\n var constraint = skin.constraints[i];\n var contained = false;\n for (var ii = 0; ii < this.constraints.length; ii++) {\n if (this.constraints[ii] == constraint) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.constraints.push(constraint);\n }\n var attachments = skin.getAttachments();\n for (var i = 0; i < attachments.length; i++) {\n var attachment = attachments[i];\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n };\n /** Adds all bones and constraints and copies of all attachments from the specified skin to this skin. Mesh attachments are not\n * copied, instead a new linked mesh is created. The attachment copies can be modified without affecting the originals. */\n Skin.prototype.copySkin = function (skin) {\n for (var i = 0; i < skin.bones.length; i++) {\n var bone = skin.bones[i];\n var contained = false;\n for (var ii = 0; ii < this.bones.length; ii++) {\n if (this.bones[ii] == bone) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.bones.push(bone);\n }\n for (var i = 0; i < skin.constraints.length; i++) {\n var constraint = skin.constraints[i];\n var contained = false;\n for (var ii = 0; ii < this.constraints.length; ii++) {\n if (this.constraints[ii] == constraint) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.constraints.push(constraint);\n }\n var attachments = skin.getAttachments();\n for (var i = 0; i < attachments.length; i++) {\n var attachment = attachments[i];\n if (!attachment.attachment)\n continue;\n if (attachment.attachment instanceof MeshAttachment) {\n attachment.attachment = attachment.attachment.newLinkedMesh();\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n else {\n attachment.attachment = attachment.attachment.copy();\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n }\n };\n /** Returns the attachment for the specified slot index and name, or null. */\n Skin.prototype.getAttachment = function (slotIndex, name) {\n var dictionary = this.attachments[slotIndex];\n return dictionary ? dictionary[name] : null;\n };\n /** Removes the attachment in the skin for the specified slot index and name, if any. */\n Skin.prototype.removeAttachment = function (slotIndex, name) {\n var dictionary = this.attachments[slotIndex];\n if (dictionary)\n dictionary[name] = null;\n };\n /** Returns all attachments in this skin. */\n Skin.prototype.getAttachments = function () {\n var entries = new Array();\n for (var i = 0; i < this.attachments.length; i++) {\n var slotAttachments = this.attachments[i];\n if (slotAttachments) {\n for (var name_1 in slotAttachments) {\n var attachment = slotAttachments[name_1];\n if (attachment)\n entries.push(new SkinEntry(i, name_1, attachment));\n }\n }\n }\n return entries;\n };\n /** Returns all attachments in this skin for the specified slot index. */\n Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) {\n var slotAttachments = this.attachments[slotIndex];\n if (slotAttachments) {\n for (var name_2 in slotAttachments) {\n var attachment = slotAttachments[name_2];\n if (attachment)\n attachments.push(new SkinEntry(slotIndex, name_2, attachment));\n }\n }\n };\n /** Clears all attachments, bones, and constraints. */\n Skin.prototype.clear = function () {\n this.attachments.length = 0;\n this.bones.length = 0;\n this.constraints.length = 0;\n };\n /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */\n Skin.prototype.attachAll = function (skeleton, oldSkin) {\n var slotIndex = 0;\n for (var i = 0; i < skeleton.slots.length; i++) {\n var slot = skeleton.slots[i];\n var slotAttachment = slot.getAttachment();\n if (slotAttachment && slotIndex < oldSkin.attachments.length) {\n var dictionary = oldSkin.attachments[slotIndex];\n for (var key in dictionary) {\n var skinAttachment = dictionary[key];\n if (slotAttachment == skinAttachment) {\n var attachment = this.getAttachment(slotIndex, key);\n if (attachment)\n slot.setAttachment(attachment);\n break;\n }\n }\n }\n slotIndex++;\n }\n };\n return Skin;\n}());\nexport { Skin };\n//# sourceMappingURL=Skin.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Color } from \"./Utils\";\n/** Stores the setup pose for a {@link Slot}. */\nvar SlotData = /** @class */ (function () {\n function SlotData(index, name, boneData) {\n /** The color used to tint the slot's attachment. If {@link #getDarkColor()} is set, this is used as the light color for two\n * color tinting. */\n this.color = new Color(1, 1, 1, 1);\n if (index < 0)\n throw new Error(\"index must be >= 0.\");\n if (!name)\n throw new Error(\"name cannot be null.\");\n if (!boneData)\n throw new Error(\"boneData cannot be null.\");\n this.index = index;\n this.name = name;\n this.boneData = boneData;\n }\n return SlotData;\n}());\nexport { SlotData };\n/** Determines how images are blended with existing pixels when drawn. */\nexport var BlendMode;\n(function (BlendMode) {\n BlendMode[BlendMode[\"Normal\"] = 0] = \"Normal\";\n BlendMode[BlendMode[\"Additive\"] = 1] = \"Additive\";\n BlendMode[BlendMode[\"Multiply\"] = 2] = \"Multiply\";\n BlendMode[BlendMode[\"Screen\"] = 3] = \"Screen\";\n})(BlendMode || (BlendMode = {}));\n//# sourceMappingURL=SlotData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConstraintData } from \"./ConstraintData\";\n/** Stores the setup pose for a {@link TransformConstraint}.\n *\n * See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */\nvar TransformConstraintData = /** @class */ (function (_super) {\n __extends(TransformConstraintData, _super);\n function TransformConstraintData(name) {\n var _this = _super.call(this, name, 0, false) || this;\n /** The bones that will be modified by this transform constraint. */\n _this.bones = new Array();\n _this.mixRotate = 0;\n _this.mixX = 0;\n _this.mixY = 0;\n _this.mixScaleX = 0;\n _this.mixScaleY = 0;\n _this.mixShearY = 0;\n /** An offset added to the constrained bone rotation. */\n _this.offsetRotation = 0;\n /** An offset added to the constrained bone X translation. */\n _this.offsetX = 0;\n /** An offset added to the constrained bone Y translation. */\n _this.offsetY = 0;\n /** An offset added to the constrained bone scaleX. */\n _this.offsetScaleX = 0;\n /** An offset added to the constrained bone scaleY. */\n _this.offsetScaleY = 0;\n /** An offset added to the constrained bone shearY. */\n _this.offsetShearY = 0;\n _this.relative = false;\n _this.local = false;\n return _this;\n }\n return TransformConstraintData;\n}(ConstraintData));\nexport { TransformConstraintData };\n//# sourceMappingURL=TransformConstraintData.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Animation, AttachmentTimeline, RGBATimeline, RGBTimeline, RGBA2Timeline, RGB2Timeline, AlphaTimeline, RotateTimeline, TranslateTimeline, TranslateXTimeline, TranslateYTimeline, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, IkConstraintTimeline, TransformConstraintTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PathConstraintMixTimeline, DeformTimeline, DrawOrderTimeline, EventTimeline } from \"./Animation\";\nimport { BoneData } from \"./BoneData\";\nimport { Event } from \"./Event\";\nimport { EventData } from \"./EventData\";\nimport { IkConstraintData } from \"./IkConstraintData\";\nimport { PathConstraintData, PositionMode, SpacingMode } from \"./PathConstraintData\";\nimport { SkeletonData } from \"./SkeletonData\";\nimport { Skin } from \"./Skin\";\nimport { SlotData } from \"./SlotData\";\nimport { TransformConstraintData } from \"./TransformConstraintData\";\nimport { Color, Utils } from \"./Utils\";\n/** Loads skeleton data in the Spine binary format.\n *\n * See [Spine binary format](http://esotericsoftware.com/spine-binary-format) and\n * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine\n * Runtimes Guide. */\nvar SkeletonBinary = /** @class */ (function () {\n function SkeletonBinary(attachmentLoader) {\n /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at\n * runtime than were used in Spine.\n *\n * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */\n this.scale = 1;\n this.linkedMeshes = new Array();\n this.attachmentLoader = attachmentLoader;\n }\n SkeletonBinary.prototype.readSkeletonData = function (binary) {\n var scale = this.scale;\n var skeletonData = new SkeletonData();\n skeletonData.name = \"\"; // BOZO\n var input = new BinaryInput(binary);\n var lowHash = input.readInt32();\n var highHash = input.readInt32();\n skeletonData.hash = highHash == 0 && lowHash == 0 ? null : highHash.toString(16) + lowHash.toString(16);\n skeletonData.version = input.readString();\n skeletonData.x = input.readFloat();\n skeletonData.y = input.readFloat();\n skeletonData.width = input.readFloat();\n skeletonData.height = input.readFloat();\n var nonessential = input.readBoolean();\n if (nonessential) {\n skeletonData.fps = input.readFloat();\n skeletonData.imagesPath = input.readString();\n skeletonData.audioPath = input.readString();\n }\n var n = 0;\n // Strings.\n n = input.readInt(true);\n for (var i = 0; i < n; i++)\n input.strings.push(input.readString());\n // Bones.\n n = input.readInt(true);\n for (var i = 0; i < n; i++) {\n var name_1 = input.readString();\n var parent_1 = i == 0 ? null : skeletonData.bones[input.readInt(true)];\n var data = new BoneData(i, name_1, parent_1);\n data.rotation = input.readFloat();\n data.x = input.readFloat() * scale;\n data.y = input.readFloat() * scale;\n data.scaleX = input.readFloat();\n data.scaleY = input.readFloat();\n data.shearX = input.readFloat();\n data.shearY = input.readFloat();\n data.length = input.readFloat() * scale;\n data.transformMode = input.readInt(true);\n data.skinRequired = input.readBoolean();\n if (nonessential)\n Color.rgba8888ToColor(data.color, input.readInt32());\n skeletonData.bones.push(data);\n }\n // Slots.\n n = input.readInt(true);\n for (var i = 0; i < n; i++) {\n var slotName = input.readString();\n var boneData = skeletonData.bones[input.readInt(true)];\n var data = new SlotData(i, slotName, boneData);\n Color.rgba8888ToColor(data.color, input.readInt32());\n var darkColor = input.readInt32();\n if (darkColor != -1)\n Color.rgb888ToColor(data.darkColor = new Color(), darkColor);\n data.attachmentName = input.readStringRef();\n data.blendMode = input.readInt(true);\n skeletonData.slots.push(data);\n }\n // IK constraints.\n n = input.readInt(true);\n for (var i = 0, nn = void 0; i < n; i++) {\n var data = new IkConstraintData(input.readString());\n data.order = input.readInt(true);\n data.skinRequired = input.readBoolean();\n nn = input.readInt(true);\n for (var ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.bones[input.readInt(true)];\n data.mix = input.readFloat();\n data.softness = input.readFloat() * scale;\n data.bendDirection = input.readByte();\n data.compress = input.readBoolean();\n data.stretch = input.readBoolean();\n data.uniform = input.readBoolean();\n skeletonData.ikConstraints.push(data);\n }\n // Transform constraints.\n n = input.readInt(true);\n for (var i = 0, nn = void 0; i < n; i++) {\n var data = new TransformConstraintData(input.readString());\n data.order = input.readInt(true);\n data.skinRequired = input.readBoolean();\n nn = input.readInt(true);\n for (var ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.bones[input.readInt(true)];\n data.local = input.readBoolean();\n data.relative = input.readBoolean();\n data.offsetRotation = input.readFloat();\n data.offsetX = input.readFloat() * scale;\n data.offsetY = input.readFloat() * scale;\n data.offsetScaleX = input.readFloat();\n data.offsetScaleY = input.readFloat();\n data.offsetShearY = input.readFloat();\n data.mixRotate = input.readFloat();\n data.mixX = input.readFloat();\n data.mixY = input.readFloat();\n data.mixScaleX = input.readFloat();\n data.mixScaleY = input.readFloat();\n data.mixShearY = input.readFloat();\n skeletonData.transformConstraints.push(data);\n }\n // Path constraints.\n n = input.readInt(true);\n for (var i = 0, nn = void 0; i < n; i++) {\n var data = new PathConstraintData(input.readString());\n data.order = input.readInt(true);\n data.skinRequired = input.readBoolean();\n nn = input.readInt(true);\n for (var ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.slots[input.readInt(true)];\n data.positionMode = input.readInt(true);\n data.spacingMode = input.readInt(true);\n data.rotateMode = input.readInt(true);\n data.offsetRotation = input.readFloat();\n data.position = input.readFloat();\n if (data.positionMode == PositionMode.Fixed)\n data.position *= scale;\n data.spacing = input.readFloat();\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed)\n data.spacing *= scale;\n data.mixRotate = input.readFloat();\n data.mixX = input.readFloat();\n data.mixY = input.readFloat();\n skeletonData.pathConstraints.push(data);\n }\n // Default skin.\n var defaultSkin = this.readSkin(input, skeletonData, true, nonessential);\n if (defaultSkin) {\n skeletonData.defaultSkin = defaultSkin;\n skeletonData.skins.push(defaultSkin);\n }\n // Skins.\n {\n var i = skeletonData.skins.length;\n Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true));\n for (; i < n; i++)\n skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential);\n }\n // Linked meshes.\n n = this.linkedMeshes.length;\n for (var i = 0; i < n; i++) {\n var linkedMesh = this.linkedMeshes[i];\n var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);\n var parent_2 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);\n linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_2 : linkedMesh.mesh;\n linkedMesh.mesh.setParentMesh(parent_2);\n linkedMesh.mesh.updateUVs();\n }\n this.linkedMeshes.length = 0;\n // Events.\n n = input.readInt(true);\n for (var i = 0; i < n; i++) {\n var data = new EventData(input.readStringRef());\n data.intValue = input.readInt(false);\n data.floatValue = input.readFloat();\n data.stringValue = input.readString();\n data.audioPath = input.readString();\n if (data.audioPath) {\n data.volume = input.readFloat();\n data.balance = input.readFloat();\n }\n skeletonData.events.push(data);\n }\n // Animations.\n n = input.readInt(true);\n for (var i = 0; i < n; i++)\n skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData));\n return skeletonData;\n };\n SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) {\n var skin = null;\n var slotCount = 0;\n if (defaultSkin) {\n slotCount = input.readInt(true);\n if (slotCount == 0)\n return null;\n skin = new Skin(\"default\");\n }\n else {\n skin = new Skin(input.readStringRef());\n skin.bones.length = input.readInt(true);\n for (var i = 0, n = skin.bones.length; i < n; i++)\n skin.bones[i] = skeletonData.bones[input.readInt(true)];\n for (var i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]);\n for (var i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);\n for (var i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);\n slotCount = input.readInt(true);\n }\n for (var i = 0; i < slotCount; i++) {\n var slotIndex = input.readInt(true);\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var name_2 = input.readStringRef();\n var attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name_2, nonessential);\n if (attachment)\n skin.setAttachment(slotIndex, name_2, attachment);\n }\n }\n return skin;\n };\n SkeletonBinary.prototype.readAttachment = function (input, skeletonData, skin, slotIndex, attachmentName, nonessential) {\n var scale = this.scale;\n var name = input.readStringRef();\n if (!name)\n name = attachmentName;\n switch (input.readByte()) {\n case AttachmentType.Region: {\n var path = input.readStringRef();\n var rotation = input.readFloat();\n var x = input.readFloat();\n var y = input.readFloat();\n var scaleX = input.readFloat();\n var scaleY = input.readFloat();\n var width = input.readFloat();\n var height = input.readFloat();\n var color = input.readInt32();\n if (!path)\n path = name;\n var region = this.attachmentLoader.newRegionAttachment(skin, name, path);\n if (!region)\n return null;\n region.path = path;\n region.x = x * scale;\n region.y = y * scale;\n region.scaleX = scaleX;\n region.scaleY = scaleY;\n region.rotation = rotation;\n region.width = width * scale;\n region.height = height * scale;\n Color.rgba8888ToColor(region.color, color);\n region.updateOffset();\n return region;\n }\n case AttachmentType.BoundingBox: {\n var vertexCount = input.readInt(true);\n var vertices = this.readVertices(input, vertexCount);\n var color = nonessential ? input.readInt32() : 0;\n var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\n if (!box)\n return null;\n box.worldVerticesLength = vertexCount << 1;\n box.vertices = vertices.vertices;\n box.bones = vertices.bones;\n if (nonessential)\n Color.rgba8888ToColor(box.color, color);\n return box;\n }\n case AttachmentType.Mesh: {\n var path = input.readStringRef();\n var color = input.readInt32();\n var vertexCount = input.readInt(true);\n var uvs = this.readFloatArray(input, vertexCount << 1, 1);\n var triangles = this.readShortArray(input);\n var vertices = this.readVertices(input, vertexCount);\n var hullLength = input.readInt(true);\n var edges = null;\n var width = 0, height = 0;\n if (nonessential) {\n edges = this.readShortArray(input);\n width = input.readFloat();\n height = input.readFloat();\n }\n if (!path)\n path = name;\n var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n if (!mesh)\n return null;\n mesh.path = path;\n Color.rgba8888ToColor(mesh.color, color);\n mesh.bones = vertices.bones;\n mesh.vertices = vertices.vertices;\n mesh.worldVerticesLength = vertexCount << 1;\n mesh.triangles = triangles;\n mesh.regionUVs = uvs;\n mesh.updateUVs();\n mesh.hullLength = hullLength << 1;\n if (nonessential) {\n mesh.edges = edges;\n mesh.width = width * scale;\n mesh.height = height * scale;\n }\n return mesh;\n }\n case AttachmentType.LinkedMesh: {\n var path = input.readStringRef();\n var color = input.readInt32();\n var skinName = input.readStringRef();\n var parent_3 = input.readStringRef();\n var inheritDeform = input.readBoolean();\n var width = 0, height = 0;\n if (nonessential) {\n width = input.readFloat();\n height = input.readFloat();\n }\n if (!path)\n path = name;\n var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n if (!mesh)\n return null;\n mesh.path = path;\n Color.rgba8888ToColor(mesh.color, color);\n if (nonessential) {\n mesh.width = width * scale;\n mesh.height = height * scale;\n }\n this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent_3, inheritDeform));\n return mesh;\n }\n case AttachmentType.Path: {\n var closed_1 = input.readBoolean();\n var constantSpeed = input.readBoolean();\n var vertexCount = input.readInt(true);\n var vertices = this.readVertices(input, vertexCount);\n var lengths = Utils.newArray(vertexCount / 3, 0);\n for (var i = 0, n = lengths.length; i < n; i++)\n lengths[i] = input.readFloat() * scale;\n var color = nonessential ? input.readInt32() : 0;\n var path = this.attachmentLoader.newPathAttachment(skin, name);\n if (!path)\n return null;\n path.closed = closed_1;\n path.constantSpeed = constantSpeed;\n path.worldVerticesLength = vertexCount << 1;\n path.vertices = vertices.vertices;\n path.bones = vertices.bones;\n path.lengths = lengths;\n if (nonessential)\n Color.rgba8888ToColor(path.color, color);\n return path;\n }\n case AttachmentType.Point: {\n var rotation = input.readFloat();\n var x = input.readFloat();\n var y = input.readFloat();\n var color = nonessential ? input.readInt32() : 0;\n var point = this.attachmentLoader.newPointAttachment(skin, name);\n if (!point)\n return null;\n point.x = x * scale;\n point.y = y * scale;\n point.rotation = rotation;\n if (nonessential)\n Color.rgba8888ToColor(point.color, color);\n return point;\n }\n case AttachmentType.Clipping: {\n var endSlotIndex = input.readInt(true);\n var vertexCount = input.readInt(true);\n var vertices = this.readVertices(input, vertexCount);\n var color = nonessential ? input.readInt32() : 0;\n var clip = this.attachmentLoader.newClippingAttachment(skin, name);\n if (!clip)\n return null;\n clip.endSlot = skeletonData.slots[endSlotIndex];\n clip.worldVerticesLength = vertexCount << 1;\n clip.vertices = vertices.vertices;\n clip.bones = vertices.bones;\n if (nonessential)\n Color.rgba8888ToColor(clip.color, color);\n return clip;\n }\n }\n return null;\n };\n SkeletonBinary.prototype.readVertices = function (input, vertexCount) {\n var scale = this.scale;\n var verticesLength = vertexCount << 1;\n var vertices = new Vertices();\n if (!input.readBoolean()) {\n vertices.vertices = this.readFloatArray(input, verticesLength, scale);\n return vertices;\n }\n var weights = new Array();\n var bonesArray = new Array();\n for (var i = 0; i < vertexCount; i++) {\n var boneCount = input.readInt(true);\n bonesArray.push(boneCount);\n for (var ii = 0; ii < boneCount; ii++) {\n bonesArray.push(input.readInt(true));\n weights.push(input.readFloat() * scale);\n weights.push(input.readFloat() * scale);\n weights.push(input.readFloat());\n }\n }\n vertices.vertices = Utils.toFloatArray(weights);\n vertices.bones = bonesArray;\n return vertices;\n };\n SkeletonBinary.prototype.readFloatArray = function (input, n, scale) {\n var array = new Array(n);\n if (scale == 1) {\n for (var i = 0; i < n; i++)\n array[i] = input.readFloat();\n }\n else {\n for (var i = 0; i < n; i++)\n array[i] = input.readFloat() * scale;\n }\n return array;\n };\n SkeletonBinary.prototype.readShortArray = function (input) {\n var n = input.readInt(true);\n var array = new Array(n);\n for (var i = 0; i < n; i++)\n array[i] = input.readShort();\n return array;\n };\n SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) {\n input.readInt(true); // Number of timelines.\n var timelines = new Array();\n var scale = this.scale;\n var tempColor1 = new Color();\n var tempColor2 = new Color();\n // Slot timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var slotIndex = input.readInt(true);\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var timelineType = input.readByte();\n var frameCount = input.readInt(true);\n var frameLast = frameCount - 1;\n switch (timelineType) {\n case SLOT_ATTACHMENT: {\n var timeline = new AttachmentTimeline(frameCount, slotIndex);\n for (var frame = 0; frame < frameCount; frame++)\n timeline.setFrame(frame, input.readFloat(), input.readStringRef());\n timelines.push(timeline);\n break;\n }\n case SLOT_RGBA: {\n var bezierCount = input.readInt(true);\n var timeline = new RGBATimeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n var a = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, a);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n var a2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, a, a2, 1);\n }\n time = time2;\n r = r2;\n g = g2;\n b = b2;\n a = a2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGB: {\n var bezierCount = input.readInt(true);\n var timeline = new RGBTimeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1);\n }\n time = time2;\n r = r2;\n g = g2;\n b = b2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGBA2: {\n var bezierCount = input.readInt(true);\n var timeline = new RGBA2Timeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n var a = input.readUnsignedByte() / 255.0;\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, a, r2, g2, b2);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var nr = input.readUnsignedByte() / 255.0;\n var ng = input.readUnsignedByte() / 255.0;\n var nb = input.readUnsignedByte() / 255.0;\n var na = input.readUnsignedByte() / 255.0;\n var nr2 = input.readUnsignedByte() / 255.0;\n var ng2 = input.readUnsignedByte() / 255.0;\n var nb2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, a, na, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, r2, nr2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, g2, ng2, 1);\n setBezier(input, timeline, bezier++, frame, 6, time, time2, b2, nb2, 1);\n }\n time = time2;\n r = nr;\n g = ng;\n b = nb;\n a = na;\n r2 = nr2;\n g2 = ng2;\n b2 = nb2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGB2: {\n var bezierCount = input.readInt(true);\n var timeline = new RGB2Timeline(frameCount, bezierCount, slotIndex);\n var time = input.readFloat();\n var r = input.readUnsignedByte() / 255.0;\n var g = input.readUnsignedByte() / 255.0;\n var b = input.readUnsignedByte() / 255.0;\n var r2 = input.readUnsignedByte() / 255.0;\n var g2 = input.readUnsignedByte() / 255.0;\n var b2 = input.readUnsignedByte() / 255.0;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, r2, g2, b2);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var nr = input.readUnsignedByte() / 255.0;\n var ng = input.readUnsignedByte() / 255.0;\n var nb = input.readUnsignedByte() / 255.0;\n var nr2 = input.readUnsignedByte() / 255.0;\n var ng2 = input.readUnsignedByte() / 255.0;\n var nb2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, r2, nr2, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, g2, ng2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, b2, nb2, 1);\n }\n time = time2;\n r = nr;\n g = ng;\n b = nb;\n r2 = nr2;\n g2 = ng2;\n b2 = nb2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_ALPHA: {\n var timeline = new AlphaTimeline(frameCount, input.readInt(true), slotIndex);\n var time = input.readFloat(), a = input.readUnsignedByte() / 255;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, a);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n var a2 = input.readUnsignedByte() / 255;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, a, a2, 1);\n }\n time = time2;\n a = a2;\n }\n timelines.push(timeline);\n break;\n }\n }\n }\n }\n // Bone timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var boneIndex = input.readInt(true);\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true);\n switch (type) {\n case BONE_ROTATE:\n timelines.push(readTimeline1(input, new RotateTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_TRANSLATE:\n timelines.push(readTimeline2(input, new TranslateTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_TRANSLATEX:\n timelines.push(readTimeline1(input, new TranslateXTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_TRANSLATEY:\n timelines.push(readTimeline1(input, new TranslateYTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_SCALE:\n timelines.push(readTimeline2(input, new ScaleTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SCALEX:\n timelines.push(readTimeline1(input, new ScaleXTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SCALEY:\n timelines.push(readTimeline1(input, new ScaleYTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEAR:\n timelines.push(readTimeline2(input, new ShearTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEARX:\n timelines.push(readTimeline1(input, new ShearXTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEARY:\n timelines.push(readTimeline1(input, new ShearYTimeline(frameCount, bezierCount, boneIndex), 1));\n }\n }\n }\n // IK constraint timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1;\n var timeline = new IkConstraintTimeline(frameCount, input.readInt(true), index);\n var time = input.readFloat(), mix = input.readFloat(), softness = input.readFloat() * scale;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mix, softness, input.readByte(), input.readBoolean(), input.readBoolean());\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), mix2 = input.readFloat(), softness2 = input.readFloat() * scale;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale);\n }\n time = time2;\n mix = mix2;\n softness = softness2;\n }\n timelines.push(timeline);\n }\n // Transform constraint timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1;\n var timeline = new TransformConstraintTimeline(frameCount, input.readInt(true), index);\n var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(), mixScaleX = input.readFloat(), mixScaleY = input.readFloat(), mixShearY = input.readFloat();\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(), mixScaleX2 = input.readFloat(), mixScaleY2 = input.readFloat(), mixShearY2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, mixScaleX, mixScaleX2, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, mixScaleY, mixScaleY2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, mixShearY, mixShearY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n mixScaleX = mixScaleX2;\n mixScaleY = mixScaleY2;\n mixShearY = mixShearY2;\n }\n timelines.push(timeline);\n }\n // Path constraint timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var index = input.readInt(true);\n var data = skeletonData.pathConstraints[index];\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n switch (input.readByte()) {\n case PATH_POSITION:\n timelines\n .push(readTimeline1(input, new PathConstraintPositionTimeline(input.readInt(true), input.readInt(true), index), data.positionMode == PositionMode.Fixed ? scale : 1));\n break;\n case PATH_SPACING:\n timelines\n .push(readTimeline1(input, new PathConstraintSpacingTimeline(input.readInt(true), input.readInt(true), index), data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed ? scale : 1));\n break;\n case PATH_MIX:\n var timeline = new PathConstraintMixTimeline(input.readInt(true), input.readInt(true), index);\n var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat();\n for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n }\n timelines.push(timeline);\n }\n }\n }\n // Deform timelines.\n for (var i = 0, n = input.readInt(true); i < n; i++) {\n var skin = skeletonData.skins[input.readInt(true)];\n for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n var slotIndex = input.readInt(true);\n for (var iii = 0, nnn = input.readInt(true); iii < nnn; iii++) {\n var attachmentName = input.readStringRef();\n var attachment = skin.getAttachment(slotIndex, attachmentName);\n var weighted = attachment.bones;\n var vertices = attachment.vertices;\n var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;\n var frameCount = input.readInt(true);\n var frameLast = frameCount - 1;\n var bezierCount = input.readInt(true);\n var timeline = new DeformTimeline(frameCount, bezierCount, slotIndex, attachment);\n var time = input.readFloat();\n for (var frame = 0, bezier = 0;; frame++) {\n var deform = void 0;\n var end = input.readInt(true);\n if (end == 0)\n deform = weighted ? Utils.newFloatArray(deformLength) : vertices;\n else {\n deform = Utils.newFloatArray(deformLength);\n var start = input.readInt(true);\n end += start;\n if (scale == 1) {\n for (var v = start; v < end; v++)\n deform[v] = input.readFloat();\n }\n else {\n for (var v = start; v < end; v++)\n deform[v] = input.readFloat() * scale;\n }\n if (!weighted) {\n for (var v = 0, vn = deform.length; v < vn; v++)\n deform[v] += vertices[v];\n }\n }\n timeline.setFrame(frame, time, deform);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1);\n }\n time = time2;\n }\n timelines.push(timeline);\n }\n }\n }\n // Draw order timeline.\n var drawOrderCount = input.readInt(true);\n if (drawOrderCount > 0) {\n var timeline = new DrawOrderTimeline(drawOrderCount);\n var slotCount = skeletonData.slots.length;\n for (var i = 0; i < drawOrderCount; i++) {\n var time = input.readFloat();\n var offsetCount = input.readInt(true);\n var drawOrder = Utils.newArray(slotCount, 0);\n for (var ii = slotCount - 1; ii >= 0; ii--)\n drawOrder[ii] = -1;\n var unchanged = Utils.newArray(slotCount - offsetCount, 0);\n var originalIndex = 0, unchangedIndex = 0;\n for (var ii = 0; ii < offsetCount; ii++) {\n var slotIndex = input.readInt(true);\n // Collect unchanged items.\n while (originalIndex != slotIndex)\n unchanged[unchangedIndex++] = originalIndex++;\n // Set changed items.\n drawOrder[originalIndex + input.readInt(true)] = originalIndex++;\n }\n // Collect remaining unchanged items.\n while (originalIndex < slotCount)\n unchanged[unchangedIndex++] = originalIndex++;\n // Fill in unchanged items.\n for (var ii = slotCount - 1; ii >= 0; ii--)\n if (drawOrder[ii] == -1)\n drawOrder[ii] = unchanged[--unchangedIndex];\n timeline.setFrame(i, time, drawOrder);\n }\n timelines.push(timeline);\n }\n // Event timeline.\n var eventCount = input.readInt(true);\n if (eventCount > 0) {\n var timeline = new EventTimeline(eventCount);\n for (var i = 0; i < eventCount; i++) {\n var time = input.readFloat();\n var eventData = skeletonData.events[input.readInt(true)];\n var event_1 = new Event(time, eventData);\n event_1.intValue = input.readInt(false);\n event_1.floatValue = input.readFloat();\n event_1.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue;\n if (event_1.data.audioPath) {\n event_1.volume = input.readFloat();\n event_1.balance = input.readFloat();\n }\n timeline.setFrame(i, event_1);\n }\n timelines.push(timeline);\n }\n var duration = 0;\n for (var i = 0, n = timelines.length; i < n; i++)\n duration = Math.max(duration, timelines[i].getDuration());\n return new Animation(name, timelines, duration);\n };\n return SkeletonBinary;\n}());\nexport { SkeletonBinary };\nvar BinaryInput = /** @class */ (function () {\n function BinaryInput(data, strings, index, buffer) {\n if (strings === void 0) { strings = new Array(); }\n if (index === void 0) { index = 0; }\n if (buffer === void 0) { buffer = new DataView(data.buffer); }\n this.strings = strings;\n this.index = index;\n this.buffer = buffer;\n }\n BinaryInput.prototype.readByte = function () {\n return this.buffer.getInt8(this.index++);\n };\n BinaryInput.prototype.readUnsignedByte = function () {\n return this.buffer.getUint8(this.index++);\n };\n BinaryInput.prototype.readShort = function () {\n var value = this.buffer.getInt16(this.index);\n this.index += 2;\n return value;\n };\n BinaryInput.prototype.readInt32 = function () {\n var value = this.buffer.getInt32(this.index);\n this.index += 4;\n return value;\n };\n BinaryInput.prototype.readInt = function (optimizePositive) {\n var b = this.readByte();\n var result = b & 0x7F;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 7;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 14;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 21;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 28;\n }\n }\n }\n }\n return optimizePositive ? result : ((result >>> 1) ^ -(result & 1));\n };\n BinaryInput.prototype.readStringRef = function () {\n var index = this.readInt(true);\n return index == 0 ? null : this.strings[index - 1];\n };\n BinaryInput.prototype.readString = function () {\n var byteCount = this.readInt(true);\n switch (byteCount) {\n case 0:\n return null;\n case 1:\n return \"\";\n }\n byteCount--;\n var chars = \"\";\n var charCount = 0;\n for (var i = 0; i < byteCount;) {\n var b = this.readByte();\n switch (b >> 4) {\n case 12:\n case 13:\n chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F));\n i += 2;\n break;\n case 14:\n chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F));\n i += 3;\n break;\n default:\n chars += String.fromCharCode(b);\n i++;\n }\n }\n return chars;\n };\n BinaryInput.prototype.readFloat = function () {\n var value = this.buffer.getFloat32(this.index);\n this.index += 4;\n return value;\n };\n BinaryInput.prototype.readBoolean = function () {\n return this.readByte() != 0;\n };\n return BinaryInput;\n}());\nexport { BinaryInput };\nvar LinkedMesh = /** @class */ (function () {\n function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) {\n this.mesh = mesh;\n this.skin = skin;\n this.slotIndex = slotIndex;\n this.parent = parent;\n this.inheritDeform = inheritDeform;\n }\n return LinkedMesh;\n}());\nvar Vertices = /** @class */ (function () {\n function Vertices(bones, vertices) {\n if (bones === void 0) { bones = null; }\n if (vertices === void 0) { vertices = null; }\n this.bones = bones;\n this.vertices = vertices;\n }\n return Vertices;\n}());\nvar AttachmentType;\n(function (AttachmentType) {\n AttachmentType[AttachmentType[\"Region\"] = 0] = \"Region\";\n AttachmentType[AttachmentType[\"BoundingBox\"] = 1] = \"BoundingBox\";\n AttachmentType[AttachmentType[\"Mesh\"] = 2] = \"Mesh\";\n AttachmentType[AttachmentType[\"LinkedMesh\"] = 3] = \"LinkedMesh\";\n AttachmentType[AttachmentType[\"Path\"] = 4] = \"Path\";\n AttachmentType[AttachmentType[\"Point\"] = 5] = \"Point\";\n AttachmentType[AttachmentType[\"Clipping\"] = 6] = \"Clipping\";\n})(AttachmentType || (AttachmentType = {}));\nfunction readTimeline1(input, timeline, scale) {\n var time = input.readFloat(), value = input.readFloat() * scale;\n for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, value);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), value2 = input.readFloat() * scale;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, value, value2, scale);\n }\n time = time2;\n value = value2;\n }\n return timeline;\n}\nfunction readTimeline2(input, timeline, scale) {\n var time = input.readFloat(), value1 = input.readFloat() * scale, value2 = input.readFloat() * scale;\n for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, value1, value2);\n if (frame == frameLast)\n break;\n var time2 = input.readFloat(), nvalue1 = input.readFloat() * scale, nvalue2 = input.readFloat() * scale;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, value1, nvalue1, scale);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, value2, nvalue2, scale);\n }\n time = time2;\n value1 = nvalue1;\n value2 = nvalue2;\n }\n return timeline;\n}\nfunction setBezier(input, timeline, bezier, frame, value, time1, time2, value1, value2, scale) {\n timeline.setBezier(bezier, frame, value, time1, value1, input.readFloat(), input.readFloat() * scale, input.readFloat(), input.readFloat() * scale, time2, value2);\n}\nvar BONE_ROTATE = 0;\nvar BONE_TRANSLATE = 1;\nvar BONE_TRANSLATEX = 2;\nvar BONE_TRANSLATEY = 3;\nvar BONE_SCALE = 4;\nvar BONE_SCALEX = 5;\nvar BONE_SCALEY = 6;\nvar BONE_SHEAR = 7;\nvar BONE_SHEARX = 8;\nvar BONE_SHEARY = 9;\nvar SLOT_ATTACHMENT = 0;\nvar SLOT_RGBA = 1;\nvar SLOT_RGB = 2;\nvar SLOT_RGBA2 = 3;\nvar SLOT_RGB2 = 4;\nvar SLOT_ALPHA = 5;\nvar PATH_POSITION = 0;\nvar PATH_SPACING = 1;\nvar PATH_MIX = 2;\nvar CURVE_LINEAR = 0;\nvar CURVE_STEPPED = 1;\nvar CURVE_BEZIER = 2;\n//# sourceMappingURL=SkeletonBinary.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { BoundingBoxAttachment } from \"./attachments/BoundingBoxAttachment\";\nimport { Pool, Utils } from \"./Utils\";\n/** Collects each visible {@link BoundingBoxAttachment} and computes the world vertices for its polygon. The polygon vertices are\n * provided along with convenience methods for doing hit detection. */\nvar SkeletonBounds = /** @class */ (function () {\n function SkeletonBounds() {\n /** The left edge of the axis aligned bounding box. */\n this.minX = 0;\n /** The bottom edge of the axis aligned bounding box. */\n this.minY = 0;\n /** The right edge of the axis aligned bounding box. */\n this.maxX = 0;\n /** The top edge of the axis aligned bounding box. */\n this.maxY = 0;\n /** The visible bounding boxes. */\n this.boundingBoxes = new Array();\n /** The world vertices for the bounding box polygons. */\n this.polygons = new Array();\n this.polygonPool = new Pool(function () {\n return Utils.newFloatArray(16);\n });\n }\n /** Clears any previous polygons, finds all visible bounding box attachments, and computes the world vertices for each bounding\n * box's polygon.\n * @param updateAabb If true, the axis aligned bounding box containing all the polygons is computed. If false, the\n * SkeletonBounds AABB methods will always return true. */\n SkeletonBounds.prototype.update = function (skeleton, updateAabb) {\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n var boundingBoxes = this.boundingBoxes;\n var polygons = this.polygons;\n var polygonPool = this.polygonPool;\n var slots = skeleton.slots;\n var slotCount = slots.length;\n boundingBoxes.length = 0;\n polygonPool.freeAll(polygons);\n polygons.length = 0;\n for (var i = 0; i < slotCount; i++) {\n var slot = slots[i];\n if (!slot.bone.active)\n continue;\n var attachment = slot.getAttachment();\n if (attachment instanceof BoundingBoxAttachment) {\n var boundingBox = attachment;\n boundingBoxes.push(boundingBox);\n var 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 if (updateAabb) {\n this.aabbCompute();\n }\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 SkeletonBounds.prototype.aabbCompute = function () {\n var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;\n var polygons = this.polygons;\n for (var i = 0, n = polygons.length; i < n; i++) {\n var polygon = polygons[i];\n var vertices = polygon;\n for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) {\n var x = vertices[ii];\n var 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 /** Returns true if the axis aligned bounding box contains the point. */\n SkeletonBounds.prototype.aabbContainsPoint = function (x, y) {\n return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;\n };\n /** Returns true if the axis aligned bounding box intersects the line segment. */\n SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) {\n var minX = this.minX;\n var minY = this.minY;\n var maxX = this.maxX;\n var 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 var m = (y2 - y1) / (x2 - x1);\n var y = m * (minX - x1) + y1;\n if (y > minY && y < maxY)\n return true;\n y = m * (maxX - x1) + y1;\n if (y > minY && y < maxY)\n return true;\n var x = (minY - y1) / m + x1;\n if (x > minX && x < maxX)\n return true;\n x = (maxY - y1) / m + x1;\n if (x > minX && x < maxX)\n return true;\n return false;\n };\n /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */\n SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) {\n return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY;\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 SkeletonBounds.prototype.containsPoint = function (x, y) {\n var polygons = this.polygons;\n for (var i = 0, n = polygons.length; i < n; i++)\n if (this.containsPointPolygon(polygons[i], x, y))\n return this.boundingBoxes[i];\n return null;\n };\n /** Returns true if the polygon contains the point. */\n SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) {\n var vertices = polygon;\n var nn = polygon.length;\n var prevIndex = nn - 2;\n var inside = false;\n for (var ii = 0; ii < nn; ii += 2) {\n var vertexY = vertices[ii + 1];\n var prevY = vertices[prevIndex + 1];\n if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) {\n var vertexX = vertices[ii];\n if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x)\n inside = !inside;\n }\n prevIndex = ii;\n }\n return inside;\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()} returns\n * true. */\n SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) {\n var polygons = this.polygons;\n for (var i = 0, n = polygons.length; i < n; i++)\n if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2))\n return this.boundingBoxes[i];\n return null;\n };\n /** Returns true if the polygon contains any part of the line segment. */\n SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) {\n var vertices = polygon;\n var nn = polygon.length;\n var width12 = x1 - x2, height12 = y1 - y2;\n var det1 = x1 * y2 - y1 * x2;\n var x3 = vertices[nn - 2], y3 = vertices[nn - 1];\n for (var ii = 0; ii < nn; ii += 2) {\n var x4 = vertices[ii], y4 = vertices[ii + 1];\n var det2 = x3 * y4 - y3 * x4;\n var width34 = x3 - x4, height34 = y3 - y4;\n var det3 = width12 * height34 - height12 * width34;\n var 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 var y = (det1 * height34 - height12 * det2) / det3;\n if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1)))\n return true;\n }\n x3 = x4;\n y3 = y4;\n }\n return false;\n };\n /** Returns the polygon for the specified bounding box, or null. */\n SkeletonBounds.prototype.getPolygon = function (boundingBox) {\n if (!boundingBox)\n throw new Error(\"boundingBox cannot be null.\");\n var index = this.boundingBoxes.indexOf(boundingBox);\n return index == -1 ? null : this.polygons[index];\n };\n /** The width of the axis aligned bounding box. */\n SkeletonBounds.prototype.getWidth = function () {\n return this.maxX - this.minX;\n };\n /** The height of the axis aligned bounding box. */\n SkeletonBounds.prototype.getHeight = function () {\n return this.maxY - this.minY;\n };\n return SkeletonBounds;\n}());\nexport { SkeletonBounds };\n//# sourceMappingURL=SkeletonBounds.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Pool } from \"./Utils\";\nvar Triangulator = /** @class */ (function () {\n function Triangulator() {\n this.convexPolygons = new Array();\n this.convexPolygonsIndices = new Array();\n this.indicesArray = new Array();\n this.isConcaveArray = new Array();\n this.triangles = new Array();\n this.polygonPool = new Pool(function () {\n return new Array();\n });\n this.polygonIndicesPool = new Pool(function () {\n return new Array();\n });\n }\n Triangulator.prototype.triangulate = function (verticesArray) {\n var vertices = verticesArray;\n var vertexCount = verticesArray.length >> 1;\n var indices = this.indicesArray;\n indices.length = 0;\n for (var i = 0; i < vertexCount; i++)\n indices[i] = i;\n var isConcave = this.isConcaveArray;\n isConcave.length = 0;\n for (var i = 0, n = vertexCount; i < n; ++i)\n isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices);\n var triangles = this.triangles;\n triangles.length = 0;\n while (vertexCount > 3) {\n // Find ear tip.\n var previous = vertexCount - 1, i = 0, next = 1;\n while (true) {\n outer: if (!isConcave[i]) {\n var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1;\n var p1x = vertices[p1], p1y = vertices[p1 + 1];\n var p2x = vertices[p2], p2y = vertices[p2 + 1];\n var p3x = vertices[p3], p3y = vertices[p3 + 1];\n for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) {\n if (!isConcave[ii])\n continue;\n var v = indices[ii] << 1;\n var vx = vertices[v], vy = vertices[v + 1];\n if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) {\n if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) {\n if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy))\n break outer;\n }\n }\n }\n break;\n }\n if (next == 0) {\n do {\n if (!isConcave[i])\n break;\n i--;\n } while (i > 0);\n break;\n }\n previous = i;\n i = next;\n next = (next + 1) % vertexCount;\n }\n // Cut ear tip.\n triangles.push(indices[(vertexCount + i - 1) % vertexCount]);\n triangles.push(indices[i]);\n triangles.push(indices[(i + 1) % vertexCount]);\n indices.splice(i, 1);\n isConcave.splice(i, 1);\n vertexCount--;\n var previousIndex = (vertexCount + i - 1) % vertexCount;\n var nextIndex = i == vertexCount ? 0 : i;\n isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices);\n isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices);\n }\n if (vertexCount == 3) {\n triangles.push(indices[2]);\n triangles.push(indices[0]);\n triangles.push(indices[1]);\n }\n return triangles;\n };\n Triangulator.prototype.decompose = function (verticesArray, triangles) {\n var vertices = verticesArray;\n var convexPolygons = this.convexPolygons;\n this.polygonPool.freeAll(convexPolygons);\n convexPolygons.length = 0;\n var convexPolygonsIndices = this.convexPolygonsIndices;\n this.polygonIndicesPool.freeAll(convexPolygonsIndices);\n convexPolygonsIndices.length = 0;\n var polygonIndices = this.polygonIndicesPool.obtain();\n polygonIndices.length = 0;\n var polygon = this.polygonPool.obtain();\n polygon.length = 0;\n // Merge subsequent triangles if they form a triangle fan.\n var fanBaseIndex = -1, lastWinding = 0;\n for (var i = 0, n = triangles.length; i < n; i += 3) {\n var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1;\n var x1 = vertices[t1], y1 = vertices[t1 + 1];\n var x2 = vertices[t2], y2 = vertices[t2 + 1];\n var x3 = vertices[t3], y3 = vertices[t3 + 1];\n // If the base of the last triangle is the same as this triangle, check if they form a convex polygon (triangle fan).\n var merged = false;\n if (fanBaseIndex == t1) {\n var o = polygon.length - 4;\n var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3);\n var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]);\n if (winding1 == lastWinding && winding2 == lastWinding) {\n polygon.push(x3);\n polygon.push(y3);\n polygonIndices.push(t3);\n merged = true;\n }\n }\n // Otherwise make this triangle the new base.\n if (!merged) {\n if (polygon.length > 0) {\n convexPolygons.push(polygon);\n convexPolygonsIndices.push(polygonIndices);\n }\n else {\n this.polygonPool.free(polygon);\n this.polygonIndicesPool.free(polygonIndices);\n }\n polygon = this.polygonPool.obtain();\n polygon.length = 0;\n polygon.push(x1);\n polygon.push(y1);\n polygon.push(x2);\n polygon.push(y2);\n polygon.push(x3);\n polygon.push(y3);\n polygonIndices = this.polygonIndicesPool.obtain();\n polygonIndices.length = 0;\n polygonIndices.push(t1);\n polygonIndices.push(t2);\n polygonIndices.push(t3);\n lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3);\n fanBaseIndex = t1;\n }\n }\n if (polygon.length > 0) {\n convexPolygons.push(polygon);\n convexPolygonsIndices.push(polygonIndices);\n }\n // Go through the list of polygons and try to merge the remaining triangles with the found triangle fans.\n for (var i = 0, n = convexPolygons.length; i < n; i++) {\n polygonIndices = convexPolygonsIndices[i];\n if (polygonIndices.length == 0)\n continue;\n var firstIndex = polygonIndices[0];\n var lastIndex = polygonIndices[polygonIndices.length - 1];\n polygon = convexPolygons[i];\n var o = polygon.length - 4;\n var prevPrevX = polygon[o], prevPrevY = polygon[o + 1];\n var prevX = polygon[o + 2], prevY = polygon[o + 3];\n var firstX = polygon[0], firstY = polygon[1];\n var secondX = polygon[2], secondY = polygon[3];\n var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY);\n for (var ii = 0; ii < n; ii++) {\n if (ii == i)\n continue;\n var otherIndices = convexPolygonsIndices[ii];\n if (otherIndices.length != 3)\n continue;\n var otherFirstIndex = otherIndices[0];\n var otherSecondIndex = otherIndices[1];\n var otherLastIndex = otherIndices[2];\n var otherPoly = convexPolygons[ii];\n var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1];\n if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex)\n continue;\n var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3);\n var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY);\n if (winding1 == winding && winding2 == winding) {\n otherPoly.length = 0;\n otherIndices.length = 0;\n polygon.push(x3);\n polygon.push(y3);\n polygonIndices.push(otherLastIndex);\n prevPrevX = prevX;\n prevPrevY = prevY;\n prevX = x3;\n prevY = y3;\n ii = 0;\n }\n }\n }\n // Remove empty polygons that resulted from the merge step above.\n for (var i = convexPolygons.length - 1; i >= 0; i--) {\n polygon = convexPolygons[i];\n if (polygon.length == 0) {\n convexPolygons.splice(i, 1);\n this.polygonPool.free(polygon);\n polygonIndices = convexPolygonsIndices[i];\n convexPolygonsIndices.splice(i, 1);\n this.polygonIndicesPool.free(polygonIndices);\n }\n }\n return convexPolygons;\n };\n Triangulator.isConcave = function (index, vertexCount, vertices, indices) {\n var previous = indices[(vertexCount + index - 1) % vertexCount] << 1;\n var current = indices[index] << 1;\n var next = indices[(index + 1) % vertexCount] << 1;\n return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]);\n };\n Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) {\n return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0;\n };\n Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) {\n var px = p2x - p1x, py = p2y - p1y;\n return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1;\n };\n return Triangulator;\n}());\nexport { Triangulator };\n//# sourceMappingURL=Triangulator.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Triangulator } from \"./Triangulator\";\nimport { Utils } from \"./Utils\";\nvar SkeletonClipping = /** @class */ (function () {\n function SkeletonClipping() {\n this.triangulator = new Triangulator();\n this.clippingPolygon = new Array();\n this.clipOutput = new Array();\n this.clippedVertices = new Array();\n this.clippedTriangles = new Array();\n this.scratch = new Array();\n }\n SkeletonClipping.prototype.clipStart = function (slot, clip) {\n if (this.clipAttachment)\n return 0;\n this.clipAttachment = clip;\n var n = clip.worldVerticesLength;\n var vertices = Utils.setArraySize(this.clippingPolygon, n);\n clip.computeWorldVertices(slot, 0, n, vertices, 0, 2);\n var clippingPolygon = this.clippingPolygon;\n SkeletonClipping.makeClockwise(clippingPolygon);\n var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon));\n for (var i = 0, n_1 = clippingPolygons.length; i < n_1; i++) {\n var polygon = clippingPolygons[i];\n SkeletonClipping.makeClockwise(polygon);\n polygon.push(polygon[0]);\n polygon.push(polygon[1]);\n }\n return clippingPolygons.length;\n };\n SkeletonClipping.prototype.clipEndWithSlot = function (slot) {\n if (this.clipAttachment && this.clipAttachment.endSlot == slot.data)\n this.clipEnd();\n };\n SkeletonClipping.prototype.clipEnd = function () {\n if (!this.clipAttachment)\n return;\n this.clipAttachment = null;\n this.clippingPolygons = null;\n this.clippedVertices.length = 0;\n this.clippedTriangles.length = 0;\n this.clippingPolygon.length = 0;\n };\n SkeletonClipping.prototype.isClipping = function () {\n return this.clipAttachment != null;\n };\n SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) {\n var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices;\n var clippedTriangles = this.clippedTriangles;\n var polygons = this.clippingPolygons;\n var polygonsCount = this.clippingPolygons.length;\n var vertexSize = twoColor ? 12 : 8;\n var index = 0;\n clippedVertices.length = 0;\n clippedTriangles.length = 0;\n outer: for (var i = 0; i < trianglesLength; i += 3) {\n var vertexOffset = triangles[i] << 1;\n var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1];\n var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1];\n vertexOffset = triangles[i + 1] << 1;\n var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1];\n var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1];\n vertexOffset = triangles[i + 2] << 1;\n var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1];\n var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1];\n for (var p = 0; p < polygonsCount; p++) {\n var s = clippedVertices.length;\n if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) {\n var clipOutputLength = clipOutput.length;\n if (clipOutputLength == 0)\n continue;\n var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1;\n var d = 1 / (d0 * d2 + d1 * (y1 - y3));\n var clipOutputCount = clipOutputLength >> 1;\n var clipOutputItems = this.clipOutput;\n var clippedVerticesItems = Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize);\n for (var ii = 0; ii < clipOutputLength; ii += 2) {\n var x = clipOutputItems[ii], y = clipOutputItems[ii + 1];\n clippedVerticesItems[s] = x;\n clippedVerticesItems[s + 1] = y;\n clippedVerticesItems[s + 2] = light.r;\n clippedVerticesItems[s + 3] = light.g;\n clippedVerticesItems[s + 4] = light.b;\n clippedVerticesItems[s + 5] = light.a;\n var c0 = x - x3, c1 = y - y3;\n var a = (d0 * c0 + d1 * c1) * d;\n var b = (d4 * c0 + d2 * c1) * d;\n var c = 1 - a - b;\n clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c;\n clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c;\n if (twoColor) {\n clippedVerticesItems[s + 8] = dark.r;\n clippedVerticesItems[s + 9] = dark.g;\n clippedVerticesItems[s + 10] = dark.b;\n clippedVerticesItems[s + 11] = dark.a;\n }\n s += vertexSize;\n }\n s = clippedTriangles.length;\n var clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2));\n clipOutputCount--;\n for (var ii = 1; ii < clipOutputCount; ii++) {\n clippedTrianglesItems[s] = index;\n clippedTrianglesItems[s + 1] = (index + ii);\n clippedTrianglesItems[s + 2] = (index + ii + 1);\n s += 3;\n }\n index += clipOutputCount + 1;\n }\n else {\n var clippedVerticesItems = Utils.setArraySize(clippedVertices, s + 3 * vertexSize);\n clippedVerticesItems[s] = x1;\n clippedVerticesItems[s + 1] = y1;\n clippedVerticesItems[s + 2] = light.r;\n clippedVerticesItems[s + 3] = light.g;\n clippedVerticesItems[s + 4] = light.b;\n clippedVerticesItems[s + 5] = light.a;\n if (!twoColor) {\n clippedVerticesItems[s + 6] = u1;\n clippedVerticesItems[s + 7] = v1;\n clippedVerticesItems[s + 8] = x2;\n clippedVerticesItems[s + 9] = y2;\n clippedVerticesItems[s + 10] = light.r;\n clippedVerticesItems[s + 11] = light.g;\n clippedVerticesItems[s + 12] = light.b;\n clippedVerticesItems[s + 13] = light.a;\n clippedVerticesItems[s + 14] = u2;\n clippedVerticesItems[s + 15] = v2;\n clippedVerticesItems[s + 16] = x3;\n clippedVerticesItems[s + 17] = y3;\n clippedVerticesItems[s + 18] = light.r;\n clippedVerticesItems[s + 19] = light.g;\n clippedVerticesItems[s + 20] = light.b;\n clippedVerticesItems[s + 21] = light.a;\n clippedVerticesItems[s + 22] = u3;\n clippedVerticesItems[s + 23] = v3;\n }\n else {\n clippedVerticesItems[s + 6] = u1;\n clippedVerticesItems[s + 7] = v1;\n clippedVerticesItems[s + 8] = dark.r;\n clippedVerticesItems[s + 9] = dark.g;\n clippedVerticesItems[s + 10] = dark.b;\n clippedVerticesItems[s + 11] = dark.a;\n clippedVerticesItems[s + 12] = x2;\n clippedVerticesItems[s + 13] = y2;\n clippedVerticesItems[s + 14] = light.r;\n clippedVerticesItems[s + 15] = light.g;\n clippedVerticesItems[s + 16] = light.b;\n clippedVerticesItems[s + 17] = light.a;\n clippedVerticesItems[s + 18] = u2;\n clippedVerticesItems[s + 19] = v2;\n clippedVerticesItems[s + 20] = dark.r;\n clippedVerticesItems[s + 21] = dark.g;\n clippedVerticesItems[s + 22] = dark.b;\n clippedVerticesItems[s + 23] = dark.a;\n clippedVerticesItems[s + 24] = x3;\n clippedVerticesItems[s + 25] = y3;\n clippedVerticesItems[s + 26] = light.r;\n clippedVerticesItems[s + 27] = light.g;\n clippedVerticesItems[s + 28] = light.b;\n clippedVerticesItems[s + 29] = light.a;\n clippedVerticesItems[s + 30] = u3;\n clippedVerticesItems[s + 31] = v3;\n clippedVerticesItems[s + 32] = dark.r;\n clippedVerticesItems[s + 33] = dark.g;\n clippedVerticesItems[s + 34] = dark.b;\n clippedVerticesItems[s + 35] = dark.a;\n }\n s = clippedTriangles.length;\n var clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3);\n clippedTrianglesItems[s] = index;\n clippedTrianglesItems[s + 1] = (index + 1);\n clippedTrianglesItems[s + 2] = (index + 2);\n index += 3;\n continue outer;\n }\n }\n }\n };\n /** Clips the input triangle against the convex, clockwise clipping area. If the triangle lies entirely within the clipping\n * area, false is returned. The clipping area must duplicate the first vertex at the end of the vertices list. */\n SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) {\n var originalOutput = output;\n var clipped = false;\n // Avoid copy at the end.\n var input = null;\n if (clippingArea.length % 4 >= 2) {\n input = output;\n output = this.scratch;\n }\n else\n input = this.scratch;\n input.length = 0;\n input.push(x1);\n input.push(y1);\n input.push(x2);\n input.push(y2);\n input.push(x3);\n input.push(y3);\n input.push(x1);\n input.push(y1);\n output.length = 0;\n var clippingVertices = clippingArea;\n var clippingVerticesLast = clippingArea.length - 4;\n for (var i = 0;; i += 2) {\n var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1];\n var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3];\n var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2;\n var inputVertices = input;\n var inputVerticesLength = input.length - 2, outputStart = output.length;\n for (var ii = 0; ii < inputVerticesLength; ii += 2) {\n var inputX = inputVertices[ii], inputY = inputVertices[ii + 1];\n var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3];\n var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0;\n if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) {\n if (side2) { // v1 inside, v2 inside\n output.push(inputX2);\n output.push(inputY2);\n continue;\n }\n // v1 inside, v2 outside\n var c0 = inputY2 - inputY, c2 = inputX2 - inputX;\n var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY);\n if (Math.abs(s) > 0.000001) {\n var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s;\n output.push(edgeX + (edgeX2 - edgeX) * ua);\n output.push(edgeY + (edgeY2 - edgeY) * ua);\n }\n else {\n output.push(edgeX);\n output.push(edgeY);\n }\n }\n else if (side2) { // v1 outside, v2 inside\n var c0 = inputY2 - inputY, c2 = inputX2 - inputX;\n var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY);\n if (Math.abs(s) > 0.000001) {\n var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s;\n output.push(edgeX + (edgeX2 - edgeX) * ua);\n output.push(edgeY + (edgeY2 - edgeY) * ua);\n }\n else {\n output.push(edgeX);\n output.push(edgeY);\n }\n output.push(inputX2);\n output.push(inputY2);\n }\n clipped = true;\n }\n if (outputStart == output.length) { // All edges outside.\n originalOutput.length = 0;\n return true;\n }\n output.push(output[0]);\n output.push(output[1]);\n if (i == clippingVerticesLast)\n break;\n var temp = output;\n output = input;\n output.length = 0;\n input = temp;\n }\n if (originalOutput != output) {\n originalOutput.length = 0;\n for (var i = 0, n = output.length - 2; i < n; i++)\n originalOutput[i] = output[i];\n }\n else\n originalOutput.length = originalOutput.length - 2;\n return clipped;\n };\n SkeletonClipping.makeClockwise = function (polygon) {\n var vertices = polygon;\n var verticeslength = polygon.length;\n var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0;\n for (var i = 0, n = verticeslength - 3; i < n; i += 2) {\n p1x = vertices[i];\n p1y = vertices[i + 1];\n p2x = vertices[i + 2];\n p2y = vertices[i + 3];\n area += p1x * p2y - p2x * p1y;\n }\n if (area < 0)\n return;\n for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) {\n var x = vertices[i], y = vertices[i + 1];\n var other = lastX - i;\n vertices[i] = vertices[other];\n vertices[i + 1] = vertices[other + 1];\n vertices[other] = x;\n vertices[other + 1] = y;\n }\n };\n return SkeletonClipping;\n}());\nexport { SkeletonClipping };\n//# sourceMappingURL=SkeletonClipping.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Animation, AttachmentTimeline, RGBATimeline, RGBTimeline, AlphaTimeline, RGBA2Timeline, RGB2Timeline, RotateTimeline, TranslateTimeline, TranslateXTimeline, TranslateYTimeline, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, IkConstraintTimeline, TransformConstraintTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PathConstraintMixTimeline, DeformTimeline, DrawOrderTimeline, EventTimeline } from \"./Animation\";\nimport { BoneData, TransformMode } from \"./BoneData\";\nimport { EventData } from \"./EventData\";\nimport { Event } from \"./Event\";\nimport { IkConstraintData } from \"./IkConstraintData\";\nimport { PathConstraintData, PositionMode, SpacingMode, RotateMode } from \"./PathConstraintData\";\nimport { SkeletonData } from \"./SkeletonData\";\nimport { Skin } from \"./Skin\";\nimport { SlotData, BlendMode } from \"./SlotData\";\nimport { TransformConstraintData } from \"./TransformConstraintData\";\nimport { Utils, Color } from \"./Utils\";\n/** Loads skeleton data in the Spine JSON format.\n *\n * See [Spine JSON format](http://esotericsoftware.com/spine-json-format) and\n * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine\n * Runtimes Guide. */\nvar SkeletonJson = /** @class */ (function () {\n function SkeletonJson(attachmentLoader) {\n /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at\n * runtime than were used in Spine.\n *\n * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */\n this.scale = 1;\n this.linkedMeshes = new Array();\n this.attachmentLoader = attachmentLoader;\n }\n SkeletonJson.prototype.readSkeletonData = function (json) {\n var scale = this.scale;\n var skeletonData = new SkeletonData();\n var root = typeof (json) === \"string\" ? JSON.parse(json) : json;\n // Skeleton\n var skeletonMap = root.skeleton;\n if (skeletonMap) {\n skeletonData.hash = skeletonMap.hash;\n skeletonData.version = skeletonMap.spine;\n skeletonData.x = skeletonMap.x;\n skeletonData.y = skeletonMap.y;\n skeletonData.width = skeletonMap.width;\n skeletonData.height = skeletonMap.height;\n skeletonData.fps = skeletonMap.fps;\n skeletonData.imagesPath = skeletonMap.images;\n }\n // Bones\n if (root.bones) {\n for (var i = 0; i < root.bones.length; i++) {\n var boneMap = root.bones[i];\n var parent_1 = null;\n var parentName = getValue(boneMap, \"parent\", null);\n if (parentName)\n parent_1 = skeletonData.findBone(parentName);\n var data = new BoneData(skeletonData.bones.length, boneMap.name, parent_1);\n data.length = getValue(boneMap, \"length\", 0) * scale;\n data.x = getValue(boneMap, \"x\", 0) * scale;\n data.y = getValue(boneMap, \"y\", 0) * scale;\n data.rotation = getValue(boneMap, \"rotation\", 0);\n data.scaleX = getValue(boneMap, \"scaleX\", 1);\n data.scaleY = getValue(boneMap, \"scaleY\", 1);\n data.shearX = getValue(boneMap, \"shearX\", 0);\n data.shearY = getValue(boneMap, \"shearY\", 0);\n data.transformMode = Utils.enumValue(TransformMode, getValue(boneMap, \"transform\", \"Normal\"));\n data.skinRequired = getValue(boneMap, \"skin\", false);\n var color = getValue(boneMap, \"color\", null);\n if (color)\n data.color.setFromString(color);\n skeletonData.bones.push(data);\n }\n }\n // Slots.\n if (root.slots) {\n for (var i = 0; i < root.slots.length; i++) {\n var slotMap = root.slots[i];\n var boneData = skeletonData.findBone(slotMap.bone);\n var data = new SlotData(skeletonData.slots.length, slotMap.name, boneData);\n var color = getValue(slotMap, \"color\", null);\n if (color)\n data.color.setFromString(color);\n var dark = getValue(slotMap, \"dark\", null);\n if (dark)\n data.darkColor = Color.fromString(dark);\n data.attachmentName = getValue(slotMap, \"attachment\", null);\n data.blendMode = Utils.enumValue(BlendMode, getValue(slotMap, \"blend\", \"normal\"));\n skeletonData.slots.push(data);\n }\n }\n // IK constraints\n if (root.ik) {\n for (var i = 0; i < root.ik.length; i++) {\n var constraintMap = root.ik[i];\n var data = new IkConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (var ii = 0; ii < constraintMap.bones.length; ii++)\n data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));\n data.target = skeletonData.findBone(constraintMap.target);\n data.mix = getValue(constraintMap, \"mix\", 1);\n data.softness = getValue(constraintMap, \"softness\", 0) * scale;\n data.bendDirection = getValue(constraintMap, \"bendPositive\", true) ? 1 : -1;\n data.compress = getValue(constraintMap, \"compress\", false);\n data.stretch = getValue(constraintMap, \"stretch\", false);\n data.uniform = getValue(constraintMap, \"uniform\", false);\n skeletonData.ikConstraints.push(data);\n }\n }\n // Transform constraints.\n if (root.transform) {\n for (var i = 0; i < root.transform.length; i++) {\n var constraintMap = root.transform[i];\n var data = new TransformConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (var ii = 0; ii < constraintMap.bones.length; ii++)\n data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));\n var targetName = constraintMap.target;\n data.target = skeletonData.findBone(targetName);\n data.local = getValue(constraintMap, \"local\", false);\n data.relative = getValue(constraintMap, \"relative\", false);\n data.offsetRotation = getValue(constraintMap, \"rotation\", 0);\n data.offsetX = getValue(constraintMap, \"x\", 0) * scale;\n data.offsetY = getValue(constraintMap, \"y\", 0) * scale;\n data.offsetScaleX = getValue(constraintMap, \"scaleX\", 0);\n data.offsetScaleY = getValue(constraintMap, \"scaleY\", 0);\n data.offsetShearY = getValue(constraintMap, \"shearY\", 0);\n data.mixRotate = getValue(constraintMap, \"mixRotate\", 1);\n data.mixX = getValue(constraintMap, \"mixX\", 1);\n data.mixY = getValue(constraintMap, \"mixY\", data.mixX);\n data.mixScaleX = getValue(constraintMap, \"mixScaleX\", 1);\n data.mixScaleY = getValue(constraintMap, \"mixScaleY\", data.mixScaleX);\n data.mixShearY = getValue(constraintMap, \"mixShearY\", 1);\n skeletonData.transformConstraints.push(data);\n }\n }\n // Path constraints.\n if (root.path) {\n for (var i = 0; i < root.path.length; i++) {\n var constraintMap = root.path[i];\n var data = new PathConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (var ii = 0; ii < constraintMap.bones.length; ii++)\n data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));\n var targetName = constraintMap.target;\n data.target = skeletonData.findSlot(targetName);\n data.positionMode = Utils.enumValue(PositionMode, getValue(constraintMap, \"positionMode\", \"Percent\"));\n data.spacingMode = Utils.enumValue(SpacingMode, getValue(constraintMap, \"spacingMode\", \"Length\"));\n data.rotateMode = Utils.enumValue(RotateMode, getValue(constraintMap, \"rotateMode\", \"Tangent\"));\n data.offsetRotation = getValue(constraintMap, \"rotation\", 0);\n data.position = getValue(constraintMap, \"position\", 0);\n if (data.positionMode == PositionMode.Fixed)\n data.position *= scale;\n data.spacing = getValue(constraintMap, \"spacing\", 0);\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed)\n data.spacing *= scale;\n data.mixRotate = getValue(constraintMap, \"mixRotate\", 1);\n data.mixX = getValue(constraintMap, \"mixX\", 1);\n data.mixY = getValue(constraintMap, \"mixY\", data.mixX);\n skeletonData.pathConstraints.push(data);\n }\n }\n // Skins.\n if (root.skins) {\n for (var i = 0; i < root.skins.length; i++) {\n var skinMap = root.skins[i];\n var skin = new Skin(skinMap.name);\n if (skinMap.bones) {\n for (var ii = 0; ii < skinMap.bones.length; ii++)\n skin.bones.push(skeletonData.findBone(skinMap.bones[ii]));\n }\n if (skinMap.ik) {\n for (var ii = 0; ii < skinMap.ik.length; ii++)\n skin.constraints.push(skeletonData.findIkConstraint(skinMap.ik[ii]));\n }\n if (skinMap.transform) {\n for (var ii = 0; ii < skinMap.transform.length; ii++)\n skin.constraints.push(skeletonData.findTransformConstraint(skinMap.transform[ii]));\n }\n if (skinMap.path) {\n for (var ii = 0; ii < skinMap.path.length; ii++)\n skin.constraints.push(skeletonData.findPathConstraint(skinMap.path[ii]));\n }\n for (var slotName in skinMap.attachments) {\n var slot = skeletonData.findSlot(slotName);\n var slotMap = skinMap.attachments[slotName];\n for (var entryName in slotMap) {\n var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData);\n if (attachment)\n skin.setAttachment(slot.index, entryName, attachment);\n }\n }\n skeletonData.skins.push(skin);\n if (skin.name == \"default\")\n skeletonData.defaultSkin = skin;\n }\n }\n // Linked meshes.\n for (var i = 0, n = this.linkedMeshes.length; i < n; i++) {\n var linkedMesh = this.linkedMeshes[i];\n var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);\n var parent_2 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);\n linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_2 : linkedMesh.mesh;\n linkedMesh.mesh.setParentMesh(parent_2);\n linkedMesh.mesh.updateUVs();\n }\n this.linkedMeshes.length = 0;\n // Events.\n if (root.events) {\n for (var eventName in root.events) {\n var eventMap = root.events[eventName];\n var data = new EventData(eventName);\n data.intValue = getValue(eventMap, \"int\", 0);\n data.floatValue = getValue(eventMap, \"float\", 0);\n data.stringValue = getValue(eventMap, \"string\", \"\");\n data.audioPath = getValue(eventMap, \"audio\", null);\n if (data.audioPath) {\n data.volume = getValue(eventMap, \"volume\", 1);\n data.balance = getValue(eventMap, \"balance\", 0);\n }\n skeletonData.events.push(data);\n }\n }\n // Animations.\n if (root.animations) {\n for (var animationName in root.animations) {\n var animationMap = root.animations[animationName];\n this.readAnimation(animationMap, animationName, skeletonData);\n }\n }\n return skeletonData;\n };\n SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) {\n var scale = this.scale;\n name = getValue(map, \"name\", name);\n switch (getValue(map, \"type\", \"region\")) {\n case \"region\": {\n var path = getValue(map, \"path\", name);\n var region = this.attachmentLoader.newRegionAttachment(skin, name, path);\n if (!region)\n return null;\n region.path = path;\n region.x = getValue(map, \"x\", 0) * scale;\n region.y = getValue(map, \"y\", 0) * scale;\n region.scaleX = getValue(map, \"scaleX\", 1);\n region.scaleY = getValue(map, \"scaleY\", 1);\n region.rotation = getValue(map, \"rotation\", 0);\n region.width = map.width * scale;\n region.height = map.height * scale;\n var color = getValue(map, \"color\", null);\n if (color)\n region.color.setFromString(color);\n region.updateOffset();\n return region;\n }\n case \"boundingbox\": {\n var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\n if (!box)\n return null;\n this.readVertices(map, box, map.vertexCount << 1);\n var color = getValue(map, \"color\", null);\n if (color)\n box.color.setFromString(color);\n return box;\n }\n case \"mesh\":\n case \"linkedmesh\": {\n var path = getValue(map, \"path\", name);\n var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n if (!mesh)\n return null;\n mesh.path = path;\n var color = getValue(map, \"color\", null);\n if (color)\n mesh.color.setFromString(color);\n mesh.width = getValue(map, \"width\", 0) * scale;\n mesh.height = getValue(map, \"height\", 0) * scale;\n var parent_3 = getValue(map, \"parent\", null);\n if (parent_3) {\n this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, \"skin\", null), slotIndex, parent_3, getValue(map, \"deform\", true)));\n return mesh;\n }\n var uvs = map.uvs;\n this.readVertices(map, mesh, uvs.length);\n mesh.triangles = map.triangles;\n mesh.regionUVs = uvs;\n mesh.updateUVs();\n mesh.edges = getValue(map, \"edges\", null);\n mesh.hullLength = getValue(map, \"hull\", 0) * 2;\n return mesh;\n }\n case \"path\": {\n var path = this.attachmentLoader.newPathAttachment(skin, name);\n if (!path)\n return null;\n path.closed = getValue(map, \"closed\", false);\n path.constantSpeed = getValue(map, \"constantSpeed\", true);\n var vertexCount = map.vertexCount;\n this.readVertices(map, path, vertexCount << 1);\n var lengths = Utils.newArray(vertexCount / 3, 0);\n for (var i = 0; i < map.lengths.length; i++)\n lengths[i] = map.lengths[i] * scale;\n path.lengths = lengths;\n var color = getValue(map, \"color\", null);\n if (color)\n path.color.setFromString(color);\n return path;\n }\n case \"point\": {\n var point = this.attachmentLoader.newPointAttachment(skin, name);\n if (!point)\n return null;\n point.x = getValue(map, \"x\", 0) * scale;\n point.y = getValue(map, \"y\", 0) * scale;\n point.rotation = getValue(map, \"rotation\", 0);\n var color = getValue(map, \"color\", null);\n if (color)\n point.color.setFromString(color);\n return point;\n }\n case \"clipping\": {\n var clip = this.attachmentLoader.newClippingAttachment(skin, name);\n if (!clip)\n return null;\n var end = getValue(map, \"end\", null);\n if (end)\n clip.endSlot = skeletonData.findSlot(end);\n var vertexCount = map.vertexCount;\n this.readVertices(map, clip, vertexCount << 1);\n var color = getValue(map, \"color\", null);\n if (color)\n clip.color.setFromString(color);\n return clip;\n }\n }\n return null;\n };\n SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) {\n var scale = this.scale;\n attachment.worldVerticesLength = verticesLength;\n var vertices = map.vertices;\n if (verticesLength == vertices.length) {\n var scaledVertices = Utils.toFloatArray(vertices);\n if (scale != 1) {\n for (var i = 0, n = vertices.length; i < n; i++)\n scaledVertices[i] *= scale;\n }\n attachment.vertices = scaledVertices;\n return;\n }\n var weights = new Array();\n var bones = new Array();\n for (var i = 0, n = vertices.length; i < n;) {\n var boneCount = vertices[i++];\n bones.push(boneCount);\n for (var 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 SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) {\n var scale = this.scale;\n var timelines = new Array();\n // Slot timelines.\n if (map.slots) {\n for (var slotName in map.slots) {\n var slotMap = map.slots[slotName];\n var slotIndex = skeletonData.findSlotIndex(slotName);\n for (var timelineName in slotMap) {\n var timelineMap = slotMap[timelineName];\n if (!timelineMap)\n continue;\n if (timelineName == \"attachment\") {\n var timeline = new AttachmentTimeline(timelineMap.length, slotIndex);\n for (var frame = 0; frame < timelineMap.length; frame++) {\n var keyMap = timelineMap[frame];\n timeline.setFrame(frame, getValue(keyMap, \"time\", 0), keyMap.name);\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgba\") {\n var timeline = new RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.color);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color.a);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.color);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1);\n }\n time = time2;\n color = newColor;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgb\") {\n var timeline = new RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.color);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.color);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n }\n time = time2;\n color = newColor;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"alpha\") {\n timelines.push(readTimeline1(timelineMap, new AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1));\n }\n else if (timelineName == \"rgba2\") {\n var timeline = new RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.light);\n var color2 = Color.fromString(keyMap.dark);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color.a, color2.r, color2.g, color2.b);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.light);\n var newColor2 = Color.fromString(nextMap.dark);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.r, newColor2.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.g, newColor2.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 6, time, time2, color2.b, newColor2.b, 1);\n }\n time = time2;\n color = newColor;\n color2 = newColor2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgb2\") {\n var timeline = new RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex);\n var keyMap = timelineMap[0];\n var time = getValue(keyMap, \"time\", 0);\n var color = Color.fromString(keyMap.light);\n var color2 = Color.fromString(keyMap.dark);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var newColor = Color.fromString(nextMap.light);\n var newColor2 = Color.fromString(nextMap.dark);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1);\n }\n time = time2;\n color = newColor;\n color2 = newColor2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n // Bone timelines.\n if (map.bones) {\n for (var boneName in map.bones) {\n var boneMap = map.bones[boneName];\n var boneIndex = skeletonData.findBoneIndex(boneName);\n for (var timelineName in boneMap) {\n var timelineMap = boneMap[timelineName];\n if (timelineMap.length == 0)\n continue;\n if (timelineName === \"rotate\") {\n timelines.push(readTimeline1(timelineMap, new RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1));\n }\n else if (timelineName === \"translate\") {\n var timeline = new TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 0, scale));\n }\n else if (timelineName === \"translatex\") {\n var timeline = new TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, scale));\n }\n else if (timelineName === \"translatey\") {\n var timeline = new TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, scale));\n }\n else if (timelineName === \"scale\") {\n var timeline = new ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 1, 1));\n }\n else if (timelineName === \"scalex\") {\n var timeline = new ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 1, 1));\n }\n else if (timelineName === \"scaley\") {\n var timeline = new ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 1, 1));\n }\n else if (timelineName === \"shear\") {\n var timeline = new ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 0, 1));\n }\n else if (timelineName === \"shearx\") {\n var timeline = new ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, 1));\n }\n else if (timelineName === \"sheary\") {\n var timeline = new ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, 1));\n }\n }\n }\n }\n // IK constraint timelines.\n if (map.ik) {\n for (var constraintName in map.ik) {\n var constraintMap = map.ik[constraintName];\n var keyMap = constraintMap[0];\n if (!keyMap)\n continue;\n var constraint = skeletonData.findIkConstraint(constraintName);\n var constraintIndex = skeletonData.ikConstraints.indexOf(constraint);\n var timeline = new IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex);\n var time = getValue(keyMap, \"time\", 0);\n var mix = getValue(keyMap, \"mix\", 1);\n var softness = getValue(keyMap, \"softness\", 0) * scale;\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mix, softness, getValue(keyMap, \"bendPositive\", true) ? 1 : -1, getValue(keyMap, \"compress\", false), getValue(keyMap, \"stretch\", false));\n var nextMap = constraintMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var mix2 = getValue(nextMap, \"mix\", 1);\n var softness2 = getValue(nextMap, \"softness\", 0) * scale;\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale);\n }\n time = time2;\n mix = mix2;\n softness = softness2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n // Transform constraint timelines.\n if (map.transform) {\n for (var constraintName in map.transform) {\n var timelineMap = map.transform[constraintName];\n var keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n var constraint = skeletonData.findTransformConstraint(constraintName);\n var constraintIndex = skeletonData.transformConstraints.indexOf(constraint);\n var timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex);\n var time = getValue(keyMap, \"time\", 0);\n var mixRotate = getValue(keyMap, \"mixRotate\", 1);\n var mixX = getValue(keyMap, \"mixX\", 1);\n var mixY = getValue(keyMap, \"mixY\", mixX);\n var mixScaleX = getValue(keyMap, \"mixScaleX\", 1);\n var mixScaleY = getValue(keyMap, \"mixScaleY\", mixScaleX);\n var mixShearY = getValue(keyMap, \"mixShearY\", 1);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var mixRotate2 = getValue(nextMap, \"mixRotate\", 1);\n var mixX2 = getValue(nextMap, \"mixX\", 1);\n var mixY2 = getValue(nextMap, \"mixY\", mixX2);\n var mixScaleX2 = getValue(nextMap, \"mixScaleX\", 1);\n var mixScaleY2 = getValue(nextMap, \"mixScaleY\", mixScaleX2);\n var mixShearY2 = getValue(nextMap, \"mixShearY\", 1);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n mixScaleX = mixScaleX2;\n mixScaleY = mixScaleY2;\n mixScaleX = mixScaleX2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n // Path constraint timelines.\n if (map.path) {\n for (var constraintName in map.path) {\n var constraintMap = map.path[constraintName];\n var constraint = skeletonData.findPathConstraint(constraintName);\n var constraintIndex = skeletonData.pathConstraints.indexOf(constraint);\n for (var timelineName in constraintMap) {\n var timelineMap = constraintMap[timelineName];\n var keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n if (timelineName === \"position\") {\n var timeline = new PathConstraintPositionTimeline(timelineMap.length, timelineMap.length, constraintIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.positionMode == PositionMode.Fixed ? scale : 1));\n }\n else if (timelineName === \"spacing\") {\n var timeline = new PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, constraintIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.spacingMode == SpacingMode.Length || constraint.spacingMode == SpacingMode.Fixed ? scale : 1));\n }\n else if (timelineName === \"mix\") {\n var timeline = new PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, constraintIndex);\n var time = getValue(keyMap, \"time\", 0);\n var mixRotate = getValue(keyMap, \"mixRotate\", 1);\n var mixX = getValue(keyMap, \"mixX\", 1);\n var mixY = getValue(keyMap, \"mixY\", mixX);\n for (var frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var mixRotate2 = getValue(nextMap, \"mixRotate\", 1);\n var mixX2 = getValue(nextMap, \"mixX\", 1);\n var mixY2 = getValue(nextMap, \"mixY\", mixX2);\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n // Deform timelines.\n if (map.deform) {\n for (var deformName in map.deform) {\n var deformMap = map.deform[deformName];\n var skin = skeletonData.findSkin(deformName);\n for (var slotName in deformMap) {\n var slotMap = deformMap[slotName];\n var slotIndex = skeletonData.findSlotIndex(slotName);\n for (var timelineName in slotMap) {\n var timelineMap = slotMap[timelineName];\n var keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n var attachment = skin.getAttachment(slotIndex, timelineName);\n var weighted = attachment.bones;\n var vertices = attachment.vertices;\n var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;\n var timeline = new DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment);\n var time = getValue(keyMap, \"time\", 0);\n for (var frame = 0, bezier = 0;; frame++) {\n var deform = void 0;\n var verticesValue = getValue(keyMap, \"vertices\", null);\n if (!verticesValue)\n deform = weighted ? Utils.newFloatArray(deformLength) : vertices;\n else {\n deform = Utils.newFloatArray(deformLength);\n var start = getValue(keyMap, \"offset\", 0);\n Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length);\n if (scale != 1) {\n for (var i = start, n = i + verticesValue.length; i < n; i++)\n deform[i] *= scale;\n }\n if (!weighted) {\n for (var i = 0; i < deformLength; i++)\n deform[i] += vertices[i];\n }\n }\n timeline.setFrame(frame, time, deform);\n var nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var curve = keyMap.curve;\n if (curve)\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1);\n time = time2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n // Draw order timelines.\n if (map.drawOrder) {\n var timeline = new DrawOrderTimeline(map.drawOrder.length);\n var slotCount = skeletonData.slots.length;\n var frame = 0;\n for (var i = 0; i < map.drawOrder.length; i++, frame++) {\n var drawOrderMap = map.drawOrder[i];\n var drawOrder = null;\n var offsets = getValue(drawOrderMap, \"offsets\", null);\n if (offsets) {\n drawOrder = Utils.newArray(slotCount, -1);\n var unchanged = Utils.newArray(slotCount - offsets.length, 0);\n var originalIndex = 0, unchangedIndex = 0;\n for (var ii = 0; ii < offsets.length; ii++) {\n var offsetMap = offsets[ii];\n var slotIndex = skeletonData.findSlotIndex(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 (var ii = slotCount - 1; ii >= 0; ii--)\n if (drawOrder[ii] == -1)\n drawOrder[ii] = unchanged[--unchangedIndex];\n }\n timeline.setFrame(frame, getValue(drawOrderMap, \"time\", 0), drawOrder);\n }\n timelines.push(timeline);\n }\n // Event timelines.\n if (map.events) {\n var timeline = new EventTimeline(map.events.length);\n var frame = 0;\n for (var i = 0; i < map.events.length; i++, frame++) {\n var eventMap = map.events[i];\n var eventData = skeletonData.findEvent(eventMap.name);\n var event_1 = new Event(Utils.toSinglePrecision(getValue(eventMap, \"time\", 0)), eventData);\n event_1.intValue = getValue(eventMap, \"int\", eventData.intValue);\n event_1.floatValue = getValue(eventMap, \"float\", eventData.floatValue);\n event_1.stringValue = getValue(eventMap, \"string\", eventData.stringValue);\n if (event_1.data.audioPath) {\n event_1.volume = getValue(eventMap, \"volume\", 1);\n event_1.balance = getValue(eventMap, \"balance\", 0);\n }\n timeline.setFrame(frame, event_1);\n }\n timelines.push(timeline);\n }\n var duration = 0;\n for (var i = 0, n = timelines.length; i < n; i++)\n duration = Math.max(duration, timelines[i].getDuration());\n skeletonData.animations.push(new Animation(name, timelines, duration));\n };\n return SkeletonJson;\n}());\nexport { SkeletonJson };\nvar LinkedMesh = /** @class */ (function () {\n function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) {\n this.mesh = mesh;\n this.skin = skin;\n this.slotIndex = slotIndex;\n this.parent = parent;\n this.inheritDeform = inheritDeform;\n }\n return LinkedMesh;\n}());\nfunction readTimeline1(keys, timeline, defaultValue, scale) {\n var keyMap = keys[0];\n var time = getValue(keyMap, \"time\", 0);\n var value = getValue(keyMap, \"value\", defaultValue) * scale;\n var bezier = 0;\n for (var frame = 0;; frame++) {\n timeline.setFrame(frame, time, value);\n var nextMap = keys[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n return timeline;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var value2 = getValue(nextMap, \"value\", defaultValue) * scale;\n if (keyMap.curve)\n bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale);\n time = time2;\n value = value2;\n keyMap = nextMap;\n }\n}\nfunction readTimeline2(keys, timeline, name1, name2, defaultValue, scale) {\n var keyMap = keys[0];\n var time = getValue(keyMap, \"time\", 0);\n var value1 = getValue(keyMap, name1, defaultValue) * scale;\n var value2 = getValue(keyMap, name2, defaultValue) * scale;\n var bezier = 0;\n for (var frame = 0;; frame++) {\n timeline.setFrame(frame, time, value1, value2);\n var nextMap = keys[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n return timeline;\n }\n var time2 = getValue(nextMap, \"time\", 0);\n var nvalue1 = getValue(nextMap, name1, defaultValue) * scale;\n var nvalue2 = getValue(nextMap, name2, defaultValue) * scale;\n var curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale);\n }\n time = time2;\n value1 = nvalue1;\n value2 = nvalue2;\n keyMap = nextMap;\n }\n}\nfunction readCurve(curve, timeline, bezier, frame, value, time1, time2, value1, value2, scale) {\n if (curve == \"stepped\") {\n timeline.setStepped(frame);\n return bezier;\n }\n var i = value << 2;\n var cx1 = curve[i];\n var cy1 = curve[i + 1] * scale;\n var cx2 = curve[i + 2];\n var cy2 = curve[i + 3] * scale;\n timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2);\n return bezier + 1;\n}\nfunction getValue(map, property, defaultValue) {\n return map[property] !== undefined ? map[property] : defaultValue;\n}\n//# sourceMappingURL=SkeletonJson.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\n(function () {\n if (typeof Math.fround === \"undefined\") {\n Math.fround = (function (array) {\n return function (x) {\n return array[0] = x, array[0];\n };\n })(new Float32Array(1));\n }\n})();\nexport {};\n//# sourceMappingURL=polyfills.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { MathUtils } from \"../Utils\";\nvar JitterEffect = /** @class */ (function () {\n function JitterEffect(jitterX, jitterY) {\n this.jitterX = 0;\n this.jitterY = 0;\n this.jitterX = jitterX;\n this.jitterY = jitterY;\n }\n JitterEffect.prototype.begin = function (skeleton) {\n };\n JitterEffect.prototype.transform = function (position, uv, light, dark) {\n position.x += MathUtils.randomTriangular(-this.jitterX, this.jitterY);\n position.y += MathUtils.randomTriangular(-this.jitterX, this.jitterY);\n };\n JitterEffect.prototype.end = function () {\n };\n return JitterEffect;\n}());\nexport { JitterEffect };\n//# sourceMappingURL=JitterEffect.js.map","/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated January 1, 2020. Replaces all prior versions.\n *\n * Copyright (c) 2013-2020, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software\n * or otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { PowOut, MathUtils } from \"../Utils\";\nvar SwirlEffect = /** @class */ (function () {\n function SwirlEffect(radius) {\n this.centerX = 0;\n this.centerY = 0;\n this.radius = 0;\n this.angle = 0;\n this.worldX = 0;\n this.worldY = 0;\n this.radius = radius;\n }\n SwirlEffect.prototype.begin = function (skeleton) {\n this.worldX = skeleton.x + this.centerX;\n this.worldY = skeleton.y + this.centerY;\n };\n SwirlEffect.prototype.transform = function (position, uv, light, dark) {\n var radAngle = this.angle * MathUtils.degreesToRadians;\n var x = position.x - this.worldX;\n var y = position.y - this.worldY;\n var dist = Math.sqrt(x * x + y * y);\n if (dist < this.radius) {\n var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius);\n var cos = Math.cos(theta);\n var sin = Math.sin(theta);\n position.x = cos * x - sin * y + this.worldX;\n position.y = sin * x + cos * y + this.worldY;\n }\n };\n SwirlEffect.prototype.end = function () {\n };\n SwirlEffect.interpolation = new PowOut(2);\n return SwirlEffect;\n}());\nexport { SwirlEffect };\n//# sourceMappingURL=SwirlEffect.js.map"],"names":["__extends","this","MixBlend","MixDirection","EventType","TextureFilter","TextureWrap","TransformMode","PositionMode","SpacingMode","RotateMode","BlendMode","LinkedMesh","readTimeline1","readTimeline2"],"mappings":"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"} \ No newline at end of file diff --git a/spine-ts/build/spine-player.d.ts b/spine-ts/build/spine-player.d.ts deleted file mode 100644 index 825b79ef8..000000000 --- a/spine-ts/build/spine-player.d.ts +++ /dev/null @@ -1,1830 +0,0 @@ -declare module spine { - class Animation { - name: string; - timelines: Array; - timelineIds: StringSet; - duration: number; - constructor(name: string, timelines: Array, duration: number); - setTimelines(timelines: Array): void; - hasTimeline(ids: string[]): boolean; - apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - enum MixBlend { - setup = 0, - first = 1, - replace = 2, - add = 3 - } - enum MixDirection { - mixIn = 0, - mixOut = 1 - } - abstract class Timeline { - propertyIds: string[]; - frames: ArrayLike; - constructor(frameCount: number, propertyIds: string[]); - getPropertyIds(): string[]; - getFrameEntries(): number; - getFrameCount(): number; - getDuration(): number; - abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - static search1(frames: ArrayLike, time: number): number; - static search(frames: ArrayLike, time: number, step: number): number; - } - interface BoneTimeline { - boneIndex: number; - } - interface SlotTimeline { - slotIndex: number; - } - abstract class CurveTimeline extends Timeline { - protected curves: ArrayLike; - constructor(frameCount: number, bezierCount: number, propertyIds: string[]); - setLinear(frame: number): void; - setStepped(frame: number): void; - shrink(bezierCount: number): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number; - } - abstract class CurveTimeline1 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value: number): void; - getCurveValue(time: number): number; - } - abstract class CurveTimeline2 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId1: string, propertyId2: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value1: number, value2: number): void; - } - class RotateTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBATimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AlphaTimeline extends CurveTimeline1 implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBA2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGB2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AttachmentTimeline extends Timeline implements SlotTimeline { - slotIndex: number; - attachmentNames: Array; - constructor(frameCount: number, slotIndex: number); - getFrameCount(): number; - setFrame(frame: number, time: number, attachmentName: string): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; - } - class DeformTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - attachment: VertexAttachment; - vertices: Array>; - constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment); - getFrameCount(): number; - setFrame(frame: number, time: number, vertices: ArrayLike): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getCurvePercent(time: number, frame: number): number; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class EventTimeline extends Timeline { - static propertyIds: string[]; - events: Array; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, event: Event): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class DrawOrderTimeline extends Timeline { - static propertyIds: string[]; - drawOrders: Array>; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, time: number, drawOrder: Array): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class IkConstraintTimeline extends CurveTimeline { - ikConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TransformConstraintTimeline extends CurveTimeline { - transformConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintPositionTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintSpacingTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintMixTimeline extends CurveTimeline { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } -} -declare module spine { - class AnimationState { - private static emptyAnimation; - data: AnimationStateData; - tracks: TrackEntry[]; - timeScale: number; - unkeyedState: number; - events: Event[]; - listeners: AnimationStateListener[]; - queue: EventQueue; - propertyIDs: StringSet; - animationsChanged: boolean; - trackEntryPool: Pool; - constructor(data: AnimationStateData); - update(delta: number): void; - updateMixingFrom(to: TrackEntry, delta: number): boolean; - apply(skeleton: Skeleton): boolean; - applyMixingFrom(to: TrackEntry, skeleton: Skeleton, blend: MixBlend): number; - applyAttachmentTimeline(timeline: AttachmentTimeline, skeleton: Skeleton, time: number, blend: MixBlend, attachments: boolean): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string, attachments: boolean): void; - applyRotateTimeline(timeline: RotateTimeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array, i: number, firstFrame: boolean): void; - queueEvents(entry: TrackEntry, animationTime: number): void; - clearTracks(): void; - clearTrack(trackIndex: number): void; - setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; - setAnimation(trackIndex: number, animationName: string, loop?: boolean): TrackEntry; - setAnimationWith(trackIndex: number, animation: Animation, loop?: boolean): TrackEntry; - addAnimation(trackIndex: number, animationName: string, loop?: boolean, delay?: number): TrackEntry; - addAnimationWith(trackIndex: number, animation: Animation, loop?: boolean, delay?: number): TrackEntry; - setEmptyAnimation(trackIndex: number, mixDuration?: number): TrackEntry; - addEmptyAnimation(trackIndex: number, mixDuration?: number, delay?: number): TrackEntry; - setEmptyAnimations(mixDuration?: number): void; - expandToIndex(index: number): TrackEntry; - trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; - clearNext(entry: TrackEntry): void; - _animationsChanged(): void; - computeHold(entry: TrackEntry): void; - getCurrent(trackIndex: number): TrackEntry; - addListener(listener: AnimationStateListener): void; - removeListener(listener: AnimationStateListener): void; - clearListeners(): void; - clearListenerNotifications(): void; - } - class TrackEntry { - animation: Animation; - previous: TrackEntry; - next: TrackEntry; - mixingFrom: TrackEntry; - mixingTo: TrackEntry; - listener: AnimationStateListener; - trackIndex: number; - loop: boolean; - holdPrevious: boolean; - reverse: boolean; - eventThreshold: number; - attachmentThreshold: number; - drawOrderThreshold: number; - animationStart: number; - animationEnd: number; - animationLast: number; - nextAnimationLast: number; - delay: number; - trackTime: number; - trackLast: number; - nextTrackLast: number; - trackEnd: number; - timeScale: number; - alpha: number; - mixTime: number; - mixDuration: number; - interruptAlpha: number; - totalAlpha: number; - mixBlend: MixBlend; - timelineMode: number[]; - timelineHoldMix: TrackEntry[]; - timelinesRotation: number[]; - reset(): void; - getAnimationTime(): number; - setAnimationLast(animationLast: number): void; - isComplete(): boolean; - resetRotationDirections(): void; - getTrackComplete(): number; - } - class EventQueue { - objects: Array; - drainDisabled: boolean; - animState: AnimationState; - constructor(animState: AnimationState); - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - drain(): void; - clear(): void; - } - enum EventType { - start = 0, - interrupt = 1, - end = 2, - dispose = 3, - complete = 4, - event = 5 - } - interface AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } - abstract class AnimationStateAdapter implements AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } -} -declare module spine { - class AnimationStateData { - skeletonData: SkeletonData; - animationToMixTime: Map; - defaultMix: number; - constructor(skeletonData: SkeletonData); - setMix(fromName: string, toName: string, duration: number): void; - setMixWith(from: Animation, to: Animation, duration: number): void; - getMix(from: Animation, to: Animation): number; - } -} -declare module spine { - class AssetManager implements Disposable { - private pathPrefix; - private textureLoader; - private downloader; - private assets; - private errors; - private toLoad; - private loaded; - constructor(textureLoader: (image: HTMLImageElement | ImageBitmap) => Texture, pathPrefix?: string, downloader?: Downloader); - private start; - private success; - private error; - setRawDataURI(path: string, data: string): void; - loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, message: string) => void): void; - loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, message: string) => void): void; - loadJson(path: string, success?: (path: string, object: object) => void, error?: (path: string, message: string) => void): void; - loadTexture(path: string, success?: (path: string, texture: Texture) => void, error?: (path: string, message: string) => void): void; - loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, message: string) => void): void; - get(path: string): any; - require(path: string): any; - remove(path: string): any; - removeAll(): void; - isLoadingComplete(): boolean; - getToLoad(): number; - getLoaded(): number; - dispose(): void; - hasErrors(): boolean; - getErrors(): Map; - } - class Downloader { - private callbacks; - rawDataUris: Map; - downloadText(url: string, success: (data: string) => void, error: (status: number, responseText: string) => void): void; - downloadJson(url: string, success: (data: object) => void, error: (status: number, responseText: string) => void): void; - downloadBinary(url: string, success: (data: Uint8Array) => void, error: (status: number, responseText: string) => void): void; - private start; - private finish; - } -} -declare module spine { - class AtlasAttachmentLoader implements AttachmentLoader { - atlas: TextureAtlas; - constructor(atlas: TextureAtlas); - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - class Bone implements Updatable { - data: BoneData; - skeleton: Skeleton; - parent: Bone; - children: Bone[]; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - ax: number; - ay: number; - arotation: number; - ascaleX: number; - ascaleY: number; - ashearX: number; - ashearY: number; - a: number; - b: number; - c: number; - d: number; - worldY: number; - worldX: number; - sorted: boolean; - active: boolean; - constructor(data: BoneData, skeleton: Skeleton, parent: Bone); - isActive(): boolean; - update(): void; - updateWorldTransform(): void; - updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; - setToSetupPose(): void; - getWorldRotationX(): number; - getWorldRotationY(): number; - getWorldScaleX(): number; - getWorldScaleY(): number; - updateAppliedTransform(): void; - worldToLocal(world: Vector2): Vector2; - localToWorld(local: Vector2): Vector2; - worldToLocalRotation(worldRotation: number): number; - localToWorldRotation(localRotation: number): number; - rotateWorld(degrees: number): void; - } -} -declare module spine { - class BoneData { - index: number; - name: string; - parent: BoneData; - length: number; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - transformMode: TransformMode; - skinRequired: boolean; - color: Color; - constructor(index: number, name: string, parent: BoneData); - } - enum TransformMode { - Normal = 0, - OnlyTranslation = 1, - NoRotationOrReflection = 2, - NoScale = 3, - NoScaleOrReflection = 4 - } -} -declare module spine { - abstract class ConstraintData { - name: string; - order: number; - skinRequired: boolean; - constructor(name: string, order: number, skinRequired: boolean); - } -} -declare module spine { - class Event { - data: EventData; - intValue: number; - floatValue: number; - stringValue: string; - time: number; - volume: number; - balance: number; - constructor(time: number, data: EventData); - } -} -declare module spine { - class EventData { - name: string; - intValue: number; - floatValue: number; - stringValue: string; - audioPath: string; - volume: number; - balance: number; - constructor(name: string); - } -} -declare module spine { - class IkConstraint implements Updatable { - data: IkConstraintData; - bones: Array; - target: Bone; - bendDirection: number; - compress: boolean; - stretch: boolean; - mix: number; - softness: number; - active: boolean; - constructor(data: IkConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; - apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, uniform: boolean, softness: number, alpha: number): void; - } -} -declare module spine { - class IkConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - bendDirection: number; - compress: boolean; - stretch: boolean; - uniform: boolean; - mix: number; - softness: number; - constructor(name: string); - } -} -declare module spine { - class PathConstraint implements Updatable { - static NONE: number; - static BEFORE: number; - static AFTER: number; - static epsilon: number; - data: PathConstraintData; - bones: Array; - target: Slot; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - spaces: number[]; - positions: number[]; - world: number[]; - curves: number[]; - lengths: number[]; - segments: number[]; - active: boolean; - constructor(data: PathConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[]; - addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; - } -} -declare module spine { - class PathConstraintData extends ConstraintData { - bones: BoneData[]; - target: SlotData; - positionMode: PositionMode; - spacingMode: SpacingMode; - rotateMode: RotateMode; - offsetRotation: number; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - constructor(name: string); - } - enum PositionMode { - Fixed = 0, - Percent = 1 - } - enum SpacingMode { - Length = 0, - Fixed = 1, - Percent = 2, - Proportional = 3 - } - enum RotateMode { - Tangent = 0, - Chain = 1, - ChainScale = 2 - } -} -declare module spine { - class Skeleton { - data: SkeletonData; - bones: Array; - slots: Array; - drawOrder: Array; - ikConstraints: Array; - transformConstraints: Array; - pathConstraints: Array; - _updateCache: Updatable[]; - skin: Skin; - color: Color; - time: number; - scaleX: number; - scaleY: number; - x: number; - y: number; - constructor(data: SkeletonData); - updateCache(): void; - sortIkConstraint(constraint: IkConstraint): void; - sortPathConstraint(constraint: PathConstraint): void; - sortTransformConstraint(constraint: TransformConstraint): void; - sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; - sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; - sortBone(bone: Bone): void; - sortReset(bones: Array): void; - updateWorldTransform(): void; - updateWorldTransformWith(parent: Bone): void; - setToSetupPose(): void; - setBonesToSetupPose(): void; - setSlotsToSetupPose(): void; - getRootBone(): Bone; - findBone(boneName: string): Bone; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): Slot; - findSlotIndex(slotName: string): number; - setSkinByName(skinName: string): void; - setSkin(newSkin: Skin): void; - getAttachmentByName(slotName: string, attachmentName: string): Attachment; - getAttachment(slotIndex: number, attachmentName: string): Attachment; - setAttachment(slotName: string, attachmentName: string): void; - findIkConstraint(constraintName: string): IkConstraint; - findTransformConstraint(constraintName: string): TransformConstraint; - findPathConstraint(constraintName: string): PathConstraint; - getBounds(offset: Vector2, size: Vector2, temp?: Array): void; - update(delta: number): void; - } -} -declare module spine { - class SkeletonBinary { - scale: number; - attachmentLoader: AttachmentLoader; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(binary: Uint8Array): SkeletonData; - private readSkin; - private readAttachment; - private readVertices; - private readFloatArray; - private readShortArray; - private readAnimation; - } -} -declare module spine { - class SkeletonBounds { - minX: number; - minY: number; - maxX: number; - maxY: number; - boundingBoxes: BoundingBoxAttachment[]; - polygons: ArrayLike[]; - private polygonPool; - update(skeleton: Skeleton, updateAabb: boolean): void; - aabbCompute(): void; - aabbContainsPoint(x: number, y: number): boolean; - aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; - aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; - containsPoint(x: number, y: number): BoundingBoxAttachment; - containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; - intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; - intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; - getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; - getWidth(): number; - getHeight(): number; - } -} -declare module spine { - class SkeletonClipping { - private triangulator; - private clippingPolygon; - private clipOutput; - clippedVertices: number[]; - clippedTriangles: number[]; - private scratch; - private clipAttachment; - private clippingPolygons; - clipStart(slot: Slot, clip: ClippingAttachment): number; - clipEndWithSlot(slot: Slot): void; - clipEnd(): void; - isClipping(): boolean; - clipTriangles(vertices: ArrayLike, verticesLength: number, triangles: ArrayLike, trianglesLength: number, uvs: ArrayLike, light: Color, dark: Color, twoColor: boolean): void; - clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array, output: Array): boolean; - static makeClockwise(polygon: ArrayLike): void; - } -} -declare module spine { - class SkeletonData { - name: string; - bones: BoneData[]; - slots: SlotData[]; - skins: Skin[]; - defaultSkin: Skin; - events: EventData[]; - animations: Animation[]; - ikConstraints: IkConstraintData[]; - transformConstraints: TransformConstraintData[]; - pathConstraints: PathConstraintData[]; - x: number; - y: number; - width: number; - height: number; - version: string; - hash: string; - fps: number; - imagesPath: string; - audioPath: string; - findBone(boneName: string): BoneData; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): SlotData; - findSlotIndex(slotName: string): number; - findSkin(skinName: string): Skin; - findEvent(eventDataName: string): EventData; - findAnimation(animationName: string): Animation; - findIkConstraint(constraintName: string): IkConstraintData; - findTransformConstraint(constraintName: string): TransformConstraintData; - findPathConstraint(constraintName: string): PathConstraintData; - } -} -declare module spine { - class SkeletonJson { - attachmentLoader: AttachmentLoader; - scale: number; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(json: string | any): SkeletonData; - readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; - readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; - readAnimation(map: any, name: string, skeletonData: SkeletonData): void; - } -} -declare module spine { - class SkinEntry { - slotIndex: number; - name: string; - attachment: Attachment; - constructor(slotIndex: number, name: string, attachment: Attachment); - } - class Skin { - name: string; - attachments: Map[]; - bones: BoneData[]; - constraints: ConstraintData[]; - constructor(name: string); - setAttachment(slotIndex: number, name: string, attachment: Attachment): void; - addSkin(skin: Skin): void; - copySkin(skin: Skin): void; - getAttachment(slotIndex: number, name: string): Attachment; - removeAttachment(slotIndex: number, name: string): void; - getAttachments(): Array; - getAttachmentsForSlot(slotIndex: number, attachments: Array): void; - clear(): void; - attachAll(skeleton: Skeleton, oldSkin: Skin): void; - } -} -declare module spine { - class Slot { - data: SlotData; - bone: Bone; - color: Color; - darkColor: Color; - attachment: Attachment; - private attachmentTime; - attachmentState: number; - deform: number[]; - constructor(data: SlotData, bone: Bone); - getSkeleton(): Skeleton; - getAttachment(): Attachment; - setAttachment(attachment: Attachment): void; - setAttachmentTime(time: number): void; - getAttachmentTime(): number; - setToSetupPose(): void; - } -} -declare module spine { - class SlotData { - index: number; - name: string; - boneData: BoneData; - color: Color; - darkColor: Color; - attachmentName: string; - blendMode: BlendMode; - constructor(index: number, name: string, boneData: BoneData); - } - enum BlendMode { - Normal = 0, - Additive = 1, - Multiply = 2, - Screen = 3 - } -} -declare module spine { - abstract class Texture { - protected _image: HTMLImageElement | ImageBitmap; - constructor(image: HTMLImageElement | ImageBitmap); - getImage(): HTMLImageElement | ImageBitmap; - abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - abstract dispose(): void; - } - enum TextureFilter { - Nearest = 9728, - Linear = 9729, - MipMap = 9987, - MipMapNearestNearest = 9984, - MipMapLinearNearest = 9985, - MipMapNearestLinear = 9986, - MipMapLinearLinear = 9987 - } - enum TextureWrap { - MirroredRepeat = 33648, - ClampToEdge = 33071, - Repeat = 10497 - } - class TextureRegion { - renderObject: any; - u: number; - v: number; - u2: number; - v2: number; - width: number; - height: number; - degrees: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - } - class FakeTexture extends Texture { - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - } -} -declare module spine { - class TextureAtlas implements Disposable { - pages: TextureAtlasPage[]; - regions: TextureAtlasRegion[]; - constructor(atlasText: string); - findRegion(name: string): TextureAtlasRegion; - setTextures(assetManager: AssetManager, pathPrefix?: string): void; - dispose(): void; - } - class TextureAtlasPage { - name: string; - minFilter: TextureFilter; - magFilter: TextureFilter; - uWrap: TextureWrap; - vWrap: TextureWrap; - texture: Texture; - width: number; - height: number; - pma: boolean; - setTexture(texture: Texture): void; - } - class TextureAtlasRegion extends TextureRegion { - page: TextureAtlasPage; - name: string; - x: number; - y: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - index: number; - degrees: number; - names: string[]; - values: number[][]; - } -} -declare module spine { - class TransformConstraint implements Updatable { - data: TransformConstraintData; - bones: Array; - target: Bone; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - temp: Vector2; - active: boolean; - constructor(data: TransformConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - applyAbsoluteWorld(): void; - applyRelativeWorld(): void; - applyAbsoluteLocal(): void; - applyRelativeLocal(): void; - } -} -declare module spine { - class TransformConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - offsetRotation: number; - offsetX: number; - offsetY: number; - offsetScaleX: number; - offsetScaleY: number; - offsetShearY: number; - relative: boolean; - local: boolean; - constructor(name: string); - } -} -declare module spine { - class Triangulator { - private convexPolygons; - private convexPolygonsIndices; - private indicesArray; - private isConcaveArray; - private triangles; - private polygonPool; - private polygonIndicesPool; - triangulate(verticesArray: ArrayLike): Array; - decompose(verticesArray: Array, triangles: Array): Array>; - private static isConcave; - private static positiveArea; - private static winding; - } -} -declare module spine { - interface Updatable { - update(): void; - isActive(): boolean; - } -} -declare module spine { - interface Map { - [key: string]: T; - } - class IntSet { - array: number[]; - add(value: number): boolean; - contains(value: number): boolean; - remove(value: number): void; - clear(): void; - } - class StringSet { - entries: Map; - size: number; - add(value: string): boolean; - addAll(values: string[]): boolean; - contains(value: string): boolean; - clear(): void; - } - interface Disposable { - dispose(): void; - } - interface Restorable { - restore(): void; - } - class Color { - r: number; - g: number; - b: number; - a: number; - static WHITE: Color; - static RED: Color; - static GREEN: Color; - static BLUE: Color; - static MAGENTA: Color; - constructor(r?: number, g?: number, b?: number, a?: number); - set(r: number, g: number, b: number, a: number): this; - setFromColor(c: Color): this; - setFromString(hex: string): this; - add(r: number, g: number, b: number, a: number): this; - clamp(): this; - static rgba8888ToColor(color: Color, value: number): void; - static rgb888ToColor(color: Color, value: number): void; - static fromString(hex: string): Color; - } - class MathUtils { - static PI: number; - static PI2: number; - static radiansToDegrees: number; - static radDeg: number; - static degreesToRadians: number; - static degRad: number; - static clamp(value: number, min: number, max: number): number; - static cosDeg(degrees: number): number; - static sinDeg(degrees: number): number; - static signum(value: number): number; - static toInt(x: number): number; - static cbrt(x: number): number; - static randomTriangular(min: number, max: number): number; - static randomTriangularWith(min: number, max: number, mode: number): number; - static isPowerOfTwo(value: number): boolean; - } - abstract class Interpolation { - protected abstract applyInternal(a: number): number; - apply(start: number, end: number, a: number): number; - } - class Pow extends Interpolation { - protected power: number; - constructor(power: number); - applyInternal(a: number): number; - } - class PowOut extends Pow { - constructor(power: number); - applyInternal(a: number): number; - } - class Utils { - static SUPPORTS_TYPED_ARRAYS: boolean; - static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; - static arrayFill(array: ArrayLike, fromIndex: number, toIndex: number, value: T): void; - static setArraySize(array: Array, size: number, value?: any): Array; - static ensureArrayCapacity(array: Array, size: number, value?: any): Array; - static newArray(size: number, defaultValue: T): Array; - static newFloatArray(size: number): ArrayLike; - static newShortArray(size: number): ArrayLike; - static toFloatArray(array: Array): number[] | Float32Array; - static toSinglePrecision(value: number): number; - static webkit602BugfixHelper(alpha: number, blend: MixBlend): void; - static contains(array: Array, element: T, identity?: boolean): boolean; - static enumValue(type: any, name: string): any; - } - class DebugUtils { - static logBones(skeleton: Skeleton): void; - } - class Pool { - private items; - private instantiator; - constructor(instantiator: () => T); - obtain(): T; - free(item: T): void; - freeAll(items: ArrayLike): void; - clear(): void; - } - class Vector2 { - x: number; - y: number; - constructor(x?: number, y?: number); - set(x: number, y: number): Vector2; - length(): number; - normalize(): this; - } - class TimeKeeper { - maxDelta: number; - framesPerSecond: number; - delta: number; - totalTime: number; - private lastTime; - private frameCount; - private frameTime; - update(): void; - } - interface ArrayLike { - length: number; - [n: number]: T; - } - class WindowedMean { - values: Array; - addedValues: number; - lastValue: number; - mean: number; - dirty: boolean; - constructor(windowSize?: number); - hasEnoughData(): boolean; - addValue(value: number): void; - getMean(): number; - } -} -declare module spine { - interface VertexEffect { - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -interface Math { - fround(n: number): number; -} -declare module spine { - abstract class Attachment { - name: string; - constructor(name: string); - abstract copy(): Attachment; - } - abstract class VertexAttachment extends Attachment { - private static nextID; - id: number; - bones: Array; - vertices: ArrayLike; - worldVerticesLength: number; - deformAttachment: VertexAttachment; - constructor(name: string); - computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number, stride: number): void; - copyTo(attachment: VertexAttachment): void; - } -} -declare module spine { - interface AttachmentLoader { - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - class BoundingBoxAttachment extends VertexAttachment { - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class ClippingAttachment extends VertexAttachment { - endSlot: SlotData; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class MeshAttachment extends VertexAttachment { - region: TextureRegion; - path: string; - regionUVs: ArrayLike; - uvs: ArrayLike; - triangles: Array; - color: Color; - width: number; - height: number; - hullLength: number; - edges: Array; - private parentMesh; - tempColor: Color; - constructor(name: string); - updateUVs(): void; - getParentMesh(): MeshAttachment; - setParentMesh(parentMesh: MeshAttachment): void; - copy(): Attachment; - newLinkedMesh(): MeshAttachment; - } -} -declare module spine { - class PathAttachment extends VertexAttachment { - lengths: Array; - closed: boolean; - constantSpeed: boolean; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class PointAttachment extends VertexAttachment { - x: number; - y: number; - rotation: number; - color: Color; - constructor(name: string); - computeWorldPosition(bone: Bone, point: Vector2): Vector2; - computeWorldRotation(bone: Bone): number; - copy(): Attachment; - } -} -declare module spine { - class RegionAttachment extends Attachment { - x: number; - y: number; - scaleX: number; - scaleY: number; - rotation: number; - width: number; - height: number; - color: Color; - path: string; - rendererObject: any; - region: TextureRegion; - offset: ArrayLike; - uvs: ArrayLike; - tempColor: Color; - constructor(name: string); - updateOffset(): void; - setRegion(region: TextureRegion): void; - computeWorldVertices(bone: Bone, worldVertices: ArrayLike, offset: number, stride: number): void; - copy(): Attachment; - static X1: number; - static Y1: number; - static C1R: number; - static C1G: number; - static C1B: number; - static C1A: number; - static U1: number; - static V1: number; - static X2: number; - static Y2: number; - static C2R: number; - static C2G: number; - static C2B: number; - static C2A: number; - static U2: number; - static V2: number; - static X3: number; - static Y3: number; - static C3R: number; - static C3G: number; - static C3B: number; - static C3A: number; - static U3: number; - static V3: number; - static X4: number; - static Y4: number; - static C4R: number; - static C4G: number; - static C4B: number; - static C4A: number; - static U4: number; - static V4: number; - } -} -declare module spine { - class JitterEffect implements VertexEffect { - jitterX: number; - jitterY: number; - constructor(jitterX: number, jitterY: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine { - class SwirlEffect implements VertexEffect { - static interpolation: PowOut; - centerX: number; - centerY: number; - radius: number; - angle: number; - private worldX; - private worldY; - constructor(radius: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine.webgl { - class AssetManager extends spine.AssetManager { - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, pathPrefix?: string, downloader?: Downloader); - } -} -declare module spine.webgl { - class OrthoCamera { - position: Vector3; - direction: Vector3; - up: Vector3; - near: number; - far: number; - zoom: number; - viewportWidth: number; - viewportHeight: number; - projectionView: Matrix4; - inverseProjectionView: Matrix4; - projection: Matrix4; - view: Matrix4; - constructor(viewportWidth: number, viewportHeight: number); - update(): void; - screenToWorld(screenCoords: Vector3, screenWidth: number, screenHeight: number): Vector3; - worldToScreen(worldCoords: Vector3, screenWidth: number, screenHeight: number): Vector3; - setViewport(viewportWidth: number, viewportHeight: number): void; - } -} -declare module spine.webgl { - class GLTexture extends Texture implements Disposable, Restorable { - context: ManagedWebGLRenderingContext; - private texture; - private boundUnit; - private useMipMaps; - static DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL: boolean; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, image: HTMLImageElement | ImageBitmap, useMipMaps?: boolean); - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - static validateMagFilter(magFilter: TextureFilter): TextureFilter.Nearest | TextureFilter.Linear; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - update(useMipMaps: boolean): void; - restore(): void; - bind(unit?: number): void; - unbind(): void; - dispose(): void; - } -} -declare module spine.webgl { - class Input { - element: HTMLElement; - lastX: number; - lastY: number; - buttonDown: boolean; - currTouch: Touch; - private listeners; - touchesPool: Pool; - constructor(element: HTMLElement); - private setupCallbacks; - addListener(listener: InputListener): void; - removeListener(listener: InputListener): void; - } - class Touch { - identifier: number; - x: number; - y: number; - constructor(identifier: number, x: number, y: number); - } - interface InputListener { - down(x: number, y: number): void; - up(x: number, y: number): void; - moved(x: number, y: number): void; - dragged(x: number, y: number): void; - } -} -declare module spine.webgl { - class LoadingScreen { - private renderer; - private logo; - private spinner; - private angle; - private fadeOut; - private fadeIn; - private timeKeeper; - backgroundColor: Color; - private tempColor; - constructor(renderer: SceneRenderer); - draw(complete?: boolean): void; - } -} -declare module spine.webgl { - const M00 = 0; - const M01 = 4; - const M02 = 8; - const M03 = 12; - const M10 = 1; - const M11 = 5; - const M12 = 9; - const M13 = 13; - const M20 = 2; - const M21 = 6; - const M22 = 10; - const M23 = 14; - const M30 = 3; - const M31 = 7; - const M32 = 11; - const M33 = 15; - class Matrix4 { - temp: Float32Array; - values: Float32Array; - private static xAxis; - private static yAxis; - private static zAxis; - private static tmpMatrix; - constructor(); - set(values: ArrayLike): Matrix4; - transpose(): Matrix4; - identity(): Matrix4; - invert(): Matrix4; - determinant(): number; - translate(x: number, y: number, z: number): Matrix4; - copy(): Matrix4; - projection(near: number, far: number, fovy: number, aspectRatio: number): Matrix4; - ortho2d(x: number, y: number, width: number, height: number): Matrix4; - ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; - multiply(matrix: Matrix4): Matrix4; - multiplyLeft(matrix: Matrix4): Matrix4; - lookAt(position: Vector3, direction: Vector3, up: Vector3): this; - static initTemps(): void; - } -} -declare module spine.webgl { - class Mesh implements Disposable, Restorable { - private attributes; - private context; - private vertices; - private verticesBuffer; - private verticesLength; - private dirtyVertices; - private indices; - private indicesBuffer; - private indicesLength; - private dirtyIndices; - private elementsPerVertex; - getAttributes(): VertexAttribute[]; - maxVertices(): number; - numVertices(): number; - setVerticesLength(length: number): void; - getVertices(): Float32Array; - maxIndices(): number; - numIndices(): number; - setIndicesLength(length: number): void; - getIndices(): Uint16Array; - getVertexSizeInFloats(): number; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, attributes: VertexAttribute[], maxVertices: number, maxIndices: number); - setVertices(vertices: Array): void; - setIndices(indices: Array): void; - draw(shader: Shader, primitiveType: number): void; - drawWithOffset(shader: Shader, primitiveType: number, offset: number, count: number): void; - bind(shader: Shader): void; - unbind(shader: Shader): void; - private update; - restore(): void; - dispose(): void; - } - class VertexAttribute { - name: string; - type: VertexAttributeType; - numElements: number; - constructor(name: string, type: VertexAttributeType, numElements: number); - } - class Position2Attribute extends VertexAttribute { - constructor(); - } - class Position3Attribute extends VertexAttribute { - constructor(); - } - class TexCoordAttribute extends VertexAttribute { - constructor(unit?: number); - } - class ColorAttribute extends VertexAttribute { - constructor(); - } - class Color2Attribute extends VertexAttribute { - constructor(); - } - enum VertexAttributeType { - Float = 0 - } -} -declare module spine.webgl { - class PolygonBatcher implements Disposable { - private context; - private drawCalls; - private isDrawing; - private mesh; - private shader; - private lastTexture; - private verticesLength; - private indicesLength; - private srcColorBlend; - private srcAlphaBlend; - private dstBlend; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean, maxVertices?: number); - begin(shader: Shader): void; - setBlendMode(srcColorBlend: number, srcAlphaBlend: number, dstBlend: number): void; - draw(texture: GLTexture, vertices: ArrayLike, indices: Array): void; - flush(): void; - end(): void; - getDrawCalls(): number; - dispose(): void; - } -} -declare module spine.webgl { - class SceneRenderer implements Disposable { - context: ManagedWebGLRenderingContext; - canvas: HTMLCanvasElement; - camera: OrthoCamera; - batcher: PolygonBatcher; - private twoColorTint; - private batcherShader; - private shapes; - private shapesShader; - private activeRenderer; - skeletonRenderer: SkeletonRenderer; - skeletonDebugRenderer: SkeletonDebugRenderer; - constructor(canvas: HTMLCanvasElement, context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean); - begin(): void; - drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean, slotRangeStart?: number, slotRangeEnd?: number): void; - drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean, ignoredBones?: Array): void; - drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void; - drawTextureUV(texture: GLTexture, x: number, y: number, width: number, height: number, u: number, v: number, u2: number, v2: number, color?: Color): void; - drawTextureRotated(texture: GLTexture, x: number, y: number, width: number, height: number, pivotX: number, pivotY: number, angle: number, color?: Color): void; - drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color): void; - line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void; - triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; - quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; - rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; - rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; - polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; - circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; - curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; - end(): void; - resize(resizeMode: ResizeMode): void; - private enableRenderer; - dispose(): void; - } - enum ResizeMode { - Stretch = 0, - Expand = 1, - Fit = 2 - } -} -declare module spine.webgl { - class Shader implements Disposable, Restorable { - private vertexShader; - private fragmentShader; - static MVP_MATRIX: string; - static POSITION: string; - static COLOR: string; - static COLOR2: string; - static TEXCOORDS: string; - static SAMPLER: string; - private context; - private vs; - private vsSource; - private fs; - private fsSource; - private program; - private tmp2x2; - private tmp3x3; - private tmp4x4; - getProgram(): WebGLProgram; - getVertexShader(): string; - getFragmentShader(): string; - getVertexShaderSource(): string; - getFragmentSource(): string; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, vertexShader: string, fragmentShader: string); - private compile; - private compileShader; - private compileProgram; - restore(): void; - bind(): void; - unbind(): void; - setUniformi(uniform: string, value: number): void; - setUniformf(uniform: string, value: number): void; - setUniform2f(uniform: string, value: number, value2: number): void; - setUniform3f(uniform: string, value: number, value2: number, value3: number): void; - setUniform4f(uniform: string, value: number, value2: number, value3: number, value4: number): void; - setUniform2x2f(uniform: string, value: ArrayLike): void; - setUniform3x3f(uniform: string, value: ArrayLike): void; - setUniform4x4f(uniform: string, value: ArrayLike): void; - getUniformLocation(uniform: string): WebGLUniformLocation; - getAttributeLocation(attribute: string): number; - dispose(): void; - static newColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - static newTwoColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - static newColored(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - } -} -declare module spine.webgl { - class ShapeRenderer implements Disposable { - private context; - private isDrawing; - private mesh; - private shapeType; - private color; - private shader; - private vertexIndex; - private tmp; - private srcColorBlend; - private srcAlphaBlend; - private dstBlend; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, maxVertices?: number); - begin(shader: Shader): void; - setBlendMode(srcColorBlend: number, srcAlphaBlend: number, dstBlend: number): void; - setColor(color: Color): void; - setColorWith(r: number, g: number, b: number, a: number): void; - point(x: number, y: number, color?: Color): void; - line(x: number, y: number, x2: number, y2: number, color?: Color): void; - triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; - quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; - rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; - rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; - x(x: number, y: number, size: number): void; - polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; - circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; - curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; - private vertex; - end(): void; - private flush; - private check; - dispose(): void; - } - enum ShapeType { - Point = 0, - Line = 1, - Filled = 4 - } -} -declare module spine.webgl { - class SkeletonDebugRenderer implements Disposable { - boneLineColor: Color; - boneOriginColor: Color; - attachmentLineColor: Color; - triangleLineColor: Color; - pathColor: Color; - clipColor: Color; - aabbColor: Color; - drawBones: boolean; - drawRegionAttachments: boolean; - drawBoundingBoxes: boolean; - drawMeshHull: boolean; - drawMeshTriangles: boolean; - drawPaths: boolean; - drawSkeletonXY: boolean; - drawClipping: boolean; - premultipliedAlpha: boolean; - scale: number; - boneWidth: number; - private context; - private bounds; - private temp; - private vertices; - private static LIGHT_GRAY; - private static GREEN; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext); - draw(shapes: ShapeRenderer, skeleton: Skeleton, ignoredBones?: Array): void; - dispose(): void; - } -} -declare module spine.webgl { - class SkeletonRenderer { - static QUAD_TRIANGLES: number[]; - premultipliedAlpha: boolean; - vertexEffect: VertexEffect; - private tempColor; - private tempColor2; - private vertices; - private vertexSize; - private twoColorTint; - private renderable; - private clipper; - private temp; - private temp2; - private temp3; - private temp4; - constructor(context: ManagedWebGLRenderingContext, twoColorTint?: boolean); - draw(batcher: PolygonBatcher, skeleton: Skeleton, slotRangeStart?: number, slotRangeEnd?: number): void; - } -} -declare module spine.webgl { - class Vector3 { - x: number; - y: number; - z: number; - constructor(x?: number, y?: number, z?: number); - setFrom(v: Vector3): Vector3; - set(x: number, y: number, z: number): Vector3; - add(v: Vector3): Vector3; - sub(v: Vector3): Vector3; - scale(s: number): Vector3; - normalize(): Vector3; - cross(v: Vector3): Vector3; - multiply(matrix: Matrix4): Vector3; - project(matrix: Matrix4): Vector3; - dot(v: Vector3): number; - length(): number; - distance(v: Vector3): number; - } -} -declare module spine.webgl { - class ManagedWebGLRenderingContext { - canvas: HTMLCanvasElement | OffscreenCanvas; - gl: WebGLRenderingContext; - private restorables; - constructor(canvasOrContext: HTMLCanvasElement | WebGLRenderingContext | EventTarget, contextConfig?: any); - private setupCanvas; - addRestorable(restorable: Restorable): void; - removeRestorable(restorable: Restorable): void; - } - class WebGLBlendModeConverter { - static getDestGLBlendMode(blendMode: BlendMode): 1 | 771; - static getSourceColorGLBlendMode(blendMode: BlendMode, premultipliedAlpha?: boolean): 1 | 770 | 774; - static getSourceAlphaGLBlendMode(blendMode: BlendMode): 1 | 771 | 769; - } -} -declare module spine { - export interface SpinePlayerConfig { - jsonUrl: string; - jsonField: string; - binaryUrl: string; - atlasUrl: string; - rawDataURIs: Map; - animation: string; - animations: string[]; - defaultMix: number; - skin: string; - skins: string[]; - premultipliedAlpha: boolean; - showControls: boolean; - showLoading: boolean; - debug: { - bones: boolean; - regions: boolean; - meshes: boolean; - bounds: boolean; - paths: boolean; - clipping: boolean; - points: boolean; - hulls: boolean; - }; - viewport: { - x: number; - y: number; - width: number; - height: number; - padLeft: string | number; - padRight: string | number; - padTop: string | number; - padBottom: string | number; - debugRender: boolean; - transitionTime: number; - animations: Map; - }; - alpha: boolean; - backgroundColor: string; - fullScreenBackgroundColor: string; - backgroundImage: { - url: string; - x: number; - y: number; - width: number; - height: number; - }; - mipmaps: true; - controlBones: string[]; - success: (player: SpinePlayer) => void; - error: (player: SpinePlayer, msg: string) => void; - frame: (player: SpinePlayer, delta: number) => void; - update: (player: SpinePlayer, delta: number) => void; - draw: (player: SpinePlayer, delta: number) => void; - loading: (player: SpinePlayer, delta: number) => void; - downloader: spine.Downloader; - } - export interface Viewport { - x: number; - y: number; - width: number; - height: number; - padLeft: string | number; - padRight: string | number; - padTop: string | number; - padBottom: string | number; - } - export class SpinePlayer { - private config; - parent: HTMLElement; - dom: HTMLElement; - canvas: HTMLCanvasElement; - context: spine.webgl.ManagedWebGLRenderingContext; - sceneRenderer: spine.webgl.SceneRenderer; - loadingScreen: spine.webgl.LoadingScreen; - assetManager: spine.webgl.AssetManager; - bg: Color; - bgFullscreen: Color; - private playerControls; - private timelineSlider; - private playButton; - private skinButton; - private animationButton; - private playTime; - private selectedBones; - private cancelId; - popup: Popup; - error: boolean; - skeleton: Skeleton; - animationState: AnimationState; - paused: boolean; - speed: number; - time: TimeKeeper; - private stopRequestAnimationFrame; - private viewport; - private currentViewport; - private previousViewport; - private viewportTransitionStart; - constructor(parent: HTMLElement | string, config: SpinePlayerConfig); - private validateConfig; - private initialize; - private loadSkeleton; - private setupInput; - play(): void; - pause(): void; - setAnimation(animation: string | Animation, loop?: boolean): TrackEntry; - addAnimation(animation: string | Animation, loop?: boolean, delay?: number): TrackEntry; - setViewport(animation: string | Animation): Animation; - private percentageToWorldUnit; - private calculateAnimationViewport; - private drawFrame; - stopRendering(): void; - private hidePopup; - private showSpeedDialog; - private showAnimationsDialog; - private showSkinsDialog; - private showSettingsDialog; - private showError; - } - class Popup { - private id; - private button; - private player; - dom: HTMLElement; - private className; - constructor(id: string, button: HTMLElement, player: SpinePlayer, parent: HTMLElement, htmlContent: string); - hide(id: string): boolean; - show(): void; - } - export {}; -} -declare function CodeMirror(el: Element, config: any): void; -declare module spine { - class SpinePlayerEditor { - private static DEFAULT_CODE; - private prefix; - private postfix; - private code; - private player; - constructor(parent: HTMLElement); - private render; - setPreAndPostfix(prefix: string, postfix: string): void; - setCode(code: string): void; - private timerId; - startPlayer(): void; - } -} diff --git a/spine-ts/build/spine-player.js b/spine-ts/build/spine-player.js deleted file mode 100644 index dfcae289c..000000000 --- a/spine-ts/build/spine-player.js +++ /dev/null @@ -1,12591 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var spine; -(function (spine) { - var Animation = (function () { - function Animation(name, timelines, duration) { - if (!name) - throw new Error("name cannot be null."); - this.name = name; - this.setTimelines(timelines); - this.duration = duration; - } - Animation.prototype.setTimelines = function (timelines) { - if (!timelines) - throw new Error("timelines cannot be null."); - this.timelines = timelines; - this.timelineIds = new spine.StringSet(); - for (var i = 0; i < timelines.length; i++) - this.timelineIds.addAll(timelines[i].getPropertyIds()); - }; - Animation.prototype.hasTimeline = function (ids) { - for (var i = 0; i < ids.length; i++) - if (this.timelineIds.contains(ids[i])) - return true; - return false; - }; - Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - if (loop && this.duration != 0) { - time %= this.duration; - if (lastTime > 0) - lastTime %= this.duration; - } - var timelines = this.timelines; - for (var i = 0, n = timelines.length; i < n; i++) - timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction); - }; - return Animation; - }()); - spine.Animation = Animation; - var MixBlend; - (function (MixBlend) { - MixBlend[MixBlend["setup"] = 0] = "setup"; - MixBlend[MixBlend["first"] = 1] = "first"; - MixBlend[MixBlend["replace"] = 2] = "replace"; - MixBlend[MixBlend["add"] = 3] = "add"; - })(MixBlend = spine.MixBlend || (spine.MixBlend = {})); - var MixDirection; - (function (MixDirection) { - MixDirection[MixDirection["mixIn"] = 0] = "mixIn"; - MixDirection[MixDirection["mixOut"] = 1] = "mixOut"; - })(MixDirection = spine.MixDirection || (spine.MixDirection = {})); - var Property = { - rotate: 0, - x: 1, - y: 2, - scaleX: 3, - scaleY: 4, - shearX: 5, - shearY: 6, - rgb: 7, - alpha: 8, - rgb2: 9, - attachment: 10, - deform: 11, - event: 12, - drawOrder: 13, - ikConstraint: 14, - transformConstraint: 15, - pathConstraintPosition: 16, - pathConstraintSpacing: 17, - pathConstraintMix: 18 - }; - var Timeline = (function () { - function Timeline(frameCount, propertyIds) { - this.propertyIds = propertyIds; - this.frames = spine.Utils.newFloatArray(frameCount * this.getFrameEntries()); - } - Timeline.prototype.getPropertyIds = function () { - return this.propertyIds; - }; - Timeline.prototype.getFrameEntries = function () { - return 1; - }; - Timeline.prototype.getFrameCount = function () { - return this.frames.length / this.getFrameEntries(); - }; - Timeline.prototype.getDuration = function () { - return this.frames[this.frames.length - this.getFrameEntries()]; - }; - Timeline.search1 = function (frames, time) { - var n = frames.length; - for (var i = 1; i < n; i++) - if (frames[i] > time) - return i - 1; - return n - 1; - }; - Timeline.search = function (frames, time, step) { - var n = frames.length; - for (var i = step; i < n; i += step) - if (frames[i] > time) - return i - step; - return n - step; - }; - return Timeline; - }()); - spine.Timeline = Timeline; - var CurveTimeline = (function (_super) { - __extends(CurveTimeline, _super); - function CurveTimeline(frameCount, bezierCount, propertyIds) { - var _this = _super.call(this, frameCount, propertyIds) || this; - _this.curves = spine.Utils.newFloatArray(frameCount + bezierCount * 18); - _this.curves[frameCount - 1] = 1; - return _this; - } - CurveTimeline.prototype.setLinear = function (frame) { - this.curves[frame] = 0; - }; - CurveTimeline.prototype.setStepped = function (frame) { - this.curves[frame] = 1; - }; - CurveTimeline.prototype.shrink = function (bezierCount) { - var size = this.getFrameCount() + bezierCount * 18; - if (this.curves.length > size) { - var newCurves = spine.Utils.newFloatArray(size); - spine.Utils.arrayCopy(this.curves, 0, newCurves, 0, size); - this.curves = newCurves; - } - }; - CurveTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { - var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; - if (value == 0) - curves[frame] = 2 + i; - var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03; - var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006; - var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; - var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667; - var x = time1 + dx, y = value1 + dy; - for (var n = i + 18; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dx += ddx; - dy += ddy; - ddx += dddx; - ddy += dddy; - x += dx; - y += dy; - } - }; - CurveTimeline.prototype.getBezierValue = function (time, frameIndex, valueOffset, i) { - var curves = this.curves; - if (curves[i] > time) { - var x_1 = this.frames[frameIndex], y_1 = this.frames[frameIndex + valueOffset]; - return y_1 + (time - x_1) / (curves[i] - x_1) * (curves[i + 1] - y_1); - } - var n = i + 18; - for (i += 2; i < n; i += 2) { - if (curves[i] >= time) { - var x_2 = curves[i - 2], y_2 = curves[i - 1]; - return y_2 + (time - x_2) / (curves[i] - x_2) * (curves[i + 1] - y_2); - } - } - frameIndex += this.getFrameEntries(); - var x = curves[n - 2], y = curves[n - 1]; - return y + (time - x) / (this.frames[frameIndex] - x) * (this.frames[frameIndex + valueOffset] - y); - }; - return CurveTimeline; - }(Timeline)); - spine.CurveTimeline = CurveTimeline; - var CurveTimeline1 = (function (_super) { - __extends(CurveTimeline1, _super); - function CurveTimeline1(frameCount, bezierCount, propertyId) { - return _super.call(this, frameCount, bezierCount, [propertyId]) || this; - } - CurveTimeline1.prototype.getFrameEntries = function () { - return 2; - }; - CurveTimeline1.prototype.setFrame = function (frame, time, value) { - frame <<= 1; - this.frames[frame] = time; - this.frames[frame + 1] = value; - }; - CurveTimeline1.prototype.getCurveValue = function (time) { - var frames = this.frames; - var i = frames.length - 2; - for (var ii = 2; ii <= i; ii += 2) { - if (frames[ii] > time) { - i = ii - 2; - break; - } - } - var curveType = this.curves[i >> 1]; - switch (curveType) { - case 0: - var before = frames[i], value = frames[i + 1]; - return value + (time - before) / (frames[i + 2] - before) * (frames[i + 2 + 1] - value); - case 1: - return frames[i + 1]; - } - return this.getBezierValue(time, i, 1, curveType - 2); - }; - return CurveTimeline1; - }(CurveTimeline)); - spine.CurveTimeline1 = CurveTimeline1; - var CurveTimeline2 = (function (_super) { - __extends(CurveTimeline2, _super); - function CurveTimeline2(frameCount, bezierCount, propertyId1, propertyId2) { - return _super.call(this, frameCount, bezierCount, [propertyId1, propertyId2]) || this; - } - CurveTimeline2.prototype.getFrameEntries = function () { - return 3; - }; - CurveTimeline2.prototype.setFrame = function (frame, time, value1, value2) { - frame *= 3; - this.frames[frame] = time; - this.frames[frame + 1] = value1; - this.frames[frame + 2] = value2; - }; - return CurveTimeline2; - }(CurveTimeline)); - spine.CurveTimeline2 = CurveTimeline2; - var RotateTimeline = (function (_super) { - __extends(RotateTimeline, _super); - function RotateTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.rotate + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation; - return; - case MixBlend.first: - bone.rotation += (bone.data.rotation - bone.rotation) * alpha; - } - return; - } - var r = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation + r * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - r += bone.data.rotation - bone.rotation; - case MixBlend.add: - bone.rotation += r * alpha; - } - }; - return RotateTimeline; - }(CurveTimeline1)); - spine.RotateTimeline = RotateTimeline; - var TranslateTimeline = (function (_super) { - __extends(TranslateTimeline, _super); - function TranslateTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex, Property.y + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x; - bone.y = bone.data.y; - return; - case MixBlend.first: - bone.x += (bone.data.x - bone.x) * alpha; - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x + x * alpha; - bone.y = bone.data.y + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.x += (bone.data.x + x - bone.x) * alpha; - bone.y += (bone.data.y + y - bone.y) * alpha; - break; - case MixBlend.add: - bone.x += x * alpha; - bone.y += y * alpha; - } - }; - return TranslateTimeline; - }(CurveTimeline2)); - spine.TranslateTimeline = TranslateTimeline; - var TranslateXTimeline = (function (_super) { - __extends(TranslateXTimeline, _super); - function TranslateXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x; - return; - case MixBlend.first: - bone.x += (bone.data.x - bone.x) * alpha; - } - return; - } - var x = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x + x * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.x += (bone.data.x + x - bone.x) * alpha; - break; - case MixBlend.add: - bone.x += x * alpha; - } - }; - return TranslateXTimeline; - }(CurveTimeline1)); - spine.TranslateXTimeline = TranslateXTimeline; - var TranslateYTimeline = (function (_super) { - __extends(TranslateYTimeline, _super); - function TranslateYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.y + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.y = bone.data.y; - return; - case MixBlend.first: - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var y = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.y = bone.data.y + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.y += (bone.data.y + y - bone.y) * alpha; - break; - case MixBlend.add: - bone.y += y * alpha; - } - }; - return TranslateYTimeline; - }(CurveTimeline1)); - spine.TranslateYTimeline = TranslateYTimeline; - var ScaleTimeline = (function (_super) { - __extends(ScaleTimeline, _super); - function ScaleTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex, Property.scaleY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleX = bone.data.scaleX; - bone.scaleY = bone.data.scaleY; - return; - case MixBlend.first: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var x, y; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - x *= bone.data.scaleX; - y *= bone.data.scaleY; - if (alpha == 1) { - if (blend == MixBlend.add) { - bone.scaleX += x - bone.data.scaleX; - bone.scaleY += y - bone.data.scaleY; - } - else { - bone.scaleX = x; - bone.scaleY = y; - } - } - else { - var bx = 0, by = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - bx = bone.data.scaleX; - by = bone.data.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.add: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.add: - bx = spine.MathUtils.signum(x); - by = spine.MathUtils.signum(y); - bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; - bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; - } - } - } - }; - return ScaleTimeline; - }(CurveTimeline2)); - spine.ScaleTimeline = ScaleTimeline; - var ScaleXTimeline = (function (_super) { - __extends(ScaleXTimeline, _super); - function ScaleXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleX = bone.data.scaleX; - return; - case MixBlend.first: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - } - return; - } - var x = this.getCurveValue(time) * bone.data.scaleX; - if (alpha == 1) { - if (blend == MixBlend.add) - bone.scaleX += x - bone.data.scaleX; - else - bone.scaleX = x; - } - else { - var bx = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - bx = bone.data.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = bone.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - break; - case MixBlend.add: - bx = bone.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); - bone.scaleX = bx + (x - bx) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); - bone.scaleX = bx + (x - bx) * alpha; - break; - case MixBlend.add: - bx = spine.MathUtils.signum(x); - bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; - } - } - } - }; - return ScaleXTimeline; - }(CurveTimeline1)); - spine.ScaleXTimeline = ScaleXTimeline; - var ScaleYTimeline = (function (_super) { - __extends(ScaleYTimeline, _super); - function ScaleYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleY = bone.data.scaleY; - return; - case MixBlend.first: - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var y = this.getCurveValue(time) * bone.data.scaleY; - if (alpha == 1) { - if (blend == MixBlend.add) - bone.scaleY += y - bone.data.scaleY; - else - bone.scaleY = y; - } - else { - var by = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - by = bone.data.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - by = bone.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.add: - by = bone.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.add: - by = spine.MathUtils.signum(y); - bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; - } - } - } - }; - return ScaleYTimeline; - }(CurveTimeline1)); - spine.ScaleYTimeline = ScaleYTimeline; - var ShearTimeline = (function (_super) { - __extends(ShearTimeline, _super); - function ShearTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex, Property.shearY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX; - bone.shearY = bone.data.shearY; - return; - case MixBlend.first: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX + x * alpha; - bone.shearY = bone.data.shearY + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - break; - case MixBlend.add: - bone.shearX += x * alpha; - bone.shearY += y * alpha; - } - }; - return ShearTimeline; - }(CurveTimeline2)); - spine.ShearTimeline = ShearTimeline; - var ShearXTimeline = (function (_super) { - __extends(ShearXTimeline, _super); - function ShearXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX; - return; - case MixBlend.first: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - } - return; - } - var x = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX + x * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - break; - case MixBlend.add: - bone.shearX += x * alpha; - } - }; - return ShearXTimeline; - }(CurveTimeline1)); - spine.ShearXTimeline = ShearXTimeline; - var ShearYTimeline = (function (_super) { - __extends(ShearYTimeline, _super); - function ShearYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearY = bone.data.shearY; - return; - case MixBlend.first: - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var y = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.shearY = bone.data.shearY + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - break; - case MixBlend.add: - bone.shearY += y * alpha; - } - }; - return ShearYTimeline; - }(CurveTimeline1)); - spine.ShearYTimeline = ShearYTimeline; - var RGBATimeline = (function (_super) { - __extends(RGBATimeline, _super); - function RGBATimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.alpha + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBATimeline.prototype.getFrameEntries = function () { - return 5; - }; - RGBATimeline.prototype.setFrame = function (frame, time, r, g, b, a) { - frame *= 5; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; - }; - RGBATimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var color = slot.color; - if (time < frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.setFromColor(setup); - return; - case MixBlend.first: - color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha); - } - return; - } - var r = 0, g = 0, b = 0, a = 0; - var i = Timeline.search(frames, time, 5); - var curveType = this.curves[i / 5]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - var t = (time - before) / (frames[i + 5] - before); - r += (frames[i + 5 + 1] - r) * t; - g += (frames[i + 5 + 2] - g) * t; - b += (frames[i + 5 + 3] - b) * t; - a += (frames[i + 5 + 4] - a) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - } - if (alpha == 1) - color.set(r, g, b, a); - else { - if (blend == MixBlend.setup) - color.setFromColor(slot.data.color); - color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); - } - }; - return RGBATimeline; - }(CurveTimeline)); - spine.RGBATimeline = RGBATimeline; - var RGBTimeline = (function (_super) { - __extends(RGBTimeline, _super); - function RGBTimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBTimeline.prototype.getFrameEntries = function () { - return 4; - }; - RGBTimeline.prototype.setFrame = function (frame, time, r, g, b) { - frame <<= 2; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - }; - RGBTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var color = slot.color; - if (time < frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.r = setup.r; - color.g = setup.g; - color.b = setup.b; - return; - case MixBlend.first: - color.r += (setup.r - color.r) * alpha; - color.g += (setup.g - color.g) * alpha; - color.b += (setup.b - color.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0; - var i = Timeline.search(frames, time, 4); - var curveType = this.curves[i >> 2]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - r += (frames[i + 4 + 1] - r) * t; - g += (frames[i + 4 + 2] - g) * t; - b += (frames[i + 4 + 3] - b) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - } - if (alpha == 1) { - color.r = r; - color.g = g; - color.b = b; - } - else { - if (blend == MixBlend.setup) { - var setup = slot.data.color; - color.r = setup.r; - color.g = setup.g; - color.b = setup.b; - } - color.r += (r - color.r) * alpha; - color.g += (g - color.g) * alpha; - color.b += (b - color.b) * alpha; - } - }; - return RGBTimeline; - }(CurveTimeline)); - spine.RGBTimeline = RGBTimeline; - var AlphaTimeline = (function (_super) { - __extends(AlphaTimeline, _super); - function AlphaTimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.alpha + "|" + slotIndex) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - AlphaTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var color = slot.color; - if (time < this.frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.a = setup.a; - return; - case MixBlend.first: - color.a += (setup.a - color.a) * alpha; - } - return; - } - var a = this.getCurveValue(time); - if (alpha == 1) - color.a = a; - else { - if (blend == MixBlend.setup) - color.a = slot.data.color.a; - color.a += (a - color.a) * alpha; - } - }; - return AlphaTimeline; - }(CurveTimeline1)); - spine.AlphaTimeline = AlphaTimeline; - var RGBA2Timeline = (function (_super) { - __extends(RGBA2Timeline, _super); - function RGBA2Timeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.alpha + "|" + slotIndex, - Property.rgb2 + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBA2Timeline.prototype.getFrameEntries = function () { - return 8; - }; - RGBA2Timeline.prototype.setFrame = function (frame, time, r, g, b, a, r2, g2, b2) { - frame <<= 3; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; - this.frames[frame + 5] = r2; - this.frames[frame + 6] = g2; - this.frames[frame + 7] = b2; - }; - RGBA2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var light = slot.color, dark = slot.darkColor; - if (time < frames[0]) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - switch (blend) { - case MixBlend.setup: - light.setFromColor(setupLight); - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - return; - case MixBlend.first: - light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha); - dark.r += (setupDark.r - dark.r) * alpha; - dark.g += (setupDark.g - dark.g) * alpha; - dark.b += (setupDark.b - dark.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 8); - var curveType = this.curves[i >> 3]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; - var t = (time - before) / (frames[i + 8] - before); - r += (frames[i + 8 + 1] - r) * t; - g += (frames[i + 8 + 2] - g) * t; - b += (frames[i + 8 + 3] - b) * t; - a += (frames[i + 8 + 4] - a) * t; - r2 += (frames[i + 8 + 5] - r2) * t; - g2 += (frames[i + 8 + 6] - g2) * t; - b2 += (frames[i + 8 + 7] - b2) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - r2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - g2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - b2 = this.getBezierValue(time, i, 7, curveType + 18 * 6 - 2); - } - if (alpha == 1) { - light.set(r, g, b, a); - dark.r = r2; - dark.g = g2; - dark.b = b2; - } - else { - if (blend == MixBlend.setup) { - light.setFromColor(slot.data.color); - var setupDark = slot.data.darkColor; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - } - light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); - dark.r += (r2 - dark.r) * alpha; - dark.g += (g2 - dark.g) * alpha; - dark.b += (b2 - dark.b) * alpha; - } - }; - return RGBA2Timeline; - }(CurveTimeline)); - spine.RGBA2Timeline = RGBA2Timeline; - var RGB2Timeline = (function (_super) { - __extends(RGB2Timeline, _super); - function RGB2Timeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.rgb2 + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGB2Timeline.prototype.getFrameEntries = function () { - return 7; - }; - RGB2Timeline.prototype.setFrame = function (frame, time, r, g, b, r2, g2, b2) { - frame *= 7; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = r2; - this.frames[frame + 5] = g2; - this.frames[frame + 6] = b2; - }; - RGB2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var light = slot.color, dark = slot.darkColor; - if (time < frames[0]) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - switch (blend) { - case MixBlend.setup: - light.r = setupLight.r; - light.g = setupLight.g; - light.b = setupLight.b; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - return; - case MixBlend.first: - light.r += (setupLight.r - light.r) * alpha; - light.g += (setupLight.g - light.g) * alpha; - light.b += (setupLight.b - light.b) * alpha; - dark.r += (setupDark.r - dark.r) * alpha; - dark.g += (setupDark.g - dark.g) * alpha; - dark.b += (setupDark.b - dark.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - r += (frames[i + 7 + 1] - r) * t; - g += (frames[i + 7 + 2] - g) * t; - b += (frames[i + 7 + 3] - b) * t; - r2 += (frames[i + 7 + 4] - r2) * t; - g2 += (frames[i + 7 + 5] - g2) * t; - b2 += (frames[i + 7 + 6] - b2) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - r2 = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - g2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - b2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - } - if (alpha == 1) { - light.r = r; - light.g = g; - light.b = b; - dark.r = r2; - dark.g = g2; - dark.b = b2; - } - else { - if (blend == MixBlend.setup) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - light.r = setupLight.r; - light.g = setupLight.g; - light.b = setupLight.b; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - } - light.r += (r - light.r) * alpha; - light.g += (g - light.g) * alpha; - light.b += (b - light.b) * alpha; - dark.r += (r2 - dark.r) * alpha; - dark.g += (g2 - dark.g) * alpha; - dark.b += (b2 - dark.b) * alpha; - } - }; - return RGB2Timeline; - }(CurveTimeline)); - spine.RGB2Timeline = RGB2Timeline; - var AttachmentTimeline = (function (_super) { - __extends(AttachmentTimeline, _super); - function AttachmentTimeline(frameCount, slotIndex) { - var _this = _super.call(this, frameCount, [ - Property.attachment + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - _this.attachmentNames = new Array(frameCount); - return _this; - } - AttachmentTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - AttachmentTimeline.prototype.setFrame = function (frame, time, attachmentName) { - this.frames[frame] = time; - this.attachmentNames[frame] = attachmentName; - }; - AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - if (time < this.frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - this.setAttachment(skeleton, slot, this.attachmentNames[Timeline.search1(this.frames, time)]); - }; - AttachmentTimeline.prototype.setAttachment = function (skeleton, slot, attachmentName) { - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); - }; - return AttachmentTimeline; - }(Timeline)); - spine.AttachmentTimeline = AttachmentTimeline; - var DeformTimeline = (function (_super) { - __extends(DeformTimeline, _super); - function DeformTimeline(frameCount, bezierCount, slotIndex, attachment) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.deform + "|" + slotIndex + "|" + attachment.id - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - _this.attachment = attachment; - _this.vertices = new Array(frameCount); - return _this; - } - DeformTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DeformTimeline.prototype.setFrame = function (frame, time, vertices) { - this.frames[frame] = time; - this.vertices[frame] = vertices; - }; - DeformTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { - var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; - if (value == 0) - curves[frame] = 2 + i; - var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06; - var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018; - var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; - var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667; - var x = time1 + dx, y = dy; - for (var n = i + 18; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dx += ddx; - dy += ddy; - ddx += dddx; - ddy += dddy; - x += dx; - y += dy; - } - }; - DeformTimeline.prototype.getCurvePercent = function (time, frame) { - var curves = this.curves; - var i = curves[frame]; - switch (i) { - case 0: - var x_3 = this.frames[frame]; - return (time - x_3) / (this.frames[frame + this.getFrameEntries()] - x_3); - case 1: - return 0; - } - i -= 2; - if (curves[i] > time) { - var x_4 = this.frames[frame]; - return curves[i + 1] * (time - x_4) / (curves[i] - x_4); - } - var n = i + 18; - for (i += 2; i < n; i += 2) { - if (curves[i] >= time) { - var x_5 = curves[i - 2], y_3 = curves[i - 1]; - return y_3 + (time - x_5) / (curves[i] - x_5) * (curves[i + 1] - y_3); - } - } - var x = curves[n - 2], y = curves[n - 1]; - return y + (1 - y) * (time - x) / (this.frames[frame + this.getFrameEntries()] - x); - }; - DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var slotAttachment = slot.getAttachment(); - if (!(slotAttachment instanceof spine.VertexAttachment) || slotAttachment.deformAttachment != this.attachment) - return; - var deform = slot.deform; - if (deform.length == 0) - blend = MixBlend.setup; - var vertices = this.vertices; - var vertexCount = vertices[0].length; - var frames = this.frames; - if (time < frames[0]) { - var vertexAttachment = slotAttachment; - switch (blend) { - case MixBlend.setup: - deform.length = 0; - return; - case MixBlend.first: - if (alpha == 1) { - deform.length = 0; - return; - } - deform.length = vertexCount; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i = 0; i < vertexCount; i++) - deform[i] += (setupVertices[i] - deform[i]) * alpha; - } - else { - alpha = 1 - alpha; - for (var i = 0; i < vertexCount; i++) - deform[i] *= alpha; - } - } - return; - } - deform.length = vertexCount; - if (time >= frames[frames.length - 1]) { - var lastVertices = vertices[frames.length - 1]; - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_1 = 0; i_1 < vertexCount; i_1++) - deform[i_1] += lastVertices[i_1] - setupVertices[i_1]; - } - else { - for (var i_2 = 0; i_2 < vertexCount; i_2++) - deform[i_2] += lastVertices[i_2]; - } - } - else - spine.Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount); - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_1 = slotAttachment; - if (!vertexAttachment_1.bones) { - var setupVertices = vertexAttachment_1.vertices; - for (var i_3 = 0; i_3 < vertexCount; i_3++) { - var setup = setupVertices[i_3]; - deform[i_3] = setup + (lastVertices[i_3] - setup) * alpha; - } - } - else { - for (var i_4 = 0; i_4 < vertexCount; i_4++) - deform[i_4] = lastVertices[i_4] * alpha; - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_5 = 0; i_5 < vertexCount; i_5++) - deform[i_5] += (lastVertices[i_5] - deform[i_5]) * alpha; - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_6 = 0; i_6 < vertexCount; i_6++) - deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha; - } - else { - for (var i_7 = 0; i_7 < vertexCount; i_7++) - deform[i_7] += lastVertices[i_7] * alpha; - } - } - } - return; - } - var frame = Timeline.search1(frames, time); - var percent = this.getCurvePercent(time, frame); - var prevVertices = vertices[frame]; - var nextVertices = vertices[frame + 1]; - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_8 = 0; i_8 < vertexCount; i_8++) { - var prev = prevVertices[i_8]; - deform[i_8] += prev + (nextVertices[i_8] - prev) * percent - setupVertices[i_8]; - } - } - else { - for (var i_9 = 0; i_9 < vertexCount; i_9++) { - var prev = prevVertices[i_9]; - deform[i_9] += prev + (nextVertices[i_9] - prev) * percent; - } - } - } - else { - for (var i_10 = 0; i_10 < vertexCount; i_10++) { - var prev = prevVertices[i_10]; - deform[i_10] = prev + (nextVertices[i_10] - prev) * percent; - } - } - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_2 = slotAttachment; - if (!vertexAttachment_2.bones) { - var setupVertices = vertexAttachment_2.vertices; - for (var i_11 = 0; i_11 < vertexCount; i_11++) { - var prev = prevVertices[i_11], setup = setupVertices[i_11]; - deform[i_11] = setup + (prev + (nextVertices[i_11] - prev) * percent - setup) * alpha; - } - } - else { - for (var i_12 = 0; i_12 < vertexCount; i_12++) { - var prev = prevVertices[i_12]; - deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha; - } - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_13 = 0; i_13 < vertexCount; i_13++) { - var prev = prevVertices[i_13]; - deform[i_13] += (prev + (nextVertices[i_13] - prev) * percent - deform[i_13]) * alpha; - } - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_14 = 0; i_14 < vertexCount; i_14++) { - var prev = prevVertices[i_14]; - deform[i_14] += (prev + (nextVertices[i_14] - prev) * percent - setupVertices[i_14]) * alpha; - } - } - else { - for (var i_15 = 0; i_15 < vertexCount; i_15++) { - var prev = prevVertices[i_15]; - deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha; - } - } - } - } - }; - return DeformTimeline; - }(CurveTimeline)); - spine.DeformTimeline = DeformTimeline; - var EventTimeline = (function (_super) { - __extends(EventTimeline, _super); - function EventTimeline(frameCount) { - var _this = _super.call(this, frameCount, EventTimeline.propertyIds) || this; - _this.events = new Array(frameCount); - return _this; - } - EventTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - EventTimeline.prototype.setFrame = function (frame, event) { - this.frames[frame] = event.time; - this.events[frame] = event; - }; - EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - if (!firedEvents) - return; - var frames = this.frames; - var frameCount = this.frames.length; - if (lastTime > time) { - this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction); - lastTime = -1; - } - else if (lastTime >= frames[frameCount - 1]) - return; - if (time < frames[0]) - return; - var i = 0; - if (lastTime < frames[0]) - i = 0; - else { - i = Timeline.search1(frames, lastTime) + 1; - var frameTime = frames[i]; - while (i > 0) { - if (frames[i - 1] != frameTime) - break; - i--; - } - } - for (; i < frameCount && time >= frames[i]; i++) - firedEvents.push(this.events[i]); - }; - EventTimeline.propertyIds = ["" + Property.event]; - return EventTimeline; - }(Timeline)); - spine.EventTimeline = EventTimeline; - var DrawOrderTimeline = (function (_super) { - __extends(DrawOrderTimeline, _super); - function DrawOrderTimeline(frameCount) { - var _this = _super.call(this, frameCount, DrawOrderTimeline.propertyIds) || this; - _this.drawOrders = new Array(frameCount); - return _this; - } - DrawOrderTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DrawOrderTimeline.prototype.setFrame = function (frame, time, drawOrder) { - this.frames[frame] = time; - this.drawOrders[frame] = drawOrder; - }; - DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - if (time < this.frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - var drawOrderToSetupIndex = this.drawOrders[Timeline.search1(this.frames, time)]; - if (!drawOrderToSetupIndex) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - else { - var drawOrder = skeleton.drawOrder; - var slots = skeleton.slots; - for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) - drawOrder[i] = slots[drawOrderToSetupIndex[i]]; - } - }; - DrawOrderTimeline.propertyIds = ["" + Property.drawOrder]; - return DrawOrderTimeline; - }(Timeline)); - spine.DrawOrderTimeline = DrawOrderTimeline; - var IkConstraintTimeline = (function (_super) { - __extends(IkConstraintTimeline, _super); - function IkConstraintTimeline(frameCount, bezierCount, ikConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.ikConstraint + "|" + ikConstraintIndex - ]) || this; - _this.ikConstraintIndex = ikConstraintIndex; - return _this; - } - IkConstraintTimeline.prototype.getFrameEntries = function () { - return 6; - }; - IkConstraintTimeline.prototype.setFrame = function (frame, time, mix, softness, bendDirection, compress, stretch) { - frame *= 6; - this.frames[frame] = time; - this.frames[frame + 1] = mix; - this.frames[frame + 2] = softness; - this.frames[frame + 3] = bendDirection; - this.frames[frame + 4] = compress ? 1 : 0; - this.frames[frame + 5] = stretch ? 1 : 0; - }; - IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - return; - case MixBlend.first: - constraint.mix += (constraint.data.mix - constraint.mix) * alpha; - constraint.softness += (constraint.data.softness - constraint.softness) * alpha; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - return; - } - var mix = 0, softness = 0; - var i = Timeline.search(frames, time, 6); - var curveType = this.curves[i / 6]; - switch (curveType) { - case 0: - var before = frames[i]; - mix = frames[i + 1]; - softness = frames[i + 2]; - var t = (time - before) / (frames[i + 6] - before); - mix += (frames[i + 6 + 1] - mix) * t; - softness += (frames[i + 6 + 2] - softness) * t; - break; - case 1: - mix = frames[i + 1]; - softness = frames[i + 2]; - break; - default: - mix = this.getBezierValue(time, i, 1, curveType - 2); - softness = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - if (blend == MixBlend.setup) { - constraint.mix = constraint.data.mix + (mix - constraint.data.mix) * alpha; - constraint.softness = constraint.data.softness + (softness - constraint.data.softness) * alpha; - if (direction == MixDirection.mixOut) { - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - else { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; - } - } - else { - constraint.mix += (mix - constraint.mix) * alpha; - constraint.softness += (softness - constraint.softness) * alpha; - if (direction == MixDirection.mixIn) { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; - } - } - }; - return IkConstraintTimeline; - }(CurveTimeline)); - spine.IkConstraintTimeline = IkConstraintTimeline; - var TransformConstraintTimeline = (function (_super) { - __extends(TransformConstraintTimeline, _super); - function TransformConstraintTimeline(frameCount, bezierCount, transformConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.transformConstraint + "|" + transformConstraintIndex - ]) || this; - _this.transformConstraintIndex = transformConstraintIndex; - return _this; - } - TransformConstraintTimeline.prototype.getFrameEntries = function () { - return 7; - }; - TransformConstraintTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) { - var frames = this.frames; - frame *= 7; - frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; - frames[frame + 4] = mixScaleX; - frames[frame + 5] = mixScaleY; - frames[frame + 6] = mixShearY; - }; - TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - var data = constraint.data; - switch (blend) { - case MixBlend.setup: - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - constraint.mixScaleX = data.mixScaleX; - constraint.mixScaleY = data.mixScaleY; - constraint.mixShearY = data.mixShearY; - return; - case MixBlend.first: - constraint.mixRotate += (data.mixRotate - constraint.mixRotate) * alpha; - constraint.mixX += (data.mixX - constraint.mixX) * alpha; - constraint.mixY += (data.mixY - constraint.mixY) * alpha; - constraint.mixScaleX += (data.mixScaleX - constraint.mixScaleX) * alpha; - constraint.mixScaleY += (data.mixScaleY - constraint.mixScaleY) * alpha; - constraint.mixShearY += (data.mixShearY - constraint.mixShearY) * alpha; - } - return; - } - var rotate, x, y, scaleX, scaleY, shearY; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; - switch (curveType) { - case 0: - var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - rotate += (frames[i + 7 + 1] - rotate) * t; - x += (frames[i + 7 + 2] - x) * t; - y += (frames[i + 7 + 3] - y) * t; - scaleX += (frames[i + 7 + 4] - scaleX) * t; - scaleY += (frames[i + 7 + 5] - scaleY) * t; - shearY += (frames[i + 7 + 6] - shearY) * t; - break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; - break; - default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - scaleX = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - scaleY = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - shearY = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - } - if (blend == MixBlend.setup) { - var data = constraint.data; - constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; - constraint.mixX = data.mixX + (x - data.mixX) * alpha; - constraint.mixY = data.mixY + (y - data.mixY) * alpha; - constraint.mixScaleX = data.mixScaleX + (scaleX - data.mixScaleX) * alpha; - constraint.mixScaleY = data.mixScaleY + (scaleY - data.mixScaleY) * alpha; - constraint.mixShearY = data.mixShearY + (shearY - data.mixShearY) * alpha; - } - else { - constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; - constraint.mixX += (x - constraint.mixX) * alpha; - constraint.mixY += (y - constraint.mixY) * alpha; - constraint.mixScaleX += (scaleX - constraint.mixScaleX) * alpha; - constraint.mixScaleY += (scaleY - constraint.mixScaleY) * alpha; - constraint.mixShearY += (shearY - constraint.mixShearY) * alpha; - } - }; - return TransformConstraintTimeline; - }(CurveTimeline)); - spine.TransformConstraintTimeline = TransformConstraintTimeline; - var PathConstraintPositionTimeline = (function (_super) { - __extends(PathConstraintPositionTimeline, _super); - function PathConstraintPositionTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintPosition + "|" + pathConstraintIndex) || this; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.position = constraint.data.position; - return; - case MixBlend.first: - constraint.position += (constraint.data.position - constraint.position) * alpha; - } - return; - } - var position = this.getCurveValue(time); - if (blend == MixBlend.setup) - constraint.position = constraint.data.position + (position - constraint.data.position) * alpha; - else - constraint.position += (position - constraint.position) * alpha; - }; - return PathConstraintPositionTimeline; - }(CurveTimeline1)); - spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; - var PathConstraintSpacingTimeline = (function (_super) { - __extends(PathConstraintSpacingTimeline, _super); - function PathConstraintSpacingTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintSpacing + "|" + pathConstraintIndex) || this; - _this.pathConstraintIndex = 0; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.spacing = constraint.data.spacing; - return; - case MixBlend.first: - constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha; - } - return; - } - var spacing = this.getCurveValue(time); - if (blend == MixBlend.setup) - constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha; - else - constraint.spacing += (spacing - constraint.spacing) * alpha; - }; - return PathConstraintSpacingTimeline; - }(CurveTimeline1)); - spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; - var PathConstraintMixTimeline = (function (_super) { - __extends(PathConstraintMixTimeline, _super); - function PathConstraintMixTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.pathConstraintMix + "|" + pathConstraintIndex - ]) || this; - _this.pathConstraintIndex = 0; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintMixTimeline.prototype.getFrameEntries = function () { - return 4; - }; - PathConstraintMixTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY) { - var frames = this.frames; - frame <<= 2; - frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; - }; - PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.mixRotate = constraint.data.mixRotate; - constraint.mixX = constraint.data.mixX; - constraint.mixY = constraint.data.mixY; - return; - case MixBlend.first: - constraint.mixRotate += (constraint.data.mixRotate - constraint.mixRotate) * alpha; - constraint.mixX += (constraint.data.mixX - constraint.mixX) * alpha; - constraint.mixY += (constraint.data.mixY - constraint.mixY) * alpha; - } - return; - } - var rotate, x, y; - var i = Timeline.search(frames, time, 4); - var curveType = this.curves[i >> 2]; - switch (curveType) { - case 0: - var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - rotate += (frames[i + 4 + 1] - rotate) * t; - x += (frames[i + 4 + 2] - x) * t; - y += (frames[i + 4 + 3] - y) * t; - break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - break; - default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - } - if (blend == MixBlend.setup) { - var data = constraint.data; - constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; - constraint.mixX = data.mixX + (x - data.mixX) * alpha; - constraint.mixY = data.mixY + (y - data.mixY) * alpha; - } - else { - constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; - constraint.mixX += (x - constraint.mixX) * alpha; - constraint.mixY += (y - constraint.mixY) * alpha; - } - }; - return PathConstraintMixTimeline; - }(CurveTimeline)); - spine.PathConstraintMixTimeline = PathConstraintMixTimeline; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationState = (function () { - function AnimationState(data) { - this.tracks = new Array(); - this.timeScale = 1; - this.unkeyedState = 0; - this.events = new Array(); - this.listeners = new Array(); - this.queue = new EventQueue(this); - this.propertyIDs = new spine.StringSet(); - this.animationsChanged = false; - this.trackEntryPool = new spine.Pool(function () { return new TrackEntry(); }); - this.data = data; - } - AnimationState.emptyAnimation = function () { - if (!_emptyAnimation) - _emptyAnimation = new spine.Animation("", [], 0); - return _emptyAnimation; - }; - AnimationState.prototype.update = function (delta) { - delta *= this.timeScale; - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var current = tracks[i]; - if (!current) - continue; - current.animationLast = current.nextAnimationLast; - current.trackLast = current.nextTrackLast; - var currentDelta = delta * current.timeScale; - if (current.delay > 0) { - current.delay -= currentDelta; - if (current.delay > 0) - continue; - currentDelta = -current.delay; - current.delay = 0; - } - var next = current.next; - if (next) { - var nextTime = current.trackLast - next.delay; - if (nextTime >= 0) { - next.delay = 0; - next.trackTime += current.timeScale == 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale; - current.trackTime += currentDelta; - this.setCurrent(i, next, true); - while (next.mixingFrom) { - next.mixTime += delta; - next = next.mixingFrom; - } - continue; - } - } - else if (current.trackLast >= current.trackEnd && !current.mixingFrom) { - tracks[i] = null; - this.queue.end(current); - this.clearNext(current); - continue; - } - if (current.mixingFrom && this.updateMixingFrom(current, delta)) { - var from = current.mixingFrom; - current.mixingFrom = null; - if (from) - from.mixingTo = null; - while (from) { - this.queue.end(from); - from = from.mixingFrom; - } - } - current.trackTime += currentDelta; - } - this.queue.drain(); - }; - AnimationState.prototype.updateMixingFrom = function (to, delta) { - var from = to.mixingFrom; - if (!from) - return true; - var finished = this.updateMixingFrom(from, delta); - from.animationLast = from.nextAnimationLast; - from.trackLast = from.nextTrackLast; - if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { - if (from.totalAlpha == 0 || to.mixDuration == 0) { - to.mixingFrom = from.mixingFrom; - if (from.mixingFrom) - from.mixingFrom.mixingTo = to; - to.interruptAlpha = from.interruptAlpha; - this.queue.end(from); - } - return finished; - } - from.trackTime += delta * from.timeScale; - to.mixTime += delta; - return false; - }; - AnimationState.prototype.apply = function (skeleton) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - if (this.animationsChanged) - this._animationsChanged(); - var events = this.events; - var tracks = this.tracks; - var applied = false; - for (var i_16 = 0, n_1 = tracks.length; i_16 < n_1; i_16++) { - var current = tracks[i_16]; - if (!current || current.delay > 0) - continue; - applied = true; - var blend = i_16 == 0 ? spine.MixBlend.first : current.mixBlend; - var mix = current.alpha; - if (current.mixingFrom) - mix *= this.applyMixingFrom(current, skeleton, blend); - else if (current.trackTime >= current.trackEnd && !current.next) - mix = 0; - var animationLast = current.animationLast, animationTime = current.getAnimationTime(), applyTime = animationTime; - var applyEvents = events; - if (current.reverse) { - applyTime = current.animation.duration - applyTime; - applyEvents = null; - } - var timelines = current.animation.timelines; - var timelineCount = timelines.length; - if ((i_16 == 0 && mix == 1) || blend == spine.MixBlend.add) { - for (var ii = 0; ii < timelineCount; ii++) { - spine.Utils.webkit602BugfixHelper(mix, blend); - var timeline = timelines[ii]; - if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, applyTime, blend, true); - else - timeline.apply(skeleton, animationLast, applyTime, applyEvents, mix, blend, spine.MixDirection.mixIn); - } - } - else { - var timelineMode = current.timelineMode; - var firstFrame = current.timelinesRotation.length != timelineCount << 1; - if (firstFrame) - current.timelinesRotation.length = timelineCount << 1; - for (var ii = 0; ii < timelineCount; ii++) { - var timeline_1 = timelines[ii]; - var timelineBlend = timelineMode[ii] == SUBSEQUENT ? blend : spine.MixBlend.setup; - if (timeline_1 instanceof spine.RotateTimeline) { - this.applyRotateTimeline(timeline_1, skeleton, applyTime, mix, timelineBlend, current.timelinesRotation, ii << 1, firstFrame); - } - else if (timeline_1 instanceof spine.AttachmentTimeline) { - this.applyAttachmentTimeline(timeline_1, skeleton, applyTime, blend, true); - } - else { - spine.Utils.webkit602BugfixHelper(mix, blend); - timeline_1.apply(skeleton, animationLast, applyTime, applyEvents, mix, timelineBlend, spine.MixDirection.mixIn); - } - } - } - this.queueEvents(current, animationTime); - events.length = 0; - current.nextAnimationLast = animationTime; - current.nextTrackLast = current.trackTime; - } - var setupState = this.unkeyedState + SETUP; - var slots = skeleton.slots; - for (var i = 0, n = skeleton.slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.attachmentState == setupState) { - var attachmentName = slot.data.attachmentName; - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - } - } - this.unkeyedState += 2; - this.queue.drain(); - return applied; - }; - AnimationState.prototype.applyMixingFrom = function (to, skeleton, blend) { - var from = to.mixingFrom; - if (from.mixingFrom) - this.applyMixingFrom(from, skeleton, blend); - var mix = 0; - if (to.mixDuration == 0) { - mix = 1; - if (blend == spine.MixBlend.first) - blend = spine.MixBlend.setup; - } - else { - mix = to.mixTime / to.mixDuration; - if (mix > 1) - mix = 1; - if (blend != spine.MixBlend.first) - blend = from.mixBlend; - } - var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold; - var timelines = from.animation.timelines; - var timelineCount = timelines.length; - var alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix); - var animationLast = from.animationLast, animationTime = from.getAnimationTime(), applyTime = animationTime; - var events = null; - if (from.reverse) - applyTime = from.animation.duration - applyTime; - else if (mix < from.eventThreshold) - events = this.events; - if (blend == spine.MixBlend.add) { - for (var i = 0; i < timelineCount; i++) - timelines[i].apply(skeleton, animationLast, applyTime, events, alphaMix, blend, spine.MixDirection.mixOut); - } - else { - var timelineMode = from.timelineMode; - var timelineHoldMix = from.timelineHoldMix; - var firstFrame = from.timelinesRotation.length != timelineCount << 1; - if (firstFrame) - from.timelinesRotation.length = timelineCount << 1; - from.totalAlpha = 0; - for (var i = 0; i < timelineCount; i++) { - var timeline = timelines[i]; - var direction = spine.MixDirection.mixOut; - var timelineBlend = void 0; - var alpha = 0; - switch (timelineMode[i]) { - case SUBSEQUENT: - if (!drawOrder && timeline instanceof spine.DrawOrderTimeline) - continue; - timelineBlend = blend; - alpha = alphaMix; - break; - case FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaMix; - break; - case HOLD_SUBSEQUENT: - timelineBlend = blend; - alpha = alphaHold; - break; - case HOLD_FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaHold; - break; - default: - timelineBlend = spine.MixBlend.setup; - var holdMix = timelineHoldMix[i]; - alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration); - break; - } - from.totalAlpha += alpha; - if (timeline instanceof spine.RotateTimeline) - this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, timelineBlend, from.timelinesRotation, i << 1, firstFrame); - else if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, applyTime, timelineBlend, attachments); - else { - spine.Utils.webkit602BugfixHelper(alpha, blend); - if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup) - direction = spine.MixDirection.mixIn; - timeline.apply(skeleton, animationLast, applyTime, events, alpha, timelineBlend, direction); - } - } - } - if (to.mixDuration > 0) - this.queueEvents(from, animationTime); - this.events.length = 0; - from.nextAnimationLast = animationTime; - from.nextTrackLast = from.trackTime; - return mix; - }; - AnimationState.prototype.applyAttachmentTimeline = function (timeline, skeleton, time, blend, attachments) { - var slot = skeleton.slots[timeline.slotIndex]; - if (!slot.bone.active) - return; - if (time < timeline.frames[0]) { - if (blend == spine.MixBlend.setup || blend == spine.MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments); - } - else - this.setAttachment(skeleton, slot, timeline.attachmentNames[spine.Timeline.search1(timeline.frames, time)], attachments); - if (slot.attachmentState <= this.unkeyedState) - slot.attachmentState = this.unkeyedState + SETUP; - }; - AnimationState.prototype.setAttachment = function (skeleton, slot, attachmentName, attachments) { - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - if (attachments) - slot.attachmentState = this.unkeyedState + CURRENT; - }; - AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) { - if (firstFrame) - timelinesRotation[i] = 0; - if (alpha == 1) { - timeline.apply(skeleton, 0, time, null, 1, blend, spine.MixDirection.mixIn); - return; - } - var bone = skeleton.bones[timeline.boneIndex]; - if (!bone.active) - return; - var frames = timeline.frames; - var r1 = 0, r2 = 0; - if (time < frames[0]) { - switch (blend) { - case spine.MixBlend.setup: - bone.rotation = bone.data.rotation; - default: - return; - case spine.MixBlend.first: - r1 = bone.rotation; - r2 = bone.data.rotation; - } - } - else { - r1 = blend == spine.MixBlend.setup ? bone.data.rotation : bone.rotation; - r2 = bone.data.rotation + timeline.getCurveValue(time); - } - var total = 0, diff = r2 - r1; - diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360; - if (diff == 0) { - total = timelinesRotation[i]; - } - else { - var lastTotal = 0, lastDiff = 0; - if (firstFrame) { - lastTotal = 0; - lastDiff = diff; - } - else { - lastTotal = timelinesRotation[i]; - lastDiff = timelinesRotation[i + 1]; - } - var current = diff > 0, dir = lastTotal >= 0; - if (spine.MathUtils.signum(lastDiff) != spine.MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { - if (Math.abs(lastTotal) > 180) - lastTotal += 360 * spine.MathUtils.signum(lastTotal); - dir = current; - } - total = diff + lastTotal - lastTotal % 360; - if (dir != current) - total += 360 * spine.MathUtils.signum(lastTotal); - timelinesRotation[i] = total; - } - timelinesRotation[i + 1] = diff; - bone.rotation = r1 + total * alpha; - }; - AnimationState.prototype.queueEvents = function (entry, animationTime) { - var animationStart = entry.animationStart, animationEnd = entry.animationEnd; - var duration = animationEnd - animationStart; - var trackLastWrapped = entry.trackLast % duration; - var events = this.events; - var i = 0, n = events.length; - for (; i < n; i++) { - var event_1 = events[i]; - if (event_1.time < trackLastWrapped) - break; - if (event_1.time > animationEnd) - continue; - this.queue.event(entry, event_1); - } - var complete = false; - if (entry.loop) - complete = duration == 0 || trackLastWrapped > entry.trackTime % duration; - else - complete = animationTime >= animationEnd && entry.animationLast < animationEnd; - if (complete) - this.queue.complete(entry); - for (; i < n; i++) { - var event_2 = events[i]; - if (event_2.time < animationStart) - continue; - this.queue.event(entry, event_2); - } - }; - AnimationState.prototype.clearTracks = function () { - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) - this.clearTrack(i); - this.tracks.length = 0; - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.clearTrack = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return; - var current = this.tracks[trackIndex]; - if (!current) - return; - this.queue.end(current); - this.clearNext(current); - var entry = current; - while (true) { - var from = entry.mixingFrom; - if (!from) - break; - this.queue.end(from); - entry.mixingFrom = null; - entry.mixingTo = null; - entry = from; - } - this.tracks[current.trackIndex] = null; - this.queue.drain(); - }; - AnimationState.prototype.setCurrent = function (index, current, interrupt) { - var from = this.expandToIndex(index); - this.tracks[index] = current; - current.previous = null; - if (from) { - if (interrupt) - this.queue.interrupt(from); - current.mixingFrom = from; - from.mixingTo = current; - current.mixTime = 0; - if (from.mixingFrom && from.mixDuration > 0) - current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration); - from.timelinesRotation.length = 0; - } - this.queue.start(current); - }; - AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { - if (loop === void 0) { loop = false; } - var animation = this.data.skeletonData.findAnimation(animationName); - if (!animation) - throw new Error("Animation not found: " + animationName); - return this.setAnimationWith(trackIndex, animation, loop); - }; - AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { - if (loop === void 0) { loop = false; } - if (!animation) - throw new Error("animation cannot be null."); - var interrupt = true; - var current = this.expandToIndex(trackIndex); - if (current) { - if (current.nextTrackLast == -1) { - this.tracks[trackIndex] = current.mixingFrom; - this.queue.interrupt(current); - this.queue.end(current); - this.clearNext(current); - current = current.mixingFrom; - interrupt = false; - } - else - this.clearNext(current); - } - var entry = this.trackEntry(trackIndex, animation, loop, current); - this.setCurrent(trackIndex, entry, interrupt); - this.queue.drain(); - return entry; - }; - AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { - if (loop === void 0) { loop = false; } - if (delay === void 0) { delay = 0; } - var animation = this.data.skeletonData.findAnimation(animationName); - if (!animation) - throw new Error("Animation not found: " + animationName); - return this.addAnimationWith(trackIndex, animation, loop, delay); - }; - AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { - if (loop === void 0) { loop = false; } - if (delay === void 0) { delay = 0; } - if (!animation) - throw new Error("animation cannot be null."); - var last = this.expandToIndex(trackIndex); - if (last) { - while (last.next) - last = last.next; - } - var entry = this.trackEntry(trackIndex, animation, loop, last); - if (!last) { - this.setCurrent(trackIndex, entry, true); - this.queue.drain(); - } - else { - last.next = entry; - entry.previous = last; - if (delay <= 0) - delay += last.getTrackComplete() - entry.mixDuration; - } - entry.delay = delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) { - if (mixDuration === void 0) { mixDuration = 0; } - var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation(), false); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - return entry; - }; - AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) { - if (mixDuration === void 0) { mixDuration = 0; } - if (delay === void 0) { delay = 0; } - var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay <= 0 ? 1 : delay); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - if (delay <= 0 && entry.previous) - entry.delay = entry.previous.getTrackComplete() - entry.mixDuration + delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimations = function (mixDuration) { - if (mixDuration === void 0) { mixDuration = 0; } - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) { - var current = this.tracks[i]; - if (current) - this.setEmptyAnimation(current.trackIndex, mixDuration); - } - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.expandToIndex = function (index) { - if (index < this.tracks.length) - return this.tracks[index]; - spine.Utils.ensureArrayCapacity(this.tracks, index + 1, null); - this.tracks.length = index + 1; - return null; - }; - AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) { - var entry = this.trackEntryPool.obtain(); - entry.trackIndex = trackIndex; - entry.animation = animation; - entry.loop = loop; - entry.holdPrevious = false; - entry.eventThreshold = 0; - entry.attachmentThreshold = 0; - entry.drawOrderThreshold = 0; - entry.animationStart = 0; - entry.animationEnd = animation.duration; - entry.animationLast = -1; - entry.nextAnimationLast = -1; - entry.delay = 0; - entry.trackTime = 0; - entry.trackLast = -1; - entry.nextTrackLast = -1; - entry.trackEnd = Number.MAX_VALUE; - entry.timeScale = 1; - entry.alpha = 1; - entry.interruptAlpha = 1; - entry.mixTime = 0; - entry.mixDuration = !last ? 0 : this.data.getMix(last.animation, animation); - entry.mixBlend = spine.MixBlend.replace; - return entry; - }; - AnimationState.prototype.clearNext = function (entry) { - var next = entry.next; - while (next) { - this.queue.dispose(next); - next = next.next; - } - entry.next = null; - }; - AnimationState.prototype._animationsChanged = function () { - this.animationsChanged = false; - this.propertyIDs.clear(); - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var entry = tracks[i]; - if (!entry) - continue; - while (entry.mixingFrom) - entry = entry.mixingFrom; - do { - if (!entry.mixingTo || entry.mixBlend != spine.MixBlend.add) - this.computeHold(entry); - entry = entry.mixingTo; - } while (entry); - } - }; - AnimationState.prototype.computeHold = function (entry) { - var to = entry.mixingTo; - var timelines = entry.animation.timelines; - var timelinesCount = entry.animation.timelines.length; - var timelineMode = entry.timelineMode; - timelineMode.length = timelinesCount; - var timelineHoldMix = entry.timelineHoldMix; - timelineHoldMix.length = 0; - var propertyIDs = this.propertyIDs; - if (to && to.holdPrevious) { - for (var i = 0; i < timelinesCount; i++) - timelineMode[i] = propertyIDs.addAll(timelines[i].getPropertyIds()) ? HOLD_FIRST : HOLD_SUBSEQUENT; - return; - } - outer: for (var i = 0; i < timelinesCount; i++) { - var timeline = timelines[i]; - var ids = timeline.getPropertyIds(); - if (!propertyIDs.addAll(ids)) - timelineMode[i] = SUBSEQUENT; - else if (!to || timeline instanceof spine.AttachmentTimeline || timeline instanceof spine.DrawOrderTimeline - || timeline instanceof spine.EventTimeline || !to.animation.hasTimeline(ids)) { - timelineMode[i] = FIRST; - } - else { - for (var next = to.mixingTo; next; next = next.mixingTo) { - if (next.animation.hasTimeline(ids)) - continue; - if (entry.mixDuration > 0) { - timelineMode[i] = HOLD_MIX; - timelineHoldMix[i] = next; - continue outer; - } - break; - } - timelineMode[i] = HOLD_FIRST; - } - } - }; - AnimationState.prototype.getCurrent = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return null; - return this.tracks[trackIndex]; - }; - AnimationState.prototype.addListener = function (listener) { - if (!listener) - throw new Error("listener cannot be null."); - this.listeners.push(listener); - }; - AnimationState.prototype.removeListener = function (listener) { - var index = this.listeners.indexOf(listener); - if (index >= 0) - this.listeners.splice(index, 1); - }; - AnimationState.prototype.clearListeners = function () { - this.listeners.length = 0; - }; - AnimationState.prototype.clearListenerNotifications = function () { - this.queue.clear(); - }; - return AnimationState; - }()); - spine.AnimationState = AnimationState; - var TrackEntry = (function () { - function TrackEntry() { - this.mixBlend = spine.MixBlend.replace; - this.timelineMode = new Array(); - this.timelineHoldMix = new Array(); - this.timelinesRotation = new Array(); - } - TrackEntry.prototype.reset = function () { - this.next = null; - this.previous = null; - this.mixingFrom = null; - this.mixingTo = null; - this.animation = null; - this.listener = null; - this.timelineMode.length = 0; - this.timelineHoldMix.length = 0; - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.getAnimationTime = function () { - if (this.loop) { - var duration = this.animationEnd - this.animationStart; - if (duration == 0) - return this.animationStart; - return (this.trackTime % duration) + this.animationStart; - } - return Math.min(this.trackTime + this.animationStart, this.animationEnd); - }; - TrackEntry.prototype.setAnimationLast = function (animationLast) { - this.animationLast = animationLast; - this.nextAnimationLast = animationLast; - }; - TrackEntry.prototype.isComplete = function () { - return this.trackTime >= this.animationEnd - this.animationStart; - }; - TrackEntry.prototype.resetRotationDirections = function () { - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.getTrackComplete = function () { - var duration = this.animationEnd - this.animationStart; - if (duration != 0) { - if (this.loop) - return duration * (1 + ((this.trackTime / duration) | 0)); - if (this.trackTime < duration) - return duration; - } - return this.trackTime; - }; - return TrackEntry; - }()); - spine.TrackEntry = TrackEntry; - var EventQueue = (function () { - function EventQueue(animState) { - this.objects = []; - this.drainDisabled = false; - this.animState = animState; - } - EventQueue.prototype.start = function (entry) { - this.objects.push(EventType.start); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.interrupt = function (entry) { - this.objects.push(EventType.interrupt); - this.objects.push(entry); - }; - EventQueue.prototype.end = function (entry) { - this.objects.push(EventType.end); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.dispose = function (entry) { - this.objects.push(EventType.dispose); - this.objects.push(entry); - }; - EventQueue.prototype.complete = function (entry) { - this.objects.push(EventType.complete); - this.objects.push(entry); - }; - EventQueue.prototype.event = function (entry, event) { - this.objects.push(EventType.event); - this.objects.push(entry); - this.objects.push(event); - }; - EventQueue.prototype.drain = function () { - if (this.drainDisabled) - return; - this.drainDisabled = true; - var objects = this.objects; - var listeners = this.animState.listeners; - for (var i = 0; i < objects.length; i += 2) { - var type = objects[i]; - var entry = objects[i + 1]; - switch (type) { - case EventType.start: - if (entry.listener && entry.listener.start) - entry.listener.start(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].start) - listeners[ii].start(entry); - break; - case EventType.interrupt: - if (entry.listener && entry.listener.interrupt) - entry.listener.interrupt(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].interrupt) - listeners[ii].interrupt(entry); - break; - case EventType.end: - if (entry.listener && entry.listener.end) - entry.listener.end(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].end) - listeners[ii].end(entry); - case EventType.dispose: - if (entry.listener && entry.listener.dispose) - entry.listener.dispose(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].dispose) - listeners[ii].dispose(entry); - this.animState.trackEntryPool.free(entry); - break; - case EventType.complete: - if (entry.listener && entry.listener.complete) - entry.listener.complete(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].complete) - listeners[ii].complete(entry); - break; - case EventType.event: - var event_3 = objects[i++ + 2]; - if (entry.listener && entry.listener.event) - entry.listener.event(entry, event_3); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].event) - listeners[ii].event(entry, event_3); - break; - } - } - this.clear(); - this.drainDisabled = false; - }; - EventQueue.prototype.clear = function () { - this.objects.length = 0; - }; - return EventQueue; - }()); - spine.EventQueue = EventQueue; - var EventType; - (function (EventType) { - EventType[EventType["start"] = 0] = "start"; - EventType[EventType["interrupt"] = 1] = "interrupt"; - EventType[EventType["end"] = 2] = "end"; - EventType[EventType["dispose"] = 3] = "dispose"; - EventType[EventType["complete"] = 4] = "complete"; - EventType[EventType["event"] = 5] = "event"; - })(EventType = spine.EventType || (spine.EventType = {})); - var AnimationStateAdapter = (function () { - function AnimationStateAdapter() { - } - AnimationStateAdapter.prototype.start = function (entry) { - }; - AnimationStateAdapter.prototype.interrupt = function (entry) { - }; - AnimationStateAdapter.prototype.end = function (entry) { - }; - AnimationStateAdapter.prototype.dispose = function (entry) { - }; - AnimationStateAdapter.prototype.complete = function (entry) { - }; - AnimationStateAdapter.prototype.event = function (entry, event) { - }; - return AnimationStateAdapter; - }()); - spine.AnimationStateAdapter = AnimationStateAdapter; - var SUBSEQUENT = 0; - var FIRST = 1; - var HOLD_SUBSEQUENT = 2; - var HOLD_FIRST = 3; - var HOLD_MIX = 4; - var SETUP = 1; - var CURRENT = 2; - var _emptyAnimation = null; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationStateData = (function () { - function AnimationStateData(skeletonData) { - this.animationToMixTime = {}; - this.defaultMix = 0; - if (!skeletonData) - throw new Error("skeletonData cannot be null."); - this.skeletonData = skeletonData; - } - AnimationStateData.prototype.setMix = function (fromName, toName, duration) { - var from = this.skeletonData.findAnimation(fromName); - if (!from) - throw new Error("Animation not found: " + fromName); - var to = this.skeletonData.findAnimation(toName); - if (!to) - throw new Error("Animation not found: " + toName); - this.setMixWith(from, to, duration); - }; - AnimationStateData.prototype.setMixWith = function (from, to, duration) { - if (!from) - throw new Error("from cannot be null."); - if (!to) - throw new Error("to cannot be null."); - var key = from.name + "." + to.name; - this.animationToMixTime[key] = duration; - }; - AnimationStateData.prototype.getMix = function (from, to) { - var key = from.name + "." + to.name; - var value = this.animationToMixTime[key]; - return value === undefined ? this.defaultMix : value; - }; - return AnimationStateData; - }()); - spine.AnimationStateData = AnimationStateData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AssetManager = (function () { - function AssetManager(textureLoader, pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - this.assets = {}; - this.errors = {}; - this.toLoad = 0; - this.loaded = 0; - this.textureLoader = textureLoader; - this.pathPrefix = pathPrefix; - this.downloader = downloader || new Downloader(); - } - AssetManager.prototype.start = function (path) { - this.toLoad++; - return this.pathPrefix + path; - }; - AssetManager.prototype.success = function (callback, path, asset) { - this.toLoad--; - this.loaded++; - this.assets[path] = asset; - if (callback) - callback(path, asset); - }; - AssetManager.prototype.error = function (callback, path, message) { - this.toLoad--; - this.loaded++; - this.errors[path] = message; - if (callback) - callback(path, message); - }; - AssetManager.prototype.setRawDataURI = function (path, data) { - this.downloader.rawDataUris[this.pathPrefix + path] = data; - }; - AssetManager.prototype.loadBinary = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadBinary(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load binary " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadText = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadText(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load text " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadJson = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadJson(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load JSON " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadTexture = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); - var isWebWorker = !isBrowser && typeof importScripts !== 'undefined'; - if (isWebWorker) { - fetch(path, { mode: "cors" }).then(function (response) { - if (response.ok) - return response.blob(); - _this.error(error, path, "Couldn't load image: " + path); - return null; - }).then(function (blob) { - return blob ? createImageBitmap(blob, { premultiplyAlpha: "none", colorSpaceConversion: "none" }) : null; - }).then(function (bitmap) { - if (bitmap) - _this.success(success, path, _this.textureLoader(bitmap)); - }); - } - else { - var image_1 = new Image(); - image_1.crossOrigin = "anonymous"; - image_1.onload = function () { - _this.success(success, path, _this.textureLoader(image_1)); - }; - image_1.onerror = function () { - _this.error(error, path, "Couldn't load image: " + path); - }; - if (this.downloader.rawDataUris[path]) - path = this.downloader.rawDataUris[path]; - image_1.src = path; - } - }; - AssetManager.prototype.loadTextureAtlas = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - var index = path.lastIndexOf("/"); - var parent = index >= 0 ? path.substring(0, index + 1) : ""; - path = this.start(path); - this.downloader.downloadText(path, function (atlasText) { - try { - var atlas_1 = new spine.TextureAtlas(atlasText); - var toLoad_1 = atlas_1.pages.length, abort_1 = false; - var _loop_1 = function (page) { - _this.loadTexture(parent + page.name, function (imagePath, texture) { - if (!abort_1) { - page.setTexture(texture); - if (--toLoad_1 == 0) - _this.success(success, path, atlas_1); - } - }, function (imagePath, message) { - if (!abort_1) - _this.error(error, path, "Couldn't load texture atlas " + path + " page image: " + imagePath); - abort_1 = true; - }); - }; - for (var _i = 0, _a = atlas_1.pages; _i < _a.length; _i++) { - var page = _a[_i]; - _loop_1(page); - } - } - catch (e) { - _this.error(error, path, "Couldn't parse texture atlas " + path + ": " + e.message); - } - }, function (status, responseText) { - _this.error(error, path, "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.get = function (path) { - return this.assets[this.pathPrefix + path]; - }; - AssetManager.prototype.require = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset) - return asset; - var error = this.errors[path]; - throw Error("Asset not found: " + path + (error ? "\n" + error : "")); - }; - AssetManager.prototype.remove = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset.dispose) - asset.dispose(); - delete this.assets[path]; - return asset; - }; - AssetManager.prototype.removeAll = function () { - for (var key in this.assets) { - var asset = this.assets[key]; - if (asset.dispose) - asset.dispose(); - } - this.assets = {}; - }; - AssetManager.prototype.isLoadingComplete = function () { - return this.toLoad == 0; - }; - AssetManager.prototype.getToLoad = function () { - return this.toLoad; - }; - AssetManager.prototype.getLoaded = function () { - return this.loaded; - }; - AssetManager.prototype.dispose = function () { - this.removeAll(); - }; - AssetManager.prototype.hasErrors = function () { - return Object.keys(this.errors).length > 0; - }; - AssetManager.prototype.getErrors = function () { - return this.errors; - }; - return AssetManager; - }()); - spine.AssetManager = AssetManager; - var Downloader = (function () { - function Downloader() { - this.callbacks = {}; - this.rawDataUris = {}; - } - Downloader.prototype.downloadText = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.overrideMimeType("text/html"); - request.open("GET", url, true); - var done = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = done; - request.onerror = done; - request.send(); - }; - Downloader.prototype.downloadJson = function (url, success, error) { - this.downloadText(url, function (data) { - success(JSON.parse(data)); - }, error); - }; - Downloader.prototype.downloadBinary = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.open("GET", url, true); - request.responseType = "arraybuffer"; - var onerror = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = function () { - if (request.status == 200) - _this.finish(url, 200, new Uint8Array(request.response)); - else - onerror(); - }; - request.onerror = onerror; - request.send(); - }; - Downloader.prototype.start = function (url, success, error) { - var callbacks = this.callbacks[url]; - try { - if (callbacks) - return true; - this.callbacks[url] = callbacks = []; - } - finally { - callbacks.push(success, error); - } - }; - Downloader.prototype.finish = function (url, status, data) { - var callbacks = this.callbacks[url]; - delete this.callbacks[url]; - var args = status == 200 ? [data] : [status, data]; - for (var i = args.length - 1, n = callbacks.length; i < n; i += 2) - callbacks[i].apply(null, args); - }; - return Downloader; - }()); - spine.Downloader = Downloader; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AtlasAttachmentLoader = (function () { - function AtlasAttachmentLoader(atlas) { - this.atlas = atlas; - } - AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.RegionAttachment(name); - attachment.setRegion(region); - return attachment; - }; - AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.MeshAttachment(name); - attachment.region = region; - return attachment; - }; - AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { - return new spine.BoundingBoxAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { - return new spine.PathAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) { - return new spine.PointAttachment(name); - }; - AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) { - return new spine.ClippingAttachment(name); - }; - return AtlasAttachmentLoader; - }()); - spine.AtlasAttachmentLoader = AtlasAttachmentLoader; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Bone = (function () { - function Bone(data, skeleton, parent) { - this.children = new Array(); - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 0; - this.scaleY = 0; - this.shearX = 0; - this.shearY = 0; - this.ax = 0; - this.ay = 0; - this.arotation = 0; - this.ascaleX = 0; - this.ascaleY = 0; - this.ashearX = 0; - this.ashearY = 0; - this.a = 0; - this.b = 0; - this.c = 0; - this.d = 0; - this.worldY = 0; - this.worldX = 0; - this.sorted = false; - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.skeleton = skeleton; - this.parent = parent; - this.setToSetupPose(); - } - Bone.prototype.isActive = function () { - return this.active; - }; - Bone.prototype.update = function () { - this.updateWorldTransformWith(this.ax, this.ay, this.arotation, this.ascaleX, this.ascaleY, this.ashearX, this.ashearY); - }; - Bone.prototype.updateWorldTransform = function () { - this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); - }; - Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { - this.ax = x; - this.ay = y; - this.arotation = rotation; - this.ascaleX = scaleX; - this.ascaleY = scaleY; - this.ashearX = shearX; - this.ashearY = shearY; - var parent = this.parent; - if (!parent) { - var skeleton = this.skeleton; - var rotationY = rotation + 90 + shearY; - var sx = skeleton.scaleX; - var sy = skeleton.scaleY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX * sx; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY * sx; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX * sy; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY * sy; - this.worldX = x * sx + skeleton.x; - this.worldY = y * sy + skeleton.y; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - this.worldX = pa * x + pb * y + parent.worldX; - this.worldY = pc * x + pd * y + parent.worldY; - switch (this.data.transformMode) { - case spine.TransformMode.Normal: { - var rotationY = rotation + 90 + shearY; - var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * scaleY; - var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * scaleY; - this.a = pa * la + pb * lc; - this.b = pa * lb + pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - return; - } - case spine.TransformMode.OnlyTranslation: { - var rotationY = rotation + 90 + shearY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY; - break; - } - case spine.TransformMode.NoRotationOrReflection: { - var s = pa * pa + pc * pc; - var prx = 0; - if (s > 0.0001) { - s = Math.abs(pa * pd - pb * pc) / s; - pa /= this.skeleton.scaleX; - pc /= this.skeleton.scaleY; - pb = pc * s; - pd = pa * s; - prx = Math.atan2(pc, pa) * spine.MathUtils.radDeg; - } - else { - pa = 0; - pc = 0; - prx = 90 - Math.atan2(pd, pb) * spine.MathUtils.radDeg; - } - var rx = rotation + shearX - prx; - var ry = rotation + shearY - prx + 90; - var la = spine.MathUtils.cosDeg(rx) * scaleX; - var lb = spine.MathUtils.cosDeg(ry) * scaleY; - var lc = spine.MathUtils.sinDeg(rx) * scaleX; - var ld = spine.MathUtils.sinDeg(ry) * scaleY; - this.a = pa * la - pb * lc; - this.b = pa * lb - pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - break; - } - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: { - var cos = spine.MathUtils.cosDeg(rotation); - var sin = spine.MathUtils.sinDeg(rotation); - var za = (pa * cos + pb * sin) / this.skeleton.scaleX; - var zc = (pc * cos + pd * sin) / this.skeleton.scaleY; - var s = Math.sqrt(za * za + zc * zc); - if (s > 0.00001) - s = 1 / s; - za *= s; - zc *= s; - s = Math.sqrt(za * za + zc * zc); - if (this.data.transformMode == spine.TransformMode.NoScale - && (pa * pd - pb * pc < 0) != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0)) - s = -s; - var r = Math.PI / 2 + Math.atan2(zc, za); - var zb = Math.cos(r) * s; - var zd = Math.sin(r) * s; - var la = spine.MathUtils.cosDeg(shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(90 + shearY) * scaleY; - var lc = spine.MathUtils.sinDeg(shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(90 + shearY) * scaleY; - this.a = za * la + zb * lc; - this.b = za * lb + zb * ld; - this.c = zc * la + zd * lc; - this.d = zc * lb + zd * ld; - break; - } - } - this.a *= this.skeleton.scaleX; - this.b *= this.skeleton.scaleX; - this.c *= this.skeleton.scaleY; - this.d *= this.skeleton.scaleY; - }; - Bone.prototype.setToSetupPose = function () { - var data = this.data; - this.x = data.x; - this.y = data.y; - this.rotation = data.rotation; - this.scaleX = data.scaleX; - this.scaleY = data.scaleY; - this.shearX = data.shearX; - this.shearY = data.shearY; - }; - Bone.prototype.getWorldRotationX = function () { - return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldRotationY = function () { - return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldScaleX = function () { - return Math.sqrt(this.a * this.a + this.c * this.c); - }; - Bone.prototype.getWorldScaleY = function () { - return Math.sqrt(this.b * this.b + this.d * this.d); - }; - Bone.prototype.updateAppliedTransform = function () { - var parent = this.parent; - if (!parent) { - this.ax = this.worldX; - this.ay = this.worldY; - this.arotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c); - this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d); - this.ashearX = 0; - this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * spine.MathUtils.radDeg; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - var pid = 1 / (pa * pd - pb * pc); - var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; - this.ax = (dx * pd * pid - dy * pb * pid); - this.ay = (dy * pa * pid - dx * pc * pid); - var ia = pid * pd; - var id = pid * pa; - var ib = pid * pb; - var ic = pid * pc; - var ra = ia * this.a - ib * this.c; - var rb = ia * this.b - ib * this.d; - var rc = id * this.c - ic * this.a; - var rd = id * this.d - ic * this.b; - this.ashearX = 0; - this.ascaleX = Math.sqrt(ra * ra + rc * rc); - if (this.ascaleX > 0.0001) { - var det = ra * rd - rb * rc; - this.ascaleY = det / this.ascaleX; - this.ashearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; - this.arotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; - } - else { - this.ascaleX = 0; - this.ascaleY = Math.sqrt(rb * rb + rd * rd); - this.ashearY = 0; - this.arotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; - } - }; - Bone.prototype.worldToLocal = function (world) { - var invDet = 1 / (this.a * this.d - this.b * this.c); - var x = world.x - this.worldX, y = world.y - this.worldY; - world.x = x * this.d * invDet - y * this.b * invDet; - world.y = y * this.a * invDet - x * this.c * invDet; - return world; - }; - Bone.prototype.localToWorld = function (local) { - var x = local.x, y = local.y; - local.x = x * this.a + y * this.b + this.worldX; - local.y = x * this.c + y * this.d + this.worldY; - return local; - }; - Bone.prototype.worldToLocalRotation = function (worldRotation) { - var sin = spine.MathUtils.sinDeg(worldRotation), cos = spine.MathUtils.cosDeg(worldRotation); - return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * spine.MathUtils.radDeg + this.rotation - this.shearX; - }; - Bone.prototype.localToWorldRotation = function (localRotation) { - localRotation -= this.rotation - this.shearX; - var sin = spine.MathUtils.sinDeg(localRotation), cos = spine.MathUtils.cosDeg(localRotation); - return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.rotateWorld = function (degrees) { - var a = this.a, b = this.b, c = this.c, d = this.d; - var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); - this.a = cos * a - sin * c; - this.b = cos * b - sin * d; - this.c = sin * a + cos * c; - this.d = sin * b + cos * d; - }; - return Bone; - }()); - spine.Bone = Bone; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoneData = (function () { - function BoneData(index, name, parent) { - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 1; - this.scaleY = 1; - this.shearX = 0; - this.shearY = 0; - this.transformMode = TransformMode.Normal; - this.skinRequired = false; - this.color = new spine.Color(); - if (index < 0) - throw new Error("index must be >= 0."); - if (!name) - throw new Error("name cannot be null."); - this.index = index; - this.name = name; - this.parent = parent; - } - return BoneData; - }()); - spine.BoneData = BoneData; - var TransformMode; - (function (TransformMode) { - TransformMode[TransformMode["Normal"] = 0] = "Normal"; - TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; - TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; - TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; - TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; - })(TransformMode = spine.TransformMode || (spine.TransformMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var ConstraintData = (function () { - function ConstraintData(name, order, skinRequired) { - this.name = name; - this.order = order; - this.skinRequired = skinRequired; - } - return ConstraintData; - }()); - spine.ConstraintData = ConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Event = (function () { - function Event(time, data) { - if (!data) - throw new Error("data cannot be null."); - this.time = time; - this.data = data; - } - return Event; - }()); - spine.Event = Event; -})(spine || (spine = {})); -var spine; -(function (spine) { - var EventData = (function () { - function EventData(name) { - this.name = name; - } - return EventData; - }()); - spine.EventData = EventData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraint = (function () { - function IkConstraint(data, skeleton) { - this.bendDirection = 0; - this.compress = false; - this.stretch = false; - this.mix = 1; - this.softness = 0; - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mix = data.mix; - this.softness = data.softness; - this.bendDirection = data.bendDirection; - this.compress = data.compress; - this.stretch = data.stretch; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - IkConstraint.prototype.isActive = function () { - return this.active; - }; - IkConstraint.prototype.update = function () { - if (this.mix == 0) - return; - var target = this.target; - var bones = this.bones; - switch (bones.length) { - case 1: - this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix); - break; - case 2: - this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.data.uniform, this.softness, this.mix); - break; - } - }; - IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) { - var p = bone.parent; - var pa = p.a, pb = p.b, pc = p.c, pd = p.d; - var rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0; - switch (bone.data.transformMode) { - case spine.TransformMode.OnlyTranslation: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - break; - case spine.TransformMode.NoRotationOrReflection: - var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc); - var sa = pa / bone.skeleton.scaleX; - var sc = pc / bone.skeleton.scaleY; - pb = -sc * s * bone.skeleton.scaleX; - pd = sa * s * bone.skeleton.scaleY; - rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg; - default: - var x = targetX - p.worldX, y = targetY - p.worldY; - var d = pa * pd - pb * pc; - tx = (x * pd - y * pb) / d - bone.ax; - ty = (y * pa - x * pc) / d - bone.ay; - } - rotationIK += Math.atan2(ty, tx) * spine.MathUtils.radDeg; - if (bone.ascaleX < 0) - rotationIK += 180; - if (rotationIK > 180) - rotationIK -= 360; - else if (rotationIK < -180) - rotationIK += 360; - var sx = bone.ascaleX, sy = bone.ascaleY; - if (compress || stretch) { - switch (bone.data.transformMode) { - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - } - var b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty); - if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) { - var s = (dd / b - 1) * alpha + 1; - sx *= s; - if (uniform) - sy *= s; - } - } - bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY); - }; - IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, uniform, softness, alpha) { - var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, sx = psx, sy = psy, csx = child.ascaleX; - var os1 = 0, os2 = 0, s2 = 0; - if (psx < 0) { - psx = -psx; - os1 = 180; - s2 = -1; - } - else { - os1 = 0; - s2 = 1; - } - if (psy < 0) { - psy = -psy; - s2 = -s2; - } - if (csx < 0) { - csx = -csx; - os2 = 180; - } - else - os2 = 0; - var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; - var u = Math.abs(psx - psy) <= 0.0001; - if (!u || stretch) { - cy = 0; - cwx = a * cx + parent.worldX; - cwy = c * cx + parent.worldY; - } - else { - cy = child.ay; - cwx = a * cx + b * cy + parent.worldX; - cwy = c * cx + d * cy + parent.worldY; - } - var pp = parent.parent; - a = pp.a; - b = pp.b; - c = pp.c; - d = pp.d; - var id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY; - var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; - var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2; - if (l1 < 0.0001) { - this.apply1(parent, targetX, targetY, false, stretch, false, alpha); - child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - return; - } - x = targetX - pp.worldX; - y = targetY - pp.worldY; - var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; - var dd = tx * tx + ty * ty; - if (softness != 0) { - softness *= psx * (csx + 1) * 0.5; - var td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness; - if (sd > 0) { - var p = Math.min(1, sd / (softness * 2)) - 1; - p = (sd - softness * (1 - p * p)) / td; - tx -= p * tx; - ty -= p * ty; - dd = tx * tx + ty * ty; - } - } - outer: if (u) { - l2 *= psx; - var cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2); - if (cos < -1) { - cos = -1; - a2 = Math.PI * bendDir; - } - else if (cos > 1) { - cos = 1; - a2 = 0; - if (stretch) { - a = (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1; - sx *= a; - if (uniform) - sy *= a; - } - } - else - a2 = Math.acos(cos) * bendDir; - a = l1 + l2 * cos; - b = l2 * Math.sin(a2); - a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); - } - else { - a = psx * l2; - b = psy * l2; - var aa = a * a, bb = b * b, ta = Math.atan2(ty, tx); - c = bb * l1 * l1 + aa * dd - aa * bb; - var c1 = -2 * bb * l1, c2 = bb - aa; - d = c1 * c1 - 4 * c2 * c; - if (d >= 0) { - var q = Math.sqrt(d); - if (c1 < 0) - q = -q; - q = -(c1 + q) * 0.5; - var r0 = q / c2, r1 = c / q; - var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; - if (r * r <= dd) { - y = Math.sqrt(dd - r * r) * bendDir; - a1 = ta - Math.atan2(y, r); - a2 = Math.atan2(y / psy, (r - l1) / psx); - break outer; - } - } - var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; - var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; - c = -a * l1 / (aa - bb); - if (c >= -1 && c <= 1) { - c = Math.acos(c); - x = a * Math.cos(c) + l1; - y = b * Math.sin(c); - d = x * x + y * y; - if (d < minDist) { - minAngle = c; - minDist = d; - minX = x; - minY = y; - } - if (d > maxDist) { - maxAngle = c; - maxDist = d; - maxX = x; - maxY = y; - } - } - if (dd <= (minDist + maxDist) * 0.5) { - a1 = ta - Math.atan2(minY * bendDir, minX); - a2 = minAngle * bendDir; - } - else { - a1 = ta - Math.atan2(maxY * bendDir, maxX); - a2 = maxAngle * bendDir; - } - } - var os = Math.atan2(cy, cx) * s2; - var rotation = parent.arotation; - a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; - if (a1 > 180) - a1 -= 360; - else if (a1 < -180) - a1 += 360; - parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, sy, 0, 0); - rotation = child.arotation; - a2 = ((a2 + os) * spine.MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; - if (a2 > 180) - a2 -= 360; - else if (a2 < -180) - a2 += 360; - child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - }; - return IkConstraint; - }()); - spine.IkConstraint = IkConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraintData = (function (_super) { - __extends(IkConstraintData, _super); - function IkConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.bendDirection = 1; - _this.compress = false; - _this.stretch = false; - _this.uniform = false; - _this.mix = 1; - _this.softness = 0; - return _this; - } - return IkConstraintData; - }(spine.ConstraintData)); - spine.IkConstraintData = IkConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraint = (function () { - function PathConstraint(data, skeleton) { - this.position = 0; - this.spacing = 0; - this.mixRotate = 0; - this.mixX = 0; - this.mixY = 0; - this.spaces = new Array(); - this.positions = new Array(); - this.world = new Array(); - this.curves = new Array(); - this.lengths = new Array(); - this.segments = new Array(); - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0, n = data.bones.length; i < n; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findSlot(data.target.name); - this.position = data.position; - this.spacing = data.spacing; - this.mixRotate = data.mixRotate; - this.mixX = data.mixX; - this.mixY = data.mixY; - } - PathConstraint.prototype.isActive = function () { - return this.active; - }; - PathConstraint.prototype.update = function () { - var attachment = this.target.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - return; - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY; - if (mixRotate == 0 && mixX == 0 && mixY == 0) - return; - var data = this.data; - var tangents = data.rotateMode == spine.RotateMode.Tangent, scale = data.rotateMode == spine.RotateMode.ChainScale; - var bones = this.bones; - var boneCount = bones.length, spacesCount = tangents ? boneCount : boneCount + 1; - var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = spine.Utils.setArraySize(this.lengths, boneCount) : null; - var spacing = this.spacing; - switch (data.spacingMode) { - case spine.SpacingMode.Percent: - if (scale) { - for (var i = 0, n = spacesCount - 1; i < n; i++) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) - lengths[i] = 0; - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - lengths[i] = Math.sqrt(x * x + y * y); - } - } - } - spine.Utils.arrayFill(spaces, 1, spacesCount, spacing); - break; - case spine.SpacingMode.Proportional: - var sum = 0; - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) { - if (scale) - lengths[i] = 0; - spaces[++i] = spacing; - } - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_1 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_1; - spaces[++i] = length_1; - sum += length_1; - } - } - if (sum > 0) { - sum = spacesCount / sum * spacing; - for (var i = 1; i < spacesCount; i++) - spaces[i] *= sum; - } - break; - default: - var lengthSpacing = data.spacingMode == spine.SpacingMode.Length; - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) { - if (scale) - lengths[i] = 0; - spaces[++i] = spacing; - } - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_2 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_2; - spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_2 / setupLength; - } - } - } - var positions = this.computeWorldPositions(attachment, spacesCount, tangents); - var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; - var tip = false; - if (offsetRotation == 0) - tip = data.rotateMode == spine.RotateMode.Chain; - else { - tip = false; - var p = this.target.bone; - offsetRotation *= p.a * p.d - p.b * p.c > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - } - for (var i = 0, p = 3; i < boneCount; i++, p += 3) { - var bone = bones[i]; - bone.worldX += (boneX - bone.worldX) * mixX; - bone.worldY += (boneY - bone.worldY) * mixY; - var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; - if (scale) { - var length_3 = lengths[i]; - if (length_3 != 0) { - var s = (Math.sqrt(dx * dx + dy * dy) / length_3 - 1) * mixRotate + 1; - bone.a *= s; - bone.c *= s; - } - } - boneX = x; - boneY = y; - if (mixRotate > 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; - if (tangents) - r = positions[p - 1]; - else if (spaces[i + 1] == 0) - r = positions[p + 2]; - else - r = Math.atan2(dy, dx); - r -= Math.atan2(c, a); - if (tip) { - cos = Math.cos(r); - sin = Math.sin(r); - var length_4 = bone.data.length; - boneX += (length_4 * (cos * a - sin * c) - dx) * mixRotate; - boneY += (length_4 * (sin * a + cos * c) - dy) * mixRotate; - } - else { - r += offsetRotation; - } - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - cos = Math.cos(r); - sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - bone.updateAppliedTransform(); - } - }; - PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents) { - var target = this.target; - var position = this.position; - var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; - var closed = path.closed; - var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; - if (!path.constantSpeed) { - var lengths = path.lengths; - curveCount -= closed ? 1 : 2; - var pathLength_1 = lengths[curveCount]; - if (this.data.positionMode == spine.PositionMode.Percent) - position *= pathLength_1; - var multiplier_1; - switch (this.data.spacingMode) { - case spine.SpacingMode.Percent: - multiplier_1 = pathLength_1; - break; - case spine.SpacingMode.Proportional: - multiplier_1 = pathLength_1 / spacesCount; - break; - default: - multiplier_1 = 1; - } - world = spine.Utils.setArraySize(this.world, 8); - for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i] * multiplier_1; - position += space; - var p = position; - if (closed) { - p %= pathLength_1; - if (p < 0) - p += pathLength_1; - curve = 0; - } - else if (p < 0) { - if (prevCurve != PathConstraint.BEFORE) { - prevCurve = PathConstraint.BEFORE; - path.computeWorldVertices(target, 2, 4, world, 0, 2); - } - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength_1) { - if (prevCurve != PathConstraint.AFTER) { - prevCurve = PathConstraint.AFTER; - path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2); - } - this.addAfterPosition(p - pathLength_1, world, 0, out, o); - continue; - } - for (;; curve++) { - var length_5 = lengths[curve]; - if (p > length_5) - continue; - if (curve == 0) - p /= length_5; - else { - var prev = lengths[curve - 1]; - p = (p - prev) / (length_5 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - if (closed && curve == curveCount) { - path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2); - path.computeWorldVertices(target, 0, 4, world, 4, 2); - } - else - path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2); - } - this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); - } - return out; - } - if (closed) { - verticesLength += 2; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2); - path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2); - world[verticesLength - 2] = world[0]; - world[verticesLength - 1] = world[1]; - } - else { - curveCount--; - verticesLength -= 4; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); - } - var curves = spine.Utils.setArraySize(this.curves, curveCount); - var pathLength = 0; - var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; - var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; - for (var i = 0, w = 2; i < curveCount; i++, w += 6) { - cx1 = world[w]; - cy1 = world[w + 1]; - cx2 = world[w + 2]; - cy2 = world[w + 3]; - x2 = world[w + 4]; - y2 = world[w + 5]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; - tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - curves[i] = pathLength; - x1 = x2; - y1 = y2; - } - if (this.data.positionMode == spine.PositionMode.Percent) - position *= pathLength; - var multiplier; - switch (this.data.spacingMode) { - case spine.SpacingMode.Percent: - multiplier = pathLength; - break; - case spine.SpacingMode.Proportional: - multiplier = pathLength / spacesCount; - break; - default: - multiplier = 1; - } - var segments = this.segments; - var curveLength = 0; - for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i] * multiplier; - position += space; - var p = position; - if (closed) { - p %= pathLength; - if (p < 0) - p += pathLength; - curve = 0; - } - else if (p < 0) { - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength) { - this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); - continue; - } - for (;; curve++) { - var length_6 = curves[curve]; - if (p > length_6) - continue; - if (curve == 0) - p /= length_6; - else { - var prev = curves[curve - 1]; - p = (p - prev) / (length_6 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - var ii = curve * 6; - x1 = world[ii]; - y1 = world[ii + 1]; - cx1 = world[ii + 2]; - cy1 = world[ii + 3]; - cx2 = world[ii + 4]; - cy2 = world[ii + 5]; - x2 = world[ii + 6]; - y2 = world[ii + 7]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.03; - tmpy = (y1 - cy1 * 2 + cy2) * 0.03; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; - curveLength = Math.sqrt(dfx * dfx + dfy * dfy); - segments[0] = curveLength; - for (ii = 1; ii < 8; ii++) { - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[ii] = curveLength; - } - dfx += ddfx; - dfy += ddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[8] = curveLength; - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[9] = curveLength; - segment = 0; - } - p *= curveLength; - for (;; segment++) { - var length_7 = segments[segment]; - if (p > length_7) - continue; - if (segment == 0) - p /= length_7; - else { - var prev = segments[segment - 1]; - p = segment + (p - prev) / (length_7 - prev); - } - break; - } - this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); - } - return out; - }; - PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { - var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { - var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { - if (p == 0 || isNaN(p)) { - out[o] = x1; - out[o + 1] = y1; - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - return; - } - var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; - var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; - var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; - out[o] = x; - out[o + 1] = y; - if (tangents) { - if (p < 0.001) - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - else - out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); - } - }; - PathConstraint.NONE = -1; - PathConstraint.BEFORE = -2; - PathConstraint.AFTER = -3; - PathConstraint.epsilon = 0.00001; - return PathConstraint; - }()); - spine.PathConstraint = PathConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraintData = (function (_super) { - __extends(PathConstraintData, _super); - function PathConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.mixRotate = 0; - _this.mixX = 0; - _this.mixY = 0; - return _this; - } - return PathConstraintData; - }(spine.ConstraintData)); - spine.PathConstraintData = PathConstraintData; - var PositionMode; - (function (PositionMode) { - PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; - PositionMode[PositionMode["Percent"] = 1] = "Percent"; - })(PositionMode = spine.PositionMode || (spine.PositionMode = {})); - var SpacingMode; - (function (SpacingMode) { - SpacingMode[SpacingMode["Length"] = 0] = "Length"; - SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; - SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; - SpacingMode[SpacingMode["Proportional"] = 3] = "Proportional"; - })(SpacingMode = spine.SpacingMode || (spine.SpacingMode = {})); - var RotateMode; - (function (RotateMode) { - RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; - RotateMode[RotateMode["Chain"] = 1] = "Chain"; - RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; - })(RotateMode = spine.RotateMode || (spine.RotateMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Skeleton = (function () { - function Skeleton(data) { - this._updateCache = new Array(); - this.time = 0; - this.scaleX = 1; - this.scaleY = 1; - this.x = 0; - this.y = 0; - if (!data) - throw new Error("data cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) { - var boneData = data.bones[i]; - var bone = void 0; - if (!boneData.parent) - bone = new spine.Bone(boneData, this, null); - else { - var parent_1 = this.bones[boneData.parent.index]; - bone = new spine.Bone(boneData, this, parent_1); - parent_1.children.push(bone); - } - this.bones.push(bone); - } - this.slots = new Array(); - this.drawOrder = new Array(); - for (var i = 0; i < data.slots.length; i++) { - var slotData = data.slots[i]; - var bone = this.bones[slotData.boneData.index]; - var slot = new spine.Slot(slotData, bone); - this.slots.push(slot); - this.drawOrder.push(slot); - } - this.ikConstraints = new Array(); - for (var i = 0; i < data.ikConstraints.length; i++) { - var ikConstraintData = data.ikConstraints[i]; - this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); - } - this.transformConstraints = new Array(); - for (var i = 0; i < data.transformConstraints.length; i++) { - var transformConstraintData = data.transformConstraints[i]; - this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); - } - this.pathConstraints = new Array(); - for (var i = 0; i < data.pathConstraints.length; i++) { - var pathConstraintData = data.pathConstraints[i]; - this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); - } - this.color = new spine.Color(1, 1, 1, 1); - this.updateCache(); - } - Skeleton.prototype.updateCache = function () { - var updateCache = this._updateCache; - updateCache.length = 0; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - bone.sorted = bone.data.skinRequired; - bone.active = !bone.sorted; - } - if (this.skin) { - var skinBones = this.skin.bones; - for (var i = 0, n = this.skin.bones.length; i < n; i++) { - var bone = this.bones[skinBones[i].index]; - do { - bone.sorted = false; - bone.active = true; - bone = bone.parent; - } while (bone); - } - } - var ikConstraints = this.ikConstraints; - var transformConstraints = this.transformConstraints; - var pathConstraints = this.pathConstraints; - var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length; - var constraintCount = ikCount + transformCount + pathCount; - outer: for (var i = 0; i < constraintCount; i++) { - for (var ii = 0; ii < ikCount; ii++) { - var constraint = ikConstraints[ii]; - if (constraint.data.order == i) { - this.sortIkConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < transformCount; ii++) { - var constraint = transformConstraints[ii]; - if (constraint.data.order == i) { - this.sortTransformConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < pathCount; ii++) { - var constraint = pathConstraints[ii]; - if (constraint.data.order == i) { - this.sortPathConstraint(constraint); - continue outer; - } - } - } - for (var i = 0, n = bones.length; i < n; i++) - this.sortBone(bones[i]); - }; - Skeleton.prototype.sortIkConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var target = constraint.target; - this.sortBone(target); - var constrained = constraint.bones; - var parent = constrained[0]; - this.sortBone(parent); - if (constrained.length == 1) { - this._updateCache.push(constraint); - this.sortReset(parent.children); - } - else { - var child = constrained[constrained.length - 1]; - this.sortBone(child); - this._updateCache.push(constraint); - this.sortReset(parent.children); - child.sorted = true; - } - }; - Skeleton.prototype.sortPathConstraint = function (constraint) { - constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var slot = constraint.target; - var slotIndex = slot.data.index; - var slotBone = slot.bone; - if (this.skin) - this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); - if (this.data.defaultSkin && this.data.defaultSkin != this.skin) - this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); - for (var i = 0, n = this.data.skins.length; i < n; i++) - this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone); - var attachment = slot.getAttachment(); - if (attachment instanceof spine.PathAttachment) - this.sortPathConstraintAttachmentWith(attachment, slotBone); - var constrained = constraint.bones; - var boneCount = constrained.length; - for (var i = 0; i < boneCount; i++) - this.sortBone(constrained[i]); - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortTransformConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - this.sortBone(constraint.target); - var constrained = constraint.bones; - var boneCount = constrained.length; - if (constraint.data.local) { - for (var i = 0; i < boneCount; i++) { - var child = constrained[i]; - this.sortBone(child.parent); - this.sortBone(child); - } - } - else { - for (var i = 0; i < boneCount; i++) { - this.sortBone(constrained[i]); - } - } - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { - var attachments = skin.attachments[slotIndex]; - if (!attachments) - return; - for (var key in attachments) { - this.sortPathConstraintAttachmentWith(attachments[key], slotBone); - } - }; - Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { - if (!(attachment instanceof spine.PathAttachment)) - return; - var pathBones = attachment.bones; - if (!pathBones) - this.sortBone(slotBone); - else { - var bones = this.bones; - for (var i = 0, n = pathBones.length; i < n;) { - var nn = pathBones[i++]; - nn += i; - while (i < nn) - this.sortBone(bones[pathBones[i++]]); - } - } - }; - Skeleton.prototype.sortBone = function (bone) { - if (bone.sorted) - return; - var parent = bone.parent; - if (parent) - this.sortBone(parent); - bone.sorted = true; - this._updateCache.push(bone); - }; - Skeleton.prototype.sortReset = function (bones) { - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (!bone.active) - continue; - if (bone.sorted) - this.sortReset(bone.children); - bone.sorted = false; - } - }; - Skeleton.prototype.updateWorldTransform = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - bone.ax = bone.x; - bone.ay = bone.y; - bone.arotation = bone.rotation; - bone.ascaleX = bone.scaleX; - bone.ascaleY = bone.scaleY; - bone.ashearX = bone.shearX; - bone.ashearY = bone.shearY; - } - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) - updateCache[i].update(); - }; - Skeleton.prototype.updateWorldTransformWith = function (parent) { - var rootBone = this.getRootBone(); - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - rootBone.worldX = pa * this.x + pb * this.y + parent.worldX; - rootBone.worldY = pc * this.x + pd * this.y + parent.worldY; - var rotationY = rootBone.rotation + 90 + rootBone.shearY; - var la = spine.MathUtils.cosDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * rootBone.scaleY; - var lc = spine.MathUtils.sinDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * rootBone.scaleY; - rootBone.a = (pa * la + pb * lc) * this.scaleX; - rootBone.b = (pa * lb + pb * ld) * this.scaleX; - rootBone.c = (pc * la + pd * lc) * this.scaleY; - rootBone.d = (pc * lb + pd * ld) * this.scaleY; - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) { - var updatable = updateCache[i]; - if (updatable != rootBone) - updatable.update(); - } - }; - Skeleton.prototype.setToSetupPose = function () { - this.setBonesToSetupPose(); - this.setSlotsToSetupPose(); - }; - Skeleton.prototype.setBonesToSetupPose = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - bones[i].setToSetupPose(); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - var data = constraint.data; - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - constraint.mixScaleX = data.mixScaleX; - constraint.mixScaleY = data.mixScaleY; - constraint.mixShearY = data.mixShearY; - } - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - var data = constraint.data; - constraint.position = data.position; - constraint.spacing = data.spacing; - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - } - }; - Skeleton.prototype.setSlotsToSetupPose = function () { - var slots = this.slots; - spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); - for (var i = 0, n = slots.length; i < n; i++) - slots[i].setToSetupPose(); - }; - Skeleton.prototype.getRootBone = function () { - if (this.bones.length == 0) - return null; - return this.bones[0]; - }; - Skeleton.prototype.findBone = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.data.name == boneName) - return bone; - } - return null; - }; - Skeleton.prototype.findBoneIndex = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].data.name == boneName) - return i; - return -1; - }; - Skeleton.prototype.findSlot = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) - return slot; - } - return null; - }; - Skeleton.prototype.findSlotIndex = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].data.name == slotName) - return i; - return -1; - }; - Skeleton.prototype.setSkinByName = function (skinName) { - var skin = this.data.findSkin(skinName); - if (!skin) - throw new Error("Skin not found: " + skinName); - this.setSkin(skin); - }; - Skeleton.prototype.setSkin = function (newSkin) { - if (newSkin == this.skin) - return; - if (newSkin) { - if (this.skin) - newSkin.attachAll(this, this.skin); - else { - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var name_1 = slot.data.attachmentName; - if (name_1) { - var attachment = newSkin.getAttachment(i, name_1); - if (attachment) - slot.setAttachment(attachment); - } - } - } - } - this.skin = newSkin; - this.updateCache(); - }; - Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { - return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); - }; - Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { - if (!attachmentName) - throw new Error("attachmentName cannot be null."); - if (this.skin) { - var attachment = this.skin.getAttachment(slotIndex, attachmentName); - if (attachment) - return attachment; - } - if (this.data.defaultSkin) - return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); - return null; - }; - Skeleton.prototype.setAttachment = function (slotName, attachmentName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) { - var attachment = null; - if (attachmentName) { - attachment = this.getAttachment(i, attachmentName); - if (!attachment) - throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); - } - slot.setAttachment(attachment); - return; - } - } - throw new Error("Slot not found: " + slotName); - }; - Skeleton.prototype.findIkConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var ikConstraint = ikConstraints[i]; - if (ikConstraint.data.name == constraintName) - return ikConstraint; - } - return null; - }; - Skeleton.prototype.findTransformConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.findPathConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.getBounds = function (offset, size, temp) { - if (temp === void 0) { temp = new Array(2); } - if (!offset) - throw new Error("offset cannot be null."); - if (!size) - throw new Error("size cannot be null."); - var drawOrder = this.drawOrder; - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - if (!slot.bone.active) - continue; - var verticesLength = 0; - var vertices = null; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - verticesLength = 8; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - attachment.computeWorldVertices(slot.bone, vertices, 0, 2); - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - verticesLength = mesh.worldVerticesLength; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2); - } - if (vertices) { - for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - } - offset.set(minX, minY); - size.set(maxX - minX, maxY - minY); - }; - Skeleton.prototype.update = function (delta) { - this.time += delta; - }; - return Skeleton; - }()); - spine.Skeleton = Skeleton; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBinary = (function () { - function SkeletonBinary(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonBinary.prototype.readSkeletonData = function (binary) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - skeletonData.name = ""; - var input = new BinaryInput(binary); - var lowHash = input.readInt32(); - var highHash = input.readInt32(); - skeletonData.hash = highHash == 0 && lowHash == 0 ? null : highHash.toString(16) + lowHash.toString(16); - skeletonData.version = input.readString(); - skeletonData.x = input.readFloat(); - skeletonData.y = input.readFloat(); - skeletonData.width = input.readFloat(); - skeletonData.height = input.readFloat(); - var nonessential = input.readBoolean(); - if (nonessential) { - skeletonData.fps = input.readFloat(); - skeletonData.imagesPath = input.readString(); - skeletonData.audioPath = input.readString(); - } - var n = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) - input.strings.push(input.readString()); - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var name_2 = input.readString(); - var parent_2 = i == 0 ? null : skeletonData.bones[input.readInt(true)]; - var data = new spine.BoneData(i, name_2, parent_2); - data.rotation = input.readFloat(); - data.x = input.readFloat() * scale; - data.y = input.readFloat() * scale; - data.scaleX = input.readFloat(); - data.scaleY = input.readFloat(); - data.shearX = input.readFloat(); - data.shearY = input.readFloat(); - data.length = input.readFloat() * scale; - data.transformMode = input.readInt(true); - data.skinRequired = input.readBoolean(); - if (nonessential) - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - skeletonData.bones.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var slotName = input.readString(); - var boneData = skeletonData.bones[input.readInt(true)]; - var data = new spine.SlotData(i, slotName, boneData); - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - var darkColor = input.readInt32(); - if (darkColor != -1) - spine.Color.rgb888ToColor(data.darkColor = new spine.Color(), darkColor); - data.attachmentName = input.readStringRef(); - data.blendMode = input.readInt(true); - skeletonData.slots.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.IkConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.mix = input.readFloat(); - data.softness = input.readFloat() * scale; - data.bendDirection = input.readByte(); - data.compress = input.readBoolean(); - data.stretch = input.readBoolean(); - data.uniform = input.readBoolean(); - skeletonData.ikConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.TransformConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.local = input.readBoolean(); - data.relative = input.readBoolean(); - data.offsetRotation = input.readFloat(); - data.offsetX = input.readFloat() * scale; - data.offsetY = input.readFloat() * scale; - data.offsetScaleX = input.readFloat(); - data.offsetScaleY = input.readFloat(); - data.offsetShearY = input.readFloat(); - data.mixRotate = input.readFloat(); - data.mixX = input.readFloat(); - data.mixY = input.readFloat(); - data.mixScaleX = input.readFloat(); - data.mixScaleY = input.readFloat(); - data.mixShearY = input.readFloat(); - skeletonData.transformConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.PathConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.slots[input.readInt(true)]; - data.positionMode = input.readInt(true); - data.spacingMode = input.readInt(true); - data.rotateMode = input.readInt(true); - data.offsetRotation = input.readFloat(); - data.position = input.readFloat(); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = input.readFloat(); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.mixRotate = input.readFloat(); - data.mixX = input.readFloat(); - data.mixY = input.readFloat(); - skeletonData.pathConstraints.push(data); - } - var defaultSkin = this.readSkin(input, skeletonData, true, nonessential); - if (defaultSkin) { - skeletonData.defaultSkin = defaultSkin; - skeletonData.skins.push(defaultSkin); - } - { - var i = skeletonData.skins.length; - spine.Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); - for (; i < n; i++) - skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential); - } - n = this.linkedMeshes.length; - for (var i = 0; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - var parent_3 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_3 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_3); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var data = new spine.EventData(input.readStringRef()); - data.intValue = input.readInt(false); - data.floatValue = input.readFloat(); - data.stringValue = input.readString(); - data.audioPath = input.readString(); - if (data.audioPath) { - data.volume = input.readFloat(); - data.balance = input.readFloat(); - } - skeletonData.events.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) - skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData)); - return skeletonData; - }; - SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) { - var skin = null; - var slotCount = 0; - if (defaultSkin) { - slotCount = input.readInt(true); - if (slotCount == 0) - return null; - skin = new spine.Skin("default"); - } - else { - skin = new spine.Skin(input.readStringRef()); - skin.bones.length = input.readInt(true); - for (var i = 0, n = skin.bones.length; i < n; i++) - skin.bones[i] = skeletonData.bones[input.readInt(true)]; - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]); - slotCount = input.readInt(true); - } - for (var i = 0; i < slotCount; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var name_3 = input.readStringRef(); - var attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name_3, nonessential); - if (attachment) - skin.setAttachment(slotIndex, name_3, attachment); - } - } - return skin; - }; - SkeletonBinary.prototype.readAttachment = function (input, skeletonData, skin, slotIndex, attachmentName, nonessential) { - var scale = this.scale; - var name = input.readStringRef(); - if (!name) - name = attachmentName; - switch (input.readByte()) { - case AttachmentType.Region: { - var path = input.readStringRef(); - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var scaleX = input.readFloat(); - var scaleY = input.readFloat(); - var width = input.readFloat(); - var height = input.readFloat(); - var color = input.readInt32(); - if (!path) - path = name; - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (!region) - return null; - region.path = path; - region.x = x * scale; - region.y = y * scale; - region.scaleX = scaleX; - region.scaleY = scaleY; - region.rotation = rotation; - region.width = width * scale; - region.height = height * scale; - spine.Color.rgba8888ToColor(region.color, color); - region.updateOffset(); - return region; - } - case AttachmentType.BoundingBox: { - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (!box) - return null; - box.worldVerticesLength = vertexCount << 1; - box.vertices = vertices.vertices; - box.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(box.color, color); - return box; - } - case AttachmentType.Mesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var vertexCount = input.readInt(true); - var uvs = this.readFloatArray(input, vertexCount << 1, 1); - var triangles = this.readShortArray(input); - var vertices = this.readVertices(input, vertexCount); - var hullLength = input.readInt(true); - var edges = null; - var width = 0, height = 0; - if (nonessential) { - edges = this.readShortArray(input); - width = input.readFloat(); - height = input.readFloat(); - } - if (!path) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - mesh.bones = vertices.bones; - mesh.vertices = vertices.vertices; - mesh.worldVerticesLength = vertexCount << 1; - mesh.triangles = triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.hullLength = hullLength << 1; - if (nonessential) { - mesh.edges = edges; - mesh.width = width * scale; - mesh.height = height * scale; - } - return mesh; - } - case AttachmentType.LinkedMesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var skinName = input.readStringRef(); - var parent_4 = input.readStringRef(); - var inheritDeform = input.readBoolean(); - var width = 0, height = 0; - if (nonessential) { - width = input.readFloat(); - height = input.readFloat(); - } - if (!path) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - if (nonessential) { - mesh.width = width * scale; - mesh.height = height * scale; - } - this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent_4, inheritDeform)); - return mesh; - } - case AttachmentType.Path: { - var closed_1 = input.readBoolean(); - var constantSpeed = input.readBoolean(); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0, n = lengths.length; i < n; i++) - lengths[i] = input.readFloat() * scale; - var color = nonessential ? input.readInt32() : 0; - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (!path) - return null; - path.closed = closed_1; - path.constantSpeed = constantSpeed; - path.worldVerticesLength = vertexCount << 1; - path.vertices = vertices.vertices; - path.bones = vertices.bones; - path.lengths = lengths; - if (nonessential) - spine.Color.rgba8888ToColor(path.color, color); - return path; - } - case AttachmentType.Point: { - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var color = nonessential ? input.readInt32() : 0; - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (!point) - return null; - point.x = x * scale; - point.y = y * scale; - point.rotation = rotation; - if (nonessential) - spine.Color.rgba8888ToColor(point.color, color); - return point; - } - case AttachmentType.Clipping: { - var endSlotIndex = input.readInt(true); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (!clip) - return null; - clip.endSlot = skeletonData.slots[endSlotIndex]; - clip.worldVerticesLength = vertexCount << 1; - clip.vertices = vertices.vertices; - clip.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(clip.color, color); - return clip; - } - } - return null; - }; - SkeletonBinary.prototype.readVertices = function (input, vertexCount) { - var scale = this.scale; - var verticesLength = vertexCount << 1; - var vertices = new Vertices(); - if (!input.readBoolean()) { - vertices.vertices = this.readFloatArray(input, verticesLength, scale); - return vertices; - } - var weights = new Array(); - var bonesArray = new Array(); - for (var i = 0; i < vertexCount; i++) { - var boneCount = input.readInt(true); - bonesArray.push(boneCount); - for (var ii = 0; ii < boneCount; ii++) { - bonesArray.push(input.readInt(true)); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat()); - } - } - vertices.vertices = spine.Utils.toFloatArray(weights); - vertices.bones = bonesArray; - return vertices; - }; - SkeletonBinary.prototype.readFloatArray = function (input, n, scale) { - var array = new Array(n); - if (scale == 1) { - for (var i = 0; i < n; i++) - array[i] = input.readFloat(); - } - else { - for (var i = 0; i < n; i++) - array[i] = input.readFloat() * scale; - } - return array; - }; - SkeletonBinary.prototype.readShortArray = function (input) { - var n = input.readInt(true); - var array = new Array(n); - for (var i = 0; i < n; i++) - array[i] = input.readShort(); - return array; - }; - SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) { - input.readInt(true); - var timelines = new Array(); - var scale = this.scale; - var tempColor1 = new spine.Color(); - var tempColor2 = new spine.Color(); - for (var i = 0, n = input.readInt(true); i < n; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var timelineType = input.readByte(); - var frameCount = input.readInt(true); - var frameLast = frameCount - 1; - switch (timelineType) { - case SLOT_ATTACHMENT: { - var timeline = new spine.AttachmentTimeline(frameCount, slotIndex); - for (var frame = 0; frame < frameCount; frame++) - timeline.setFrame(frame, input.readFloat(), input.readStringRef()); - timelines.push(timeline); - break; - } - case SLOT_RGBA: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBATimeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var a = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, a); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - var a2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, a, a2, 1); - } - time = time2; - r = r2; - g = g2; - b = b2; - a = a2; - } - timelines.push(timeline); - break; - } - case SLOT_RGB: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBTimeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); - } - time = time2; - r = r2; - g = g2; - b = b2; - } - timelines.push(timeline); - break; - } - case SLOT_RGBA2: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBA2Timeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var a = input.readUnsignedByte() / 255.0; - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, a, r2, g2, b2); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var nr = input.readUnsignedByte() / 255.0; - var ng = input.readUnsignedByte() / 255.0; - var nb = input.readUnsignedByte() / 255.0; - var na = input.readUnsignedByte() / 255.0; - var nr2 = input.readUnsignedByte() / 255.0; - var ng2 = input.readUnsignedByte() / 255.0; - var nb2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, a, na, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, r2, nr2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, g2, ng2, 1); - setBezier(input, timeline, bezier++, frame, 6, time, time2, b2, nb2, 1); - } - time = time2; - r = nr; - g = ng; - b = nb; - a = na; - r2 = nr2; - g2 = ng2; - b2 = nb2; - } - timelines.push(timeline); - break; - } - case SLOT_RGB2: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGB2Timeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, r2, g2, b2); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var nr = input.readUnsignedByte() / 255.0; - var ng = input.readUnsignedByte() / 255.0; - var nb = input.readUnsignedByte() / 255.0; - var nr2 = input.readUnsignedByte() / 255.0; - var ng2 = input.readUnsignedByte() / 255.0; - var nb2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, r2, nr2, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, g2, ng2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, b2, nb2, 1); - } - time = time2; - r = nr; - g = ng; - b = nb; - r2 = nr2; - g2 = ng2; - b2 = nb2; - } - timelines.push(timeline); - break; - } - case SLOT_ALPHA: { - var timeline = new spine.AlphaTimeline(frameCount, input.readInt(true), slotIndex); - var time = input.readFloat(), a = input.readUnsignedByte() / 255; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, a); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var a2 = input.readUnsignedByte() / 255; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, a, a2, 1); - } - time = time2; - a = a2; - } - timelines.push(timeline); - break; - } - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var boneIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true); - switch (type) { - case BONE_ROTATE: - timelines.push(readTimeline1(input, new spine.RotateTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_TRANSLATE: - timelines.push(readTimeline2(input, new spine.TranslateTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_TRANSLATEX: - timelines.push(readTimeline1(input, new spine.TranslateXTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_TRANSLATEY: - timelines.push(readTimeline1(input, new spine.TranslateYTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_SCALE: - timelines.push(readTimeline2(input, new spine.ScaleTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SCALEX: - timelines.push(readTimeline1(input, new spine.ScaleXTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SCALEY: - timelines.push(readTimeline1(input, new spine.ScaleYTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEAR: - timelines.push(readTimeline2(input, new spine.ShearTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEARX: - timelines.push(readTimeline1(input, new spine.ShearXTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEARY: - timelines.push(readTimeline1(input, new spine.ShearYTimeline(frameCount, bezierCount, boneIndex), 1)); - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; - var timeline = new spine.IkConstraintTimeline(frameCount, input.readInt(true), index); - var time = input.readFloat(), mix = input.readFloat(), softness = input.readFloat() * scale; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mix, softness, input.readByte(), input.readBoolean(), input.readBoolean()); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mix2 = input.readFloat(), softness2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale); - } - time = time2; - mix = mix2; - softness = softness2; - } - timelines.push(timeline); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; - var timeline = new spine.TransformConstraintTimeline(frameCount, input.readInt(true), index); - var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(), mixScaleX = input.readFloat(), mixScaleY = input.readFloat(), mixShearY = input.readFloat(); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(), mixScaleX2 = input.readFloat(), mixScaleY2 = input.readFloat(), mixShearY2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, mixShearY, mixShearY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - mixScaleX = mixScaleX2; - mixScaleY = mixScaleY2; - mixShearY = mixShearY2; - } - timelines.push(timeline); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true); - var data = skeletonData.pathConstraints[index]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - switch (input.readByte()) { - case PATH_POSITION: - timelines - .push(readTimeline1(input, new spine.PathConstraintPositionTimeline(input.readInt(true), input.readInt(true), index), data.positionMode == spine.PositionMode.Fixed ? scale : 1)); - break; - case PATH_SPACING: - timelines - .push(readTimeline1(input, new spine.PathConstraintSpacingTimeline(input.readInt(true), input.readInt(true), index), data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed ? scale : 1)); - break; - case PATH_MIX: - var timeline = new spine.PathConstraintMixTimeline(input.readInt(true), input.readInt(true), index); - var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(); - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - } - timelines.push(timeline); - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var skin = skeletonData.skins[input.readInt(true)]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var slotIndex = input.readInt(true); - for (var iii = 0, nnn = input.readInt(true); iii < nnn; iii++) { - var attachmentName = input.readStringRef(); - var attachment = skin.getAttachment(slotIndex, attachmentName); - var weighted = attachment.bones; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var frameCount = input.readInt(true); - var frameLast = frameCount - 1; - var bezierCount = input.readInt(true); - var timeline = new spine.DeformTimeline(frameCount, bezierCount, slotIndex, attachment); - var time = input.readFloat(); - for (var frame = 0, bezier = 0;; frame++) { - var deform = void 0; - var end = input.readInt(true); - if (end == 0) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = input.readInt(true); - end += start; - if (scale == 1) { - for (var v = start; v < end; v++) - deform[v] = input.readFloat(); - } - else { - for (var v = start; v < end; v++) - deform[v] = input.readFloat() * scale; - } - if (!weighted) { - for (var v = 0, vn = deform.length; v < vn; v++) - deform[v] += vertices[v]; - } - } - timeline.setFrame(frame, time, deform); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1); - } - time = time2; - } - timelines.push(timeline); - } - } - } - var drawOrderCount = input.readInt(true); - if (drawOrderCount > 0) { - var timeline = new spine.DrawOrderTimeline(drawOrderCount); - var slotCount = skeletonData.slots.length; - for (var i = 0; i < drawOrderCount; i++) { - var time = input.readFloat(); - var offsetCount = input.readInt(true); - var drawOrder = spine.Utils.newArray(slotCount, 0); - for (var ii = slotCount - 1; ii >= 0; ii--) - drawOrder[ii] = -1; - var unchanged = spine.Utils.newArray(slotCount - offsetCount, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var ii = 0; ii < offsetCount; ii++) { - var slotIndex = input.readInt(true); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + input.readInt(true)] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var ii = slotCount - 1; ii >= 0; ii--) - if (drawOrder[ii] == -1) - drawOrder[ii] = unchanged[--unchangedIndex]; - timeline.setFrame(i, time, drawOrder); - } - timelines.push(timeline); - } - var eventCount = input.readInt(true); - if (eventCount > 0) { - var timeline = new spine.EventTimeline(eventCount); - for (var i = 0; i < eventCount; i++) { - var time = input.readFloat(); - var eventData = skeletonData.events[input.readInt(true)]; - var event_4 = new spine.Event(time, eventData); - event_4.intValue = input.readInt(false); - event_4.floatValue = input.readFloat(); - event_4.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue; - if (event_4.data.audioPath) { - event_4.volume = input.readFloat(); - event_4.balance = input.readFloat(); - } - timeline.setFrame(i, event_4); - } - timelines.push(timeline); - } - var duration = 0; - for (var i = 0, n = timelines.length; i < n; i++) - duration = Math.max(duration, timelines[i].getDuration()); - return new spine.Animation(name, timelines, duration); - }; - return SkeletonBinary; - }()); - spine.SkeletonBinary = SkeletonBinary; - var BinaryInput = (function () { - function BinaryInput(data, strings, index, buffer) { - if (strings === void 0) { strings = new Array(); } - if (index === void 0) { index = 0; } - if (buffer === void 0) { buffer = new DataView(data.buffer); } - this.strings = strings; - this.index = index; - this.buffer = buffer; - } - BinaryInput.prototype.readByte = function () { - return this.buffer.getInt8(this.index++); - }; - BinaryInput.prototype.readUnsignedByte = function () { - return this.buffer.getUint8(this.index++); - }; - BinaryInput.prototype.readShort = function () { - var value = this.buffer.getInt16(this.index); - this.index += 2; - return value; - }; - BinaryInput.prototype.readInt32 = function () { - var value = this.buffer.getInt32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readInt = function (optimizePositive) { - var b = this.readByte(); - var result = b & 0x7F; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 7; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 14; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 21; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 28; - } - } - } - } - return optimizePositive ? result : ((result >>> 1) ^ -(result & 1)); - }; - BinaryInput.prototype.readStringRef = function () { - var index = this.readInt(true); - return index == 0 ? null : this.strings[index - 1]; - }; - BinaryInput.prototype.readString = function () { - var byteCount = this.readInt(true); - switch (byteCount) { - case 0: - return null; - case 1: - return ""; - } - byteCount--; - var chars = ""; - var charCount = 0; - for (var i = 0; i < byteCount;) { - var b = this.readByte(); - switch (b >> 4) { - case 12: - case 13: - chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F)); - i += 2; - break; - case 14: - chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F)); - i += 3; - break; - default: - chars += String.fromCharCode(b); - i++; - } - } - return chars; - }; - BinaryInput.prototype.readFloat = function () { - var value = this.buffer.getFloat32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readBoolean = function () { - return this.readByte() != 0; - }; - return BinaryInput; - }()); - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); - var Vertices = (function () { - function Vertices(bones, vertices) { - if (bones === void 0) { bones = null; } - if (vertices === void 0) { vertices = null; } - this.bones = bones; - this.vertices = vertices; - } - return Vertices; - }()); - var AttachmentType; - (function (AttachmentType) { - AttachmentType[AttachmentType["Region"] = 0] = "Region"; - AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; - AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; - AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; - AttachmentType[AttachmentType["Path"] = 4] = "Path"; - AttachmentType[AttachmentType["Point"] = 5] = "Point"; - AttachmentType[AttachmentType["Clipping"] = 6] = "Clipping"; - })(AttachmentType || (AttachmentType = {})); - function readTimeline1(input, timeline, scale) { - var time = input.readFloat(), value = input.readFloat() * scale; - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, value); - if (frame == frameLast) - break; - var time2 = input.readFloat(), value2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, value, value2, 1); - } - time = time2; - value = value2; - } - return timeline; - } - function readTimeline2(input, timeline, scale) { - var time = input.readFloat(), value1 = input.readFloat() * scale, value2 = input.readFloat() * scale; - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, value1, value2); - if (frame == frameLast) - break; - var time2 = input.readFloat(), nvalue1 = input.readFloat() * scale, nvalue2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, value1, nvalue1, scale); - setBezier(input, timeline, bezier++, frame, 1, time, time2, value2, nvalue2, scale); - } - time = time2; - value1 = nvalue1; - value2 = nvalue2; - } - return timeline; - } - function setBezier(input, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { - timeline.setBezier(bezier, frame, value, time1, value1, input.readFloat(), input.readFloat() * scale, input.readFloat(), input.readFloat() * scale, time2, value2); - } - var BONE_ROTATE = 0; - var BONE_TRANSLATE = 1; - var BONE_TRANSLATEX = 2; - var BONE_TRANSLATEY = 3; - var BONE_SCALE = 4; - var BONE_SCALEX = 5; - var BONE_SCALEY = 6; - var BONE_SHEAR = 7; - var BONE_SHEARX = 8; - var BONE_SHEARY = 9; - var SLOT_ATTACHMENT = 0; - var SLOT_RGBA = 1; - var SLOT_RGB = 2; - var SLOT_RGBA2 = 3; - var SLOT_RGB2 = 4; - var SLOT_ALPHA = 5; - var PATH_POSITION = 0; - var PATH_SPACING = 1; - var PATH_MIX = 2; - var CURVE_LINEAR = 0; - var CURVE_STEPPED = 1; - var CURVE_BEZIER = 2; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBounds = (function () { - function SkeletonBounds() { - this.minX = 0; - this.minY = 0; - this.maxX = 0; - this.maxY = 0; - this.boundingBoxes = new Array(); - this.polygons = new Array(); - this.polygonPool = new spine.Pool(function () { - return spine.Utils.newFloatArray(16); - }); - } - SkeletonBounds.prototype.update = function (skeleton, updateAabb) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - var boundingBoxes = this.boundingBoxes; - var polygons = this.polygons; - var polygonPool = this.polygonPool; - var slots = skeleton.slots; - var slotCount = slots.length; - boundingBoxes.length = 0; - polygonPool.freeAll(polygons); - polygons.length = 0; - for (var i = 0; i < slotCount; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.BoundingBoxAttachment) { - var boundingBox = attachment; - boundingBoxes.push(boundingBox); - var polygon = polygonPool.obtain(); - if (polygon.length != boundingBox.worldVerticesLength) { - polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); - } - polygons.push(polygon); - boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2); - } - } - if (updateAabb) { - this.aabbCompute(); - } - else { - this.minX = Number.POSITIVE_INFINITY; - this.minY = Number.POSITIVE_INFINITY; - this.maxX = Number.NEGATIVE_INFINITY; - this.maxY = Number.NEGATIVE_INFINITY; - } - }; - SkeletonBounds.prototype.aabbCompute = function () { - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - var vertices = polygon; - for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { - var x = vertices[ii]; - var y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - this.minX = minX; - this.minY = minY; - this.maxX = maxX; - this.maxY = maxY; - }; - SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { - return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; - }; - SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { - var minX = this.minX; - var minY = this.minY; - var maxX = this.maxX; - var maxY = this.maxY; - if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) - return false; - var m = (y2 - y1) / (x2 - x1); - var y = m * (minX - x1) + y1; - if (y > minY && y < maxY) - return true; - y = m * (maxX - x1) + y1; - if (y > minY && y < maxY) - return true; - var x = (minY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - x = (maxY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - return false; - }; - SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { - return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; - }; - SkeletonBounds.prototype.containsPoint = function (x, y) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.containsPointPolygon(polygons[i], x, y)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { - var vertices = polygon; - var nn = polygon.length; - var prevIndex = nn - 2; - var inside = false; - for (var ii = 0; ii < nn; ii += 2) { - var vertexY = vertices[ii + 1]; - var prevY = vertices[prevIndex + 1]; - if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { - var vertexX = vertices[ii]; - if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) - inside = !inside; - } - prevIndex = ii; - } - return inside; - }; - SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { - var vertices = polygon; - var nn = polygon.length; - var width12 = x1 - x2, height12 = y1 - y2; - var det1 = x1 * y2 - y1 * x2; - var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; - for (var ii = 0; ii < nn; ii += 2) { - var x4 = vertices[ii], y4 = vertices[ii + 1]; - var det2 = x3 * y4 - y3 * x4; - var width34 = x3 - x4, height34 = y3 - y4; - var det3 = width12 * height34 - height12 * width34; - var x = (det1 * width34 - width12 * det2) / det3; - if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { - var y = (det1 * height34 - height12 * det2) / det3; - if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) - return true; - } - x3 = x4; - y3 = y4; - } - return false; - }; - SkeletonBounds.prototype.getPolygon = function (boundingBox) { - if (!boundingBox) - throw new Error("boundingBox cannot be null."); - var index = this.boundingBoxes.indexOf(boundingBox); - return index == -1 ? null : this.polygons[index]; - }; - SkeletonBounds.prototype.getWidth = function () { - return this.maxX - this.minX; - }; - SkeletonBounds.prototype.getHeight = function () { - return this.maxY - this.minY; - }; - return SkeletonBounds; - }()); - spine.SkeletonBounds = SkeletonBounds; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonClipping = (function () { - function SkeletonClipping() { - this.triangulator = new spine.Triangulator(); - this.clippingPolygon = new Array(); - this.clipOutput = new Array(); - this.clippedVertices = new Array(); - this.clippedTriangles = new Array(); - this.scratch = new Array(); - } - SkeletonClipping.prototype.clipStart = function (slot, clip) { - if (this.clipAttachment) - return 0; - this.clipAttachment = clip; - var n = clip.worldVerticesLength; - var vertices = spine.Utils.setArraySize(this.clippingPolygon, n); - clip.computeWorldVertices(slot, 0, n, vertices, 0, 2); - var clippingPolygon = this.clippingPolygon; - SkeletonClipping.makeClockwise(clippingPolygon); - var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon)); - for (var i = 0, n_2 = clippingPolygons.length; i < n_2; i++) { - var polygon = clippingPolygons[i]; - SkeletonClipping.makeClockwise(polygon); - polygon.push(polygon[0]); - polygon.push(polygon[1]); - } - return clippingPolygons.length; - }; - SkeletonClipping.prototype.clipEndWithSlot = function (slot) { - if (this.clipAttachment && this.clipAttachment.endSlot == slot.data) - this.clipEnd(); - }; - SkeletonClipping.prototype.clipEnd = function () { - if (!this.clipAttachment) - return; - this.clipAttachment = null; - this.clippingPolygons = null; - this.clippedVertices.length = 0; - this.clippedTriangles.length = 0; - this.clippingPolygon.length = 0; - }; - SkeletonClipping.prototype.isClipping = function () { - return this.clipAttachment != null; - }; - SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) { - var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; - var clippedTriangles = this.clippedTriangles; - var polygons = this.clippingPolygons; - var polygonsCount = this.clippingPolygons.length; - var vertexSize = twoColor ? 12 : 8; - var index = 0; - clippedVertices.length = 0; - clippedTriangles.length = 0; - outer: for (var i = 0; i < trianglesLength; i += 3) { - var vertexOffset = triangles[i] << 1; - var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1]; - var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 1] << 1; - var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1]; - var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 2] << 1; - var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1]; - var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1]; - for (var p = 0; p < polygonsCount; p++) { - var s = clippedVertices.length; - if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) { - var clipOutputLength = clipOutput.length; - if (clipOutputLength == 0) - continue; - var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; - var d = 1 / (d0 * d2 + d1 * (y1 - y3)); - var clipOutputCount = clipOutputLength >> 1; - var clipOutputItems = this.clipOutput; - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize); - for (var ii = 0; ii < clipOutputLength; ii += 2) { - var x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; - clippedVerticesItems[s] = x; - clippedVerticesItems[s + 1] = y; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - var c0 = x - x3, c1 = y - y3; - var a = (d0 * c0 + d1 * c1) * d; - var b = (d4 * c0 + d2 * c1) * d; - var c = 1 - a - b; - clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c; - clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c; - if (twoColor) { - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - } - s += vertexSize; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); - clipOutputCount--; - for (var ii = 1; ii < clipOutputCount; ii++) { - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + ii); - clippedTrianglesItems[s + 2] = (index + ii + 1); - s += 3; - } - index += clipOutputCount + 1; - } - else { - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + 3 * vertexSize); - clippedVerticesItems[s] = x1; - clippedVerticesItems[s + 1] = y1; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - if (!twoColor) { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = x2; - clippedVerticesItems[s + 9] = y2; - clippedVerticesItems[s + 10] = light.r; - clippedVerticesItems[s + 11] = light.g; - clippedVerticesItems[s + 12] = light.b; - clippedVerticesItems[s + 13] = light.a; - clippedVerticesItems[s + 14] = u2; - clippedVerticesItems[s + 15] = v2; - clippedVerticesItems[s + 16] = x3; - clippedVerticesItems[s + 17] = y3; - clippedVerticesItems[s + 18] = light.r; - clippedVerticesItems[s + 19] = light.g; - clippedVerticesItems[s + 20] = light.b; - clippedVerticesItems[s + 21] = light.a; - clippedVerticesItems[s + 22] = u3; - clippedVerticesItems[s + 23] = v3; - } - else { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - clippedVerticesItems[s + 12] = x2; - clippedVerticesItems[s + 13] = y2; - clippedVerticesItems[s + 14] = light.r; - clippedVerticesItems[s + 15] = light.g; - clippedVerticesItems[s + 16] = light.b; - clippedVerticesItems[s + 17] = light.a; - clippedVerticesItems[s + 18] = u2; - clippedVerticesItems[s + 19] = v2; - clippedVerticesItems[s + 20] = dark.r; - clippedVerticesItems[s + 21] = dark.g; - clippedVerticesItems[s + 22] = dark.b; - clippedVerticesItems[s + 23] = dark.a; - clippedVerticesItems[s + 24] = x3; - clippedVerticesItems[s + 25] = y3; - clippedVerticesItems[s + 26] = light.r; - clippedVerticesItems[s + 27] = light.g; - clippedVerticesItems[s + 28] = light.b; - clippedVerticesItems[s + 29] = light.a; - clippedVerticesItems[s + 30] = u3; - clippedVerticesItems[s + 31] = v3; - clippedVerticesItems[s + 32] = dark.r; - clippedVerticesItems[s + 33] = dark.g; - clippedVerticesItems[s + 34] = dark.b; - clippedVerticesItems[s + 35] = dark.a; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3); - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + 1); - clippedTrianglesItems[s + 2] = (index + 2); - index += 3; - continue outer; - } - } - } - }; - SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) { - var originalOutput = output; - var clipped = false; - var input = null; - if (clippingArea.length % 4 >= 2) { - input = output; - output = this.scratch; - } - else - input = this.scratch; - input.length = 0; - input.push(x1); - input.push(y1); - input.push(x2); - input.push(y2); - input.push(x3); - input.push(y3); - input.push(x1); - input.push(y1); - output.length = 0; - var clippingVertices = clippingArea; - var clippingVerticesLast = clippingArea.length - 4; - for (var i = 0;; i += 2) { - var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; - var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; - var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; - var inputVertices = input; - var inputVerticesLength = input.length - 2, outputStart = output.length; - for (var ii = 0; ii < inputVerticesLength; ii += 2) { - var inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; - var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; - var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; - if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { - if (side2) { - output.push(inputX2); - output.push(inputY2); - continue; - } - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - } - else if (side2) { - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - output.push(inputX2); - output.push(inputY2); - } - clipped = true; - } - if (outputStart == output.length) { - originalOutput.length = 0; - return true; - } - output.push(output[0]); - output.push(output[1]); - if (i == clippingVerticesLast) - break; - var temp = output; - output = input; - output.length = 0; - input = temp; - } - if (originalOutput != output) { - originalOutput.length = 0; - for (var i = 0, n = output.length - 2; i < n; i++) - originalOutput[i] = output[i]; - } - else - originalOutput.length = originalOutput.length - 2; - return clipped; - }; - SkeletonClipping.makeClockwise = function (polygon) { - var vertices = polygon; - var verticeslength = polygon.length; - var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0; - for (var i = 0, n = verticeslength - 3; i < n; i += 2) { - p1x = vertices[i]; - p1y = vertices[i + 1]; - p2x = vertices[i + 2]; - p2y = vertices[i + 3]; - area += p1x * p2y - p2x * p1y; - } - if (area < 0) - return; - for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) { - var x = vertices[i], y = vertices[i + 1]; - var other = lastX - i; - vertices[i] = vertices[other]; - vertices[i + 1] = vertices[other + 1]; - vertices[other] = x; - vertices[other + 1] = y; - } - }; - return SkeletonClipping; - }()); - spine.SkeletonClipping = SkeletonClipping; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonData = (function () { - function SkeletonData() { - this.bones = new Array(); - this.slots = new Array(); - this.skins = new Array(); - this.events = new Array(); - this.animations = new Array(); - this.ikConstraints = new Array(); - this.transformConstraints = new Array(); - this.pathConstraints = new Array(); - this.fps = 0; - } - SkeletonData.prototype.findBone = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.name == boneName) - return bone; - } - return null; - }; - SkeletonData.prototype.findBoneIndex = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].name == boneName) - return i; - return -1; - }; - SkeletonData.prototype.findSlot = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.name == slotName) - return slot; - } - return null; - }; - SkeletonData.prototype.findSlotIndex = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].name == slotName) - return i; - return -1; - }; - SkeletonData.prototype.findSkin = function (skinName) { - if (!skinName) - throw new Error("skinName cannot be null."); - var skins = this.skins; - for (var i = 0, n = skins.length; i < n; i++) { - var skin = skins[i]; - if (skin.name == skinName) - return skin; - } - return null; - }; - SkeletonData.prototype.findEvent = function (eventDataName) { - if (!eventDataName) - throw new Error("eventDataName cannot be null."); - var events = this.events; - for (var i = 0, n = events.length; i < n; i++) { - var event_5 = events[i]; - if (event_5.name == eventDataName) - return event_5; - } - return null; - }; - SkeletonData.prototype.findAnimation = function (animationName) { - if (!animationName) - throw new Error("animationName cannot be null."); - var animations = this.animations; - for (var i = 0, n = animations.length; i < n; i++) { - var animation = animations[i]; - if (animation.name == animationName) - return animation; - } - return null; - }; - SkeletonData.prototype.findIkConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findTransformConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findPathConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - return SkeletonData; - }()); - spine.SkeletonData = SkeletonData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonJson = (function () { - function SkeletonJson(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonJson.prototype.readSkeletonData = function (json) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - var root = typeof (json) === "string" ? JSON.parse(json) : json; - var skeletonMap = root.skeleton; - if (skeletonMap) { - skeletonData.hash = skeletonMap.hash; - skeletonData.version = skeletonMap.spine; - skeletonData.x = skeletonMap.x; - skeletonData.y = skeletonMap.y; - skeletonData.width = skeletonMap.width; - skeletonData.height = skeletonMap.height; - skeletonData.fps = skeletonMap.fps; - skeletonData.imagesPath = skeletonMap.images; - } - if (root.bones) { - for (var i = 0; i < root.bones.length; i++) { - var boneMap = root.bones[i]; - var parent_5 = null; - var parentName = getValue(boneMap, "parent", null); - if (parentName) - parent_5 = skeletonData.findBone(parentName); - var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_5); - data.length = getValue(boneMap, "length", 0) * scale; - data.x = getValue(boneMap, "x", 0) * scale; - data.y = getValue(boneMap, "y", 0) * scale; - data.rotation = getValue(boneMap, "rotation", 0); - data.scaleX = getValue(boneMap, "scaleX", 1); - data.scaleY = getValue(boneMap, "scaleY", 1); - data.shearX = getValue(boneMap, "shearX", 0); - data.shearY = getValue(boneMap, "shearY", 0); - data.transformMode = spine.Utils.enumValue(spine.TransformMode, getValue(boneMap, "transform", "Normal")); - data.skinRequired = getValue(boneMap, "skin", false); - var color = getValue(boneMap, "color", null); - if (color) - data.color.setFromString(color); - skeletonData.bones.push(data); - } - } - if (root.slots) { - for (var i = 0; i < root.slots.length; i++) { - var slotMap = root.slots[i]; - var boneData = skeletonData.findBone(slotMap.bone); - var data = new spine.SlotData(skeletonData.slots.length, slotMap.name, boneData); - var color = getValue(slotMap, "color", null); - if (color) - data.color.setFromString(color); - var dark = getValue(slotMap, "dark", null); - if (dark) - data.darkColor = spine.Color.fromString(dark); - data.attachmentName = getValue(slotMap, "attachment", null); - data.blendMode = spine.Utils.enumValue(spine.BlendMode, getValue(slotMap, "blend", "normal")); - skeletonData.slots.push(data); - } - } - if (root.ik) { - for (var i = 0; i < root.ik.length; i++) { - var constraintMap = root.ik[i]; - var data = new spine.IkConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - data.target = skeletonData.findBone(constraintMap.target); - data.mix = getValue(constraintMap, "mix", 1); - data.softness = getValue(constraintMap, "softness", 0) * scale; - data.bendDirection = getValue(constraintMap, "bendPositive", true) ? 1 : -1; - data.compress = getValue(constraintMap, "compress", false); - data.stretch = getValue(constraintMap, "stretch", false); - data.uniform = getValue(constraintMap, "uniform", false); - skeletonData.ikConstraints.push(data); - } - } - if (root.transform) { - for (var i = 0; i < root.transform.length; i++) { - var constraintMap = root.transform[i]; - var data = new spine.TransformConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - var targetName = constraintMap.target; - data.target = skeletonData.findBone(targetName); - data.local = getValue(constraintMap, "local", false); - data.relative = getValue(constraintMap, "relative", false); - data.offsetRotation = getValue(constraintMap, "rotation", 0); - data.offsetX = getValue(constraintMap, "x", 0) * scale; - data.offsetY = getValue(constraintMap, "y", 0) * scale; - data.offsetScaleX = getValue(constraintMap, "scaleX", 0); - data.offsetScaleY = getValue(constraintMap, "scaleY", 0); - data.offsetShearY = getValue(constraintMap, "shearY", 0); - data.mixRotate = getValue(constraintMap, "mixRotate", 1); - data.mixX = getValue(constraintMap, "mixX", 1); - data.mixY = getValue(constraintMap, "mixY", data.mixX); - data.mixScaleX = getValue(constraintMap, "mixScaleX", 1); - data.mixScaleY = getValue(constraintMap, "mixScaleY", data.mixScaleX); - data.mixShearY = getValue(constraintMap, "mixShearY", 1); - skeletonData.transformConstraints.push(data); - } - } - if (root.path) { - for (var i = 0; i < root.path.length; i++) { - var constraintMap = root.path[i]; - var data = new spine.PathConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - var targetName = constraintMap.target; - data.target = skeletonData.findSlot(targetName); - data.positionMode = spine.Utils.enumValue(spine.PositionMode, getValue(constraintMap, "positionMode", "Percent")); - data.spacingMode = spine.Utils.enumValue(spine.SpacingMode, getValue(constraintMap, "spacingMode", "Length")); - data.rotateMode = spine.Utils.enumValue(spine.RotateMode, getValue(constraintMap, "rotateMode", "Tangent")); - data.offsetRotation = getValue(constraintMap, "rotation", 0); - data.position = getValue(constraintMap, "position", 0); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = getValue(constraintMap, "spacing", 0); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.mixRotate = getValue(constraintMap, "mixRotate", 1); - data.mixX = getValue(constraintMap, "mixX", 1); - data.mixY = getValue(constraintMap, "mixY", data.mixX); - skeletonData.pathConstraints.push(data); - } - } - if (root.skins) { - for (var i = 0; i < root.skins.length; i++) { - var skinMap = root.skins[i]; - var skin = new spine.Skin(skinMap.name); - if (skinMap.bones) { - for (var ii = 0; ii < skinMap.bones.length; ii++) - skin.bones.push(skeletonData.findBone(skinMap.bones[ii])); - } - if (skinMap.ik) { - for (var ii = 0; ii < skinMap.ik.length; ii++) - skin.constraints.push(skeletonData.findIkConstraint(skinMap.ik[ii])); - } - if (skinMap.transform) { - for (var ii = 0; ii < skinMap.transform.length; ii++) - skin.constraints.push(skeletonData.findTransformConstraint(skinMap.transform[ii])); - } - if (skinMap.path) { - for (var ii = 0; ii < skinMap.path.length; ii++) - skin.constraints.push(skeletonData.findPathConstraint(skinMap.path[ii])); - } - for (var slotName in skinMap.attachments) { - var slot = skeletonData.findSlot(slotName); - var slotMap = skinMap.attachments[slotName]; - for (var entryName in slotMap) { - var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData); - if (attachment) - skin.setAttachment(slot.index, entryName, attachment); - } - } - skeletonData.skins.push(skin); - if (skin.name == "default") - skeletonData.defaultSkin = skin; - } - } - for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - var parent_6 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_6 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_6); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - if (root.events) { - for (var eventName in root.events) { - var eventMap = root.events[eventName]; - var data = new spine.EventData(eventName); - data.intValue = getValue(eventMap, "int", 0); - data.floatValue = getValue(eventMap, "float", 0); - data.stringValue = getValue(eventMap, "string", ""); - data.audioPath = getValue(eventMap, "audio", null); - if (data.audioPath) { - data.volume = getValue(eventMap, "volume", 1); - data.balance = getValue(eventMap, "balance", 0); - } - skeletonData.events.push(data); - } - } - if (root.animations) { - for (var animationName in root.animations) { - var animationMap = root.animations[animationName]; - this.readAnimation(animationMap, animationName, skeletonData); - } - } - return skeletonData; - }; - SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) { - var scale = this.scale; - name = getValue(map, "name", name); - switch (getValue(map, "type", "region")) { - case "region": { - var path = getValue(map, "path", name); - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (!region) - return null; - region.path = path; - region.x = getValue(map, "x", 0) * scale; - region.y = getValue(map, "y", 0) * scale; - region.scaleX = getValue(map, "scaleX", 1); - region.scaleY = getValue(map, "scaleY", 1); - region.rotation = getValue(map, "rotation", 0); - region.width = map.width * scale; - region.height = map.height * scale; - var color = getValue(map, "color", null); - if (color) - region.color.setFromString(color); - region.updateOffset(); - return region; - } - case "boundingbox": { - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (!box) - return null; - this.readVertices(map, box, map.vertexCount << 1); - var color = getValue(map, "color", null); - if (color) - box.color.setFromString(color); - return box; - } - case "mesh": - case "linkedmesh": { - var path = getValue(map, "path", name); - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - var color = getValue(map, "color", null); - if (color) - mesh.color.setFromString(color); - mesh.width = getValue(map, "width", 0) * scale; - mesh.height = getValue(map, "height", 0) * scale; - var parent_7 = getValue(map, "parent", null); - if (parent_7) { - this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, "skin", null), slotIndex, parent_7, getValue(map, "deform", true))); - return mesh; - } - var uvs = map.uvs; - this.readVertices(map, mesh, uvs.length); - mesh.triangles = map.triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.edges = getValue(map, "edges", null); - mesh.hullLength = getValue(map, "hull", 0) * 2; - return mesh; - } - case "path": { - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (!path) - return null; - path.closed = getValue(map, "closed", false); - path.constantSpeed = getValue(map, "constantSpeed", true); - var vertexCount = map.vertexCount; - this.readVertices(map, path, vertexCount << 1); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0; i < map.lengths.length; i++) - lengths[i] = map.lengths[i] * scale; - path.lengths = lengths; - var color = getValue(map, "color", null); - if (color) - path.color.setFromString(color); - return path; - } - case "point": { - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (!point) - return null; - point.x = getValue(map, "x", 0) * scale; - point.y = getValue(map, "y", 0) * scale; - point.rotation = getValue(map, "rotation", 0); - var color = getValue(map, "color", null); - if (color) - point.color.setFromString(color); - return point; - } - case "clipping": { - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (!clip) - return null; - var end = getValue(map, "end", null); - if (end) - clip.endSlot = skeletonData.findSlot(end); - var vertexCount = map.vertexCount; - this.readVertices(map, clip, vertexCount << 1); - var color = getValue(map, "color", null); - if (color) - clip.color.setFromString(color); - return clip; - } - } - return null; - }; - SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { - var scale = this.scale; - attachment.worldVerticesLength = verticesLength; - var vertices = map.vertices; - if (verticesLength == vertices.length) { - var scaledVertices = spine.Utils.toFloatArray(vertices); - if (scale != 1) { - for (var i = 0, n = vertices.length; i < n; i++) - scaledVertices[i] *= scale; - } - attachment.vertices = scaledVertices; - return; - } - var weights = new Array(); - var bones = new Array(); - for (var i = 0, n = vertices.length; i < n;) { - var boneCount = vertices[i++]; - bones.push(boneCount); - for (var nn = i + boneCount * 4; i < nn; i += 4) { - bones.push(vertices[i]); - weights.push(vertices[i + 1] * scale); - weights.push(vertices[i + 2] * scale); - weights.push(vertices[i + 3]); - } - } - attachment.bones = bones; - attachment.vertices = spine.Utils.toFloatArray(weights); - }; - SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { - var scale = this.scale; - var timelines = new Array(); - if (map.slots) { - for (var slotName in map.slots) { - var slotMap = map.slots[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - if (!timelineMap) - continue; - if (timelineName == "attachment") { - var timeline = new spine.AttachmentTimeline(timelineMap.length, slotIndex); - for (var frame = 0; frame < timelineMap.length; frame++) { - var keyMap = timelineMap[frame]; - timeline.setFrame(frame, getValue(keyMap, "time", 0), keyMap.name); - } - timelines.push(timeline); - } - else if (timelineName == "rgba") { - var timeline = new spine.RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.color); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color.a); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.color); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); - } - time = time2; - color = newColor; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "rgb") { - var timeline = new spine.RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.color); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.color); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - } - time = time2; - color = newColor; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "alpha") { - timelines.push(readTimeline1(timelineMap, new spine.AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1)); - } - else if (timelineName == "rgba2") { - var timeline = new spine.RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.light); - var color2 = spine.Color.fromString(keyMap.dark); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color.a, color2.r, color2.g, color2.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.light); - var newColor2 = spine.Color.fromString(nextMap.dark); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.r, newColor2.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.g, newColor2.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 6, time, time2, color2.b, newColor2.b, 1); - } - time = time2; - color = newColor; - color2 = newColor2; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "rgb2") { - var timeline = new spine.RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.light); - var color2 = spine.Color.fromString(keyMap.dark); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.light); - var newColor2 = spine.Color.fromString(nextMap.dark); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1); - } - time = time2; - color = newColor; - color2 = newColor2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.bones) { - for (var boneName in map.bones) { - var boneMap = map.bones[boneName]; - var boneIndex = skeletonData.findBoneIndex(boneName); - for (var timelineName in boneMap) { - var timelineMap = boneMap[timelineName]; - if (timelineMap.length == 0) - continue; - if (timelineName === "rotate") { - timelines.push(readTimeline1(timelineMap, new spine.RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1)); - } - else if (timelineName === "translate") { - var timeline = new spine.TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, scale)); - } - else if (timelineName === "translatex") { - var timeline = new spine.TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); - } - else if (timelineName === "translatey") { - var timeline = new spine.TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); - } - else if (timelineName === "scale") { - var timeline = new spine.ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 1, 1)); - } - else if (timelineName === "scalex") { - var timeline = new spine.ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); - } - else if (timelineName === "scaley") { - var timeline = new spine.ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); - } - else if (timelineName === "shear") { - var timeline = new spine.ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, 1)); - } - else if (timelineName === "shearx") { - var timeline = new spine.ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); - } - else if (timelineName === "sheary") { - var timeline = new spine.ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); - } - } - } - } - if (map.ik) { - for (var constraintName in map.ik) { - var constraintMap = map.ik[constraintName]; - var keyMap = constraintMap[0]; - if (!keyMap) - continue; - var constraint = skeletonData.findIkConstraint(constraintName); - var constraintIndex = skeletonData.ikConstraints.indexOf(constraint); - var timeline = new spine.IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mix = getValue(keyMap, "mix", 1); - var softness = getValue(keyMap, "softness", 0) * scale; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mix, softness, getValue(keyMap, "bendPositive", true) ? 1 : -1, getValue(keyMap, "compress", false), getValue(keyMap, "stretch", false)); - var nextMap = constraintMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mix2 = getValue(nextMap, "mix", 1); - var softness2 = getValue(nextMap, "softness", 0) * scale; - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale); - } - time = time2; - mix = mix2; - softness = softness2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - if (map.transform) { - for (var constraintName in map.transform) { - var timelineMap = map.transform[constraintName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - var constraint = skeletonData.findTransformConstraint(constraintName); - var constraintIndex = skeletonData.transformConstraints.indexOf(constraint); - var timeline = new spine.TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mixRotate = getValue(keyMap, "mixRotate", 1); - var mixX = getValue(keyMap, "mixX", 1); - var mixY = getValue(keyMap, "mixY", mixX); - var mixScaleX = getValue(keyMap, "mixScaleX", 1); - var mixScaleY = getValue(keyMap, "mixScaleY", mixScaleX); - var mixShearY = getValue(keyMap, "mixShearY", 1); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mixRotate2 = getValue(nextMap, "mixRotate", 1); - var mixX2 = getValue(nextMap, "mixX", 1); - var mixY2 = getValue(nextMap, "mixY", mixX2); - var mixScaleX2 = getValue(nextMap, "mixScaleX", 1); - var mixScaleY2 = getValue(nextMap, "mixScaleY", mixScaleX2); - var mixShearY2 = getValue(nextMap, "mixShearY", 1); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - mixScaleX = mixScaleX2; - mixScaleY = mixScaleY2; - mixScaleX = mixScaleX2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - if (map.path) { - for (var constraintName in map.path) { - var constraintMap = map.path[constraintName]; - var constraint = skeletonData.findPathConstraint(constraintName); - var constraintIndex = skeletonData.pathConstraints.indexOf(constraint); - for (var timelineName in constraintMap) { - var timelineMap = constraintMap[timelineName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - if (timelineName === "position") { - var timeline = new spine.PathConstraintPositionTimeline(timelineMap.length, timelineMap.length, constraintIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.positionMode == spine.PositionMode.Fixed ? scale : 1)); - } - else if (timelineName === "spacing") { - var timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, constraintIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.spacingMode == spine.SpacingMode.Length || constraint.spacingMode == spine.SpacingMode.Fixed ? scale : 1)); - } - else if (timelineName === "mix") { - var timeline = new spine.PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mixRotate = getValue(keyMap, "mixRotate", 1); - var mixX = getValue(keyMap, "mixX", 1); - var mixY = getValue(keyMap, "mixY", mixX); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mixRotate2 = getValue(nextMap, "mixRotate", 1); - var mixX2 = getValue(nextMap, "mixX", 1); - var mixY2 = getValue(nextMap, "mixY", mixX2); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.deform) { - for (var deformName in map.deform) { - var deformMap = map.deform[deformName]; - var skin = skeletonData.findSkin(deformName); - for (var slotName in deformMap) { - var slotMap = deformMap[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - var attachment = skin.getAttachment(slotIndex, timelineName); - var weighted = attachment.bones; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var timeline = new spine.DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment); - var time = getValue(keyMap, "time", 0); - for (var frame = 0, bezier = 0;; frame++) { - var deform = void 0; - var verticesValue = getValue(keyMap, "vertices", null); - if (!verticesValue) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = getValue(keyMap, "offset", 0); - spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); - if (scale != 1) { - for (var i = start, n = i + verticesValue.length; i < n; i++) - deform[i] *= scale; - } - if (!weighted) { - for (var i = 0; i < deformLength; i++) - deform[i] += vertices[i]; - } - } - timeline.setFrame(frame, time, deform); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var curve = keyMap.curve; - if (curve) - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1); - time = time2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.drawOrder) { - var timeline = new spine.DrawOrderTimeline(map.drawOrder.length); - var slotCount = skeletonData.slots.length; - var frame = 0; - for (var i = 0; i < map.drawOrder.length; i++, frame++) { - var drawOrderMap = map.drawOrder[i]; - var drawOrder = null; - var offsets = getValue(drawOrderMap, "offsets", null); - if (offsets) { - drawOrder = spine.Utils.newArray(slotCount, -1); - var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var ii = 0; ii < offsets.length; ii++) { - var offsetMap = offsets[ii]; - var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + offsetMap.offset] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var ii = slotCount - 1; ii >= 0; ii--) - if (drawOrder[ii] == -1) - drawOrder[ii] = unchanged[--unchangedIndex]; - } - timeline.setFrame(frame, getValue(drawOrderMap, "time", 0), drawOrder); - } - timelines.push(timeline); - } - if (map.events) { - var timeline = new spine.EventTimeline(map.events.length); - var frame = 0; - for (var i = 0; i < map.events.length; i++, frame++) { - var eventMap = map.events[i]; - var eventData = skeletonData.findEvent(eventMap.name); - var event_6 = new spine.Event(spine.Utils.toSinglePrecision(getValue(eventMap, "time", 0)), eventData); - event_6.intValue = getValue(eventMap, "int", eventData.intValue); - event_6.floatValue = getValue(eventMap, "float", eventData.floatValue); - event_6.stringValue = getValue(eventMap, "string", eventData.stringValue); - if (event_6.data.audioPath) { - event_6.volume = getValue(eventMap, "volume", 1); - event_6.balance = getValue(eventMap, "balance", 0); - } - timeline.setFrame(frame, event_6); - } - timelines.push(timeline); - } - var duration = 0; - for (var i = 0, n = timelines.length; i < n; i++) - duration = Math.max(duration, timelines[i].getDuration()); - skeletonData.animations.push(new spine.Animation(name, timelines, duration)); - }; - return SkeletonJson; - }()); - spine.SkeletonJson = SkeletonJson; - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); - function readTimeline1(keys, timeline, defaultValue, scale) { - var keyMap = keys[0]; - var time = getValue(keyMap, "time", 0); - var value = getValue(keyMap, "value", defaultValue) * scale; - var bezier = 0; - for (var frame = 0;; frame++) { - timeline.setFrame(frame, time, value); - var nextMap = keys[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - return timeline; - } - var time2 = getValue(nextMap, "time", 0); - var value2 = getValue(nextMap, "value", defaultValue) * scale; - if (keyMap.curve) - bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale); - time = time2; - value = value2; - keyMap = nextMap; - } - } - function readTimeline2(keys, timeline, name1, name2, defaultValue, scale) { - var keyMap = keys[0]; - var time = getValue(keyMap, "time", 0); - var value1 = getValue(keyMap, name1, defaultValue) * scale; - var value2 = getValue(keyMap, name2, defaultValue) * scale; - var bezier = 0; - for (var frame = 0;; frame++) { - timeline.setFrame(frame, time, value1, value2); - var nextMap = keys[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - return timeline; - } - var time2 = getValue(nextMap, "time", 0); - var nvalue1 = getValue(nextMap, name1, defaultValue) * scale; - var nvalue2 = getValue(nextMap, name2, defaultValue) * scale; - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale); - } - time = time2; - value1 = nvalue1; - value2 = nvalue2; - keyMap = nextMap; - } - } - function readCurve(curve, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { - if (curve == "stepped") { - timeline.setStepped(frame); - return bezier; - } - var i = value << 2; - var cx1 = curve[i]; - var cy1 = curve[i + 1] * scale; - var cx2 = curve[i + 2]; - var cy2 = curve[i + 3] * scale; - timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2); - return bezier + 1; - } - function getValue(map, property, defaultValue) { - return map[property] !== undefined ? map[property] : defaultValue; - } -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkinEntry = (function () { - function SkinEntry(slotIndex, name, attachment) { - this.slotIndex = slotIndex; - this.name = name; - this.attachment = attachment; - } - return SkinEntry; - }()); - spine.SkinEntry = SkinEntry; - var Skin = (function () { - function Skin(name) { - this.attachments = new Array(); - this.bones = Array(); - this.constraints = new Array(); - if (!name) - throw new Error("name cannot be null."); - this.name = name; - } - Skin.prototype.setAttachment = function (slotIndex, name, attachment) { - if (!attachment) - throw new Error("attachment cannot be null."); - var attachments = this.attachments; - if (slotIndex >= attachments.length) - attachments.length = slotIndex + 1; - if (!attachments[slotIndex]) - attachments[slotIndex] = {}; - attachments[slotIndex][name] = attachment; - }; - Skin.prototype.addSkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var ii = 0; ii < this.bones.length; ii++) { - if (this.bones[ii] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var ii = 0; ii < this.constraints.length; ii++) { - if (this.constraints[ii] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - }; - Skin.prototype.copySkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var ii = 0; ii < this.bones.length; ii++) { - if (this.bones[ii] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var ii = 0; ii < this.constraints.length; ii++) { - if (this.constraints[ii] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - if (!attachment.attachment) - continue; - if (attachment.attachment instanceof spine.MeshAttachment) { - attachment.attachment = attachment.attachment.newLinkedMesh(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - else { - attachment.attachment = attachment.attachment.copy(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - } - }; - Skin.prototype.getAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - return dictionary ? dictionary[name] : null; - }; - Skin.prototype.removeAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - if (dictionary) - dictionary[name] = null; - }; - Skin.prototype.getAttachments = function () { - var entries = new Array(); - for (var i = 0; i < this.attachments.length; i++) { - var slotAttachments = this.attachments[i]; - if (slotAttachments) { - for (var name_4 in slotAttachments) { - var attachment = slotAttachments[name_4]; - if (attachment) - entries.push(new SkinEntry(i, name_4, attachment)); - } - } - } - return entries; - }; - Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) { - var slotAttachments = this.attachments[slotIndex]; - if (slotAttachments) { - for (var name_5 in slotAttachments) { - var attachment = slotAttachments[name_5]; - if (attachment) - attachments.push(new SkinEntry(slotIndex, name_5, attachment)); - } - } - }; - Skin.prototype.clear = function () { - this.attachments.length = 0; - this.bones.length = 0; - this.constraints.length = 0; - }; - Skin.prototype.attachAll = function (skeleton, oldSkin) { - var slotIndex = 0; - for (var i = 0; i < skeleton.slots.length; i++) { - var slot = skeleton.slots[i]; - var slotAttachment = slot.getAttachment(); - if (slotAttachment && slotIndex < oldSkin.attachments.length) { - var dictionary = oldSkin.attachments[slotIndex]; - for (var key in dictionary) { - var skinAttachment = dictionary[key]; - if (slotAttachment == skinAttachment) { - var attachment = this.getAttachment(slotIndex, key); - if (attachment) - slot.setAttachment(attachment); - break; - } - } - } - slotIndex++; - } - }; - return Skin; - }()); - spine.Skin = Skin; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Slot = (function () { - function Slot(data, bone) { - this.deform = new Array(); - if (!data) - throw new Error("data cannot be null."); - if (!bone) - throw new Error("bone cannot be null."); - this.data = data; - this.bone = bone; - this.color = new spine.Color(); - this.darkColor = !data.darkColor ? null : new spine.Color(); - this.setToSetupPose(); - } - Slot.prototype.getSkeleton = function () { - return this.bone.skeleton; - }; - Slot.prototype.getAttachment = function () { - return this.attachment; - }; - Slot.prototype.setAttachment = function (attachment) { - if (this.attachment == attachment) - return; - if (!(attachment instanceof spine.VertexAttachment) || !(this.attachment instanceof spine.VertexAttachment) - || attachment.deformAttachment != this.attachment.deformAttachment) { - this.deform.length = 0; - } - this.attachment = attachment; - this.attachmentTime = this.bone.skeleton.time; - }; - Slot.prototype.setAttachmentTime = function (time) { - this.attachmentTime = this.bone.skeleton.time - time; - }; - Slot.prototype.getAttachmentTime = function () { - return this.bone.skeleton.time - this.attachmentTime; - }; - Slot.prototype.setToSetupPose = function () { - this.color.setFromColor(this.data.color); - if (this.darkColor) - this.darkColor.setFromColor(this.data.darkColor); - if (!this.data.attachmentName) - this.attachment = null; - else { - this.attachment = null; - this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); - } - }; - return Slot; - }()); - spine.Slot = Slot; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SlotData = (function () { - function SlotData(index, name, boneData) { - this.color = new spine.Color(1, 1, 1, 1); - if (index < 0) - throw new Error("index must be >= 0."); - if (!name) - throw new Error("name cannot be null."); - if (!boneData) - throw new Error("boneData cannot be null."); - this.index = index; - this.name = name; - this.boneData = boneData; - } - return SlotData; - }()); - spine.SlotData = SlotData; - var BlendMode; - (function (BlendMode) { - BlendMode[BlendMode["Normal"] = 0] = "Normal"; - BlendMode[BlendMode["Additive"] = 1] = "Additive"; - BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; - BlendMode[BlendMode["Screen"] = 3] = "Screen"; - })(BlendMode = spine.BlendMode || (spine.BlendMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Texture = (function () { - function Texture(image) { - this._image = image; - } - Texture.prototype.getImage = function () { - return this._image; - }; - return Texture; - }()); - spine.Texture = Texture; - var TextureFilter; - (function (TextureFilter) { - TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; - TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; - TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; - TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; - TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; - TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; - TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; - })(TextureFilter = spine.TextureFilter || (spine.TextureFilter = {})); - var TextureWrap; - (function (TextureWrap) { - TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; - TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; - TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; - })(TextureWrap = spine.TextureWrap || (spine.TextureWrap = {})); - var TextureRegion = (function () { - function TextureRegion() { - this.u = 0; - this.v = 0; - this.u2 = 0; - this.v2 = 0; - this.width = 0; - this.height = 0; - this.degrees = 0; - this.offsetX = 0; - this.offsetY = 0; - this.originalWidth = 0; - this.originalHeight = 0; - } - return TextureRegion; - }()); - spine.TextureRegion = TextureRegion; - var FakeTexture = (function (_super) { - __extends(FakeTexture, _super); - function FakeTexture() { - return _super !== null && _super.apply(this, arguments) || this; - } - FakeTexture.prototype.setFilters = function (minFilter, magFilter) { }; - FakeTexture.prototype.setWraps = function (uWrap, vWrap) { }; - FakeTexture.prototype.dispose = function () { }; - return FakeTexture; - }(Texture)); - spine.FakeTexture = FakeTexture; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TextureAtlas = (function () { - function TextureAtlas(atlasText) { - this.pages = new Array(); - this.regions = new Array(); - var reader = new TextureAtlasReader(atlasText); - var entry = new Array(4); - var page = null; - var region = null; - var pageFields = {}; - pageFields["size"] = function () { - page.width = parseInt(entry[1]); - page.height = parseInt(entry[2]); - }; - pageFields["format"] = function () { - }; - pageFields["filter"] = function () { - page.minFilter = spine.Utils.enumValue(spine.TextureFilter, entry[1]); - page.magFilter = spine.Utils.enumValue(spine.TextureFilter, entry[2]); - }; - pageFields["repeat"] = function () { - if (entry[1].indexOf('x') != -1) - page.uWrap = spine.TextureWrap.Repeat; - if (entry[1].indexOf('y') != -1) - page.vWrap = spine.TextureWrap.Repeat; - }; - pageFields["pma"] = function () { - page.pma = entry[1] == "true"; - }; - var regionFields = {}; - regionFields["xy"] = function () { - region.x = parseInt(entry[1]); - region.y = parseInt(entry[2]); - }; - regionFields["size"] = function () { - region.width = parseInt(entry[1]); - region.height = parseInt(entry[2]); - }; - regionFields["bounds"] = function () { - region.x = parseInt(entry[1]); - region.y = parseInt(entry[2]); - region.width = parseInt(entry[3]); - region.height = parseInt(entry[4]); - }; - regionFields["offset"] = function () { - region.offsetX = parseInt(entry[1]); - region.offsetY = parseInt(entry[2]); - }; - regionFields["orig"] = function () { - region.originalWidth = parseInt(entry[1]); - region.originalHeight = parseInt(entry[2]); - }; - regionFields["offsets"] = function () { - region.offsetX = parseInt(entry[1]); - region.offsetY = parseInt(entry[2]); - region.originalWidth = parseInt(entry[3]); - region.originalHeight = parseInt(entry[4]); - }; - regionFields["rotate"] = function () { - var value = entry[1]; - if (value == "true") - region.degrees = 90; - else if (value != "false") - region.degrees = parseInt(value); - }; - regionFields["index"] = function () { - region.index = parseInt(entry[1]); - }; - var line = reader.readLine(); - while (line && line.trim().length == 0) - line = reader.readLine(); - while (true) { - if (!line || line.trim().length == 0) - break; - if (reader.readEntry(entry, line) == 0) - break; - line = reader.readLine(); - } - var names = null; - var values = null; - while (true) { - if (line === null) - break; - if (line.trim().length == 0) { - page = null; - line = reader.readLine(); - } - else if (!page) { - page = new TextureAtlasPage(); - page.name = line.trim(); - while (true) { - if (reader.readEntry(entry, line = reader.readLine()) == 0) - break; - var field = pageFields[entry[0]]; - if (field) - field(); - } - this.pages.push(page); - } - else { - region = new TextureAtlasRegion(); - region.page = page; - region.name = line; - while (true) { - var count = reader.readEntry(entry, line = reader.readLine()); - if (count == 0) - break; - var field = regionFields[entry[0]]; - if (field) - field(); - else { - if (!names) { - names = []; - values = []; - } - names.push(entry[0]); - var entryValues = []; - for (var i = 0; i < count; i++) - entryValues.push(parseInt(entry[i + 1])); - values.push(entryValues); - } - } - if (region.originalWidth == 0 && region.originalHeight == 0) { - region.originalWidth = region.width; - region.originalHeight = region.height; - } - if (names && names.length > 0) { - region.names = names; - region.values = values; - names = null; - values = null; - } - region.u = region.x / page.width; - region.v = region.y / page.height; - if (region.degrees == 90) { - region.u2 = (region.x + region.height) / page.width; - region.v2 = (region.y + region.width) / page.height; - } - else { - region.u2 = (region.x + region.width) / page.width; - region.v2 = (region.y + region.height) / page.height; - } - this.regions.push(region); - } - } - } - TextureAtlas.prototype.findRegion = function (name) { - for (var i = 0; i < this.regions.length; i++) { - if (this.regions[i].name == name) { - return this.regions[i]; - } - } - return null; - }; - TextureAtlas.prototype.setTextures = function (assetManager, pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - for (var _i = 0, _a = this.pages; _i < _a.length; _i++) { - var page = _a[_i]; - page.setTexture(assetManager.get(pathPrefix + page.name)); - } - }; - TextureAtlas.prototype.dispose = function () { - for (var i = 0; i < this.pages.length; i++) { - this.pages[i].texture.dispose(); - } - }; - return TextureAtlas; - }()); - spine.TextureAtlas = TextureAtlas; - var TextureAtlasReader = (function () { - function TextureAtlasReader(text) { - this.index = 0; - this.lines = text.split(/\r\n|\r|\n/); - } - TextureAtlasReader.prototype.readLine = function () { - if (this.index >= this.lines.length) - return null; - return this.lines[this.index++]; - }; - TextureAtlasReader.prototype.readEntry = function (entry, line) { - if (!line) - return 0; - line = line.trim(); - if (line.length == 0) - return 0; - var colon = line.indexOf(':'); - if (colon == -1) - return 0; - entry[0] = line.substr(0, colon).trim(); - for (var i = 1, lastMatch = colon + 1;; i++) { - var comma = line.indexOf(',', lastMatch); - if (comma == -1) { - entry[i] = line.substr(lastMatch).trim(); - return i; - } - entry[i] = line.substr(lastMatch, comma - lastMatch).trim(); - lastMatch = comma + 1; - if (i == 4) - return 4; - } - }; - return TextureAtlasReader; - }()); - var TextureAtlasPage = (function () { - function TextureAtlasPage() { - this.minFilter = spine.TextureFilter.Nearest; - this.magFilter = spine.TextureFilter.Nearest; - this.uWrap = spine.TextureWrap.ClampToEdge; - this.vWrap = spine.TextureWrap.ClampToEdge; - } - TextureAtlasPage.prototype.setTexture = function (texture) { - this.texture = texture; - texture.setFilters(this.minFilter, this.magFilter); - texture.setWraps(this.uWrap, this.vWrap); - }; - return TextureAtlasPage; - }()); - spine.TextureAtlasPage = TextureAtlasPage; - var TextureAtlasRegion = (function (_super) { - __extends(TextureAtlasRegion, _super); - function TextureAtlasRegion() { - return _super !== null && _super.apply(this, arguments) || this; - } - return TextureAtlasRegion; - }(spine.TextureRegion)); - spine.TextureAtlasRegion = TextureAtlasRegion; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraint = (function () { - function TransformConstraint(data, skeleton) { - this.mixRotate = 0; - this.mixX = 0; - this.mixY = 0; - this.mixScaleX = 0; - this.mixScaleY = 0; - this.mixShearY = 0; - this.temp = new spine.Vector2(); - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mixRotate = data.mixRotate; - this.mixX = data.mixX; - this.mixY = data.mixY; - this.mixScaleX = data.mixScaleX; - this.mixScaleY = data.mixScaleY; - this.mixShearY = data.mixShearY; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - TransformConstraint.prototype.isActive = function () { - return this.active; - }; - TransformConstraint.prototype.update = function () { - if (this.mixRotate == 0 && this.mixX == 0 && this.mixY == 0 && this.mixScaleX == 0 && this.mixScaleX == 0 && this.mixShearY == 0) - return; - if (this.data.local) { - if (this.data.relative) - this.applyRelativeLocal(); - else - this.applyAbsoluteLocal(); - } - else { - if (this.data.relative) - this.applyRelativeWorld(); - else - this.applyAbsoluteWorld(); - } - }; - TransformConstraint.prototype.applyAbsoluteWorld = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var translate = mixX != 0 || mixY != 0; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect; - var offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (mixRotate != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - if (translate) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += (temp.x - bone.worldX) * mixX; - bone.worldY += (temp.y - bone.worldY) * mixY; - } - if (mixScaleX != 0) { - var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c); - if (s != 0) - s = (s + (Math.sqrt(ta * ta + tc * tc) - s + this.data.offsetScaleX) * mixScaleX) / s; - bone.a *= s; - bone.c *= s; - } - if (mixScaleY != 0) { - var s = Math.sqrt(bone.b * bone.b + bone.d * bone.d); - if (s != 0) - s = (s + (Math.sqrt(tb * tb + td * td) - s + this.data.offsetScaleY) * mixScaleY) / s; - bone.b *= s; - bone.d *= s; - } - if (mixShearY > 0) { - var b = bone.b, d = bone.d; - var by = Math.atan2(d, b); - var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r = by + (r + offsetShearY) * mixShearY; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - } - bone.updateAppliedTransform(); - } - }; - TransformConstraint.prototype.applyRelativeWorld = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var translate = mixX != 0 || mixY != 0; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (mixRotate != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - if (translate) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += temp.x * mixX; - bone.worldY += temp.y * mixY; - } - if (mixScaleX != 0) { - var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * mixScaleX + 1; - bone.a *= s; - bone.c *= s; - } - if (mixScaleY != 0) { - var s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * mixScaleY + 1; - bone.b *= s; - bone.d *= s; - } - if (mixShearY > 0) { - var r = Math.atan2(td, tb) - Math.atan2(tc, ta); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - var b = bone.b, d = bone.d; - r = Math.atan2(d, b) + (r - spine.MathUtils.PI / 2 + offsetShearY) * mixShearY; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - } - bone.updateAppliedTransform(); - } - }; - TransformConstraint.prototype.applyAbsoluteLocal = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var target = this.target; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var rotation = bone.arotation; - if (mixRotate != 0) { - var r = target.arotation - rotation + this.data.offsetRotation; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - rotation += r * mixRotate; - } - var x = bone.ax, y = bone.ay; - x += (target.ax - x + this.data.offsetX) * mixX; - y += (target.ay - y + this.data.offsetY) * mixY; - var scaleX = bone.ascaleX, scaleY = bone.ascaleY; - if (mixScaleX != 0 && scaleX != 0) - scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * mixScaleX) / scaleX; - if (mixScaleY != 0 && scaleY != 0) - scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * mixScaleY) / scaleY; - var shearY = bone.ashearY; - if (mixShearY != 0) { - var r = target.ashearY - shearY + this.data.offsetShearY; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - shearY += r * mixShearY; - } - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - TransformConstraint.prototype.applyRelativeLocal = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var target = this.target; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var rotation = bone.arotation + (target.arotation + this.data.offsetRotation) * mixRotate; - var x = bone.ax + (target.ax + this.data.offsetX) * mixX; - var y = bone.ay + (target.ay + this.data.offsetY) * mixY; - var scaleX = (bone.ascaleX * ((target.ascaleX - 1 + this.data.offsetScaleX) * mixScaleX) + 1); - var scaleY = (bone.ascaleY * ((target.ascaleY - 1 + this.data.offsetScaleY) * mixScaleY) + 1); - var shearY = bone.ashearY + (target.ashearY + this.data.offsetShearY) * mixShearY; - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - return TransformConstraint; - }()); - spine.TransformConstraint = TransformConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraintData = (function (_super) { - __extends(TransformConstraintData, _super); - function TransformConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.mixRotate = 0; - _this.mixX = 0; - _this.mixY = 0; - _this.mixScaleX = 0; - _this.mixScaleY = 0; - _this.mixShearY = 0; - _this.offsetRotation = 0; - _this.offsetX = 0; - _this.offsetY = 0; - _this.offsetScaleX = 0; - _this.offsetScaleY = 0; - _this.offsetShearY = 0; - _this.relative = false; - _this.local = false; - return _this; - } - return TransformConstraintData; - }(spine.ConstraintData)); - spine.TransformConstraintData = TransformConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Triangulator = (function () { - function Triangulator() { - this.convexPolygons = new Array(); - this.convexPolygonsIndices = new Array(); - this.indicesArray = new Array(); - this.isConcaveArray = new Array(); - this.triangles = new Array(); - this.polygonPool = new spine.Pool(function () { - return new Array(); - }); - this.polygonIndicesPool = new spine.Pool(function () { - return new Array(); - }); - } - Triangulator.prototype.triangulate = function (verticesArray) { - var vertices = verticesArray; - var vertexCount = verticesArray.length >> 1; - var indices = this.indicesArray; - indices.length = 0; - for (var i = 0; i < vertexCount; i++) - indices[i] = i; - var isConcave = this.isConcaveArray; - isConcave.length = 0; - for (var i = 0, n = vertexCount; i < n; ++i) - isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices); - var triangles = this.triangles; - triangles.length = 0; - while (vertexCount > 3) { - var previous = vertexCount - 1, i = 0, next = 1; - while (true) { - outer: if (!isConcave[i]) { - var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; - var p1x = vertices[p1], p1y = vertices[p1 + 1]; - var p2x = vertices[p2], p2y = vertices[p2 + 1]; - var p3x = vertices[p3], p3y = vertices[p3 + 1]; - for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) { - if (!isConcave[ii]) - continue; - var v = indices[ii] << 1; - var vx = vertices[v], vy = vertices[v + 1]; - if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) { - if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) { - if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) - break outer; - } - } - } - break; - } - if (next == 0) { - do { - if (!isConcave[i]) - break; - i--; - } while (i > 0); - break; - } - previous = i; - i = next; - next = (next + 1) % vertexCount; - } - triangles.push(indices[(vertexCount + i - 1) % vertexCount]); - triangles.push(indices[i]); - triangles.push(indices[(i + 1) % vertexCount]); - indices.splice(i, 1); - isConcave.splice(i, 1); - vertexCount--; - var previousIndex = (vertexCount + i - 1) % vertexCount; - var nextIndex = i == vertexCount ? 0 : i; - isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); - isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); - } - if (vertexCount == 3) { - triangles.push(indices[2]); - triangles.push(indices[0]); - triangles.push(indices[1]); - } - return triangles; - }; - Triangulator.prototype.decompose = function (verticesArray, triangles) { - var vertices = verticesArray; - var convexPolygons = this.convexPolygons; - this.polygonPool.freeAll(convexPolygons); - convexPolygons.length = 0; - var convexPolygonsIndices = this.convexPolygonsIndices; - this.polygonIndicesPool.freeAll(convexPolygonsIndices); - convexPolygonsIndices.length = 0; - var polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - var polygon = this.polygonPool.obtain(); - polygon.length = 0; - var fanBaseIndex = -1, lastWinding = 0; - for (var i = 0, n = triangles.length; i < n; i += 3) { - var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; - var x1 = vertices[t1], y1 = vertices[t1 + 1]; - var x2 = vertices[t2], y2 = vertices[t2 + 1]; - var x3 = vertices[t3], y3 = vertices[t3 + 1]; - var merged = false; - if (fanBaseIndex == t1) { - var o = polygon.length - 4; - var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3); - var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]); - if (winding1 == lastWinding && winding2 == lastWinding) { - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(t3); - merged = true; - } - } - if (!merged) { - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - else { - this.polygonPool.free(polygon); - this.polygonIndicesPool.free(polygonIndices); - } - polygon = this.polygonPool.obtain(); - polygon.length = 0; - polygon.push(x1); - polygon.push(y1); - polygon.push(x2); - polygon.push(y2); - polygon.push(x3); - polygon.push(y3); - polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - polygonIndices.push(t1); - polygonIndices.push(t2); - polygonIndices.push(t3); - lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3); - fanBaseIndex = t1; - } - } - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - for (var i = 0, n = convexPolygons.length; i < n; i++) { - polygonIndices = convexPolygonsIndices[i]; - if (polygonIndices.length == 0) - continue; - var firstIndex = polygonIndices[0]; - var lastIndex = polygonIndices[polygonIndices.length - 1]; - polygon = convexPolygons[i]; - var o = polygon.length - 4; - var prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; - var prevX = polygon[o + 2], prevY = polygon[o + 3]; - var firstX = polygon[0], firstY = polygon[1]; - var secondX = polygon[2], secondY = polygon[3]; - var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); - for (var ii = 0; ii < n; ii++) { - if (ii == i) - continue; - var otherIndices = convexPolygonsIndices[ii]; - if (otherIndices.length != 3) - continue; - var otherFirstIndex = otherIndices[0]; - var otherSecondIndex = otherIndices[1]; - var otherLastIndex = otherIndices[2]; - var otherPoly = convexPolygons[ii]; - var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; - if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) - continue; - var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3); - var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY); - if (winding1 == winding && winding2 == winding) { - otherPoly.length = 0; - otherIndices.length = 0; - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(otherLastIndex); - prevPrevX = prevX; - prevPrevY = prevY; - prevX = x3; - prevY = y3; - ii = 0; - } - } - } - for (var i = convexPolygons.length - 1; i >= 0; i--) { - polygon = convexPolygons[i]; - if (polygon.length == 0) { - convexPolygons.splice(i, 1); - this.polygonPool.free(polygon); - polygonIndices = convexPolygonsIndices[i]; - convexPolygonsIndices.splice(i, 1); - this.polygonIndicesPool.free(polygonIndices); - } - } - return convexPolygons; - }; - Triangulator.isConcave = function (index, vertexCount, vertices, indices) { - var previous = indices[(vertexCount + index - 1) % vertexCount] << 1; - var current = indices[index] << 1; - var next = indices[(index + 1) % vertexCount] << 1; - return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]); - }; - Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) { - return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; - }; - Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) { - var px = p2x - p1x, py = p2y - p1y; - return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1; - }; - return Triangulator; - }()); - spine.Triangulator = Triangulator; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IntSet = (function () { - function IntSet() { - this.array = new Array(); - } - IntSet.prototype.add = function (value) { - var contains = this.contains(value); - this.array[value | 0] = value | 0; - return !contains; - }; - IntSet.prototype.contains = function (value) { - return this.array[value | 0] != undefined; - }; - IntSet.prototype.remove = function (value) { - this.array[value | 0] = undefined; - }; - IntSet.prototype.clear = function () { - this.array.length = 0; - }; - return IntSet; - }()); - spine.IntSet = IntSet; - var StringSet = (function () { - function StringSet() { - this.entries = {}; - this.size = 0; - } - StringSet.prototype.add = function (value) { - var contains = this.entries[value]; - this.entries[value] = true; - if (!contains) { - this.size++; - return true; - } - return false; - }; - StringSet.prototype.addAll = function (values) { - var oldSize = this.size; - for (var i = 0, n = values.length; i < n; i++) - this.add(values[i]); - return oldSize != this.size; - }; - StringSet.prototype.contains = function (value) { - return this.entries[value]; - }; - StringSet.prototype.clear = function () { - this.entries = {}; - this.size = 0; - }; - return StringSet; - }()); - spine.StringSet = StringSet; - var Color = (function () { - function Color(r, g, b, a) { - if (r === void 0) { r = 0; } - if (g === void 0) { g = 0; } - if (b === void 0) { b = 0; } - if (a === void 0) { a = 0; } - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } - Color.prototype.set = function (r, g, b, a) { - this.r = r; - this.g = g; - this.b = b; - this.a = a; - return this.clamp(); - }; - Color.prototype.setFromColor = function (c) { - this.r = c.r; - this.g = c.g; - this.b = c.b; - this.a = c.a; - return this; - }; - Color.prototype.setFromString = function (hex) { - hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; - this.r = parseInt(hex.substr(0, 2), 16) / 255; - this.g = parseInt(hex.substr(2, 2), 16) / 255; - this.b = parseInt(hex.substr(4, 2), 16) / 255; - this.a = hex.length != 8 ? 1 : parseInt(hex.substr(6, 2), 16) / 255; - return this; - }; - Color.prototype.add = function (r, g, b, a) { - this.r += r; - this.g += g; - this.b += b; - this.a += a; - return this.clamp(); - }; - Color.prototype.clamp = function () { - if (this.r < 0) - this.r = 0; - else if (this.r > 1) - this.r = 1; - if (this.g < 0) - this.g = 0; - else if (this.g > 1) - this.g = 1; - if (this.b < 0) - this.b = 0; - else if (this.b > 1) - this.b = 1; - if (this.a < 0) - this.a = 0; - else if (this.a > 1) - this.a = 1; - return this; - }; - Color.rgba8888ToColor = function (color, value) { - color.r = ((value & 0xff000000) >>> 24) / 255; - color.g = ((value & 0x00ff0000) >>> 16) / 255; - color.b = ((value & 0x0000ff00) >>> 8) / 255; - color.a = ((value & 0x000000ff)) / 255; - }; - Color.rgb888ToColor = function (color, value) { - color.r = ((value & 0x00ff0000) >>> 16) / 255; - color.g = ((value & 0x0000ff00) >>> 8) / 255; - color.b = ((value & 0x000000ff)) / 255; - }; - Color.fromString = function (hex) { - return new Color().setFromString(hex); - }; - Color.WHITE = new Color(1, 1, 1, 1); - Color.RED = new Color(1, 0, 0, 1); - Color.GREEN = new Color(0, 1, 0, 1); - Color.BLUE = new Color(0, 0, 1, 1); - Color.MAGENTA = new Color(1, 0, 1, 1); - return Color; - }()); - spine.Color = Color; - var MathUtils = (function () { - function MathUtils() { - } - MathUtils.clamp = function (value, min, max) { - if (value < min) - return min; - if (value > max) - return max; - return value; - }; - MathUtils.cosDeg = function (degrees) { - return Math.cos(degrees * MathUtils.degRad); - }; - MathUtils.sinDeg = function (degrees) { - return Math.sin(degrees * MathUtils.degRad); - }; - MathUtils.signum = function (value) { - return value > 0 ? 1 : value < 0 ? -1 : 0; - }; - MathUtils.toInt = function (x) { - return x > 0 ? Math.floor(x) : Math.ceil(x); - }; - MathUtils.cbrt = function (x) { - var y = Math.pow(Math.abs(x), 1 / 3); - return x < 0 ? -y : y; - }; - MathUtils.randomTriangular = function (min, max) { - return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5); - }; - MathUtils.randomTriangularWith = function (min, max, mode) { - var u = Math.random(); - var d = max - min; - if (u <= (mode - min) / d) - return min + Math.sqrt(u * d * (mode - min)); - return max - Math.sqrt((1 - u) * d * (max - mode)); - }; - MathUtils.isPowerOfTwo = function (value) { - return value && (value & (value - 1)) === 0; - }; - MathUtils.PI = 3.1415927; - MathUtils.PI2 = MathUtils.PI * 2; - MathUtils.radiansToDegrees = 180 / MathUtils.PI; - MathUtils.radDeg = MathUtils.radiansToDegrees; - MathUtils.degreesToRadians = MathUtils.PI / 180; - MathUtils.degRad = MathUtils.degreesToRadians; - return MathUtils; - }()); - spine.MathUtils = MathUtils; - var Interpolation = (function () { - function Interpolation() { - } - Interpolation.prototype.apply = function (start, end, a) { - return start + (end - start) * this.applyInternal(a); - }; - return Interpolation; - }()); - spine.Interpolation = Interpolation; - var Pow = (function (_super) { - __extends(Pow, _super); - function Pow(power) { - var _this = _super.call(this) || this; - _this.power = 2; - _this.power = power; - return _this; - } - Pow.prototype.applyInternal = function (a) { - if (a <= 0.5) - return Math.pow(a * 2, this.power) / 2; - return Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1; - }; - return Pow; - }(Interpolation)); - spine.Pow = Pow; - var PowOut = (function (_super) { - __extends(PowOut, _super); - function PowOut(power) { - return _super.call(this, power) || this; - } - PowOut.prototype.applyInternal = function (a) { - return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1; - }; - return PowOut; - }(Pow)); - spine.PowOut = PowOut; - var Utils = (function () { - function Utils() { - } - Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { - for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { - dest[j] = source[i]; - } - }; - Utils.arrayFill = function (array, fromIndex, toIndex, value) { - for (var i = fromIndex; i < toIndex; i++) - array[i] = value; - }; - Utils.setArraySize = function (array, size, value) { - if (value === void 0) { value = 0; } - var oldSize = array.length; - if (oldSize == size) - return array; - array.length = size; - if (oldSize < size) { - for (var i = oldSize; i < size; i++) - array[i] = value; - } - return array; - }; - Utils.ensureArrayCapacity = function (array, size, value) { - if (value === void 0) { value = 0; } - if (array.length >= size) - return array; - return Utils.setArraySize(array, size, value); - }; - Utils.newArray = function (size, defaultValue) { - var array = new Array(size); - for (var i = 0; i < size; i++) - array[i] = defaultValue; - return array; - }; - Utils.newFloatArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) - return new Float32Array(size); - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.newShortArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) - return new Int16Array(size); - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.toFloatArray = function (array) { - return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; - }; - Utils.toSinglePrecision = function (value) { - return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; - }; - Utils.webkit602BugfixHelper = function (alpha, blend) { - }; - Utils.contains = function (array, element, identity) { - if (identity === void 0) { identity = true; } - for (var i = 0; i < array.length; i++) - if (array[i] == element) - return true; - return false; - }; - Utils.enumValue = function (type, name) { - return type[name[0].toUpperCase() + name.slice(1)]; - }; - Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; - return Utils; - }()); - spine.Utils = Utils; - var DebugUtils = (function () { - function DebugUtils() { - } - DebugUtils.logBones = function (skeleton) { - for (var i = 0; i < skeleton.bones.length; i++) { - var bone = skeleton.bones[i]; - console.log(bone.data.name + ", " + bone.a + ", " + bone.b + ", " + bone.c + ", " + bone.d + ", " + bone.worldX + ", " + bone.worldY); - } - }; - return DebugUtils; - }()); - spine.DebugUtils = DebugUtils; - var Pool = (function () { - function Pool(instantiator) { - this.items = new Array(); - this.instantiator = instantiator; - } - Pool.prototype.obtain = function () { - return this.items.length > 0 ? this.items.pop() : this.instantiator(); - }; - Pool.prototype.free = function (item) { - if (item.reset) - item.reset(); - this.items.push(item); - }; - Pool.prototype.freeAll = function (items) { - for (var i = 0; i < items.length; i++) - this.free(items[i]); - }; - Pool.prototype.clear = function () { - this.items.length = 0; - }; - return Pool; - }()); - spine.Pool = Pool; - var Vector2 = (function () { - function Vector2(x, y) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - this.x = x; - this.y = y; - } - Vector2.prototype.set = function (x, y) { - this.x = x; - this.y = y; - return this; - }; - Vector2.prototype.length = function () { - var x = this.x; - var y = this.y; - return Math.sqrt(x * x + y * y); - }; - Vector2.prototype.normalize = function () { - var len = this.length(); - if (len != 0) { - this.x /= len; - this.y /= len; - } - return this; - }; - return Vector2; - }()); - spine.Vector2 = Vector2; - var TimeKeeper = (function () { - function TimeKeeper() { - this.maxDelta = 0.064; - this.framesPerSecond = 0; - this.delta = 0; - this.totalTime = 0; - this.lastTime = Date.now() / 1000; - this.frameCount = 0; - this.frameTime = 0; - } - TimeKeeper.prototype.update = function () { - var now = Date.now() / 1000; - this.delta = now - this.lastTime; - this.frameTime += this.delta; - this.totalTime += this.delta; - if (this.delta > this.maxDelta) - this.delta = this.maxDelta; - this.lastTime = now; - this.frameCount++; - if (this.frameTime > 1) { - this.framesPerSecond = this.frameCount / this.frameTime; - this.frameTime = 0; - this.frameCount = 0; - } - }; - return TimeKeeper; - }()); - spine.TimeKeeper = TimeKeeper; - var WindowedMean = (function () { - function WindowedMean(windowSize) { - if (windowSize === void 0) { windowSize = 32; } - this.addedValues = 0; - this.lastValue = 0; - this.mean = 0; - this.dirty = true; - this.values = new Array(windowSize); - } - WindowedMean.prototype.hasEnoughData = function () { - return this.addedValues >= this.values.length; - }; - WindowedMean.prototype.addValue = function (value) { - if (this.addedValues < this.values.length) - this.addedValues++; - this.values[this.lastValue++] = value; - if (this.lastValue > this.values.length - 1) - this.lastValue = 0; - this.dirty = true; - }; - WindowedMean.prototype.getMean = function () { - if (this.hasEnoughData()) { - if (this.dirty) { - var mean = 0; - for (var i = 0; i < this.values.length; i++) - mean += this.values[i]; - this.mean = mean / this.values.length; - this.dirty = false; - } - return this.mean; - } - return 0; - }; - return WindowedMean; - }()); - spine.WindowedMean = WindowedMean; -})(spine || (spine = {})); -(function () { - if (!Math.fround) { - Math.fround = (function (array) { - return function (x) { - return array[0] = x, array[0]; - }; - })(new Float32Array(1)); - } -})(); -var spine; -(function (spine) { - var Attachment = (function () { - function Attachment(name) { - if (!name) - throw new Error("name cannot be null."); - this.name = name; - } - return Attachment; - }()); - spine.Attachment = Attachment; - var VertexAttachment = (function (_super) { - __extends(VertexAttachment, _super); - function VertexAttachment(name) { - var _this = _super.call(this, name) || this; - _this.id = VertexAttachment.nextID++; - _this.worldVerticesLength = 0; - _this.deformAttachment = _this; - return _this; - } - VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) { - count = offset + (count >> 1) * stride; - var skeleton = slot.bone.skeleton; - var deformArray = slot.deform; - var vertices = this.vertices; - var bones = this.bones; - if (!bones) { - if (deformArray.length > 0) - vertices = deformArray; - var bone = slot.bone; - var x = bone.worldX; - var y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) { - var vx = vertices[v_1], vy = vertices[v_1 + 1]; - worldVertices[w] = vx * a + vy * b + x; - worldVertices[w + 1] = vx * c + vy * d + y; - } - return; - } - var v = 0, skip = 0; - for (var i = 0; i < start; i += 2) { - var n = bones[v]; - v += n + 1; - skip += n; - } - var skeletonBones = skeleton.bones; - if (deformArray.length == 0) { - for (var w = offset, b = skip * 3; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - else { - var deform = deformArray; - for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3, f += 2) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - }; - VertexAttachment.prototype.copyTo = function (attachment) { - if (this.bones) { - attachment.bones = new Array(this.bones.length); - spine.Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length); - } - else - attachment.bones = null; - if (this.vertices) { - attachment.vertices = spine.Utils.newFloatArray(this.vertices.length); - spine.Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length); - } - else - attachment.vertices = null; - attachment.worldVerticesLength = this.worldVerticesLength; - attachment.deformAttachment = this.deformAttachment; - }; - VertexAttachment.nextID = 0; - return VertexAttachment; - }(Attachment)); - spine.VertexAttachment = VertexAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoundingBoxAttachment = (function (_super) { - __extends(BoundingBoxAttachment, _super); - function BoundingBoxAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - BoundingBoxAttachment.prototype.copy = function () { - var copy = new BoundingBoxAttachment(this.name); - this.copyTo(copy); - copy.color.setFromColor(this.color); - return copy; - }; - return BoundingBoxAttachment; - }(spine.VertexAttachment)); - spine.BoundingBoxAttachment = BoundingBoxAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var ClippingAttachment = (function (_super) { - __extends(ClippingAttachment, _super); - function ClippingAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.2275, 0.2275, 0.8078, 1); - return _this; - } - ClippingAttachment.prototype.copy = function () { - var copy = new ClippingAttachment(this.name); - this.copyTo(copy); - copy.endSlot = this.endSlot; - copy.color.setFromColor(this.color); - return copy; - }; - return ClippingAttachment; - }(spine.VertexAttachment)); - spine.ClippingAttachment = ClippingAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var MeshAttachment = (function (_super) { - __extends(MeshAttachment, _super); - function MeshAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - _this.tempColor = new spine.Color(0, 0, 0, 0); - return _this; - } - MeshAttachment.prototype.updateUVs = function () { - var regionUVs = this.regionUVs; - if (!this.uvs || this.uvs.length != regionUVs.length) - this.uvs = spine.Utils.newFloatArray(regionUVs.length); - var uvs = this.uvs; - var n = this.uvs.length; - var u = this.region.u, v = this.region.v, width = 0, height = 0; - if (this.region instanceof spine.TextureAtlasRegion) { - var region = this.region, image = region.page.texture.getImage(); - var textureWidth = image.width, textureHeight = image.height; - switch (region.degrees) { - case 90: - u -= (region.originalHeight - region.offsetY - region.height) / textureWidth; - v -= (region.originalWidth - region.offsetX - region.width) / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i + 1] * width; - uvs[i + 1] = v + (1 - regionUVs[i]) * height; - } - return; - case 180: - u -= (region.originalWidth - region.offsetX - region.width) / textureWidth; - v -= region.offsetY / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i]) * width; - uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height; - } - return; - case 270: - u -= region.offsetY / textureWidth; - v -= region.offsetX / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i + 1]) * width; - uvs[i + 1] = v + regionUVs[i] * height; - } - return; - } - u -= region.offsetX / textureWidth; - v -= (region.originalHeight - region.offsetY - region.height) / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - } - else if (!this.region) { - u = v = 0; - width = height = 1; - } - else { - width = this.region.u2 - u; - height = this.region.v2 - v; - } - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i] * width; - uvs[i + 1] = v + regionUVs[i + 1] * height; - } - }; - MeshAttachment.prototype.getParentMesh = function () { - return this.parentMesh; - }; - MeshAttachment.prototype.setParentMesh = function (parentMesh) { - this.parentMesh = parentMesh; - if (parentMesh) { - this.bones = parentMesh.bones; - this.vertices = parentMesh.vertices; - this.worldVerticesLength = parentMesh.worldVerticesLength; - this.regionUVs = parentMesh.regionUVs; - this.triangles = parentMesh.triangles; - this.hullLength = parentMesh.hullLength; - this.worldVerticesLength = parentMesh.worldVerticesLength; - } - }; - MeshAttachment.prototype.copy = function () { - if (this.parentMesh) - return this.newLinkedMesh(); - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - this.copyTo(copy); - copy.regionUVs = new Array(this.regionUVs.length); - spine.Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length); - copy.uvs = new Array(this.uvs.length); - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length); - copy.triangles = new Array(this.triangles.length); - spine.Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); - copy.hullLength = this.hullLength; - if (this.edges) { - copy.edges = new Array(this.edges.length); - spine.Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); - } - copy.width = this.width; - copy.height = this.height; - return copy; - }; - MeshAttachment.prototype.newLinkedMesh = function () { - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - copy.deformAttachment = this.deformAttachment; - copy.setParentMesh(this.parentMesh ? this.parentMesh : this); - copy.updateUVs(); - return copy; - }; - return MeshAttachment; - }(spine.VertexAttachment)); - spine.MeshAttachment = MeshAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathAttachment = (function (_super) { - __extends(PathAttachment, _super); - function PathAttachment(name) { - var _this = _super.call(this, name) || this; - _this.closed = false; - _this.constantSpeed = false; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - PathAttachment.prototype.copy = function () { - var copy = new PathAttachment(this.name); - this.copyTo(copy); - copy.lengths = new Array(this.lengths.length); - spine.Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length); - copy.closed = closed; - copy.constantSpeed = this.constantSpeed; - copy.color.setFromColor(this.color); - return copy; - }; - return PathAttachment; - }(spine.VertexAttachment)); - spine.PathAttachment = PathAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PointAttachment = (function (_super) { - __extends(PointAttachment, _super); - function PointAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.38, 0.94, 0, 1); - return _this; - } - PointAttachment.prototype.computeWorldPosition = function (bone, point) { - point.x = this.x * bone.a + this.y * bone.b + bone.worldX; - point.y = this.x * bone.c + this.y * bone.d + bone.worldY; - return point; - }; - PointAttachment.prototype.computeWorldRotation = function (bone) { - var cos = spine.MathUtils.cosDeg(this.rotation), sin = spine.MathUtils.sinDeg(this.rotation); - var x = cos * bone.a + sin * bone.b; - var y = cos * bone.c + sin * bone.d; - return Math.atan2(y, x) * spine.MathUtils.radDeg; - }; - PointAttachment.prototype.copy = function () { - var copy = new PointAttachment(this.name); - copy.x = this.x; - copy.y = this.y; - copy.rotation = this.rotation; - copy.color.setFromColor(this.color); - return copy; - }; - return PointAttachment; - }(spine.VertexAttachment)); - spine.PointAttachment = PointAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var RegionAttachment = (function (_super) { - __extends(RegionAttachment, _super); - function RegionAttachment(name) { - var _this = _super.call(this, name) || this; - _this.x = 0; - _this.y = 0; - _this.scaleX = 1; - _this.scaleY = 1; - _this.rotation = 0; - _this.width = 0; - _this.height = 0; - _this.color = new spine.Color(1, 1, 1, 1); - _this.offset = spine.Utils.newFloatArray(8); - _this.uvs = spine.Utils.newFloatArray(8); - _this.tempColor = new spine.Color(1, 1, 1, 1); - return _this; - } - RegionAttachment.prototype.updateOffset = function () { - var region = this.region; - var regionScaleX = this.width / this.region.originalWidth * this.scaleX; - var regionScaleY = this.height / this.region.originalHeight * this.scaleY; - var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; - var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; - var localX2 = localX + this.region.width * regionScaleX; - var localY2 = localY + this.region.height * regionScaleY; - var radians = this.rotation * Math.PI / 180; - var cos = Math.cos(radians); - var sin = Math.sin(radians); - var x = this.x, y = this.y; - var localXCos = localX * cos + x; - var localXSin = localX * sin; - var localYCos = localY * cos + y; - var localYSin = localY * sin; - var localX2Cos = localX2 * cos + x; - var localX2Sin = localX2 * sin; - var localY2Cos = localY2 * cos + y; - var localY2Sin = localY2 * sin; - var offset = this.offset; - offset[0] = localXCos - localYSin; - offset[1] = localYCos + localXSin; - offset[2] = localXCos - localY2Sin; - offset[3] = localY2Cos + localXSin; - offset[4] = localX2Cos - localY2Sin; - offset[5] = localY2Cos + localX2Sin; - offset[6] = localX2Cos - localYSin; - offset[7] = localYCos + localX2Sin; - }; - RegionAttachment.prototype.setRegion = function (region) { - this.region = region; - var uvs = this.uvs; - if (region.degrees == 90) { - uvs[2] = region.u; - uvs[3] = region.v2; - uvs[4] = region.u; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v; - uvs[0] = region.u2; - uvs[1] = region.v2; - } - else { - uvs[0] = region.u; - uvs[1] = region.v2; - uvs[2] = region.u; - uvs[3] = region.v; - uvs[4] = region.u2; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v2; - } - }; - RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) { - var vertexOffset = this.offset; - var x = bone.worldX, y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var offsetX = 0, offsetY = 0; - offsetX = vertexOffset[0]; - offsetY = vertexOffset[1]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[2]; - offsetY = vertexOffset[3]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[4]; - offsetY = vertexOffset[5]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[6]; - offsetY = vertexOffset[7]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - }; - RegionAttachment.prototype.copy = function () { - var copy = new RegionAttachment(this.name); - copy.region = this.region; - copy.rendererObject = this.rendererObject; - copy.path = this.path; - copy.x = this.x; - copy.y = this.y; - copy.scaleX = this.scaleX; - copy.scaleY = this.scaleY; - copy.rotation = this.rotation; - copy.width = this.width; - copy.height = this.height; - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8); - spine.Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8); - copy.color.setFromColor(this.color); - return copy; - }; - RegionAttachment.X1 = 0; - RegionAttachment.Y1 = 1; - RegionAttachment.C1R = 2; - RegionAttachment.C1G = 3; - RegionAttachment.C1B = 4; - RegionAttachment.C1A = 5; - RegionAttachment.U1 = 6; - RegionAttachment.V1 = 7; - RegionAttachment.X2 = 8; - RegionAttachment.Y2 = 9; - RegionAttachment.C2R = 10; - RegionAttachment.C2G = 11; - RegionAttachment.C2B = 12; - RegionAttachment.C2A = 13; - RegionAttachment.U2 = 14; - RegionAttachment.V2 = 15; - RegionAttachment.X3 = 16; - RegionAttachment.Y3 = 17; - RegionAttachment.C3R = 18; - RegionAttachment.C3G = 19; - RegionAttachment.C3B = 20; - RegionAttachment.C3A = 21; - RegionAttachment.U3 = 22; - RegionAttachment.V3 = 23; - RegionAttachment.X4 = 24; - RegionAttachment.Y4 = 25; - RegionAttachment.C4R = 26; - RegionAttachment.C4G = 27; - RegionAttachment.C4B = 28; - RegionAttachment.C4A = 29; - RegionAttachment.U4 = 30; - RegionAttachment.V4 = 31; - return RegionAttachment; - }(spine.Attachment)); - spine.RegionAttachment = RegionAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var JitterEffect = (function () { - function JitterEffect(jitterX, jitterY) { - this.jitterX = 0; - this.jitterY = 0; - this.jitterX = jitterX; - this.jitterY = jitterY; - } - JitterEffect.prototype.begin = function (skeleton) { - }; - JitterEffect.prototype.transform = function (position, uv, light, dark) { - position.x += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - position.y += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - }; - JitterEffect.prototype.end = function () { - }; - return JitterEffect; - }()); - spine.JitterEffect = JitterEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SwirlEffect = (function () { - function SwirlEffect(radius) { - this.centerX = 0; - this.centerY = 0; - this.radius = 0; - this.angle = 0; - this.worldX = 0; - this.worldY = 0; - this.radius = radius; - } - SwirlEffect.prototype.begin = function (skeleton) { - this.worldX = skeleton.x + this.centerX; - this.worldY = skeleton.y + this.centerY; - }; - SwirlEffect.prototype.transform = function (position, uv, light, dark) { - var radAngle = this.angle * spine.MathUtils.degreesToRadians; - var x = position.x - this.worldX; - var y = position.y - this.worldY; - var dist = Math.sqrt(x * x + y * y); - if (dist < this.radius) { - var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius); - var cos = Math.cos(theta); - var sin = Math.sin(theta); - position.x = cos * x - sin * y + this.worldX; - position.y = sin * x + cos * y + this.worldY; - } - }; - SwirlEffect.prototype.end = function () { - }; - SwirlEffect.interpolation = new spine.PowOut(2); - return SwirlEffect; - }()); - spine.SwirlEffect = SwirlEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var AssetManager = (function (_super) { - __extends(AssetManager, _super); - function AssetManager(context, pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - return _super.call(this, function (image) { - return new spine.webgl.GLTexture(context, image); - }, pathPrefix, downloader) || this; - } - return AssetManager; - }(spine.AssetManager)); - webgl.AssetManager = AssetManager; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var OrthoCamera = (function () { - function OrthoCamera(viewportWidth, viewportHeight) { - this.position = new webgl.Vector3(0, 0, 0); - this.direction = new webgl.Vector3(0, 0, -1); - this.up = new webgl.Vector3(0, 1, 0); - this.near = 0; - this.far = 100; - this.zoom = 1; - this.viewportWidth = 0; - this.viewportHeight = 0; - this.projectionView = new webgl.Matrix4(); - this.inverseProjectionView = new webgl.Matrix4(); - this.projection = new webgl.Matrix4(); - this.view = new webgl.Matrix4(); - this.viewportWidth = viewportWidth; - this.viewportHeight = viewportHeight; - this.update(); - } - OrthoCamera.prototype.update = function () { - var projection = this.projection; - var view = this.view; - var projectionView = this.projectionView; - var inverseProjectionView = this.inverseProjectionView; - var zoom = this.zoom, viewportWidth = this.viewportWidth, viewportHeight = this.viewportHeight; - projection.ortho(zoom * (-viewportWidth / 2), zoom * (viewportWidth / 2), zoom * (-viewportHeight / 2), zoom * (viewportHeight / 2), this.near, this.far); - view.lookAt(this.position, this.direction, this.up); - projectionView.set(projection.values); - projectionView.multiply(view); - inverseProjectionView.set(projectionView.values).invert(); - }; - OrthoCamera.prototype.screenToWorld = function (screenCoords, screenWidth, screenHeight) { - var x = screenCoords.x, y = screenHeight - screenCoords.y - 1; - screenCoords.x = (2 * x) / screenWidth - 1; - screenCoords.y = (2 * y) / screenHeight - 1; - screenCoords.z = (2 * screenCoords.z) - 1; - screenCoords.project(this.inverseProjectionView); - return screenCoords; - }; - OrthoCamera.prototype.worldToScreen = function (worldCoords, screenWidth, screenHeight) { - worldCoords.project(this.projectionView); - worldCoords.x = screenWidth * (worldCoords.x + 1) / 2; - worldCoords.y = screenHeight * (worldCoords.y + 1) / 2; - worldCoords.z = (worldCoords.z + 1) / 2; - return worldCoords; - }; - OrthoCamera.prototype.setViewport = function (viewportWidth, viewportHeight) { - this.viewportWidth = viewportWidth; - this.viewportHeight = viewportHeight; - }; - return OrthoCamera; - }()); - webgl.OrthoCamera = OrthoCamera; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var GLTexture = (function (_super) { - __extends(GLTexture, _super); - function GLTexture(context, image, useMipMaps) { - if (useMipMaps === void 0) { useMipMaps = false; } - var _this = _super.call(this, image) || this; - _this.texture = null; - _this.boundUnit = 0; - _this.useMipMaps = false; - _this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - _this.useMipMaps = useMipMaps; - _this.restore(); - _this.context.addRestorable(_this); - return _this; - } - GLTexture.prototype.setFilters = function (minFilter, magFilter) { - var gl = this.context.gl; - this.bind(); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, GLTexture.validateMagFilter(magFilter)); - }; - GLTexture.validateMagFilter = function (magFilter) { - switch (magFilter) { - case spine.TextureFilter.MipMap: - case spine.TextureFilter.MipMapLinearLinear: - case spine.TextureFilter.MipMapLinearNearest: - case spine.TextureFilter.MipMapNearestLinear: - case spine.TextureFilter.MipMapNearestNearest: - return spine.TextureFilter.Linear; - default: - return magFilter; - } - }; - GLTexture.prototype.setWraps = function (uWrap, vWrap) { - var gl = this.context.gl; - this.bind(); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); - }; - GLTexture.prototype.update = function (useMipMaps) { - var gl = this.context.gl; - if (!this.texture) - this.texture = this.context.gl.createTexture(); - this.bind(); - if (GLTexture.DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL) - gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - if (useMipMaps) - gl.generateMipmap(gl.TEXTURE_2D); - }; - GLTexture.prototype.restore = function () { - this.texture = null; - this.update(this.useMipMaps); - }; - GLTexture.prototype.bind = function (unit) { - if (unit === void 0) { unit = 0; } - var gl = this.context.gl; - this.boundUnit = unit; - gl.activeTexture(gl.TEXTURE0 + unit); - gl.bindTexture(gl.TEXTURE_2D, this.texture); - }; - GLTexture.prototype.unbind = function () { - var gl = this.context.gl; - gl.activeTexture(gl.TEXTURE0 + this.boundUnit); - gl.bindTexture(gl.TEXTURE_2D, null); - }; - GLTexture.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - gl.deleteTexture(this.texture); - }; - GLTexture.DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL = false; - return GLTexture; - }(spine.Texture)); - webgl.GLTexture = GLTexture; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Input = (function () { - function Input(element) { - this.lastX = 0; - this.lastY = 0; - this.buttonDown = false; - this.currTouch = null; - this.listeners = new Array(); - this.touchesPool = new spine.Pool(function () { - return new spine.webgl.Touch(0, 0, 0); - }); - this.element = element; - this.setupCallbacks(element); - } - Input.prototype.setupCallbacks = function (element) { - var _this = this; - var mouseDown = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) - if (listeners[i].down) - listeners[i].down(x, y); - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = true; - document.addEventListener("mousemove", mouseMove); - document.addEventListener("mouseup", mouseUp); - } - }; - var mouseMove = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) { - if (_this.buttonDown) { - if (listeners[i].dragged) - listeners[i].dragged(x, y); - } - else { - if (listeners[i].moved) - listeners[i].moved(x, y); - } - } - _this.lastX = x; - _this.lastY = y; - } - }; - var mouseUp = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) - if (listeners[i].up) - listeners[i].up(x, y); - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - document.removeEventListener("mousemove", mouseMove); - document.removeEventListener("mouseup", mouseUp); - } - }; - element.addEventListener("mousedown", mouseDown, true); - element.addEventListener("mousemove", mouseMove, true); - element.addEventListener("mouseup", mouseUp, true); - element.addEventListener("touchstart", function (ev) { - if (!_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - var rect = element.getBoundingClientRect(); - var x = touch.clientX - rect.left; - var y = touch.clientY - rect.top; - _this.currTouch = _this.touchesPool.obtain(); - _this.currTouch.identifier = touch.identifier; - _this.currTouch.x = x; - _this.currTouch.y = y; - break; - } - var listeners = _this.listeners; - for (var i_17 = 0; i_17 < listeners.length; i_17++) { - if (listeners[i_17].down) - listeners[i_17].down(_this.currTouch.x, _this.currTouch.y); - } - _this.lastX = _this.currTouch.x; - _this.lastY = _this.currTouch.y; - _this.buttonDown = true; - } - ev.preventDefault(); - }, false); - element.addEventListener("touchend", function (ev) { - if (_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = _this.currTouch.x = touch.clientX - rect.left; - var y = _this.currTouch.y = touch.clientY - rect.top; - _this.touchesPool.free(_this.currTouch); - var listeners = _this.listeners; - for (var i_18 = 0; i_18 < listeners.length; i_18++) { - if (listeners[i_18].up) - listeners[i_18].up(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - _this.currTouch = null; - break; - } - } - } - ev.preventDefault(); - }, false); - element.addEventListener("touchcancel", function (ev) { - if (_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = _this.currTouch.x = touch.clientX - rect.left; - var y = _this.currTouch.y = touch.clientY - rect.top; - _this.touchesPool.free(_this.currTouch); - var listeners = _this.listeners; - for (var i_19 = 0; i_19 < listeners.length; i_19++) { - if (listeners[i_19].up) - listeners[i_19].up(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - _this.currTouch = null; - break; - } - } - } - ev.preventDefault(); - }, false); - element.addEventListener("touchmove", function (ev) { - if (_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = touch.clientX - rect.left; - var y = touch.clientY - rect.top; - var listeners = _this.listeners; - for (var i_20 = 0; i_20 < listeners.length; i_20++) { - if (listeners[i_20].dragged) - listeners[i_20].dragged(x, y); - } - _this.lastX = _this.currTouch.x = x; - _this.lastY = _this.currTouch.y = y; - break; - } - } - } - ev.preventDefault(); - }, false); - }; - Input.prototype.addListener = function (listener) { - this.listeners.push(listener); - }; - Input.prototype.removeListener = function (listener) { - var idx = this.listeners.indexOf(listener); - if (idx > -1) { - this.listeners.splice(idx, 1); - } - }; - return Input; - }()); - webgl.Input = Input; - var Touch = (function () { - function Touch(identifier, x, y) { - this.identifier = identifier; - this.x = x; - this.y = y; - } - return Touch; - }()); - webgl.Touch = Touch; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var spinnerImage; - var logoImage; - var loaded = 0; - var FADE_IN = 1, FADE_OUT = 1; - var logoWidth = 165, logoHeight = 108, spinnerSize = 163; - var LoadingScreen = (function () { - function LoadingScreen(renderer) { - this.logo = null; - this.spinner = null; - this.angle = 0; - this.fadeOut = 0; - this.fadeIn = 0; - this.timeKeeper = new spine.TimeKeeper(); - this.backgroundColor = new spine.Color(0.135, 0.135, 0.135, 1); - this.tempColor = new spine.Color(); - this.renderer = renderer; - this.timeKeeper.maxDelta = 9; - if (!logoImage) { - var isSafari = navigator.userAgent.indexOf("Safari") > -1; - var onload_1 = function () { return loaded++; }; - logoImage = new Image(); - logoImage.src = SPINE_LOGO_DATA; - if (!isSafari) - logoImage.crossOrigin = "anonymous"; - logoImage.onload = onload_1; - spinnerImage = new Image(); - spinnerImage.src = SPINNER_DATA; - if (!isSafari) - spinnerImage.crossOrigin = "anonymous"; - spinnerImage.onload = onload_1; - } - } - LoadingScreen.prototype.draw = function (complete) { - if (complete === void 0) { complete = false; } - if (loaded < 2 || (complete && this.fadeOut > FADE_OUT)) - return; - this.timeKeeper.update(); - var a = Math.abs(Math.sin(this.timeKeeper.totalTime + 0.25)); - this.angle -= this.timeKeeper.delta * 200 * (1 + 1.5 * Math.pow(a, 5)); - var tempColor = this.tempColor; - var renderer = this.renderer; - var canvas = renderer.canvas; - var gl = renderer.context.gl; - renderer.resize(webgl.ResizeMode.Expand); - renderer.camera.position.set(canvas.width / 2, canvas.height / 2, 0); - renderer.batcher.setBlendMode(gl.ONE, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - if (complete) { - this.fadeOut += this.timeKeeper.delta * (this.timeKeeper.totalTime < 1 ? 2 : 1); - if (this.fadeOut > FADE_OUT) - return; - tempColor.setFromColor(this.backgroundColor); - a = 1 - this.fadeOut / FADE_OUT; - a = 1 - (a - 1) * (a - 1); - tempColor.a *= a; - if (tempColor.a > 0) { - renderer.camera.zoom = 1; - renderer.begin(); - renderer.quad(true, 0, 0, canvas.width, 0, canvas.width, canvas.height, 0, canvas.height, tempColor, tempColor, tempColor, tempColor); - renderer.end(); - } - } - else { - this.fadeIn += this.timeKeeper.delta; - if (this.backgroundColor.a > 0) { - gl.clearColor(this.backgroundColor.r, this.backgroundColor.g, this.backgroundColor.b, this.backgroundColor.a); - gl.clear(gl.COLOR_BUFFER_BIT); - } - a = 1; - } - a *= Math.min(this.fadeIn / FADE_IN, 1); - tempColor.set(a, a, a, a); - if (!this.logo) { - this.logo = new webgl.GLTexture(renderer.context, logoImage); - this.spinner = new webgl.GLTexture(renderer.context, spinnerImage); - } - renderer.camera.zoom = Math.max(1, spinnerSize / canvas.height); - renderer.begin(); - renderer.drawTexture(this.logo, (canvas.width - logoWidth) / 2, (canvas.height - logoHeight) / 2, logoWidth, logoHeight, tempColor); - renderer.drawTextureRotated(this.spinner, (canvas.width - spinnerSize) / 2, (canvas.height - spinnerSize) / 2, spinnerSize, spinnerSize, spinnerSize / 2, spinnerSize / 2, this.angle, tempColor); - renderer.end(); - }; - return LoadingScreen; - }()); - webgl.LoadingScreen = LoadingScreen; - var SPINNER_DATA = "data:image/png;base64,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"; - var SPINE_LOGO_DATA = "data:image/png;base64,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"; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - webgl.M00 = 0; - webgl.M01 = 4; - webgl.M02 = 8; - webgl.M03 = 12; - webgl.M10 = 1; - webgl.M11 = 5; - webgl.M12 = 9; - webgl.M13 = 13; - webgl.M20 = 2; - webgl.M21 = 6; - webgl.M22 = 10; - webgl.M23 = 14; - webgl.M30 = 3; - webgl.M31 = 7; - webgl.M32 = 11; - webgl.M33 = 15; - var Matrix4 = (function () { - function Matrix4() { - this.temp = new Float32Array(16); - this.values = new Float32Array(16); - var v = this.values; - v[webgl.M00] = 1; - v[webgl.M11] = 1; - v[webgl.M22] = 1; - v[webgl.M33] = 1; - } - Matrix4.prototype.set = function (values) { - this.values.set(values); - return this; - }; - Matrix4.prototype.transpose = function () { - var t = this.temp; - var v = this.values; - t[webgl.M00] = v[webgl.M00]; - t[webgl.M01] = v[webgl.M10]; - t[webgl.M02] = v[webgl.M20]; - t[webgl.M03] = v[webgl.M30]; - t[webgl.M10] = v[webgl.M01]; - t[webgl.M11] = v[webgl.M11]; - t[webgl.M12] = v[webgl.M21]; - t[webgl.M13] = v[webgl.M31]; - t[webgl.M20] = v[webgl.M02]; - t[webgl.M21] = v[webgl.M12]; - t[webgl.M22] = v[webgl.M22]; - t[webgl.M23] = v[webgl.M32]; - t[webgl.M30] = v[webgl.M03]; - t[webgl.M31] = v[webgl.M13]; - t[webgl.M32] = v[webgl.M23]; - t[webgl.M33] = v[webgl.M33]; - return this.set(t); - }; - Matrix4.prototype.identity = function () { - var v = this.values; - v[webgl.M00] = 1; - v[webgl.M01] = 0; - v[webgl.M02] = 0; - v[webgl.M03] = 0; - v[webgl.M10] = 0; - v[webgl.M11] = 1; - v[webgl.M12] = 0; - v[webgl.M13] = 0; - v[webgl.M20] = 0; - v[webgl.M21] = 0; - v[webgl.M22] = 1; - v[webgl.M23] = 0; - v[webgl.M30] = 0; - v[webgl.M31] = 0; - v[webgl.M32] = 0; - v[webgl.M33] = 1; - return this; - }; - Matrix4.prototype.invert = function () { - var v = this.values; - var t = this.temp; - var l_det = v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] - + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] - - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] - - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] - + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] - + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] - - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] - - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - if (l_det == 0) - throw new Error("non-invertible matrix"); - var inv_det = 1.0 / l_det; - t[webgl.M00] = v[webgl.M12] * v[webgl.M23] * v[webgl.M31] - v[webgl.M13] * v[webgl.M22] * v[webgl.M31] + v[webgl.M13] * v[webgl.M21] * v[webgl.M32] - - v[webgl.M11] * v[webgl.M23] * v[webgl.M32] - v[webgl.M12] * v[webgl.M21] * v[webgl.M33] + v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M01] = v[webgl.M03] * v[webgl.M22] * v[webgl.M31] - v[webgl.M02] * v[webgl.M23] * v[webgl.M31] - v[webgl.M03] * v[webgl.M21] * v[webgl.M32] - + v[webgl.M01] * v[webgl.M23] * v[webgl.M32] + v[webgl.M02] * v[webgl.M21] * v[webgl.M33] - v[webgl.M01] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M02] = v[webgl.M02] * v[webgl.M13] * v[webgl.M31] - v[webgl.M03] * v[webgl.M12] * v[webgl.M31] + v[webgl.M03] * v[webgl.M11] * v[webgl.M32] - - v[webgl.M01] * v[webgl.M13] * v[webgl.M32] - v[webgl.M02] * v[webgl.M11] * v[webgl.M33] + v[webgl.M01] * v[webgl.M12] * v[webgl.M33]; - t[webgl.M03] = v[webgl.M03] * v[webgl.M12] * v[webgl.M21] - v[webgl.M02] * v[webgl.M13] * v[webgl.M21] - v[webgl.M03] * v[webgl.M11] * v[webgl.M22] - + v[webgl.M01] * v[webgl.M13] * v[webgl.M22] + v[webgl.M02] * v[webgl.M11] * v[webgl.M23] - v[webgl.M01] * v[webgl.M12] * v[webgl.M23]; - t[webgl.M10] = v[webgl.M13] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M20] * v[webgl.M32] - + v[webgl.M10] * v[webgl.M23] * v[webgl.M32] + v[webgl.M12] * v[webgl.M20] * v[webgl.M33] - v[webgl.M10] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M11] = v[webgl.M02] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M22] * v[webgl.M30] + v[webgl.M03] * v[webgl.M20] * v[webgl.M32] - - v[webgl.M00] * v[webgl.M23] * v[webgl.M32] - v[webgl.M02] * v[webgl.M20] * v[webgl.M33] + v[webgl.M00] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M12] = v[webgl.M03] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M10] * v[webgl.M32] - + v[webgl.M00] * v[webgl.M13] * v[webgl.M32] + v[webgl.M02] * v[webgl.M10] * v[webgl.M33] - v[webgl.M00] * v[webgl.M12] * v[webgl.M33]; - t[webgl.M13] = v[webgl.M02] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M12] * v[webgl.M20] + v[webgl.M03] * v[webgl.M10] * v[webgl.M22] - - v[webgl.M00] * v[webgl.M13] * v[webgl.M22] - v[webgl.M02] * v[webgl.M10] * v[webgl.M23] + v[webgl.M00] * v[webgl.M12] * v[webgl.M23]; - t[webgl.M20] = v[webgl.M11] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M21] * v[webgl.M30] + v[webgl.M13] * v[webgl.M20] * v[webgl.M31] - - v[webgl.M10] * v[webgl.M23] * v[webgl.M31] - v[webgl.M11] * v[webgl.M20] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M33]; - t[webgl.M21] = v[webgl.M03] * v[webgl.M21] * v[webgl.M30] - v[webgl.M01] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M20] * v[webgl.M31] - + v[webgl.M00] * v[webgl.M23] * v[webgl.M31] + v[webgl.M01] * v[webgl.M20] * v[webgl.M33] - v[webgl.M00] * v[webgl.M21] * v[webgl.M33]; - t[webgl.M22] = v[webgl.M01] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M11] * v[webgl.M30] + v[webgl.M03] * v[webgl.M10] * v[webgl.M31] - - v[webgl.M00] * v[webgl.M13] * v[webgl.M31] - v[webgl.M01] * v[webgl.M10] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M33]; - t[webgl.M23] = v[webgl.M03] * v[webgl.M11] * v[webgl.M20] - v[webgl.M01] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M10] * v[webgl.M21] - + v[webgl.M00] * v[webgl.M13] * v[webgl.M21] + v[webgl.M01] * v[webgl.M10] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M23]; - t[webgl.M30] = v[webgl.M12] * v[webgl.M21] * v[webgl.M30] - v[webgl.M11] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M20] * v[webgl.M31] - + v[webgl.M10] * v[webgl.M22] * v[webgl.M31] + v[webgl.M11] * v[webgl.M20] * v[webgl.M32] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32]; - t[webgl.M31] = v[webgl.M01] * v[webgl.M22] * v[webgl.M30] - v[webgl.M02] * v[webgl.M21] * v[webgl.M30] + v[webgl.M02] * v[webgl.M20] * v[webgl.M31] - - v[webgl.M00] * v[webgl.M22] * v[webgl.M31] - v[webgl.M01] * v[webgl.M20] * v[webgl.M32] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32]; - t[webgl.M32] = v[webgl.M02] * v[webgl.M11] * v[webgl.M30] - v[webgl.M01] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M10] * v[webgl.M31] - + v[webgl.M00] * v[webgl.M12] * v[webgl.M31] + v[webgl.M01] * v[webgl.M10] * v[webgl.M32] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32]; - t[webgl.M33] = v[webgl.M01] * v[webgl.M12] * v[webgl.M20] - v[webgl.M02] * v[webgl.M11] * v[webgl.M20] + v[webgl.M02] * v[webgl.M10] * v[webgl.M21] - - v[webgl.M00] * v[webgl.M12] * v[webgl.M21] - v[webgl.M01] * v[webgl.M10] * v[webgl.M22] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22]; - v[webgl.M00] = t[webgl.M00] * inv_det; - v[webgl.M01] = t[webgl.M01] * inv_det; - v[webgl.M02] = t[webgl.M02] * inv_det; - v[webgl.M03] = t[webgl.M03] * inv_det; - v[webgl.M10] = t[webgl.M10] * inv_det; - v[webgl.M11] = t[webgl.M11] * inv_det; - v[webgl.M12] = t[webgl.M12] * inv_det; - v[webgl.M13] = t[webgl.M13] * inv_det; - v[webgl.M20] = t[webgl.M20] * inv_det; - v[webgl.M21] = t[webgl.M21] * inv_det; - v[webgl.M22] = t[webgl.M22] * inv_det; - v[webgl.M23] = t[webgl.M23] * inv_det; - v[webgl.M30] = t[webgl.M30] * inv_det; - v[webgl.M31] = t[webgl.M31] * inv_det; - v[webgl.M32] = t[webgl.M32] * inv_det; - v[webgl.M33] = t[webgl.M33] * inv_det; - return this; - }; - Matrix4.prototype.determinant = function () { - var v = this.values; - return v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] - + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] - - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] - - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] - + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] - + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] - - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] - - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - }; - Matrix4.prototype.translate = function (x, y, z) { - var v = this.values; - v[webgl.M03] += x; - v[webgl.M13] += y; - v[webgl.M23] += z; - return this; - }; - Matrix4.prototype.copy = function () { - return new Matrix4().set(this.values); - }; - Matrix4.prototype.projection = function (near, far, fovy, aspectRatio) { - this.identity(); - var l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); - var l_a1 = (far + near) / (near - far); - var l_a2 = (2 * far * near) / (near - far); - var v = this.values; - v[webgl.M00] = l_fd / aspectRatio; - v[webgl.M10] = 0; - v[webgl.M20] = 0; - v[webgl.M30] = 0; - v[webgl.M01] = 0; - v[webgl.M11] = l_fd; - v[webgl.M21] = 0; - v[webgl.M31] = 0; - v[webgl.M02] = 0; - v[webgl.M12] = 0; - v[webgl.M22] = l_a1; - v[webgl.M32] = -1; - v[webgl.M03] = 0; - v[webgl.M13] = 0; - v[webgl.M23] = l_a2; - v[webgl.M33] = 0; - return this; - }; - Matrix4.prototype.ortho2d = function (x, y, width, height) { - return this.ortho(x, x + width, y, y + height, 0, 1); - }; - Matrix4.prototype.ortho = function (left, right, bottom, top, near, far) { - this.identity(); - var x_orth = 2 / (right - left); - var y_orth = 2 / (top - bottom); - var z_orth = -2 / (far - near); - var tx = -(right + left) / (right - left); - var ty = -(top + bottom) / (top - bottom); - var tz = -(far + near) / (far - near); - var v = this.values; - v[webgl.M00] = x_orth; - v[webgl.M10] = 0; - v[webgl.M20] = 0; - v[webgl.M30] = 0; - v[webgl.M01] = 0; - v[webgl.M11] = y_orth; - v[webgl.M21] = 0; - v[webgl.M31] = 0; - v[webgl.M02] = 0; - v[webgl.M12] = 0; - v[webgl.M22] = z_orth; - v[webgl.M32] = 0; - v[webgl.M03] = tx; - v[webgl.M13] = ty; - v[webgl.M23] = tz; - v[webgl.M33] = 1; - return this; - }; - Matrix4.prototype.multiply = function (matrix) { - var t = this.temp; - var v = this.values; - var m = matrix.values; - t[webgl.M00] = v[webgl.M00] * m[webgl.M00] + v[webgl.M01] * m[webgl.M10] + v[webgl.M02] * m[webgl.M20] + v[webgl.M03] * m[webgl.M30]; - t[webgl.M01] = v[webgl.M00] * m[webgl.M01] + v[webgl.M01] * m[webgl.M11] + v[webgl.M02] * m[webgl.M21] + v[webgl.M03] * m[webgl.M31]; - t[webgl.M02] = v[webgl.M00] * m[webgl.M02] + v[webgl.M01] * m[webgl.M12] + v[webgl.M02] * m[webgl.M22] + v[webgl.M03] * m[webgl.M32]; - t[webgl.M03] = v[webgl.M00] * m[webgl.M03] + v[webgl.M01] * m[webgl.M13] + v[webgl.M02] * m[webgl.M23] + v[webgl.M03] * m[webgl.M33]; - t[webgl.M10] = v[webgl.M10] * m[webgl.M00] + v[webgl.M11] * m[webgl.M10] + v[webgl.M12] * m[webgl.M20] + v[webgl.M13] * m[webgl.M30]; - t[webgl.M11] = v[webgl.M10] * m[webgl.M01] + v[webgl.M11] * m[webgl.M11] + v[webgl.M12] * m[webgl.M21] + v[webgl.M13] * m[webgl.M31]; - t[webgl.M12] = v[webgl.M10] * m[webgl.M02] + v[webgl.M11] * m[webgl.M12] + v[webgl.M12] * m[webgl.M22] + v[webgl.M13] * m[webgl.M32]; - t[webgl.M13] = v[webgl.M10] * m[webgl.M03] + v[webgl.M11] * m[webgl.M13] + v[webgl.M12] * m[webgl.M23] + v[webgl.M13] * m[webgl.M33]; - t[webgl.M20] = v[webgl.M20] * m[webgl.M00] + v[webgl.M21] * m[webgl.M10] + v[webgl.M22] * m[webgl.M20] + v[webgl.M23] * m[webgl.M30]; - t[webgl.M21] = v[webgl.M20] * m[webgl.M01] + v[webgl.M21] * m[webgl.M11] + v[webgl.M22] * m[webgl.M21] + v[webgl.M23] * m[webgl.M31]; - t[webgl.M22] = v[webgl.M20] * m[webgl.M02] + v[webgl.M21] * m[webgl.M12] + v[webgl.M22] * m[webgl.M22] + v[webgl.M23] * m[webgl.M32]; - t[webgl.M23] = v[webgl.M20] * m[webgl.M03] + v[webgl.M21] * m[webgl.M13] + v[webgl.M22] * m[webgl.M23] + v[webgl.M23] * m[webgl.M33]; - t[webgl.M30] = v[webgl.M30] * m[webgl.M00] + v[webgl.M31] * m[webgl.M10] + v[webgl.M32] * m[webgl.M20] + v[webgl.M33] * m[webgl.M30]; - t[webgl.M31] = v[webgl.M30] * m[webgl.M01] + v[webgl.M31] * m[webgl.M11] + v[webgl.M32] * m[webgl.M21] + v[webgl.M33] * m[webgl.M31]; - t[webgl.M32] = v[webgl.M30] * m[webgl.M02] + v[webgl.M31] * m[webgl.M12] + v[webgl.M32] * m[webgl.M22] + v[webgl.M33] * m[webgl.M32]; - t[webgl.M33] = v[webgl.M30] * m[webgl.M03] + v[webgl.M31] * m[webgl.M13] + v[webgl.M32] * m[webgl.M23] + v[webgl.M33] * m[webgl.M33]; - return this.set(this.temp); - }; - Matrix4.prototype.multiplyLeft = function (matrix) { - var t = this.temp; - var v = this.values; - var m = matrix.values; - t[webgl.M00] = m[webgl.M00] * v[webgl.M00] + m[webgl.M01] * v[webgl.M10] + m[webgl.M02] * v[webgl.M20] + m[webgl.M03] * v[webgl.M30]; - t[webgl.M01] = m[webgl.M00] * v[webgl.M01] + m[webgl.M01] * v[webgl.M11] + m[webgl.M02] * v[webgl.M21] + m[webgl.M03] * v[webgl.M31]; - t[webgl.M02] = m[webgl.M00] * v[webgl.M02] + m[webgl.M01] * v[webgl.M12] + m[webgl.M02] * v[webgl.M22] + m[webgl.M03] * v[webgl.M32]; - t[webgl.M03] = m[webgl.M00] * v[webgl.M03] + m[webgl.M01] * v[webgl.M13] + m[webgl.M02] * v[webgl.M23] + m[webgl.M03] * v[webgl.M33]; - t[webgl.M10] = m[webgl.M10] * v[webgl.M00] + m[webgl.M11] * v[webgl.M10] + m[webgl.M12] * v[webgl.M20] + m[webgl.M13] * v[webgl.M30]; - t[webgl.M11] = m[webgl.M10] * v[webgl.M01] + m[webgl.M11] * v[webgl.M11] + m[webgl.M12] * v[webgl.M21] + m[webgl.M13] * v[webgl.M31]; - t[webgl.M12] = m[webgl.M10] * v[webgl.M02] + m[webgl.M11] * v[webgl.M12] + m[webgl.M12] * v[webgl.M22] + m[webgl.M13] * v[webgl.M32]; - t[webgl.M13] = m[webgl.M10] * v[webgl.M03] + m[webgl.M11] * v[webgl.M13] + m[webgl.M12] * v[webgl.M23] + m[webgl.M13] * v[webgl.M33]; - t[webgl.M20] = m[webgl.M20] * v[webgl.M00] + m[webgl.M21] * v[webgl.M10] + m[webgl.M22] * v[webgl.M20] + m[webgl.M23] * v[webgl.M30]; - t[webgl.M21] = m[webgl.M20] * v[webgl.M01] + m[webgl.M21] * v[webgl.M11] + m[webgl.M22] * v[webgl.M21] + m[webgl.M23] * v[webgl.M31]; - t[webgl.M22] = m[webgl.M20] * v[webgl.M02] + m[webgl.M21] * v[webgl.M12] + m[webgl.M22] * v[webgl.M22] + m[webgl.M23] * v[webgl.M32]; - t[webgl.M23] = m[webgl.M20] * v[webgl.M03] + m[webgl.M21] * v[webgl.M13] + m[webgl.M22] * v[webgl.M23] + m[webgl.M23] * v[webgl.M33]; - t[webgl.M30] = m[webgl.M30] * v[webgl.M00] + m[webgl.M31] * v[webgl.M10] + m[webgl.M32] * v[webgl.M20] + m[webgl.M33] * v[webgl.M30]; - t[webgl.M31] = m[webgl.M30] * v[webgl.M01] + m[webgl.M31] * v[webgl.M11] + m[webgl.M32] * v[webgl.M21] + m[webgl.M33] * v[webgl.M31]; - t[webgl.M32] = m[webgl.M30] * v[webgl.M02] + m[webgl.M31] * v[webgl.M12] + m[webgl.M32] * v[webgl.M22] + m[webgl.M33] * v[webgl.M32]; - t[webgl.M33] = m[webgl.M30] * v[webgl.M03] + m[webgl.M31] * v[webgl.M13] + m[webgl.M32] * v[webgl.M23] + m[webgl.M33] * v[webgl.M33]; - return this.set(this.temp); - }; - Matrix4.prototype.lookAt = function (position, direction, up) { - Matrix4.initTemps(); - var xAxis = Matrix4.xAxis, yAxis = Matrix4.yAxis, zAxis = Matrix4.zAxis; - zAxis.setFrom(direction).normalize(); - xAxis.setFrom(direction).normalize(); - xAxis.cross(up).normalize(); - yAxis.setFrom(xAxis).cross(zAxis).normalize(); - this.identity(); - var val = this.values; - val[webgl.M00] = xAxis.x; - val[webgl.M01] = xAxis.y; - val[webgl.M02] = xAxis.z; - val[webgl.M10] = yAxis.x; - val[webgl.M11] = yAxis.y; - val[webgl.M12] = yAxis.z; - val[webgl.M20] = -zAxis.x; - val[webgl.M21] = -zAxis.y; - val[webgl.M22] = -zAxis.z; - Matrix4.tmpMatrix.identity(); - Matrix4.tmpMatrix.values[webgl.M03] = -position.x; - Matrix4.tmpMatrix.values[webgl.M13] = -position.y; - Matrix4.tmpMatrix.values[webgl.M23] = -position.z; - this.multiply(Matrix4.tmpMatrix); - return this; - }; - Matrix4.initTemps = function () { - if (Matrix4.xAxis === null) - Matrix4.xAxis = new webgl.Vector3(); - if (Matrix4.yAxis === null) - Matrix4.yAxis = new webgl.Vector3(); - if (Matrix4.zAxis === null) - Matrix4.zAxis = new webgl.Vector3(); - }; - Matrix4.xAxis = null; - Matrix4.yAxis = null; - Matrix4.zAxis = null; - Matrix4.tmpMatrix = new Matrix4(); - return Matrix4; - }()); - webgl.Matrix4 = Matrix4; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Mesh = (function () { - function Mesh(context, attributes, maxVertices, maxIndices) { - this.attributes = attributes; - this.verticesLength = 0; - this.dirtyVertices = false; - this.indicesLength = 0; - this.dirtyIndices = false; - this.elementsPerVertex = 0; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.elementsPerVertex = 0; - for (var i = 0; i < attributes.length; i++) { - this.elementsPerVertex += attributes[i].numElements; - } - this.vertices = new Float32Array(maxVertices * this.elementsPerVertex); - this.indices = new Uint16Array(maxIndices); - this.context.addRestorable(this); - } - Mesh.prototype.getAttributes = function () { return this.attributes; }; - Mesh.prototype.maxVertices = function () { return this.vertices.length / this.elementsPerVertex; }; - Mesh.prototype.numVertices = function () { return this.verticesLength / this.elementsPerVertex; }; - Mesh.prototype.setVerticesLength = function (length) { - this.dirtyVertices = true; - this.verticesLength = length; - }; - Mesh.prototype.getVertices = function () { return this.vertices; }; - Mesh.prototype.maxIndices = function () { return this.indices.length; }; - Mesh.prototype.numIndices = function () { return this.indicesLength; }; - Mesh.prototype.setIndicesLength = function (length) { - this.dirtyIndices = true; - this.indicesLength = length; - }; - Mesh.prototype.getIndices = function () { return this.indices; }; - ; - Mesh.prototype.getVertexSizeInFloats = function () { - var size = 0; - for (var i = 0; i < this.attributes.length; i++) { - var attribute = this.attributes[i]; - size += attribute.numElements; - } - return size; - }; - Mesh.prototype.setVertices = function (vertices) { - this.dirtyVertices = true; - if (vertices.length > this.vertices.length) - throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); - this.vertices.set(vertices, 0); - this.verticesLength = vertices.length; - }; - Mesh.prototype.setIndices = function (indices) { - this.dirtyIndices = true; - if (indices.length > this.indices.length) - throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); - this.indices.set(indices, 0); - this.indicesLength = indices.length; - }; - Mesh.prototype.draw = function (shader, primitiveType) { - this.drawWithOffset(shader, primitiveType, 0, this.indicesLength > 0 ? this.indicesLength : this.verticesLength / this.elementsPerVertex); - }; - Mesh.prototype.drawWithOffset = function (shader, primitiveType, offset, count) { - var gl = this.context.gl; - if (this.dirtyVertices || this.dirtyIndices) - this.update(); - this.bind(shader); - if (this.indicesLength > 0) { - gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); - } - else { - gl.drawArrays(primitiveType, offset, count); - } - this.unbind(shader); - }; - Mesh.prototype.bind = function (shader) { - var gl = this.context.gl; - gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); - var offset = 0; - for (var i = 0; i < this.attributes.length; i++) { - var attrib = this.attributes[i]; - var location_1 = shader.getAttributeLocation(attrib.name); - gl.enableVertexAttribArray(location_1); - gl.vertexAttribPointer(location_1, attrib.numElements, gl.FLOAT, false, this.elementsPerVertex * 4, offset * 4); - offset += attrib.numElements; - } - if (this.indicesLength > 0) - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); - }; - Mesh.prototype.unbind = function (shader) { - var gl = this.context.gl; - for (var i = 0; i < this.attributes.length; i++) { - var attrib = this.attributes[i]; - var location_2 = shader.getAttributeLocation(attrib.name); - gl.disableVertexAttribArray(location_2); - } - gl.bindBuffer(gl.ARRAY_BUFFER, null); - if (this.indicesLength > 0) - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); - }; - Mesh.prototype.update = function () { - var gl = this.context.gl; - if (this.dirtyVertices) { - if (!this.verticesBuffer) { - this.verticesBuffer = gl.createBuffer(); - } - gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertices.subarray(0, this.verticesLength), gl.DYNAMIC_DRAW); - this.dirtyVertices = false; - } - if (this.dirtyIndices) { - if (!this.indicesBuffer) { - this.indicesBuffer = gl.createBuffer(); - } - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices.subarray(0, this.indicesLength), gl.DYNAMIC_DRAW); - this.dirtyIndices = false; - } - }; - Mesh.prototype.restore = function () { - this.verticesBuffer = null; - this.indicesBuffer = null; - this.update(); - }; - Mesh.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - gl.deleteBuffer(this.verticesBuffer); - gl.deleteBuffer(this.indicesBuffer); - }; - return Mesh; - }()); - webgl.Mesh = Mesh; - var VertexAttribute = (function () { - function VertexAttribute(name, type, numElements) { - this.name = name; - this.type = type; - this.numElements = numElements; - } - return VertexAttribute; - }()); - webgl.VertexAttribute = VertexAttribute; - var Position2Attribute = (function (_super) { - __extends(Position2Attribute, _super); - function Position2Attribute() { - return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 2) || this; - } - return Position2Attribute; - }(VertexAttribute)); - webgl.Position2Attribute = Position2Attribute; - var Position3Attribute = (function (_super) { - __extends(Position3Attribute, _super); - function Position3Attribute() { - return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 3) || this; - } - return Position3Attribute; - }(VertexAttribute)); - webgl.Position3Attribute = Position3Attribute; - var TexCoordAttribute = (function (_super) { - __extends(TexCoordAttribute, _super); - function TexCoordAttribute(unit) { - if (unit === void 0) { unit = 0; } - return _super.call(this, webgl.Shader.TEXCOORDS + (unit == 0 ? "" : unit), VertexAttributeType.Float, 2) || this; - } - return TexCoordAttribute; - }(VertexAttribute)); - webgl.TexCoordAttribute = TexCoordAttribute; - var ColorAttribute = (function (_super) { - __extends(ColorAttribute, _super); - function ColorAttribute() { - return _super.call(this, webgl.Shader.COLOR, VertexAttributeType.Float, 4) || this; - } - return ColorAttribute; - }(VertexAttribute)); - webgl.ColorAttribute = ColorAttribute; - var Color2Attribute = (function (_super) { - __extends(Color2Attribute, _super); - function Color2Attribute() { - return _super.call(this, webgl.Shader.COLOR2, VertexAttributeType.Float, 4) || this; - } - return Color2Attribute; - }(VertexAttribute)); - webgl.Color2Attribute = Color2Attribute; - var VertexAttributeType; - (function (VertexAttributeType) { - VertexAttributeType[VertexAttributeType["Float"] = 0] = "Float"; - })(VertexAttributeType = webgl.VertexAttributeType || (webgl.VertexAttributeType = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var PolygonBatcher = (function () { - function PolygonBatcher(context, twoColorTint, maxVertices) { - if (twoColorTint === void 0) { twoColorTint = true; } - if (maxVertices === void 0) { maxVertices = 10920; } - this.isDrawing = false; - this.shader = null; - this.lastTexture = null; - this.verticesLength = 0; - this.indicesLength = 0; - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - var attributes = twoColorTint ? - [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute(), new webgl.Color2Attribute()] : - [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute()]; - this.mesh = new webgl.Mesh(context, attributes, maxVertices, maxVertices * 3); - var gl = this.context.gl; - this.srcColorBlend = gl.SRC_ALPHA; - this.srcAlphaBlend = gl.ONE; - this.dstBlend = gl.ONE_MINUS_SRC_ALPHA; - } - PolygonBatcher.prototype.begin = function (shader) { - if (this.isDrawing) - throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); - this.drawCalls = 0; - this.shader = shader; - this.lastTexture = null; - this.isDrawing = true; - var gl = this.context.gl; - gl.enable(gl.BLEND); - gl.blendFuncSeparate(this.srcColorBlend, this.dstBlend, this.srcAlphaBlend, this.dstBlend); - }; - PolygonBatcher.prototype.setBlendMode = function (srcColorBlend, srcAlphaBlend, dstBlend) { - this.srcColorBlend = srcColorBlend; - this.srcAlphaBlend = srcAlphaBlend; - this.dstBlend = dstBlend; - if (this.isDrawing) { - this.flush(); - var gl = this.context.gl; - gl.blendFuncSeparate(srcColorBlend, dstBlend, srcAlphaBlend, dstBlend); - } - }; - PolygonBatcher.prototype.draw = function (texture, vertices, indices) { - if (texture != this.lastTexture) { - this.flush(); - this.lastTexture = texture; - } - else if (this.verticesLength + vertices.length > this.mesh.getVertices().length || - this.indicesLength + indices.length > this.mesh.getIndices().length) { - this.flush(); - } - var indexStart = this.mesh.numVertices(); - this.mesh.getVertices().set(vertices, this.verticesLength); - this.verticesLength += vertices.length; - this.mesh.setVerticesLength(this.verticesLength); - var indicesArray = this.mesh.getIndices(); - for (var i = this.indicesLength, j = 0; j < indices.length; i++, j++) - indicesArray[i] = indices[j] + indexStart; - this.indicesLength += indices.length; - this.mesh.setIndicesLength(this.indicesLength); - }; - PolygonBatcher.prototype.flush = function () { - if (this.verticesLength == 0) - return; - this.lastTexture.bind(); - this.mesh.draw(this.shader, this.context.gl.TRIANGLES); - this.verticesLength = 0; - this.indicesLength = 0; - this.mesh.setVerticesLength(0); - this.mesh.setIndicesLength(0); - this.drawCalls++; - }; - PolygonBatcher.prototype.end = function () { - if (!this.isDrawing) - throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); - if (this.verticesLength > 0 || this.indicesLength > 0) - this.flush(); - this.shader = null; - this.lastTexture = null; - this.isDrawing = false; - var gl = this.context.gl; - gl.disable(gl.BLEND); - }; - PolygonBatcher.prototype.getDrawCalls = function () { - return this.drawCalls; - }; - PolygonBatcher.prototype.dispose = function () { - this.mesh.dispose(); - }; - return PolygonBatcher; - }()); - webgl.PolygonBatcher = PolygonBatcher; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var quad = [ - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - ]; - var QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - var WHITE = new spine.Color(1, 1, 1, 1); - var SceneRenderer = (function () { - function SceneRenderer(canvas, context, twoColorTint) { - if (twoColorTint === void 0) { twoColorTint = true; } - this.twoColorTint = false; - this.canvas = canvas; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.twoColorTint = twoColorTint; - this.camera = new webgl.OrthoCamera(canvas.width, canvas.height); - this.batcherShader = twoColorTint ? webgl.Shader.newTwoColoredTextured(this.context) : webgl.Shader.newColoredTextured(this.context); - this.batcher = new webgl.PolygonBatcher(this.context, twoColorTint); - this.shapesShader = webgl.Shader.newColored(this.context); - this.shapes = new webgl.ShapeRenderer(this.context); - this.skeletonRenderer = new webgl.SkeletonRenderer(this.context, twoColorTint); - this.skeletonDebugRenderer = new webgl.SkeletonDebugRenderer(this.context); - } - SceneRenderer.prototype.begin = function () { - this.camera.update(); - this.enableRenderer(this.batcher); - }; - SceneRenderer.prototype.drawSkeleton = function (skeleton, premultipliedAlpha, slotRangeStart, slotRangeEnd) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - if (slotRangeStart === void 0) { slotRangeStart = -1; } - if (slotRangeEnd === void 0) { slotRangeEnd = -1; } - this.enableRenderer(this.batcher); - this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha; - this.skeletonRenderer.draw(this.batcher, skeleton, slotRangeStart, slotRangeEnd); - }; - SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha, ignoredBones) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - if (ignoredBones === void 0) { ignoredBones = null; } - this.enableRenderer(this.shapes); - this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; - this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones); - }; - SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawTextureUV = function (texture, x, y, width, height, u, v, u2, v2, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u; - quad[i++] = v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u2; - quad[i++] = v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u2; - quad[i++] = v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u; - quad[i++] = v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawTextureRotated = function (texture, x, y, width, height, pivotX, pivotY, angle, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var worldOriginX = x + pivotX; - var worldOriginY = y + pivotY; - var fx = -pivotX; - var fy = -pivotY; - var fx2 = width - pivotX; - var fy2 = height - pivotY; - var p1x = fx; - var p1y = fy; - var p2x = fx; - var p2y = fy2; - var p3x = fx2; - var p3y = fy2; - var p4x = fx2; - var p4y = fy; - var x1 = 0; - var y1 = 0; - var x2 = 0; - var y2 = 0; - var x3 = 0; - var y3 = 0; - var x4 = 0; - var y4 = 0; - if (angle != 0) { - var cos = spine.MathUtils.cosDeg(angle); - var sin = spine.MathUtils.sinDeg(angle); - x1 = cos * p1x - sin * p1y; - y1 = sin * p1x + cos * p1y; - x4 = cos * p2x - sin * p2y; - y4 = sin * p2x + cos * p2y; - x3 = cos * p3x - sin * p3y; - y3 = sin * p3x + cos * p3y; - x2 = x3 + (x1 - x4); - y2 = y3 + (y1 - y4); - } - else { - x1 = p1x; - y1 = p1y; - x4 = p2x; - y4 = p2y; - x3 = p3x; - y3 = p3y; - x2 = p4x; - y2 = p4y; - } - x1 += worldOriginX; - y1 += worldOriginY; - x2 += worldOriginX; - y2 += worldOriginY; - x3 += worldOriginX; - y3 += worldOriginY; - x4 += worldOriginX; - y4 += worldOriginY; - var i = 0; - quad[i++] = x1; - quad[i++] = y1; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x2; - quad[i++] = y2; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x3; - quad[i++] = y3; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x4; - quad[i++] = y4; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawRegion = function (region, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u; - quad[i++] = region.v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u2; - quad[i++] = region.v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u2; - quad[i++] = region.v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u; - quad[i++] = region.v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(region.page.texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.line = function (x, y, x2, y2, color, color2) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - this.enableRenderer(this.shapes); - this.shapes.line(x, y, x2, y2, color); - }; - SceneRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - this.enableRenderer(this.shapes); - this.shapes.triangle(filled, x, y, x2, y2, x3, y3, color, color2, color3); - }; - SceneRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - if (color4 === void 0) { color4 = null; } - this.enableRenderer(this.shapes); - this.shapes.quad(filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4); - }; - SceneRenderer.prototype.rect = function (filled, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.rect(filled, x, y, width, height, color); - }; - SceneRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.rectLine(filled, x1, y1, x2, y2, width, color); - }; - SceneRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.polygon(polygonVertices, offset, count, color); - }; - SceneRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { - if (color === void 0) { color = null; } - if (segments === void 0) { segments = 0; } - this.enableRenderer(this.shapes); - this.shapes.circle(filled, x, y, radius, color, segments); - }; - SceneRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color); - }; - SceneRenderer.prototype.end = function () { - if (this.activeRenderer === this.batcher) - this.batcher.end(); - else if (this.activeRenderer === this.shapes) - this.shapes.end(); - this.activeRenderer = null; - }; - SceneRenderer.prototype.resize = function (resizeMode) { - var canvas = this.canvas; - var dpr = window.devicePixelRatio || 1; - var w = Math.round(canvas.clientWidth * dpr); - var h = Math.round(canvas.clientHeight * dpr); - if (canvas.width != w || canvas.height != h) { - canvas.width = w; - canvas.height = h; - } - this.context.gl.viewport(0, 0, canvas.width, canvas.height); - if (resizeMode === ResizeMode.Expand) - this.camera.setViewport(w, h); - else if (resizeMode === ResizeMode.Fit) { - var sourceWidth = canvas.width, sourceHeight = canvas.height; - var targetWidth = this.camera.viewportWidth, targetHeight = this.camera.viewportHeight; - var targetRatio = targetHeight / targetWidth; - var sourceRatio = sourceHeight / sourceWidth; - var scale = targetRatio < sourceRatio ? targetWidth / sourceWidth : targetHeight / sourceHeight; - this.camera.setViewport(sourceWidth * scale, sourceHeight * scale); - } - this.camera.update(); - }; - SceneRenderer.prototype.enableRenderer = function (renderer) { - if (this.activeRenderer === renderer) - return; - this.end(); - if (renderer instanceof webgl.PolygonBatcher) { - this.batcherShader.bind(); - this.batcherShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); - this.batcherShader.setUniformi("u_texture", 0); - this.batcher.begin(this.batcherShader); - this.activeRenderer = this.batcher; - } - else if (renderer instanceof webgl.ShapeRenderer) { - this.shapesShader.bind(); - this.shapesShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); - this.shapes.begin(this.shapesShader); - this.activeRenderer = this.shapes; - } - else - this.activeRenderer = this.skeletonDebugRenderer; - }; - SceneRenderer.prototype.dispose = function () { - this.batcher.dispose(); - this.batcherShader.dispose(); - this.shapes.dispose(); - this.shapesShader.dispose(); - this.skeletonDebugRenderer.dispose(); - }; - return SceneRenderer; - }()); - webgl.SceneRenderer = SceneRenderer; - var ResizeMode; - (function (ResizeMode) { - ResizeMode[ResizeMode["Stretch"] = 0] = "Stretch"; - ResizeMode[ResizeMode["Expand"] = 1] = "Expand"; - ResizeMode[ResizeMode["Fit"] = 2] = "Fit"; - })(ResizeMode = webgl.ResizeMode || (webgl.ResizeMode = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Shader = (function () { - function Shader(context, vertexShader, fragmentShader) { - this.vertexShader = vertexShader; - this.fragmentShader = fragmentShader; - this.vs = null; - this.fs = null; - this.program = null; - this.tmp2x2 = new Float32Array(2 * 2); - this.tmp3x3 = new Float32Array(3 * 3); - this.tmp4x4 = new Float32Array(4 * 4); - this.vsSource = vertexShader; - this.fsSource = fragmentShader; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.context.addRestorable(this); - this.compile(); - } - Shader.prototype.getProgram = function () { return this.program; }; - Shader.prototype.getVertexShader = function () { return this.vertexShader; }; - Shader.prototype.getFragmentShader = function () { return this.fragmentShader; }; - Shader.prototype.getVertexShaderSource = function () { return this.vsSource; }; - Shader.prototype.getFragmentSource = function () { return this.fsSource; }; - Shader.prototype.compile = function () { - var gl = this.context.gl; - try { - this.vs = this.compileShader(gl.VERTEX_SHADER, this.vertexShader); - this.fs = this.compileShader(gl.FRAGMENT_SHADER, this.fragmentShader); - this.program = this.compileProgram(this.vs, this.fs); - } - catch (e) { - this.dispose(); - throw e; - } - }; - Shader.prototype.compileShader = function (type, source) { - var gl = this.context.gl; - var shader = gl.createShader(type); - gl.shaderSource(shader, source); - gl.compileShader(shader); - if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - var error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); - gl.deleteShader(shader); - if (!gl.isContextLost()) - throw new Error(error); - } - return shader; - }; - Shader.prototype.compileProgram = function (vs, fs) { - var gl = this.context.gl; - var program = gl.createProgram(); - gl.attachShader(program, vs); - gl.attachShader(program, fs); - gl.linkProgram(program); - if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - var error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); - gl.deleteProgram(program); - if (!gl.isContextLost()) - throw new Error(error); - } - return program; - }; - Shader.prototype.restore = function () { - this.compile(); - }; - Shader.prototype.bind = function () { - this.context.gl.useProgram(this.program); - }; - Shader.prototype.unbind = function () { - this.context.gl.useProgram(null); - }; - Shader.prototype.setUniformi = function (uniform, value) { - this.context.gl.uniform1i(this.getUniformLocation(uniform), value); - }; - Shader.prototype.setUniformf = function (uniform, value) { - this.context.gl.uniform1f(this.getUniformLocation(uniform), value); - }; - Shader.prototype.setUniform2f = function (uniform, value, value2) { - this.context.gl.uniform2f(this.getUniformLocation(uniform), value, value2); - }; - Shader.prototype.setUniform3f = function (uniform, value, value2, value3) { - this.context.gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); - }; - Shader.prototype.setUniform4f = function (uniform, value, value2, value3, value4) { - this.context.gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); - }; - Shader.prototype.setUniform2x2f = function (uniform, value) { - var gl = this.context.gl; - this.tmp2x2.set(value); - gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this.tmp2x2); - }; - Shader.prototype.setUniform3x3f = function (uniform, value) { - var gl = this.context.gl; - this.tmp3x3.set(value); - gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this.tmp3x3); - }; - Shader.prototype.setUniform4x4f = function (uniform, value) { - var gl = this.context.gl; - this.tmp4x4.set(value); - gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this.tmp4x4); - }; - Shader.prototype.getUniformLocation = function (uniform) { - var gl = this.context.gl; - var location = gl.getUniformLocation(this.program, uniform); - if (!location && !gl.isContextLost()) - throw new Error("Couldn't find location for uniform " + uniform); - return location; - }; - Shader.prototype.getAttributeLocation = function (attribute) { - var gl = this.context.gl; - var location = gl.getAttribLocation(this.program, attribute); - if (location == -1 && !gl.isContextLost()) - throw new Error("Couldn't find location for attribute " + attribute); - return location; - }; - Shader.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - if (this.vs) { - gl.deleteShader(this.vs); - this.vs = null; - } - if (this.fs) { - gl.deleteShader(this.fs); - this.fs = null; - } - if (this.program) { - gl.deleteProgram(this.program); - this.program = null; - } - }; - Shader.newColoredTextured = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.newTwoColoredTextured = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR2 + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_light;\n\t\t\t\tvarying vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_light = " + Shader.COLOR + ";\n\t\t\t\t\tv_dark = " + Shader.COLOR2 + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_light;\n\t\t\t\tvarying LOWP vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tvec4 texColor = texture2D(u_texture, v_texCoords);\n\t\t\t\t\tgl_FragColor.a = texColor.a * v_light.a;\n\t\t\t\t\tgl_FragColor.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb;\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.newColored = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color;\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.MVP_MATRIX = "u_projTrans"; - Shader.POSITION = "a_position"; - Shader.COLOR = "a_color"; - Shader.COLOR2 = "a_color2"; - Shader.TEXCOORDS = "a_texCoords"; - Shader.SAMPLER = "u_texture"; - return Shader; - }()); - webgl.Shader = Shader; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var ShapeRenderer = (function () { - function ShapeRenderer(context, maxVertices) { - if (maxVertices === void 0) { maxVertices = 10920; } - this.isDrawing = false; - this.shapeType = ShapeType.Filled; - this.color = new spine.Color(1, 1, 1, 1); - this.vertexIndex = 0; - this.tmp = new spine.Vector2(); - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.mesh = new webgl.Mesh(context, [new webgl.Position2Attribute(), new webgl.ColorAttribute()], maxVertices, 0); - var gl = this.context.gl; - this.srcColorBlend = gl.SRC_ALPHA; - this.srcAlphaBlend = gl.ONE; - this.dstBlend = gl.ONE_MINUS_SRC_ALPHA; - } - ShapeRenderer.prototype.begin = function (shader) { - if (this.isDrawing) - throw new Error("ShapeRenderer.begin() has already been called"); - this.shader = shader; - this.vertexIndex = 0; - this.isDrawing = true; - var gl = this.context.gl; - gl.enable(gl.BLEND); - gl.blendFuncSeparate(this.srcColorBlend, this.dstBlend, this.srcAlphaBlend, this.dstBlend); - }; - ShapeRenderer.prototype.setBlendMode = function (srcColorBlend, srcAlphaBlend, dstBlend) { - this.srcColorBlend = srcColorBlend; - this.srcAlphaBlend = srcAlphaBlend; - this.dstBlend = dstBlend; - if (this.isDrawing) { - this.flush(); - var gl = this.context.gl; - gl.blendFuncSeparate(srcColorBlend, dstBlend, srcAlphaBlend, dstBlend); - } - }; - ShapeRenderer.prototype.setColor = function (color) { - this.color.setFromColor(color); - }; - ShapeRenderer.prototype.setColorWith = function (r, g, b, a) { - this.color.set(r, g, b, a); - }; - ShapeRenderer.prototype.point = function (x, y, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Point, 1); - if (color === null) - color = this.color; - this.vertex(x, y, color); - }; - ShapeRenderer.prototype.line = function (x, y, x2, y2, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Line, 2); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - this.vertex(x, y, color); - this.vertex(x2, y2, color); - }; - ShapeRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - if (color2 === null) - color2 = this.color; - if (color3 === null) - color3 = this.color; - if (filled) { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - } - else { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x2, y2, color); - this.vertex(x3, y3, color2); - this.vertex(x3, y3, color); - this.vertex(x, y, color2); - } - }; - ShapeRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - if (color4 === void 0) { color4 = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - if (color2 === null) - color2 = this.color; - if (color3 === null) - color3 = this.color; - if (color4 === null) - color4 = this.color; - if (filled) { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - this.vertex(x3, y3, color3); - this.vertex(x4, y4, color4); - this.vertex(x, y, color); - } - else { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - this.vertex(x3, y3, color3); - this.vertex(x4, y4, color4); - this.vertex(x4, y4, color4); - this.vertex(x, y, color); - } - }; - ShapeRenderer.prototype.rect = function (filled, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.quad(filled, x, y, x + width, y, x + width, y + height, x, y + height, color, color, color, color); - }; - ShapeRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { - if (color === void 0) { color = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 8); - if (color === null) - color = this.color; - var t = this.tmp.set(y2 - y1, x1 - x2); - t.normalize(); - width *= 0.5; - var tx = t.x * width; - var ty = t.y * width; - if (!filled) { - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x1 - tx, y1 - ty, color); - } - else { - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - } - }; - ShapeRenderer.prototype.x = function (x, y, size) { - this.line(x - size, y - size, x + size, y + size); - this.line(x - size, y + size, x + size, y - size); - }; - ShapeRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { - if (color === void 0) { color = null; } - if (count < 3) - throw new Error("Polygon must contain at least 3 vertices"); - this.check(ShapeType.Line, count * 2); - if (color === null) - color = this.color; - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - offset <<= 1; - count <<= 1; - var firstX = polygonVertices[offset]; - var firstY = polygonVertices[offset + 1]; - var last = offset + count; - for (var i = offset, n = offset + count - 2; i < n; i += 2) { - var x1 = polygonVertices[i]; - var y1 = polygonVertices[i + 1]; - var x2 = 0; - var y2 = 0; - if (i + 2 >= last) { - x2 = firstX; - y2 = firstY; - } - else { - x2 = polygonVertices[i + 2]; - y2 = polygonVertices[i + 3]; - } - this.vertex(x1, y1, color); - this.vertex(x2, y2, color); - } - }; - ShapeRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { - if (color === void 0) { color = null; } - if (segments === void 0) { segments = 0; } - if (segments === 0) - segments = Math.max(1, (6 * spine.MathUtils.cbrt(radius)) | 0); - if (segments <= 0) - throw new Error("segments must be > 0."); - if (color === null) - color = this.color; - var angle = 2 * spine.MathUtils.PI / segments; - var cos = Math.cos(angle); - var sin = Math.sin(angle); - var cx = radius, cy = 0; - if (!filled) { - this.check(ShapeType.Line, segments * 2 + 2); - for (var i = 0; i < segments; i++) { - this.vertex(x + cx, y + cy, color); - var temp_1 = cx; - cx = cos * cx - sin * cy; - cy = sin * temp_1 + cos * cy; - this.vertex(x + cx, y + cy, color); - } - this.vertex(x + cx, y + cy, color); - } - else { - this.check(ShapeType.Filled, segments * 3 + 3); - segments--; - for (var i = 0; i < segments; i++) { - this.vertex(x, y, color); - this.vertex(x + cx, y + cy, color); - var temp_2 = cx; - cx = cos * cx - sin * cy; - cy = sin * temp_2 + cos * cy; - this.vertex(x + cx, y + cy, color); - } - this.vertex(x, y, color); - this.vertex(x + cx, y + cy, color); - } - var temp = cx; - cx = radius; - cy = 0; - this.vertex(x + cx, y + cy, color); - }; - ShapeRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Line, segments * 2 + 2); - if (color === null) - color = this.color; - var subdiv_step = 1 / segments; - var subdiv_step2 = subdiv_step * subdiv_step; - var subdiv_step3 = subdiv_step * subdiv_step * subdiv_step; - var pre1 = 3 * subdiv_step; - var pre2 = 3 * subdiv_step2; - var pre4 = 6 * subdiv_step2; - var pre5 = 6 * subdiv_step3; - var tmp1x = x1 - cx1 * 2 + cx2; - var tmp1y = y1 - cy1 * 2 + cy2; - var tmp2x = (cx1 - cx2) * 3 - x1 + x2; - var tmp2y = (cy1 - cy2) * 3 - y1 + y2; - var fx = x1; - var fy = y1; - var dfx = (cx1 - x1) * pre1 + tmp1x * pre2 + tmp2x * subdiv_step3; - var dfy = (cy1 - y1) * pre1 + tmp1y * pre2 + tmp2y * subdiv_step3; - var ddfx = tmp1x * pre4 + tmp2x * pre5; - var ddfy = tmp1y * pre4 + tmp2y * pre5; - var dddfx = tmp2x * pre5; - var dddfy = tmp2y * pre5; - while (segments-- > 0) { - this.vertex(fx, fy, color); - fx += dfx; - fy += dfy; - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - this.vertex(fx, fy, color); - } - this.vertex(fx, fy, color); - this.vertex(x2, y2, color); - }; - ShapeRenderer.prototype.vertex = function (x, y, color) { - var idx = this.vertexIndex; - var vertices = this.mesh.getVertices(); - vertices[idx++] = x; - vertices[idx++] = y; - vertices[idx++] = color.r; - vertices[idx++] = color.g; - vertices[idx++] = color.b; - vertices[idx++] = color.a; - this.vertexIndex = idx; - }; - ShapeRenderer.prototype.end = function () { - if (!this.isDrawing) - throw new Error("ShapeRenderer.begin() has not been called"); - this.flush(); - var gl = this.context.gl; - gl.disable(gl.BLEND); - this.isDrawing = false; - }; - ShapeRenderer.prototype.flush = function () { - if (this.vertexIndex == 0) - return; - this.mesh.setVerticesLength(this.vertexIndex); - this.mesh.draw(this.shader, this.shapeType); - this.vertexIndex = 0; - }; - ShapeRenderer.prototype.check = function (shapeType, numVertices) { - if (!this.isDrawing) - throw new Error("ShapeRenderer.begin() has not been called"); - if (this.shapeType == shapeType) { - if (this.mesh.maxVertices() - this.mesh.numVertices() < numVertices) - this.flush(); - else - return; - } - else { - this.flush(); - this.shapeType = shapeType; - } - }; - ShapeRenderer.prototype.dispose = function () { - this.mesh.dispose(); - }; - return ShapeRenderer; - }()); - webgl.ShapeRenderer = ShapeRenderer; - var ShapeType; - (function (ShapeType) { - ShapeType[ShapeType["Point"] = 0] = "Point"; - ShapeType[ShapeType["Line"] = 1] = "Line"; - ShapeType[ShapeType["Filled"] = 4] = "Filled"; - })(ShapeType = webgl.ShapeType || (webgl.ShapeType = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var SkeletonDebugRenderer = (function () { - function SkeletonDebugRenderer(context) { - this.boneLineColor = new spine.Color(1, 0, 0, 1); - this.boneOriginColor = new spine.Color(0, 1, 0, 1); - this.attachmentLineColor = new spine.Color(0, 0, 1, 0.5); - this.triangleLineColor = new spine.Color(1, 0.64, 0, 0.5); - this.pathColor = new spine.Color().setFromString("FF7F00"); - this.clipColor = new spine.Color(0.8, 0, 0, 2); - this.aabbColor = new spine.Color(0, 1, 0, 0.5); - this.drawBones = true; - this.drawRegionAttachments = true; - this.drawBoundingBoxes = true; - this.drawMeshHull = true; - this.drawMeshTriangles = true; - this.drawPaths = true; - this.drawSkeletonXY = false; - this.drawClipping = true; - this.premultipliedAlpha = false; - this.scale = 1; - this.boneWidth = 2; - this.bounds = new spine.SkeletonBounds(); - this.temp = new Array(); - this.vertices = spine.Utils.newFloatArray(2 * 1024); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - } - SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton, ignoredBones) { - if (ignoredBones === void 0) { ignoredBones = null; } - var skeletonX = skeleton.x; - var skeletonY = skeleton.y; - var gl = this.context.gl; - var srcFunc = this.premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; - shapes.setBlendMode(srcFunc, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - var bones = skeleton.bones; - if (this.drawBones) { - shapes.setColor(this.boneLineColor); - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) - continue; - if (!bone.parent) - continue; - var x = skeletonX + bone.data.length * bone.a + bone.worldX; - var y = skeletonY + bone.data.length * bone.c + bone.worldY; - shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale); - } - if (this.drawSkeletonXY) - shapes.x(skeletonX, skeletonY, 4 * this.scale); - } - if (this.drawRegionAttachments) { - shapes.setColor(this.attachmentLineColor); - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - var regionAttachment = attachment; - var vertices = this.vertices; - regionAttachment.computeWorldVertices(slot.bone, vertices, 0, 2); - shapes.line(vertices[0], vertices[1], vertices[2], vertices[3]); - shapes.line(vertices[2], vertices[3], vertices[4], vertices[5]); - shapes.line(vertices[4], vertices[5], vertices[6], vertices[7]); - shapes.line(vertices[6], vertices[7], vertices[0], vertices[1]); - } - } - } - if (this.drawMeshHull || this.drawMeshTriangles) { - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.MeshAttachment)) - continue; - var mesh = attachment; - var vertices = this.vertices; - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, 2); - var triangles = mesh.triangles; - var hullLength = mesh.hullLength; - if (this.drawMeshTriangles) { - shapes.setColor(this.triangleLineColor); - for (var ii = 0, nn = triangles.length; ii < nn; ii += 3) { - var v1 = triangles[ii] * 2, v2 = triangles[ii + 1] * 2, v3 = triangles[ii + 2] * 2; - shapes.triangle(false, vertices[v1], vertices[v1 + 1], vertices[v2], vertices[v2 + 1], vertices[v3], vertices[v3 + 1]); - } - } - if (this.drawMeshHull && hullLength > 0) { - shapes.setColor(this.attachmentLineColor); - hullLength = (hullLength >> 1) * 2; - var lastX = vertices[hullLength - 2], lastY = vertices[hullLength - 1]; - for (var ii = 0, nn = hullLength; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - shapes.line(x, y, lastX, lastY); - lastX = x; - lastY = y; - } - } - } - } - if (this.drawBoundingBoxes) { - var bounds = this.bounds; - bounds.update(skeleton, true); - shapes.setColor(this.aabbColor); - shapes.rect(false, bounds.minX, bounds.minY, bounds.getWidth(), bounds.getHeight()); - var polygons = bounds.polygons; - var boxes = bounds.boundingBoxes; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - shapes.setColor(boxes[i].color); - shapes.polygon(polygon, 0, polygon.length); - } - } - if (this.drawPaths) { - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - continue; - var path = attachment; - var nn = path.worldVerticesLength; - var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); - path.computeWorldVertices(slot, 0, nn, world, 0, 2); - var color = this.pathColor; - var x1 = world[2], y1 = world[3], x2 = 0, y2 = 0; - if (path.closed) { - shapes.setColor(color); - var cx1 = world[0], cy1 = world[1], cx2 = world[nn - 2], cy2 = world[nn - 1]; - x2 = world[nn - 4]; - y2 = world[nn - 3]; - shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); - shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); - shapes.line(x1, y1, cx1, cy1); - shapes.line(x2, y2, cx2, cy2); - } - nn -= 4; - for (var ii = 4; ii < nn; ii += 6) { - var cx1 = world[ii], cy1 = world[ii + 1], cx2 = world[ii + 2], cy2 = world[ii + 3]; - x2 = world[ii + 4]; - y2 = world[ii + 5]; - shapes.setColor(color); - shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); - shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); - shapes.line(x1, y1, cx1, cy1); - shapes.line(x2, y2, cx2, cy2); - x1 = x2; - y1 = y2; - } - } - } - if (this.drawBones) { - shapes.setColor(this.boneOriginColor); - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) - continue; - shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); - } - } - if (this.drawClipping) { - var slots = skeleton.slots; - shapes.setColor(this.clipColor); - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.ClippingAttachment)) - continue; - var clip = attachment; - var nn = clip.worldVerticesLength; - var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); - clip.computeWorldVertices(slot, 0, nn, world, 0, 2); - for (var i_21 = 0, n_3 = world.length; i_21 < n_3; i_21 += 2) { - var x = world[i_21]; - var y = world[i_21 + 1]; - var x2 = world[(i_21 + 2) % world.length]; - var y2 = world[(i_21 + 3) % world.length]; - shapes.line(x, y, x2, y2); - } - } - } - }; - SkeletonDebugRenderer.prototype.dispose = function () { - }; - SkeletonDebugRenderer.LIGHT_GRAY = new spine.Color(192 / 255, 192 / 255, 192 / 255, 1); - SkeletonDebugRenderer.GREEN = new spine.Color(0, 1, 0, 1); - return SkeletonDebugRenderer; - }()); - webgl.SkeletonDebugRenderer = SkeletonDebugRenderer; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Renderable = (function () { - function Renderable(vertices, numVertices, numFloats) { - this.vertices = vertices; - this.numVertices = numVertices; - this.numFloats = numFloats; - } - return Renderable; - }()); - ; - var SkeletonRenderer = (function () { - function SkeletonRenderer(context, twoColorTint) { - if (twoColorTint === void 0) { twoColorTint = true; } - this.premultipliedAlpha = false; - this.vertexEffect = null; - this.tempColor = new spine.Color(); - this.tempColor2 = new spine.Color(); - this.vertexSize = 2 + 2 + 4; - this.twoColorTint = false; - this.renderable = new Renderable(null, 0, 0); - this.clipper = new spine.SkeletonClipping(); - this.temp = new spine.Vector2(); - this.temp2 = new spine.Vector2(); - this.temp3 = new spine.Color(); - this.temp4 = new spine.Color(); - this.twoColorTint = twoColorTint; - if (twoColorTint) - this.vertexSize += 4; - this.vertices = spine.Utils.newFloatArray(this.vertexSize * 1024); - } - SkeletonRenderer.prototype.draw = function (batcher, skeleton, slotRangeStart, slotRangeEnd) { - if (slotRangeStart === void 0) { slotRangeStart = -1; } - if (slotRangeEnd === void 0) { slotRangeEnd = -1; } - var clipper = this.clipper; - var premultipliedAlpha = this.premultipliedAlpha; - var twoColorTint = this.twoColorTint; - var blendMode = null; - var tempPos = this.temp; - var tempUv = this.temp2; - var tempLight = this.temp3; - var tempDark = this.temp4; - var renderable = this.renderable; - var uvs = null; - var triangles = null; - var drawOrder = skeleton.drawOrder; - var attachmentColor = null; - var skeletonColor = skeleton.color; - var vertexSize = twoColorTint ? 12 : 8; - var inRange = false; - if (slotRangeStart == -1) - inRange = true; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var clippedVertexSize = clipper.isClipping() ? 2 : vertexSize; - var slot = drawOrder[i]; - if (!slot.bone.active) { - clipper.clipEndWithSlot(slot); - continue; - } - if (slotRangeStart >= 0 && slotRangeStart == slot.data.index) { - inRange = true; - } - if (!inRange) { - clipper.clipEndWithSlot(slot); - continue; - } - if (slotRangeEnd >= 0 && slotRangeEnd == slot.data.index) { - inRange = false; - } - var attachment = slot.getAttachment(); - var texture = null; - if (attachment instanceof spine.RegionAttachment) { - var region = attachment; - renderable.vertices = this.vertices; - renderable.numVertices = 4; - renderable.numFloats = clippedVertexSize << 2; - region.computeWorldVertices(slot.bone, renderable.vertices, 0, clippedVertexSize); - triangles = SkeletonRenderer.QUAD_TRIANGLES; - uvs = region.uvs; - texture = region.region.renderObject.page.texture; - attachmentColor = region.color; - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - renderable.vertices = this.vertices; - renderable.numVertices = (mesh.worldVerticesLength >> 1); - renderable.numFloats = renderable.numVertices * clippedVertexSize; - if (renderable.numFloats > renderable.vertices.length) { - renderable.vertices = this.vertices = spine.Utils.newFloatArray(renderable.numFloats); - } - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, renderable.vertices, 0, clippedVertexSize); - triangles = mesh.triangles; - texture = mesh.region.renderObject.page.texture; - uvs = mesh.uvs; - attachmentColor = mesh.color; - } - else if (attachment instanceof spine.ClippingAttachment) { - var clip = (attachment); - clipper.clipStart(slot, clip); - continue; - } - else { - clipper.clipEndWithSlot(slot); - continue; - } - if (texture) { - var slotColor = slot.color; - var finalColor = this.tempColor; - finalColor.r = skeletonColor.r * slotColor.r * attachmentColor.r; - finalColor.g = skeletonColor.g * slotColor.g * attachmentColor.g; - finalColor.b = skeletonColor.b * slotColor.b * attachmentColor.b; - finalColor.a = skeletonColor.a * slotColor.a * attachmentColor.a; - if (premultipliedAlpha) { - finalColor.r *= finalColor.a; - finalColor.g *= finalColor.a; - finalColor.b *= finalColor.a; - } - var darkColor = this.tempColor2; - if (!slot.darkColor) - darkColor.set(0, 0, 0, 1.0); - else { - if (premultipliedAlpha) { - darkColor.r = slot.darkColor.r * finalColor.a; - darkColor.g = slot.darkColor.g * finalColor.a; - darkColor.b = slot.darkColor.b * finalColor.a; - } - else { - darkColor.setFromColor(slot.darkColor); - } - darkColor.a = premultipliedAlpha ? 1.0 : 0.0; - } - var slotBlendMode = slot.data.blendMode; - if (slotBlendMode != blendMode) { - blendMode = slotBlendMode; - batcher.setBlendMode(webgl.WebGLBlendModeConverter.getSourceColorGLBlendMode(blendMode, premultipliedAlpha), webgl.WebGLBlendModeConverter.getSourceAlphaGLBlendMode(blendMode), webgl.WebGLBlendModeConverter.getDestGLBlendMode(blendMode)); - } - if (clipper.isClipping()) { - clipper.clipTriangles(renderable.vertices, renderable.numFloats, triangles, triangles.length, uvs, finalColor, darkColor, twoColorTint); - var clippedVertices = new Float32Array(clipper.clippedVertices); - var clippedTriangles = clipper.clippedTriangles; - if (this.vertexEffect) { - var vertexEffect = this.vertexEffect; - var verts = clippedVertices; - if (!twoColorTint) { - for (var v = 0, n_4 = clippedVertices.length; v < n_4; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - tempDark.set(0, 0, 0, 0); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 0, n_5 = clippedVertices.length; v < n_5; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - tempDark.set(verts[v + 8], verts[v + 9], verts[v + 10], verts[v + 11]); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - verts[v + 8] = tempDark.r; - verts[v + 9] = tempDark.g; - verts[v + 10] = tempDark.b; - verts[v + 11] = tempDark.a; - } - } - } - batcher.draw(texture, clippedVertices, clippedTriangles); - } - else { - var verts = renderable.vertices; - if (this.vertexEffect) { - var vertexEffect = this.vertexEffect; - if (!twoColorTint) { - for (var v = 0, u = 0, n_6 = renderable.numFloats; v < n_6; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - tempLight.setFromColor(finalColor); - tempDark.set(0, 0, 0, 0); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 0, u = 0, n_7 = renderable.numFloats; v < n_7; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - tempLight.setFromColor(finalColor); - tempDark.setFromColor(darkColor); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - verts[v + 8] = tempDark.r; - verts[v + 9] = tempDark.g; - verts[v + 10] = tempDark.b; - verts[v + 11] = tempDark.a; - } - } - } - else { - if (!twoColorTint) { - for (var v = 2, u = 0, n_8 = renderable.numFloats; v < n_8; v += vertexSize, u += 2) { - verts[v] = finalColor.r; - verts[v + 1] = finalColor.g; - verts[v + 2] = finalColor.b; - verts[v + 3] = finalColor.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - } - } - else { - for (var v = 2, u = 0, n_9 = renderable.numFloats; v < n_9; v += vertexSize, u += 2) { - verts[v] = finalColor.r; - verts[v + 1] = finalColor.g; - verts[v + 2] = finalColor.b; - verts[v + 3] = finalColor.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - verts[v + 6] = darkColor.r; - verts[v + 7] = darkColor.g; - verts[v + 8] = darkColor.b; - verts[v + 9] = darkColor.a; - } - } - } - var view = renderable.vertices.subarray(0, renderable.numFloats); - batcher.draw(texture, view, triangles); - } - } - clipper.clipEndWithSlot(slot); - } - clipper.clipEnd(); - }; - SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - return SkeletonRenderer; - }()); - webgl.SkeletonRenderer = SkeletonRenderer; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Vector3 = (function () { - function Vector3(x, y, z) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - if (z === void 0) { z = 0; } - this.x = 0; - this.y = 0; - this.z = 0; - this.x = x; - this.y = y; - this.z = z; - } - Vector3.prototype.setFrom = function (v) { - this.x = v.x; - this.y = v.y; - this.z = v.z; - return this; - }; - Vector3.prototype.set = function (x, y, z) { - this.x = x; - this.y = y; - this.z = z; - return this; - }; - Vector3.prototype.add = function (v) { - this.x += v.x; - this.y += v.y; - this.z += v.z; - return this; - }; - Vector3.prototype.sub = function (v) { - this.x -= v.x; - this.y -= v.y; - this.z -= v.z; - return this; - }; - Vector3.prototype.scale = function (s) { - this.x *= s; - this.y *= s; - this.z *= s; - return this; - }; - Vector3.prototype.normalize = function () { - var len = this.length(); - if (len == 0) - return this; - len = 1 / len; - this.x *= len; - this.y *= len; - this.z *= len; - return this; - }; - Vector3.prototype.cross = function (v) { - return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x); - }; - Vector3.prototype.multiply = function (matrix) { - var l_mat = matrix.values; - return this.set(this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03], this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13], this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]); - }; - Vector3.prototype.project = function (matrix) { - var l_mat = matrix.values; - var l_w = 1 / (this.x * l_mat[webgl.M30] + this.y * l_mat[webgl.M31] + this.z * l_mat[webgl.M32] + l_mat[webgl.M33]); - return this.set((this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03]) * l_w, (this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13]) * l_w, (this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]) * l_w); - }; - Vector3.prototype.dot = function (v) { - return this.x * v.x + this.y * v.y + this.z * v.z; - }; - Vector3.prototype.length = function () { - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); - }; - Vector3.prototype.distance = function (v) { - var a = v.x - this.x; - var b = v.y - this.y; - var c = v.z - this.z; - return Math.sqrt(a * a + b * b + c * c); - }; - return Vector3; - }()); - webgl.Vector3 = Vector3; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var ManagedWebGLRenderingContext = (function () { - function ManagedWebGLRenderingContext(canvasOrContext, contextConfig) { - if (contextConfig === void 0) { contextConfig = { alpha: "true" }; } - this.restorables = new Array(); - if (!((canvasOrContext instanceof WebGLRenderingContext) || (typeof WebGL2RenderingContext !== 'undefined' && canvasOrContext instanceof WebGL2RenderingContext))) - this.setupCanvas(canvasOrContext, contextConfig); - else { - this.gl = canvasOrContext; - this.canvas = this.gl.canvas; - } - } - ManagedWebGLRenderingContext.prototype.setupCanvas = function (canvas, contextConfig) { - var _this = this; - this.gl = (canvas.getContext("webgl2", contextConfig) || canvas.getContext("webgl", contextConfig)); - this.canvas = canvas; - canvas.addEventListener("webglcontextlost", function (e) { - var event = e; - if (e) - e.preventDefault(); - }); - canvas.addEventListener("webglcontextrestored", function (e) { - for (var i = 0, n = _this.restorables.length; i < n; i++) - _this.restorables[i].restore(); - }); - }; - ManagedWebGLRenderingContext.prototype.addRestorable = function (restorable) { - this.restorables.push(restorable); - }; - ManagedWebGLRenderingContext.prototype.removeRestorable = function (restorable) { - var index = this.restorables.indexOf(restorable); - if (index > -1) - this.restorables.splice(index, 1); - }; - return ManagedWebGLRenderingContext; - }()); - webgl.ManagedWebGLRenderingContext = ManagedWebGLRenderingContext; - var ONE = 1; - var ONE_MINUS_SRC_COLOR = 0x0301; - var SRC_ALPHA = 0x0302; - var ONE_MINUS_SRC_ALPHA = 0x0303; - var ONE_MINUS_DST_ALPHA = 0x0305; - var DST_COLOR = 0x0306; - var WebGLBlendModeConverter = (function () { - function WebGLBlendModeConverter() { - } - WebGLBlendModeConverter.getDestGLBlendMode = function (blendMode) { - switch (blendMode) { - case spine.BlendMode.Normal: return ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Additive: return ONE; - case spine.BlendMode.Multiply: return ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Screen: return ONE_MINUS_SRC_ALPHA; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - WebGLBlendModeConverter.getSourceColorGLBlendMode = function (blendMode, premultipliedAlpha) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - switch (blendMode) { - case spine.BlendMode.Normal: return premultipliedAlpha ? ONE : SRC_ALPHA; - case spine.BlendMode.Additive: return premultipliedAlpha ? ONE : SRC_ALPHA; - case spine.BlendMode.Multiply: return DST_COLOR; - case spine.BlendMode.Screen: return ONE; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - WebGLBlendModeConverter.getSourceAlphaGLBlendMode = function (blendMode) { - switch (blendMode) { - case spine.BlendMode.Normal: return ONE; - case spine.BlendMode.Additive: return ONE; - case spine.BlendMode.Multiply: return ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Screen: return ONE_MINUS_SRC_COLOR; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - return WebGLBlendModeConverter; - }()); - webgl.WebGLBlendModeConverter = WebGLBlendModeConverter; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var SpinePlayer = (function () { - function SpinePlayer(parent, config) { - var _this = this; - this.config = config; - this.bg = new spine.Color(); - this.bgFullscreen = new spine.Color(); - this.playTime = 0; - this.cancelId = 0; - this.paused = true; - this.speed = 1; - this.time = new spine.TimeKeeper(); - this.stopRequestAnimationFrame = false; - this.viewport = {}; - this.viewportTransitionStart = 0; - this.parent = typeof parent === "string" ? document.getElementById(parent) : parent; - if (config.showControls === void 0) - config.showControls = true; - var controls = config.showControls ? "\n

        \n
        \n
        \n\n
        \n\n\n\n\n\n\n
        " : ""; - this.parent.appendChild(this.dom = createElement("
        " + controls + "
        ")); - try { - this.validateConfig(config); - } - catch (e) { - this.showError(e.message, e); - } - this.initialize(); - window.addEventListener("resize", function () { return _this.drawFrame(false); }); - requestAnimationFrame(function () { return _this.drawFrame(); }); - } - SpinePlayer.prototype.validateConfig = function (config) { - if (!config) - throw new Error("A configuration object must be passed to to new spine.SpinePlayer()."); - if (config.skelUrl) - config.binaryUrl = config.skelUrl; - if (!config.jsonUrl && !config.binaryUrl) - throw new Error("A URL must be specified for the skeleton JSON or binary file."); - if (!config.atlasUrl) - throw new Error("A URL must be specified for the atlas file."); - if (!config.backgroundColor) - config.backgroundColor = config.alpha ? "00000000" : "000000"; - if (!config.fullScreenBackgroundColor) - config.fullScreenBackgroundColor = config.backgroundColor; - if (config.backgroundImage && !config.backgroundImage.url) - config.backgroundImage = null; - if (config.premultipliedAlpha === void 0) - config.premultipliedAlpha = true; - if (config.mipmaps === void 0) - config.mipmaps = true; - if (!config.debug) - config.debug = {}; - if (config.animations && config.animation && config.animations.indexOf(config.animation) < 0) - throw new Error("Animation '" + config.animation + "' is not in the config animation list: " + toString(config.animations)); - if (config.skins && config.skin && config.skins.indexOf(config.skin) < 0) - throw new Error("Default skin '" + config.skin + "' is not in the config skins list: " + toString(config.skins)); - if (!config.viewport) - config.viewport = {}; - if (!config.viewport.animations) - config.viewport.animations = {}; - if (config.viewport.debugRender === void 0) - config.viewport.debugRender = false; - if (config.viewport.transitionTime === void 0) - config.viewport.transitionTime = 0.25; - if (!config.controlBones) - config.controlBones = []; - if (config.showLoading === void 0) - config.showLoading = true; - if (config.defaultMix === void 0) - config.defaultMix = 0.25; - }; - SpinePlayer.prototype.initialize = function () { - var _this = this; - var config = this.config; - var dom = this.dom; - if (!config.alpha) { - var hex = config.backgroundColor; - this.dom.style.backgroundColor = (hex.charAt(0) == '#' ? hex : "#" + hex).substr(0, 7); - } - try { - this.canvas = findWithClass(dom, "spine-player-canvas"); - this.context = new spine.webgl.ManagedWebGLRenderingContext(this.canvas, { alpha: config.alpha }); - this.sceneRenderer = new spine.webgl.SceneRenderer(this.canvas, this.context, true); - if (config.showLoading) - this.loadingScreen = new spine.webgl.LoadingScreen(this.sceneRenderer); - } - catch (e) { - this.showError("Sorry, your browser does not support WebGL.\nPlease use the latest version of Firefox, Chrome, Edge, or Safari.", e); - } - this.assetManager = new spine.webgl.AssetManager(this.context, "", config.downloader); - if (config.rawDataURIs) { - for (var path in config.rawDataURIs) - this.assetManager.setRawDataURI(path, config.rawDataURIs[path]); - } - if (config.jsonUrl) - this.assetManager.loadJson(config.jsonUrl); - else - this.assetManager.loadBinary(config.binaryUrl); - this.assetManager.loadTextureAtlas(config.atlasUrl); - if (config.backgroundImage) - this.assetManager.loadTexture(config.backgroundImage.url); - this.bg.setFromString(config.backgroundColor); - this.bgFullscreen.setFromString(config.fullScreenBackgroundColor); - if (config.showControls) { - this.playerControls = dom.children[1]; - var controls = this.playerControls.children; - var timeline = controls[0]; - var buttons = controls[1].children; - this.playButton = buttons[0]; - var speedButton_1 = buttons[2]; - this.animationButton = buttons[3]; - this.skinButton = buttons[4]; - var settingsButton_1 = buttons[5]; - var fullscreenButton = buttons[6]; - var logoButton = buttons[7]; - this.timelineSlider = new Slider(); - timeline.appendChild(this.timelineSlider.create()); - this.timelineSlider.change = function (percentage) { - _this.pause(); - var animationDuration = _this.animationState.getCurrent(0).animation.duration; - var time = animationDuration * percentage; - _this.animationState.update(time - _this.playTime); - _this.animationState.apply(_this.skeleton); - _this.skeleton.updateWorldTransform(); - _this.playTime = time; - }; - this.playButton.onclick = function () { return (_this.paused ? _this.play() : _this.pause()); }; - speedButton_1.onclick = function () { return _this.showSpeedDialog(speedButton_1); }; - this.animationButton.onclick = function () { return _this.showAnimationsDialog(_this.animationButton); }; - this.skinButton.onclick = function () { return _this.showSkinsDialog(_this.skinButton); }; - settingsButton_1.onclick = function () { return _this.showSettingsDialog(settingsButton_1); }; - var oldWidth_1 = this.canvas.clientWidth, oldHeight_1 = this.canvas.clientHeight; - var oldStyleWidth_1 = this.canvas.style.width, oldStyleHeight_1 = this.canvas.style.height; - var isFullscreen_1 = false; - fullscreenButton.onclick = function () { - var fullscreenChanged = function () { - isFullscreen_1 = !isFullscreen_1; - if (!isFullscreen_1) { - _this.canvas.style.width = oldWidth_1 + "px"; - _this.canvas.style.height = oldHeight_1 + "px"; - _this.drawFrame(false); - requestAnimationFrame(function () { - _this.canvas.style.width = oldStyleWidth_1; - _this.canvas.style.height = oldStyleHeight_1; - }); - } - }; - var player = dom; - player.onfullscreenchange = fullscreenChanged; - player.onwebkitfullscreenchange = fullscreenChanged; - var doc = document; - if (doc.fullscreenElement || doc.webkitFullscreenElement || doc.mozFullScreenElement || doc.msFullscreenElement) { - if (doc.exitFullscreen) - doc.exitFullscreen(); - else if (doc.mozCancelFullScreen) - doc.mozCancelFullScreen(); - else if (doc.webkitExitFullscreen) - doc.webkitExitFullscreen(); - else if (doc.msExitFullscreen) - doc.msExitFullscreen(); - } - else { - oldWidth_1 = _this.canvas.clientWidth; - oldHeight_1 = _this.canvas.clientHeight; - oldStyleWidth_1 = _this.canvas.style.width; - oldStyleHeight_1 = _this.canvas.style.height; - if (player.requestFullscreen) - player.requestFullscreen(); - else if (player.webkitRequestFullScreen) - player.webkitRequestFullScreen(); - else if (player.mozRequestFullScreen) - player.mozRequestFullScreen(); - else if (player.msRequestFullscreen) - player.msRequestFullscreen(); - } - }; - logoButton.onclick = function () { return window.open("http://esotericsoftware.com"); }; - } - return dom; - }; - SpinePlayer.prototype.loadSkeleton = function () { - var _this = this; - if (this.error) - return; - if (this.assetManager.hasErrors()) - this.showError("Error: Assets could not be loaded.\n" + toString(this.assetManager.getErrors())); - var config = this.config; - var atlas = this.assetManager.require(config.atlasUrl); - var gl = this.context.gl, anisotropic = gl.getExtension("EXT_texture_filter_anisotropic"); - var isWebGL1 = gl.getParameter(gl.VERSION).indexOf("WebGL 1.0") != -1; - for (var _i = 0, _a = atlas.pages; _i < _a.length; _i++) { - var page = _a[_i]; - var minFilter = page.minFilter; - var useMipMaps = config.mipmaps; - var isPOT = spine.MathUtils.isPowerOfTwo(page.width) && spine.MathUtils.isPowerOfTwo(page.height); - if (isWebGL1 && !isPOT) - useMipMaps = false; - if (useMipMaps) { - if (anisotropic) { - gl.texParameterf(gl.TEXTURE_2D, anisotropic.TEXTURE_MAX_ANISOTROPY_EXT, 8); - minFilter = spine.TextureFilter.MipMapLinearLinear; - } - else - minFilter = spine.TextureFilter.Linear; - page.texture.setFilters(minFilter, spine.TextureFilter.Nearest); - } - if (minFilter != spine.TextureFilter.Nearest && minFilter != spine.TextureFilter.Linear) - page.texture.update(true); - } - var skeletonData; - if (config.jsonUrl) { - try { - var jsonData = this.assetManager.remove(config.jsonUrl); - if (!jsonData) - throw new Error("Empty JSON data."); - if (config.jsonField) { - jsonData = jsonData[config.jsonField]; - if (!jsonData) - throw new Error("JSON field does not exist: " + config.jsonField); - } - var json = new spine.SkeletonJson(new spine.AtlasAttachmentLoader(atlas)); - skeletonData = json.readSkeletonData(jsonData); - } - catch (e) { - this.showError("Error: Could not load skeleton JSON.\n" + e.message, e); - } - } - else { - var binaryData = this.assetManager.remove(config.binaryUrl); - var binary = new spine.SkeletonBinary(new spine.AtlasAttachmentLoader(atlas)); - try { - skeletonData = binary.readSkeletonData(binaryData); - } - catch (e) { - this.showError("Error: Could not load skeleton binary.\n" + e.message, e); - } - } - this.skeleton = new spine.Skeleton(skeletonData); - var stateData = new spine.AnimationStateData(skeletonData); - stateData.defaultMix = config.defaultMix; - this.animationState = new spine.AnimationState(stateData); - config.controlBones.forEach(function (bone) { - if (!skeletonData.findBone(bone)) - _this.showError("Error: Control bone does not exist in skeleton: " + bone); - }); - if (!config.skin && skeletonData.skins.length) - config.skin = skeletonData.skins[0].name; - if (config.skins && config.skin.length) { - config.skins.forEach(function (skin) { - if (!_this.skeleton.data.findSkin(skin)) - _this.showError("Error: Skin in config list does not exist in skeleton: " + skin); - }); - } - if (config.skin) { - if (!this.skeleton.data.findSkin(config.skin)) - this.showError("Error: Skin does not exist in skeleton: " + config.skin); - this.skeleton.setSkinByName(config.skin); - this.skeleton.setSlotsToSetupPose(); - } - Object.getOwnPropertyNames(config.viewport.animations).forEach(function (animation) { - if (!skeletonData.findAnimation(animation)) - _this.showError("Error: Animation for which a viewport was specified does not exist in skeleton: " + animation); - }); - if (config.animations && config.animations.length) { - config.animations.forEach(function (animation) { - if (!_this.skeleton.data.findAnimation(animation)) - _this.showError("Error: Animation in config list does not exist in skeleton: " + animation); - }); - if (!config.animation) - config.animation = config.animations[0]; - } - if (config.animation && !skeletonData.findAnimation(config.animation)) - this.showError("Error: Animation does not exist in skeleton: " + config.animation); - this.setupInput(); - if (config.showControls) { - if (skeletonData.skins.length == 1 || (config.skins && config.skins.length == 1)) - this.skinButton.classList.add("spine-player-hidden"); - if (skeletonData.animations.length == 1 || (config.animations && config.animations.length == 1)) - this.animationButton.classList.add("spine-player-hidden"); - } - if (config.success) - config.success(this); - var entry = this.animationState.getCurrent(0); - if (!entry) { - if (config.animation) { - entry = this.setAnimation(config.animation); - this.play(); - } - else { - entry = this.animationState.setEmptyAnimation(0); - entry.trackEnd = 100000000; - this.setViewport(entry.animation); - this.pause(); - } - } - else if (!this.currentViewport) { - this.setViewport(entry.animation); - this.play(); - } - }; - SpinePlayer.prototype.setupInput = function () { - var _this = this; - var config = this.config; - var controlBones = config.controlBones; - if (!controlBones.length && !config.showControls) - return; - var selectedBones = this.selectedBones = new Array(controlBones.length); - var canvas = this.canvas; - var target = null; - var offset = new spine.Vector2(); - var coords = new spine.webgl.Vector3(); - var mouse = new spine.webgl.Vector3(); - var position = new spine.Vector2(); - var skeleton = this.skeleton; - var renderer = this.sceneRenderer; - var closest = function (x, y) { - mouse.set(x, canvas.clientHeight - y, 0); - offset.x = offset.y = 0; - var bestDistance = 24, index = 0; - var best; - for (var i = 0; i < controlBones.length; i++) { - selectedBones[i] = null; - var bone = skeleton.findBone(controlBones[i]); - var distance = renderer.camera.worldToScreen(coords.set(bone.worldX, bone.worldY, 0), canvas.clientWidth, canvas.clientHeight).distance(mouse); - if (distance < bestDistance) { - bestDistance = distance; - best = bone; - index = i; - offset.x = coords.x - mouse.x; - offset.y = coords.y - mouse.y; - } - } - if (best) - selectedBones[index] = best; - return best; - }; - new spine.webgl.Input(canvas).addListener({ - down: function (x, y) { - target = closest(x, y); - }, - up: function () { - if (target) - target = null; - else if (config.showControls) - (_this.paused ? _this.play() : _this.pause()); - }, - dragged: function (x, y) { - if (target) { - x = spine.MathUtils.clamp(x + offset.x, 0, canvas.clientWidth); - y = spine.MathUtils.clamp(y - offset.y, 0, canvas.clientHeight); - renderer.camera.screenToWorld(coords.set(x, y, 0), canvas.clientWidth, canvas.clientHeight); - if (target.parent) { - target.parent.worldToLocal(position.set(coords.x - skeleton.x, coords.y - skeleton.y)); - target.x = position.x; - target.y = position.y; - } - else { - target.x = coords.x - skeleton.x; - target.y = coords.y - skeleton.y; - } - } - }, - moved: function (x, y) { return closest(x, y); } - }); - if (config.showControls) { - document.addEventListener("mousemove", function (ev) { - if (ev instanceof MouseEvent) - handleHover_1(ev.clientX, ev.clientY); - }); - document.addEventListener("touchmove", function (ev) { - if (ev instanceof TouchEvent) { - var touches = ev.changedTouches; - if (touches.length) { - var touch = touches[0]; - handleHover_1(touch.clientX, touch.clientY); - } - } - }); - var overlap_1 = function (mouseX, mouseY, rect) { - var x = mouseX - rect.left, y = mouseY - rect.top; - return x >= 0 && x <= rect.width && y >= 0 && y <= rect.height; - }; - var mouseOverControls_1 = true, mouseOverCanvas_1 = false; - var handleHover_1 = function (mouseX, mouseY) { - var popup = findWithClass(_this.dom, "spine-player-popup"); - mouseOverControls_1 = overlap_1(mouseX, mouseY, _this.playerControls.getBoundingClientRect()); - mouseOverCanvas_1 = overlap_1(mouseX, mouseY, canvas.getBoundingClientRect()); - clearTimeout(_this.cancelId); - var hide = !popup && !mouseOverControls_1 && !mouseOverCanvas_1 && !_this.paused; - if (hide) - _this.playerControls.classList.add("spine-player-controls-hidden"); - else - _this.playerControls.classList.remove("spine-player-controls-hidden"); - if (!mouseOverControls_1 && !popup && !_this.paused) { - _this.cancelId = setTimeout(function () { - if (!_this.paused) - _this.playerControls.classList.add("spine-player-controls-hidden"); - }, 1000); - } - }; - } - }; - SpinePlayer.prototype.play = function () { - var _this = this; - this.paused = false; - var config = this.config; - if (config.showControls) { - this.cancelId = setTimeout(function () { - if (!_this.paused) - _this.playerControls.classList.add("spine-player-controls-hidden"); - }, 1000); - this.playButton.classList.remove("spine-player-button-icon-play"); - this.playButton.classList.add("spine-player-button-icon-pause"); - if (!config.animation) { - if (config.animations && config.animations.length) - config.animation = config.animations[0]; - else if (this.skeleton.data.animations.length) - config.animation = this.skeleton.data.animations[0].name; - if (config.animation) - this.setAnimation(config.animation); - } - } - }; - SpinePlayer.prototype.pause = function () { - this.paused = true; - if (this.config.showControls) { - this.playerControls.classList.remove("spine-player-controls-hidden"); - clearTimeout(this.cancelId); - this.playButton.classList.remove("spine-player-button-icon-pause"); - this.playButton.classList.add("spine-player-button-icon-play"); - } - }; - SpinePlayer.prototype.setAnimation = function (animation, loop) { - if (loop === void 0) { loop = true; } - animation = this.setViewport(animation); - return this.animationState.setAnimationWith(0, animation, loop); - }; - SpinePlayer.prototype.addAnimation = function (animation, loop, delay) { - if (loop === void 0) { loop = true; } - if (delay === void 0) { delay = 0; } - animation = this.setViewport(animation); - return this.animationState.addAnimationWith(0, animation, loop, delay); - }; - SpinePlayer.prototype.setViewport = function (animation) { - if (typeof animation == "string") - animation = this.skeleton.data.findAnimation(animation); - this.previousViewport = this.currentViewport; - var globalViewport = this.config.viewport; - var viewport = this.currentViewport = { - padLeft: globalViewport.padLeft !== void 0 ? globalViewport.padLeft : "10%", - padRight: globalViewport.padRight !== void 0 ? globalViewport.padRight : "10%", - padTop: globalViewport.padTop !== void 0 ? globalViewport.padTop : "10%", - padBottom: globalViewport.padBottom !== void 0 ? globalViewport.padBottom : "10%" - }; - if (globalViewport.x !== void 0 && globalViewport.y !== void 0 && globalViewport.width && globalViewport.height) { - viewport.x = globalViewport.x; - viewport.y = globalViewport.y; - viewport.width = globalViewport.width; - viewport.height = globalViewport.height; - } - else - this.calculateAnimationViewport(animation, viewport); - var userAnimViewport = this.config.viewport.animations[animation.name]; - if (userAnimViewport) { - if (userAnimViewport.x !== void 0 && userAnimViewport.y !== void 0 && userAnimViewport.width && userAnimViewport.height) { - viewport.x = userAnimViewport.x; - viewport.y = userAnimViewport.y; - viewport.width = userAnimViewport.width; - viewport.height = userAnimViewport.height; - } - if (userAnimViewport.padLeft !== void 0) - viewport.padLeft = userAnimViewport.padLeft; - if (userAnimViewport.padRight !== void 0) - viewport.padRight = userAnimViewport.padRight; - if (userAnimViewport.padTop !== void 0) - viewport.padTop = userAnimViewport.padTop; - if (userAnimViewport.padBottom !== void 0) - viewport.padBottom = userAnimViewport.padBottom; - } - viewport.padLeft = this.percentageToWorldUnit(viewport.width, viewport.padLeft); - viewport.padRight = this.percentageToWorldUnit(viewport.width, viewport.padRight); - viewport.padBottom = this.percentageToWorldUnit(viewport.height, viewport.padBottom); - viewport.padTop = this.percentageToWorldUnit(viewport.height, viewport.padTop); - this.viewportTransitionStart = performance.now(); - return animation; - }; - SpinePlayer.prototype.percentageToWorldUnit = function (size, percentageOrAbsolute) { - if (typeof percentageOrAbsolute === "string") - return size * parseFloat(percentageOrAbsolute.substr(0, percentageOrAbsolute.length - 1)) / 100; - return percentageOrAbsolute; - }; - SpinePlayer.prototype.calculateAnimationViewport = function (animation, viewport) { - this.skeleton.setToSetupPose(); - var steps = 100, stepTime = animation.duration ? animation.duration / steps : 0, time = 0; - var minX = 100000000, maxX = -100000000, minY = 100000000, maxY = -100000000; - var offset = new spine.Vector2(), size = new spine.Vector2(); - for (var i = 0; i < steps; i++, time += stepTime) { - animation.apply(this.skeleton, time, time, false, null, 1, spine.MixBlend.setup, spine.MixDirection.mixIn); - this.skeleton.updateWorldTransform(); - this.skeleton.getBounds(offset, size); - if (!isNaN(offset.x) && !isNaN(offset.y) && !isNaN(size.x) && !isNaN(size.y)) { - minX = Math.min(offset.x, minX); - maxX = Math.max(offset.x + size.x, maxX); - minY = Math.min(offset.y, minY); - maxY = Math.max(offset.y + size.y, maxY); - } - else - this.showError("Animation bounds are invalid: " + animation.name); - } - viewport.x = minX; - viewport.y = minY; - viewport.width = maxX - minX; - viewport.height = maxY - minY; - }; - SpinePlayer.prototype.drawFrame = function (requestNextFrame) { - var _this = this; - if (requestNextFrame === void 0) { requestNextFrame = true; } - try { - if (this.error) - return; - if (requestNextFrame && !this.stopRequestAnimationFrame) - requestAnimationFrame(function () { return _this.drawFrame(); }); - var doc = document; - var isFullscreen = doc.fullscreenElement || doc.webkitFullscreenElement || doc.mozFullScreenElement || doc.msFullscreenElement; - var bg = isFullscreen ? this.bgFullscreen : this.bg; - this.time.update(); - var delta = this.time.delta; - var loading = this.assetManager.isLoadingComplete(); - if (!this.skeleton && loading) - this.loadSkeleton(); - var skeleton = this.skeleton; - var config = this.config; - if (skeleton) { - var renderer = this.sceneRenderer; - renderer.resize(spine.webgl.ResizeMode.Expand); - var playDelta = this.paused ? 0 : delta * this.speed; - if (config.frame) - config.frame(this, playDelta); - if (!this.paused) { - this.animationState.update(playDelta); - this.animationState.apply(skeleton); - skeleton.updateWorldTransform(); - if (config.showControls) { - this.playTime += playDelta; - var entry = this.animationState.getCurrent(0); - if (entry) { - var duration = entry.animation.duration; - while (this.playTime >= duration && duration != 0) - this.playTime -= duration; - this.playTime = Math.max(0, Math.min(this.playTime, duration)); - this.timelineSlider.setValue(this.playTime / duration); - } - } - } - var viewport = this.viewport; - viewport.x = this.currentViewport.x - this.currentViewport.padLeft, - viewport.y = this.currentViewport.y - this.currentViewport.padBottom, - viewport.width = this.currentViewport.width + this.currentViewport.padLeft + this.currentViewport.padRight, - viewport.height = this.currentViewport.height + this.currentViewport.padBottom + this.currentViewport.padTop; - if (this.previousViewport) { - var transitionAlpha = (performance.now() - this.viewportTransitionStart) / 1000 / config.viewport.transitionTime; - if (transitionAlpha < 1) { - var x = this.previousViewport.x - this.previousViewport.padLeft; - var y = this.previousViewport.y - this.previousViewport.padBottom; - var width = this.previousViewport.width + this.previousViewport.padLeft + this.previousViewport.padRight; - var height = this.previousViewport.height + this.previousViewport.padBottom + this.previousViewport.padTop; - viewport.x = x + (viewport.x - x) * transitionAlpha; - viewport.y = y + (viewport.y - y) * transitionAlpha; - viewport.width = width + (viewport.width - width) * transitionAlpha; - viewport.height = height + (viewport.height - height) * transitionAlpha; - } - } - renderer.camera.zoom = this.canvas.height / this.canvas.width > viewport.height / viewport.width - ? viewport.width / this.canvas.width : viewport.height / this.canvas.height; - renderer.camera.position.x = viewport.x + viewport.width / 2; - renderer.camera.position.y = viewport.y + viewport.height / 2; - var gl = this.context.gl; - gl.clearColor(bg.r, bg.g, bg.b, bg.a); - gl.clear(gl.COLOR_BUFFER_BIT); - if (config.update) - config.update(this, playDelta); - renderer.begin(); - var bgImage = config.backgroundImage; - if (bgImage) { - var texture = this.assetManager.require(bgImage.url); - if (bgImage.x !== void 0 && bgImage.y !== void 0 && bgImage.width && bgImage.height) - renderer.drawTexture(texture, bgImage.x, bgImage.y, bgImage.width, bgImage.height); - else - renderer.drawTexture(texture, viewport.x, viewport.y, viewport.width, viewport.height); - } - renderer.drawSkeleton(skeleton, config.premultipliedAlpha); - if ((renderer.skeletonDebugRenderer.drawBones = config.debug.bones) - || (renderer.skeletonDebugRenderer.drawBoundingBoxes = config.debug.bounds) - || (renderer.skeletonDebugRenderer.drawClipping = config.debug.clipping) - || (renderer.skeletonDebugRenderer.drawMeshHull = config.debug.hulls) - || (renderer.skeletonDebugRenderer.drawPaths = config.debug.paths) - || (renderer.skeletonDebugRenderer.drawRegionAttachments = config.debug.regions) - || (renderer.skeletonDebugRenderer.drawMeshTriangles = config.debug.meshes)) { - renderer.drawSkeletonDebug(skeleton, config.premultipliedAlpha); - } - var controlBones = config.controlBones; - if (controlBones.length) { - var selectedBones = this.selectedBones; - gl.lineWidth(2); - for (var i = 0; i < controlBones.length; i++) { - var bone = skeleton.findBone(controlBones[i]); - if (!bone) - continue; - var colorInner = selectedBones[i] ? BONE_INNER_OVER : BONE_INNER; - var colorOuter = selectedBones[i] ? BONE_OUTER_OVER : BONE_OUTER; - renderer.circle(true, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorInner); - renderer.circle(false, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorOuter); - } - } - if (config.viewport.debugRender) { - gl.lineWidth(1); - renderer.rect(false, this.currentViewport.x, this.currentViewport.y, this.currentViewport.width, this.currentViewport.height, spine.Color.GREEN); - renderer.rect(false, viewport.x, viewport.y, viewport.width, viewport.height, spine.Color.RED); - } - renderer.end(); - if (config.draw) - config.draw(this, playDelta); - } - if (config.showLoading) { - this.loadingScreen.backgroundColor.setFromColor(bg); - this.loadingScreen.draw(loading); - } - if (loading && config.loading) - config.loading(this, delta); - } - catch (e) { - this.showError("Error: Unable to render skeleton.\n" + e.message, e); - } - }; - SpinePlayer.prototype.stopRendering = function () { - this.stopRequestAnimationFrame = true; - }; - SpinePlayer.prototype.hidePopup = function (id) { - return this.popup && this.popup.hide(id); - }; - SpinePlayer.prototype.showSpeedDialog = function (speedButton) { - var _this = this; - var id = "speed"; - if (this.hidePopup(id)) - return; - var popup = new Popup(id, speedButton, this, this.playerControls, "\n
        Speed
        \n
        \n
        \n
        \n\t
        \n\t
        0.1x
        1x
        2x
        \n
        \n
        "); - var slider = new Slider(2, 0.1, true); - findWithClass(popup.dom, "spine-player-speed-slider").appendChild(slider.create()); - slider.setValue(this.speed / 2); - slider.change = function (percentage) { return _this.speed = percentage * 2; }; - popup.show(); - }; - SpinePlayer.prototype.showAnimationsDialog = function (animationsButton) { - var _this = this; - var id = "animations"; - if (this.hidePopup(id)) - return; - if (!this.skeleton || !this.skeleton.data.animations.length) - return; - var popup = new Popup(id, animationsButton, this, this.playerControls, "
        Animations

          "); - var rows = findWithClass(popup.dom, "spine-player-list"); - this.skeleton.data.animations.forEach(function (animation) { - if (_this.config.animations && _this.config.animations.indexOf(animation.name) < 0) - return; - var row = createElement("
        • "); - if (animation.name == _this.config.animation) - row.classList.add("selected"); - findWithClass(row, "selectable-text").innerText = animation.name; - rows.appendChild(row); - row.onclick = function () { - removeClass(rows.children, "selected"); - row.classList.add("selected"); - _this.config.animation = animation.name; - _this.playTime = 0; - _this.setAnimation(animation.name); - _this.play(); - }; - }); - popup.show(); - }; - SpinePlayer.prototype.showSkinsDialog = function (skinButton) { - var _this = this; - var id = "skins"; - if (this.hidePopup(id)) - return; - if (!this.skeleton || !this.skeleton.data.animations.length) - return; - var popup = new Popup(id, skinButton, this, this.playerControls, "
          Skins

            "); - var rows = findWithClass(popup.dom, "spine-player-list"); - this.skeleton.data.skins.forEach(function (skin) { - if (_this.config.skins && _this.config.skins.indexOf(skin.name) < 0) - return; - var row = createElement("
          • "); - if (skin.name == _this.config.skin) - row.classList.add("selected"); - findWithClass(row, "selectable-text").innerText = skin.name; - rows.appendChild(row); - row.onclick = function () { - removeClass(rows.children, "selected"); - row.classList.add("selected"); - _this.config.skin = skin.name; - _this.skeleton.setSkinByName(_this.config.skin); - _this.skeleton.setSlotsToSetupPose(); - }; - }); - popup.show(); - }; - SpinePlayer.prototype.showSettingsDialog = function (settingsButton) { - var _this = this; - var id = "settings"; - if (this.hidePopup(id)) - return; - if (!this.skeleton || !this.skeleton.data.animations.length) - return; - var popup = new Popup(id, settingsButton, this, this.playerControls, "
            Debug

              "); - var rows = findWithClass(popup.dom, "spine-player-list"); - var makeItem = function (label, name) { - var row = createElement("
            • "); - var s = new Switch(label); - row.appendChild(s.create()); - var debug = _this.config.debug; - s.setEnabled(debug[name]); - s.change = function (value) { return debug[name] = value; }; - rows.appendChild(row); - }; - makeItem("Bones", "bones"); - makeItem("Regions", "regions"); - makeItem("Meshes", "meshes"); - makeItem("Bounds", "bounds"); - makeItem("Paths", "paths"); - makeItem("Clipping", "clipping"); - makeItem("Points", "points"); - makeItem("Hulls", "hulls"); - popup.show(); - }; - SpinePlayer.prototype.showError = function (message, error) { - if (error === void 0) { error = null; } - if (this.error) { - if (error) - throw error; - } - else { - this.error = true; - this.dom.appendChild(createElement("
              " - + message.replace("\n", "

              ") + "
              ")); - if (this.config.error) - this.config.error(this, message); - throw (error ? error : new Error(message)); - } - }; - return SpinePlayer; - }()); - spine.SpinePlayer = SpinePlayer; - var Popup = (function () { - function Popup(id, button, player, parent, htmlContent) { - this.id = id; - this.button = button; - this.player = player; - this.dom = createElement("
              "); - this.dom.innerHTML = htmlContent; - parent.appendChild(this.dom); - this.className = "spine-player-button-icon-" + id + "-selected"; - } - Popup.prototype.hide = function (id) { - this.dom.remove(); - this.button.classList.remove(this.className); - if (this.id == id) { - this.player.popup = null; - return true; - } - }; - Popup.prototype.show = function () { - var _this = this; - this.player.popup = this; - this.button.classList.add(this.className); - this.dom.classList.remove("spine-player-hidden"); - var dismissed = false; - var resize = function () { - if (!dismissed) - requestAnimationFrame(resize); - var playerDom = _this.player.dom; - var bottomOffset = Math.abs(playerDom.getBoundingClientRect().bottom - playerDom.getBoundingClientRect().bottom); - var rightOffset = Math.abs(playerDom.getBoundingClientRect().right - playerDom.getBoundingClientRect().right); - _this.dom.style.maxHeight = (playerDom.clientHeight - bottomOffset - rightOffset) + "px"; - }; - requestAnimationFrame(resize); - var justClicked = true; - var windowClickListener = function (event) { - if (justClicked || _this.player.popup != _this) { - justClicked = false; - return; - } - if (!_this.dom.contains(event.target)) { - _this.dom.remove(); - window.removeEventListener("click", windowClickListener); - _this.button.classList.remove(_this.className); - _this.player.popup = null; - dismissed = true; - } - }; - window.addEventListener("click", windowClickListener); - }; - return Popup; - }()); - var Switch = (function () { - function Switch(text) { - this.text = text; - this.enabled = false; - } - Switch.prototype.create = function () { - var _this = this; - this["switch"] = createElement("\n
              \n\t" + this.text + "\n\t
              \n\t\t
              \n\t
              \n
              "); - this["switch"].addEventListener("click", function () { - _this.setEnabled(!_this.enabled); - if (_this.change) - _this.change(_this.enabled); - }); - return this["switch"]; - }; - Switch.prototype.setEnabled = function (enabled) { - if (enabled) - this["switch"].classList.add("active"); - else - this["switch"].classList.remove("active"); - this.enabled = enabled; - }; - Switch.prototype.isEnabled = function () { - return this.enabled; - }; - return Switch; - }()); - var Slider = (function () { - function Slider(snaps, snapPercentage, big) { - if (snaps === void 0) { snaps = 0; } - if (snapPercentage === void 0) { snapPercentage = 0.1; } - if (big === void 0) { big = false; } - this.snaps = snaps; - this.snapPercentage = snapPercentage; - this.big = big; - } - Slider.prototype.create = function () { - var _this = this; - this.slider = createElement("\n
              \n\t
              \n\t\n
              "); - this.value = findWithClass(this.slider, "spine-player-slider-value"); - this.setValue(0); - var dragging = false; - new spine.webgl.Input(this.slider).addListener({ - down: function (x, y) { - dragging = true; - _this.value.classList.add("hovering"); - }, - up: function (x, y) { - dragging = false; - if (_this.change) - _this.change(_this.setValue(x / _this.slider.clientWidth)); - _this.value.classList.remove("hovering"); - }, - moved: function (x, y) { - if (dragging && _this.change) - _this.change(_this.setValue(x / _this.slider.clientWidth)); - }, - dragged: function (x, y) { - if (_this.change) - _this.change(_this.setValue(x / _this.slider.clientWidth)); - } - }); - return this.slider; - }; - Slider.prototype.setValue = function (percentage) { - percentage = Math.max(0, Math.min(1, percentage)); - if (this.snaps) { - var snap = 1 / this.snaps; - var modulo = percentage % snap; - if (modulo < snap * this.snapPercentage) - percentage = percentage - modulo; - else if (modulo > snap - snap * this.snapPercentage) - percentage = percentage - modulo + snap; - percentage = Math.max(0, Math.min(1, percentage)); - } - this.value.style.width = "" + (percentage * 100) + "%"; - return percentage; - }; - return Slider; - }()); - function findWithClass(element, className) { - return element.getElementsByClassName(className)[0]; - } - function createElement(html) { - var div = document.createElement("div"); - div.innerHTML = html; - return div.children[0]; - } - function removeClass(elements, clazz) { - for (var i = 0; i < elements.length; i++) - elements[i].classList.remove(clazz); - } - function toString(object) { - return JSON.stringify(object) - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); - } - var BONE_INNER_OVER = new spine.Color(0.478, 0, 0, 0.25); - var BONE_OUTER_OVER = new spine.Color(1, 1, 1, 1); - var BONE_INNER = new spine.Color(0.478, 0, 0, 0.5); - var BONE_OUTER = new spine.Color(1, 0, 0, 0.8); -})(spine || (spine = {})); -var spine; -(function (spine) { - var SpinePlayerEditor = (function () { - function SpinePlayerEditor(parent) { - this.prefix = "\n\n\n\n".trim(); - this.postfix = ""; - this.timerId = 0; - this.render(parent); - } - SpinePlayerEditor.prototype.render = function (parent) { - var _this = this; - var dom = "\n\t\t\t\t
              \n\t\t\t\t\t
              \n\t\t\t\t\t\n\t\t\t\t
              \n\t\t\t"; - parent.innerHTML = dom; - var codeElement = parent.getElementsByClassName("spine-player-editor-code")[0]; - this.player = parent.getElementsByClassName("spine-player-editor-player")[0]; - requestAnimationFrame(function () { - _this.code = CodeMirror(codeElement, { - lineNumbers: true, - tabSize: 3, - indentUnit: 3, - indentWithTabs: true, - scrollBarStyle: "native", - mode: "htmlmixed", - theme: "monokai" - }); - _this.code.on("change", function () { - _this.startPlayer(); - }); - _this.setCode(SpinePlayerEditor.DEFAULT_CODE); - }); - }; - SpinePlayerEditor.prototype.setPreAndPostfix = function (prefix, postfix) { - this.prefix = prefix; - this.postfix = postfix; - this.startPlayer(); - }; - SpinePlayerEditor.prototype.setCode = function (code) { - this.code.setValue(code); - this.startPlayer(); - }; - SpinePlayerEditor.prototype.startPlayer = function () { - var _this = this; - clearTimeout(this.timerId); - this.timerId = setTimeout(function () { - var code = _this.code.getDoc().getValue(); - code = _this.prefix + code + _this.postfix; - code = window.btoa(code); - _this.player.src = ""; - _this.player.src = "data:text/html;base64," + code; - }, 500); - }; - SpinePlayerEditor.DEFAULT_CODE = "\n\n\n\n
              \n\n\n\t\t".trim(); - return SpinePlayerEditor; - }()); - spine.SpinePlayerEditor = SpinePlayerEditor; -})(spine || (spine = {})); -//# sourceMappingURL=spine-player.js.map \ No newline at end of file diff --git a/spine-ts/build/spine-player.js.map b/spine-ts/build/spine-player.js.map deleted file mode 100644 index b08188c71..000000000 --- a/spine-ts/build/spine-player.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"spine-player.js","sourceRoot":"","sources":["../core/src/Animation.ts","../core/src/AnimationState.ts","../core/src/AnimationStateData.ts","../core/src/AssetManager.ts","../core/src/AtlasAttachmentLoader.ts","../core/src/Bone.ts","../core/src/BoneData.ts","../core/src/ConstraintData.ts","../core/src/Event.ts","../core/src/EventData.ts","../core/src/IkConstraint.ts","../core/src/IkConstraintData.ts","../core/src/PathConstraint.ts","../core/src/PathConstraintData.ts","../core/src/Skeleton.ts","../core/src/SkeletonBinary.ts","../core/src/SkeletonBounds.ts","../core/src/SkeletonClipping.ts","../core/src/SkeletonData.ts","../core/src/SkeletonJson.ts","../core/src/Skin.ts","../core/src/Slot.ts","../core/src/SlotData.ts","../core/src/Texture.ts","../core/src/TextureAtlas.ts","../core/src/TransformConstraint.ts","../core/src/TransformConstraintData.ts","../core/src/Triangulator.ts","../core/src/Updatable.ts","../core/src/Utils.ts","../core/src/VertexEffect.ts","../core/src/polyfills.ts","../core/src/attachments/Attachment.ts","../core/src/attachments/AttachmentLoader.ts","../core/src/attachments/BoundingBoxAttachment.ts","../core/src/attachments/ClippingAttachment.ts","../core/src/attachments/MeshAttachment.ts","../core/src/attachments/PathAttachment.ts","../core/src/attachments/PointAttachment.ts","../core/src/attachments/RegionAttachment.ts","../core/src/vertexeffects/JitterEffect.ts","../core/src/vertexeffects/SwirlEffect.ts","../webgl/src/AssetManager.ts","../webgl/src/Camera.ts","../webgl/src/GLTexture.ts","../webgl/src/Input.ts","../webgl/src/LoadingScreen.ts","../webgl/src/Matrix4.ts","../webgl/src/Mesh.ts","../webgl/src/PolygonBatcher.ts","../webgl/src/SceneRenderer.ts","../webgl/src/Shader.ts","../webgl/src/ShapeRenderer.ts","../webgl/src/SkeletonDebugRenderer.ts","../webgl/src/SkeletonRenderer.ts","../webgl/src/Vector3.ts","../webgl/src/WebGL.ts","../player/src/Player.ts","../player/src/PlayerEditor.ts"],"names":[],"mappings":"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G,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC7G,IAAI,KAAK,IAAI,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACb,CAAC;YAED,6BAAW,GAAX;gBACC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,OAAO,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBAC7G,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC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,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,8BAAY,GAAZ,UAAc,MAAe;gBAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAClB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA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"} \ No newline at end of file diff --git a/spine-ts/build/spine-threejs.d.ts b/spine-ts/build/spine-threejs.d.ts deleted file mode 100644 index 239d6ea38..000000000 --- a/spine-ts/build/spine-threejs.d.ts +++ /dev/null @@ -1,1323 +0,0 @@ -declare module spine { - class Animation { - name: string; - timelines: Array; - timelineIds: StringSet; - duration: number; - constructor(name: string, timelines: Array, duration: number); - setTimelines(timelines: Array): void; - hasTimeline(ids: string[]): boolean; - apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - enum MixBlend { - setup = 0, - first = 1, - replace = 2, - add = 3 - } - enum MixDirection { - mixIn = 0, - mixOut = 1 - } - abstract class Timeline { - propertyIds: string[]; - frames: ArrayLike; - constructor(frameCount: number, propertyIds: string[]); - getPropertyIds(): string[]; - getFrameEntries(): number; - getFrameCount(): number; - getDuration(): number; - abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - static search1(frames: ArrayLike, time: number): number; - static search(frames: ArrayLike, time: number, step: number): number; - } - interface BoneTimeline { - boneIndex: number; - } - interface SlotTimeline { - slotIndex: number; - } - abstract class CurveTimeline extends Timeline { - protected curves: ArrayLike; - constructor(frameCount: number, bezierCount: number, propertyIds: string[]); - setLinear(frame: number): void; - setStepped(frame: number): void; - shrink(bezierCount: number): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number; - } - abstract class CurveTimeline1 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value: number): void; - getCurveValue(time: number): number; - } - abstract class CurveTimeline2 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId1: string, propertyId2: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value1: number, value2: number): void; - } - class RotateTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBATimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AlphaTimeline extends CurveTimeline1 implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBA2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGB2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AttachmentTimeline extends Timeline implements SlotTimeline { - slotIndex: number; - attachmentNames: Array; - constructor(frameCount: number, slotIndex: number); - getFrameCount(): number; - setFrame(frame: number, time: number, attachmentName: string): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; - } - class DeformTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - attachment: VertexAttachment; - vertices: Array>; - constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment); - getFrameCount(): number; - setFrame(frame: number, time: number, vertices: ArrayLike): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getCurvePercent(time: number, frame: number): number; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class EventTimeline extends Timeline { - static propertyIds: string[]; - events: Array; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, event: Event): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class DrawOrderTimeline extends Timeline { - static propertyIds: string[]; - drawOrders: Array>; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, time: number, drawOrder: Array): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class IkConstraintTimeline extends CurveTimeline { - ikConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TransformConstraintTimeline extends CurveTimeline { - transformConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintPositionTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintSpacingTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintMixTimeline extends CurveTimeline { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } -} -declare module spine { - class AnimationState { - private static emptyAnimation; - data: AnimationStateData; - tracks: TrackEntry[]; - timeScale: number; - unkeyedState: number; - events: Event[]; - listeners: AnimationStateListener[]; - queue: EventQueue; - propertyIDs: StringSet; - animationsChanged: boolean; - trackEntryPool: Pool; - constructor(data: AnimationStateData); - update(delta: number): void; - updateMixingFrom(to: TrackEntry, delta: number): boolean; - apply(skeleton: Skeleton): boolean; - applyMixingFrom(to: TrackEntry, skeleton: Skeleton, blend: MixBlend): number; - applyAttachmentTimeline(timeline: AttachmentTimeline, skeleton: Skeleton, time: number, blend: MixBlend, attachments: boolean): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string, attachments: boolean): void; - applyRotateTimeline(timeline: RotateTimeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array, i: number, firstFrame: boolean): void; - queueEvents(entry: TrackEntry, animationTime: number): void; - clearTracks(): void; - clearTrack(trackIndex: number): void; - setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; - setAnimation(trackIndex: number, animationName: string, loop?: boolean): TrackEntry; - setAnimationWith(trackIndex: number, animation: Animation, loop?: boolean): TrackEntry; - addAnimation(trackIndex: number, animationName: string, loop?: boolean, delay?: number): TrackEntry; - addAnimationWith(trackIndex: number, animation: Animation, loop?: boolean, delay?: number): TrackEntry; - setEmptyAnimation(trackIndex: number, mixDuration?: number): TrackEntry; - addEmptyAnimation(trackIndex: number, mixDuration?: number, delay?: number): TrackEntry; - setEmptyAnimations(mixDuration?: number): void; - expandToIndex(index: number): TrackEntry; - trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; - clearNext(entry: TrackEntry): void; - _animationsChanged(): void; - computeHold(entry: TrackEntry): void; - getCurrent(trackIndex: number): TrackEntry; - addListener(listener: AnimationStateListener): void; - removeListener(listener: AnimationStateListener): void; - clearListeners(): void; - clearListenerNotifications(): void; - } - class TrackEntry { - animation: Animation; - previous: TrackEntry; - next: TrackEntry; - mixingFrom: TrackEntry; - mixingTo: TrackEntry; - listener: AnimationStateListener; - trackIndex: number; - loop: boolean; - holdPrevious: boolean; - reverse: boolean; - eventThreshold: number; - attachmentThreshold: number; - drawOrderThreshold: number; - animationStart: number; - animationEnd: number; - animationLast: number; - nextAnimationLast: number; - delay: number; - trackTime: number; - trackLast: number; - nextTrackLast: number; - trackEnd: number; - timeScale: number; - alpha: number; - mixTime: number; - mixDuration: number; - interruptAlpha: number; - totalAlpha: number; - mixBlend: MixBlend; - timelineMode: number[]; - timelineHoldMix: TrackEntry[]; - timelinesRotation: number[]; - reset(): void; - getAnimationTime(): number; - setAnimationLast(animationLast: number): void; - isComplete(): boolean; - resetRotationDirections(): void; - getTrackComplete(): number; - } - class EventQueue { - objects: Array; - drainDisabled: boolean; - animState: AnimationState; - constructor(animState: AnimationState); - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - drain(): void; - clear(): void; - } - enum EventType { - start = 0, - interrupt = 1, - end = 2, - dispose = 3, - complete = 4, - event = 5 - } - interface AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } - abstract class AnimationStateAdapter implements AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } -} -declare module spine { - class AnimationStateData { - skeletonData: SkeletonData; - animationToMixTime: Map; - defaultMix: number; - constructor(skeletonData: SkeletonData); - setMix(fromName: string, toName: string, duration: number): void; - setMixWith(from: Animation, to: Animation, duration: number): void; - getMix(from: Animation, to: Animation): number; - } -} -declare module spine { - class AssetManager implements Disposable { - private pathPrefix; - private textureLoader; - private downloader; - private assets; - private errors; - private toLoad; - private loaded; - constructor(textureLoader: (image: HTMLImageElement | ImageBitmap) => Texture, pathPrefix?: string, downloader?: Downloader); - private start; - private success; - private error; - setRawDataURI(path: string, data: string): void; - loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, message: string) => void): void; - loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, message: string) => void): void; - loadJson(path: string, success?: (path: string, object: object) => void, error?: (path: string, message: string) => void): void; - loadTexture(path: string, success?: (path: string, texture: Texture) => void, error?: (path: string, message: string) => void): void; - loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, message: string) => void): void; - get(path: string): any; - require(path: string): any; - remove(path: string): any; - removeAll(): void; - isLoadingComplete(): boolean; - getToLoad(): number; - getLoaded(): number; - dispose(): void; - hasErrors(): boolean; - getErrors(): Map; - } - class Downloader { - private callbacks; - rawDataUris: Map; - downloadText(url: string, success: (data: string) => void, error: (status: number, responseText: string) => void): void; - downloadJson(url: string, success: (data: object) => void, error: (status: number, responseText: string) => void): void; - downloadBinary(url: string, success: (data: Uint8Array) => void, error: (status: number, responseText: string) => void): void; - private start; - private finish; - } -} -declare module spine { - class AtlasAttachmentLoader implements AttachmentLoader { - atlas: TextureAtlas; - constructor(atlas: TextureAtlas); - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - class Bone implements Updatable { - data: BoneData; - skeleton: Skeleton; - parent: Bone; - children: Bone[]; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - ax: number; - ay: number; - arotation: number; - ascaleX: number; - ascaleY: number; - ashearX: number; - ashearY: number; - a: number; - b: number; - c: number; - d: number; - worldY: number; - worldX: number; - sorted: boolean; - active: boolean; - constructor(data: BoneData, skeleton: Skeleton, parent: Bone); - isActive(): boolean; - update(): void; - updateWorldTransform(): void; - updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; - setToSetupPose(): void; - getWorldRotationX(): number; - getWorldRotationY(): number; - getWorldScaleX(): number; - getWorldScaleY(): number; - updateAppliedTransform(): void; - worldToLocal(world: Vector2): Vector2; - localToWorld(local: Vector2): Vector2; - worldToLocalRotation(worldRotation: number): number; - localToWorldRotation(localRotation: number): number; - rotateWorld(degrees: number): void; - } -} -declare module spine { - class BoneData { - index: number; - name: string; - parent: BoneData; - length: number; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - transformMode: TransformMode; - skinRequired: boolean; - color: Color; - constructor(index: number, name: string, parent: BoneData); - } - enum TransformMode { - Normal = 0, - OnlyTranslation = 1, - NoRotationOrReflection = 2, - NoScale = 3, - NoScaleOrReflection = 4 - } -} -declare module spine { - abstract class ConstraintData { - name: string; - order: number; - skinRequired: boolean; - constructor(name: string, order: number, skinRequired: boolean); - } -} -declare module spine { - class Event { - data: EventData; - intValue: number; - floatValue: number; - stringValue: string; - time: number; - volume: number; - balance: number; - constructor(time: number, data: EventData); - } -} -declare module spine { - class EventData { - name: string; - intValue: number; - floatValue: number; - stringValue: string; - audioPath: string; - volume: number; - balance: number; - constructor(name: string); - } -} -declare module spine { - class IkConstraint implements Updatable { - data: IkConstraintData; - bones: Array; - target: Bone; - bendDirection: number; - compress: boolean; - stretch: boolean; - mix: number; - softness: number; - active: boolean; - constructor(data: IkConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; - apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, uniform: boolean, softness: number, alpha: number): void; - } -} -declare module spine { - class IkConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - bendDirection: number; - compress: boolean; - stretch: boolean; - uniform: boolean; - mix: number; - softness: number; - constructor(name: string); - } -} -declare module spine { - class PathConstraint implements Updatable { - static NONE: number; - static BEFORE: number; - static AFTER: number; - static epsilon: number; - data: PathConstraintData; - bones: Array; - target: Slot; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - spaces: number[]; - positions: number[]; - world: number[]; - curves: number[]; - lengths: number[]; - segments: number[]; - active: boolean; - constructor(data: PathConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[]; - addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; - } -} -declare module spine { - class PathConstraintData extends ConstraintData { - bones: BoneData[]; - target: SlotData; - positionMode: PositionMode; - spacingMode: SpacingMode; - rotateMode: RotateMode; - offsetRotation: number; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - constructor(name: string); - } - enum PositionMode { - Fixed = 0, - Percent = 1 - } - enum SpacingMode { - Length = 0, - Fixed = 1, - Percent = 2, - Proportional = 3 - } - enum RotateMode { - Tangent = 0, - Chain = 1, - ChainScale = 2 - } -} -declare module spine { - class Skeleton { - data: SkeletonData; - bones: Array; - slots: Array; - drawOrder: Array; - ikConstraints: Array; - transformConstraints: Array; - pathConstraints: Array; - _updateCache: Updatable[]; - skin: Skin; - color: Color; - time: number; - scaleX: number; - scaleY: number; - x: number; - y: number; - constructor(data: SkeletonData); - updateCache(): void; - sortIkConstraint(constraint: IkConstraint): void; - sortPathConstraint(constraint: PathConstraint): void; - sortTransformConstraint(constraint: TransformConstraint): void; - sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; - sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; - sortBone(bone: Bone): void; - sortReset(bones: Array): void; - updateWorldTransform(): void; - updateWorldTransformWith(parent: Bone): void; - setToSetupPose(): void; - setBonesToSetupPose(): void; - setSlotsToSetupPose(): void; - getRootBone(): Bone; - findBone(boneName: string): Bone; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): Slot; - findSlotIndex(slotName: string): number; - setSkinByName(skinName: string): void; - setSkin(newSkin: Skin): void; - getAttachmentByName(slotName: string, attachmentName: string): Attachment; - getAttachment(slotIndex: number, attachmentName: string): Attachment; - setAttachment(slotName: string, attachmentName: string): void; - findIkConstraint(constraintName: string): IkConstraint; - findTransformConstraint(constraintName: string): TransformConstraint; - findPathConstraint(constraintName: string): PathConstraint; - getBounds(offset: Vector2, size: Vector2, temp?: Array): void; - update(delta: number): void; - } -} -declare module spine { - class SkeletonBinary { - scale: number; - attachmentLoader: AttachmentLoader; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(binary: Uint8Array): SkeletonData; - private readSkin; - private readAttachment; - private readVertices; - private readFloatArray; - private readShortArray; - private readAnimation; - } -} -declare module spine { - class SkeletonBounds { - minX: number; - minY: number; - maxX: number; - maxY: number; - boundingBoxes: BoundingBoxAttachment[]; - polygons: ArrayLike[]; - private polygonPool; - update(skeleton: Skeleton, updateAabb: boolean): void; - aabbCompute(): void; - aabbContainsPoint(x: number, y: number): boolean; - aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; - aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; - containsPoint(x: number, y: number): BoundingBoxAttachment; - containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; - intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; - intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; - getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; - getWidth(): number; - getHeight(): number; - } -} -declare module spine { - class SkeletonClipping { - private triangulator; - private clippingPolygon; - private clipOutput; - clippedVertices: number[]; - clippedTriangles: number[]; - private scratch; - private clipAttachment; - private clippingPolygons; - clipStart(slot: Slot, clip: ClippingAttachment): number; - clipEndWithSlot(slot: Slot): void; - clipEnd(): void; - isClipping(): boolean; - clipTriangles(vertices: ArrayLike, verticesLength: number, triangles: ArrayLike, trianglesLength: number, uvs: ArrayLike, light: Color, dark: Color, twoColor: boolean): void; - clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array, output: Array): boolean; - static makeClockwise(polygon: ArrayLike): void; - } -} -declare module spine { - class SkeletonData { - name: string; - bones: BoneData[]; - slots: SlotData[]; - skins: Skin[]; - defaultSkin: Skin; - events: EventData[]; - animations: Animation[]; - ikConstraints: IkConstraintData[]; - transformConstraints: TransformConstraintData[]; - pathConstraints: PathConstraintData[]; - x: number; - y: number; - width: number; - height: number; - version: string; - hash: string; - fps: number; - imagesPath: string; - audioPath: string; - findBone(boneName: string): BoneData; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): SlotData; - findSlotIndex(slotName: string): number; - findSkin(skinName: string): Skin; - findEvent(eventDataName: string): EventData; - findAnimation(animationName: string): Animation; - findIkConstraint(constraintName: string): IkConstraintData; - findTransformConstraint(constraintName: string): TransformConstraintData; - findPathConstraint(constraintName: string): PathConstraintData; - } -} -declare module spine { - class SkeletonJson { - attachmentLoader: AttachmentLoader; - scale: number; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(json: string | any): SkeletonData; - readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; - readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; - readAnimation(map: any, name: string, skeletonData: SkeletonData): void; - } -} -declare module spine { - class SkinEntry { - slotIndex: number; - name: string; - attachment: Attachment; - constructor(slotIndex: number, name: string, attachment: Attachment); - } - class Skin { - name: string; - attachments: Map[]; - bones: BoneData[]; - constraints: ConstraintData[]; - constructor(name: string); - setAttachment(slotIndex: number, name: string, attachment: Attachment): void; - addSkin(skin: Skin): void; - copySkin(skin: Skin): void; - getAttachment(slotIndex: number, name: string): Attachment; - removeAttachment(slotIndex: number, name: string): void; - getAttachments(): Array; - getAttachmentsForSlot(slotIndex: number, attachments: Array): void; - clear(): void; - attachAll(skeleton: Skeleton, oldSkin: Skin): void; - } -} -declare module spine { - class Slot { - data: SlotData; - bone: Bone; - color: Color; - darkColor: Color; - attachment: Attachment; - private attachmentTime; - attachmentState: number; - deform: number[]; - constructor(data: SlotData, bone: Bone); - getSkeleton(): Skeleton; - getAttachment(): Attachment; - setAttachment(attachment: Attachment): void; - setAttachmentTime(time: number): void; - getAttachmentTime(): number; - setToSetupPose(): void; - } -} -declare module spine { - class SlotData { - index: number; - name: string; - boneData: BoneData; - color: Color; - darkColor: Color; - attachmentName: string; - blendMode: BlendMode; - constructor(index: number, name: string, boneData: BoneData); - } - enum BlendMode { - Normal = 0, - Additive = 1, - Multiply = 2, - Screen = 3 - } -} -declare module spine { - abstract class Texture { - protected _image: HTMLImageElement | ImageBitmap; - constructor(image: HTMLImageElement | ImageBitmap); - getImage(): HTMLImageElement | ImageBitmap; - abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - abstract dispose(): void; - } - enum TextureFilter { - Nearest = 9728, - Linear = 9729, - MipMap = 9987, - MipMapNearestNearest = 9984, - MipMapLinearNearest = 9985, - MipMapNearestLinear = 9986, - MipMapLinearLinear = 9987 - } - enum TextureWrap { - MirroredRepeat = 33648, - ClampToEdge = 33071, - Repeat = 10497 - } - class TextureRegion { - renderObject: any; - u: number; - v: number; - u2: number; - v2: number; - width: number; - height: number; - degrees: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - } - class FakeTexture extends Texture { - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - } -} -declare module spine { - class TextureAtlas implements Disposable { - pages: TextureAtlasPage[]; - regions: TextureAtlasRegion[]; - constructor(atlasText: string); - findRegion(name: string): TextureAtlasRegion; - setTextures(assetManager: AssetManager, pathPrefix?: string): void; - dispose(): void; - } - class TextureAtlasPage { - name: string; - minFilter: TextureFilter; - magFilter: TextureFilter; - uWrap: TextureWrap; - vWrap: TextureWrap; - texture: Texture; - width: number; - height: number; - pma: boolean; - setTexture(texture: Texture): void; - } - class TextureAtlasRegion extends TextureRegion { - page: TextureAtlasPage; - name: string; - x: number; - y: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - index: number; - degrees: number; - names: string[]; - values: number[][]; - } -} -declare module spine { - class TransformConstraint implements Updatable { - data: TransformConstraintData; - bones: Array; - target: Bone; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - temp: Vector2; - active: boolean; - constructor(data: TransformConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - applyAbsoluteWorld(): void; - applyRelativeWorld(): void; - applyAbsoluteLocal(): void; - applyRelativeLocal(): void; - } -} -declare module spine { - class TransformConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - offsetRotation: number; - offsetX: number; - offsetY: number; - offsetScaleX: number; - offsetScaleY: number; - offsetShearY: number; - relative: boolean; - local: boolean; - constructor(name: string); - } -} -declare module spine { - class Triangulator { - private convexPolygons; - private convexPolygonsIndices; - private indicesArray; - private isConcaveArray; - private triangles; - private polygonPool; - private polygonIndicesPool; - triangulate(verticesArray: ArrayLike): Array; - decompose(verticesArray: Array, triangles: Array): Array>; - private static isConcave; - private static positiveArea; - private static winding; - } -} -declare module spine { - interface Updatable { - update(): void; - isActive(): boolean; - } -} -declare module spine { - interface Map { - [key: string]: T; - } - class IntSet { - array: number[]; - add(value: number): boolean; - contains(value: number): boolean; - remove(value: number): void; - clear(): void; - } - class StringSet { - entries: Map; - size: number; - add(value: string): boolean; - addAll(values: string[]): boolean; - contains(value: string): boolean; - clear(): void; - } - interface Disposable { - dispose(): void; - } - interface Restorable { - restore(): void; - } - class Color { - r: number; - g: number; - b: number; - a: number; - static WHITE: Color; - static RED: Color; - static GREEN: Color; - static BLUE: Color; - static MAGENTA: Color; - constructor(r?: number, g?: number, b?: number, a?: number); - set(r: number, g: number, b: number, a: number): this; - setFromColor(c: Color): this; - setFromString(hex: string): this; - add(r: number, g: number, b: number, a: number): this; - clamp(): this; - static rgba8888ToColor(color: Color, value: number): void; - static rgb888ToColor(color: Color, value: number): void; - static fromString(hex: string): Color; - } - class MathUtils { - static PI: number; - static PI2: number; - static radiansToDegrees: number; - static radDeg: number; - static degreesToRadians: number; - static degRad: number; - static clamp(value: number, min: number, max: number): number; - static cosDeg(degrees: number): number; - static sinDeg(degrees: number): number; - static signum(value: number): number; - static toInt(x: number): number; - static cbrt(x: number): number; - static randomTriangular(min: number, max: number): number; - static randomTriangularWith(min: number, max: number, mode: number): number; - } - abstract class Interpolation { - protected abstract applyInternal(a: number): number; - apply(start: number, end: number, a: number): number; - } - class Pow extends Interpolation { - protected power: number; - constructor(power: number); - applyInternal(a: number): number; - } - class PowOut extends Pow { - constructor(power: number); - applyInternal(a: number): number; - } - class Utils { - static SUPPORTS_TYPED_ARRAYS: boolean; - static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; - static arrayFill(array: ArrayLike, fromIndex: number, toIndex: number, value: T): void; - static setArraySize(array: Array, size: number, value?: any): Array; - static ensureArrayCapacity(array: Array, size: number, value?: any): Array; - static newArray(size: number, defaultValue: T): Array; - static newFloatArray(size: number): ArrayLike; - static newShortArray(size: number): ArrayLike; - static toFloatArray(array: Array): number[] | Float32Array; - static toSinglePrecision(value: number): number; - static webkit602BugfixHelper(alpha: number, blend: MixBlend): void; - static contains(array: Array, element: T, identity?: boolean): boolean; - static enumValue(type: any, name: string): any; - } - class DebugUtils { - static logBones(skeleton: Skeleton): void; - } - class Pool { - private items; - private instantiator; - constructor(instantiator: () => T); - obtain(): T; - free(item: T): void; - freeAll(items: ArrayLike): void; - clear(): void; - } - class Vector2 { - x: number; - y: number; - constructor(x?: number, y?: number); - set(x: number, y: number): Vector2; - length(): number; - normalize(): this; - } - class TimeKeeper { - maxDelta: number; - framesPerSecond: number; - delta: number; - totalTime: number; - private lastTime; - private frameCount; - private frameTime; - update(): void; - } - interface ArrayLike { - length: number; - [n: number]: T; - } - class WindowedMean { - values: Array; - addedValues: number; - lastValue: number; - mean: number; - dirty: boolean; - constructor(windowSize?: number); - hasEnoughData(): boolean; - addValue(value: number): void; - getMean(): number; - } -} -declare module spine { - interface VertexEffect { - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -interface Math { - fround(n: number): number; -} -declare module spine { - abstract class Attachment { - name: string; - constructor(name: string); - abstract copy(): Attachment; - } - abstract class VertexAttachment extends Attachment { - private static nextID; - id: number; - bones: Array; - vertices: ArrayLike; - worldVerticesLength: number; - deformAttachment: VertexAttachment; - constructor(name: string); - computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number, stride: number): void; - copyTo(attachment: VertexAttachment): void; - } -} -declare module spine { - interface AttachmentLoader { - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - class BoundingBoxAttachment extends VertexAttachment { - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class ClippingAttachment extends VertexAttachment { - endSlot: SlotData; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class MeshAttachment extends VertexAttachment { - region: TextureRegion; - path: string; - regionUVs: ArrayLike; - uvs: ArrayLike; - triangles: Array; - color: Color; - width: number; - height: number; - hullLength: number; - edges: Array; - private parentMesh; - tempColor: Color; - constructor(name: string); - updateUVs(): void; - getParentMesh(): MeshAttachment; - setParentMesh(parentMesh: MeshAttachment): void; - copy(): Attachment; - newLinkedMesh(): MeshAttachment; - } -} -declare module spine { - class PathAttachment extends VertexAttachment { - lengths: Array; - closed: boolean; - constantSpeed: boolean; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class PointAttachment extends VertexAttachment { - x: number; - y: number; - rotation: number; - color: Color; - constructor(name: string); - computeWorldPosition(bone: Bone, point: Vector2): Vector2; - computeWorldRotation(bone: Bone): number; - copy(): Attachment; - } -} -declare module spine { - class RegionAttachment extends Attachment { - x: number; - y: number; - scaleX: number; - scaleY: number; - rotation: number; - width: number; - height: number; - color: Color; - path: string; - rendererObject: any; - region: TextureRegion; - offset: ArrayLike; - uvs: ArrayLike; - tempColor: Color; - constructor(name: string); - updateOffset(): void; - setRegion(region: TextureRegion): void; - computeWorldVertices(bone: Bone, worldVertices: ArrayLike, offset: number, stride: number): void; - copy(): Attachment; - static X1: number; - static Y1: number; - static C1R: number; - static C1G: number; - static C1B: number; - static C1A: number; - static U1: number; - static V1: number; - static X2: number; - static Y2: number; - static C2R: number; - static C2G: number; - static C2B: number; - static C2A: number; - static U2: number; - static V2: number; - static X3: number; - static Y3: number; - static C3R: number; - static C3G: number; - static C3B: number; - static C3A: number; - static U3: number; - static V3: number; - static X4: number; - static Y4: number; - static C4R: number; - static C4G: number; - static C4B: number; - static C4A: number; - static U4: number; - static V4: number; - } -} -declare module spine { - class JitterEffect implements VertexEffect { - jitterX: number; - jitterY: number; - constructor(jitterX: number, jitterY: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine { - class SwirlEffect implements VertexEffect { - static interpolation: PowOut; - centerX: number; - centerY: number; - radius: number; - angle: number; - private worldX; - private worldY; - constructor(radius: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine.threejs { - class AssetManager extends spine.AssetManager { - constructor(pathPrefix?: string, downloader?: Downloader); - } -} -declare module spine.threejs { - class MeshBatcher extends THREE.Mesh { - private static VERTEX_SIZE; - private vertexBuffer; - private vertices; - private verticesLength; - private indices; - private indicesLength; - constructor(maxVertices?: number, materialCustomizer?: SkeletonMeshMaterialParametersCustomizer); - dispose(): void; - clear(): void; - begin(): void; - canBatch(verticesLength: number, indicesLength: number): boolean; - batch(vertices: ArrayLike, verticesLength: number, indices: ArrayLike, indicesLength: number, z?: number): void; - end(): void; - } -} -declare module spine.threejs { - interface SkeletonMeshMaterialParametersCustomizer { - (materialParameters: THREE.ShaderMaterialParameters): void; - } - class SkeletonMeshMaterial extends THREE.ShaderMaterial { - constructor(customizer: SkeletonMeshMaterialParametersCustomizer); - } - class SkeletonMesh extends THREE.Object3D { - tempPos: Vector2; - tempUv: Vector2; - tempLight: Color; - tempDark: Color; - skeleton: Skeleton; - state: AnimationState; - zOffset: number; - vertexEffect: VertexEffect; - private batches; - private nextBatchIndex; - private clipper; - static QUAD_TRIANGLES: number[]; - static VERTEX_SIZE: number; - private vertices; - private tempColor; - private materialCustomizer; - constructor(skeletonData: SkeletonData, materialCustomizer?: SkeletonMeshMaterialParametersCustomizer); - update(deltaTime: number): void; - dispose(): void; - private clearBatches; - private nextBatch; - private updateGeometry; - } -} -declare module spine.threejs { - class ThreeJsTexture extends Texture { - texture: THREE.Texture; - constructor(image: HTMLImageElement); - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - static toThreeJsTextureFilter(filter: TextureFilter): THREE.TextureFilter; - static toThreeJsTextureWrap(wrap: TextureWrap): THREE.Wrapping; - } -} diff --git a/spine-ts/build/spine-threejs.js b/spine-ts/build/spine-threejs.js deleted file mode 100644 index b93bb1ec1..000000000 --- a/spine-ts/build/spine-threejs.js +++ /dev/null @@ -1,9418 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var spine; -(function (spine) { - var Animation = (function () { - function Animation(name, timelines, duration) { - if (!name) - throw new Error("name cannot be null."); - this.name = name; - this.setTimelines(timelines); - this.duration = duration; - } - Animation.prototype.setTimelines = function (timelines) { - if (!timelines) - throw new Error("timelines cannot be null."); - this.timelines = timelines; - this.timelineIds = new spine.StringSet(); - for (var i = 0; i < timelines.length; i++) - this.timelineIds.addAll(timelines[i].getPropertyIds()); - }; - Animation.prototype.hasTimeline = function (ids) { - for (var i = 0; i < ids.length; i++) - if (this.timelineIds.contains(ids[i])) - return true; - return false; - }; - Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - if (loop && this.duration != 0) { - time %= this.duration; - if (lastTime > 0) - lastTime %= this.duration; - } - var timelines = this.timelines; - for (var i = 0, n = timelines.length; i < n; i++) - timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction); - }; - return Animation; - }()); - spine.Animation = Animation; - var MixBlend; - (function (MixBlend) { - MixBlend[MixBlend["setup"] = 0] = "setup"; - MixBlend[MixBlend["first"] = 1] = "first"; - MixBlend[MixBlend["replace"] = 2] = "replace"; - MixBlend[MixBlend["add"] = 3] = "add"; - })(MixBlend = spine.MixBlend || (spine.MixBlend = {})); - var MixDirection; - (function (MixDirection) { - MixDirection[MixDirection["mixIn"] = 0] = "mixIn"; - MixDirection[MixDirection["mixOut"] = 1] = "mixOut"; - })(MixDirection = spine.MixDirection || (spine.MixDirection = {})); - var Property = { - rotate: 0, - x: 1, - y: 2, - scaleX: 3, - scaleY: 4, - shearX: 5, - shearY: 6, - rgb: 7, - alpha: 8, - rgb2: 9, - attachment: 10, - deform: 11, - event: 12, - drawOrder: 13, - ikConstraint: 14, - transformConstraint: 15, - pathConstraintPosition: 16, - pathConstraintSpacing: 17, - pathConstraintMix: 18 - }; - var Timeline = (function () { - function Timeline(frameCount, propertyIds) { - this.propertyIds = propertyIds; - this.frames = spine.Utils.newFloatArray(frameCount * this.getFrameEntries()); - } - Timeline.prototype.getPropertyIds = function () { - return this.propertyIds; - }; - Timeline.prototype.getFrameEntries = function () { - return 1; - }; - Timeline.prototype.getFrameCount = function () { - return this.frames.length / this.getFrameEntries(); - }; - Timeline.prototype.getDuration = function () { - return this.frames[this.frames.length - this.getFrameEntries()]; - }; - Timeline.search1 = function (frames, time) { - var n = frames.length; - for (var i = 1; i < n; i++) - if (frames[i] > time) - return i - 1; - return n - 1; - }; - Timeline.search = function (frames, time, step) { - var n = frames.length; - for (var i = step; i < n; i += step) - if (frames[i] > time) - return i - step; - return n - step; - }; - return Timeline; - }()); - spine.Timeline = Timeline; - var CurveTimeline = (function (_super) { - __extends(CurveTimeline, _super); - function CurveTimeline(frameCount, bezierCount, propertyIds) { - var _this = _super.call(this, frameCount, propertyIds) || this; - _this.curves = spine.Utils.newFloatArray(frameCount + bezierCount * 18); - _this.curves[frameCount - 1] = 1; - return _this; - } - CurveTimeline.prototype.setLinear = function (frame) { - this.curves[frame] = 0; - }; - CurveTimeline.prototype.setStepped = function (frame) { - this.curves[frame] = 1; - }; - CurveTimeline.prototype.shrink = function (bezierCount) { - var size = this.getFrameCount() + bezierCount * 18; - if (this.curves.length > size) { - var newCurves = spine.Utils.newFloatArray(size); - spine.Utils.arrayCopy(this.curves, 0, newCurves, 0, size); - this.curves = newCurves; - } - }; - CurveTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { - var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; - if (value == 0) - curves[frame] = 2 + i; - var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03; - var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006; - var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; - var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667; - var x = time1 + dx, y = value1 + dy; - for (var n = i + 18; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dx += ddx; - dy += ddy; - ddx += dddx; - ddy += dddy; - x += dx; - y += dy; - } - }; - CurveTimeline.prototype.getBezierValue = function (time, frameIndex, valueOffset, i) { - var curves = this.curves; - if (curves[i] > time) { - var x_1 = this.frames[frameIndex], y_1 = this.frames[frameIndex + valueOffset]; - return y_1 + (time - x_1) / (curves[i] - x_1) * (curves[i + 1] - y_1); - } - var n = i + 18; - for (i += 2; i < n; i += 2) { - if (curves[i] >= time) { - var x_2 = curves[i - 2], y_2 = curves[i - 1]; - return y_2 + (time - x_2) / (curves[i] - x_2) * (curves[i + 1] - y_2); - } - } - frameIndex += this.getFrameEntries(); - var x = curves[n - 2], y = curves[n - 1]; - return y + (time - x) / (this.frames[frameIndex] - x) * (this.frames[frameIndex + valueOffset] - y); - }; - return CurveTimeline; - }(Timeline)); - spine.CurveTimeline = CurveTimeline; - var CurveTimeline1 = (function (_super) { - __extends(CurveTimeline1, _super); - function CurveTimeline1(frameCount, bezierCount, propertyId) { - return _super.call(this, frameCount, bezierCount, [propertyId]) || this; - } - CurveTimeline1.prototype.getFrameEntries = function () { - return 2; - }; - CurveTimeline1.prototype.setFrame = function (frame, time, value) { - frame <<= 1; - this.frames[frame] = time; - this.frames[frame + 1] = value; - }; - CurveTimeline1.prototype.getCurveValue = function (time) { - var frames = this.frames; - var i = frames.length - 2; - for (var ii = 2; ii <= i; ii += 2) { - if (frames[ii] > time) { - i = ii - 2; - break; - } - } - var curveType = this.curves[i >> 1]; - switch (curveType) { - case 0: - var before = frames[i], value = frames[i + 1]; - return value + (time - before) / (frames[i + 2] - before) * (frames[i + 2 + 1] - value); - case 1: - return frames[i + 1]; - } - return this.getBezierValue(time, i, 1, curveType - 2); - }; - return CurveTimeline1; - }(CurveTimeline)); - spine.CurveTimeline1 = CurveTimeline1; - var CurveTimeline2 = (function (_super) { - __extends(CurveTimeline2, _super); - function CurveTimeline2(frameCount, bezierCount, propertyId1, propertyId2) { - return _super.call(this, frameCount, bezierCount, [propertyId1, propertyId2]) || this; - } - CurveTimeline2.prototype.getFrameEntries = function () { - return 3; - }; - CurveTimeline2.prototype.setFrame = function (frame, time, value1, value2) { - frame *= 3; - this.frames[frame] = time; - this.frames[frame + 1] = value1; - this.frames[frame + 2] = value2; - }; - return CurveTimeline2; - }(CurveTimeline)); - spine.CurveTimeline2 = CurveTimeline2; - var RotateTimeline = (function (_super) { - __extends(RotateTimeline, _super); - function RotateTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.rotate + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation; - return; - case MixBlend.first: - bone.rotation += (bone.data.rotation - bone.rotation) * alpha; - } - return; - } - var r = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation + r * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - r += bone.data.rotation - bone.rotation; - case MixBlend.add: - bone.rotation += r * alpha; - } - }; - return RotateTimeline; - }(CurveTimeline1)); - spine.RotateTimeline = RotateTimeline; - var TranslateTimeline = (function (_super) { - __extends(TranslateTimeline, _super); - function TranslateTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex, Property.y + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x; - bone.y = bone.data.y; - return; - case MixBlend.first: - bone.x += (bone.data.x - bone.x) * alpha; - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x + x * alpha; - bone.y = bone.data.y + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.x += (bone.data.x + x - bone.x) * alpha; - bone.y += (bone.data.y + y - bone.y) * alpha; - break; - case MixBlend.add: - bone.x += x * alpha; - bone.y += y * alpha; - } - }; - return TranslateTimeline; - }(CurveTimeline2)); - spine.TranslateTimeline = TranslateTimeline; - var TranslateXTimeline = (function (_super) { - __extends(TranslateXTimeline, _super); - function TranslateXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x; - return; - case MixBlend.first: - bone.x += (bone.data.x - bone.x) * alpha; - } - return; - } - var x = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x + x * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.x += (bone.data.x + x - bone.x) * alpha; - break; - case MixBlend.add: - bone.x += x * alpha; - } - }; - return TranslateXTimeline; - }(CurveTimeline1)); - spine.TranslateXTimeline = TranslateXTimeline; - var TranslateYTimeline = (function (_super) { - __extends(TranslateYTimeline, _super); - function TranslateYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.y + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.y = bone.data.y; - return; - case MixBlend.first: - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var y = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.y = bone.data.y + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.y += (bone.data.y + y - bone.y) * alpha; - break; - case MixBlend.add: - bone.y += y * alpha; - } - }; - return TranslateYTimeline; - }(CurveTimeline1)); - spine.TranslateYTimeline = TranslateYTimeline; - var ScaleTimeline = (function (_super) { - __extends(ScaleTimeline, _super); - function ScaleTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex, Property.scaleY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleX = bone.data.scaleX; - bone.scaleY = bone.data.scaleY; - return; - case MixBlend.first: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var x, y; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - x *= bone.data.scaleX; - y *= bone.data.scaleY; - if (alpha == 1) { - if (blend == MixBlend.add) { - bone.scaleX += x - bone.data.scaleX; - bone.scaleY += y - bone.data.scaleY; - } - else { - bone.scaleX = x; - bone.scaleY = y; - } - } - else { - var bx = 0, by = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - bx = bone.data.scaleX; - by = bone.data.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.add: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.add: - bx = spine.MathUtils.signum(x); - by = spine.MathUtils.signum(y); - bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; - bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; - } - } - } - }; - return ScaleTimeline; - }(CurveTimeline2)); - spine.ScaleTimeline = ScaleTimeline; - var ScaleXTimeline = (function (_super) { - __extends(ScaleXTimeline, _super); - function ScaleXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleX = bone.data.scaleX; - return; - case MixBlend.first: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - } - return; - } - var x = this.getCurveValue(time) * bone.data.scaleX; - if (alpha == 1) { - if (blend == MixBlend.add) - bone.scaleX += x - bone.data.scaleX; - else - bone.scaleX = x; - } - else { - var bx = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - bx = bone.data.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = bone.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - break; - case MixBlend.add: - bx = bone.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); - bone.scaleX = bx + (x - bx) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); - bone.scaleX = bx + (x - bx) * alpha; - break; - case MixBlend.add: - bx = spine.MathUtils.signum(x); - bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; - } - } - } - }; - return ScaleXTimeline; - }(CurveTimeline1)); - spine.ScaleXTimeline = ScaleXTimeline; - var ScaleYTimeline = (function (_super) { - __extends(ScaleYTimeline, _super); - function ScaleYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleY = bone.data.scaleY; - return; - case MixBlend.first: - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var y = this.getCurveValue(time) * bone.data.scaleY; - if (alpha == 1) { - if (blend == MixBlend.add) - bone.scaleY += y - bone.data.scaleY; - else - bone.scaleY = y; - } - else { - var by = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - by = bone.data.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - by = bone.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.add: - by = bone.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.add: - by = spine.MathUtils.signum(y); - bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; - } - } - } - }; - return ScaleYTimeline; - }(CurveTimeline1)); - spine.ScaleYTimeline = ScaleYTimeline; - var ShearTimeline = (function (_super) { - __extends(ShearTimeline, _super); - function ShearTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex, Property.shearY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX; - bone.shearY = bone.data.shearY; - return; - case MixBlend.first: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX + x * alpha; - bone.shearY = bone.data.shearY + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - break; - case MixBlend.add: - bone.shearX += x * alpha; - bone.shearY += y * alpha; - } - }; - return ShearTimeline; - }(CurveTimeline2)); - spine.ShearTimeline = ShearTimeline; - var ShearXTimeline = (function (_super) { - __extends(ShearXTimeline, _super); - function ShearXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX; - return; - case MixBlend.first: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - } - return; - } - var x = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX + x * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - break; - case MixBlend.add: - bone.shearX += x * alpha; - } - }; - return ShearXTimeline; - }(CurveTimeline1)); - spine.ShearXTimeline = ShearXTimeline; - var ShearYTimeline = (function (_super) { - __extends(ShearYTimeline, _super); - function ShearYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearY = bone.data.shearY; - return; - case MixBlend.first: - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var y = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.shearY = bone.data.shearY + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - break; - case MixBlend.add: - bone.shearY += y * alpha; - } - }; - return ShearYTimeline; - }(CurveTimeline1)); - spine.ShearYTimeline = ShearYTimeline; - var RGBATimeline = (function (_super) { - __extends(RGBATimeline, _super); - function RGBATimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.alpha + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBATimeline.prototype.getFrameEntries = function () { - return 5; - }; - RGBATimeline.prototype.setFrame = function (frame, time, r, g, b, a) { - frame *= 5; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; - }; - RGBATimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var color = slot.color; - if (time < frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.setFromColor(setup); - return; - case MixBlend.first: - color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha); - } - return; - } - var r = 0, g = 0, b = 0, a = 0; - var i = Timeline.search(frames, time, 5); - var curveType = this.curves[i / 5]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - var t = (time - before) / (frames[i + 5] - before); - r += (frames[i + 5 + 1] - r) * t; - g += (frames[i + 5 + 2] - g) * t; - b += (frames[i + 5 + 3] - b) * t; - a += (frames[i + 5 + 4] - a) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - } - if (alpha == 1) - color.set(r, g, b, a); - else { - if (blend == MixBlend.setup) - color.setFromColor(slot.data.color); - color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); - } - }; - return RGBATimeline; - }(CurveTimeline)); - spine.RGBATimeline = RGBATimeline; - var RGBTimeline = (function (_super) { - __extends(RGBTimeline, _super); - function RGBTimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBTimeline.prototype.getFrameEntries = function () { - return 4; - }; - RGBTimeline.prototype.setFrame = function (frame, time, r, g, b) { - frame <<= 2; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - }; - RGBTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var color = slot.color; - if (time < frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.r = setup.r; - color.g = setup.g; - color.b = setup.b; - return; - case MixBlend.first: - color.r += (setup.r - color.r) * alpha; - color.g += (setup.g - color.g) * alpha; - color.b += (setup.b - color.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0; - var i = Timeline.search(frames, time, 4); - var curveType = this.curves[i >> 2]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - r += (frames[i + 4 + 1] - r) * t; - g += (frames[i + 4 + 2] - g) * t; - b += (frames[i + 4 + 3] - b) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - } - if (alpha == 1) { - color.r = r; - color.g = g; - color.b = b; - } - else { - if (blend == MixBlend.setup) { - var setup = slot.data.color; - color.r = setup.r; - color.g = setup.g; - color.b = setup.b; - } - color.r += (r - color.r) * alpha; - color.g += (g - color.g) * alpha; - color.b += (b - color.b) * alpha; - } - }; - return RGBTimeline; - }(CurveTimeline)); - spine.RGBTimeline = RGBTimeline; - var AlphaTimeline = (function (_super) { - __extends(AlphaTimeline, _super); - function AlphaTimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.alpha + "|" + slotIndex) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - AlphaTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var color = slot.color; - if (time < this.frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.a = setup.a; - return; - case MixBlend.first: - color.a += (setup.a - color.a) * alpha; - } - return; - } - var a = this.getCurveValue(time); - if (alpha == 1) - color.a = a; - else { - if (blend == MixBlend.setup) - color.a = slot.data.color.a; - color.a += (a - color.a) * alpha; - } - }; - return AlphaTimeline; - }(CurveTimeline1)); - spine.AlphaTimeline = AlphaTimeline; - var RGBA2Timeline = (function (_super) { - __extends(RGBA2Timeline, _super); - function RGBA2Timeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.alpha + "|" + slotIndex, - Property.rgb2 + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBA2Timeline.prototype.getFrameEntries = function () { - return 8; - }; - RGBA2Timeline.prototype.setFrame = function (frame, time, r, g, b, a, r2, g2, b2) { - frame <<= 3; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; - this.frames[frame + 5] = r2; - this.frames[frame + 6] = g2; - this.frames[frame + 7] = b2; - }; - RGBA2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var light = slot.color, dark = slot.darkColor; - if (time < frames[0]) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - switch (blend) { - case MixBlend.setup: - light.setFromColor(setupLight); - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - return; - case MixBlend.first: - light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha); - dark.r += (setupDark.r - dark.r) * alpha; - dark.g += (setupDark.g - dark.g) * alpha; - dark.b += (setupDark.b - dark.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 8); - var curveType = this.curves[i >> 3]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; - var t = (time - before) / (frames[i + 8] - before); - r += (frames[i + 8 + 1] - r) * t; - g += (frames[i + 8 + 2] - g) * t; - b += (frames[i + 8 + 3] - b) * t; - a += (frames[i + 8 + 4] - a) * t; - r2 += (frames[i + 8 + 5] - r2) * t; - g2 += (frames[i + 8 + 6] - g2) * t; - b2 += (frames[i + 8 + 7] - b2) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - r2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - g2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - b2 = this.getBezierValue(time, i, 7, curveType + 18 * 6 - 2); - } - if (alpha == 1) { - light.set(r, g, b, a); - dark.r = r2; - dark.g = g2; - dark.b = b2; - } - else { - if (blend == MixBlend.setup) { - light.setFromColor(slot.data.color); - var setupDark = slot.data.darkColor; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - } - light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); - dark.r += (r2 - dark.r) * alpha; - dark.g += (g2 - dark.g) * alpha; - dark.b += (b2 - dark.b) * alpha; - } - }; - return RGBA2Timeline; - }(CurveTimeline)); - spine.RGBA2Timeline = RGBA2Timeline; - var RGB2Timeline = (function (_super) { - __extends(RGB2Timeline, _super); - function RGB2Timeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.rgb2 + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGB2Timeline.prototype.getFrameEntries = function () { - return 7; - }; - RGB2Timeline.prototype.setFrame = function (frame, time, r, g, b, r2, g2, b2) { - frame *= 7; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = r2; - this.frames[frame + 5] = g2; - this.frames[frame + 6] = b2; - }; - RGB2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var light = slot.color, dark = slot.darkColor; - if (time < frames[0]) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - switch (blend) { - case MixBlend.setup: - light.r = setupLight.r; - light.g = setupLight.g; - light.b = setupLight.b; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - return; - case MixBlend.first: - light.r += (setupLight.r - light.r) * alpha; - light.g += (setupLight.g - light.g) * alpha; - light.b += (setupLight.b - light.b) * alpha; - dark.r += (setupDark.r - dark.r) * alpha; - dark.g += (setupDark.g - dark.g) * alpha; - dark.b += (setupDark.b - dark.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - r += (frames[i + 7 + 1] - r) * t; - g += (frames[i + 7 + 2] - g) * t; - b += (frames[i + 7 + 3] - b) * t; - r2 += (frames[i + 7 + 4] - r2) * t; - g2 += (frames[i + 7 + 5] - g2) * t; - b2 += (frames[i + 7 + 6] - b2) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - r2 = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - g2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - b2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - } - if (alpha == 1) { - light.r = r; - light.g = g; - light.b = b; - dark.r = r2; - dark.g = g2; - dark.b = b2; - } - else { - if (blend == MixBlend.setup) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - light.r = setupLight.r; - light.g = setupLight.g; - light.b = setupLight.b; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - } - light.r += (r - light.r) * alpha; - light.g += (g - light.g) * alpha; - light.b += (b - light.b) * alpha; - dark.r += (r2 - dark.r) * alpha; - dark.g += (g2 - dark.g) * alpha; - dark.b += (b2 - dark.b) * alpha; - } - }; - return RGB2Timeline; - }(CurveTimeline)); - spine.RGB2Timeline = RGB2Timeline; - var AttachmentTimeline = (function (_super) { - __extends(AttachmentTimeline, _super); - function AttachmentTimeline(frameCount, slotIndex) { - var _this = _super.call(this, frameCount, [ - Property.attachment + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - _this.attachmentNames = new Array(frameCount); - return _this; - } - AttachmentTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - AttachmentTimeline.prototype.setFrame = function (frame, time, attachmentName) { - this.frames[frame] = time; - this.attachmentNames[frame] = attachmentName; - }; - AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - if (time < this.frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - this.setAttachment(skeleton, slot, this.attachmentNames[Timeline.search1(this.frames, time)]); - }; - AttachmentTimeline.prototype.setAttachment = function (skeleton, slot, attachmentName) { - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); - }; - return AttachmentTimeline; - }(Timeline)); - spine.AttachmentTimeline = AttachmentTimeline; - var DeformTimeline = (function (_super) { - __extends(DeformTimeline, _super); - function DeformTimeline(frameCount, bezierCount, slotIndex, attachment) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.deform + "|" + slotIndex + "|" + attachment.id - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - _this.attachment = attachment; - _this.vertices = new Array(frameCount); - return _this; - } - DeformTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DeformTimeline.prototype.setFrame = function (frame, time, vertices) { - this.frames[frame] = time; - this.vertices[frame] = vertices; - }; - DeformTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { - var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; - if (value == 0) - curves[frame] = 2 + i; - var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06; - var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018; - var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; - var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667; - var x = time1 + dx, y = dy; - for (var n = i + 18; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dx += ddx; - dy += ddy; - ddx += dddx; - ddy += dddy; - x += dx; - y += dy; - } - }; - DeformTimeline.prototype.getCurvePercent = function (time, frame) { - var curves = this.curves; - var i = curves[frame]; - switch (i) { - case 0: - var x_3 = this.frames[frame]; - return (time - x_3) / (this.frames[frame + this.getFrameEntries()] - x_3); - case 1: - return 0; - } - i -= 2; - if (curves[i] > time) { - var x_4 = this.frames[frame]; - return curves[i + 1] * (time - x_4) / (curves[i] - x_4); - } - var n = i + 18; - for (i += 2; i < n; i += 2) { - if (curves[i] >= time) { - var x_5 = curves[i - 2], y_3 = curves[i - 1]; - return y_3 + (time - x_5) / (curves[i] - x_5) * (curves[i + 1] - y_3); - } - } - var x = curves[n - 2], y = curves[n - 1]; - return y + (1 - y) * (time - x) / (this.frames[frame + this.getFrameEntries()] - x); - }; - DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var slotAttachment = slot.getAttachment(); - if (!(slotAttachment instanceof spine.VertexAttachment) || slotAttachment.deformAttachment != this.attachment) - return; - var deform = slot.deform; - if (deform.length == 0) - blend = MixBlend.setup; - var vertices = this.vertices; - var vertexCount = vertices[0].length; - var frames = this.frames; - if (time < frames[0]) { - var vertexAttachment = slotAttachment; - switch (blend) { - case MixBlend.setup: - deform.length = 0; - return; - case MixBlend.first: - if (alpha == 1) { - deform.length = 0; - return; - } - deform.length = vertexCount; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i = 0; i < vertexCount; i++) - deform[i] += (setupVertices[i] - deform[i]) * alpha; - } - else { - alpha = 1 - alpha; - for (var i = 0; i < vertexCount; i++) - deform[i] *= alpha; - } - } - return; - } - deform.length = vertexCount; - if (time >= frames[frames.length - 1]) { - var lastVertices = vertices[frames.length - 1]; - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_1 = 0; i_1 < vertexCount; i_1++) - deform[i_1] += lastVertices[i_1] - setupVertices[i_1]; - } - else { - for (var i_2 = 0; i_2 < vertexCount; i_2++) - deform[i_2] += lastVertices[i_2]; - } - } - else - spine.Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount); - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_1 = slotAttachment; - if (!vertexAttachment_1.bones) { - var setupVertices = vertexAttachment_1.vertices; - for (var i_3 = 0; i_3 < vertexCount; i_3++) { - var setup = setupVertices[i_3]; - deform[i_3] = setup + (lastVertices[i_3] - setup) * alpha; - } - } - else { - for (var i_4 = 0; i_4 < vertexCount; i_4++) - deform[i_4] = lastVertices[i_4] * alpha; - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_5 = 0; i_5 < vertexCount; i_5++) - deform[i_5] += (lastVertices[i_5] - deform[i_5]) * alpha; - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_6 = 0; i_6 < vertexCount; i_6++) - deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha; - } - else { - for (var i_7 = 0; i_7 < vertexCount; i_7++) - deform[i_7] += lastVertices[i_7] * alpha; - } - } - } - return; - } - var frame = Timeline.search1(frames, time); - var percent = this.getCurvePercent(time, frame); - var prevVertices = vertices[frame]; - var nextVertices = vertices[frame + 1]; - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_8 = 0; i_8 < vertexCount; i_8++) { - var prev = prevVertices[i_8]; - deform[i_8] += prev + (nextVertices[i_8] - prev) * percent - setupVertices[i_8]; - } - } - else { - for (var i_9 = 0; i_9 < vertexCount; i_9++) { - var prev = prevVertices[i_9]; - deform[i_9] += prev + (nextVertices[i_9] - prev) * percent; - } - } - } - else { - for (var i_10 = 0; i_10 < vertexCount; i_10++) { - var prev = prevVertices[i_10]; - deform[i_10] = prev + (nextVertices[i_10] - prev) * percent; - } - } - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_2 = slotAttachment; - if (!vertexAttachment_2.bones) { - var setupVertices = vertexAttachment_2.vertices; - for (var i_11 = 0; i_11 < vertexCount; i_11++) { - var prev = prevVertices[i_11], setup = setupVertices[i_11]; - deform[i_11] = setup + (prev + (nextVertices[i_11] - prev) * percent - setup) * alpha; - } - } - else { - for (var i_12 = 0; i_12 < vertexCount; i_12++) { - var prev = prevVertices[i_12]; - deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha; - } - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_13 = 0; i_13 < vertexCount; i_13++) { - var prev = prevVertices[i_13]; - deform[i_13] += (prev + (nextVertices[i_13] - prev) * percent - deform[i_13]) * alpha; - } - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_14 = 0; i_14 < vertexCount; i_14++) { - var prev = prevVertices[i_14]; - deform[i_14] += (prev + (nextVertices[i_14] - prev) * percent - setupVertices[i_14]) * alpha; - } - } - else { - for (var i_15 = 0; i_15 < vertexCount; i_15++) { - var prev = prevVertices[i_15]; - deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha; - } - } - } - } - }; - return DeformTimeline; - }(CurveTimeline)); - spine.DeformTimeline = DeformTimeline; - var EventTimeline = (function (_super) { - __extends(EventTimeline, _super); - function EventTimeline(frameCount) { - var _this = _super.call(this, frameCount, EventTimeline.propertyIds) || this; - _this.events = new Array(frameCount); - return _this; - } - EventTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - EventTimeline.prototype.setFrame = function (frame, event) { - this.frames[frame] = event.time; - this.events[frame] = event; - }; - EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - if (!firedEvents) - return; - var frames = this.frames; - var frameCount = this.frames.length; - if (lastTime > time) { - this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction); - lastTime = -1; - } - else if (lastTime >= frames[frameCount - 1]) - return; - if (time < frames[0]) - return; - var i = 0; - if (lastTime < frames[0]) - i = 0; - else { - i = Timeline.search1(frames, lastTime) + 1; - var frameTime = frames[i]; - while (i > 0) { - if (frames[i - 1] != frameTime) - break; - i--; - } - } - for (; i < frameCount && time >= frames[i]; i++) - firedEvents.push(this.events[i]); - }; - EventTimeline.propertyIds = ["" + Property.event]; - return EventTimeline; - }(Timeline)); - spine.EventTimeline = EventTimeline; - var DrawOrderTimeline = (function (_super) { - __extends(DrawOrderTimeline, _super); - function DrawOrderTimeline(frameCount) { - var _this = _super.call(this, frameCount, DrawOrderTimeline.propertyIds) || this; - _this.drawOrders = new Array(frameCount); - return _this; - } - DrawOrderTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DrawOrderTimeline.prototype.setFrame = function (frame, time, drawOrder) { - this.frames[frame] = time; - this.drawOrders[frame] = drawOrder; - }; - DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - if (time < this.frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - var drawOrderToSetupIndex = this.drawOrders[Timeline.search1(this.frames, time)]; - if (!drawOrderToSetupIndex) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - else { - var drawOrder = skeleton.drawOrder; - var slots = skeleton.slots; - for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) - drawOrder[i] = slots[drawOrderToSetupIndex[i]]; - } - }; - DrawOrderTimeline.propertyIds = ["" + Property.drawOrder]; - return DrawOrderTimeline; - }(Timeline)); - spine.DrawOrderTimeline = DrawOrderTimeline; - var IkConstraintTimeline = (function (_super) { - __extends(IkConstraintTimeline, _super); - function IkConstraintTimeline(frameCount, bezierCount, ikConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.ikConstraint + "|" + ikConstraintIndex - ]) || this; - _this.ikConstraintIndex = ikConstraintIndex; - return _this; - } - IkConstraintTimeline.prototype.getFrameEntries = function () { - return 6; - }; - IkConstraintTimeline.prototype.setFrame = function (frame, time, mix, softness, bendDirection, compress, stretch) { - frame *= 6; - this.frames[frame] = time; - this.frames[frame + 1] = mix; - this.frames[frame + 2] = softness; - this.frames[frame + 3] = bendDirection; - this.frames[frame + 4] = compress ? 1 : 0; - this.frames[frame + 5] = stretch ? 1 : 0; - }; - IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - return; - case MixBlend.first: - constraint.mix += (constraint.data.mix - constraint.mix) * alpha; - constraint.softness += (constraint.data.softness - constraint.softness) * alpha; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - return; - } - var mix = 0, softness = 0; - var i = Timeline.search(frames, time, 6); - var curveType = this.curves[i / 6]; - switch (curveType) { - case 0: - var before = frames[i]; - mix = frames[i + 1]; - softness = frames[i + 2]; - var t = (time - before) / (frames[i + 6] - before); - mix += (frames[i + 6 + 1] - mix) * t; - softness += (frames[i + 6 + 2] - softness) * t; - break; - case 1: - mix = frames[i + 1]; - softness = frames[i + 2]; - break; - default: - mix = this.getBezierValue(time, i, 1, curveType - 2); - softness = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - if (blend == MixBlend.setup) { - constraint.mix = constraint.data.mix + (mix - constraint.data.mix) * alpha; - constraint.softness = constraint.data.softness + (softness - constraint.data.softness) * alpha; - if (direction == MixDirection.mixOut) { - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - else { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; - } - } - else { - constraint.mix += (mix - constraint.mix) * alpha; - constraint.softness += (softness - constraint.softness) * alpha; - if (direction == MixDirection.mixIn) { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; - } - } - }; - return IkConstraintTimeline; - }(CurveTimeline)); - spine.IkConstraintTimeline = IkConstraintTimeline; - var TransformConstraintTimeline = (function (_super) { - __extends(TransformConstraintTimeline, _super); - function TransformConstraintTimeline(frameCount, bezierCount, transformConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.transformConstraint + "|" + transformConstraintIndex - ]) || this; - _this.transformConstraintIndex = transformConstraintIndex; - return _this; - } - TransformConstraintTimeline.prototype.getFrameEntries = function () { - return 7; - }; - TransformConstraintTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) { - var frames = this.frames; - frame *= 7; - frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; - frames[frame + 4] = mixScaleX; - frames[frame + 5] = mixScaleY; - frames[frame + 6] = mixShearY; - }; - TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - var data = constraint.data; - switch (blend) { - case MixBlend.setup: - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - constraint.mixScaleX = data.mixScaleX; - constraint.mixScaleY = data.mixScaleY; - constraint.mixShearY = data.mixShearY; - return; - case MixBlend.first: - constraint.mixRotate += (data.mixRotate - constraint.mixRotate) * alpha; - constraint.mixX += (data.mixX - constraint.mixX) * alpha; - constraint.mixY += (data.mixY - constraint.mixY) * alpha; - constraint.mixScaleX += (data.mixScaleX - constraint.mixScaleX) * alpha; - constraint.mixScaleY += (data.mixScaleY - constraint.mixScaleY) * alpha; - constraint.mixShearY += (data.mixShearY - constraint.mixShearY) * alpha; - } - return; - } - var rotate, x, y, scaleX, scaleY, shearY; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; - switch (curveType) { - case 0: - var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - rotate += (frames[i + 7 + 1] - rotate) * t; - x += (frames[i + 7 + 2] - x) * t; - y += (frames[i + 7 + 3] - y) * t; - scaleX += (frames[i + 7 + 4] - scaleX) * t; - scaleY += (frames[i + 7 + 5] - scaleY) * t; - shearY += (frames[i + 7 + 6] - shearY) * t; - break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; - break; - default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - scaleX = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - scaleY = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - shearY = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - } - if (blend == MixBlend.setup) { - var data = constraint.data; - constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; - constraint.mixX = data.mixX + (x - data.mixX) * alpha; - constraint.mixY = data.mixY + (y - data.mixY) * alpha; - constraint.mixScaleX = data.mixScaleX + (scaleX - data.mixScaleX) * alpha; - constraint.mixScaleY = data.mixScaleY + (scaleY - data.mixScaleY) * alpha; - constraint.mixShearY = data.mixShearY + (shearY - data.mixShearY) * alpha; - } - else { - constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; - constraint.mixX += (x - constraint.mixX) * alpha; - constraint.mixY += (y - constraint.mixY) * alpha; - constraint.mixScaleX += (scaleX - constraint.mixScaleX) * alpha; - constraint.mixScaleY += (scaleY - constraint.mixScaleY) * alpha; - constraint.mixShearY += (shearY - constraint.mixShearY) * alpha; - } - }; - return TransformConstraintTimeline; - }(CurveTimeline)); - spine.TransformConstraintTimeline = TransformConstraintTimeline; - var PathConstraintPositionTimeline = (function (_super) { - __extends(PathConstraintPositionTimeline, _super); - function PathConstraintPositionTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintPosition + "|" + pathConstraintIndex) || this; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.position = constraint.data.position; - return; - case MixBlend.first: - constraint.position += (constraint.data.position - constraint.position) * alpha; - } - return; - } - var position = this.getCurveValue(time); - if (blend == MixBlend.setup) - constraint.position = constraint.data.position + (position - constraint.data.position) * alpha; - else - constraint.position += (position - constraint.position) * alpha; - }; - return PathConstraintPositionTimeline; - }(CurveTimeline1)); - spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; - var PathConstraintSpacingTimeline = (function (_super) { - __extends(PathConstraintSpacingTimeline, _super); - function PathConstraintSpacingTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintSpacing + "|" + pathConstraintIndex) || this; - _this.pathConstraintIndex = 0; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.spacing = constraint.data.spacing; - return; - case MixBlend.first: - constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha; - } - return; - } - var spacing = this.getCurveValue(time); - if (blend == MixBlend.setup) - constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha; - else - constraint.spacing += (spacing - constraint.spacing) * alpha; - }; - return PathConstraintSpacingTimeline; - }(CurveTimeline1)); - spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; - var PathConstraintMixTimeline = (function (_super) { - __extends(PathConstraintMixTimeline, _super); - function PathConstraintMixTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.pathConstraintMix + "|" + pathConstraintIndex - ]) || this; - _this.pathConstraintIndex = 0; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintMixTimeline.prototype.getFrameEntries = function () { - return 4; - }; - PathConstraintMixTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY) { - var frames = this.frames; - frame <<= 2; - frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; - }; - PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.mixRotate = constraint.data.mixRotate; - constraint.mixX = constraint.data.mixX; - constraint.mixY = constraint.data.mixY; - return; - case MixBlend.first: - constraint.mixRotate += (constraint.data.mixRotate - constraint.mixRotate) * alpha; - constraint.mixX += (constraint.data.mixX - constraint.mixX) * alpha; - constraint.mixY += (constraint.data.mixY - constraint.mixY) * alpha; - } - return; - } - var rotate, x, y; - var i = Timeline.search(frames, time, 4); - var curveType = this.curves[i >> 2]; - switch (curveType) { - case 0: - var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - rotate += (frames[i + 4 + 1] - rotate) * t; - x += (frames[i + 4 + 2] - x) * t; - y += (frames[i + 4 + 3] - y) * t; - break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - break; - default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - } - if (blend == MixBlend.setup) { - var data = constraint.data; - constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; - constraint.mixX = data.mixX + (x - data.mixX) * alpha; - constraint.mixY = data.mixY + (y - data.mixY) * alpha; - } - else { - constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; - constraint.mixX += (x - constraint.mixX) * alpha; - constraint.mixY += (y - constraint.mixY) * alpha; - } - }; - return PathConstraintMixTimeline; - }(CurveTimeline)); - spine.PathConstraintMixTimeline = PathConstraintMixTimeline; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationState = (function () { - function AnimationState(data) { - this.tracks = new Array(); - this.timeScale = 1; - this.unkeyedState = 0; - this.events = new Array(); - this.listeners = new Array(); - this.queue = new EventQueue(this); - this.propertyIDs = new spine.StringSet(); - this.animationsChanged = false; - this.trackEntryPool = new spine.Pool(function () { return new TrackEntry(); }); - this.data = data; - } - AnimationState.emptyAnimation = function () { - if (!_emptyAnimation) - _emptyAnimation = new spine.Animation("", [], 0); - return _emptyAnimation; - }; - AnimationState.prototype.update = function (delta) { - delta *= this.timeScale; - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var current = tracks[i]; - if (!current) - continue; - current.animationLast = current.nextAnimationLast; - current.trackLast = current.nextTrackLast; - var currentDelta = delta * current.timeScale; - if (current.delay > 0) { - current.delay -= currentDelta; - if (current.delay > 0) - continue; - currentDelta = -current.delay; - current.delay = 0; - } - var next = current.next; - if (next) { - var nextTime = current.trackLast - next.delay; - if (nextTime >= 0) { - next.delay = 0; - next.trackTime += current.timeScale == 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale; - current.trackTime += currentDelta; - this.setCurrent(i, next, true); - while (next.mixingFrom) { - next.mixTime += delta; - next = next.mixingFrom; - } - continue; - } - } - else if (current.trackLast >= current.trackEnd && !current.mixingFrom) { - tracks[i] = null; - this.queue.end(current); - this.clearNext(current); - continue; - } - if (current.mixingFrom && this.updateMixingFrom(current, delta)) { - var from = current.mixingFrom; - current.mixingFrom = null; - if (from) - from.mixingTo = null; - while (from) { - this.queue.end(from); - from = from.mixingFrom; - } - } - current.trackTime += currentDelta; - } - this.queue.drain(); - }; - AnimationState.prototype.updateMixingFrom = function (to, delta) { - var from = to.mixingFrom; - if (!from) - return true; - var finished = this.updateMixingFrom(from, delta); - from.animationLast = from.nextAnimationLast; - from.trackLast = from.nextTrackLast; - if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { - if (from.totalAlpha == 0 || to.mixDuration == 0) { - to.mixingFrom = from.mixingFrom; - if (from.mixingFrom) - from.mixingFrom.mixingTo = to; - to.interruptAlpha = from.interruptAlpha; - this.queue.end(from); - } - return finished; - } - from.trackTime += delta * from.timeScale; - to.mixTime += delta; - return false; - }; - AnimationState.prototype.apply = function (skeleton) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - if (this.animationsChanged) - this._animationsChanged(); - var events = this.events; - var tracks = this.tracks; - var applied = false; - for (var i_16 = 0, n_1 = tracks.length; i_16 < n_1; i_16++) { - var current = tracks[i_16]; - if (!current || current.delay > 0) - continue; - applied = true; - var blend = i_16 == 0 ? spine.MixBlend.first : current.mixBlend; - var mix = current.alpha; - if (current.mixingFrom) - mix *= this.applyMixingFrom(current, skeleton, blend); - else if (current.trackTime >= current.trackEnd && !current.next) - mix = 0; - var animationLast = current.animationLast, animationTime = current.getAnimationTime(), applyTime = animationTime; - var applyEvents = events; - if (current.reverse) { - applyTime = current.animation.duration - applyTime; - applyEvents = null; - } - var timelines = current.animation.timelines; - var timelineCount = timelines.length; - if ((i_16 == 0 && mix == 1) || blend == spine.MixBlend.add) { - for (var ii = 0; ii < timelineCount; ii++) { - spine.Utils.webkit602BugfixHelper(mix, blend); - var timeline = timelines[ii]; - if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, applyTime, blend, true); - else - timeline.apply(skeleton, animationLast, applyTime, applyEvents, mix, blend, spine.MixDirection.mixIn); - } - } - else { - var timelineMode = current.timelineMode; - var firstFrame = current.timelinesRotation.length != timelineCount << 1; - if (firstFrame) - current.timelinesRotation.length = timelineCount << 1; - for (var ii = 0; ii < timelineCount; ii++) { - var timeline_1 = timelines[ii]; - var timelineBlend = timelineMode[ii] == SUBSEQUENT ? blend : spine.MixBlend.setup; - if (timeline_1 instanceof spine.RotateTimeline) { - this.applyRotateTimeline(timeline_1, skeleton, applyTime, mix, timelineBlend, current.timelinesRotation, ii << 1, firstFrame); - } - else if (timeline_1 instanceof spine.AttachmentTimeline) { - this.applyAttachmentTimeline(timeline_1, skeleton, applyTime, blend, true); - } - else { - spine.Utils.webkit602BugfixHelper(mix, blend); - timeline_1.apply(skeleton, animationLast, applyTime, applyEvents, mix, timelineBlend, spine.MixDirection.mixIn); - } - } - } - this.queueEvents(current, animationTime); - events.length = 0; - current.nextAnimationLast = animationTime; - current.nextTrackLast = current.trackTime; - } - var setupState = this.unkeyedState + SETUP; - var slots = skeleton.slots; - for (var i = 0, n = skeleton.slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.attachmentState == setupState) { - var attachmentName = slot.data.attachmentName; - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - } - } - this.unkeyedState += 2; - this.queue.drain(); - return applied; - }; - AnimationState.prototype.applyMixingFrom = function (to, skeleton, blend) { - var from = to.mixingFrom; - if (from.mixingFrom) - this.applyMixingFrom(from, skeleton, blend); - var mix = 0; - if (to.mixDuration == 0) { - mix = 1; - if (blend == spine.MixBlend.first) - blend = spine.MixBlend.setup; - } - else { - mix = to.mixTime / to.mixDuration; - if (mix > 1) - mix = 1; - if (blend != spine.MixBlend.first) - blend = from.mixBlend; - } - var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold; - var timelines = from.animation.timelines; - var timelineCount = timelines.length; - var alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix); - var animationLast = from.animationLast, animationTime = from.getAnimationTime(), applyTime = animationTime; - var events = null; - if (from.reverse) - applyTime = from.animation.duration - applyTime; - else if (mix < from.eventThreshold) - events = this.events; - if (blend == spine.MixBlend.add) { - for (var i = 0; i < timelineCount; i++) - timelines[i].apply(skeleton, animationLast, applyTime, events, alphaMix, blend, spine.MixDirection.mixOut); - } - else { - var timelineMode = from.timelineMode; - var timelineHoldMix = from.timelineHoldMix; - var firstFrame = from.timelinesRotation.length != timelineCount << 1; - if (firstFrame) - from.timelinesRotation.length = timelineCount << 1; - from.totalAlpha = 0; - for (var i = 0; i < timelineCount; i++) { - var timeline = timelines[i]; - var direction = spine.MixDirection.mixOut; - var timelineBlend = void 0; - var alpha = 0; - switch (timelineMode[i]) { - case SUBSEQUENT: - if (!drawOrder && timeline instanceof spine.DrawOrderTimeline) - continue; - timelineBlend = blend; - alpha = alphaMix; - break; - case FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaMix; - break; - case HOLD_SUBSEQUENT: - timelineBlend = blend; - alpha = alphaHold; - break; - case HOLD_FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaHold; - break; - default: - timelineBlend = spine.MixBlend.setup; - var holdMix = timelineHoldMix[i]; - alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration); - break; - } - from.totalAlpha += alpha; - if (timeline instanceof spine.RotateTimeline) - this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, timelineBlend, from.timelinesRotation, i << 1, firstFrame); - else if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, applyTime, timelineBlend, attachments); - else { - spine.Utils.webkit602BugfixHelper(alpha, blend); - if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup) - direction = spine.MixDirection.mixIn; - timeline.apply(skeleton, animationLast, applyTime, events, alpha, timelineBlend, direction); - } - } - } - if (to.mixDuration > 0) - this.queueEvents(from, animationTime); - this.events.length = 0; - from.nextAnimationLast = animationTime; - from.nextTrackLast = from.trackTime; - return mix; - }; - AnimationState.prototype.applyAttachmentTimeline = function (timeline, skeleton, time, blend, attachments) { - var slot = skeleton.slots[timeline.slotIndex]; - if (!slot.bone.active) - return; - if (time < timeline.frames[0]) { - if (blend == spine.MixBlend.setup || blend == spine.MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments); - } - else - this.setAttachment(skeleton, slot, timeline.attachmentNames[spine.Timeline.search1(timeline.frames, time)], attachments); - if (slot.attachmentState <= this.unkeyedState) - slot.attachmentState = this.unkeyedState + SETUP; - }; - AnimationState.prototype.setAttachment = function (skeleton, slot, attachmentName, attachments) { - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - if (attachments) - slot.attachmentState = this.unkeyedState + CURRENT; - }; - AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) { - if (firstFrame) - timelinesRotation[i] = 0; - if (alpha == 1) { - timeline.apply(skeleton, 0, time, null, 1, blend, spine.MixDirection.mixIn); - return; - } - var bone = skeleton.bones[timeline.boneIndex]; - if (!bone.active) - return; - var frames = timeline.frames; - var r1 = 0, r2 = 0; - if (time < frames[0]) { - switch (blend) { - case spine.MixBlend.setup: - bone.rotation = bone.data.rotation; - default: - return; - case spine.MixBlend.first: - r1 = bone.rotation; - r2 = bone.data.rotation; - } - } - else { - r1 = blend == spine.MixBlend.setup ? bone.data.rotation : bone.rotation; - r2 = bone.data.rotation + timeline.getCurveValue(time); - } - var total = 0, diff = r2 - r1; - diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360; - if (diff == 0) { - total = timelinesRotation[i]; - } - else { - var lastTotal = 0, lastDiff = 0; - if (firstFrame) { - lastTotal = 0; - lastDiff = diff; - } - else { - lastTotal = timelinesRotation[i]; - lastDiff = timelinesRotation[i + 1]; - } - var current = diff > 0, dir = lastTotal >= 0; - if (spine.MathUtils.signum(lastDiff) != spine.MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { - if (Math.abs(lastTotal) > 180) - lastTotal += 360 * spine.MathUtils.signum(lastTotal); - dir = current; - } - total = diff + lastTotal - lastTotal % 360; - if (dir != current) - total += 360 * spine.MathUtils.signum(lastTotal); - timelinesRotation[i] = total; - } - timelinesRotation[i + 1] = diff; - bone.rotation = r1 + total * alpha; - }; - AnimationState.prototype.queueEvents = function (entry, animationTime) { - var animationStart = entry.animationStart, animationEnd = entry.animationEnd; - var duration = animationEnd - animationStart; - var trackLastWrapped = entry.trackLast % duration; - var events = this.events; - var i = 0, n = events.length; - for (; i < n; i++) { - var event_1 = events[i]; - if (event_1.time < trackLastWrapped) - break; - if (event_1.time > animationEnd) - continue; - this.queue.event(entry, event_1); - } - var complete = false; - if (entry.loop) - complete = duration == 0 || trackLastWrapped > entry.trackTime % duration; - else - complete = animationTime >= animationEnd && entry.animationLast < animationEnd; - if (complete) - this.queue.complete(entry); - for (; i < n; i++) { - var event_2 = events[i]; - if (event_2.time < animationStart) - continue; - this.queue.event(entry, event_2); - } - }; - AnimationState.prototype.clearTracks = function () { - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) - this.clearTrack(i); - this.tracks.length = 0; - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.clearTrack = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return; - var current = this.tracks[trackIndex]; - if (!current) - return; - this.queue.end(current); - this.clearNext(current); - var entry = current; - while (true) { - var from = entry.mixingFrom; - if (!from) - break; - this.queue.end(from); - entry.mixingFrom = null; - entry.mixingTo = null; - entry = from; - } - this.tracks[current.trackIndex] = null; - this.queue.drain(); - }; - AnimationState.prototype.setCurrent = function (index, current, interrupt) { - var from = this.expandToIndex(index); - this.tracks[index] = current; - current.previous = null; - if (from) { - if (interrupt) - this.queue.interrupt(from); - current.mixingFrom = from; - from.mixingTo = current; - current.mixTime = 0; - if (from.mixingFrom && from.mixDuration > 0) - current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration); - from.timelinesRotation.length = 0; - } - this.queue.start(current); - }; - AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { - if (loop === void 0) { loop = false; } - var animation = this.data.skeletonData.findAnimation(animationName); - if (!animation) - throw new Error("Animation not found: " + animationName); - return this.setAnimationWith(trackIndex, animation, loop); - }; - AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { - if (loop === void 0) { loop = false; } - if (!animation) - throw new Error("animation cannot be null."); - var interrupt = true; - var current = this.expandToIndex(trackIndex); - if (current) { - if (current.nextTrackLast == -1) { - this.tracks[trackIndex] = current.mixingFrom; - this.queue.interrupt(current); - this.queue.end(current); - this.clearNext(current); - current = current.mixingFrom; - interrupt = false; - } - else - this.clearNext(current); - } - var entry = this.trackEntry(trackIndex, animation, loop, current); - this.setCurrent(trackIndex, entry, interrupt); - this.queue.drain(); - return entry; - }; - AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { - if (loop === void 0) { loop = false; } - if (delay === void 0) { delay = 0; } - var animation = this.data.skeletonData.findAnimation(animationName); - if (!animation) - throw new Error("Animation not found: " + animationName); - return this.addAnimationWith(trackIndex, animation, loop, delay); - }; - AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { - if (loop === void 0) { loop = false; } - if (delay === void 0) { delay = 0; } - if (!animation) - throw new Error("animation cannot be null."); - var last = this.expandToIndex(trackIndex); - if (last) { - while (last.next) - last = last.next; - } - var entry = this.trackEntry(trackIndex, animation, loop, last); - if (!last) { - this.setCurrent(trackIndex, entry, true); - this.queue.drain(); - } - else { - last.next = entry; - entry.previous = last; - if (delay <= 0) - delay += last.getTrackComplete() - entry.mixDuration; - } - entry.delay = delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) { - if (mixDuration === void 0) { mixDuration = 0; } - var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation(), false); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - return entry; - }; - AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) { - if (mixDuration === void 0) { mixDuration = 0; } - if (delay === void 0) { delay = 0; } - var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay <= 0 ? 1 : delay); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - if (delay <= 0 && entry.previous) - entry.delay = entry.previous.getTrackComplete() - entry.mixDuration + delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimations = function (mixDuration) { - if (mixDuration === void 0) { mixDuration = 0; } - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) { - var current = this.tracks[i]; - if (current) - this.setEmptyAnimation(current.trackIndex, mixDuration); - } - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.expandToIndex = function (index) { - if (index < this.tracks.length) - return this.tracks[index]; - spine.Utils.ensureArrayCapacity(this.tracks, index + 1, null); - this.tracks.length = index + 1; - return null; - }; - AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) { - var entry = this.trackEntryPool.obtain(); - entry.trackIndex = trackIndex; - entry.animation = animation; - entry.loop = loop; - entry.holdPrevious = false; - entry.eventThreshold = 0; - entry.attachmentThreshold = 0; - entry.drawOrderThreshold = 0; - entry.animationStart = 0; - entry.animationEnd = animation.duration; - entry.animationLast = -1; - entry.nextAnimationLast = -1; - entry.delay = 0; - entry.trackTime = 0; - entry.trackLast = -1; - entry.nextTrackLast = -1; - entry.trackEnd = Number.MAX_VALUE; - entry.timeScale = 1; - entry.alpha = 1; - entry.interruptAlpha = 1; - entry.mixTime = 0; - entry.mixDuration = !last ? 0 : this.data.getMix(last.animation, animation); - entry.mixBlend = spine.MixBlend.replace; - return entry; - }; - AnimationState.prototype.clearNext = function (entry) { - var next = entry.next; - while (next) { - this.queue.dispose(next); - next = next.next; - } - entry.next = null; - }; - AnimationState.prototype._animationsChanged = function () { - this.animationsChanged = false; - this.propertyIDs.clear(); - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var entry = tracks[i]; - if (!entry) - continue; - while (entry.mixingFrom) - entry = entry.mixingFrom; - do { - if (!entry.mixingTo || entry.mixBlend != spine.MixBlend.add) - this.computeHold(entry); - entry = entry.mixingTo; - } while (entry); - } - }; - AnimationState.prototype.computeHold = function (entry) { - var to = entry.mixingTo; - var timelines = entry.animation.timelines; - var timelinesCount = entry.animation.timelines.length; - var timelineMode = entry.timelineMode; - timelineMode.length = timelinesCount; - var timelineHoldMix = entry.timelineHoldMix; - timelineHoldMix.length = 0; - var propertyIDs = this.propertyIDs; - if (to && to.holdPrevious) { - for (var i = 0; i < timelinesCount; i++) - timelineMode[i] = propertyIDs.addAll(timelines[i].getPropertyIds()) ? HOLD_FIRST : HOLD_SUBSEQUENT; - return; - } - outer: for (var i = 0; i < timelinesCount; i++) { - var timeline = timelines[i]; - var ids = timeline.getPropertyIds(); - if (!propertyIDs.addAll(ids)) - timelineMode[i] = SUBSEQUENT; - else if (!to || timeline instanceof spine.AttachmentTimeline || timeline instanceof spine.DrawOrderTimeline - || timeline instanceof spine.EventTimeline || !to.animation.hasTimeline(ids)) { - timelineMode[i] = FIRST; - } - else { - for (var next = to.mixingTo; next; next = next.mixingTo) { - if (next.animation.hasTimeline(ids)) - continue; - if (entry.mixDuration > 0) { - timelineMode[i] = HOLD_MIX; - timelineHoldMix[i] = next; - continue outer; - } - break; - } - timelineMode[i] = HOLD_FIRST; - } - } - }; - AnimationState.prototype.getCurrent = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return null; - return this.tracks[trackIndex]; - }; - AnimationState.prototype.addListener = function (listener) { - if (!listener) - throw new Error("listener cannot be null."); - this.listeners.push(listener); - }; - AnimationState.prototype.removeListener = function (listener) { - var index = this.listeners.indexOf(listener); - if (index >= 0) - this.listeners.splice(index, 1); - }; - AnimationState.prototype.clearListeners = function () { - this.listeners.length = 0; - }; - AnimationState.prototype.clearListenerNotifications = function () { - this.queue.clear(); - }; - return AnimationState; - }()); - spine.AnimationState = AnimationState; - var TrackEntry = (function () { - function TrackEntry() { - this.mixBlend = spine.MixBlend.replace; - this.timelineMode = new Array(); - this.timelineHoldMix = new Array(); - this.timelinesRotation = new Array(); - } - TrackEntry.prototype.reset = function () { - this.next = null; - this.previous = null; - this.mixingFrom = null; - this.mixingTo = null; - this.animation = null; - this.listener = null; - this.timelineMode.length = 0; - this.timelineHoldMix.length = 0; - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.getAnimationTime = function () { - if (this.loop) { - var duration = this.animationEnd - this.animationStart; - if (duration == 0) - return this.animationStart; - return (this.trackTime % duration) + this.animationStart; - } - return Math.min(this.trackTime + this.animationStart, this.animationEnd); - }; - TrackEntry.prototype.setAnimationLast = function (animationLast) { - this.animationLast = animationLast; - this.nextAnimationLast = animationLast; - }; - TrackEntry.prototype.isComplete = function () { - return this.trackTime >= this.animationEnd - this.animationStart; - }; - TrackEntry.prototype.resetRotationDirections = function () { - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.getTrackComplete = function () { - var duration = this.animationEnd - this.animationStart; - if (duration != 0) { - if (this.loop) - return duration * (1 + ((this.trackTime / duration) | 0)); - if (this.trackTime < duration) - return duration; - } - return this.trackTime; - }; - return TrackEntry; - }()); - spine.TrackEntry = TrackEntry; - var EventQueue = (function () { - function EventQueue(animState) { - this.objects = []; - this.drainDisabled = false; - this.animState = animState; - } - EventQueue.prototype.start = function (entry) { - this.objects.push(EventType.start); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.interrupt = function (entry) { - this.objects.push(EventType.interrupt); - this.objects.push(entry); - }; - EventQueue.prototype.end = function (entry) { - this.objects.push(EventType.end); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.dispose = function (entry) { - this.objects.push(EventType.dispose); - this.objects.push(entry); - }; - EventQueue.prototype.complete = function (entry) { - this.objects.push(EventType.complete); - this.objects.push(entry); - }; - EventQueue.prototype.event = function (entry, event) { - this.objects.push(EventType.event); - this.objects.push(entry); - this.objects.push(event); - }; - EventQueue.prototype.drain = function () { - if (this.drainDisabled) - return; - this.drainDisabled = true; - var objects = this.objects; - var listeners = this.animState.listeners; - for (var i = 0; i < objects.length; i += 2) { - var type = objects[i]; - var entry = objects[i + 1]; - switch (type) { - case EventType.start: - if (entry.listener && entry.listener.start) - entry.listener.start(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].start) - listeners[ii].start(entry); - break; - case EventType.interrupt: - if (entry.listener && entry.listener.interrupt) - entry.listener.interrupt(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].interrupt) - listeners[ii].interrupt(entry); - break; - case EventType.end: - if (entry.listener && entry.listener.end) - entry.listener.end(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].end) - listeners[ii].end(entry); - case EventType.dispose: - if (entry.listener && entry.listener.dispose) - entry.listener.dispose(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].dispose) - listeners[ii].dispose(entry); - this.animState.trackEntryPool.free(entry); - break; - case EventType.complete: - if (entry.listener && entry.listener.complete) - entry.listener.complete(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].complete) - listeners[ii].complete(entry); - break; - case EventType.event: - var event_3 = objects[i++ + 2]; - if (entry.listener && entry.listener.event) - entry.listener.event(entry, event_3); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].event) - listeners[ii].event(entry, event_3); - break; - } - } - this.clear(); - this.drainDisabled = false; - }; - EventQueue.prototype.clear = function () { - this.objects.length = 0; - }; - return EventQueue; - }()); - spine.EventQueue = EventQueue; - var EventType; - (function (EventType) { - EventType[EventType["start"] = 0] = "start"; - EventType[EventType["interrupt"] = 1] = "interrupt"; - EventType[EventType["end"] = 2] = "end"; - EventType[EventType["dispose"] = 3] = "dispose"; - EventType[EventType["complete"] = 4] = "complete"; - EventType[EventType["event"] = 5] = "event"; - })(EventType = spine.EventType || (spine.EventType = {})); - var AnimationStateAdapter = (function () { - function AnimationStateAdapter() { - } - AnimationStateAdapter.prototype.start = function (entry) { - }; - AnimationStateAdapter.prototype.interrupt = function (entry) { - }; - AnimationStateAdapter.prototype.end = function (entry) { - }; - AnimationStateAdapter.prototype.dispose = function (entry) { - }; - AnimationStateAdapter.prototype.complete = function (entry) { - }; - AnimationStateAdapter.prototype.event = function (entry, event) { - }; - return AnimationStateAdapter; - }()); - spine.AnimationStateAdapter = AnimationStateAdapter; - var SUBSEQUENT = 0; - var FIRST = 1; - var HOLD_SUBSEQUENT = 2; - var HOLD_FIRST = 3; - var HOLD_MIX = 4; - var SETUP = 1; - var CURRENT = 2; - var _emptyAnimation = null; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationStateData = (function () { - function AnimationStateData(skeletonData) { - this.animationToMixTime = {}; - this.defaultMix = 0; - if (!skeletonData) - throw new Error("skeletonData cannot be null."); - this.skeletonData = skeletonData; - } - AnimationStateData.prototype.setMix = function (fromName, toName, duration) { - var from = this.skeletonData.findAnimation(fromName); - if (!from) - throw new Error("Animation not found: " + fromName); - var to = this.skeletonData.findAnimation(toName); - if (!to) - throw new Error("Animation not found: " + toName); - this.setMixWith(from, to, duration); - }; - AnimationStateData.prototype.setMixWith = function (from, to, duration) { - if (!from) - throw new Error("from cannot be null."); - if (!to) - throw new Error("to cannot be null."); - var key = from.name + "." + to.name; - this.animationToMixTime[key] = duration; - }; - AnimationStateData.prototype.getMix = function (from, to) { - var key = from.name + "." + to.name; - var value = this.animationToMixTime[key]; - return value === undefined ? this.defaultMix : value; - }; - return AnimationStateData; - }()); - spine.AnimationStateData = AnimationStateData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AssetManager = (function () { - function AssetManager(textureLoader, pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - this.assets = {}; - this.errors = {}; - this.toLoad = 0; - this.loaded = 0; - this.textureLoader = textureLoader; - this.pathPrefix = pathPrefix; - this.downloader = downloader || new Downloader(); - } - AssetManager.prototype.start = function (path) { - this.toLoad++; - return this.pathPrefix + path; - }; - AssetManager.prototype.success = function (callback, path, asset) { - this.toLoad--; - this.loaded++; - this.assets[path] = asset; - if (callback) - callback(path, asset); - }; - AssetManager.prototype.error = function (callback, path, message) { - this.toLoad--; - this.loaded++; - this.errors[path] = message; - if (callback) - callback(path, message); - }; - AssetManager.prototype.setRawDataURI = function (path, data) { - this.downloader.rawDataUris[this.pathPrefix + path] = data; - }; - AssetManager.prototype.loadBinary = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadBinary(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load binary " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadText = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadText(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load text " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadJson = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadJson(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load JSON " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadTexture = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); - var isWebWorker = !isBrowser && typeof importScripts !== 'undefined'; - if (isWebWorker) { - fetch(path, { mode: "cors" }).then(function (response) { - if (response.ok) - return response.blob(); - _this.error(error, path, "Couldn't load image: " + path); - return null; - }).then(function (blob) { - return blob ? createImageBitmap(blob, { premultiplyAlpha: "none", colorSpaceConversion: "none" }) : null; - }).then(function (bitmap) { - if (bitmap) - _this.success(success, path, _this.textureLoader(bitmap)); - }); - } - else { - var image_1 = new Image(); - image_1.crossOrigin = "anonymous"; - image_1.onload = function () { - _this.success(success, path, _this.textureLoader(image_1)); - }; - image_1.onerror = function () { - _this.error(error, path, "Couldn't load image: " + path); - }; - if (this.downloader.rawDataUris[path]) - path = this.downloader.rawDataUris[path]; - image_1.src = path; - } - }; - AssetManager.prototype.loadTextureAtlas = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - var index = path.lastIndexOf("/"); - var parent = index >= 0 ? path.substring(0, index + 1) : ""; - path = this.start(path); - this.downloader.downloadText(path, function (atlasText) { - try { - var atlas_1 = new spine.TextureAtlas(atlasText); - var toLoad_1 = atlas_1.pages.length, abort_1 = false; - var _loop_1 = function (page) { - _this.loadTexture(parent + page.name, function (imagePath, texture) { - if (!abort_1) { - page.setTexture(texture); - if (--toLoad_1 == 0) - _this.success(success, path, atlas_1); - } - }, function (imagePath, message) { - if (!abort_1) - _this.error(error, path, "Couldn't load texture atlas " + path + " page image: " + imagePath); - abort_1 = true; - }); - }; - for (var _i = 0, _a = atlas_1.pages; _i < _a.length; _i++) { - var page = _a[_i]; - _loop_1(page); - } - } - catch (e) { - _this.error(error, path, "Couldn't parse texture atlas " + path + ": " + e.message); - } - }, function (status, responseText) { - _this.error(error, path, "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.get = function (path) { - return this.assets[this.pathPrefix + path]; - }; - AssetManager.prototype.require = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset) - return asset; - var error = this.errors[path]; - throw Error("Asset not found: " + path + (error ? "\n" + error : "")); - }; - AssetManager.prototype.remove = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset.dispose) - asset.dispose(); - delete this.assets[path]; - return asset; - }; - AssetManager.prototype.removeAll = function () { - for (var key in this.assets) { - var asset = this.assets[key]; - if (asset.dispose) - asset.dispose(); - } - this.assets = {}; - }; - AssetManager.prototype.isLoadingComplete = function () { - return this.toLoad == 0; - }; - AssetManager.prototype.getToLoad = function () { - return this.toLoad; - }; - AssetManager.prototype.getLoaded = function () { - return this.loaded; - }; - AssetManager.prototype.dispose = function () { - this.removeAll(); - }; - AssetManager.prototype.hasErrors = function () { - return Object.keys(this.errors).length > 0; - }; - AssetManager.prototype.getErrors = function () { - return this.errors; - }; - return AssetManager; - }()); - spine.AssetManager = AssetManager; - var Downloader = (function () { - function Downloader() { - this.callbacks = {}; - this.rawDataUris = {}; - } - Downloader.prototype.downloadText = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.overrideMimeType("text/html"); - request.open("GET", url, true); - var done = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = done; - request.onerror = done; - request.send(); - }; - Downloader.prototype.downloadJson = function (url, success, error) { - this.downloadText(url, function (data) { - success(JSON.parse(data)); - }, error); - }; - Downloader.prototype.downloadBinary = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.open("GET", url, true); - request.responseType = "arraybuffer"; - var onerror = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = function () { - if (request.status == 200) - _this.finish(url, 200, new Uint8Array(request.response)); - else - onerror(); - }; - request.onerror = onerror; - request.send(); - }; - Downloader.prototype.start = function (url, success, error) { - var callbacks = this.callbacks[url]; - try { - if (callbacks) - return true; - this.callbacks[url] = callbacks = []; - } - finally { - callbacks.push(success, error); - } - }; - Downloader.prototype.finish = function (url, status, data) { - var callbacks = this.callbacks[url]; - delete this.callbacks[url]; - var args = status == 200 ? [data] : [status, data]; - for (var i = args.length - 1, n = callbacks.length; i < n; i += 2) - callbacks[i].apply(null, args); - }; - return Downloader; - }()); - spine.Downloader = Downloader; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AtlasAttachmentLoader = (function () { - function AtlasAttachmentLoader(atlas) { - this.atlas = atlas; - } - AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.RegionAttachment(name); - attachment.setRegion(region); - return attachment; - }; - AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.MeshAttachment(name); - attachment.region = region; - return attachment; - }; - AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { - return new spine.BoundingBoxAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { - return new spine.PathAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) { - return new spine.PointAttachment(name); - }; - AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) { - return new spine.ClippingAttachment(name); - }; - return AtlasAttachmentLoader; - }()); - spine.AtlasAttachmentLoader = AtlasAttachmentLoader; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Bone = (function () { - function Bone(data, skeleton, parent) { - this.children = new Array(); - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 0; - this.scaleY = 0; - this.shearX = 0; - this.shearY = 0; - this.ax = 0; - this.ay = 0; - this.arotation = 0; - this.ascaleX = 0; - this.ascaleY = 0; - this.ashearX = 0; - this.ashearY = 0; - this.a = 0; - this.b = 0; - this.c = 0; - this.d = 0; - this.worldY = 0; - this.worldX = 0; - this.sorted = false; - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.skeleton = skeleton; - this.parent = parent; - this.setToSetupPose(); - } - Bone.prototype.isActive = function () { - return this.active; - }; - Bone.prototype.update = function () { - this.updateWorldTransformWith(this.ax, this.ay, this.arotation, this.ascaleX, this.ascaleY, this.ashearX, this.ashearY); - }; - Bone.prototype.updateWorldTransform = function () { - this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); - }; - Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { - this.ax = x; - this.ay = y; - this.arotation = rotation; - this.ascaleX = scaleX; - this.ascaleY = scaleY; - this.ashearX = shearX; - this.ashearY = shearY; - var parent = this.parent; - if (!parent) { - var skeleton = this.skeleton; - var rotationY = rotation + 90 + shearY; - var sx = skeleton.scaleX; - var sy = skeleton.scaleY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX * sx; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY * sx; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX * sy; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY * sy; - this.worldX = x * sx + skeleton.x; - this.worldY = y * sy + skeleton.y; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - this.worldX = pa * x + pb * y + parent.worldX; - this.worldY = pc * x + pd * y + parent.worldY; - switch (this.data.transformMode) { - case spine.TransformMode.Normal: { - var rotationY = rotation + 90 + shearY; - var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * scaleY; - var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * scaleY; - this.a = pa * la + pb * lc; - this.b = pa * lb + pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - return; - } - case spine.TransformMode.OnlyTranslation: { - var rotationY = rotation + 90 + shearY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY; - break; - } - case spine.TransformMode.NoRotationOrReflection: { - var s = pa * pa + pc * pc; - var prx = 0; - if (s > 0.0001) { - s = Math.abs(pa * pd - pb * pc) / s; - pa /= this.skeleton.scaleX; - pc /= this.skeleton.scaleY; - pb = pc * s; - pd = pa * s; - prx = Math.atan2(pc, pa) * spine.MathUtils.radDeg; - } - else { - pa = 0; - pc = 0; - prx = 90 - Math.atan2(pd, pb) * spine.MathUtils.radDeg; - } - var rx = rotation + shearX - prx; - var ry = rotation + shearY - prx + 90; - var la = spine.MathUtils.cosDeg(rx) * scaleX; - var lb = spine.MathUtils.cosDeg(ry) * scaleY; - var lc = spine.MathUtils.sinDeg(rx) * scaleX; - var ld = spine.MathUtils.sinDeg(ry) * scaleY; - this.a = pa * la - pb * lc; - this.b = pa * lb - pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - break; - } - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: { - var cos = spine.MathUtils.cosDeg(rotation); - var sin = spine.MathUtils.sinDeg(rotation); - var za = (pa * cos + pb * sin) / this.skeleton.scaleX; - var zc = (pc * cos + pd * sin) / this.skeleton.scaleY; - var s = Math.sqrt(za * za + zc * zc); - if (s > 0.00001) - s = 1 / s; - za *= s; - zc *= s; - s = Math.sqrt(za * za + zc * zc); - if (this.data.transformMode == spine.TransformMode.NoScale - && (pa * pd - pb * pc < 0) != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0)) - s = -s; - var r = Math.PI / 2 + Math.atan2(zc, za); - var zb = Math.cos(r) * s; - var zd = Math.sin(r) * s; - var la = spine.MathUtils.cosDeg(shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(90 + shearY) * scaleY; - var lc = spine.MathUtils.sinDeg(shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(90 + shearY) * scaleY; - this.a = za * la + zb * lc; - this.b = za * lb + zb * ld; - this.c = zc * la + zd * lc; - this.d = zc * lb + zd * ld; - break; - } - } - this.a *= this.skeleton.scaleX; - this.b *= this.skeleton.scaleX; - this.c *= this.skeleton.scaleY; - this.d *= this.skeleton.scaleY; - }; - Bone.prototype.setToSetupPose = function () { - var data = this.data; - this.x = data.x; - this.y = data.y; - this.rotation = data.rotation; - this.scaleX = data.scaleX; - this.scaleY = data.scaleY; - this.shearX = data.shearX; - this.shearY = data.shearY; - }; - Bone.prototype.getWorldRotationX = function () { - return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldRotationY = function () { - return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldScaleX = function () { - return Math.sqrt(this.a * this.a + this.c * this.c); - }; - Bone.prototype.getWorldScaleY = function () { - return Math.sqrt(this.b * this.b + this.d * this.d); - }; - Bone.prototype.updateAppliedTransform = function () { - var parent = this.parent; - if (!parent) { - this.ax = this.worldX; - this.ay = this.worldY; - this.arotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c); - this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d); - this.ashearX = 0; - this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * spine.MathUtils.radDeg; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - var pid = 1 / (pa * pd - pb * pc); - var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; - this.ax = (dx * pd * pid - dy * pb * pid); - this.ay = (dy * pa * pid - dx * pc * pid); - var ia = pid * pd; - var id = pid * pa; - var ib = pid * pb; - var ic = pid * pc; - var ra = ia * this.a - ib * this.c; - var rb = ia * this.b - ib * this.d; - var rc = id * this.c - ic * this.a; - var rd = id * this.d - ic * this.b; - this.ashearX = 0; - this.ascaleX = Math.sqrt(ra * ra + rc * rc); - if (this.ascaleX > 0.0001) { - var det = ra * rd - rb * rc; - this.ascaleY = det / this.ascaleX; - this.ashearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; - this.arotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; - } - else { - this.ascaleX = 0; - this.ascaleY = Math.sqrt(rb * rb + rd * rd); - this.ashearY = 0; - this.arotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; - } - }; - Bone.prototype.worldToLocal = function (world) { - var invDet = 1 / (this.a * this.d - this.b * this.c); - var x = world.x - this.worldX, y = world.y - this.worldY; - world.x = x * this.d * invDet - y * this.b * invDet; - world.y = y * this.a * invDet - x * this.c * invDet; - return world; - }; - Bone.prototype.localToWorld = function (local) { - var x = local.x, y = local.y; - local.x = x * this.a + y * this.b + this.worldX; - local.y = x * this.c + y * this.d + this.worldY; - return local; - }; - Bone.prototype.worldToLocalRotation = function (worldRotation) { - var sin = spine.MathUtils.sinDeg(worldRotation), cos = spine.MathUtils.cosDeg(worldRotation); - return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * spine.MathUtils.radDeg + this.rotation - this.shearX; - }; - Bone.prototype.localToWorldRotation = function (localRotation) { - localRotation -= this.rotation - this.shearX; - var sin = spine.MathUtils.sinDeg(localRotation), cos = spine.MathUtils.cosDeg(localRotation); - return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.rotateWorld = function (degrees) { - var a = this.a, b = this.b, c = this.c, d = this.d; - var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); - this.a = cos * a - sin * c; - this.b = cos * b - sin * d; - this.c = sin * a + cos * c; - this.d = sin * b + cos * d; - }; - return Bone; - }()); - spine.Bone = Bone; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoneData = (function () { - function BoneData(index, name, parent) { - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 1; - this.scaleY = 1; - this.shearX = 0; - this.shearY = 0; - this.transformMode = TransformMode.Normal; - this.skinRequired = false; - this.color = new spine.Color(); - if (index < 0) - throw new Error("index must be >= 0."); - if (!name) - throw new Error("name cannot be null."); - this.index = index; - this.name = name; - this.parent = parent; - } - return BoneData; - }()); - spine.BoneData = BoneData; - var TransformMode; - (function (TransformMode) { - TransformMode[TransformMode["Normal"] = 0] = "Normal"; - TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; - TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; - TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; - TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; - })(TransformMode = spine.TransformMode || (spine.TransformMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var ConstraintData = (function () { - function ConstraintData(name, order, skinRequired) { - this.name = name; - this.order = order; - this.skinRequired = skinRequired; - } - return ConstraintData; - }()); - spine.ConstraintData = ConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Event = (function () { - function Event(time, data) { - if (!data) - throw new Error("data cannot be null."); - this.time = time; - this.data = data; - } - return Event; - }()); - spine.Event = Event; -})(spine || (spine = {})); -var spine; -(function (spine) { - var EventData = (function () { - function EventData(name) { - this.name = name; - } - return EventData; - }()); - spine.EventData = EventData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraint = (function () { - function IkConstraint(data, skeleton) { - this.bendDirection = 0; - this.compress = false; - this.stretch = false; - this.mix = 1; - this.softness = 0; - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mix = data.mix; - this.softness = data.softness; - this.bendDirection = data.bendDirection; - this.compress = data.compress; - this.stretch = data.stretch; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - IkConstraint.prototype.isActive = function () { - return this.active; - }; - IkConstraint.prototype.update = function () { - if (this.mix == 0) - return; - var target = this.target; - var bones = this.bones; - switch (bones.length) { - case 1: - this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix); - break; - case 2: - this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.data.uniform, this.softness, this.mix); - break; - } - }; - IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) { - var p = bone.parent; - var pa = p.a, pb = p.b, pc = p.c, pd = p.d; - var rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0; - switch (bone.data.transformMode) { - case spine.TransformMode.OnlyTranslation: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - break; - case spine.TransformMode.NoRotationOrReflection: - var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc); - var sa = pa / bone.skeleton.scaleX; - var sc = pc / bone.skeleton.scaleY; - pb = -sc * s * bone.skeleton.scaleX; - pd = sa * s * bone.skeleton.scaleY; - rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg; - default: - var x = targetX - p.worldX, y = targetY - p.worldY; - var d = pa * pd - pb * pc; - tx = (x * pd - y * pb) / d - bone.ax; - ty = (y * pa - x * pc) / d - bone.ay; - } - rotationIK += Math.atan2(ty, tx) * spine.MathUtils.radDeg; - if (bone.ascaleX < 0) - rotationIK += 180; - if (rotationIK > 180) - rotationIK -= 360; - else if (rotationIK < -180) - rotationIK += 360; - var sx = bone.ascaleX, sy = bone.ascaleY; - if (compress || stretch) { - switch (bone.data.transformMode) { - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - } - var b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty); - if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) { - var s = (dd / b - 1) * alpha + 1; - sx *= s; - if (uniform) - sy *= s; - } - } - bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY); - }; - IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, uniform, softness, alpha) { - var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, sx = psx, sy = psy, csx = child.ascaleX; - var os1 = 0, os2 = 0, s2 = 0; - if (psx < 0) { - psx = -psx; - os1 = 180; - s2 = -1; - } - else { - os1 = 0; - s2 = 1; - } - if (psy < 0) { - psy = -psy; - s2 = -s2; - } - if (csx < 0) { - csx = -csx; - os2 = 180; - } - else - os2 = 0; - var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; - var u = Math.abs(psx - psy) <= 0.0001; - if (!u || stretch) { - cy = 0; - cwx = a * cx + parent.worldX; - cwy = c * cx + parent.worldY; - } - else { - cy = child.ay; - cwx = a * cx + b * cy + parent.worldX; - cwy = c * cx + d * cy + parent.worldY; - } - var pp = parent.parent; - a = pp.a; - b = pp.b; - c = pp.c; - d = pp.d; - var id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY; - var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; - var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2; - if (l1 < 0.0001) { - this.apply1(parent, targetX, targetY, false, stretch, false, alpha); - child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - return; - } - x = targetX - pp.worldX; - y = targetY - pp.worldY; - var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; - var dd = tx * tx + ty * ty; - if (softness != 0) { - softness *= psx * (csx + 1) * 0.5; - var td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness; - if (sd > 0) { - var p = Math.min(1, sd / (softness * 2)) - 1; - p = (sd - softness * (1 - p * p)) / td; - tx -= p * tx; - ty -= p * ty; - dd = tx * tx + ty * ty; - } - } - outer: if (u) { - l2 *= psx; - var cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2); - if (cos < -1) { - cos = -1; - a2 = Math.PI * bendDir; - } - else if (cos > 1) { - cos = 1; - a2 = 0; - if (stretch) { - a = (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1; - sx *= a; - if (uniform) - sy *= a; - } - } - else - a2 = Math.acos(cos) * bendDir; - a = l1 + l2 * cos; - b = l2 * Math.sin(a2); - a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); - } - else { - a = psx * l2; - b = psy * l2; - var aa = a * a, bb = b * b, ta = Math.atan2(ty, tx); - c = bb * l1 * l1 + aa * dd - aa * bb; - var c1 = -2 * bb * l1, c2 = bb - aa; - d = c1 * c1 - 4 * c2 * c; - if (d >= 0) { - var q = Math.sqrt(d); - if (c1 < 0) - q = -q; - q = -(c1 + q) * 0.5; - var r0 = q / c2, r1 = c / q; - var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; - if (r * r <= dd) { - y = Math.sqrt(dd - r * r) * bendDir; - a1 = ta - Math.atan2(y, r); - a2 = Math.atan2(y / psy, (r - l1) / psx); - break outer; - } - } - var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; - var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; - c = -a * l1 / (aa - bb); - if (c >= -1 && c <= 1) { - c = Math.acos(c); - x = a * Math.cos(c) + l1; - y = b * Math.sin(c); - d = x * x + y * y; - if (d < minDist) { - minAngle = c; - minDist = d; - minX = x; - minY = y; - } - if (d > maxDist) { - maxAngle = c; - maxDist = d; - maxX = x; - maxY = y; - } - } - if (dd <= (minDist + maxDist) * 0.5) { - a1 = ta - Math.atan2(minY * bendDir, minX); - a2 = minAngle * bendDir; - } - else { - a1 = ta - Math.atan2(maxY * bendDir, maxX); - a2 = maxAngle * bendDir; - } - } - var os = Math.atan2(cy, cx) * s2; - var rotation = parent.arotation; - a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; - if (a1 > 180) - a1 -= 360; - else if (a1 < -180) - a1 += 360; - parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, sy, 0, 0); - rotation = child.arotation; - a2 = ((a2 + os) * spine.MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; - if (a2 > 180) - a2 -= 360; - else if (a2 < -180) - a2 += 360; - child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - }; - return IkConstraint; - }()); - spine.IkConstraint = IkConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraintData = (function (_super) { - __extends(IkConstraintData, _super); - function IkConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.bendDirection = 1; - _this.compress = false; - _this.stretch = false; - _this.uniform = false; - _this.mix = 1; - _this.softness = 0; - return _this; - } - return IkConstraintData; - }(spine.ConstraintData)); - spine.IkConstraintData = IkConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraint = (function () { - function PathConstraint(data, skeleton) { - this.position = 0; - this.spacing = 0; - this.mixRotate = 0; - this.mixX = 0; - this.mixY = 0; - this.spaces = new Array(); - this.positions = new Array(); - this.world = new Array(); - this.curves = new Array(); - this.lengths = new Array(); - this.segments = new Array(); - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0, n = data.bones.length; i < n; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findSlot(data.target.name); - this.position = data.position; - this.spacing = data.spacing; - this.mixRotate = data.mixRotate; - this.mixX = data.mixX; - this.mixY = data.mixY; - } - PathConstraint.prototype.isActive = function () { - return this.active; - }; - PathConstraint.prototype.update = function () { - var attachment = this.target.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - return; - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY; - if (mixRotate == 0 && mixX == 0 && mixY == 0) - return; - var data = this.data; - var tangents = data.rotateMode == spine.RotateMode.Tangent, scale = data.rotateMode == spine.RotateMode.ChainScale; - var bones = this.bones; - var boneCount = bones.length, spacesCount = tangents ? boneCount : boneCount + 1; - var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = spine.Utils.setArraySize(this.lengths, boneCount) : null; - var spacing = this.spacing; - switch (data.spacingMode) { - case spine.SpacingMode.Percent: - if (scale) { - for (var i = 0, n = spacesCount - 1; i < n; i++) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) - lengths[i] = 0; - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - lengths[i] = Math.sqrt(x * x + y * y); - } - } - } - spine.Utils.arrayFill(spaces, 1, spacesCount, spacing); - break; - case spine.SpacingMode.Proportional: - var sum = 0; - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) { - if (scale) - lengths[i] = 0; - spaces[++i] = spacing; - } - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_1 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_1; - spaces[++i] = length_1; - sum += length_1; - } - } - if (sum > 0) { - sum = spacesCount / sum * spacing; - for (var i = 1; i < spacesCount; i++) - spaces[i] *= sum; - } - break; - default: - var lengthSpacing = data.spacingMode == spine.SpacingMode.Length; - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) { - if (scale) - lengths[i] = 0; - spaces[++i] = spacing; - } - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_2 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_2; - spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_2 / setupLength; - } - } - } - var positions = this.computeWorldPositions(attachment, spacesCount, tangents); - var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; - var tip = false; - if (offsetRotation == 0) - tip = data.rotateMode == spine.RotateMode.Chain; - else { - tip = false; - var p = this.target.bone; - offsetRotation *= p.a * p.d - p.b * p.c > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - } - for (var i = 0, p = 3; i < boneCount; i++, p += 3) { - var bone = bones[i]; - bone.worldX += (boneX - bone.worldX) * mixX; - bone.worldY += (boneY - bone.worldY) * mixY; - var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; - if (scale) { - var length_3 = lengths[i]; - if (length_3 != 0) { - var s = (Math.sqrt(dx * dx + dy * dy) / length_3 - 1) * mixRotate + 1; - bone.a *= s; - bone.c *= s; - } - } - boneX = x; - boneY = y; - if (mixRotate > 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; - if (tangents) - r = positions[p - 1]; - else if (spaces[i + 1] == 0) - r = positions[p + 2]; - else - r = Math.atan2(dy, dx); - r -= Math.atan2(c, a); - if (tip) { - cos = Math.cos(r); - sin = Math.sin(r); - var length_4 = bone.data.length; - boneX += (length_4 * (cos * a - sin * c) - dx) * mixRotate; - boneY += (length_4 * (sin * a + cos * c) - dy) * mixRotate; - } - else { - r += offsetRotation; - } - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - cos = Math.cos(r); - sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - bone.updateAppliedTransform(); - } - }; - PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents) { - var target = this.target; - var position = this.position; - var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; - var closed = path.closed; - var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; - if (!path.constantSpeed) { - var lengths = path.lengths; - curveCount -= closed ? 1 : 2; - var pathLength_1 = lengths[curveCount]; - if (this.data.positionMode == spine.PositionMode.Percent) - position *= pathLength_1; - var multiplier_1; - switch (this.data.spacingMode) { - case spine.SpacingMode.Percent: - multiplier_1 = pathLength_1; - break; - case spine.SpacingMode.Proportional: - multiplier_1 = pathLength_1 / spacesCount; - break; - default: - multiplier_1 = 1; - } - world = spine.Utils.setArraySize(this.world, 8); - for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i] * multiplier_1; - position += space; - var p = position; - if (closed) { - p %= pathLength_1; - if (p < 0) - p += pathLength_1; - curve = 0; - } - else if (p < 0) { - if (prevCurve != PathConstraint.BEFORE) { - prevCurve = PathConstraint.BEFORE; - path.computeWorldVertices(target, 2, 4, world, 0, 2); - } - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength_1) { - if (prevCurve != PathConstraint.AFTER) { - prevCurve = PathConstraint.AFTER; - path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2); - } - this.addAfterPosition(p - pathLength_1, world, 0, out, o); - continue; - } - for (;; curve++) { - var length_5 = lengths[curve]; - if (p > length_5) - continue; - if (curve == 0) - p /= length_5; - else { - var prev = lengths[curve - 1]; - p = (p - prev) / (length_5 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - if (closed && curve == curveCount) { - path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2); - path.computeWorldVertices(target, 0, 4, world, 4, 2); - } - else - path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2); - } - this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); - } - return out; - } - if (closed) { - verticesLength += 2; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2); - path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2); - world[verticesLength - 2] = world[0]; - world[verticesLength - 1] = world[1]; - } - else { - curveCount--; - verticesLength -= 4; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); - } - var curves = spine.Utils.setArraySize(this.curves, curveCount); - var pathLength = 0; - var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; - var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; - for (var i = 0, w = 2; i < curveCount; i++, w += 6) { - cx1 = world[w]; - cy1 = world[w + 1]; - cx2 = world[w + 2]; - cy2 = world[w + 3]; - x2 = world[w + 4]; - y2 = world[w + 5]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; - tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - curves[i] = pathLength; - x1 = x2; - y1 = y2; - } - if (this.data.positionMode == spine.PositionMode.Percent) - position *= pathLength; - var multiplier; - switch (this.data.spacingMode) { - case spine.SpacingMode.Percent: - multiplier = pathLength; - break; - case spine.SpacingMode.Proportional: - multiplier = pathLength / spacesCount; - break; - default: - multiplier = 1; - } - var segments = this.segments; - var curveLength = 0; - for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i] * multiplier; - position += space; - var p = position; - if (closed) { - p %= pathLength; - if (p < 0) - p += pathLength; - curve = 0; - } - else if (p < 0) { - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength) { - this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); - continue; - } - for (;; curve++) { - var length_6 = curves[curve]; - if (p > length_6) - continue; - if (curve == 0) - p /= length_6; - else { - var prev = curves[curve - 1]; - p = (p - prev) / (length_6 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - var ii = curve * 6; - x1 = world[ii]; - y1 = world[ii + 1]; - cx1 = world[ii + 2]; - cy1 = world[ii + 3]; - cx2 = world[ii + 4]; - cy2 = world[ii + 5]; - x2 = world[ii + 6]; - y2 = world[ii + 7]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.03; - tmpy = (y1 - cy1 * 2 + cy2) * 0.03; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; - curveLength = Math.sqrt(dfx * dfx + dfy * dfy); - segments[0] = curveLength; - for (ii = 1; ii < 8; ii++) { - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[ii] = curveLength; - } - dfx += ddfx; - dfy += ddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[8] = curveLength; - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[9] = curveLength; - segment = 0; - } - p *= curveLength; - for (;; segment++) { - var length_7 = segments[segment]; - if (p > length_7) - continue; - if (segment == 0) - p /= length_7; - else { - var prev = segments[segment - 1]; - p = segment + (p - prev) / (length_7 - prev); - } - break; - } - this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); - } - return out; - }; - PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { - var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { - var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { - if (p == 0 || isNaN(p)) { - out[o] = x1; - out[o + 1] = y1; - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - return; - } - var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; - var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; - var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; - out[o] = x; - out[o + 1] = y; - if (tangents) { - if (p < 0.001) - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - else - out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); - } - }; - PathConstraint.NONE = -1; - PathConstraint.BEFORE = -2; - PathConstraint.AFTER = -3; - PathConstraint.epsilon = 0.00001; - return PathConstraint; - }()); - spine.PathConstraint = PathConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraintData = (function (_super) { - __extends(PathConstraintData, _super); - function PathConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.mixRotate = 0; - _this.mixX = 0; - _this.mixY = 0; - return _this; - } - return PathConstraintData; - }(spine.ConstraintData)); - spine.PathConstraintData = PathConstraintData; - var PositionMode; - (function (PositionMode) { - PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; - PositionMode[PositionMode["Percent"] = 1] = "Percent"; - })(PositionMode = spine.PositionMode || (spine.PositionMode = {})); - var SpacingMode; - (function (SpacingMode) { - SpacingMode[SpacingMode["Length"] = 0] = "Length"; - SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; - SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; - SpacingMode[SpacingMode["Proportional"] = 3] = "Proportional"; - })(SpacingMode = spine.SpacingMode || (spine.SpacingMode = {})); - var RotateMode; - (function (RotateMode) { - RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; - RotateMode[RotateMode["Chain"] = 1] = "Chain"; - RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; - })(RotateMode = spine.RotateMode || (spine.RotateMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Skeleton = (function () { - function Skeleton(data) { - this._updateCache = new Array(); - this.time = 0; - this.scaleX = 1; - this.scaleY = 1; - this.x = 0; - this.y = 0; - if (!data) - throw new Error("data cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) { - var boneData = data.bones[i]; - var bone = void 0; - if (!boneData.parent) - bone = new spine.Bone(boneData, this, null); - else { - var parent_1 = this.bones[boneData.parent.index]; - bone = new spine.Bone(boneData, this, parent_1); - parent_1.children.push(bone); - } - this.bones.push(bone); - } - this.slots = new Array(); - this.drawOrder = new Array(); - for (var i = 0; i < data.slots.length; i++) { - var slotData = data.slots[i]; - var bone = this.bones[slotData.boneData.index]; - var slot = new spine.Slot(slotData, bone); - this.slots.push(slot); - this.drawOrder.push(slot); - } - this.ikConstraints = new Array(); - for (var i = 0; i < data.ikConstraints.length; i++) { - var ikConstraintData = data.ikConstraints[i]; - this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); - } - this.transformConstraints = new Array(); - for (var i = 0; i < data.transformConstraints.length; i++) { - var transformConstraintData = data.transformConstraints[i]; - this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); - } - this.pathConstraints = new Array(); - for (var i = 0; i < data.pathConstraints.length; i++) { - var pathConstraintData = data.pathConstraints[i]; - this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); - } - this.color = new spine.Color(1, 1, 1, 1); - this.updateCache(); - } - Skeleton.prototype.updateCache = function () { - var updateCache = this._updateCache; - updateCache.length = 0; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - bone.sorted = bone.data.skinRequired; - bone.active = !bone.sorted; - } - if (this.skin) { - var skinBones = this.skin.bones; - for (var i = 0, n = this.skin.bones.length; i < n; i++) { - var bone = this.bones[skinBones[i].index]; - do { - bone.sorted = false; - bone.active = true; - bone = bone.parent; - } while (bone); - } - } - var ikConstraints = this.ikConstraints; - var transformConstraints = this.transformConstraints; - var pathConstraints = this.pathConstraints; - var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length; - var constraintCount = ikCount + transformCount + pathCount; - outer: for (var i = 0; i < constraintCount; i++) { - for (var ii = 0; ii < ikCount; ii++) { - var constraint = ikConstraints[ii]; - if (constraint.data.order == i) { - this.sortIkConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < transformCount; ii++) { - var constraint = transformConstraints[ii]; - if (constraint.data.order == i) { - this.sortTransformConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < pathCount; ii++) { - var constraint = pathConstraints[ii]; - if (constraint.data.order == i) { - this.sortPathConstraint(constraint); - continue outer; - } - } - } - for (var i = 0, n = bones.length; i < n; i++) - this.sortBone(bones[i]); - }; - Skeleton.prototype.sortIkConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var target = constraint.target; - this.sortBone(target); - var constrained = constraint.bones; - var parent = constrained[0]; - this.sortBone(parent); - if (constrained.length == 1) { - this._updateCache.push(constraint); - this.sortReset(parent.children); - } - else { - var child = constrained[constrained.length - 1]; - this.sortBone(child); - this._updateCache.push(constraint); - this.sortReset(parent.children); - child.sorted = true; - } - }; - Skeleton.prototype.sortPathConstraint = function (constraint) { - constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var slot = constraint.target; - var slotIndex = slot.data.index; - var slotBone = slot.bone; - if (this.skin) - this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); - if (this.data.defaultSkin && this.data.defaultSkin != this.skin) - this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); - for (var i = 0, n = this.data.skins.length; i < n; i++) - this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone); - var attachment = slot.getAttachment(); - if (attachment instanceof spine.PathAttachment) - this.sortPathConstraintAttachmentWith(attachment, slotBone); - var constrained = constraint.bones; - var boneCount = constrained.length; - for (var i = 0; i < boneCount; i++) - this.sortBone(constrained[i]); - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortTransformConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - this.sortBone(constraint.target); - var constrained = constraint.bones; - var boneCount = constrained.length; - if (constraint.data.local) { - for (var i = 0; i < boneCount; i++) { - var child = constrained[i]; - this.sortBone(child.parent); - this.sortBone(child); - } - } - else { - for (var i = 0; i < boneCount; i++) { - this.sortBone(constrained[i]); - } - } - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { - var attachments = skin.attachments[slotIndex]; - if (!attachments) - return; - for (var key in attachments) { - this.sortPathConstraintAttachmentWith(attachments[key], slotBone); - } - }; - Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { - if (!(attachment instanceof spine.PathAttachment)) - return; - var pathBones = attachment.bones; - if (!pathBones) - this.sortBone(slotBone); - else { - var bones = this.bones; - for (var i = 0, n = pathBones.length; i < n;) { - var nn = pathBones[i++]; - nn += i; - while (i < nn) - this.sortBone(bones[pathBones[i++]]); - } - } - }; - Skeleton.prototype.sortBone = function (bone) { - if (bone.sorted) - return; - var parent = bone.parent; - if (parent) - this.sortBone(parent); - bone.sorted = true; - this._updateCache.push(bone); - }; - Skeleton.prototype.sortReset = function (bones) { - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (!bone.active) - continue; - if (bone.sorted) - this.sortReset(bone.children); - bone.sorted = false; - } - }; - Skeleton.prototype.updateWorldTransform = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - bone.ax = bone.x; - bone.ay = bone.y; - bone.arotation = bone.rotation; - bone.ascaleX = bone.scaleX; - bone.ascaleY = bone.scaleY; - bone.ashearX = bone.shearX; - bone.ashearY = bone.shearY; - } - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) - updateCache[i].update(); - }; - Skeleton.prototype.updateWorldTransformWith = function (parent) { - var rootBone = this.getRootBone(); - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - rootBone.worldX = pa * this.x + pb * this.y + parent.worldX; - rootBone.worldY = pc * this.x + pd * this.y + parent.worldY; - var rotationY = rootBone.rotation + 90 + rootBone.shearY; - var la = spine.MathUtils.cosDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * rootBone.scaleY; - var lc = spine.MathUtils.sinDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * rootBone.scaleY; - rootBone.a = (pa * la + pb * lc) * this.scaleX; - rootBone.b = (pa * lb + pb * ld) * this.scaleX; - rootBone.c = (pc * la + pd * lc) * this.scaleY; - rootBone.d = (pc * lb + pd * ld) * this.scaleY; - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) { - var updatable = updateCache[i]; - if (updatable != rootBone) - updatable.update(); - } - }; - Skeleton.prototype.setToSetupPose = function () { - this.setBonesToSetupPose(); - this.setSlotsToSetupPose(); - }; - Skeleton.prototype.setBonesToSetupPose = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - bones[i].setToSetupPose(); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - var data = constraint.data; - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - constraint.mixScaleX = data.mixScaleX; - constraint.mixScaleY = data.mixScaleY; - constraint.mixShearY = data.mixShearY; - } - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - var data = constraint.data; - constraint.position = data.position; - constraint.spacing = data.spacing; - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - } - }; - Skeleton.prototype.setSlotsToSetupPose = function () { - var slots = this.slots; - spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); - for (var i = 0, n = slots.length; i < n; i++) - slots[i].setToSetupPose(); - }; - Skeleton.prototype.getRootBone = function () { - if (this.bones.length == 0) - return null; - return this.bones[0]; - }; - Skeleton.prototype.findBone = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.data.name == boneName) - return bone; - } - return null; - }; - Skeleton.prototype.findBoneIndex = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].data.name == boneName) - return i; - return -1; - }; - Skeleton.prototype.findSlot = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) - return slot; - } - return null; - }; - Skeleton.prototype.findSlotIndex = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].data.name == slotName) - return i; - return -1; - }; - Skeleton.prototype.setSkinByName = function (skinName) { - var skin = this.data.findSkin(skinName); - if (!skin) - throw new Error("Skin not found: " + skinName); - this.setSkin(skin); - }; - Skeleton.prototype.setSkin = function (newSkin) { - if (newSkin == this.skin) - return; - if (newSkin) { - if (this.skin) - newSkin.attachAll(this, this.skin); - else { - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var name_1 = slot.data.attachmentName; - if (name_1) { - var attachment = newSkin.getAttachment(i, name_1); - if (attachment) - slot.setAttachment(attachment); - } - } - } - } - this.skin = newSkin; - this.updateCache(); - }; - Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { - return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); - }; - Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { - if (!attachmentName) - throw new Error("attachmentName cannot be null."); - if (this.skin) { - var attachment = this.skin.getAttachment(slotIndex, attachmentName); - if (attachment) - return attachment; - } - if (this.data.defaultSkin) - return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); - return null; - }; - Skeleton.prototype.setAttachment = function (slotName, attachmentName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) { - var attachment = null; - if (attachmentName) { - attachment = this.getAttachment(i, attachmentName); - if (!attachment) - throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); - } - slot.setAttachment(attachment); - return; - } - } - throw new Error("Slot not found: " + slotName); - }; - Skeleton.prototype.findIkConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var ikConstraint = ikConstraints[i]; - if (ikConstraint.data.name == constraintName) - return ikConstraint; - } - return null; - }; - Skeleton.prototype.findTransformConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.findPathConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.getBounds = function (offset, size, temp) { - if (temp === void 0) { temp = new Array(2); } - if (!offset) - throw new Error("offset cannot be null."); - if (!size) - throw new Error("size cannot be null."); - var drawOrder = this.drawOrder; - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - if (!slot.bone.active) - continue; - var verticesLength = 0; - var vertices = null; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - verticesLength = 8; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - attachment.computeWorldVertices(slot.bone, vertices, 0, 2); - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - verticesLength = mesh.worldVerticesLength; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2); - } - if (vertices) { - for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - } - offset.set(minX, minY); - size.set(maxX - minX, maxY - minY); - }; - Skeleton.prototype.update = function (delta) { - this.time += delta; - }; - return Skeleton; - }()); - spine.Skeleton = Skeleton; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBinary = (function () { - function SkeletonBinary(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonBinary.prototype.readSkeletonData = function (binary) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - skeletonData.name = ""; - var input = new BinaryInput(binary); - var lowHash = input.readInt32(); - var highHash = input.readInt32(); - skeletonData.hash = highHash == 0 && lowHash == 0 ? null : highHash.toString(16) + lowHash.toString(16); - skeletonData.version = input.readString(); - skeletonData.x = input.readFloat(); - skeletonData.y = input.readFloat(); - skeletonData.width = input.readFloat(); - skeletonData.height = input.readFloat(); - var nonessential = input.readBoolean(); - if (nonessential) { - skeletonData.fps = input.readFloat(); - skeletonData.imagesPath = input.readString(); - skeletonData.audioPath = input.readString(); - } - var n = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) - input.strings.push(input.readString()); - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var name_2 = input.readString(); - var parent_2 = i == 0 ? null : skeletonData.bones[input.readInt(true)]; - var data = new spine.BoneData(i, name_2, parent_2); - data.rotation = input.readFloat(); - data.x = input.readFloat() * scale; - data.y = input.readFloat() * scale; - data.scaleX = input.readFloat(); - data.scaleY = input.readFloat(); - data.shearX = input.readFloat(); - data.shearY = input.readFloat(); - data.length = input.readFloat() * scale; - data.transformMode = input.readInt(true); - data.skinRequired = input.readBoolean(); - if (nonessential) - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - skeletonData.bones.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var slotName = input.readString(); - var boneData = skeletonData.bones[input.readInt(true)]; - var data = new spine.SlotData(i, slotName, boneData); - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - var darkColor = input.readInt32(); - if (darkColor != -1) - spine.Color.rgb888ToColor(data.darkColor = new spine.Color(), darkColor); - data.attachmentName = input.readStringRef(); - data.blendMode = input.readInt(true); - skeletonData.slots.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.IkConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.mix = input.readFloat(); - data.softness = input.readFloat() * scale; - data.bendDirection = input.readByte(); - data.compress = input.readBoolean(); - data.stretch = input.readBoolean(); - data.uniform = input.readBoolean(); - skeletonData.ikConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.TransformConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.local = input.readBoolean(); - data.relative = input.readBoolean(); - data.offsetRotation = input.readFloat(); - data.offsetX = input.readFloat() * scale; - data.offsetY = input.readFloat() * scale; - data.offsetScaleX = input.readFloat(); - data.offsetScaleY = input.readFloat(); - data.offsetShearY = input.readFloat(); - data.mixRotate = input.readFloat(); - data.mixX = input.readFloat(); - data.mixY = input.readFloat(); - data.mixScaleX = input.readFloat(); - data.mixScaleY = input.readFloat(); - data.mixShearY = input.readFloat(); - skeletonData.transformConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.PathConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.slots[input.readInt(true)]; - data.positionMode = input.readInt(true); - data.spacingMode = input.readInt(true); - data.rotateMode = input.readInt(true); - data.offsetRotation = input.readFloat(); - data.position = input.readFloat(); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = input.readFloat(); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.mixRotate = input.readFloat(); - data.mixX = input.readFloat(); - data.mixY = input.readFloat(); - skeletonData.pathConstraints.push(data); - } - var defaultSkin = this.readSkin(input, skeletonData, true, nonessential); - if (defaultSkin) { - skeletonData.defaultSkin = defaultSkin; - skeletonData.skins.push(defaultSkin); - } - { - var i = skeletonData.skins.length; - spine.Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); - for (; i < n; i++) - skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential); - } - n = this.linkedMeshes.length; - for (var i = 0; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - var parent_3 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_3 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_3); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var data = new spine.EventData(input.readStringRef()); - data.intValue = input.readInt(false); - data.floatValue = input.readFloat(); - data.stringValue = input.readString(); - data.audioPath = input.readString(); - if (data.audioPath) { - data.volume = input.readFloat(); - data.balance = input.readFloat(); - } - skeletonData.events.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) - skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData)); - return skeletonData; - }; - SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) { - var skin = null; - var slotCount = 0; - if (defaultSkin) { - slotCount = input.readInt(true); - if (slotCount == 0) - return null; - skin = new spine.Skin("default"); - } - else { - skin = new spine.Skin(input.readStringRef()); - skin.bones.length = input.readInt(true); - for (var i = 0, n = skin.bones.length; i < n; i++) - skin.bones[i] = skeletonData.bones[input.readInt(true)]; - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]); - slotCount = input.readInt(true); - } - for (var i = 0; i < slotCount; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var name_3 = input.readStringRef(); - var attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name_3, nonessential); - if (attachment) - skin.setAttachment(slotIndex, name_3, attachment); - } - } - return skin; - }; - SkeletonBinary.prototype.readAttachment = function (input, skeletonData, skin, slotIndex, attachmentName, nonessential) { - var scale = this.scale; - var name = input.readStringRef(); - if (!name) - name = attachmentName; - switch (input.readByte()) { - case AttachmentType.Region: { - var path = input.readStringRef(); - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var scaleX = input.readFloat(); - var scaleY = input.readFloat(); - var width = input.readFloat(); - var height = input.readFloat(); - var color = input.readInt32(); - if (!path) - path = name; - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (!region) - return null; - region.path = path; - region.x = x * scale; - region.y = y * scale; - region.scaleX = scaleX; - region.scaleY = scaleY; - region.rotation = rotation; - region.width = width * scale; - region.height = height * scale; - spine.Color.rgba8888ToColor(region.color, color); - region.updateOffset(); - return region; - } - case AttachmentType.BoundingBox: { - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (!box) - return null; - box.worldVerticesLength = vertexCount << 1; - box.vertices = vertices.vertices; - box.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(box.color, color); - return box; - } - case AttachmentType.Mesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var vertexCount = input.readInt(true); - var uvs = this.readFloatArray(input, vertexCount << 1, 1); - var triangles = this.readShortArray(input); - var vertices = this.readVertices(input, vertexCount); - var hullLength = input.readInt(true); - var edges = null; - var width = 0, height = 0; - if (nonessential) { - edges = this.readShortArray(input); - width = input.readFloat(); - height = input.readFloat(); - } - if (!path) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - mesh.bones = vertices.bones; - mesh.vertices = vertices.vertices; - mesh.worldVerticesLength = vertexCount << 1; - mesh.triangles = triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.hullLength = hullLength << 1; - if (nonessential) { - mesh.edges = edges; - mesh.width = width * scale; - mesh.height = height * scale; - } - return mesh; - } - case AttachmentType.LinkedMesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var skinName = input.readStringRef(); - var parent_4 = input.readStringRef(); - var inheritDeform = input.readBoolean(); - var width = 0, height = 0; - if (nonessential) { - width = input.readFloat(); - height = input.readFloat(); - } - if (!path) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - if (nonessential) { - mesh.width = width * scale; - mesh.height = height * scale; - } - this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent_4, inheritDeform)); - return mesh; - } - case AttachmentType.Path: { - var closed_1 = input.readBoolean(); - var constantSpeed = input.readBoolean(); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0, n = lengths.length; i < n; i++) - lengths[i] = input.readFloat() * scale; - var color = nonessential ? input.readInt32() : 0; - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (!path) - return null; - path.closed = closed_1; - path.constantSpeed = constantSpeed; - path.worldVerticesLength = vertexCount << 1; - path.vertices = vertices.vertices; - path.bones = vertices.bones; - path.lengths = lengths; - if (nonessential) - spine.Color.rgba8888ToColor(path.color, color); - return path; - } - case AttachmentType.Point: { - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var color = nonessential ? input.readInt32() : 0; - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (!point) - return null; - point.x = x * scale; - point.y = y * scale; - point.rotation = rotation; - if (nonessential) - spine.Color.rgba8888ToColor(point.color, color); - return point; - } - case AttachmentType.Clipping: { - var endSlotIndex = input.readInt(true); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (!clip) - return null; - clip.endSlot = skeletonData.slots[endSlotIndex]; - clip.worldVerticesLength = vertexCount << 1; - clip.vertices = vertices.vertices; - clip.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(clip.color, color); - return clip; - } - } - return null; - }; - SkeletonBinary.prototype.readVertices = function (input, vertexCount) { - var scale = this.scale; - var verticesLength = vertexCount << 1; - var vertices = new Vertices(); - if (!input.readBoolean()) { - vertices.vertices = this.readFloatArray(input, verticesLength, scale); - return vertices; - } - var weights = new Array(); - var bonesArray = new Array(); - for (var i = 0; i < vertexCount; i++) { - var boneCount = input.readInt(true); - bonesArray.push(boneCount); - for (var ii = 0; ii < boneCount; ii++) { - bonesArray.push(input.readInt(true)); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat()); - } - } - vertices.vertices = spine.Utils.toFloatArray(weights); - vertices.bones = bonesArray; - return vertices; - }; - SkeletonBinary.prototype.readFloatArray = function (input, n, scale) { - var array = new Array(n); - if (scale == 1) { - for (var i = 0; i < n; i++) - array[i] = input.readFloat(); - } - else { - for (var i = 0; i < n; i++) - array[i] = input.readFloat() * scale; - } - return array; - }; - SkeletonBinary.prototype.readShortArray = function (input) { - var n = input.readInt(true); - var array = new Array(n); - for (var i = 0; i < n; i++) - array[i] = input.readShort(); - return array; - }; - SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) { - input.readInt(true); - var timelines = new Array(); - var scale = this.scale; - var tempColor1 = new spine.Color(); - var tempColor2 = new spine.Color(); - for (var i = 0, n = input.readInt(true); i < n; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var timelineType = input.readByte(); - var frameCount = input.readInt(true); - var frameLast = frameCount - 1; - switch (timelineType) { - case SLOT_ATTACHMENT: { - var timeline = new spine.AttachmentTimeline(frameCount, slotIndex); - for (var frame = 0; frame < frameCount; frame++) - timeline.setFrame(frame, input.readFloat(), input.readStringRef()); - timelines.push(timeline); - break; - } - case SLOT_RGBA: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBATimeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var a = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, a); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - var a2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, a, a2, 1); - } - time = time2; - r = r2; - g = g2; - b = b2; - a = a2; - } - timelines.push(timeline); - break; - } - case SLOT_RGB: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBTimeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); - } - time = time2; - r = r2; - g = g2; - b = b2; - } - timelines.push(timeline); - break; - } - case SLOT_RGBA2: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBA2Timeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var a = input.readUnsignedByte() / 255.0; - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, a, r2, g2, b2); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var nr = input.readUnsignedByte() / 255.0; - var ng = input.readUnsignedByte() / 255.0; - var nb = input.readUnsignedByte() / 255.0; - var na = input.readUnsignedByte() / 255.0; - var nr2 = input.readUnsignedByte() / 255.0; - var ng2 = input.readUnsignedByte() / 255.0; - var nb2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, a, na, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, r2, nr2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, g2, ng2, 1); - setBezier(input, timeline, bezier++, frame, 6, time, time2, b2, nb2, 1); - } - time = time2; - r = nr; - g = ng; - b = nb; - a = na; - r2 = nr2; - g2 = ng2; - b2 = nb2; - } - timelines.push(timeline); - break; - } - case SLOT_RGB2: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGB2Timeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, r2, g2, b2); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var nr = input.readUnsignedByte() / 255.0; - var ng = input.readUnsignedByte() / 255.0; - var nb = input.readUnsignedByte() / 255.0; - var nr2 = input.readUnsignedByte() / 255.0; - var ng2 = input.readUnsignedByte() / 255.0; - var nb2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, r2, nr2, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, g2, ng2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, b2, nb2, 1); - } - time = time2; - r = nr; - g = ng; - b = nb; - r2 = nr2; - g2 = ng2; - b2 = nb2; - } - timelines.push(timeline); - break; - } - case SLOT_ALPHA: { - var timeline = new spine.AlphaTimeline(frameCount, input.readInt(true), slotIndex); - var time = input.readFloat(), a = input.readUnsignedByte() / 255; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, a); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var a2 = input.readUnsignedByte() / 255; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, a, a2, 1); - } - time = time2; - a = a2; - } - timelines.push(timeline); - break; - } - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var boneIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true); - switch (type) { - case BONE_ROTATE: - timelines.push(readTimeline1(input, new spine.RotateTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_TRANSLATE: - timelines.push(readTimeline2(input, new spine.TranslateTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_TRANSLATEX: - timelines.push(readTimeline1(input, new spine.TranslateXTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_TRANSLATEY: - timelines.push(readTimeline1(input, new spine.TranslateYTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_SCALE: - timelines.push(readTimeline2(input, new spine.ScaleTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SCALEX: - timelines.push(readTimeline1(input, new spine.ScaleXTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SCALEY: - timelines.push(readTimeline1(input, new spine.ScaleYTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEAR: - timelines.push(readTimeline2(input, new spine.ShearTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEARX: - timelines.push(readTimeline1(input, new spine.ShearXTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEARY: - timelines.push(readTimeline1(input, new spine.ShearYTimeline(frameCount, bezierCount, boneIndex), 1)); - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; - var timeline = new spine.IkConstraintTimeline(frameCount, input.readInt(true), index); - var time = input.readFloat(), mix = input.readFloat(), softness = input.readFloat() * scale; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mix, softness, input.readByte(), input.readBoolean(), input.readBoolean()); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mix2 = input.readFloat(), softness2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale); - } - time = time2; - mix = mix2; - softness = softness2; - } - timelines.push(timeline); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; - var timeline = new spine.TransformConstraintTimeline(frameCount, input.readInt(true), index); - var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(), mixScaleX = input.readFloat(), mixScaleY = input.readFloat(), mixShearY = input.readFloat(); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(), mixScaleX2 = input.readFloat(), mixScaleY2 = input.readFloat(), mixShearY2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, mixShearY, mixShearY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - mixScaleX = mixScaleX2; - mixScaleY = mixScaleY2; - mixShearY = mixShearY2; - } - timelines.push(timeline); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true); - var data = skeletonData.pathConstraints[index]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - switch (input.readByte()) { - case PATH_POSITION: - timelines - .push(readTimeline1(input, new spine.PathConstraintPositionTimeline(input.readInt(true), input.readInt(true), index), data.positionMode == spine.PositionMode.Fixed ? scale : 1)); - break; - case PATH_SPACING: - timelines - .push(readTimeline1(input, new spine.PathConstraintSpacingTimeline(input.readInt(true), input.readInt(true), index), data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed ? scale : 1)); - break; - case PATH_MIX: - var timeline = new spine.PathConstraintMixTimeline(input.readInt(true), input.readInt(true), index); - var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(); - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - } - timelines.push(timeline); - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var skin = skeletonData.skins[input.readInt(true)]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var slotIndex = input.readInt(true); - for (var iii = 0, nnn = input.readInt(true); iii < nnn; iii++) { - var attachmentName = input.readStringRef(); - var attachment = skin.getAttachment(slotIndex, attachmentName); - var weighted = attachment.bones; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var frameCount = input.readInt(true); - var frameLast = frameCount - 1; - var bezierCount = input.readInt(true); - var timeline = new spine.DeformTimeline(frameCount, bezierCount, slotIndex, attachment); - var time = input.readFloat(); - for (var frame = 0, bezier = 0;; frame++) { - var deform = void 0; - var end = input.readInt(true); - if (end == 0) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = input.readInt(true); - end += start; - if (scale == 1) { - for (var v = start; v < end; v++) - deform[v] = input.readFloat(); - } - else { - for (var v = start; v < end; v++) - deform[v] = input.readFloat() * scale; - } - if (!weighted) { - for (var v = 0, vn = deform.length; v < vn; v++) - deform[v] += vertices[v]; - } - } - timeline.setFrame(frame, time, deform); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1); - } - time = time2; - } - timelines.push(timeline); - } - } - } - var drawOrderCount = input.readInt(true); - if (drawOrderCount > 0) { - var timeline = new spine.DrawOrderTimeline(drawOrderCount); - var slotCount = skeletonData.slots.length; - for (var i = 0; i < drawOrderCount; i++) { - var time = input.readFloat(); - var offsetCount = input.readInt(true); - var drawOrder = spine.Utils.newArray(slotCount, 0); - for (var ii = slotCount - 1; ii >= 0; ii--) - drawOrder[ii] = -1; - var unchanged = spine.Utils.newArray(slotCount - offsetCount, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var ii = 0; ii < offsetCount; ii++) { - var slotIndex = input.readInt(true); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + input.readInt(true)] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var ii = slotCount - 1; ii >= 0; ii--) - if (drawOrder[ii] == -1) - drawOrder[ii] = unchanged[--unchangedIndex]; - timeline.setFrame(i, time, drawOrder); - } - timelines.push(timeline); - } - var eventCount = input.readInt(true); - if (eventCount > 0) { - var timeline = new spine.EventTimeline(eventCount); - for (var i = 0; i < eventCount; i++) { - var time = input.readFloat(); - var eventData = skeletonData.events[input.readInt(true)]; - var event_4 = new spine.Event(time, eventData); - event_4.intValue = input.readInt(false); - event_4.floatValue = input.readFloat(); - event_4.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue; - if (event_4.data.audioPath) { - event_4.volume = input.readFloat(); - event_4.balance = input.readFloat(); - } - timeline.setFrame(i, event_4); - } - timelines.push(timeline); - } - var duration = 0; - for (var i = 0, n = timelines.length; i < n; i++) - duration = Math.max(duration, timelines[i].getDuration()); - return new spine.Animation(name, timelines, duration); - }; - return SkeletonBinary; - }()); - spine.SkeletonBinary = SkeletonBinary; - var BinaryInput = (function () { - function BinaryInput(data, strings, index, buffer) { - if (strings === void 0) { strings = new Array(); } - if (index === void 0) { index = 0; } - if (buffer === void 0) { buffer = new DataView(data.buffer); } - this.strings = strings; - this.index = index; - this.buffer = buffer; - } - BinaryInput.prototype.readByte = function () { - return this.buffer.getInt8(this.index++); - }; - BinaryInput.prototype.readUnsignedByte = function () { - return this.buffer.getUint8(this.index++); - }; - BinaryInput.prototype.readShort = function () { - var value = this.buffer.getInt16(this.index); - this.index += 2; - return value; - }; - BinaryInput.prototype.readInt32 = function () { - var value = this.buffer.getInt32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readInt = function (optimizePositive) { - var b = this.readByte(); - var result = b & 0x7F; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 7; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 14; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 21; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 28; - } - } - } - } - return optimizePositive ? result : ((result >>> 1) ^ -(result & 1)); - }; - BinaryInput.prototype.readStringRef = function () { - var index = this.readInt(true); - return index == 0 ? null : this.strings[index - 1]; - }; - BinaryInput.prototype.readString = function () { - var byteCount = this.readInt(true); - switch (byteCount) { - case 0: - return null; - case 1: - return ""; - } - byteCount--; - var chars = ""; - var charCount = 0; - for (var i = 0; i < byteCount;) { - var b = this.readByte(); - switch (b >> 4) { - case 12: - case 13: - chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F)); - i += 2; - break; - case 14: - chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F)); - i += 3; - break; - default: - chars += String.fromCharCode(b); - i++; - } - } - return chars; - }; - BinaryInput.prototype.readFloat = function () { - var value = this.buffer.getFloat32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readBoolean = function () { - return this.readByte() != 0; - }; - return BinaryInput; - }()); - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); - var Vertices = (function () { - function Vertices(bones, vertices) { - if (bones === void 0) { bones = null; } - if (vertices === void 0) { vertices = null; } - this.bones = bones; - this.vertices = vertices; - } - return Vertices; - }()); - var AttachmentType; - (function (AttachmentType) { - AttachmentType[AttachmentType["Region"] = 0] = "Region"; - AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; - AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; - AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; - AttachmentType[AttachmentType["Path"] = 4] = "Path"; - AttachmentType[AttachmentType["Point"] = 5] = "Point"; - AttachmentType[AttachmentType["Clipping"] = 6] = "Clipping"; - })(AttachmentType || (AttachmentType = {})); - function readTimeline1(input, timeline, scale) { - var time = input.readFloat(), value = input.readFloat() * scale; - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, value); - if (frame == frameLast) - break; - var time2 = input.readFloat(), value2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, value, value2, 1); - } - time = time2; - value = value2; - } - return timeline; - } - function readTimeline2(input, timeline, scale) { - var time = input.readFloat(), value1 = input.readFloat() * scale, value2 = input.readFloat() * scale; - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, value1, value2); - if (frame == frameLast) - break; - var time2 = input.readFloat(), nvalue1 = input.readFloat() * scale, nvalue2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, value1, nvalue1, scale); - setBezier(input, timeline, bezier++, frame, 1, time, time2, value2, nvalue2, scale); - } - time = time2; - value1 = nvalue1; - value2 = nvalue2; - } - return timeline; - } - function setBezier(input, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { - timeline.setBezier(bezier, frame, value, time1, value1, input.readFloat(), input.readFloat() * scale, input.readFloat(), input.readFloat() * scale, time2, value2); - } - var BONE_ROTATE = 0; - var BONE_TRANSLATE = 1; - var BONE_TRANSLATEX = 2; - var BONE_TRANSLATEY = 3; - var BONE_SCALE = 4; - var BONE_SCALEX = 5; - var BONE_SCALEY = 6; - var BONE_SHEAR = 7; - var BONE_SHEARX = 8; - var BONE_SHEARY = 9; - var SLOT_ATTACHMENT = 0; - var SLOT_RGBA = 1; - var SLOT_RGB = 2; - var SLOT_RGBA2 = 3; - var SLOT_RGB2 = 4; - var SLOT_ALPHA = 5; - var PATH_POSITION = 0; - var PATH_SPACING = 1; - var PATH_MIX = 2; - var CURVE_LINEAR = 0; - var CURVE_STEPPED = 1; - var CURVE_BEZIER = 2; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBounds = (function () { - function SkeletonBounds() { - this.minX = 0; - this.minY = 0; - this.maxX = 0; - this.maxY = 0; - this.boundingBoxes = new Array(); - this.polygons = new Array(); - this.polygonPool = new spine.Pool(function () { - return spine.Utils.newFloatArray(16); - }); - } - SkeletonBounds.prototype.update = function (skeleton, updateAabb) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - var boundingBoxes = this.boundingBoxes; - var polygons = this.polygons; - var polygonPool = this.polygonPool; - var slots = skeleton.slots; - var slotCount = slots.length; - boundingBoxes.length = 0; - polygonPool.freeAll(polygons); - polygons.length = 0; - for (var i = 0; i < slotCount; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.BoundingBoxAttachment) { - var boundingBox = attachment; - boundingBoxes.push(boundingBox); - var polygon = polygonPool.obtain(); - if (polygon.length != boundingBox.worldVerticesLength) { - polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); - } - polygons.push(polygon); - boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2); - } - } - if (updateAabb) { - this.aabbCompute(); - } - else { - this.minX = Number.POSITIVE_INFINITY; - this.minY = Number.POSITIVE_INFINITY; - this.maxX = Number.NEGATIVE_INFINITY; - this.maxY = Number.NEGATIVE_INFINITY; - } - }; - SkeletonBounds.prototype.aabbCompute = function () { - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - var vertices = polygon; - for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { - var x = vertices[ii]; - var y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - this.minX = minX; - this.minY = minY; - this.maxX = maxX; - this.maxY = maxY; - }; - SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { - return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; - }; - SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { - var minX = this.minX; - var minY = this.minY; - var maxX = this.maxX; - var maxY = this.maxY; - if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) - return false; - var m = (y2 - y1) / (x2 - x1); - var y = m * (minX - x1) + y1; - if (y > minY && y < maxY) - return true; - y = m * (maxX - x1) + y1; - if (y > minY && y < maxY) - return true; - var x = (minY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - x = (maxY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - return false; - }; - SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { - return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; - }; - SkeletonBounds.prototype.containsPoint = function (x, y) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.containsPointPolygon(polygons[i], x, y)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { - var vertices = polygon; - var nn = polygon.length; - var prevIndex = nn - 2; - var inside = false; - for (var ii = 0; ii < nn; ii += 2) { - var vertexY = vertices[ii + 1]; - var prevY = vertices[prevIndex + 1]; - if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { - var vertexX = vertices[ii]; - if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) - inside = !inside; - } - prevIndex = ii; - } - return inside; - }; - SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { - var vertices = polygon; - var nn = polygon.length; - var width12 = x1 - x2, height12 = y1 - y2; - var det1 = x1 * y2 - y1 * x2; - var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; - for (var ii = 0; ii < nn; ii += 2) { - var x4 = vertices[ii], y4 = vertices[ii + 1]; - var det2 = x3 * y4 - y3 * x4; - var width34 = x3 - x4, height34 = y3 - y4; - var det3 = width12 * height34 - height12 * width34; - var x = (det1 * width34 - width12 * det2) / det3; - if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { - var y = (det1 * height34 - height12 * det2) / det3; - if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) - return true; - } - x3 = x4; - y3 = y4; - } - return false; - }; - SkeletonBounds.prototype.getPolygon = function (boundingBox) { - if (!boundingBox) - throw new Error("boundingBox cannot be null."); - var index = this.boundingBoxes.indexOf(boundingBox); - return index == -1 ? null : this.polygons[index]; - }; - SkeletonBounds.prototype.getWidth = function () { - return this.maxX - this.minX; - }; - SkeletonBounds.prototype.getHeight = function () { - return this.maxY - this.minY; - }; - return SkeletonBounds; - }()); - spine.SkeletonBounds = SkeletonBounds; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonClipping = (function () { - function SkeletonClipping() { - this.triangulator = new spine.Triangulator(); - this.clippingPolygon = new Array(); - this.clipOutput = new Array(); - this.clippedVertices = new Array(); - this.clippedTriangles = new Array(); - this.scratch = new Array(); - } - SkeletonClipping.prototype.clipStart = function (slot, clip) { - if (this.clipAttachment) - return 0; - this.clipAttachment = clip; - var n = clip.worldVerticesLength; - var vertices = spine.Utils.setArraySize(this.clippingPolygon, n); - clip.computeWorldVertices(slot, 0, n, vertices, 0, 2); - var clippingPolygon = this.clippingPolygon; - SkeletonClipping.makeClockwise(clippingPolygon); - var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon)); - for (var i = 0, n_2 = clippingPolygons.length; i < n_2; i++) { - var polygon = clippingPolygons[i]; - SkeletonClipping.makeClockwise(polygon); - polygon.push(polygon[0]); - polygon.push(polygon[1]); - } - return clippingPolygons.length; - }; - SkeletonClipping.prototype.clipEndWithSlot = function (slot) { - if (this.clipAttachment && this.clipAttachment.endSlot == slot.data) - this.clipEnd(); - }; - SkeletonClipping.prototype.clipEnd = function () { - if (!this.clipAttachment) - return; - this.clipAttachment = null; - this.clippingPolygons = null; - this.clippedVertices.length = 0; - this.clippedTriangles.length = 0; - this.clippingPolygon.length = 0; - }; - SkeletonClipping.prototype.isClipping = function () { - return this.clipAttachment != null; - }; - SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) { - var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; - var clippedTriangles = this.clippedTriangles; - var polygons = this.clippingPolygons; - var polygonsCount = this.clippingPolygons.length; - var vertexSize = twoColor ? 12 : 8; - var index = 0; - clippedVertices.length = 0; - clippedTriangles.length = 0; - outer: for (var i = 0; i < trianglesLength; i += 3) { - var vertexOffset = triangles[i] << 1; - var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1]; - var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 1] << 1; - var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1]; - var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 2] << 1; - var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1]; - var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1]; - for (var p = 0; p < polygonsCount; p++) { - var s = clippedVertices.length; - if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) { - var clipOutputLength = clipOutput.length; - if (clipOutputLength == 0) - continue; - var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; - var d = 1 / (d0 * d2 + d1 * (y1 - y3)); - var clipOutputCount = clipOutputLength >> 1; - var clipOutputItems = this.clipOutput; - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize); - for (var ii = 0; ii < clipOutputLength; ii += 2) { - var x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; - clippedVerticesItems[s] = x; - clippedVerticesItems[s + 1] = y; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - var c0 = x - x3, c1 = y - y3; - var a = (d0 * c0 + d1 * c1) * d; - var b = (d4 * c0 + d2 * c1) * d; - var c = 1 - a - b; - clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c; - clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c; - if (twoColor) { - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - } - s += vertexSize; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); - clipOutputCount--; - for (var ii = 1; ii < clipOutputCount; ii++) { - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + ii); - clippedTrianglesItems[s + 2] = (index + ii + 1); - s += 3; - } - index += clipOutputCount + 1; - } - else { - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + 3 * vertexSize); - clippedVerticesItems[s] = x1; - clippedVerticesItems[s + 1] = y1; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - if (!twoColor) { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = x2; - clippedVerticesItems[s + 9] = y2; - clippedVerticesItems[s + 10] = light.r; - clippedVerticesItems[s + 11] = light.g; - clippedVerticesItems[s + 12] = light.b; - clippedVerticesItems[s + 13] = light.a; - clippedVerticesItems[s + 14] = u2; - clippedVerticesItems[s + 15] = v2; - clippedVerticesItems[s + 16] = x3; - clippedVerticesItems[s + 17] = y3; - clippedVerticesItems[s + 18] = light.r; - clippedVerticesItems[s + 19] = light.g; - clippedVerticesItems[s + 20] = light.b; - clippedVerticesItems[s + 21] = light.a; - clippedVerticesItems[s + 22] = u3; - clippedVerticesItems[s + 23] = v3; - } - else { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - clippedVerticesItems[s + 12] = x2; - clippedVerticesItems[s + 13] = y2; - clippedVerticesItems[s + 14] = light.r; - clippedVerticesItems[s + 15] = light.g; - clippedVerticesItems[s + 16] = light.b; - clippedVerticesItems[s + 17] = light.a; - clippedVerticesItems[s + 18] = u2; - clippedVerticesItems[s + 19] = v2; - clippedVerticesItems[s + 20] = dark.r; - clippedVerticesItems[s + 21] = dark.g; - clippedVerticesItems[s + 22] = dark.b; - clippedVerticesItems[s + 23] = dark.a; - clippedVerticesItems[s + 24] = x3; - clippedVerticesItems[s + 25] = y3; - clippedVerticesItems[s + 26] = light.r; - clippedVerticesItems[s + 27] = light.g; - clippedVerticesItems[s + 28] = light.b; - clippedVerticesItems[s + 29] = light.a; - clippedVerticesItems[s + 30] = u3; - clippedVerticesItems[s + 31] = v3; - clippedVerticesItems[s + 32] = dark.r; - clippedVerticesItems[s + 33] = dark.g; - clippedVerticesItems[s + 34] = dark.b; - clippedVerticesItems[s + 35] = dark.a; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3); - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + 1); - clippedTrianglesItems[s + 2] = (index + 2); - index += 3; - continue outer; - } - } - } - }; - SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) { - var originalOutput = output; - var clipped = false; - var input = null; - if (clippingArea.length % 4 >= 2) { - input = output; - output = this.scratch; - } - else - input = this.scratch; - input.length = 0; - input.push(x1); - input.push(y1); - input.push(x2); - input.push(y2); - input.push(x3); - input.push(y3); - input.push(x1); - input.push(y1); - output.length = 0; - var clippingVertices = clippingArea; - var clippingVerticesLast = clippingArea.length - 4; - for (var i = 0;; i += 2) { - var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; - var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; - var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; - var inputVertices = input; - var inputVerticesLength = input.length - 2, outputStart = output.length; - for (var ii = 0; ii < inputVerticesLength; ii += 2) { - var inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; - var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; - var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; - if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { - if (side2) { - output.push(inputX2); - output.push(inputY2); - continue; - } - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - } - else if (side2) { - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - output.push(inputX2); - output.push(inputY2); - } - clipped = true; - } - if (outputStart == output.length) { - originalOutput.length = 0; - return true; - } - output.push(output[0]); - output.push(output[1]); - if (i == clippingVerticesLast) - break; - var temp = output; - output = input; - output.length = 0; - input = temp; - } - if (originalOutput != output) { - originalOutput.length = 0; - for (var i = 0, n = output.length - 2; i < n; i++) - originalOutput[i] = output[i]; - } - else - originalOutput.length = originalOutput.length - 2; - return clipped; - }; - SkeletonClipping.makeClockwise = function (polygon) { - var vertices = polygon; - var verticeslength = polygon.length; - var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0; - for (var i = 0, n = verticeslength - 3; i < n; i += 2) { - p1x = vertices[i]; - p1y = vertices[i + 1]; - p2x = vertices[i + 2]; - p2y = vertices[i + 3]; - area += p1x * p2y - p2x * p1y; - } - if (area < 0) - return; - for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) { - var x = vertices[i], y = vertices[i + 1]; - var other = lastX - i; - vertices[i] = vertices[other]; - vertices[i + 1] = vertices[other + 1]; - vertices[other] = x; - vertices[other + 1] = y; - } - }; - return SkeletonClipping; - }()); - spine.SkeletonClipping = SkeletonClipping; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonData = (function () { - function SkeletonData() { - this.bones = new Array(); - this.slots = new Array(); - this.skins = new Array(); - this.events = new Array(); - this.animations = new Array(); - this.ikConstraints = new Array(); - this.transformConstraints = new Array(); - this.pathConstraints = new Array(); - this.fps = 0; - } - SkeletonData.prototype.findBone = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.name == boneName) - return bone; - } - return null; - }; - SkeletonData.prototype.findBoneIndex = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].name == boneName) - return i; - return -1; - }; - SkeletonData.prototype.findSlot = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.name == slotName) - return slot; - } - return null; - }; - SkeletonData.prototype.findSlotIndex = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].name == slotName) - return i; - return -1; - }; - SkeletonData.prototype.findSkin = function (skinName) { - if (!skinName) - throw new Error("skinName cannot be null."); - var skins = this.skins; - for (var i = 0, n = skins.length; i < n; i++) { - var skin = skins[i]; - if (skin.name == skinName) - return skin; - } - return null; - }; - SkeletonData.prototype.findEvent = function (eventDataName) { - if (!eventDataName) - throw new Error("eventDataName cannot be null."); - var events = this.events; - for (var i = 0, n = events.length; i < n; i++) { - var event_5 = events[i]; - if (event_5.name == eventDataName) - return event_5; - } - return null; - }; - SkeletonData.prototype.findAnimation = function (animationName) { - if (!animationName) - throw new Error("animationName cannot be null."); - var animations = this.animations; - for (var i = 0, n = animations.length; i < n; i++) { - var animation = animations[i]; - if (animation.name == animationName) - return animation; - } - return null; - }; - SkeletonData.prototype.findIkConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findTransformConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findPathConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - return SkeletonData; - }()); - spine.SkeletonData = SkeletonData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonJson = (function () { - function SkeletonJson(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonJson.prototype.readSkeletonData = function (json) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - var root = typeof (json) === "string" ? JSON.parse(json) : json; - var skeletonMap = root.skeleton; - if (skeletonMap) { - skeletonData.hash = skeletonMap.hash; - skeletonData.version = skeletonMap.spine; - skeletonData.x = skeletonMap.x; - skeletonData.y = skeletonMap.y; - skeletonData.width = skeletonMap.width; - skeletonData.height = skeletonMap.height; - skeletonData.fps = skeletonMap.fps; - skeletonData.imagesPath = skeletonMap.images; - } - if (root.bones) { - for (var i = 0; i < root.bones.length; i++) { - var boneMap = root.bones[i]; - var parent_5 = null; - var parentName = getValue(boneMap, "parent", null); - if (parentName) - parent_5 = skeletonData.findBone(parentName); - var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_5); - data.length = getValue(boneMap, "length", 0) * scale; - data.x = getValue(boneMap, "x", 0) * scale; - data.y = getValue(boneMap, "y", 0) * scale; - data.rotation = getValue(boneMap, "rotation", 0); - data.scaleX = getValue(boneMap, "scaleX", 1); - data.scaleY = getValue(boneMap, "scaleY", 1); - data.shearX = getValue(boneMap, "shearX", 0); - data.shearY = getValue(boneMap, "shearY", 0); - data.transformMode = spine.Utils.enumValue(spine.TransformMode, getValue(boneMap, "transform", "Normal")); - data.skinRequired = getValue(boneMap, "skin", false); - var color = getValue(boneMap, "color", null); - if (color) - data.color.setFromString(color); - skeletonData.bones.push(data); - } - } - if (root.slots) { - for (var i = 0; i < root.slots.length; i++) { - var slotMap = root.slots[i]; - var boneData = skeletonData.findBone(slotMap.bone); - var data = new spine.SlotData(skeletonData.slots.length, slotMap.name, boneData); - var color = getValue(slotMap, "color", null); - if (color) - data.color.setFromString(color); - var dark = getValue(slotMap, "dark", null); - if (dark) - data.darkColor = spine.Color.fromString(dark); - data.attachmentName = getValue(slotMap, "attachment", null); - data.blendMode = spine.Utils.enumValue(spine.BlendMode, getValue(slotMap, "blend", "normal")); - skeletonData.slots.push(data); - } - } - if (root.ik) { - for (var i = 0; i < root.ik.length; i++) { - var constraintMap = root.ik[i]; - var data = new spine.IkConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - data.target = skeletonData.findBone(constraintMap.target); - data.mix = getValue(constraintMap, "mix", 1); - data.softness = getValue(constraintMap, "softness", 0) * scale; - data.bendDirection = getValue(constraintMap, "bendPositive", true) ? 1 : -1; - data.compress = getValue(constraintMap, "compress", false); - data.stretch = getValue(constraintMap, "stretch", false); - data.uniform = getValue(constraintMap, "uniform", false); - skeletonData.ikConstraints.push(data); - } - } - if (root.transform) { - for (var i = 0; i < root.transform.length; i++) { - var constraintMap = root.transform[i]; - var data = new spine.TransformConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - var targetName = constraintMap.target; - data.target = skeletonData.findBone(targetName); - data.local = getValue(constraintMap, "local", false); - data.relative = getValue(constraintMap, "relative", false); - data.offsetRotation = getValue(constraintMap, "rotation", 0); - data.offsetX = getValue(constraintMap, "x", 0) * scale; - data.offsetY = getValue(constraintMap, "y", 0) * scale; - data.offsetScaleX = getValue(constraintMap, "scaleX", 0); - data.offsetScaleY = getValue(constraintMap, "scaleY", 0); - data.offsetShearY = getValue(constraintMap, "shearY", 0); - data.mixRotate = getValue(constraintMap, "mixRotate", 1); - data.mixX = getValue(constraintMap, "mixX", 1); - data.mixY = getValue(constraintMap, "mixY", data.mixX); - data.mixScaleX = getValue(constraintMap, "mixScaleX", 1); - data.mixScaleY = getValue(constraintMap, "mixScaleY", data.mixScaleX); - data.mixShearY = getValue(constraintMap, "mixShearY", 1); - skeletonData.transformConstraints.push(data); - } - } - if (root.path) { - for (var i = 0; i < root.path.length; i++) { - var constraintMap = root.path[i]; - var data = new spine.PathConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - var targetName = constraintMap.target; - data.target = skeletonData.findSlot(targetName); - data.positionMode = spine.Utils.enumValue(spine.PositionMode, getValue(constraintMap, "positionMode", "Percent")); - data.spacingMode = spine.Utils.enumValue(spine.SpacingMode, getValue(constraintMap, "spacingMode", "Length")); - data.rotateMode = spine.Utils.enumValue(spine.RotateMode, getValue(constraintMap, "rotateMode", "Tangent")); - data.offsetRotation = getValue(constraintMap, "rotation", 0); - data.position = getValue(constraintMap, "position", 0); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = getValue(constraintMap, "spacing", 0); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.mixRotate = getValue(constraintMap, "mixRotate", 1); - data.mixX = getValue(constraintMap, "mixX", 1); - data.mixY = getValue(constraintMap, "mixY", data.mixX); - skeletonData.pathConstraints.push(data); - } - } - if (root.skins) { - for (var i = 0; i < root.skins.length; i++) { - var skinMap = root.skins[i]; - var skin = new spine.Skin(skinMap.name); - if (skinMap.bones) { - for (var ii = 0; ii < skinMap.bones.length; ii++) - skin.bones.push(skeletonData.findBone(skinMap.bones[ii])); - } - if (skinMap.ik) { - for (var ii = 0; ii < skinMap.ik.length; ii++) - skin.constraints.push(skeletonData.findIkConstraint(skinMap.ik[ii])); - } - if (skinMap.transform) { - for (var ii = 0; ii < skinMap.transform.length; ii++) - skin.constraints.push(skeletonData.findTransformConstraint(skinMap.transform[ii])); - } - if (skinMap.path) { - for (var ii = 0; ii < skinMap.path.length; ii++) - skin.constraints.push(skeletonData.findPathConstraint(skinMap.path[ii])); - } - for (var slotName in skinMap.attachments) { - var slot = skeletonData.findSlot(slotName); - var slotMap = skinMap.attachments[slotName]; - for (var entryName in slotMap) { - var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData); - if (attachment) - skin.setAttachment(slot.index, entryName, attachment); - } - } - skeletonData.skins.push(skin); - if (skin.name == "default") - skeletonData.defaultSkin = skin; - } - } - for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - var parent_6 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_6 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_6); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - if (root.events) { - for (var eventName in root.events) { - var eventMap = root.events[eventName]; - var data = new spine.EventData(eventName); - data.intValue = getValue(eventMap, "int", 0); - data.floatValue = getValue(eventMap, "float", 0); - data.stringValue = getValue(eventMap, "string", ""); - data.audioPath = getValue(eventMap, "audio", null); - if (data.audioPath) { - data.volume = getValue(eventMap, "volume", 1); - data.balance = getValue(eventMap, "balance", 0); - } - skeletonData.events.push(data); - } - } - if (root.animations) { - for (var animationName in root.animations) { - var animationMap = root.animations[animationName]; - this.readAnimation(animationMap, animationName, skeletonData); - } - } - return skeletonData; - }; - SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) { - var scale = this.scale; - name = getValue(map, "name", name); - switch (getValue(map, "type", "region")) { - case "region": { - var path = getValue(map, "path", name); - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (!region) - return null; - region.path = path; - region.x = getValue(map, "x", 0) * scale; - region.y = getValue(map, "y", 0) * scale; - region.scaleX = getValue(map, "scaleX", 1); - region.scaleY = getValue(map, "scaleY", 1); - region.rotation = getValue(map, "rotation", 0); - region.width = map.width * scale; - region.height = map.height * scale; - var color = getValue(map, "color", null); - if (color) - region.color.setFromString(color); - region.updateOffset(); - return region; - } - case "boundingbox": { - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (!box) - return null; - this.readVertices(map, box, map.vertexCount << 1); - var color = getValue(map, "color", null); - if (color) - box.color.setFromString(color); - return box; - } - case "mesh": - case "linkedmesh": { - var path = getValue(map, "path", name); - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - var color = getValue(map, "color", null); - if (color) - mesh.color.setFromString(color); - mesh.width = getValue(map, "width", 0) * scale; - mesh.height = getValue(map, "height", 0) * scale; - var parent_7 = getValue(map, "parent", null); - if (parent_7) { - this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, "skin", null), slotIndex, parent_7, getValue(map, "deform", true))); - return mesh; - } - var uvs = map.uvs; - this.readVertices(map, mesh, uvs.length); - mesh.triangles = map.triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.edges = getValue(map, "edges", null); - mesh.hullLength = getValue(map, "hull", 0) * 2; - return mesh; - } - case "path": { - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (!path) - return null; - path.closed = getValue(map, "closed", false); - path.constantSpeed = getValue(map, "constantSpeed", true); - var vertexCount = map.vertexCount; - this.readVertices(map, path, vertexCount << 1); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0; i < map.lengths.length; i++) - lengths[i] = map.lengths[i] * scale; - path.lengths = lengths; - var color = getValue(map, "color", null); - if (color) - path.color.setFromString(color); - return path; - } - case "point": { - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (!point) - return null; - point.x = getValue(map, "x", 0) * scale; - point.y = getValue(map, "y", 0) * scale; - point.rotation = getValue(map, "rotation", 0); - var color = getValue(map, "color", null); - if (color) - point.color.setFromString(color); - return point; - } - case "clipping": { - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (!clip) - return null; - var end = getValue(map, "end", null); - if (end) - clip.endSlot = skeletonData.findSlot(end); - var vertexCount = map.vertexCount; - this.readVertices(map, clip, vertexCount << 1); - var color = getValue(map, "color", null); - if (color) - clip.color.setFromString(color); - return clip; - } - } - return null; - }; - SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { - var scale = this.scale; - attachment.worldVerticesLength = verticesLength; - var vertices = map.vertices; - if (verticesLength == vertices.length) { - var scaledVertices = spine.Utils.toFloatArray(vertices); - if (scale != 1) { - for (var i = 0, n = vertices.length; i < n; i++) - scaledVertices[i] *= scale; - } - attachment.vertices = scaledVertices; - return; - } - var weights = new Array(); - var bones = new Array(); - for (var i = 0, n = vertices.length; i < n;) { - var boneCount = vertices[i++]; - bones.push(boneCount); - for (var nn = i + boneCount * 4; i < nn; i += 4) { - bones.push(vertices[i]); - weights.push(vertices[i + 1] * scale); - weights.push(vertices[i + 2] * scale); - weights.push(vertices[i + 3]); - } - } - attachment.bones = bones; - attachment.vertices = spine.Utils.toFloatArray(weights); - }; - SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { - var scale = this.scale; - var timelines = new Array(); - if (map.slots) { - for (var slotName in map.slots) { - var slotMap = map.slots[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - if (!timelineMap) - continue; - if (timelineName == "attachment") { - var timeline = new spine.AttachmentTimeline(timelineMap.length, slotIndex); - for (var frame = 0; frame < timelineMap.length; frame++) { - var keyMap = timelineMap[frame]; - timeline.setFrame(frame, getValue(keyMap, "time", 0), keyMap.name); - } - timelines.push(timeline); - } - else if (timelineName == "rgba") { - var timeline = new spine.RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.color); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color.a); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.color); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); - } - time = time2; - color = newColor; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "rgb") { - var timeline = new spine.RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.color); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.color); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - } - time = time2; - color = newColor; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "alpha") { - timelines.push(readTimeline1(timelineMap, new spine.AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1)); - } - else if (timelineName == "rgba2") { - var timeline = new spine.RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.light); - var color2 = spine.Color.fromString(keyMap.dark); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color.a, color2.r, color2.g, color2.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.light); - var newColor2 = spine.Color.fromString(nextMap.dark); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.r, newColor2.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.g, newColor2.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 6, time, time2, color2.b, newColor2.b, 1); - } - time = time2; - color = newColor; - color2 = newColor2; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "rgb2") { - var timeline = new spine.RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.light); - var color2 = spine.Color.fromString(keyMap.dark); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.light); - var newColor2 = spine.Color.fromString(nextMap.dark); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1); - } - time = time2; - color = newColor; - color2 = newColor2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.bones) { - for (var boneName in map.bones) { - var boneMap = map.bones[boneName]; - var boneIndex = skeletonData.findBoneIndex(boneName); - for (var timelineName in boneMap) { - var timelineMap = boneMap[timelineName]; - if (timelineMap.length == 0) - continue; - if (timelineName === "rotate") { - timelines.push(readTimeline1(timelineMap, new spine.RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1)); - } - else if (timelineName === "translate") { - var timeline = new spine.TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, scale)); - } - else if (timelineName === "translatex") { - var timeline = new spine.TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); - } - else if (timelineName === "translatey") { - var timeline = new spine.TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); - } - else if (timelineName === "scale") { - var timeline = new spine.ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 1, 1)); - } - else if (timelineName === "scalex") { - var timeline = new spine.ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); - } - else if (timelineName === "scaley") { - var timeline = new spine.ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); - } - else if (timelineName === "shear") { - var timeline = new spine.ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, 1)); - } - else if (timelineName === "shearx") { - var timeline = new spine.ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); - } - else if (timelineName === "sheary") { - var timeline = new spine.ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); - } - } - } - } - if (map.ik) { - for (var constraintName in map.ik) { - var constraintMap = map.ik[constraintName]; - var keyMap = constraintMap[0]; - if (!keyMap) - continue; - var constraint = skeletonData.findIkConstraint(constraintName); - var constraintIndex = skeletonData.ikConstraints.indexOf(constraint); - var timeline = new spine.IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mix = getValue(keyMap, "mix", 1); - var softness = getValue(keyMap, "softness", 0) * scale; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mix, softness, getValue(keyMap, "bendPositive", true) ? 1 : -1, getValue(keyMap, "compress", false), getValue(keyMap, "stretch", false)); - var nextMap = constraintMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mix2 = getValue(nextMap, "mix", 1); - var softness2 = getValue(nextMap, "softness", 0) * scale; - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale); - } - time = time2; - mix = mix2; - softness = softness2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - if (map.transform) { - for (var constraintName in map.transform) { - var timelineMap = map.transform[constraintName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - var constraint = skeletonData.findTransformConstraint(constraintName); - var constraintIndex = skeletonData.transformConstraints.indexOf(constraint); - var timeline = new spine.TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mixRotate = getValue(keyMap, "mixRotate", 1); - var mixX = getValue(keyMap, "mixX", 1); - var mixY = getValue(keyMap, "mixY", mixX); - var mixScaleX = getValue(keyMap, "mixScaleX", 1); - var mixScaleY = getValue(keyMap, "mixScaleY", mixScaleX); - var mixShearY = getValue(keyMap, "mixShearY", 1); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mixRotate2 = getValue(nextMap, "mixRotate", 1); - var mixX2 = getValue(nextMap, "mixX", 1); - var mixY2 = getValue(nextMap, "mixY", mixX2); - var mixScaleX2 = getValue(nextMap, "mixScaleX", 1); - var mixScaleY2 = getValue(nextMap, "mixScaleY", mixScaleX2); - var mixShearY2 = getValue(nextMap, "mixShearY", 1); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - mixScaleX = mixScaleX2; - mixScaleY = mixScaleY2; - mixScaleX = mixScaleX2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - if (map.path) { - for (var constraintName in map.path) { - var constraintMap = map.path[constraintName]; - var constraint = skeletonData.findPathConstraint(constraintName); - var constraintIndex = skeletonData.pathConstraints.indexOf(constraint); - for (var timelineName in constraintMap) { - var timelineMap = constraintMap[timelineName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - if (timelineName === "position") { - var timeline = new spine.PathConstraintPositionTimeline(timelineMap.length, timelineMap.length, constraintIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.positionMode == spine.PositionMode.Fixed ? scale : 1)); - } - else if (timelineName === "spacing") { - var timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, constraintIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.spacingMode == spine.SpacingMode.Length || constraint.spacingMode == spine.SpacingMode.Fixed ? scale : 1)); - } - else if (timelineName === "mix") { - var timeline = new spine.PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mixRotate = getValue(keyMap, "mixRotate", 1); - var mixX = getValue(keyMap, "mixX", 1); - var mixY = getValue(keyMap, "mixY", mixX); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mixRotate2 = getValue(nextMap, "mixRotate", 1); - var mixX2 = getValue(nextMap, "mixX", 1); - var mixY2 = getValue(nextMap, "mixY", mixX2); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.deform) { - for (var deformName in map.deform) { - var deformMap = map.deform[deformName]; - var skin = skeletonData.findSkin(deformName); - for (var slotName in deformMap) { - var slotMap = deformMap[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - var attachment = skin.getAttachment(slotIndex, timelineName); - var weighted = attachment.bones; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var timeline = new spine.DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment); - var time = getValue(keyMap, "time", 0); - for (var frame = 0, bezier = 0;; frame++) { - var deform = void 0; - var verticesValue = getValue(keyMap, "vertices", null); - if (!verticesValue) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = getValue(keyMap, "offset", 0); - spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); - if (scale != 1) { - for (var i = start, n = i + verticesValue.length; i < n; i++) - deform[i] *= scale; - } - if (!weighted) { - for (var i = 0; i < deformLength; i++) - deform[i] += vertices[i]; - } - } - timeline.setFrame(frame, time, deform); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var curve = keyMap.curve; - if (curve) - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1); - time = time2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.drawOrder) { - var timeline = new spine.DrawOrderTimeline(map.drawOrder.length); - var slotCount = skeletonData.slots.length; - var frame = 0; - for (var i = 0; i < map.drawOrder.length; i++, frame++) { - var drawOrderMap = map.drawOrder[i]; - var drawOrder = null; - var offsets = getValue(drawOrderMap, "offsets", null); - if (offsets) { - drawOrder = spine.Utils.newArray(slotCount, -1); - var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var ii = 0; ii < offsets.length; ii++) { - var offsetMap = offsets[ii]; - var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + offsetMap.offset] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var ii = slotCount - 1; ii >= 0; ii--) - if (drawOrder[ii] == -1) - drawOrder[ii] = unchanged[--unchangedIndex]; - } - timeline.setFrame(frame, getValue(drawOrderMap, "time", 0), drawOrder); - } - timelines.push(timeline); - } - if (map.events) { - var timeline = new spine.EventTimeline(map.events.length); - var frame = 0; - for (var i = 0; i < map.events.length; i++, frame++) { - var eventMap = map.events[i]; - var eventData = skeletonData.findEvent(eventMap.name); - var event_6 = new spine.Event(spine.Utils.toSinglePrecision(getValue(eventMap, "time", 0)), eventData); - event_6.intValue = getValue(eventMap, "int", eventData.intValue); - event_6.floatValue = getValue(eventMap, "float", eventData.floatValue); - event_6.stringValue = getValue(eventMap, "string", eventData.stringValue); - if (event_6.data.audioPath) { - event_6.volume = getValue(eventMap, "volume", 1); - event_6.balance = getValue(eventMap, "balance", 0); - } - timeline.setFrame(frame, event_6); - } - timelines.push(timeline); - } - var duration = 0; - for (var i = 0, n = timelines.length; i < n; i++) - duration = Math.max(duration, timelines[i].getDuration()); - skeletonData.animations.push(new spine.Animation(name, timelines, duration)); - }; - return SkeletonJson; - }()); - spine.SkeletonJson = SkeletonJson; - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); - function readTimeline1(keys, timeline, defaultValue, scale) { - var keyMap = keys[0]; - var time = getValue(keyMap, "time", 0); - var value = getValue(keyMap, "value", defaultValue) * scale; - var bezier = 0; - for (var frame = 0;; frame++) { - timeline.setFrame(frame, time, value); - var nextMap = keys[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - return timeline; - } - var time2 = getValue(nextMap, "time", 0); - var value2 = getValue(nextMap, "value", defaultValue) * scale; - if (keyMap.curve) - bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale); - time = time2; - value = value2; - keyMap = nextMap; - } - } - function readTimeline2(keys, timeline, name1, name2, defaultValue, scale) { - var keyMap = keys[0]; - var time = getValue(keyMap, "time", 0); - var value1 = getValue(keyMap, name1, defaultValue) * scale; - var value2 = getValue(keyMap, name2, defaultValue) * scale; - var bezier = 0; - for (var frame = 0;; frame++) { - timeline.setFrame(frame, time, value1, value2); - var nextMap = keys[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - return timeline; - } - var time2 = getValue(nextMap, "time", 0); - var nvalue1 = getValue(nextMap, name1, defaultValue) * scale; - var nvalue2 = getValue(nextMap, name2, defaultValue) * scale; - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale); - } - time = time2; - value1 = nvalue1; - value2 = nvalue2; - keyMap = nextMap; - } - } - function readCurve(curve, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { - if (curve == "stepped") { - timeline.setStepped(frame); - return bezier; - } - var i = value << 2; - var cx1 = curve[i]; - var cy1 = curve[i + 1] * scale; - var cx2 = curve[i + 2]; - var cy2 = curve[i + 3] * scale; - timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2); - return bezier + 1; - } - function getValue(map, property, defaultValue) { - return map[property] !== undefined ? map[property] : defaultValue; - } -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkinEntry = (function () { - function SkinEntry(slotIndex, name, attachment) { - this.slotIndex = slotIndex; - this.name = name; - this.attachment = attachment; - } - return SkinEntry; - }()); - spine.SkinEntry = SkinEntry; - var Skin = (function () { - function Skin(name) { - this.attachments = new Array(); - this.bones = Array(); - this.constraints = new Array(); - if (!name) - throw new Error("name cannot be null."); - this.name = name; - } - Skin.prototype.setAttachment = function (slotIndex, name, attachment) { - if (!attachment) - throw new Error("attachment cannot be null."); - var attachments = this.attachments; - if (slotIndex >= attachments.length) - attachments.length = slotIndex + 1; - if (!attachments[slotIndex]) - attachments[slotIndex] = {}; - attachments[slotIndex][name] = attachment; - }; - Skin.prototype.addSkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var ii = 0; ii < this.bones.length; ii++) { - if (this.bones[ii] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var ii = 0; ii < this.constraints.length; ii++) { - if (this.constraints[ii] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - }; - Skin.prototype.copySkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var ii = 0; ii < this.bones.length; ii++) { - if (this.bones[ii] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var ii = 0; ii < this.constraints.length; ii++) { - if (this.constraints[ii] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - if (!attachment.attachment) - continue; - if (attachment.attachment instanceof spine.MeshAttachment) { - attachment.attachment = attachment.attachment.newLinkedMesh(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - else { - attachment.attachment = attachment.attachment.copy(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - } - }; - Skin.prototype.getAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - return dictionary ? dictionary[name] : null; - }; - Skin.prototype.removeAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - if (dictionary) - dictionary[name] = null; - }; - Skin.prototype.getAttachments = function () { - var entries = new Array(); - for (var i = 0; i < this.attachments.length; i++) { - var slotAttachments = this.attachments[i]; - if (slotAttachments) { - for (var name_4 in slotAttachments) { - var attachment = slotAttachments[name_4]; - if (attachment) - entries.push(new SkinEntry(i, name_4, attachment)); - } - } - } - return entries; - }; - Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) { - var slotAttachments = this.attachments[slotIndex]; - if (slotAttachments) { - for (var name_5 in slotAttachments) { - var attachment = slotAttachments[name_5]; - if (attachment) - attachments.push(new SkinEntry(slotIndex, name_5, attachment)); - } - } - }; - Skin.prototype.clear = function () { - this.attachments.length = 0; - this.bones.length = 0; - this.constraints.length = 0; - }; - Skin.prototype.attachAll = function (skeleton, oldSkin) { - var slotIndex = 0; - for (var i = 0; i < skeleton.slots.length; i++) { - var slot = skeleton.slots[i]; - var slotAttachment = slot.getAttachment(); - if (slotAttachment && slotIndex < oldSkin.attachments.length) { - var dictionary = oldSkin.attachments[slotIndex]; - for (var key in dictionary) { - var skinAttachment = dictionary[key]; - if (slotAttachment == skinAttachment) { - var attachment = this.getAttachment(slotIndex, key); - if (attachment) - slot.setAttachment(attachment); - break; - } - } - } - slotIndex++; - } - }; - return Skin; - }()); - spine.Skin = Skin; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Slot = (function () { - function Slot(data, bone) { - this.deform = new Array(); - if (!data) - throw new Error("data cannot be null."); - if (!bone) - throw new Error("bone cannot be null."); - this.data = data; - this.bone = bone; - this.color = new spine.Color(); - this.darkColor = !data.darkColor ? null : new spine.Color(); - this.setToSetupPose(); - } - Slot.prototype.getSkeleton = function () { - return this.bone.skeleton; - }; - Slot.prototype.getAttachment = function () { - return this.attachment; - }; - Slot.prototype.setAttachment = function (attachment) { - if (this.attachment == attachment) - return; - if (!(attachment instanceof spine.VertexAttachment) || !(this.attachment instanceof spine.VertexAttachment) - || attachment.deformAttachment != this.attachment.deformAttachment) { - this.deform.length = 0; - } - this.attachment = attachment; - this.attachmentTime = this.bone.skeleton.time; - }; - Slot.prototype.setAttachmentTime = function (time) { - this.attachmentTime = this.bone.skeleton.time - time; - }; - Slot.prototype.getAttachmentTime = function () { - return this.bone.skeleton.time - this.attachmentTime; - }; - Slot.prototype.setToSetupPose = function () { - this.color.setFromColor(this.data.color); - if (this.darkColor) - this.darkColor.setFromColor(this.data.darkColor); - if (!this.data.attachmentName) - this.attachment = null; - else { - this.attachment = null; - this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); - } - }; - return Slot; - }()); - spine.Slot = Slot; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SlotData = (function () { - function SlotData(index, name, boneData) { - this.color = new spine.Color(1, 1, 1, 1); - if (index < 0) - throw new Error("index must be >= 0."); - if (!name) - throw new Error("name cannot be null."); - if (!boneData) - throw new Error("boneData cannot be null."); - this.index = index; - this.name = name; - this.boneData = boneData; - } - return SlotData; - }()); - spine.SlotData = SlotData; - var BlendMode; - (function (BlendMode) { - BlendMode[BlendMode["Normal"] = 0] = "Normal"; - BlendMode[BlendMode["Additive"] = 1] = "Additive"; - BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; - BlendMode[BlendMode["Screen"] = 3] = "Screen"; - })(BlendMode = spine.BlendMode || (spine.BlendMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Texture = (function () { - function Texture(image) { - this._image = image; - } - Texture.prototype.getImage = function () { - return this._image; - }; - return Texture; - }()); - spine.Texture = Texture; - var TextureFilter; - (function (TextureFilter) { - TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; - TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; - TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; - TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; - TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; - TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; - TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; - })(TextureFilter = spine.TextureFilter || (spine.TextureFilter = {})); - var TextureWrap; - (function (TextureWrap) { - TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; - TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; - TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; - })(TextureWrap = spine.TextureWrap || (spine.TextureWrap = {})); - var TextureRegion = (function () { - function TextureRegion() { - this.u = 0; - this.v = 0; - this.u2 = 0; - this.v2 = 0; - this.width = 0; - this.height = 0; - this.degrees = 0; - this.offsetX = 0; - this.offsetY = 0; - this.originalWidth = 0; - this.originalHeight = 0; - } - return TextureRegion; - }()); - spine.TextureRegion = TextureRegion; - var FakeTexture = (function (_super) { - __extends(FakeTexture, _super); - function FakeTexture() { - return _super !== null && _super.apply(this, arguments) || this; - } - FakeTexture.prototype.setFilters = function (minFilter, magFilter) { }; - FakeTexture.prototype.setWraps = function (uWrap, vWrap) { }; - FakeTexture.prototype.dispose = function () { }; - return FakeTexture; - }(Texture)); - spine.FakeTexture = FakeTexture; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TextureAtlas = (function () { - function TextureAtlas(atlasText) { - this.pages = new Array(); - this.regions = new Array(); - var reader = new TextureAtlasReader(atlasText); - var entry = new Array(4); - var page = null; - var region = null; - var pageFields = {}; - pageFields["size"] = function () { - page.width = parseInt(entry[1]); - page.height = parseInt(entry[2]); - }; - pageFields["format"] = function () { - }; - pageFields["filter"] = function () { - page.minFilter = spine.Utils.enumValue(spine.TextureFilter, entry[1]); - page.magFilter = spine.Utils.enumValue(spine.TextureFilter, entry[2]); - }; - pageFields["repeat"] = function () { - if (entry[1].indexOf('x') != -1) - page.uWrap = spine.TextureWrap.Repeat; - if (entry[1].indexOf('y') != -1) - page.vWrap = spine.TextureWrap.Repeat; - }; - pageFields["pma"] = function () { - page.pma = entry[1] == "true"; - }; - var regionFields = {}; - regionFields["xy"] = function () { - region.x = parseInt(entry[1]); - region.y = parseInt(entry[2]); - }; - regionFields["size"] = function () { - region.width = parseInt(entry[1]); - region.height = parseInt(entry[2]); - }; - regionFields["bounds"] = function () { - region.x = parseInt(entry[1]); - region.y = parseInt(entry[2]); - region.width = parseInt(entry[3]); - region.height = parseInt(entry[4]); - }; - regionFields["offset"] = function () { - region.offsetX = parseInt(entry[1]); - region.offsetY = parseInt(entry[2]); - }; - regionFields["orig"] = function () { - region.originalWidth = parseInt(entry[1]); - region.originalHeight = parseInt(entry[2]); - }; - regionFields["offsets"] = function () { - region.offsetX = parseInt(entry[1]); - region.offsetY = parseInt(entry[2]); - region.originalWidth = parseInt(entry[3]); - region.originalHeight = parseInt(entry[4]); - }; - regionFields["rotate"] = function () { - var value = entry[1]; - if (value == "true") - region.degrees = 90; - else if (value != "false") - region.degrees = parseInt(value); - }; - regionFields["index"] = function () { - region.index = parseInt(entry[1]); - }; - var line = reader.readLine(); - while (line && line.trim().length == 0) - line = reader.readLine(); - while (true) { - if (!line || line.trim().length == 0) - break; - if (reader.readEntry(entry, line) == 0) - break; - line = reader.readLine(); - } - var names = null; - var values = null; - while (true) { - if (line === null) - break; - if (line.trim().length == 0) { - page = null; - line = reader.readLine(); - } - else if (!page) { - page = new TextureAtlasPage(); - page.name = line.trim(); - while (true) { - if (reader.readEntry(entry, line = reader.readLine()) == 0) - break; - var field = pageFields[entry[0]]; - if (field) - field(); - } - this.pages.push(page); - } - else { - region = new TextureAtlasRegion(); - region.page = page; - region.name = line; - while (true) { - var count = reader.readEntry(entry, line = reader.readLine()); - if (count == 0) - break; - var field = regionFields[entry[0]]; - if (field) - field(); - else { - if (!names) { - names = []; - values = []; - } - names.push(entry[0]); - var entryValues = []; - for (var i = 0; i < count; i++) - entryValues.push(parseInt(entry[i + 1])); - values.push(entryValues); - } - } - if (region.originalWidth == 0 && region.originalHeight == 0) { - region.originalWidth = region.width; - region.originalHeight = region.height; - } - if (names && names.length > 0) { - region.names = names; - region.values = values; - names = null; - values = null; - } - region.u = region.x / page.width; - region.v = region.y / page.height; - if (region.degrees == 90) { - region.u2 = (region.x + region.height) / page.width; - region.v2 = (region.y + region.width) / page.height; - } - else { - region.u2 = (region.x + region.width) / page.width; - region.v2 = (region.y + region.height) / page.height; - } - this.regions.push(region); - } - } - } - TextureAtlas.prototype.findRegion = function (name) { - for (var i = 0; i < this.regions.length; i++) { - if (this.regions[i].name == name) { - return this.regions[i]; - } - } - return null; - }; - TextureAtlas.prototype.setTextures = function (assetManager, pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - for (var _i = 0, _a = this.pages; _i < _a.length; _i++) { - var page = _a[_i]; - page.setTexture(assetManager.get(pathPrefix + page.name)); - } - }; - TextureAtlas.prototype.dispose = function () { - for (var i = 0; i < this.pages.length; i++) { - this.pages[i].texture.dispose(); - } - }; - return TextureAtlas; - }()); - spine.TextureAtlas = TextureAtlas; - var TextureAtlasReader = (function () { - function TextureAtlasReader(text) { - this.index = 0; - this.lines = text.split(/\r\n|\r|\n/); - } - TextureAtlasReader.prototype.readLine = function () { - if (this.index >= this.lines.length) - return null; - return this.lines[this.index++]; - }; - TextureAtlasReader.prototype.readEntry = function (entry, line) { - if (!line) - return 0; - line = line.trim(); - if (line.length == 0) - return 0; - var colon = line.indexOf(':'); - if (colon == -1) - return 0; - entry[0] = line.substr(0, colon).trim(); - for (var i = 1, lastMatch = colon + 1;; i++) { - var comma = line.indexOf(',', lastMatch); - if (comma == -1) { - entry[i] = line.substr(lastMatch).trim(); - return i; - } - entry[i] = line.substr(lastMatch, comma - lastMatch).trim(); - lastMatch = comma + 1; - if (i == 4) - return 4; - } - }; - return TextureAtlasReader; - }()); - var TextureAtlasPage = (function () { - function TextureAtlasPage() { - this.minFilter = spine.TextureFilter.Nearest; - this.magFilter = spine.TextureFilter.Nearest; - this.uWrap = spine.TextureWrap.ClampToEdge; - this.vWrap = spine.TextureWrap.ClampToEdge; - } - TextureAtlasPage.prototype.setTexture = function (texture) { - this.texture = texture; - texture.setFilters(this.minFilter, this.magFilter); - texture.setWraps(this.uWrap, this.vWrap); - }; - return TextureAtlasPage; - }()); - spine.TextureAtlasPage = TextureAtlasPage; - var TextureAtlasRegion = (function (_super) { - __extends(TextureAtlasRegion, _super); - function TextureAtlasRegion() { - return _super !== null && _super.apply(this, arguments) || this; - } - return TextureAtlasRegion; - }(spine.TextureRegion)); - spine.TextureAtlasRegion = TextureAtlasRegion; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraint = (function () { - function TransformConstraint(data, skeleton) { - this.mixRotate = 0; - this.mixX = 0; - this.mixY = 0; - this.mixScaleX = 0; - this.mixScaleY = 0; - this.mixShearY = 0; - this.temp = new spine.Vector2(); - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mixRotate = data.mixRotate; - this.mixX = data.mixX; - this.mixY = data.mixY; - this.mixScaleX = data.mixScaleX; - this.mixScaleY = data.mixScaleY; - this.mixShearY = data.mixShearY; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - TransformConstraint.prototype.isActive = function () { - return this.active; - }; - TransformConstraint.prototype.update = function () { - if (this.mixRotate == 0 && this.mixX == 0 && this.mixY == 0 && this.mixScaleX == 0 && this.mixScaleX == 0 && this.mixShearY == 0) - return; - if (this.data.local) { - if (this.data.relative) - this.applyRelativeLocal(); - else - this.applyAbsoluteLocal(); - } - else { - if (this.data.relative) - this.applyRelativeWorld(); - else - this.applyAbsoluteWorld(); - } - }; - TransformConstraint.prototype.applyAbsoluteWorld = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var translate = mixX != 0 || mixY != 0; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect; - var offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (mixRotate != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - if (translate) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += (temp.x - bone.worldX) * mixX; - bone.worldY += (temp.y - bone.worldY) * mixY; - } - if (mixScaleX != 0) { - var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c); - if (s != 0) - s = (s + (Math.sqrt(ta * ta + tc * tc) - s + this.data.offsetScaleX) * mixScaleX) / s; - bone.a *= s; - bone.c *= s; - } - if (mixScaleY != 0) { - var s = Math.sqrt(bone.b * bone.b + bone.d * bone.d); - if (s != 0) - s = (s + (Math.sqrt(tb * tb + td * td) - s + this.data.offsetScaleY) * mixScaleY) / s; - bone.b *= s; - bone.d *= s; - } - if (mixShearY > 0) { - var b = bone.b, d = bone.d; - var by = Math.atan2(d, b); - var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r = by + (r + offsetShearY) * mixShearY; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - } - bone.updateAppliedTransform(); - } - }; - TransformConstraint.prototype.applyRelativeWorld = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var translate = mixX != 0 || mixY != 0; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (mixRotate != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - if (translate) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += temp.x * mixX; - bone.worldY += temp.y * mixY; - } - if (mixScaleX != 0) { - var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * mixScaleX + 1; - bone.a *= s; - bone.c *= s; - } - if (mixScaleY != 0) { - var s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * mixScaleY + 1; - bone.b *= s; - bone.d *= s; - } - if (mixShearY > 0) { - var r = Math.atan2(td, tb) - Math.atan2(tc, ta); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - var b = bone.b, d = bone.d; - r = Math.atan2(d, b) + (r - spine.MathUtils.PI / 2 + offsetShearY) * mixShearY; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - } - bone.updateAppliedTransform(); - } - }; - TransformConstraint.prototype.applyAbsoluteLocal = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var target = this.target; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var rotation = bone.arotation; - if (mixRotate != 0) { - var r = target.arotation - rotation + this.data.offsetRotation; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - rotation += r * mixRotate; - } - var x = bone.ax, y = bone.ay; - x += (target.ax - x + this.data.offsetX) * mixX; - y += (target.ay - y + this.data.offsetY) * mixY; - var scaleX = bone.ascaleX, scaleY = bone.ascaleY; - if (mixScaleX != 0 && scaleX != 0) - scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * mixScaleX) / scaleX; - if (mixScaleY != 0 && scaleY != 0) - scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * mixScaleY) / scaleY; - var shearY = bone.ashearY; - if (mixShearY != 0) { - var r = target.ashearY - shearY + this.data.offsetShearY; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - shearY += r * mixShearY; - } - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - TransformConstraint.prototype.applyRelativeLocal = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var target = this.target; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var rotation = bone.arotation + (target.arotation + this.data.offsetRotation) * mixRotate; - var x = bone.ax + (target.ax + this.data.offsetX) * mixX; - var y = bone.ay + (target.ay + this.data.offsetY) * mixY; - var scaleX = (bone.ascaleX * ((target.ascaleX - 1 + this.data.offsetScaleX) * mixScaleX) + 1); - var scaleY = (bone.ascaleY * ((target.ascaleY - 1 + this.data.offsetScaleY) * mixScaleY) + 1); - var shearY = bone.ashearY + (target.ashearY + this.data.offsetShearY) * mixShearY; - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - return TransformConstraint; - }()); - spine.TransformConstraint = TransformConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraintData = (function (_super) { - __extends(TransformConstraintData, _super); - function TransformConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.mixRotate = 0; - _this.mixX = 0; - _this.mixY = 0; - _this.mixScaleX = 0; - _this.mixScaleY = 0; - _this.mixShearY = 0; - _this.offsetRotation = 0; - _this.offsetX = 0; - _this.offsetY = 0; - _this.offsetScaleX = 0; - _this.offsetScaleY = 0; - _this.offsetShearY = 0; - _this.relative = false; - _this.local = false; - return _this; - } - return TransformConstraintData; - }(spine.ConstraintData)); - spine.TransformConstraintData = TransformConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Triangulator = (function () { - function Triangulator() { - this.convexPolygons = new Array(); - this.convexPolygonsIndices = new Array(); - this.indicesArray = new Array(); - this.isConcaveArray = new Array(); - this.triangles = new Array(); - this.polygonPool = new spine.Pool(function () { - return new Array(); - }); - this.polygonIndicesPool = new spine.Pool(function () { - return new Array(); - }); - } - Triangulator.prototype.triangulate = function (verticesArray) { - var vertices = verticesArray; - var vertexCount = verticesArray.length >> 1; - var indices = this.indicesArray; - indices.length = 0; - for (var i = 0; i < vertexCount; i++) - indices[i] = i; - var isConcave = this.isConcaveArray; - isConcave.length = 0; - for (var i = 0, n = vertexCount; i < n; ++i) - isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices); - var triangles = this.triangles; - triangles.length = 0; - while (vertexCount > 3) { - var previous = vertexCount - 1, i = 0, next = 1; - while (true) { - outer: if (!isConcave[i]) { - var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; - var p1x = vertices[p1], p1y = vertices[p1 + 1]; - var p2x = vertices[p2], p2y = vertices[p2 + 1]; - var p3x = vertices[p3], p3y = vertices[p3 + 1]; - for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) { - if (!isConcave[ii]) - continue; - var v = indices[ii] << 1; - var vx = vertices[v], vy = vertices[v + 1]; - if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) { - if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) { - if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) - break outer; - } - } - } - break; - } - if (next == 0) { - do { - if (!isConcave[i]) - break; - i--; - } while (i > 0); - break; - } - previous = i; - i = next; - next = (next + 1) % vertexCount; - } - triangles.push(indices[(vertexCount + i - 1) % vertexCount]); - triangles.push(indices[i]); - triangles.push(indices[(i + 1) % vertexCount]); - indices.splice(i, 1); - isConcave.splice(i, 1); - vertexCount--; - var previousIndex = (vertexCount + i - 1) % vertexCount; - var nextIndex = i == vertexCount ? 0 : i; - isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); - isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); - } - if (vertexCount == 3) { - triangles.push(indices[2]); - triangles.push(indices[0]); - triangles.push(indices[1]); - } - return triangles; - }; - Triangulator.prototype.decompose = function (verticesArray, triangles) { - var vertices = verticesArray; - var convexPolygons = this.convexPolygons; - this.polygonPool.freeAll(convexPolygons); - convexPolygons.length = 0; - var convexPolygonsIndices = this.convexPolygonsIndices; - this.polygonIndicesPool.freeAll(convexPolygonsIndices); - convexPolygonsIndices.length = 0; - var polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - var polygon = this.polygonPool.obtain(); - polygon.length = 0; - var fanBaseIndex = -1, lastWinding = 0; - for (var i = 0, n = triangles.length; i < n; i += 3) { - var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; - var x1 = vertices[t1], y1 = vertices[t1 + 1]; - var x2 = vertices[t2], y2 = vertices[t2 + 1]; - var x3 = vertices[t3], y3 = vertices[t3 + 1]; - var merged = false; - if (fanBaseIndex == t1) { - var o = polygon.length - 4; - var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3); - var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]); - if (winding1 == lastWinding && winding2 == lastWinding) { - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(t3); - merged = true; - } - } - if (!merged) { - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - else { - this.polygonPool.free(polygon); - this.polygonIndicesPool.free(polygonIndices); - } - polygon = this.polygonPool.obtain(); - polygon.length = 0; - polygon.push(x1); - polygon.push(y1); - polygon.push(x2); - polygon.push(y2); - polygon.push(x3); - polygon.push(y3); - polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - polygonIndices.push(t1); - polygonIndices.push(t2); - polygonIndices.push(t3); - lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3); - fanBaseIndex = t1; - } - } - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - for (var i = 0, n = convexPolygons.length; i < n; i++) { - polygonIndices = convexPolygonsIndices[i]; - if (polygonIndices.length == 0) - continue; - var firstIndex = polygonIndices[0]; - var lastIndex = polygonIndices[polygonIndices.length - 1]; - polygon = convexPolygons[i]; - var o = polygon.length - 4; - var prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; - var prevX = polygon[o + 2], prevY = polygon[o + 3]; - var firstX = polygon[0], firstY = polygon[1]; - var secondX = polygon[2], secondY = polygon[3]; - var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); - for (var ii = 0; ii < n; ii++) { - if (ii == i) - continue; - var otherIndices = convexPolygonsIndices[ii]; - if (otherIndices.length != 3) - continue; - var otherFirstIndex = otherIndices[0]; - var otherSecondIndex = otherIndices[1]; - var otherLastIndex = otherIndices[2]; - var otherPoly = convexPolygons[ii]; - var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; - if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) - continue; - var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3); - var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY); - if (winding1 == winding && winding2 == winding) { - otherPoly.length = 0; - otherIndices.length = 0; - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(otherLastIndex); - prevPrevX = prevX; - prevPrevY = prevY; - prevX = x3; - prevY = y3; - ii = 0; - } - } - } - for (var i = convexPolygons.length - 1; i >= 0; i--) { - polygon = convexPolygons[i]; - if (polygon.length == 0) { - convexPolygons.splice(i, 1); - this.polygonPool.free(polygon); - polygonIndices = convexPolygonsIndices[i]; - convexPolygonsIndices.splice(i, 1); - this.polygonIndicesPool.free(polygonIndices); - } - } - return convexPolygons; - }; - Triangulator.isConcave = function (index, vertexCount, vertices, indices) { - var previous = indices[(vertexCount + index - 1) % vertexCount] << 1; - var current = indices[index] << 1; - var next = indices[(index + 1) % vertexCount] << 1; - return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]); - }; - Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) { - return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; - }; - Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) { - var px = p2x - p1x, py = p2y - p1y; - return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1; - }; - return Triangulator; - }()); - spine.Triangulator = Triangulator; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IntSet = (function () { - function IntSet() { - this.array = new Array(); - } - IntSet.prototype.add = function (value) { - var contains = this.contains(value); - this.array[value | 0] = value | 0; - return !contains; - }; - IntSet.prototype.contains = function (value) { - return this.array[value | 0] != undefined; - }; - IntSet.prototype.remove = function (value) { - this.array[value | 0] = undefined; - }; - IntSet.prototype.clear = function () { - this.array.length = 0; - }; - return IntSet; - }()); - spine.IntSet = IntSet; - var StringSet = (function () { - function StringSet() { - this.entries = {}; - this.size = 0; - } - StringSet.prototype.add = function (value) { - var contains = this.entries[value]; - this.entries[value] = true; - if (!contains) { - this.size++; - return true; - } - return false; - }; - StringSet.prototype.addAll = function (values) { - var oldSize = this.size; - for (var i = 0, n = values.length; i < n; i++) - this.add(values[i]); - return oldSize != this.size; - }; - StringSet.prototype.contains = function (value) { - return this.entries[value]; - }; - StringSet.prototype.clear = function () { - this.entries = {}; - this.size = 0; - }; - return StringSet; - }()); - spine.StringSet = StringSet; - var Color = (function () { - function Color(r, g, b, a) { - if (r === void 0) { r = 0; } - if (g === void 0) { g = 0; } - if (b === void 0) { b = 0; } - if (a === void 0) { a = 0; } - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } - Color.prototype.set = function (r, g, b, a) { - this.r = r; - this.g = g; - this.b = b; - this.a = a; - return this.clamp(); - }; - Color.prototype.setFromColor = function (c) { - this.r = c.r; - this.g = c.g; - this.b = c.b; - this.a = c.a; - return this; - }; - Color.prototype.setFromString = function (hex) { - hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; - this.r = parseInt(hex.substr(0, 2), 16) / 255; - this.g = parseInt(hex.substr(2, 2), 16) / 255; - this.b = parseInt(hex.substr(4, 2), 16) / 255; - this.a = hex.length != 8 ? 1 : parseInt(hex.substr(6, 2), 16) / 255; - return this; - }; - Color.prototype.add = function (r, g, b, a) { - this.r += r; - this.g += g; - this.b += b; - this.a += a; - return this.clamp(); - }; - Color.prototype.clamp = function () { - if (this.r < 0) - this.r = 0; - else if (this.r > 1) - this.r = 1; - if (this.g < 0) - this.g = 0; - else if (this.g > 1) - this.g = 1; - if (this.b < 0) - this.b = 0; - else if (this.b > 1) - this.b = 1; - if (this.a < 0) - this.a = 0; - else if (this.a > 1) - this.a = 1; - return this; - }; - Color.rgba8888ToColor = function (color, value) { - color.r = ((value & 0xff000000) >>> 24) / 255; - color.g = ((value & 0x00ff0000) >>> 16) / 255; - color.b = ((value & 0x0000ff00) >>> 8) / 255; - color.a = ((value & 0x000000ff)) / 255; - }; - Color.rgb888ToColor = function (color, value) { - color.r = ((value & 0x00ff0000) >>> 16) / 255; - color.g = ((value & 0x0000ff00) >>> 8) / 255; - color.b = ((value & 0x000000ff)) / 255; - }; - Color.fromString = function (hex) { - return new Color().setFromString(hex); - }; - Color.WHITE = new Color(1, 1, 1, 1); - Color.RED = new Color(1, 0, 0, 1); - Color.GREEN = new Color(0, 1, 0, 1); - Color.BLUE = new Color(0, 0, 1, 1); - Color.MAGENTA = new Color(1, 0, 1, 1); - return Color; - }()); - spine.Color = Color; - var MathUtils = (function () { - function MathUtils() { - } - MathUtils.clamp = function (value, min, max) { - if (value < min) - return min; - if (value > max) - return max; - return value; - }; - MathUtils.cosDeg = function (degrees) { - return Math.cos(degrees * MathUtils.degRad); - }; - MathUtils.sinDeg = function (degrees) { - return Math.sin(degrees * MathUtils.degRad); - }; - MathUtils.signum = function (value) { - return value > 0 ? 1 : value < 0 ? -1 : 0; - }; - MathUtils.toInt = function (x) { - return x > 0 ? Math.floor(x) : Math.ceil(x); - }; - MathUtils.cbrt = function (x) { - var y = Math.pow(Math.abs(x), 1 / 3); - return x < 0 ? -y : y; - }; - MathUtils.randomTriangular = function (min, max) { - return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5); - }; - MathUtils.randomTriangularWith = function (min, max, mode) { - var u = Math.random(); - var d = max - min; - if (u <= (mode - min) / d) - return min + Math.sqrt(u * d * (mode - min)); - return max - Math.sqrt((1 - u) * d * (max - mode)); - }; - MathUtils.PI = 3.1415927; - MathUtils.PI2 = MathUtils.PI * 2; - MathUtils.radiansToDegrees = 180 / MathUtils.PI; - MathUtils.radDeg = MathUtils.radiansToDegrees; - MathUtils.degreesToRadians = MathUtils.PI / 180; - MathUtils.degRad = MathUtils.degreesToRadians; - return MathUtils; - }()); - spine.MathUtils = MathUtils; - var Interpolation = (function () { - function Interpolation() { - } - Interpolation.prototype.apply = function (start, end, a) { - return start + (end - start) * this.applyInternal(a); - }; - return Interpolation; - }()); - spine.Interpolation = Interpolation; - var Pow = (function (_super) { - __extends(Pow, _super); - function Pow(power) { - var _this = _super.call(this) || this; - _this.power = 2; - _this.power = power; - return _this; - } - Pow.prototype.applyInternal = function (a) { - if (a <= 0.5) - return Math.pow(a * 2, this.power) / 2; - return Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1; - }; - return Pow; - }(Interpolation)); - spine.Pow = Pow; - var PowOut = (function (_super) { - __extends(PowOut, _super); - function PowOut(power) { - return _super.call(this, power) || this; - } - PowOut.prototype.applyInternal = function (a) { - return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1; - }; - return PowOut; - }(Pow)); - spine.PowOut = PowOut; - var Utils = (function () { - function Utils() { - } - Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { - for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { - dest[j] = source[i]; - } - }; - Utils.arrayFill = function (array, fromIndex, toIndex, value) { - for (var i = fromIndex; i < toIndex; i++) - array[i] = value; - }; - Utils.setArraySize = function (array, size, value) { - if (value === void 0) { value = 0; } - var oldSize = array.length; - if (oldSize == size) - return array; - array.length = size; - if (oldSize < size) { - for (var i = oldSize; i < size; i++) - array[i] = value; - } - return array; - }; - Utils.ensureArrayCapacity = function (array, size, value) { - if (value === void 0) { value = 0; } - if (array.length >= size) - return array; - return Utils.setArraySize(array, size, value); - }; - Utils.newArray = function (size, defaultValue) { - var array = new Array(size); - for (var i = 0; i < size; i++) - array[i] = defaultValue; - return array; - }; - Utils.newFloatArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) - return new Float32Array(size); - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.newShortArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) - return new Int16Array(size); - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.toFloatArray = function (array) { - return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; - }; - Utils.toSinglePrecision = function (value) { - return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; - }; - Utils.webkit602BugfixHelper = function (alpha, blend) { - }; - Utils.contains = function (array, element, identity) { - if (identity === void 0) { identity = true; } - for (var i = 0; i < array.length; i++) - if (array[i] == element) - return true; - return false; - }; - Utils.enumValue = function (type, name) { - return type[name[0].toUpperCase() + name.slice(1)]; - }; - Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; - return Utils; - }()); - spine.Utils = Utils; - var DebugUtils = (function () { - function DebugUtils() { - } - DebugUtils.logBones = function (skeleton) { - for (var i = 0; i < skeleton.bones.length; i++) { - var bone = skeleton.bones[i]; - console.log(bone.data.name + ", " + bone.a + ", " + bone.b + ", " + bone.c + ", " + bone.d + ", " + bone.worldX + ", " + bone.worldY); - } - }; - return DebugUtils; - }()); - spine.DebugUtils = DebugUtils; - var Pool = (function () { - function Pool(instantiator) { - this.items = new Array(); - this.instantiator = instantiator; - } - Pool.prototype.obtain = function () { - return this.items.length > 0 ? this.items.pop() : this.instantiator(); - }; - Pool.prototype.free = function (item) { - if (item.reset) - item.reset(); - this.items.push(item); - }; - Pool.prototype.freeAll = function (items) { - for (var i = 0; i < items.length; i++) - this.free(items[i]); - }; - Pool.prototype.clear = function () { - this.items.length = 0; - }; - return Pool; - }()); - spine.Pool = Pool; - var Vector2 = (function () { - function Vector2(x, y) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - this.x = x; - this.y = y; - } - Vector2.prototype.set = function (x, y) { - this.x = x; - this.y = y; - return this; - }; - Vector2.prototype.length = function () { - var x = this.x; - var y = this.y; - return Math.sqrt(x * x + y * y); - }; - Vector2.prototype.normalize = function () { - var len = this.length(); - if (len != 0) { - this.x /= len; - this.y /= len; - } - return this; - }; - return Vector2; - }()); - spine.Vector2 = Vector2; - var TimeKeeper = (function () { - function TimeKeeper() { - this.maxDelta = 0.064; - this.framesPerSecond = 0; - this.delta = 0; - this.totalTime = 0; - this.lastTime = Date.now() / 1000; - this.frameCount = 0; - this.frameTime = 0; - } - TimeKeeper.prototype.update = function () { - var now = Date.now() / 1000; - this.delta = now - this.lastTime; - this.frameTime += this.delta; - this.totalTime += this.delta; - if (this.delta > this.maxDelta) - this.delta = this.maxDelta; - this.lastTime = now; - this.frameCount++; - if (this.frameTime > 1) { - this.framesPerSecond = this.frameCount / this.frameTime; - this.frameTime = 0; - this.frameCount = 0; - } - }; - return TimeKeeper; - }()); - spine.TimeKeeper = TimeKeeper; - var WindowedMean = (function () { - function WindowedMean(windowSize) { - if (windowSize === void 0) { windowSize = 32; } - this.addedValues = 0; - this.lastValue = 0; - this.mean = 0; - this.dirty = true; - this.values = new Array(windowSize); - } - WindowedMean.prototype.hasEnoughData = function () { - return this.addedValues >= this.values.length; - }; - WindowedMean.prototype.addValue = function (value) { - if (this.addedValues < this.values.length) - this.addedValues++; - this.values[this.lastValue++] = value; - if (this.lastValue > this.values.length - 1) - this.lastValue = 0; - this.dirty = true; - }; - WindowedMean.prototype.getMean = function () { - if (this.hasEnoughData()) { - if (this.dirty) { - var mean = 0; - for (var i = 0; i < this.values.length; i++) - mean += this.values[i]; - this.mean = mean / this.values.length; - this.dirty = false; - } - return this.mean; - } - return 0; - }; - return WindowedMean; - }()); - spine.WindowedMean = WindowedMean; -})(spine || (spine = {})); -(function () { - if (!Math.fround) { - Math.fround = (function (array) { - return function (x) { - return array[0] = x, array[0]; - }; - })(new Float32Array(1)); - } -})(); -var spine; -(function (spine) { - var Attachment = (function () { - function Attachment(name) { - if (!name) - throw new Error("name cannot be null."); - this.name = name; - } - return Attachment; - }()); - spine.Attachment = Attachment; - var VertexAttachment = (function (_super) { - __extends(VertexAttachment, _super); - function VertexAttachment(name) { - var _this = _super.call(this, name) || this; - _this.id = VertexAttachment.nextID++; - _this.worldVerticesLength = 0; - _this.deformAttachment = _this; - return _this; - } - VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) { - count = offset + (count >> 1) * stride; - var skeleton = slot.bone.skeleton; - var deformArray = slot.deform; - var vertices = this.vertices; - var bones = this.bones; - if (!bones) { - if (deformArray.length > 0) - vertices = deformArray; - var bone = slot.bone; - var x = bone.worldX; - var y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) { - var vx = vertices[v_1], vy = vertices[v_1 + 1]; - worldVertices[w] = vx * a + vy * b + x; - worldVertices[w + 1] = vx * c + vy * d + y; - } - return; - } - var v = 0, skip = 0; - for (var i = 0; i < start; i += 2) { - var n = bones[v]; - v += n + 1; - skip += n; - } - var skeletonBones = skeleton.bones; - if (deformArray.length == 0) { - for (var w = offset, b = skip * 3; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - else { - var deform = deformArray; - for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3, f += 2) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - }; - VertexAttachment.prototype.copyTo = function (attachment) { - if (this.bones) { - attachment.bones = new Array(this.bones.length); - spine.Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length); - } - else - attachment.bones = null; - if (this.vertices) { - attachment.vertices = spine.Utils.newFloatArray(this.vertices.length); - spine.Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length); - } - else - attachment.vertices = null; - attachment.worldVerticesLength = this.worldVerticesLength; - attachment.deformAttachment = this.deformAttachment; - }; - VertexAttachment.nextID = 0; - return VertexAttachment; - }(Attachment)); - spine.VertexAttachment = VertexAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoundingBoxAttachment = (function (_super) { - __extends(BoundingBoxAttachment, _super); - function BoundingBoxAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - BoundingBoxAttachment.prototype.copy = function () { - var copy = new BoundingBoxAttachment(this.name); - this.copyTo(copy); - copy.color.setFromColor(this.color); - return copy; - }; - return BoundingBoxAttachment; - }(spine.VertexAttachment)); - spine.BoundingBoxAttachment = BoundingBoxAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var ClippingAttachment = (function (_super) { - __extends(ClippingAttachment, _super); - function ClippingAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.2275, 0.2275, 0.8078, 1); - return _this; - } - ClippingAttachment.prototype.copy = function () { - var copy = new ClippingAttachment(this.name); - this.copyTo(copy); - copy.endSlot = this.endSlot; - copy.color.setFromColor(this.color); - return copy; - }; - return ClippingAttachment; - }(spine.VertexAttachment)); - spine.ClippingAttachment = ClippingAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var MeshAttachment = (function (_super) { - __extends(MeshAttachment, _super); - function MeshAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - _this.tempColor = new spine.Color(0, 0, 0, 0); - return _this; - } - MeshAttachment.prototype.updateUVs = function () { - var regionUVs = this.regionUVs; - if (!this.uvs || this.uvs.length != regionUVs.length) - this.uvs = spine.Utils.newFloatArray(regionUVs.length); - var uvs = this.uvs; - var n = this.uvs.length; - var u = this.region.u, v = this.region.v, width = 0, height = 0; - if (this.region instanceof spine.TextureAtlasRegion) { - var region = this.region, image = region.page.texture.getImage(); - var textureWidth = image.width, textureHeight = image.height; - switch (region.degrees) { - case 90: - u -= (region.originalHeight - region.offsetY - region.height) / textureWidth; - v -= (region.originalWidth - region.offsetX - region.width) / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i + 1] * width; - uvs[i + 1] = v + (1 - regionUVs[i]) * height; - } - return; - case 180: - u -= (region.originalWidth - region.offsetX - region.width) / textureWidth; - v -= region.offsetY / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i]) * width; - uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height; - } - return; - case 270: - u -= region.offsetY / textureWidth; - v -= region.offsetX / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i + 1]) * width; - uvs[i + 1] = v + regionUVs[i] * height; - } - return; - } - u -= region.offsetX / textureWidth; - v -= (region.originalHeight - region.offsetY - region.height) / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - } - else if (!this.region) { - u = v = 0; - width = height = 1; - } - else { - width = this.region.u2 - u; - height = this.region.v2 - v; - } - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i] * width; - uvs[i + 1] = v + regionUVs[i + 1] * height; - } - }; - MeshAttachment.prototype.getParentMesh = function () { - return this.parentMesh; - }; - MeshAttachment.prototype.setParentMesh = function (parentMesh) { - this.parentMesh = parentMesh; - if (parentMesh) { - this.bones = parentMesh.bones; - this.vertices = parentMesh.vertices; - this.worldVerticesLength = parentMesh.worldVerticesLength; - this.regionUVs = parentMesh.regionUVs; - this.triangles = parentMesh.triangles; - this.hullLength = parentMesh.hullLength; - this.worldVerticesLength = parentMesh.worldVerticesLength; - } - }; - MeshAttachment.prototype.copy = function () { - if (this.parentMesh) - return this.newLinkedMesh(); - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - this.copyTo(copy); - copy.regionUVs = new Array(this.regionUVs.length); - spine.Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length); - copy.uvs = new Array(this.uvs.length); - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length); - copy.triangles = new Array(this.triangles.length); - spine.Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); - copy.hullLength = this.hullLength; - if (this.edges) { - copy.edges = new Array(this.edges.length); - spine.Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); - } - copy.width = this.width; - copy.height = this.height; - return copy; - }; - MeshAttachment.prototype.newLinkedMesh = function () { - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - copy.deformAttachment = this.deformAttachment; - copy.setParentMesh(this.parentMesh ? this.parentMesh : this); - copy.updateUVs(); - return copy; - }; - return MeshAttachment; - }(spine.VertexAttachment)); - spine.MeshAttachment = MeshAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathAttachment = (function (_super) { - __extends(PathAttachment, _super); - function PathAttachment(name) { - var _this = _super.call(this, name) || this; - _this.closed = false; - _this.constantSpeed = false; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - PathAttachment.prototype.copy = function () { - var copy = new PathAttachment(this.name); - this.copyTo(copy); - copy.lengths = new Array(this.lengths.length); - spine.Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length); - copy.closed = closed; - copy.constantSpeed = this.constantSpeed; - copy.color.setFromColor(this.color); - return copy; - }; - return PathAttachment; - }(spine.VertexAttachment)); - spine.PathAttachment = PathAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PointAttachment = (function (_super) { - __extends(PointAttachment, _super); - function PointAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.38, 0.94, 0, 1); - return _this; - } - PointAttachment.prototype.computeWorldPosition = function (bone, point) { - point.x = this.x * bone.a + this.y * bone.b + bone.worldX; - point.y = this.x * bone.c + this.y * bone.d + bone.worldY; - return point; - }; - PointAttachment.prototype.computeWorldRotation = function (bone) { - var cos = spine.MathUtils.cosDeg(this.rotation), sin = spine.MathUtils.sinDeg(this.rotation); - var x = cos * bone.a + sin * bone.b; - var y = cos * bone.c + sin * bone.d; - return Math.atan2(y, x) * spine.MathUtils.radDeg; - }; - PointAttachment.prototype.copy = function () { - var copy = new PointAttachment(this.name); - copy.x = this.x; - copy.y = this.y; - copy.rotation = this.rotation; - copy.color.setFromColor(this.color); - return copy; - }; - return PointAttachment; - }(spine.VertexAttachment)); - spine.PointAttachment = PointAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var RegionAttachment = (function (_super) { - __extends(RegionAttachment, _super); - function RegionAttachment(name) { - var _this = _super.call(this, name) || this; - _this.x = 0; - _this.y = 0; - _this.scaleX = 1; - _this.scaleY = 1; - _this.rotation = 0; - _this.width = 0; - _this.height = 0; - _this.color = new spine.Color(1, 1, 1, 1); - _this.offset = spine.Utils.newFloatArray(8); - _this.uvs = spine.Utils.newFloatArray(8); - _this.tempColor = new spine.Color(1, 1, 1, 1); - return _this; - } - RegionAttachment.prototype.updateOffset = function () { - var region = this.region; - var regionScaleX = this.width / this.region.originalWidth * this.scaleX; - var regionScaleY = this.height / this.region.originalHeight * this.scaleY; - var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; - var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; - var localX2 = localX + this.region.width * regionScaleX; - var localY2 = localY + this.region.height * regionScaleY; - var radians = this.rotation * Math.PI / 180; - var cos = Math.cos(radians); - var sin = Math.sin(radians); - var x = this.x, y = this.y; - var localXCos = localX * cos + x; - var localXSin = localX * sin; - var localYCos = localY * cos + y; - var localYSin = localY * sin; - var localX2Cos = localX2 * cos + x; - var localX2Sin = localX2 * sin; - var localY2Cos = localY2 * cos + y; - var localY2Sin = localY2 * sin; - var offset = this.offset; - offset[0] = localXCos - localYSin; - offset[1] = localYCos + localXSin; - offset[2] = localXCos - localY2Sin; - offset[3] = localY2Cos + localXSin; - offset[4] = localX2Cos - localY2Sin; - offset[5] = localY2Cos + localX2Sin; - offset[6] = localX2Cos - localYSin; - offset[7] = localYCos + localX2Sin; - }; - RegionAttachment.prototype.setRegion = function (region) { - this.region = region; - var uvs = this.uvs; - if (region.degrees == 90) { - uvs[2] = region.u; - uvs[3] = region.v2; - uvs[4] = region.u; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v; - uvs[0] = region.u2; - uvs[1] = region.v2; - } - else { - uvs[0] = region.u; - uvs[1] = region.v2; - uvs[2] = region.u; - uvs[3] = region.v; - uvs[4] = region.u2; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v2; - } - }; - RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) { - var vertexOffset = this.offset; - var x = bone.worldX, y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var offsetX = 0, offsetY = 0; - offsetX = vertexOffset[0]; - offsetY = vertexOffset[1]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[2]; - offsetY = vertexOffset[3]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[4]; - offsetY = vertexOffset[5]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[6]; - offsetY = vertexOffset[7]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - }; - RegionAttachment.prototype.copy = function () { - var copy = new RegionAttachment(this.name); - copy.region = this.region; - copy.rendererObject = this.rendererObject; - copy.path = this.path; - copy.x = this.x; - copy.y = this.y; - copy.scaleX = this.scaleX; - copy.scaleY = this.scaleY; - copy.rotation = this.rotation; - copy.width = this.width; - copy.height = this.height; - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8); - spine.Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8); - copy.color.setFromColor(this.color); - return copy; - }; - RegionAttachment.X1 = 0; - RegionAttachment.Y1 = 1; - RegionAttachment.C1R = 2; - RegionAttachment.C1G = 3; - RegionAttachment.C1B = 4; - RegionAttachment.C1A = 5; - RegionAttachment.U1 = 6; - RegionAttachment.V1 = 7; - RegionAttachment.X2 = 8; - RegionAttachment.Y2 = 9; - RegionAttachment.C2R = 10; - RegionAttachment.C2G = 11; - RegionAttachment.C2B = 12; - RegionAttachment.C2A = 13; - RegionAttachment.U2 = 14; - RegionAttachment.V2 = 15; - RegionAttachment.X3 = 16; - RegionAttachment.Y3 = 17; - RegionAttachment.C3R = 18; - RegionAttachment.C3G = 19; - RegionAttachment.C3B = 20; - RegionAttachment.C3A = 21; - RegionAttachment.U3 = 22; - RegionAttachment.V3 = 23; - RegionAttachment.X4 = 24; - RegionAttachment.Y4 = 25; - RegionAttachment.C4R = 26; - RegionAttachment.C4G = 27; - RegionAttachment.C4B = 28; - RegionAttachment.C4A = 29; - RegionAttachment.U4 = 30; - RegionAttachment.V4 = 31; - return RegionAttachment; - }(spine.Attachment)); - spine.RegionAttachment = RegionAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var JitterEffect = (function () { - function JitterEffect(jitterX, jitterY) { - this.jitterX = 0; - this.jitterY = 0; - this.jitterX = jitterX; - this.jitterY = jitterY; - } - JitterEffect.prototype.begin = function (skeleton) { - }; - JitterEffect.prototype.transform = function (position, uv, light, dark) { - position.x += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - position.y += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - }; - JitterEffect.prototype.end = function () { - }; - return JitterEffect; - }()); - spine.JitterEffect = JitterEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SwirlEffect = (function () { - function SwirlEffect(radius) { - this.centerX = 0; - this.centerY = 0; - this.radius = 0; - this.angle = 0; - this.worldX = 0; - this.worldY = 0; - this.radius = radius; - } - SwirlEffect.prototype.begin = function (skeleton) { - this.worldX = skeleton.x + this.centerX; - this.worldY = skeleton.y + this.centerY; - }; - SwirlEffect.prototype.transform = function (position, uv, light, dark) { - var radAngle = this.angle * spine.MathUtils.degreesToRadians; - var x = position.x - this.worldX; - var y = position.y - this.worldY; - var dist = Math.sqrt(x * x + y * y); - if (dist < this.radius) { - var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius); - var cos = Math.cos(theta); - var sin = Math.sin(theta); - position.x = cos * x - sin * y + this.worldX; - position.y = sin * x + cos * y + this.worldY; - } - }; - SwirlEffect.prototype.end = function () { - }; - SwirlEffect.interpolation = new spine.PowOut(2); - return SwirlEffect; - }()); - spine.SwirlEffect = SwirlEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var AssetManager = (function (_super) { - __extends(AssetManager, _super); - function AssetManager(pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - return _super.call(this, function (image) { - return new threejs.ThreeJsTexture(image); - }, pathPrefix, downloader) || this; - } - return AssetManager; - }(spine.AssetManager)); - threejs.AssetManager = AssetManager; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var MeshBatcher = (function (_super) { - __extends(MeshBatcher, _super); - function MeshBatcher(maxVertices, materialCustomizer) { - if (maxVertices === void 0) { maxVertices = 10920; } - if (materialCustomizer === void 0) { materialCustomizer = function (parameters) { }; } - var _this = _super.call(this) || this; - _this.verticesLength = 0; - _this.indicesLength = 0; - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - var vertices = _this.vertices = new Float32Array(maxVertices * MeshBatcher.VERTEX_SIZE); - var indices = _this.indices = new Uint16Array(maxVertices * 3); - var geo = new THREE.BufferGeometry(); - var vertexBuffer = _this.vertexBuffer = new THREE.InterleavedBuffer(vertices, MeshBatcher.VERTEX_SIZE); - vertexBuffer.usage = WebGLRenderingContext.DYNAMIC_DRAW; - geo.setAttribute("position", new THREE.InterleavedBufferAttribute(vertexBuffer, 3, 0, false)); - geo.setAttribute("color", new THREE.InterleavedBufferAttribute(vertexBuffer, 4, 3, false)); - geo.setAttribute("uv", new THREE.InterleavedBufferAttribute(vertexBuffer, 2, 7, false)); - geo.setIndex(new THREE.BufferAttribute(indices, 1)); - geo.getIndex().usage = WebGLRenderingContext.DYNAMIC_DRAW; - geo.drawRange.start = 0; - geo.drawRange.count = 0; - _this.geometry = geo; - _this.material = new threejs.SkeletonMeshMaterial(materialCustomizer); - return _this; - } - MeshBatcher.prototype.dispose = function () { - this.geometry.dispose(); - if (this.material instanceof THREE.Material) - this.material.dispose(); - else if (this.material) { - for (var i = 0; i < this.material.length; i++) { - var material = this.material[i]; - if (material instanceof THREE.Material) - material.dispose(); - } - } - }; - MeshBatcher.prototype.clear = function () { - var geo = this.geometry; - geo.drawRange.start = 0; - geo.drawRange.count = 0; - this.material.uniforms.map.value = null; - }; - MeshBatcher.prototype.begin = function () { - this.verticesLength = 0; - this.indicesLength = 0; - }; - MeshBatcher.prototype.canBatch = function (verticesLength, indicesLength) { - if (this.indicesLength + indicesLength >= this.indices.byteLength / 2) - return false; - if (this.verticesLength + verticesLength >= this.vertices.byteLength / 2) - return false; - return true; - }; - MeshBatcher.prototype.batch = function (vertices, verticesLength, indices, indicesLength, z) { - if (z === void 0) { z = 0; } - var indexStart = this.verticesLength / MeshBatcher.VERTEX_SIZE; - var vertexBuffer = this.vertices; - var i = this.verticesLength; - var j = 0; - for (; j < verticesLength;) { - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = z; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - } - this.verticesLength = i; - var indicesArray = this.indices; - for (i = this.indicesLength, j = 0; j < indicesLength; i++, j++) - indicesArray[i] = indices[j] + indexStart; - this.indicesLength += indicesLength; - }; - MeshBatcher.prototype.end = function () { - this.vertexBuffer.needsUpdate = this.verticesLength > 0; - this.vertexBuffer.updateRange.offset = 0; - this.vertexBuffer.updateRange.count = this.verticesLength; - var geo = this.geometry; - geo.getIndex().needsUpdate = this.indicesLength > 0; - geo.getIndex().updateRange.offset = 0; - geo.getIndex().updateRange.count = this.indicesLength; - geo.drawRange.start = 0; - geo.drawRange.count = this.indicesLength; - }; - MeshBatcher.VERTEX_SIZE = 9; - return MeshBatcher; - }(THREE.Mesh)); - threejs.MeshBatcher = MeshBatcher; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var SkeletonMeshMaterial = (function (_super) { - __extends(SkeletonMeshMaterial, _super); - function SkeletonMeshMaterial(customizer) { - var _this = this; - var vertexShader = "\n\t\t\t\tattribute vec4 color;\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tvarying vec4 vColor;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tvColor = color;\n\t\t\t\t\tgl_Position = projectionMatrix*modelViewMatrix*vec4(position,1.0);\n\t\t\t\t}\n\t\t\t"; - var fragmentShader = "\n\t\t\t\tuniform sampler2D map;\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tvarying vec4 vColor;\n\t\t\t\tvoid main(void) {\n\t\t\t\t\tgl_FragColor = texture2D(map, vUv)*vColor;\n\t\t\t\t}\n\t\t\t"; - var parameters = { - uniforms: { - map: { type: "t", value: null } - }, - vertexShader: vertexShader, - fragmentShader: fragmentShader, - side: THREE.DoubleSide, - transparent: true, - alphaTest: 0.5 - }; - customizer(parameters); - _this = _super.call(this, parameters) || this; - return _this; - } - ; - return SkeletonMeshMaterial; - }(THREE.ShaderMaterial)); - threejs.SkeletonMeshMaterial = SkeletonMeshMaterial; - var SkeletonMesh = (function (_super) { - __extends(SkeletonMesh, _super); - function SkeletonMesh(skeletonData, materialCustomizer) { - if (materialCustomizer === void 0) { materialCustomizer = function (parameters) { }; } - var _this = _super.call(this) || this; - _this.tempPos = new spine.Vector2(); - _this.tempUv = new spine.Vector2(); - _this.tempLight = new spine.Color(); - _this.tempDark = new spine.Color(); - _this.zOffset = 0.1; - _this.batches = new Array(); - _this.nextBatchIndex = 0; - _this.clipper = new spine.SkeletonClipping(); - _this.vertices = spine.Utils.newFloatArray(1024); - _this.tempColor = new spine.Color(); - _this.materialCustomizer = materialCustomizer; - _this.skeleton = new spine.Skeleton(skeletonData); - var animData = new spine.AnimationStateData(skeletonData); - _this.state = new spine.AnimationState(animData); - return _this; - } - SkeletonMesh.prototype.update = function (deltaTime) { - var state = this.state; - var skeleton = this.skeleton; - state.update(deltaTime); - state.apply(skeleton); - skeleton.updateWorldTransform(); - this.updateGeometry(); - }; - SkeletonMesh.prototype.dispose = function () { - for (var i = 0; i < this.batches.length; i++) { - this.batches[i].dispose(); - } - }; - SkeletonMesh.prototype.clearBatches = function () { - for (var i = 0; i < this.batches.length; i++) { - this.batches[i].clear(); - this.batches[i].visible = false; - } - this.nextBatchIndex = 0; - }; - SkeletonMesh.prototype.nextBatch = function () { - if (this.batches.length == this.nextBatchIndex) { - var batch_1 = new threejs.MeshBatcher(10920, this.materialCustomizer); - this.add(batch_1); - this.batches.push(batch_1); - } - var batch = this.batches[this.nextBatchIndex++]; - batch.visible = true; - return batch; - }; - SkeletonMesh.prototype.updateGeometry = function () { - this.clearBatches(); - var tempPos = this.tempPos; - var tempUv = this.tempUv; - var tempLight = this.tempLight; - var tempDark = this.tempDark; - var numVertices = 0; - var verticesLength = 0; - var indicesLength = 0; - var blendMode = null; - var clipper = this.clipper; - var vertices = this.vertices; - var triangles = null; - var uvs = null; - var drawOrder = this.skeleton.drawOrder; - var batch = this.nextBatch(); - batch.begin(); - var z = 0; - var zOffset = this.zOffset; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var vertexSize = clipper.isClipping() ? 2 : SkeletonMesh.VERTEX_SIZE; - var slot = drawOrder[i]; - if (!slot.bone.active) { - clipper.clipEndWithSlot(slot); - continue; - } - var attachment = slot.getAttachment(); - var attachmentColor = null; - var texture = null; - var numFloats = 0; - if (attachment instanceof spine.RegionAttachment) { - var region = attachment; - attachmentColor = region.color; - vertices = this.vertices; - numFloats = vertexSize * 4; - region.computeWorldVertices(slot.bone, vertices, 0, vertexSize); - triangles = SkeletonMesh.QUAD_TRIANGLES; - uvs = region.uvs; - texture = region.region.renderObject.page.texture; - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - attachmentColor = mesh.color; - vertices = this.vertices; - numFloats = (mesh.worldVerticesLength >> 1) * vertexSize; - if (numFloats > vertices.length) { - vertices = this.vertices = spine.Utils.newFloatArray(numFloats); - } - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, vertexSize); - triangles = mesh.triangles; - uvs = mesh.uvs; - texture = mesh.region.renderObject.page.texture; - } - else if (attachment instanceof spine.ClippingAttachment) { - var clip = (attachment); - clipper.clipStart(slot, clip); - continue; - } - else { - clipper.clipEndWithSlot(slot); - continue; - } - if (texture) { - var skeleton = slot.bone.skeleton; - var skeletonColor = skeleton.color; - var slotColor = slot.color; - var alpha = skeletonColor.a * slotColor.a * attachmentColor.a; - var color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * attachmentColor.r, skeletonColor.g * slotColor.g * attachmentColor.g, skeletonColor.b * slotColor.b * attachmentColor.b, alpha); - var finalVertices = void 0; - var finalVerticesLength = void 0; - var finalIndices = void 0; - var finalIndicesLength = void 0; - if (clipper.isClipping()) { - clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false); - var clippedVertices = clipper.clippedVertices; - var clippedTriangles = clipper.clippedTriangles; - if (this.vertexEffect) { - var vertexEffect = this.vertexEffect; - var verts = clippedVertices; - for (var v = 0, n_3 = clippedVertices.length; v < n_3; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.setFromColor(color); - tempDark.set(0, 0, 0, 0); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - finalVertices = clippedVertices; - finalVerticesLength = clippedVertices.length; - finalIndices = clippedTriangles; - finalIndicesLength = clippedTriangles.length; - } - else { - var verts = vertices; - if (this.vertexEffect) { - var vertexEffect = this.vertexEffect; - for (var v = 0, u = 0, n_4 = numFloats; v < n_4; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.setFromColor(color); - tempDark.set(0, 0, 0, 0); - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 2, u = 0, n_5 = numFloats; v < n_5; v += vertexSize, u += 2) { - verts[v] = color.r; - verts[v + 1] = color.g; - verts[v + 2] = color.b; - verts[v + 3] = color.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - } - } - finalVertices = vertices; - finalVerticesLength = numFloats; - finalIndices = triangles; - finalIndicesLength = triangles.length; - } - if (finalVerticesLength == 0 || finalIndicesLength == 0) { - clipper.clipEndWithSlot(slot); - continue; - } - if (!batch.canBatch(finalVerticesLength, finalIndicesLength)) { - batch.end(); - batch = this.nextBatch(); - batch.begin(); - } - var batchMaterial = batch.material; - if (!batchMaterial.uniforms.map.value) - batchMaterial.uniforms.map.value = texture.texture; - if (batchMaterial.uniforms.map.value != texture.texture) { - batch.end(); - batch = this.nextBatch(); - batch.begin(); - batchMaterial = batch.material; - batchMaterial.uniforms.map.value = texture.texture; - } - batchMaterial.needsUpdate = true; - batch.batch(finalVertices, finalVerticesLength, finalIndices, finalIndicesLength, z); - z += zOffset; - } - clipper.clipEndWithSlot(slot); - } - clipper.clipEnd(); - batch.end(); - }; - SkeletonMesh.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - SkeletonMesh.VERTEX_SIZE = 2 + 2 + 4; - return SkeletonMesh; - }(THREE.Object3D)); - threejs.SkeletonMesh = SkeletonMesh; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var ThreeJsTexture = (function (_super) { - __extends(ThreeJsTexture, _super); - function ThreeJsTexture(image) { - var _this = _super.call(this, image) || this; - _this.texture = new THREE.Texture(image); - _this.texture.flipY = false; - _this.texture.needsUpdate = true; - return _this; - } - ThreeJsTexture.prototype.setFilters = function (minFilter, magFilter) { - this.texture.minFilter = ThreeJsTexture.toThreeJsTextureFilter(minFilter); - this.texture.magFilter = ThreeJsTexture.toThreeJsTextureFilter(magFilter); - }; - ThreeJsTexture.prototype.setWraps = function (uWrap, vWrap) { - this.texture.wrapS = ThreeJsTexture.toThreeJsTextureWrap(uWrap); - this.texture.wrapT = ThreeJsTexture.toThreeJsTextureWrap(vWrap); - }; - ThreeJsTexture.prototype.dispose = function () { - this.texture.dispose(); - }; - ThreeJsTexture.toThreeJsTextureFilter = function (filter) { - if (filter === spine.TextureFilter.Linear) - return THREE.LinearFilter; - else if (filter === spine.TextureFilter.MipMap) - return THREE.LinearMipMapLinearFilter; - else if (filter === spine.TextureFilter.MipMapLinearNearest) - return THREE.LinearMipMapNearestFilter; - else if (filter === spine.TextureFilter.MipMapNearestLinear) - return THREE.NearestMipMapLinearFilter; - else if (filter === spine.TextureFilter.MipMapNearestNearest) - return THREE.NearestMipMapNearestFilter; - else if (filter === spine.TextureFilter.Nearest) - return THREE.NearestFilter; - else - throw new Error("Unknown texture filter: " + filter); - }; - ThreeJsTexture.toThreeJsTextureWrap = function (wrap) { - if (wrap === spine.TextureWrap.ClampToEdge) - return THREE.ClampToEdgeWrapping; - else if (wrap === spine.TextureWrap.MirroredRepeat) - return THREE.MirroredRepeatWrapping; - else if (wrap === spine.TextureWrap.Repeat) - return THREE.RepeatWrapping; - else - throw new Error("Unknown texture wrap: " + wrap); - }; - return ThreeJsTexture; - }(spine.Texture)); - threejs.ThreeJsTexture = ThreeJsTexture; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -//# sourceMappingURL=spine-threejs.js.map \ No newline at end of file diff --git a/spine-ts/build/spine-threejs.js.map b/spine-ts/build/spine-threejs.js.map deleted file mode 100644 index 93df5bf75..000000000 --- a/spine-ts/build/spine-threejs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"spine-threejs.js","sourceRoot":"","sources":["../core/src/Animation.ts","../core/src/AnimationState.ts","../core/src/AnimationStateData.ts","../core/src/AssetManager.ts","../core/src/AtlasAttachmentLoader.ts","../core/src/Bone.ts","../core/src/BoneData.ts","../core/src/ConstraintData.ts","../core/src/Event.ts","../core/src/EventData.ts","../core/src/IkConstraint.ts","../core/src/IkConstraintData.ts","../core/src/PathConstraint.ts","../core/src/PathConstraintData.ts","../core/src/Skeleton.ts","../core/src/SkeletonBinary.ts","../core/src/SkeletonBounds.ts","../core/src/SkeletonClipping.ts","../core/src/SkeletonData.ts","../core/src/SkeletonJson.ts","../core/src/Skin.ts","../core/src/Slot.ts","../core/src/SlotData.ts","../core/src/Texture.ts","../core/src/TextureAtlas.ts","../core/src/TransformConstraint.ts","../core/src/TransformConstraintData.ts","../core/src/Triangulator.ts","../core/src/Updatable.ts","../core/src/Utils.ts","../core/src/VertexEffect.ts","../core/src/polyfills.ts","../core/src/attachments/Attachment.ts","../core/src/attachments/AttachmentLoader.ts","../core/src/attachments/BoundingBoxAttachment.ts","../core/src/attachments/ClippingAttachment.ts","../core/src/attachments/MeshAttachment.ts","../core/src/attachments/PathAttachment.ts","../core/src/attachments/PointAttachment.ts","../core/src/attachments/RegionAttachment.ts","../core/src/vertexeffects/JitterEffect.ts","../core/src/vertexeffects/SwirlEffect.ts","../threejs/src/AssetManager.ts","../threejs/src/MeshBatcher.ts","../threejs/src/SkeletonMesh.ts","../threejs/src/ThreeJsTexture.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/spine-ts/build/spine-webgl.d.ts b/spine-ts/build/spine-webgl.d.ts deleted file mode 100644 index d2197960c..000000000 --- a/spine-ts/build/spine-webgl.d.ts +++ /dev/null @@ -1,1681 +0,0 @@ -declare module spine { - class Animation { - name: string; - timelines: Array; - timelineIds: StringSet; - duration: number; - constructor(name: string, timelines: Array, duration: number); - setTimelines(timelines: Array): void; - hasTimeline(ids: string[]): boolean; - apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - enum MixBlend { - setup = 0, - first = 1, - replace = 2, - add = 3 - } - enum MixDirection { - mixIn = 0, - mixOut = 1 - } - abstract class Timeline { - propertyIds: string[]; - frames: ArrayLike; - constructor(frameCount: number, propertyIds: string[]); - getPropertyIds(): string[]; - getFrameEntries(): number; - getFrameCount(): number; - getDuration(): number; - abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - static search1(frames: ArrayLike, time: number): number; - static search(frames: ArrayLike, time: number, step: number): number; - } - interface BoneTimeline { - boneIndex: number; - } - interface SlotTimeline { - slotIndex: number; - } - abstract class CurveTimeline extends Timeline { - protected curves: ArrayLike; - constructor(frameCount: number, bezierCount: number, propertyIds: string[]); - setLinear(frame: number): void; - setStepped(frame: number): void; - shrink(bezierCount: number): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number; - } - abstract class CurveTimeline1 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value: number): void; - getCurveValue(time: number): number; - } - abstract class CurveTimeline2 extends CurveTimeline { - constructor(frameCount: number, bezierCount: number, propertyId1: string, propertyId2: string); - getFrameEntries(): number; - setFrame(frame: number, time: number, value1: number, value2: number): void; - } - class RotateTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearTimeline extends CurveTimeline2 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearXTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearYTimeline extends CurveTimeline1 implements BoneTimeline { - boneIndex: number; - constructor(frameCount: number, bezierCount: number, boneIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBATimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AlphaTimeline extends CurveTimeline1 implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGBA2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RGB2Timeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - constructor(frameCount: number, bezierCount: number, slotIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AttachmentTimeline extends Timeline implements SlotTimeline { - slotIndex: number; - attachmentNames: Array; - constructor(frameCount: number, slotIndex: number); - getFrameCount(): number; - setFrame(frame: number, time: number, attachmentName: string): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; - } - class DeformTimeline extends CurveTimeline implements SlotTimeline { - slotIndex: number; - attachment: VertexAttachment; - vertices: Array>; - constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment); - getFrameCount(): number; - setFrame(frame: number, time: number, vertices: ArrayLike): void; - setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void; - getCurvePercent(time: number, frame: number): number; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class EventTimeline extends Timeline { - static propertyIds: string[]; - events: Array; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, event: Event): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class DrawOrderTimeline extends Timeline { - static propertyIds: string[]; - drawOrders: Array>; - constructor(frameCount: number); - getFrameCount(): number; - setFrame(frame: number, time: number, drawOrder: Array): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class IkConstraintTimeline extends CurveTimeline { - ikConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TransformConstraintTimeline extends CurveTimeline { - transformConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintPositionTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintSpacingTimeline extends CurveTimeline1 { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintMixTimeline extends CurveTimeline { - pathConstraintIndex: number; - constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number); - getFrameEntries(): number; - setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } -} -declare module spine { - class AnimationState { - private static emptyAnimation; - data: AnimationStateData; - tracks: TrackEntry[]; - timeScale: number; - unkeyedState: number; - events: Event[]; - listeners: AnimationStateListener[]; - queue: EventQueue; - propertyIDs: StringSet; - animationsChanged: boolean; - trackEntryPool: Pool; - constructor(data: AnimationStateData); - update(delta: number): void; - updateMixingFrom(to: TrackEntry, delta: number): boolean; - apply(skeleton: Skeleton): boolean; - applyMixingFrom(to: TrackEntry, skeleton: Skeleton, blend: MixBlend): number; - applyAttachmentTimeline(timeline: AttachmentTimeline, skeleton: Skeleton, time: number, blend: MixBlend, attachments: boolean): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string, attachments: boolean): void; - applyRotateTimeline(timeline: RotateTimeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array, i: number, firstFrame: boolean): void; - queueEvents(entry: TrackEntry, animationTime: number): void; - clearTracks(): void; - clearTrack(trackIndex: number): void; - setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; - setAnimation(trackIndex: number, animationName: string, loop?: boolean): TrackEntry; - setAnimationWith(trackIndex: number, animation: Animation, loop?: boolean): TrackEntry; - addAnimation(trackIndex: number, animationName: string, loop?: boolean, delay?: number): TrackEntry; - addAnimationWith(trackIndex: number, animation: Animation, loop?: boolean, delay?: number): TrackEntry; - setEmptyAnimation(trackIndex: number, mixDuration?: number): TrackEntry; - addEmptyAnimation(trackIndex: number, mixDuration?: number, delay?: number): TrackEntry; - setEmptyAnimations(mixDuration?: number): void; - expandToIndex(index: number): TrackEntry; - trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; - clearNext(entry: TrackEntry): void; - _animationsChanged(): void; - computeHold(entry: TrackEntry): void; - getCurrent(trackIndex: number): TrackEntry; - addListener(listener: AnimationStateListener): void; - removeListener(listener: AnimationStateListener): void; - clearListeners(): void; - clearListenerNotifications(): void; - } - class TrackEntry { - animation: Animation; - previous: TrackEntry; - next: TrackEntry; - mixingFrom: TrackEntry; - mixingTo: TrackEntry; - listener: AnimationStateListener; - trackIndex: number; - loop: boolean; - holdPrevious: boolean; - reverse: boolean; - eventThreshold: number; - attachmentThreshold: number; - drawOrderThreshold: number; - animationStart: number; - animationEnd: number; - animationLast: number; - nextAnimationLast: number; - delay: number; - trackTime: number; - trackLast: number; - nextTrackLast: number; - trackEnd: number; - timeScale: number; - alpha: number; - mixTime: number; - mixDuration: number; - interruptAlpha: number; - totalAlpha: number; - mixBlend: MixBlend; - timelineMode: number[]; - timelineHoldMix: TrackEntry[]; - timelinesRotation: number[]; - reset(): void; - getAnimationTime(): number; - setAnimationLast(animationLast: number): void; - isComplete(): boolean; - resetRotationDirections(): void; - getTrackComplete(): number; - } - class EventQueue { - objects: Array; - drainDisabled: boolean; - animState: AnimationState; - constructor(animState: AnimationState); - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - drain(): void; - clear(): void; - } - enum EventType { - start = 0, - interrupt = 1, - end = 2, - dispose = 3, - complete = 4, - event = 5 - } - interface AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } - abstract class AnimationStateAdapter implements AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } -} -declare module spine { - class AnimationStateData { - skeletonData: SkeletonData; - animationToMixTime: Map; - defaultMix: number; - constructor(skeletonData: SkeletonData); - setMix(fromName: string, toName: string, duration: number): void; - setMixWith(from: Animation, to: Animation, duration: number): void; - getMix(from: Animation, to: Animation): number; - } -} -declare module spine { - class AssetManager implements Disposable { - private pathPrefix; - private textureLoader; - private downloader; - private assets; - private errors; - private toLoad; - private loaded; - constructor(textureLoader: (image: HTMLImageElement | ImageBitmap) => Texture, pathPrefix?: string, downloader?: Downloader); - private start; - private success; - private error; - setRawDataURI(path: string, data: string): void; - loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, message: string) => void): void; - loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, message: string) => void): void; - loadJson(path: string, success?: (path: string, object: object) => void, error?: (path: string, message: string) => void): void; - loadTexture(path: string, success?: (path: string, texture: Texture) => void, error?: (path: string, message: string) => void): void; - loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, message: string) => void): void; - get(path: string): any; - require(path: string): any; - remove(path: string): any; - removeAll(): void; - isLoadingComplete(): boolean; - getToLoad(): number; - getLoaded(): number; - dispose(): void; - hasErrors(): boolean; - getErrors(): Map; - } - class Downloader { - private callbacks; - rawDataUris: Map; - downloadText(url: string, success: (data: string) => void, error: (status: number, responseText: string) => void): void; - downloadJson(url: string, success: (data: object) => void, error: (status: number, responseText: string) => void): void; - downloadBinary(url: string, success: (data: Uint8Array) => void, error: (status: number, responseText: string) => void): void; - private start; - private finish; - } -} -declare module spine { - class AtlasAttachmentLoader implements AttachmentLoader { - atlas: TextureAtlas; - constructor(atlas: TextureAtlas); - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - class Bone implements Updatable { - data: BoneData; - skeleton: Skeleton; - parent: Bone; - children: Bone[]; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - ax: number; - ay: number; - arotation: number; - ascaleX: number; - ascaleY: number; - ashearX: number; - ashearY: number; - a: number; - b: number; - c: number; - d: number; - worldY: number; - worldX: number; - sorted: boolean; - active: boolean; - constructor(data: BoneData, skeleton: Skeleton, parent: Bone); - isActive(): boolean; - update(): void; - updateWorldTransform(): void; - updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; - setToSetupPose(): void; - getWorldRotationX(): number; - getWorldRotationY(): number; - getWorldScaleX(): number; - getWorldScaleY(): number; - updateAppliedTransform(): void; - worldToLocal(world: Vector2): Vector2; - localToWorld(local: Vector2): Vector2; - worldToLocalRotation(worldRotation: number): number; - localToWorldRotation(localRotation: number): number; - rotateWorld(degrees: number): void; - } -} -declare module spine { - class BoneData { - index: number; - name: string; - parent: BoneData; - length: number; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - transformMode: TransformMode; - skinRequired: boolean; - color: Color; - constructor(index: number, name: string, parent: BoneData); - } - enum TransformMode { - Normal = 0, - OnlyTranslation = 1, - NoRotationOrReflection = 2, - NoScale = 3, - NoScaleOrReflection = 4 - } -} -declare module spine { - abstract class ConstraintData { - name: string; - order: number; - skinRequired: boolean; - constructor(name: string, order: number, skinRequired: boolean); - } -} -declare module spine { - class Event { - data: EventData; - intValue: number; - floatValue: number; - stringValue: string; - time: number; - volume: number; - balance: number; - constructor(time: number, data: EventData); - } -} -declare module spine { - class EventData { - name: string; - intValue: number; - floatValue: number; - stringValue: string; - audioPath: string; - volume: number; - balance: number; - constructor(name: string); - } -} -declare module spine { - class IkConstraint implements Updatable { - data: IkConstraintData; - bones: Array; - target: Bone; - bendDirection: number; - compress: boolean; - stretch: boolean; - mix: number; - softness: number; - active: boolean; - constructor(data: IkConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; - apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, uniform: boolean, softness: number, alpha: number): void; - } -} -declare module spine { - class IkConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - bendDirection: number; - compress: boolean; - stretch: boolean; - uniform: boolean; - mix: number; - softness: number; - constructor(name: string); - } -} -declare module spine { - class PathConstraint implements Updatable { - static NONE: number; - static BEFORE: number; - static AFTER: number; - static epsilon: number; - data: PathConstraintData; - bones: Array; - target: Slot; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - spaces: number[]; - positions: number[]; - world: number[]; - curves: number[]; - lengths: number[]; - segments: number[]; - active: boolean; - constructor(data: PathConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[]; - addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; - } -} -declare module spine { - class PathConstraintData extends ConstraintData { - bones: BoneData[]; - target: SlotData; - positionMode: PositionMode; - spacingMode: SpacingMode; - rotateMode: RotateMode; - offsetRotation: number; - position: number; - spacing: number; - mixRotate: number; - mixX: number; - mixY: number; - constructor(name: string); - } - enum PositionMode { - Fixed = 0, - Percent = 1 - } - enum SpacingMode { - Length = 0, - Fixed = 1, - Percent = 2, - Proportional = 3 - } - enum RotateMode { - Tangent = 0, - Chain = 1, - ChainScale = 2 - } -} -declare module spine { - class Skeleton { - data: SkeletonData; - bones: Array; - slots: Array; - drawOrder: Array; - ikConstraints: Array; - transformConstraints: Array; - pathConstraints: Array; - _updateCache: Updatable[]; - skin: Skin; - color: Color; - time: number; - scaleX: number; - scaleY: number; - x: number; - y: number; - constructor(data: SkeletonData); - updateCache(): void; - sortIkConstraint(constraint: IkConstraint): void; - sortPathConstraint(constraint: PathConstraint): void; - sortTransformConstraint(constraint: TransformConstraint): void; - sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; - sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; - sortBone(bone: Bone): void; - sortReset(bones: Array): void; - updateWorldTransform(): void; - updateWorldTransformWith(parent: Bone): void; - setToSetupPose(): void; - setBonesToSetupPose(): void; - setSlotsToSetupPose(): void; - getRootBone(): Bone; - findBone(boneName: string): Bone; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): Slot; - findSlotIndex(slotName: string): number; - setSkinByName(skinName: string): void; - setSkin(newSkin: Skin): void; - getAttachmentByName(slotName: string, attachmentName: string): Attachment; - getAttachment(slotIndex: number, attachmentName: string): Attachment; - setAttachment(slotName: string, attachmentName: string): void; - findIkConstraint(constraintName: string): IkConstraint; - findTransformConstraint(constraintName: string): TransformConstraint; - findPathConstraint(constraintName: string): PathConstraint; - getBounds(offset: Vector2, size: Vector2, temp?: Array): void; - update(delta: number): void; - } -} -declare module spine { - class SkeletonBinary { - scale: number; - attachmentLoader: AttachmentLoader; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(binary: Uint8Array): SkeletonData; - private readSkin; - private readAttachment; - private readVertices; - private readFloatArray; - private readShortArray; - private readAnimation; - } -} -declare module spine { - class SkeletonBounds { - minX: number; - minY: number; - maxX: number; - maxY: number; - boundingBoxes: BoundingBoxAttachment[]; - polygons: ArrayLike[]; - private polygonPool; - update(skeleton: Skeleton, updateAabb: boolean): void; - aabbCompute(): void; - aabbContainsPoint(x: number, y: number): boolean; - aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; - aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; - containsPoint(x: number, y: number): BoundingBoxAttachment; - containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; - intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; - intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; - getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; - getWidth(): number; - getHeight(): number; - } -} -declare module spine { - class SkeletonClipping { - private triangulator; - private clippingPolygon; - private clipOutput; - clippedVertices: number[]; - clippedTriangles: number[]; - private scratch; - private clipAttachment; - private clippingPolygons; - clipStart(slot: Slot, clip: ClippingAttachment): number; - clipEndWithSlot(slot: Slot): void; - clipEnd(): void; - isClipping(): boolean; - clipTriangles(vertices: ArrayLike, verticesLength: number, triangles: ArrayLike, trianglesLength: number, uvs: ArrayLike, light: Color, dark: Color, twoColor: boolean): void; - clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array, output: Array): boolean; - static makeClockwise(polygon: ArrayLike): void; - } -} -declare module spine { - class SkeletonData { - name: string; - bones: BoneData[]; - slots: SlotData[]; - skins: Skin[]; - defaultSkin: Skin; - events: EventData[]; - animations: Animation[]; - ikConstraints: IkConstraintData[]; - transformConstraints: TransformConstraintData[]; - pathConstraints: PathConstraintData[]; - x: number; - y: number; - width: number; - height: number; - version: string; - hash: string; - fps: number; - imagesPath: string; - audioPath: string; - findBone(boneName: string): BoneData; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): SlotData; - findSlotIndex(slotName: string): number; - findSkin(skinName: string): Skin; - findEvent(eventDataName: string): EventData; - findAnimation(animationName: string): Animation; - findIkConstraint(constraintName: string): IkConstraintData; - findTransformConstraint(constraintName: string): TransformConstraintData; - findPathConstraint(constraintName: string): PathConstraintData; - } -} -declare module spine { - class SkeletonJson { - attachmentLoader: AttachmentLoader; - scale: number; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(json: string | any): SkeletonData; - readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; - readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; - readAnimation(map: any, name: string, skeletonData: SkeletonData): void; - } -} -declare module spine { - class SkinEntry { - slotIndex: number; - name: string; - attachment: Attachment; - constructor(slotIndex: number, name: string, attachment: Attachment); - } - class Skin { - name: string; - attachments: Map[]; - bones: BoneData[]; - constraints: ConstraintData[]; - constructor(name: string); - setAttachment(slotIndex: number, name: string, attachment: Attachment): void; - addSkin(skin: Skin): void; - copySkin(skin: Skin): void; - getAttachment(slotIndex: number, name: string): Attachment; - removeAttachment(slotIndex: number, name: string): void; - getAttachments(): Array; - getAttachmentsForSlot(slotIndex: number, attachments: Array): void; - clear(): void; - attachAll(skeleton: Skeleton, oldSkin: Skin): void; - } -} -declare module spine { - class Slot { - data: SlotData; - bone: Bone; - color: Color; - darkColor: Color; - attachment: Attachment; - private attachmentTime; - attachmentState: number; - deform: number[]; - constructor(data: SlotData, bone: Bone); - getSkeleton(): Skeleton; - getAttachment(): Attachment; - setAttachment(attachment: Attachment): void; - setAttachmentTime(time: number): void; - getAttachmentTime(): number; - setToSetupPose(): void; - } -} -declare module spine { - class SlotData { - index: number; - name: string; - boneData: BoneData; - color: Color; - darkColor: Color; - attachmentName: string; - blendMode: BlendMode; - constructor(index: number, name: string, boneData: BoneData); - } - enum BlendMode { - Normal = 0, - Additive = 1, - Multiply = 2, - Screen = 3 - } -} -declare module spine { - abstract class Texture { - protected _image: HTMLImageElement | ImageBitmap; - constructor(image: HTMLImageElement | ImageBitmap); - getImage(): HTMLImageElement | ImageBitmap; - abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - abstract dispose(): void; - } - enum TextureFilter { - Nearest = 9728, - Linear = 9729, - MipMap = 9987, - MipMapNearestNearest = 9984, - MipMapLinearNearest = 9985, - MipMapNearestLinear = 9986, - MipMapLinearLinear = 9987 - } - enum TextureWrap { - MirroredRepeat = 33648, - ClampToEdge = 33071, - Repeat = 10497 - } - class TextureRegion { - renderObject: any; - u: number; - v: number; - u2: number; - v2: number; - width: number; - height: number; - degrees: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - } - class FakeTexture extends Texture { - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - } -} -declare module spine { - class TextureAtlas implements Disposable { - pages: TextureAtlasPage[]; - regions: TextureAtlasRegion[]; - constructor(atlasText: string); - findRegion(name: string): TextureAtlasRegion; - setTextures(assetManager: AssetManager, pathPrefix?: string): void; - dispose(): void; - } - class TextureAtlasPage { - name: string; - minFilter: TextureFilter; - magFilter: TextureFilter; - uWrap: TextureWrap; - vWrap: TextureWrap; - texture: Texture; - width: number; - height: number; - pma: boolean; - setTexture(texture: Texture): void; - } - class TextureAtlasRegion extends TextureRegion { - page: TextureAtlasPage; - name: string; - x: number; - y: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - index: number; - degrees: number; - names: string[]; - values: number[][]; - } -} -declare module spine { - class TransformConstraint implements Updatable { - data: TransformConstraintData; - bones: Array; - target: Bone; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - temp: Vector2; - active: boolean; - constructor(data: TransformConstraintData, skeleton: Skeleton); - isActive(): boolean; - update(): void; - applyAbsoluteWorld(): void; - applyRelativeWorld(): void; - applyAbsoluteLocal(): void; - applyRelativeLocal(): void; - } -} -declare module spine { - class TransformConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - mixRotate: number; - mixX: number; - mixY: number; - mixScaleX: number; - mixScaleY: number; - mixShearY: number; - offsetRotation: number; - offsetX: number; - offsetY: number; - offsetScaleX: number; - offsetScaleY: number; - offsetShearY: number; - relative: boolean; - local: boolean; - constructor(name: string); - } -} -declare module spine { - class Triangulator { - private convexPolygons; - private convexPolygonsIndices; - private indicesArray; - private isConcaveArray; - private triangles; - private polygonPool; - private polygonIndicesPool; - triangulate(verticesArray: ArrayLike): Array; - decompose(verticesArray: Array, triangles: Array): Array>; - private static isConcave; - private static positiveArea; - private static winding; - } -} -declare module spine { - interface Updatable { - update(): void; - isActive(): boolean; - } -} -declare module spine { - interface Map { - [key: string]: T; - } - class IntSet { - array: number[]; - add(value: number): boolean; - contains(value: number): boolean; - remove(value: number): void; - clear(): void; - } - class StringSet { - entries: Map; - size: number; - add(value: string): boolean; - addAll(values: string[]): boolean; - contains(value: string): boolean; - clear(): void; - } - interface Disposable { - dispose(): void; - } - interface Restorable { - restore(): void; - } - class Color { - r: number; - g: number; - b: number; - a: number; - static WHITE: Color; - static RED: Color; - static GREEN: Color; - static BLUE: Color; - static MAGENTA: Color; - constructor(r?: number, g?: number, b?: number, a?: number); - set(r: number, g: number, b: number, a: number): this; - setFromColor(c: Color): this; - setFromString(hex: string): this; - add(r: number, g: number, b: number, a: number): this; - clamp(): this; - static rgba8888ToColor(color: Color, value: number): void; - static rgb888ToColor(color: Color, value: number): void; - static fromString(hex: string): Color; - } - class MathUtils { - static PI: number; - static PI2: number; - static radiansToDegrees: number; - static radDeg: number; - static degreesToRadians: number; - static degRad: number; - static clamp(value: number, min: number, max: number): number; - static cosDeg(degrees: number): number; - static sinDeg(degrees: number): number; - static signum(value: number): number; - static toInt(x: number): number; - static cbrt(x: number): number; - static randomTriangular(min: number, max: number): number; - static randomTriangularWith(min: number, max: number, mode: number): number; - } - abstract class Interpolation { - protected abstract applyInternal(a: number): number; - apply(start: number, end: number, a: number): number; - } - class Pow extends Interpolation { - protected power: number; - constructor(power: number); - applyInternal(a: number): number; - } - class PowOut extends Pow { - constructor(power: number); - applyInternal(a: number): number; - } - class Utils { - static SUPPORTS_TYPED_ARRAYS: boolean; - static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; - static arrayFill(array: ArrayLike, fromIndex: number, toIndex: number, value: T): void; - static setArraySize(array: Array, size: number, value?: any): Array; - static ensureArrayCapacity(array: Array, size: number, value?: any): Array; - static newArray(size: number, defaultValue: T): Array; - static newFloatArray(size: number): ArrayLike; - static newShortArray(size: number): ArrayLike; - static toFloatArray(array: Array): number[] | Float32Array; - static toSinglePrecision(value: number): number; - static webkit602BugfixHelper(alpha: number, blend: MixBlend): void; - static contains(array: Array, element: T, identity?: boolean): boolean; - static enumValue(type: any, name: string): any; - } - class DebugUtils { - static logBones(skeleton: Skeleton): void; - } - class Pool { - private items; - private instantiator; - constructor(instantiator: () => T); - obtain(): T; - free(item: T): void; - freeAll(items: ArrayLike): void; - clear(): void; - } - class Vector2 { - x: number; - y: number; - constructor(x?: number, y?: number); - set(x: number, y: number): Vector2; - length(): number; - normalize(): this; - } - class TimeKeeper { - maxDelta: number; - framesPerSecond: number; - delta: number; - totalTime: number; - private lastTime; - private frameCount; - private frameTime; - update(): void; - } - interface ArrayLike { - length: number; - [n: number]: T; - } - class WindowedMean { - values: Array; - addedValues: number; - lastValue: number; - mean: number; - dirty: boolean; - constructor(windowSize?: number); - hasEnoughData(): boolean; - addValue(value: number): void; - getMean(): number; - } -} -declare module spine { - interface VertexEffect { - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -interface Math { - fround(n: number): number; -} -declare module spine { - abstract class Attachment { - name: string; - constructor(name: string); - abstract copy(): Attachment; - } - abstract class VertexAttachment extends Attachment { - private static nextID; - id: number; - bones: Array; - vertices: ArrayLike; - worldVerticesLength: number; - deformAttachment: VertexAttachment; - constructor(name: string); - computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number, stride: number): void; - copyTo(attachment: VertexAttachment): void; - } -} -declare module spine { - interface AttachmentLoader { - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - class BoundingBoxAttachment extends VertexAttachment { - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class ClippingAttachment extends VertexAttachment { - endSlot: SlotData; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class MeshAttachment extends VertexAttachment { - region: TextureRegion; - path: string; - regionUVs: ArrayLike; - uvs: ArrayLike; - triangles: Array; - color: Color; - width: number; - height: number; - hullLength: number; - edges: Array; - private parentMesh; - tempColor: Color; - constructor(name: string); - updateUVs(): void; - getParentMesh(): MeshAttachment; - setParentMesh(parentMesh: MeshAttachment): void; - copy(): Attachment; - newLinkedMesh(): MeshAttachment; - } -} -declare module spine { - class PathAttachment extends VertexAttachment { - lengths: Array; - closed: boolean; - constantSpeed: boolean; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class PointAttachment extends VertexAttachment { - x: number; - y: number; - rotation: number; - color: Color; - constructor(name: string); - computeWorldPosition(bone: Bone, point: Vector2): Vector2; - computeWorldRotation(bone: Bone): number; - copy(): Attachment; - } -} -declare module spine { - class RegionAttachment extends Attachment { - x: number; - y: number; - scaleX: number; - scaleY: number; - rotation: number; - width: number; - height: number; - color: Color; - path: string; - rendererObject: any; - region: TextureRegion; - offset: ArrayLike; - uvs: ArrayLike; - tempColor: Color; - constructor(name: string); - updateOffset(): void; - setRegion(region: TextureRegion): void; - computeWorldVertices(bone: Bone, worldVertices: ArrayLike, offset: number, stride: number): void; - copy(): Attachment; - static X1: number; - static Y1: number; - static C1R: number; - static C1G: number; - static C1B: number; - static C1A: number; - static U1: number; - static V1: number; - static X2: number; - static Y2: number; - static C2R: number; - static C2G: number; - static C2B: number; - static C2A: number; - static U2: number; - static V2: number; - static X3: number; - static Y3: number; - static C3R: number; - static C3G: number; - static C3B: number; - static C3A: number; - static U3: number; - static V3: number; - static X4: number; - static Y4: number; - static C4R: number; - static C4G: number; - static C4B: number; - static C4A: number; - static U4: number; - static V4: number; - } -} -declare module spine { - class JitterEffect implements VertexEffect { - jitterX: number; - jitterY: number; - constructor(jitterX: number, jitterY: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine { - class SwirlEffect implements VertexEffect { - static interpolation: PowOut; - centerX: number; - centerY: number; - radius: number; - angle: number; - private worldX; - private worldY; - constructor(radius: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine.webgl { - class AssetManager extends spine.AssetManager { - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, pathPrefix?: string, downloader?: Downloader); - } -} -declare module spine.webgl { - class OrthoCamera { - position: Vector3; - direction: Vector3; - up: Vector3; - near: number; - far: number; - zoom: number; - viewportWidth: number; - viewportHeight: number; - projectionView: Matrix4; - inverseProjectionView: Matrix4; - projection: Matrix4; - view: Matrix4; - constructor(viewportWidth: number, viewportHeight: number); - update(): void; - screenToWorld(screenCoords: Vector3, screenWidth: number, screenHeight: number): Vector3; - worldToScreen(worldCoords: Vector3, screenWidth: number, screenHeight: number): Vector3; - setViewport(viewportWidth: number, viewportHeight: number): void; - } -} -declare module spine.webgl { - class GLTexture extends Texture implements Disposable, Restorable { - context: ManagedWebGLRenderingContext; - private texture; - private boundUnit; - private useMipMaps; - static DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL: boolean; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, image: HTMLImageElement | ImageBitmap, useMipMaps?: boolean); - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - static validateMagFilter(magFilter: TextureFilter): TextureFilter.Nearest | TextureFilter.Linear; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - update(useMipMaps: boolean): void; - restore(): void; - bind(unit?: number): void; - unbind(): void; - dispose(): void; - } -} -declare module spine.webgl { - class Input { - element: HTMLElement; - lastX: number; - lastY: number; - buttonDown: boolean; - currTouch: Touch; - private listeners; - touchesPool: Pool; - constructor(element: HTMLElement); - private setupCallbacks; - addListener(listener: InputListener): void; - removeListener(listener: InputListener): void; - } - class Touch { - identifier: number; - x: number; - y: number; - constructor(identifier: number, x: number, y: number); - } - interface InputListener { - down(x: number, y: number): void; - up(x: number, y: number): void; - moved(x: number, y: number): void; - dragged(x: number, y: number): void; - } -} -declare module spine.webgl { - class LoadingScreen { - private renderer; - private logo; - private spinner; - private angle; - private fadeOut; - private fadeIn; - private timeKeeper; - backgroundColor: Color; - private tempColor; - constructor(renderer: SceneRenderer); - draw(complete?: boolean): void; - } -} -declare module spine.webgl { - const M00 = 0; - const M01 = 4; - const M02 = 8; - const M03 = 12; - const M10 = 1; - const M11 = 5; - const M12 = 9; - const M13 = 13; - const M20 = 2; - const M21 = 6; - const M22 = 10; - const M23 = 14; - const M30 = 3; - const M31 = 7; - const M32 = 11; - const M33 = 15; - class Matrix4 { - temp: Float32Array; - values: Float32Array; - private static xAxis; - private static yAxis; - private static zAxis; - private static tmpMatrix; - constructor(); - set(values: ArrayLike): Matrix4; - transpose(): Matrix4; - identity(): Matrix4; - invert(): Matrix4; - determinant(): number; - translate(x: number, y: number, z: number): Matrix4; - copy(): Matrix4; - projection(near: number, far: number, fovy: number, aspectRatio: number): Matrix4; - ortho2d(x: number, y: number, width: number, height: number): Matrix4; - ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; - multiply(matrix: Matrix4): Matrix4; - multiplyLeft(matrix: Matrix4): Matrix4; - lookAt(position: Vector3, direction: Vector3, up: Vector3): this; - static initTemps(): void; - } -} -declare module spine.webgl { - class Mesh implements Disposable, Restorable { - private attributes; - private context; - private vertices; - private verticesBuffer; - private verticesLength; - private dirtyVertices; - private indices; - private indicesBuffer; - private indicesLength; - private dirtyIndices; - private elementsPerVertex; - getAttributes(): VertexAttribute[]; - maxVertices(): number; - numVertices(): number; - setVerticesLength(length: number): void; - getVertices(): Float32Array; - maxIndices(): number; - numIndices(): number; - setIndicesLength(length: number): void; - getIndices(): Uint16Array; - getVertexSizeInFloats(): number; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, attributes: VertexAttribute[], maxVertices: number, maxIndices: number); - setVertices(vertices: Array): void; - setIndices(indices: Array): void; - draw(shader: Shader, primitiveType: number): void; - drawWithOffset(shader: Shader, primitiveType: number, offset: number, count: number): void; - bind(shader: Shader): void; - unbind(shader: Shader): void; - private update; - restore(): void; - dispose(): void; - } - class VertexAttribute { - name: string; - type: VertexAttributeType; - numElements: number; - constructor(name: string, type: VertexAttributeType, numElements: number); - } - class Position2Attribute extends VertexAttribute { - constructor(); - } - class Position3Attribute extends VertexAttribute { - constructor(); - } - class TexCoordAttribute extends VertexAttribute { - constructor(unit?: number); - } - class ColorAttribute extends VertexAttribute { - constructor(); - } - class Color2Attribute extends VertexAttribute { - constructor(); - } - enum VertexAttributeType { - Float = 0 - } -} -declare module spine.webgl { - class PolygonBatcher implements Disposable { - private context; - private drawCalls; - private isDrawing; - private mesh; - private shader; - private lastTexture; - private verticesLength; - private indicesLength; - private srcColorBlend; - private srcAlphaBlend; - private dstBlend; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean, maxVertices?: number); - begin(shader: Shader): void; - setBlendMode(srcColorBlend: number, srcAlphaBlend: number, dstBlend: number): void; - draw(texture: GLTexture, vertices: ArrayLike, indices: Array): void; - flush(): void; - end(): void; - getDrawCalls(): number; - dispose(): void; - } -} -declare module spine.webgl { - class SceneRenderer implements Disposable { - context: ManagedWebGLRenderingContext; - canvas: HTMLCanvasElement; - camera: OrthoCamera; - batcher: PolygonBatcher; - private twoColorTint; - private batcherShader; - private shapes; - private shapesShader; - private activeRenderer; - skeletonRenderer: SkeletonRenderer; - skeletonDebugRenderer: SkeletonDebugRenderer; - constructor(canvas: HTMLCanvasElement, context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean); - begin(): void; - drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean, slotRangeStart?: number, slotRangeEnd?: number): void; - drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean, ignoredBones?: Array): void; - drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void; - drawTextureUV(texture: GLTexture, x: number, y: number, width: number, height: number, u: number, v: number, u2: number, v2: number, color?: Color): void; - drawTextureRotated(texture: GLTexture, x: number, y: number, width: number, height: number, pivotX: number, pivotY: number, angle: number, color?: Color): void; - drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color): void; - line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void; - triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; - quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; - rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; - rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; - polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; - circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; - curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; - end(): void; - resize(resizeMode: ResizeMode): void; - private enableRenderer; - dispose(): void; - } - enum ResizeMode { - Stretch = 0, - Expand = 1, - Fit = 2 - } -} -declare module spine.webgl { - class Shader implements Disposable, Restorable { - private vertexShader; - private fragmentShader; - static MVP_MATRIX: string; - static POSITION: string; - static COLOR: string; - static COLOR2: string; - static TEXCOORDS: string; - static SAMPLER: string; - private context; - private vs; - private vsSource; - private fs; - private fsSource; - private program; - private tmp2x2; - private tmp3x3; - private tmp4x4; - getProgram(): WebGLProgram; - getVertexShader(): string; - getFragmentShader(): string; - getVertexShaderSource(): string; - getFragmentSource(): string; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, vertexShader: string, fragmentShader: string); - private compile; - private compileShader; - private compileProgram; - restore(): void; - bind(): void; - unbind(): void; - setUniformi(uniform: string, value: number): void; - setUniformf(uniform: string, value: number): void; - setUniform2f(uniform: string, value: number, value2: number): void; - setUniform3f(uniform: string, value: number, value2: number, value3: number): void; - setUniform4f(uniform: string, value: number, value2: number, value3: number, value4: number): void; - setUniform2x2f(uniform: string, value: ArrayLike): void; - setUniform3x3f(uniform: string, value: ArrayLike): void; - setUniform4x4f(uniform: string, value: ArrayLike): void; - getUniformLocation(uniform: string): WebGLUniformLocation; - getAttributeLocation(attribute: string): number; - dispose(): void; - static newColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - static newTwoColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - static newColored(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - } -} -declare module spine.webgl { - class ShapeRenderer implements Disposable { - private context; - private isDrawing; - private mesh; - private shapeType; - private color; - private shader; - private vertexIndex; - private tmp; - private srcColorBlend; - private srcAlphaBlend; - private dstBlend; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, maxVertices?: number); - begin(shader: Shader): void; - setBlendMode(srcColorBlend: number, srcAlphaBlend: number, dstBlend: number): void; - setColor(color: Color): void; - setColorWith(r: number, g: number, b: number, a: number): void; - point(x: number, y: number, color?: Color): void; - line(x: number, y: number, x2: number, y2: number, color?: Color): void; - triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; - quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; - rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; - rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; - x(x: number, y: number, size: number): void; - polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; - circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; - curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; - private vertex; - end(): void; - private flush; - private check; - dispose(): void; - } - enum ShapeType { - Point = 0, - Line = 1, - Filled = 4 - } -} -declare module spine.webgl { - class SkeletonDebugRenderer implements Disposable { - boneLineColor: Color; - boneOriginColor: Color; - attachmentLineColor: Color; - triangleLineColor: Color; - pathColor: Color; - clipColor: Color; - aabbColor: Color; - drawBones: boolean; - drawRegionAttachments: boolean; - drawBoundingBoxes: boolean; - drawMeshHull: boolean; - drawMeshTriangles: boolean; - drawPaths: boolean; - drawSkeletonXY: boolean; - drawClipping: boolean; - premultipliedAlpha: boolean; - scale: number; - boneWidth: number; - private context; - private bounds; - private temp; - private vertices; - private static LIGHT_GRAY; - private static GREEN; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext); - draw(shapes: ShapeRenderer, skeleton: Skeleton, ignoredBones?: Array): void; - dispose(): void; - } -} -declare module spine.webgl { - class SkeletonRenderer { - static QUAD_TRIANGLES: number[]; - premultipliedAlpha: boolean; - vertexEffect: VertexEffect; - private tempColor; - private tempColor2; - private vertices; - private vertexSize; - private twoColorTint; - private renderable; - private clipper; - private temp; - private temp2; - private temp3; - private temp4; - constructor(context: ManagedWebGLRenderingContext, twoColorTint?: boolean); - draw(batcher: PolygonBatcher, skeleton: Skeleton, slotRangeStart?: number, slotRangeEnd?: number): void; - } -} -declare module spine.webgl { - class Vector3 { - x: number; - y: number; - z: number; - constructor(x?: number, y?: number, z?: number); - setFrom(v: Vector3): Vector3; - set(x: number, y: number, z: number): Vector3; - add(v: Vector3): Vector3; - sub(v: Vector3): Vector3; - scale(s: number): Vector3; - normalize(): Vector3; - cross(v: Vector3): Vector3; - multiply(matrix: Matrix4): Vector3; - project(matrix: Matrix4): Vector3; - dot(v: Vector3): number; - length(): number; - distance(v: Vector3): number; - } -} -declare module spine.webgl { - class ManagedWebGLRenderingContext { - canvas: HTMLCanvasElement | OffscreenCanvas; - gl: WebGLRenderingContext; - private restorables; - constructor(canvasOrContext: HTMLCanvasElement | WebGLRenderingContext | EventTarget, contextConfig?: any); - private setupCanvas; - addRestorable(restorable: Restorable): void; - removeRestorable(restorable: Restorable): void; - } - class WebGLBlendModeConverter { - static getDestGLBlendMode(blendMode: BlendMode): 1 | 771; - static getSourceColorGLBlendMode(blendMode: BlendMode, premultipliedAlpha?: boolean): 1 | 770 | 774; - static getSourceAlphaGLBlendMode(blendMode: BlendMode): 1 | 771 | 769; - } -} diff --git a/spine-ts/build/spine-webgl.js b/spine-ts/build/spine-webgl.js deleted file mode 100644 index 0ad4fbda2..000000000 --- a/spine-ts/build/spine-webgl.js +++ /dev/null @@ -1,11623 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var spine; -(function (spine) { - var Animation = (function () { - function Animation(name, timelines, duration) { - if (!name) - throw new Error("name cannot be null."); - this.name = name; - this.setTimelines(timelines); - this.duration = duration; - } - Animation.prototype.setTimelines = function (timelines) { - if (!timelines) - throw new Error("timelines cannot be null."); - this.timelines = timelines; - this.timelineIds = new spine.StringSet(); - for (var i = 0; i < timelines.length; i++) - this.timelineIds.addAll(timelines[i].getPropertyIds()); - }; - Animation.prototype.hasTimeline = function (ids) { - for (var i = 0; i < ids.length; i++) - if (this.timelineIds.contains(ids[i])) - return true; - return false; - }; - Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - if (loop && this.duration != 0) { - time %= this.duration; - if (lastTime > 0) - lastTime %= this.duration; - } - var timelines = this.timelines; - for (var i = 0, n = timelines.length; i < n; i++) - timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction); - }; - return Animation; - }()); - spine.Animation = Animation; - var MixBlend; - (function (MixBlend) { - MixBlend[MixBlend["setup"] = 0] = "setup"; - MixBlend[MixBlend["first"] = 1] = "first"; - MixBlend[MixBlend["replace"] = 2] = "replace"; - MixBlend[MixBlend["add"] = 3] = "add"; - })(MixBlend = spine.MixBlend || (spine.MixBlend = {})); - var MixDirection; - (function (MixDirection) { - MixDirection[MixDirection["mixIn"] = 0] = "mixIn"; - MixDirection[MixDirection["mixOut"] = 1] = "mixOut"; - })(MixDirection = spine.MixDirection || (spine.MixDirection = {})); - var Property = { - rotate: 0, - x: 1, - y: 2, - scaleX: 3, - scaleY: 4, - shearX: 5, - shearY: 6, - rgb: 7, - alpha: 8, - rgb2: 9, - attachment: 10, - deform: 11, - event: 12, - drawOrder: 13, - ikConstraint: 14, - transformConstraint: 15, - pathConstraintPosition: 16, - pathConstraintSpacing: 17, - pathConstraintMix: 18 - }; - var Timeline = (function () { - function Timeline(frameCount, propertyIds) { - this.propertyIds = propertyIds; - this.frames = spine.Utils.newFloatArray(frameCount * this.getFrameEntries()); - } - Timeline.prototype.getPropertyIds = function () { - return this.propertyIds; - }; - Timeline.prototype.getFrameEntries = function () { - return 1; - }; - Timeline.prototype.getFrameCount = function () { - return this.frames.length / this.getFrameEntries(); - }; - Timeline.prototype.getDuration = function () { - return this.frames[this.frames.length - this.getFrameEntries()]; - }; - Timeline.search1 = function (frames, time) { - var n = frames.length; - for (var i = 1; i < n; i++) - if (frames[i] > time) - return i - 1; - return n - 1; - }; - Timeline.search = function (frames, time, step) { - var n = frames.length; - for (var i = step; i < n; i += step) - if (frames[i] > time) - return i - step; - return n - step; - }; - return Timeline; - }()); - spine.Timeline = Timeline; - var CurveTimeline = (function (_super) { - __extends(CurveTimeline, _super); - function CurveTimeline(frameCount, bezierCount, propertyIds) { - var _this = _super.call(this, frameCount, propertyIds) || this; - _this.curves = spine.Utils.newFloatArray(frameCount + bezierCount * 18); - _this.curves[frameCount - 1] = 1; - return _this; - } - CurveTimeline.prototype.setLinear = function (frame) { - this.curves[frame] = 0; - }; - CurveTimeline.prototype.setStepped = function (frame) { - this.curves[frame] = 1; - }; - CurveTimeline.prototype.shrink = function (bezierCount) { - var size = this.getFrameCount() + bezierCount * 18; - if (this.curves.length > size) { - var newCurves = spine.Utils.newFloatArray(size); - spine.Utils.arrayCopy(this.curves, 0, newCurves, 0, size); - this.curves = newCurves; - } - }; - CurveTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { - var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; - if (value == 0) - curves[frame] = 2 + i; - var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = (value1 - cy1 * 2 + cy2) * 0.03; - var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = ((cy1 - cy2) * 3 - value1 + value2) * 0.006; - var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; - var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = (cy1 - value1) * 0.3 + tmpy + dddy * 0.16666667; - var x = time1 + dx, y = value1 + dy; - for (var n = i + 18; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dx += ddx; - dy += ddy; - ddx += dddx; - ddy += dddy; - x += dx; - y += dy; - } - }; - CurveTimeline.prototype.getBezierValue = function (time, frameIndex, valueOffset, i) { - var curves = this.curves; - if (curves[i] > time) { - var x_1 = this.frames[frameIndex], y_1 = this.frames[frameIndex + valueOffset]; - return y_1 + (time - x_1) / (curves[i] - x_1) * (curves[i + 1] - y_1); - } - var n = i + 18; - for (i += 2; i < n; i += 2) { - if (curves[i] >= time) { - var x_2 = curves[i - 2], y_2 = curves[i - 1]; - return y_2 + (time - x_2) / (curves[i] - x_2) * (curves[i + 1] - y_2); - } - } - frameIndex += this.getFrameEntries(); - var x = curves[n - 2], y = curves[n - 1]; - return y + (time - x) / (this.frames[frameIndex] - x) * (this.frames[frameIndex + valueOffset] - y); - }; - return CurveTimeline; - }(Timeline)); - spine.CurveTimeline = CurveTimeline; - var CurveTimeline1 = (function (_super) { - __extends(CurveTimeline1, _super); - function CurveTimeline1(frameCount, bezierCount, propertyId) { - return _super.call(this, frameCount, bezierCount, [propertyId]) || this; - } - CurveTimeline1.prototype.getFrameEntries = function () { - return 2; - }; - CurveTimeline1.prototype.setFrame = function (frame, time, value) { - frame <<= 1; - this.frames[frame] = time; - this.frames[frame + 1] = value; - }; - CurveTimeline1.prototype.getCurveValue = function (time) { - var frames = this.frames; - var i = frames.length - 2; - for (var ii = 2; ii <= i; ii += 2) { - if (frames[ii] > time) { - i = ii - 2; - break; - } - } - var curveType = this.curves[i >> 1]; - switch (curveType) { - case 0: - var before = frames[i], value = frames[i + 1]; - return value + (time - before) / (frames[i + 2] - before) * (frames[i + 2 + 1] - value); - case 1: - return frames[i + 1]; - } - return this.getBezierValue(time, i, 1, curveType - 2); - }; - return CurveTimeline1; - }(CurveTimeline)); - spine.CurveTimeline1 = CurveTimeline1; - var CurveTimeline2 = (function (_super) { - __extends(CurveTimeline2, _super); - function CurveTimeline2(frameCount, bezierCount, propertyId1, propertyId2) { - return _super.call(this, frameCount, bezierCount, [propertyId1, propertyId2]) || this; - } - CurveTimeline2.prototype.getFrameEntries = function () { - return 3; - }; - CurveTimeline2.prototype.setFrame = function (frame, time, value1, value2) { - frame *= 3; - this.frames[frame] = time; - this.frames[frame + 1] = value1; - this.frames[frame + 2] = value2; - }; - return CurveTimeline2; - }(CurveTimeline)); - spine.CurveTimeline2 = CurveTimeline2; - var RotateTimeline = (function (_super) { - __extends(RotateTimeline, _super); - function RotateTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.rotate + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation; - return; - case MixBlend.first: - bone.rotation += (bone.data.rotation - bone.rotation) * alpha; - } - return; - } - var r = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation + r * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - r += bone.data.rotation - bone.rotation; - case MixBlend.add: - bone.rotation += r * alpha; - } - }; - return RotateTimeline; - }(CurveTimeline1)); - spine.RotateTimeline = RotateTimeline; - var TranslateTimeline = (function (_super) { - __extends(TranslateTimeline, _super); - function TranslateTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex, Property.y + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x; - bone.y = bone.data.y; - return; - case MixBlend.first: - bone.x += (bone.data.x - bone.x) * alpha; - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x + x * alpha; - bone.y = bone.data.y + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.x += (bone.data.x + x - bone.x) * alpha; - bone.y += (bone.data.y + y - bone.y) * alpha; - break; - case MixBlend.add: - bone.x += x * alpha; - bone.y += y * alpha; - } - }; - return TranslateTimeline; - }(CurveTimeline2)); - spine.TranslateTimeline = TranslateTimeline; - var TranslateXTimeline = (function (_super) { - __extends(TranslateXTimeline, _super); - function TranslateXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.x + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x; - return; - case MixBlend.first: - bone.x += (bone.data.x - bone.x) * alpha; - } - return; - } - var x = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x + x * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.x += (bone.data.x + x - bone.x) * alpha; - break; - case MixBlend.add: - bone.x += x * alpha; - } - }; - return TranslateXTimeline; - }(CurveTimeline1)); - spine.TranslateXTimeline = TranslateXTimeline; - var TranslateYTimeline = (function (_super) { - __extends(TranslateYTimeline, _super); - function TranslateYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.y + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - TranslateYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.y = bone.data.y; - return; - case MixBlend.first: - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var y = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.y = bone.data.y + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.y += (bone.data.y + y - bone.y) * alpha; - break; - case MixBlend.add: - bone.y += y * alpha; - } - }; - return TranslateYTimeline; - }(CurveTimeline1)); - spine.TranslateYTimeline = TranslateYTimeline; - var ScaleTimeline = (function (_super) { - __extends(ScaleTimeline, _super); - function ScaleTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex, Property.scaleY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleX = bone.data.scaleX; - bone.scaleY = bone.data.scaleY; - return; - case MixBlend.first: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var x, y; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - x *= bone.data.scaleX; - y *= bone.data.scaleY; - if (alpha == 1) { - if (blend == MixBlend.add) { - bone.scaleX += x - bone.data.scaleX; - bone.scaleY += y - bone.data.scaleY; - } - else { - bone.scaleX = x; - bone.scaleY = y; - } - } - else { - var bx = 0, by = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - bx = bone.data.scaleX; - by = bone.data.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.add: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.add: - bx = spine.MathUtils.signum(x); - by = spine.MathUtils.signum(y); - bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; - bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; - } - } - } - }; - return ScaleTimeline; - }(CurveTimeline2)); - spine.ScaleTimeline = ScaleTimeline; - var ScaleXTimeline = (function (_super) { - __extends(ScaleXTimeline, _super); - function ScaleXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleX + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleX = bone.data.scaleX; - return; - case MixBlend.first: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - } - return; - } - var x = this.getCurveValue(time) * bone.data.scaleX; - if (alpha == 1) { - if (blend == MixBlend.add) - bone.scaleX += x - bone.data.scaleX; - else - bone.scaleX = x; - } - else { - var bx = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - bx = bone.data.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = bone.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - break; - case MixBlend.add: - bx = bone.scaleX; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); - bone.scaleX = bx + (x - bx) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); - bone.scaleX = bx + (x - bx) * alpha; - break; - case MixBlend.add: - bx = spine.MathUtils.signum(x); - bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; - } - } - } - }; - return ScaleXTimeline; - }(CurveTimeline1)); - spine.ScaleXTimeline = ScaleXTimeline; - var ScaleYTimeline = (function (_super) { - __extends(ScaleYTimeline, _super); - function ScaleYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.scaleY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ScaleYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleY = bone.data.scaleY; - return; - case MixBlend.first: - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var y = this.getCurveValue(time) * bone.data.scaleY; - if (alpha == 1) { - if (blend == MixBlend.add) - bone.scaleY += y - bone.data.scaleY; - else - bone.scaleY = y; - } - else { - var by = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - by = bone.data.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - by = bone.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.add: - by = bone.scaleY; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.add: - by = spine.MathUtils.signum(y); - bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; - } - } - } - }; - return ScaleYTimeline; - }(CurveTimeline1)); - spine.ScaleYTimeline = ScaleYTimeline; - var ShearTimeline = (function (_super) { - __extends(ShearTimeline, _super); - function ShearTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex, Property.shearY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX; - bone.shearY = bone.data.shearY; - return; - case MixBlend.first: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var x = 0, y = 0; - var i = Timeline.search(frames, time, 3); - var curveType = this.curves[i / 3]; - switch (curveType) { - case 0: - var before = frames[i]; - x = frames[i + 1]; - y = frames[i + 2]; - var t = (time - before) / (frames[i + 3] - before); - x += (frames[i + 3 + 1] - x) * t; - y += (frames[i + 3 + 2] - y) * t; - break; - case 1: - x = frames[i + 1]; - y = frames[i + 2]; - break; - default: - x = this.getBezierValue(time, i, 1, curveType - 2); - y = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX + x * alpha; - bone.shearY = bone.data.shearY + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - break; - case MixBlend.add: - bone.shearX += x * alpha; - bone.shearY += y * alpha; - } - }; - return ShearTimeline; - }(CurveTimeline2)); - spine.ShearTimeline = ShearTimeline; - var ShearXTimeline = (function (_super) { - __extends(ShearXTimeline, _super); - function ShearXTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearX + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearXTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX; - return; - case MixBlend.first: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - } - return; - } - var x = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX + x * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - break; - case MixBlend.add: - bone.shearX += x * alpha; - } - }; - return ShearXTimeline; - }(CurveTimeline1)); - spine.ShearXTimeline = ShearXTimeline; - var ShearYTimeline = (function (_super) { - __extends(ShearYTimeline, _super); - function ShearYTimeline(frameCount, bezierCount, boneIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.shearY + "|" + boneIndex) || this; - _this.boneIndex = 0; - _this.boneIndex = boneIndex; - return _this; - } - ShearYTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearY = bone.data.shearY; - return; - case MixBlend.first: - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var y = this.getCurveValue(time); - switch (blend) { - case MixBlend.setup: - bone.shearY = bone.data.shearY + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - break; - case MixBlend.add: - bone.shearY += y * alpha; - } - }; - return ShearYTimeline; - }(CurveTimeline1)); - spine.ShearYTimeline = ShearYTimeline; - var RGBATimeline = (function (_super) { - __extends(RGBATimeline, _super); - function RGBATimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.alpha + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBATimeline.prototype.getFrameEntries = function () { - return 5; - }; - RGBATimeline.prototype.setFrame = function (frame, time, r, g, b, a) { - frame *= 5; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; - }; - RGBATimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var color = slot.color; - if (time < frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.setFromColor(setup); - return; - case MixBlend.first: - color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha); - } - return; - } - var r = 0, g = 0, b = 0, a = 0; - var i = Timeline.search(frames, time, 5); - var curveType = this.curves[i / 5]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - var t = (time - before) / (frames[i + 5] - before); - r += (frames[i + 5 + 1] - r) * t; - g += (frames[i + 5 + 2] - g) * t; - b += (frames[i + 5 + 3] - b) * t; - a += (frames[i + 5 + 4] - a) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - } - if (alpha == 1) - color.set(r, g, b, a); - else { - if (blend == MixBlend.setup) - color.setFromColor(slot.data.color); - color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); - } - }; - return RGBATimeline; - }(CurveTimeline)); - spine.RGBATimeline = RGBATimeline; - var RGBTimeline = (function (_super) { - __extends(RGBTimeline, _super); - function RGBTimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBTimeline.prototype.getFrameEntries = function () { - return 4; - }; - RGBTimeline.prototype.setFrame = function (frame, time, r, g, b) { - frame <<= 2; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - }; - RGBTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var color = slot.color; - if (time < frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.r = setup.r; - color.g = setup.g; - color.b = setup.b; - return; - case MixBlend.first: - color.r += (setup.r - color.r) * alpha; - color.g += (setup.g - color.g) * alpha; - color.b += (setup.b - color.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0; - var i = Timeline.search(frames, time, 4); - var curveType = this.curves[i >> 2]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - r += (frames[i + 4 + 1] - r) * t; - g += (frames[i + 4 + 2] - g) * t; - b += (frames[i + 4 + 3] - b) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - } - if (alpha == 1) { - color.r = r; - color.g = g; - color.b = b; - } - else { - if (blend == MixBlend.setup) { - var setup = slot.data.color; - color.r = setup.r; - color.g = setup.g; - color.b = setup.b; - } - color.r += (r - color.r) * alpha; - color.g += (g - color.g) * alpha; - color.b += (b - color.b) * alpha; - } - }; - return RGBTimeline; - }(CurveTimeline)); - spine.RGBTimeline = RGBTimeline; - var AlphaTimeline = (function (_super) { - __extends(AlphaTimeline, _super); - function AlphaTimeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.alpha + "|" + slotIndex) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - AlphaTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var color = slot.color; - if (time < this.frames[0]) { - var setup = slot.data.color; - switch (blend) { - case MixBlend.setup: - color.a = setup.a; - return; - case MixBlend.first: - color.a += (setup.a - color.a) * alpha; - } - return; - } - var a = this.getCurveValue(time); - if (alpha == 1) - color.a = a; - else { - if (blend == MixBlend.setup) - color.a = slot.data.color.a; - color.a += (a - color.a) * alpha; - } - }; - return AlphaTimeline; - }(CurveTimeline1)); - spine.AlphaTimeline = AlphaTimeline; - var RGBA2Timeline = (function (_super) { - __extends(RGBA2Timeline, _super); - function RGBA2Timeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.alpha + "|" + slotIndex, - Property.rgb2 + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGBA2Timeline.prototype.getFrameEntries = function () { - return 8; - }; - RGBA2Timeline.prototype.setFrame = function (frame, time, r, g, b, a, r2, g2, b2) { - frame <<= 3; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = a; - this.frames[frame + 5] = r2; - this.frames[frame + 6] = g2; - this.frames[frame + 7] = b2; - }; - RGBA2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var light = slot.color, dark = slot.darkColor; - if (time < frames[0]) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - switch (blend) { - case MixBlend.setup: - light.setFromColor(setupLight); - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - return; - case MixBlend.first: - light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha); - dark.r += (setupDark.r - dark.r) * alpha; - dark.g += (setupDark.g - dark.g) * alpha; - dark.b += (setupDark.b - dark.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 8); - var curveType = this.curves[i >> 3]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; - var t = (time - before) / (frames[i + 8] - before); - r += (frames[i + 8 + 1] - r) * t; - g += (frames[i + 8 + 2] - g) * t; - b += (frames[i + 8 + 3] - b) * t; - a += (frames[i + 8 + 4] - a) * t; - r2 += (frames[i + 8 + 5] - r2) * t; - g2 += (frames[i + 8 + 6] - g2) * t; - b2 += (frames[i + 8 + 7] - b2) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - a = frames[i + 4]; - r2 = frames[i + 5]; - g2 = frames[i + 6]; - b2 = frames[i + 7]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - a = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - r2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - g2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - b2 = this.getBezierValue(time, i, 7, curveType + 18 * 6 - 2); - } - if (alpha == 1) { - light.set(r, g, b, a); - dark.r = r2; - dark.g = g2; - dark.b = b2; - } - else { - if (blend == MixBlend.setup) { - light.setFromColor(slot.data.color); - var setupDark = slot.data.darkColor; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - } - light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); - dark.r += (r2 - dark.r) * alpha; - dark.g += (g2 - dark.g) * alpha; - dark.b += (b2 - dark.b) * alpha; - } - }; - return RGBA2Timeline; - }(CurveTimeline)); - spine.RGBA2Timeline = RGBA2Timeline; - var RGB2Timeline = (function (_super) { - __extends(RGB2Timeline, _super); - function RGB2Timeline(frameCount, bezierCount, slotIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.rgb + "|" + slotIndex, - Property.rgb2 + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - return _this; - } - RGB2Timeline.prototype.getFrameEntries = function () { - return 7; - }; - RGB2Timeline.prototype.setFrame = function (frame, time, r, g, b, r2, g2, b2) { - frame *= 7; - this.frames[frame] = time; - this.frames[frame + 1] = r; - this.frames[frame + 2] = g; - this.frames[frame + 3] = b; - this.frames[frame + 4] = r2; - this.frames[frame + 5] = g2; - this.frames[frame + 6] = b2; - }; - RGB2Timeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - var light = slot.color, dark = slot.darkColor; - if (time < frames[0]) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - switch (blend) { - case MixBlend.setup: - light.r = setupLight.r; - light.g = setupLight.g; - light.b = setupLight.b; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - return; - case MixBlend.first: - light.r += (setupLight.r - light.r) * alpha; - light.g += (setupLight.g - light.g) * alpha; - light.b += (setupLight.b - light.b) * alpha; - dark.r += (setupDark.r - dark.r) * alpha; - dark.g += (setupDark.g - dark.g) * alpha; - dark.b += (setupDark.b - dark.b) * alpha; - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; - switch (curveType) { - case 0: - var before = frames[i]; - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - r += (frames[i + 7 + 1] - r) * t; - g += (frames[i + 7 + 2] - g) * t; - b += (frames[i + 7 + 3] - b) * t; - r2 += (frames[i + 7 + 4] - r2) * t; - g2 += (frames[i + 7 + 5] - g2) * t; - b2 += (frames[i + 7 + 6] - b2) * t; - break; - case 1: - r = frames[i + 1]; - g = frames[i + 2]; - b = frames[i + 3]; - r2 = frames[i + 4]; - g2 = frames[i + 5]; - b2 = frames[i + 6]; - break; - default: - r = this.getBezierValue(time, i, 1, curveType - 2); - g = this.getBezierValue(time, i, 2, curveType + 18 - 2); - b = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - r2 = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - g2 = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - b2 = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - } - if (alpha == 1) { - light.r = r; - light.g = g; - light.b = b; - dark.r = r2; - dark.g = g2; - dark.b = b2; - } - else { - if (blend == MixBlend.setup) { - var setupLight = slot.data.color, setupDark = slot.data.darkColor; - light.r = setupLight.r; - light.g = setupLight.g; - light.b = setupLight.b; - dark.r = setupDark.r; - dark.g = setupDark.g; - dark.b = setupDark.b; - } - light.r += (r - light.r) * alpha; - light.g += (g - light.g) * alpha; - light.b += (b - light.b) * alpha; - dark.r += (r2 - dark.r) * alpha; - dark.g += (g2 - dark.g) * alpha; - dark.b += (b2 - dark.b) * alpha; - } - }; - return RGB2Timeline; - }(CurveTimeline)); - spine.RGB2Timeline = RGB2Timeline; - var AttachmentTimeline = (function (_super) { - __extends(AttachmentTimeline, _super); - function AttachmentTimeline(frameCount, slotIndex) { - var _this = _super.call(this, frameCount, [ - Property.attachment + "|" + slotIndex - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - _this.attachmentNames = new Array(frameCount); - return _this; - } - AttachmentTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - AttachmentTimeline.prototype.setFrame = function (frame, time, attachmentName) { - this.frames[frame] = time; - this.attachmentNames[frame] = attachmentName; - }; - AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - if (time < this.frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - this.setAttachment(skeleton, slot, this.attachmentNames[Timeline.search1(this.frames, time)]); - }; - AttachmentTimeline.prototype.setAttachment = function (skeleton, slot, attachmentName) { - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); - }; - return AttachmentTimeline; - }(Timeline)); - spine.AttachmentTimeline = AttachmentTimeline; - var DeformTimeline = (function (_super) { - __extends(DeformTimeline, _super); - function DeformTimeline(frameCount, bezierCount, slotIndex, attachment) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.deform + "|" + slotIndex + "|" + attachment.id - ]) || this; - _this.slotIndex = 0; - _this.slotIndex = slotIndex; - _this.attachment = attachment; - _this.vertices = new Array(frameCount); - return _this; - } - DeformTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DeformTimeline.prototype.setFrame = function (frame, time, vertices) { - this.frames[frame] = time; - this.vertices[frame] = vertices; - }; - DeformTimeline.prototype.setBezier = function (bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2) { - var curves = this.curves; - var i = this.getFrameCount() + bezier * 18; - if (value == 0) - curves[frame] = 2 + i; - var tmpx = (time1 - cx1 * 2 + cx2) * 0.03, tmpy = cy2 * 0.03 - cy1 * 0.06; - var dddx = ((cx1 - cx2) * 3 - time1 + time2) * 0.006, dddy = (cy1 - cy2 + 0.33333333) * 0.018; - var ddx = tmpx * 2 + dddx, ddy = tmpy * 2 + dddy; - var dx = (cx1 - time1) * 0.3 + tmpx + dddx * 0.16666667, dy = cy1 * 0.3 + tmpy + dddy * 0.16666667; - var x = time1 + dx, y = dy; - for (var n = i + 18; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dx += ddx; - dy += ddy; - ddx += dddx; - ddy += dddy; - x += dx; - y += dy; - } - }; - DeformTimeline.prototype.getCurvePercent = function (time, frame) { - var curves = this.curves; - var i = curves[frame]; - switch (i) { - case 0: - var x_3 = this.frames[frame]; - return (time - x_3) / (this.frames[frame + this.getFrameEntries()] - x_3); - case 1: - return 0; - } - i -= 2; - if (curves[i] > time) { - var x_4 = this.frames[frame]; - return curves[i + 1] * (time - x_4) / (curves[i] - x_4); - } - var n = i + 18; - for (i += 2; i < n; i += 2) { - if (curves[i] >= time) { - var x_5 = curves[i - 2], y_3 = curves[i - 1]; - return y_3 + (time - x_5) / (curves[i] - x_5) * (curves[i + 1] - y_3); - } - } - var x = curves[n - 2], y = curves[n - 1]; - return y + (1 - y) * (time - x) / (this.frames[frame + this.getFrameEntries()] - x); - }; - DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var slotAttachment = slot.getAttachment(); - if (!(slotAttachment instanceof spine.VertexAttachment) || slotAttachment.deformAttachment != this.attachment) - return; - var deform = slot.deform; - if (deform.length == 0) - blend = MixBlend.setup; - var vertices = this.vertices; - var vertexCount = vertices[0].length; - var frames = this.frames; - if (time < frames[0]) { - var vertexAttachment = slotAttachment; - switch (blend) { - case MixBlend.setup: - deform.length = 0; - return; - case MixBlend.first: - if (alpha == 1) { - deform.length = 0; - return; - } - deform.length = vertexCount; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i = 0; i < vertexCount; i++) - deform[i] += (setupVertices[i] - deform[i]) * alpha; - } - else { - alpha = 1 - alpha; - for (var i = 0; i < vertexCount; i++) - deform[i] *= alpha; - } - } - return; - } - deform.length = vertexCount; - if (time >= frames[frames.length - 1]) { - var lastVertices = vertices[frames.length - 1]; - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_1 = 0; i_1 < vertexCount; i_1++) - deform[i_1] += lastVertices[i_1] - setupVertices[i_1]; - } - else { - for (var i_2 = 0; i_2 < vertexCount; i_2++) - deform[i_2] += lastVertices[i_2]; - } - } - else - spine.Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount); - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_1 = slotAttachment; - if (!vertexAttachment_1.bones) { - var setupVertices = vertexAttachment_1.vertices; - for (var i_3 = 0; i_3 < vertexCount; i_3++) { - var setup = setupVertices[i_3]; - deform[i_3] = setup + (lastVertices[i_3] - setup) * alpha; - } - } - else { - for (var i_4 = 0; i_4 < vertexCount; i_4++) - deform[i_4] = lastVertices[i_4] * alpha; - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_5 = 0; i_5 < vertexCount; i_5++) - deform[i_5] += (lastVertices[i_5] - deform[i_5]) * alpha; - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_6 = 0; i_6 < vertexCount; i_6++) - deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha; - } - else { - for (var i_7 = 0; i_7 < vertexCount; i_7++) - deform[i_7] += lastVertices[i_7] * alpha; - } - } - } - return; - } - var frame = Timeline.search1(frames, time); - var percent = this.getCurvePercent(time, frame); - var prevVertices = vertices[frame]; - var nextVertices = vertices[frame + 1]; - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_8 = 0; i_8 < vertexCount; i_8++) { - var prev = prevVertices[i_8]; - deform[i_8] += prev + (nextVertices[i_8] - prev) * percent - setupVertices[i_8]; - } - } - else { - for (var i_9 = 0; i_9 < vertexCount; i_9++) { - var prev = prevVertices[i_9]; - deform[i_9] += prev + (nextVertices[i_9] - prev) * percent; - } - } - } - else { - for (var i_10 = 0; i_10 < vertexCount; i_10++) { - var prev = prevVertices[i_10]; - deform[i_10] = prev + (nextVertices[i_10] - prev) * percent; - } - } - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_2 = slotAttachment; - if (!vertexAttachment_2.bones) { - var setupVertices = vertexAttachment_2.vertices; - for (var i_11 = 0; i_11 < vertexCount; i_11++) { - var prev = prevVertices[i_11], setup = setupVertices[i_11]; - deform[i_11] = setup + (prev + (nextVertices[i_11] - prev) * percent - setup) * alpha; - } - } - else { - for (var i_12 = 0; i_12 < vertexCount; i_12++) { - var prev = prevVertices[i_12]; - deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha; - } - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_13 = 0; i_13 < vertexCount; i_13++) { - var prev = prevVertices[i_13]; - deform[i_13] += (prev + (nextVertices[i_13] - prev) * percent - deform[i_13]) * alpha; - } - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (!vertexAttachment.bones) { - var setupVertices = vertexAttachment.vertices; - for (var i_14 = 0; i_14 < vertexCount; i_14++) { - var prev = prevVertices[i_14]; - deform[i_14] += (prev + (nextVertices[i_14] - prev) * percent - setupVertices[i_14]) * alpha; - } - } - else { - for (var i_15 = 0; i_15 < vertexCount; i_15++) { - var prev = prevVertices[i_15]; - deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha; - } - } - } - } - }; - return DeformTimeline; - }(CurveTimeline)); - spine.DeformTimeline = DeformTimeline; - var EventTimeline = (function (_super) { - __extends(EventTimeline, _super); - function EventTimeline(frameCount) { - var _this = _super.call(this, frameCount, EventTimeline.propertyIds) || this; - _this.events = new Array(frameCount); - return _this; - } - EventTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - EventTimeline.prototype.setFrame = function (frame, event) { - this.frames[frame] = event.time; - this.events[frame] = event; - }; - EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - if (!firedEvents) - return; - var frames = this.frames; - var frameCount = this.frames.length; - if (lastTime > time) { - this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction); - lastTime = -1; - } - else if (lastTime >= frames[frameCount - 1]) - return; - if (time < frames[0]) - return; - var i = 0; - if (lastTime < frames[0]) - i = 0; - else { - i = Timeline.search1(frames, lastTime) + 1; - var frameTime = frames[i]; - while (i > 0) { - if (frames[i - 1] != frameTime) - break; - i--; - } - } - for (; i < frameCount && time >= frames[i]; i++) - firedEvents.push(this.events[i]); - }; - EventTimeline.propertyIds = ["" + Property.event]; - return EventTimeline; - }(Timeline)); - spine.EventTimeline = EventTimeline; - var DrawOrderTimeline = (function (_super) { - __extends(DrawOrderTimeline, _super); - function DrawOrderTimeline(frameCount) { - var _this = _super.call(this, frameCount, DrawOrderTimeline.propertyIds) || this; - _this.drawOrders = new Array(frameCount); - return _this; - } - DrawOrderTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DrawOrderTimeline.prototype.setFrame = function (frame, time, drawOrder) { - this.frames[frame] = time; - this.drawOrders[frame] = drawOrder; - }; - DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - if (time < this.frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - var drawOrderToSetupIndex = this.drawOrders[Timeline.search1(this.frames, time)]; - if (!drawOrderToSetupIndex) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - else { - var drawOrder = skeleton.drawOrder; - var slots = skeleton.slots; - for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) - drawOrder[i] = slots[drawOrderToSetupIndex[i]]; - } - }; - DrawOrderTimeline.propertyIds = ["" + Property.drawOrder]; - return DrawOrderTimeline; - }(Timeline)); - spine.DrawOrderTimeline = DrawOrderTimeline; - var IkConstraintTimeline = (function (_super) { - __extends(IkConstraintTimeline, _super); - function IkConstraintTimeline(frameCount, bezierCount, ikConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.ikConstraint + "|" + ikConstraintIndex - ]) || this; - _this.ikConstraintIndex = ikConstraintIndex; - return _this; - } - IkConstraintTimeline.prototype.getFrameEntries = function () { - return 6; - }; - IkConstraintTimeline.prototype.setFrame = function (frame, time, mix, softness, bendDirection, compress, stretch) { - frame *= 6; - this.frames[frame] = time; - this.frames[frame + 1] = mix; - this.frames[frame + 2] = softness; - this.frames[frame + 3] = bendDirection; - this.frames[frame + 4] = compress ? 1 : 0; - this.frames[frame + 5] = stretch ? 1 : 0; - }; - IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - return; - case MixBlend.first: - constraint.mix += (constraint.data.mix - constraint.mix) * alpha; - constraint.softness += (constraint.data.softness - constraint.softness) * alpha; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - return; - } - var mix = 0, softness = 0; - var i = Timeline.search(frames, time, 6); - var curveType = this.curves[i / 6]; - switch (curveType) { - case 0: - var before = frames[i]; - mix = frames[i + 1]; - softness = frames[i + 2]; - var t = (time - before) / (frames[i + 6] - before); - mix += (frames[i + 6 + 1] - mix) * t; - softness += (frames[i + 6 + 2] - softness) * t; - break; - case 1: - mix = frames[i + 1]; - softness = frames[i + 2]; - break; - default: - mix = this.getBezierValue(time, i, 1, curveType - 2); - softness = this.getBezierValue(time, i, 2, curveType + 18 - 2); - } - if (blend == MixBlend.setup) { - constraint.mix = constraint.data.mix + (mix - constraint.data.mix) * alpha; - constraint.softness = constraint.data.softness + (softness - constraint.data.softness) * alpha; - if (direction == MixDirection.mixOut) { - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - else { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; - } - } - else { - constraint.mix += (mix - constraint.mix) * alpha; - constraint.softness += (softness - constraint.softness) * alpha; - if (direction == MixDirection.mixIn) { - constraint.bendDirection = frames[i + 3]; - constraint.compress = frames[i + 4] != 0; - constraint.stretch = frames[i + 5] != 0; - } - } - }; - return IkConstraintTimeline; - }(CurveTimeline)); - spine.IkConstraintTimeline = IkConstraintTimeline; - var TransformConstraintTimeline = (function (_super) { - __extends(TransformConstraintTimeline, _super); - function TransformConstraintTimeline(frameCount, bezierCount, transformConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.transformConstraint + "|" + transformConstraintIndex - ]) || this; - _this.transformConstraintIndex = transformConstraintIndex; - return _this; - } - TransformConstraintTimeline.prototype.getFrameEntries = function () { - return 7; - }; - TransformConstraintTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY) { - var frames = this.frames; - frame *= 7; - frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; - frames[frame + 4] = mixScaleX; - frames[frame + 5] = mixScaleY; - frames[frame + 6] = mixShearY; - }; - TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - var data = constraint.data; - switch (blend) { - case MixBlend.setup: - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - constraint.mixScaleX = data.mixScaleX; - constraint.mixScaleY = data.mixScaleY; - constraint.mixShearY = data.mixShearY; - return; - case MixBlend.first: - constraint.mixRotate += (data.mixRotate - constraint.mixRotate) * alpha; - constraint.mixX += (data.mixX - constraint.mixX) * alpha; - constraint.mixY += (data.mixY - constraint.mixY) * alpha; - constraint.mixScaleX += (data.mixScaleX - constraint.mixScaleX) * alpha; - constraint.mixScaleY += (data.mixScaleY - constraint.mixScaleY) * alpha; - constraint.mixShearY += (data.mixShearY - constraint.mixShearY) * alpha; - } - return; - } - var rotate, x, y, scaleX, scaleY, shearY; - var i = Timeline.search(frames, time, 7); - var curveType = this.curves[i / 7]; - switch (curveType) { - case 0: - var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; - var t = (time - before) / (frames[i + 7] - before); - rotate += (frames[i + 7 + 1] - rotate) * t; - x += (frames[i + 7 + 2] - x) * t; - y += (frames[i + 7 + 3] - y) * t; - scaleX += (frames[i + 7 + 4] - scaleX) * t; - scaleY += (frames[i + 7 + 5] - scaleY) * t; - shearY += (frames[i + 7 + 6] - shearY) * t; - break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - scaleX = frames[i + 4]; - scaleY = frames[i + 5]; - shearY = frames[i + 6]; - break; - default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - scaleX = this.getBezierValue(time, i, 4, curveType + 18 * 3 - 2); - scaleY = this.getBezierValue(time, i, 5, curveType + 18 * 4 - 2); - shearY = this.getBezierValue(time, i, 6, curveType + 18 * 5 - 2); - } - if (blend == MixBlend.setup) { - var data = constraint.data; - constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; - constraint.mixX = data.mixX + (x - data.mixX) * alpha; - constraint.mixY = data.mixY + (y - data.mixY) * alpha; - constraint.mixScaleX = data.mixScaleX + (scaleX - data.mixScaleX) * alpha; - constraint.mixScaleY = data.mixScaleY + (scaleY - data.mixScaleY) * alpha; - constraint.mixShearY = data.mixShearY + (shearY - data.mixShearY) * alpha; - } - else { - constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; - constraint.mixX += (x - constraint.mixX) * alpha; - constraint.mixY += (y - constraint.mixY) * alpha; - constraint.mixScaleX += (scaleX - constraint.mixScaleX) * alpha; - constraint.mixScaleY += (scaleY - constraint.mixScaleY) * alpha; - constraint.mixShearY += (shearY - constraint.mixShearY) * alpha; - } - }; - return TransformConstraintTimeline; - }(CurveTimeline)); - spine.TransformConstraintTimeline = TransformConstraintTimeline; - var PathConstraintPositionTimeline = (function (_super) { - __extends(PathConstraintPositionTimeline, _super); - function PathConstraintPositionTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintPosition + "|" + pathConstraintIndex) || this; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.position = constraint.data.position; - return; - case MixBlend.first: - constraint.position += (constraint.data.position - constraint.position) * alpha; - } - return; - } - var position = this.getCurveValue(time); - if (blend == MixBlend.setup) - constraint.position = constraint.data.position + (position - constraint.data.position) * alpha; - else - constraint.position += (position - constraint.position) * alpha; - }; - return PathConstraintPositionTimeline; - }(CurveTimeline1)); - spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; - var PathConstraintSpacingTimeline = (function (_super) { - __extends(PathConstraintSpacingTimeline, _super); - function PathConstraintSpacingTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, Property.pathConstraintSpacing + "|" + pathConstraintIndex) || this; - _this.pathConstraintIndex = 0; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.spacing = constraint.data.spacing; - return; - case MixBlend.first: - constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha; - } - return; - } - var spacing = this.getCurveValue(time); - if (blend == MixBlend.setup) - constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha; - else - constraint.spacing += (spacing - constraint.spacing) * alpha; - }; - return PathConstraintSpacingTimeline; - }(CurveTimeline1)); - spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; - var PathConstraintMixTimeline = (function (_super) { - __extends(PathConstraintMixTimeline, _super); - function PathConstraintMixTimeline(frameCount, bezierCount, pathConstraintIndex) { - var _this = _super.call(this, frameCount, bezierCount, [ - Property.pathConstraintMix + "|" + pathConstraintIndex - ]) || this; - _this.pathConstraintIndex = 0; - _this.pathConstraintIndex = pathConstraintIndex; - return _this; - } - PathConstraintMixTimeline.prototype.getFrameEntries = function () { - return 4; - }; - PathConstraintMixTimeline.prototype.setFrame = function (frame, time, mixRotate, mixX, mixY) { - var frames = this.frames; - frame <<= 2; - frames[frame] = time; - frames[frame + 1] = mixRotate; - frames[frame + 2] = mixX; - frames[frame + 3] = mixY; - }; - PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.mixRotate = constraint.data.mixRotate; - constraint.mixX = constraint.data.mixX; - constraint.mixY = constraint.data.mixY; - return; - case MixBlend.first: - constraint.mixRotate += (constraint.data.mixRotate - constraint.mixRotate) * alpha; - constraint.mixX += (constraint.data.mixX - constraint.mixX) * alpha; - constraint.mixY += (constraint.data.mixY - constraint.mixY) * alpha; - } - return; - } - var rotate, x, y; - var i = Timeline.search(frames, time, 4); - var curveType = this.curves[i >> 2]; - switch (curveType) { - case 0: - var before = frames[i]; - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - var t = (time - before) / (frames[i + 4] - before); - rotate += (frames[i + 4 + 1] - rotate) * t; - x += (frames[i + 4 + 2] - x) * t; - y += (frames[i + 4 + 3] - y) * t; - break; - case 1: - rotate = frames[i + 1]; - x = frames[i + 2]; - y = frames[i + 3]; - break; - default: - rotate = this.getBezierValue(time, i, 1, curveType - 2); - x = this.getBezierValue(time, i, 2, curveType + 18 - 2); - y = this.getBezierValue(time, i, 3, curveType + 18 * 2 - 2); - } - if (blend == MixBlend.setup) { - var data = constraint.data; - constraint.mixRotate = data.mixRotate + (rotate - data.mixRotate) * alpha; - constraint.mixX = data.mixX + (x - data.mixX) * alpha; - constraint.mixY = data.mixY + (y - data.mixY) * alpha; - } - else { - constraint.mixRotate += (rotate - constraint.mixRotate) * alpha; - constraint.mixX += (x - constraint.mixX) * alpha; - constraint.mixY += (y - constraint.mixY) * alpha; - } - }; - return PathConstraintMixTimeline; - }(CurveTimeline)); - spine.PathConstraintMixTimeline = PathConstraintMixTimeline; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationState = (function () { - function AnimationState(data) { - this.tracks = new Array(); - this.timeScale = 1; - this.unkeyedState = 0; - this.events = new Array(); - this.listeners = new Array(); - this.queue = new EventQueue(this); - this.propertyIDs = new spine.StringSet(); - this.animationsChanged = false; - this.trackEntryPool = new spine.Pool(function () { return new TrackEntry(); }); - this.data = data; - } - AnimationState.emptyAnimation = function () { - if (!_emptyAnimation) - _emptyAnimation = new spine.Animation("", [], 0); - return _emptyAnimation; - }; - AnimationState.prototype.update = function (delta) { - delta *= this.timeScale; - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var current = tracks[i]; - if (!current) - continue; - current.animationLast = current.nextAnimationLast; - current.trackLast = current.nextTrackLast; - var currentDelta = delta * current.timeScale; - if (current.delay > 0) { - current.delay -= currentDelta; - if (current.delay > 0) - continue; - currentDelta = -current.delay; - current.delay = 0; - } - var next = current.next; - if (next) { - var nextTime = current.trackLast - next.delay; - if (nextTime >= 0) { - next.delay = 0; - next.trackTime += current.timeScale == 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale; - current.trackTime += currentDelta; - this.setCurrent(i, next, true); - while (next.mixingFrom) { - next.mixTime += delta; - next = next.mixingFrom; - } - continue; - } - } - else if (current.trackLast >= current.trackEnd && !current.mixingFrom) { - tracks[i] = null; - this.queue.end(current); - this.clearNext(current); - continue; - } - if (current.mixingFrom && this.updateMixingFrom(current, delta)) { - var from = current.mixingFrom; - current.mixingFrom = null; - if (from) - from.mixingTo = null; - while (from) { - this.queue.end(from); - from = from.mixingFrom; - } - } - current.trackTime += currentDelta; - } - this.queue.drain(); - }; - AnimationState.prototype.updateMixingFrom = function (to, delta) { - var from = to.mixingFrom; - if (!from) - return true; - var finished = this.updateMixingFrom(from, delta); - from.animationLast = from.nextAnimationLast; - from.trackLast = from.nextTrackLast; - if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { - if (from.totalAlpha == 0 || to.mixDuration == 0) { - to.mixingFrom = from.mixingFrom; - if (from.mixingFrom) - from.mixingFrom.mixingTo = to; - to.interruptAlpha = from.interruptAlpha; - this.queue.end(from); - } - return finished; - } - from.trackTime += delta * from.timeScale; - to.mixTime += delta; - return false; - }; - AnimationState.prototype.apply = function (skeleton) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - if (this.animationsChanged) - this._animationsChanged(); - var events = this.events; - var tracks = this.tracks; - var applied = false; - for (var i_16 = 0, n_1 = tracks.length; i_16 < n_1; i_16++) { - var current = tracks[i_16]; - if (!current || current.delay > 0) - continue; - applied = true; - var blend = i_16 == 0 ? spine.MixBlend.first : current.mixBlend; - var mix = current.alpha; - if (current.mixingFrom) - mix *= this.applyMixingFrom(current, skeleton, blend); - else if (current.trackTime >= current.trackEnd && !current.next) - mix = 0; - var animationLast = current.animationLast, animationTime = current.getAnimationTime(), applyTime = animationTime; - var applyEvents = events; - if (current.reverse) { - applyTime = current.animation.duration - applyTime; - applyEvents = null; - } - var timelines = current.animation.timelines; - var timelineCount = timelines.length; - if ((i_16 == 0 && mix == 1) || blend == spine.MixBlend.add) { - for (var ii = 0; ii < timelineCount; ii++) { - spine.Utils.webkit602BugfixHelper(mix, blend); - var timeline = timelines[ii]; - if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, applyTime, blend, true); - else - timeline.apply(skeleton, animationLast, applyTime, applyEvents, mix, blend, spine.MixDirection.mixIn); - } - } - else { - var timelineMode = current.timelineMode; - var firstFrame = current.timelinesRotation.length != timelineCount << 1; - if (firstFrame) - current.timelinesRotation.length = timelineCount << 1; - for (var ii = 0; ii < timelineCount; ii++) { - var timeline_1 = timelines[ii]; - var timelineBlend = timelineMode[ii] == SUBSEQUENT ? blend : spine.MixBlend.setup; - if (timeline_1 instanceof spine.RotateTimeline) { - this.applyRotateTimeline(timeline_1, skeleton, applyTime, mix, timelineBlend, current.timelinesRotation, ii << 1, firstFrame); - } - else if (timeline_1 instanceof spine.AttachmentTimeline) { - this.applyAttachmentTimeline(timeline_1, skeleton, applyTime, blend, true); - } - else { - spine.Utils.webkit602BugfixHelper(mix, blend); - timeline_1.apply(skeleton, animationLast, applyTime, applyEvents, mix, timelineBlend, spine.MixDirection.mixIn); - } - } - } - this.queueEvents(current, animationTime); - events.length = 0; - current.nextAnimationLast = animationTime; - current.nextTrackLast = current.trackTime; - } - var setupState = this.unkeyedState + SETUP; - var slots = skeleton.slots; - for (var i = 0, n = skeleton.slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.attachmentState == setupState) { - var attachmentName = slot.data.attachmentName; - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - } - } - this.unkeyedState += 2; - this.queue.drain(); - return applied; - }; - AnimationState.prototype.applyMixingFrom = function (to, skeleton, blend) { - var from = to.mixingFrom; - if (from.mixingFrom) - this.applyMixingFrom(from, skeleton, blend); - var mix = 0; - if (to.mixDuration == 0) { - mix = 1; - if (blend == spine.MixBlend.first) - blend = spine.MixBlend.setup; - } - else { - mix = to.mixTime / to.mixDuration; - if (mix > 1) - mix = 1; - if (blend != spine.MixBlend.first) - blend = from.mixBlend; - } - var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold; - var timelines = from.animation.timelines; - var timelineCount = timelines.length; - var alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix); - var animationLast = from.animationLast, animationTime = from.getAnimationTime(), applyTime = animationTime; - var events = null; - if (from.reverse) - applyTime = from.animation.duration - applyTime; - else if (mix < from.eventThreshold) - events = this.events; - if (blend == spine.MixBlend.add) { - for (var i = 0; i < timelineCount; i++) - timelines[i].apply(skeleton, animationLast, applyTime, events, alphaMix, blend, spine.MixDirection.mixOut); - } - else { - var timelineMode = from.timelineMode; - var timelineHoldMix = from.timelineHoldMix; - var firstFrame = from.timelinesRotation.length != timelineCount << 1; - if (firstFrame) - from.timelinesRotation.length = timelineCount << 1; - from.totalAlpha = 0; - for (var i = 0; i < timelineCount; i++) { - var timeline = timelines[i]; - var direction = spine.MixDirection.mixOut; - var timelineBlend = void 0; - var alpha = 0; - switch (timelineMode[i]) { - case SUBSEQUENT: - if (!drawOrder && timeline instanceof spine.DrawOrderTimeline) - continue; - timelineBlend = blend; - alpha = alphaMix; - break; - case FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaMix; - break; - case HOLD_SUBSEQUENT: - timelineBlend = blend; - alpha = alphaHold; - break; - case HOLD_FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaHold; - break; - default: - timelineBlend = spine.MixBlend.setup; - var holdMix = timelineHoldMix[i]; - alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration); - break; - } - from.totalAlpha += alpha; - if (timeline instanceof spine.RotateTimeline) - this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, timelineBlend, from.timelinesRotation, i << 1, firstFrame); - else if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, applyTime, timelineBlend, attachments); - else { - spine.Utils.webkit602BugfixHelper(alpha, blend); - if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup) - direction = spine.MixDirection.mixIn; - timeline.apply(skeleton, animationLast, applyTime, events, alpha, timelineBlend, direction); - } - } - } - if (to.mixDuration > 0) - this.queueEvents(from, animationTime); - this.events.length = 0; - from.nextAnimationLast = animationTime; - from.nextTrackLast = from.trackTime; - return mix; - }; - AnimationState.prototype.applyAttachmentTimeline = function (timeline, skeleton, time, blend, attachments) { - var slot = skeleton.slots[timeline.slotIndex]; - if (!slot.bone.active) - return; - if (time < timeline.frames[0]) { - if (blend == spine.MixBlend.setup || blend == spine.MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments); - } - else - this.setAttachment(skeleton, slot, timeline.attachmentNames[spine.Timeline.search1(timeline.frames, time)], attachments); - if (slot.attachmentState <= this.unkeyedState) - slot.attachmentState = this.unkeyedState + SETUP; - }; - AnimationState.prototype.setAttachment = function (skeleton, slot, attachmentName, attachments) { - slot.setAttachment(!attachmentName ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - if (attachments) - slot.attachmentState = this.unkeyedState + CURRENT; - }; - AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) { - if (firstFrame) - timelinesRotation[i] = 0; - if (alpha == 1) { - timeline.apply(skeleton, 0, time, null, 1, blend, spine.MixDirection.mixIn); - return; - } - var bone = skeleton.bones[timeline.boneIndex]; - if (!bone.active) - return; - var frames = timeline.frames; - var r1 = 0, r2 = 0; - if (time < frames[0]) { - switch (blend) { - case spine.MixBlend.setup: - bone.rotation = bone.data.rotation; - default: - return; - case spine.MixBlend.first: - r1 = bone.rotation; - r2 = bone.data.rotation; - } - } - else { - r1 = blend == spine.MixBlend.setup ? bone.data.rotation : bone.rotation; - r2 = bone.data.rotation + timeline.getCurveValue(time); - } - var total = 0, diff = r2 - r1; - diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360; - if (diff == 0) { - total = timelinesRotation[i]; - } - else { - var lastTotal = 0, lastDiff = 0; - if (firstFrame) { - lastTotal = 0; - lastDiff = diff; - } - else { - lastTotal = timelinesRotation[i]; - lastDiff = timelinesRotation[i + 1]; - } - var current = diff > 0, dir = lastTotal >= 0; - if (spine.MathUtils.signum(lastDiff) != spine.MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { - if (Math.abs(lastTotal) > 180) - lastTotal += 360 * spine.MathUtils.signum(lastTotal); - dir = current; - } - total = diff + lastTotal - lastTotal % 360; - if (dir != current) - total += 360 * spine.MathUtils.signum(lastTotal); - timelinesRotation[i] = total; - } - timelinesRotation[i + 1] = diff; - bone.rotation = r1 + total * alpha; - }; - AnimationState.prototype.queueEvents = function (entry, animationTime) { - var animationStart = entry.animationStart, animationEnd = entry.animationEnd; - var duration = animationEnd - animationStart; - var trackLastWrapped = entry.trackLast % duration; - var events = this.events; - var i = 0, n = events.length; - for (; i < n; i++) { - var event_1 = events[i]; - if (event_1.time < trackLastWrapped) - break; - if (event_1.time > animationEnd) - continue; - this.queue.event(entry, event_1); - } - var complete = false; - if (entry.loop) - complete = duration == 0 || trackLastWrapped > entry.trackTime % duration; - else - complete = animationTime >= animationEnd && entry.animationLast < animationEnd; - if (complete) - this.queue.complete(entry); - for (; i < n; i++) { - var event_2 = events[i]; - if (event_2.time < animationStart) - continue; - this.queue.event(entry, event_2); - } - }; - AnimationState.prototype.clearTracks = function () { - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) - this.clearTrack(i); - this.tracks.length = 0; - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.clearTrack = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return; - var current = this.tracks[trackIndex]; - if (!current) - return; - this.queue.end(current); - this.clearNext(current); - var entry = current; - while (true) { - var from = entry.mixingFrom; - if (!from) - break; - this.queue.end(from); - entry.mixingFrom = null; - entry.mixingTo = null; - entry = from; - } - this.tracks[current.trackIndex] = null; - this.queue.drain(); - }; - AnimationState.prototype.setCurrent = function (index, current, interrupt) { - var from = this.expandToIndex(index); - this.tracks[index] = current; - current.previous = null; - if (from) { - if (interrupt) - this.queue.interrupt(from); - current.mixingFrom = from; - from.mixingTo = current; - current.mixTime = 0; - if (from.mixingFrom && from.mixDuration > 0) - current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration); - from.timelinesRotation.length = 0; - } - this.queue.start(current); - }; - AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { - if (loop === void 0) { loop = false; } - var animation = this.data.skeletonData.findAnimation(animationName); - if (!animation) - throw new Error("Animation not found: " + animationName); - return this.setAnimationWith(trackIndex, animation, loop); - }; - AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { - if (loop === void 0) { loop = false; } - if (!animation) - throw new Error("animation cannot be null."); - var interrupt = true; - var current = this.expandToIndex(trackIndex); - if (current) { - if (current.nextTrackLast == -1) { - this.tracks[trackIndex] = current.mixingFrom; - this.queue.interrupt(current); - this.queue.end(current); - this.clearNext(current); - current = current.mixingFrom; - interrupt = false; - } - else - this.clearNext(current); - } - var entry = this.trackEntry(trackIndex, animation, loop, current); - this.setCurrent(trackIndex, entry, interrupt); - this.queue.drain(); - return entry; - }; - AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { - if (loop === void 0) { loop = false; } - if (delay === void 0) { delay = 0; } - var animation = this.data.skeletonData.findAnimation(animationName); - if (!animation) - throw new Error("Animation not found: " + animationName); - return this.addAnimationWith(trackIndex, animation, loop, delay); - }; - AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { - if (loop === void 0) { loop = false; } - if (delay === void 0) { delay = 0; } - if (!animation) - throw new Error("animation cannot be null."); - var last = this.expandToIndex(trackIndex); - if (last) { - while (last.next) - last = last.next; - } - var entry = this.trackEntry(trackIndex, animation, loop, last); - if (!last) { - this.setCurrent(trackIndex, entry, true); - this.queue.drain(); - } - else { - last.next = entry; - entry.previous = last; - if (delay <= 0) - delay += last.getTrackComplete() - entry.mixDuration; - } - entry.delay = delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) { - if (mixDuration === void 0) { mixDuration = 0; } - var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation(), false); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - return entry; - }; - AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) { - if (mixDuration === void 0) { mixDuration = 0; } - if (delay === void 0) { delay = 0; } - var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay <= 0 ? 1 : delay); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - if (delay <= 0 && entry.previous) - entry.delay = entry.previous.getTrackComplete() - entry.mixDuration + delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimations = function (mixDuration) { - if (mixDuration === void 0) { mixDuration = 0; } - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) { - var current = this.tracks[i]; - if (current) - this.setEmptyAnimation(current.trackIndex, mixDuration); - } - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.expandToIndex = function (index) { - if (index < this.tracks.length) - return this.tracks[index]; - spine.Utils.ensureArrayCapacity(this.tracks, index + 1, null); - this.tracks.length = index + 1; - return null; - }; - AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) { - var entry = this.trackEntryPool.obtain(); - entry.trackIndex = trackIndex; - entry.animation = animation; - entry.loop = loop; - entry.holdPrevious = false; - entry.eventThreshold = 0; - entry.attachmentThreshold = 0; - entry.drawOrderThreshold = 0; - entry.animationStart = 0; - entry.animationEnd = animation.duration; - entry.animationLast = -1; - entry.nextAnimationLast = -1; - entry.delay = 0; - entry.trackTime = 0; - entry.trackLast = -1; - entry.nextTrackLast = -1; - entry.trackEnd = Number.MAX_VALUE; - entry.timeScale = 1; - entry.alpha = 1; - entry.interruptAlpha = 1; - entry.mixTime = 0; - entry.mixDuration = !last ? 0 : this.data.getMix(last.animation, animation); - entry.mixBlend = spine.MixBlend.replace; - return entry; - }; - AnimationState.prototype.clearNext = function (entry) { - var next = entry.next; - while (next) { - this.queue.dispose(next); - next = next.next; - } - entry.next = null; - }; - AnimationState.prototype._animationsChanged = function () { - this.animationsChanged = false; - this.propertyIDs.clear(); - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var entry = tracks[i]; - if (!entry) - continue; - while (entry.mixingFrom) - entry = entry.mixingFrom; - do { - if (!entry.mixingTo || entry.mixBlend != spine.MixBlend.add) - this.computeHold(entry); - entry = entry.mixingTo; - } while (entry); - } - }; - AnimationState.prototype.computeHold = function (entry) { - var to = entry.mixingTo; - var timelines = entry.animation.timelines; - var timelinesCount = entry.animation.timelines.length; - var timelineMode = entry.timelineMode; - timelineMode.length = timelinesCount; - var timelineHoldMix = entry.timelineHoldMix; - timelineHoldMix.length = 0; - var propertyIDs = this.propertyIDs; - if (to && to.holdPrevious) { - for (var i = 0; i < timelinesCount; i++) - timelineMode[i] = propertyIDs.addAll(timelines[i].getPropertyIds()) ? HOLD_FIRST : HOLD_SUBSEQUENT; - return; - } - outer: for (var i = 0; i < timelinesCount; i++) { - var timeline = timelines[i]; - var ids = timeline.getPropertyIds(); - if (!propertyIDs.addAll(ids)) - timelineMode[i] = SUBSEQUENT; - else if (!to || timeline instanceof spine.AttachmentTimeline || timeline instanceof spine.DrawOrderTimeline - || timeline instanceof spine.EventTimeline || !to.animation.hasTimeline(ids)) { - timelineMode[i] = FIRST; - } - else { - for (var next = to.mixingTo; next; next = next.mixingTo) { - if (next.animation.hasTimeline(ids)) - continue; - if (entry.mixDuration > 0) { - timelineMode[i] = HOLD_MIX; - timelineHoldMix[i] = next; - continue outer; - } - break; - } - timelineMode[i] = HOLD_FIRST; - } - } - }; - AnimationState.prototype.getCurrent = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return null; - return this.tracks[trackIndex]; - }; - AnimationState.prototype.addListener = function (listener) { - if (!listener) - throw new Error("listener cannot be null."); - this.listeners.push(listener); - }; - AnimationState.prototype.removeListener = function (listener) { - var index = this.listeners.indexOf(listener); - if (index >= 0) - this.listeners.splice(index, 1); - }; - AnimationState.prototype.clearListeners = function () { - this.listeners.length = 0; - }; - AnimationState.prototype.clearListenerNotifications = function () { - this.queue.clear(); - }; - return AnimationState; - }()); - spine.AnimationState = AnimationState; - var TrackEntry = (function () { - function TrackEntry() { - this.mixBlend = spine.MixBlend.replace; - this.timelineMode = new Array(); - this.timelineHoldMix = new Array(); - this.timelinesRotation = new Array(); - } - TrackEntry.prototype.reset = function () { - this.next = null; - this.previous = null; - this.mixingFrom = null; - this.mixingTo = null; - this.animation = null; - this.listener = null; - this.timelineMode.length = 0; - this.timelineHoldMix.length = 0; - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.getAnimationTime = function () { - if (this.loop) { - var duration = this.animationEnd - this.animationStart; - if (duration == 0) - return this.animationStart; - return (this.trackTime % duration) + this.animationStart; - } - return Math.min(this.trackTime + this.animationStart, this.animationEnd); - }; - TrackEntry.prototype.setAnimationLast = function (animationLast) { - this.animationLast = animationLast; - this.nextAnimationLast = animationLast; - }; - TrackEntry.prototype.isComplete = function () { - return this.trackTime >= this.animationEnd - this.animationStart; - }; - TrackEntry.prototype.resetRotationDirections = function () { - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.getTrackComplete = function () { - var duration = this.animationEnd - this.animationStart; - if (duration != 0) { - if (this.loop) - return duration * (1 + ((this.trackTime / duration) | 0)); - if (this.trackTime < duration) - return duration; - } - return this.trackTime; - }; - return TrackEntry; - }()); - spine.TrackEntry = TrackEntry; - var EventQueue = (function () { - function EventQueue(animState) { - this.objects = []; - this.drainDisabled = false; - this.animState = animState; - } - EventQueue.prototype.start = function (entry) { - this.objects.push(EventType.start); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.interrupt = function (entry) { - this.objects.push(EventType.interrupt); - this.objects.push(entry); - }; - EventQueue.prototype.end = function (entry) { - this.objects.push(EventType.end); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.dispose = function (entry) { - this.objects.push(EventType.dispose); - this.objects.push(entry); - }; - EventQueue.prototype.complete = function (entry) { - this.objects.push(EventType.complete); - this.objects.push(entry); - }; - EventQueue.prototype.event = function (entry, event) { - this.objects.push(EventType.event); - this.objects.push(entry); - this.objects.push(event); - }; - EventQueue.prototype.drain = function () { - if (this.drainDisabled) - return; - this.drainDisabled = true; - var objects = this.objects; - var listeners = this.animState.listeners; - for (var i = 0; i < objects.length; i += 2) { - var type = objects[i]; - var entry = objects[i + 1]; - switch (type) { - case EventType.start: - if (entry.listener && entry.listener.start) - entry.listener.start(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].start) - listeners[ii].start(entry); - break; - case EventType.interrupt: - if (entry.listener && entry.listener.interrupt) - entry.listener.interrupt(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].interrupt) - listeners[ii].interrupt(entry); - break; - case EventType.end: - if (entry.listener && entry.listener.end) - entry.listener.end(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].end) - listeners[ii].end(entry); - case EventType.dispose: - if (entry.listener && entry.listener.dispose) - entry.listener.dispose(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].dispose) - listeners[ii].dispose(entry); - this.animState.trackEntryPool.free(entry); - break; - case EventType.complete: - if (entry.listener && entry.listener.complete) - entry.listener.complete(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].complete) - listeners[ii].complete(entry); - break; - case EventType.event: - var event_3 = objects[i++ + 2]; - if (entry.listener && entry.listener.event) - entry.listener.event(entry, event_3); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].event) - listeners[ii].event(entry, event_3); - break; - } - } - this.clear(); - this.drainDisabled = false; - }; - EventQueue.prototype.clear = function () { - this.objects.length = 0; - }; - return EventQueue; - }()); - spine.EventQueue = EventQueue; - var EventType; - (function (EventType) { - EventType[EventType["start"] = 0] = "start"; - EventType[EventType["interrupt"] = 1] = "interrupt"; - EventType[EventType["end"] = 2] = "end"; - EventType[EventType["dispose"] = 3] = "dispose"; - EventType[EventType["complete"] = 4] = "complete"; - EventType[EventType["event"] = 5] = "event"; - })(EventType = spine.EventType || (spine.EventType = {})); - var AnimationStateAdapter = (function () { - function AnimationStateAdapter() { - } - AnimationStateAdapter.prototype.start = function (entry) { - }; - AnimationStateAdapter.prototype.interrupt = function (entry) { - }; - AnimationStateAdapter.prototype.end = function (entry) { - }; - AnimationStateAdapter.prototype.dispose = function (entry) { - }; - AnimationStateAdapter.prototype.complete = function (entry) { - }; - AnimationStateAdapter.prototype.event = function (entry, event) { - }; - return AnimationStateAdapter; - }()); - spine.AnimationStateAdapter = AnimationStateAdapter; - var SUBSEQUENT = 0; - var FIRST = 1; - var HOLD_SUBSEQUENT = 2; - var HOLD_FIRST = 3; - var HOLD_MIX = 4; - var SETUP = 1; - var CURRENT = 2; - var _emptyAnimation = null; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationStateData = (function () { - function AnimationStateData(skeletonData) { - this.animationToMixTime = {}; - this.defaultMix = 0; - if (!skeletonData) - throw new Error("skeletonData cannot be null."); - this.skeletonData = skeletonData; - } - AnimationStateData.prototype.setMix = function (fromName, toName, duration) { - var from = this.skeletonData.findAnimation(fromName); - if (!from) - throw new Error("Animation not found: " + fromName); - var to = this.skeletonData.findAnimation(toName); - if (!to) - throw new Error("Animation not found: " + toName); - this.setMixWith(from, to, duration); - }; - AnimationStateData.prototype.setMixWith = function (from, to, duration) { - if (!from) - throw new Error("from cannot be null."); - if (!to) - throw new Error("to cannot be null."); - var key = from.name + "." + to.name; - this.animationToMixTime[key] = duration; - }; - AnimationStateData.prototype.getMix = function (from, to) { - var key = from.name + "." + to.name; - var value = this.animationToMixTime[key]; - return value === undefined ? this.defaultMix : value; - }; - return AnimationStateData; - }()); - spine.AnimationStateData = AnimationStateData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AssetManager = (function () { - function AssetManager(textureLoader, pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - this.assets = {}; - this.errors = {}; - this.toLoad = 0; - this.loaded = 0; - this.textureLoader = textureLoader; - this.pathPrefix = pathPrefix; - this.downloader = downloader || new Downloader(); - } - AssetManager.prototype.start = function (path) { - this.toLoad++; - return this.pathPrefix + path; - }; - AssetManager.prototype.success = function (callback, path, asset) { - this.toLoad--; - this.loaded++; - this.assets[path] = asset; - if (callback) - callback(path, asset); - }; - AssetManager.prototype.error = function (callback, path, message) { - this.toLoad--; - this.loaded++; - this.errors[path] = message; - if (callback) - callback(path, message); - }; - AssetManager.prototype.setRawDataURI = function (path, data) { - this.downloader.rawDataUris[this.pathPrefix + path] = data; - }; - AssetManager.prototype.loadBinary = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadBinary(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load binary " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadText = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadText(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load text " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadJson = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - this.downloader.downloadJson(path, function (data) { - _this.success(success, path, data); - }, function (status, responseText) { - _this.error(error, path, "Couldn't load JSON " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.loadTexture = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.start(path); - var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); - var isWebWorker = !isBrowser && typeof importScripts !== 'undefined'; - if (isWebWorker) { - fetch(path, { mode: "cors" }).then(function (response) { - if (response.ok) - return response.blob(); - _this.error(error, path, "Couldn't load image: " + path); - return null; - }).then(function (blob) { - return blob ? createImageBitmap(blob, { premultiplyAlpha: "none", colorSpaceConversion: "none" }) : null; - }).then(function (bitmap) { - if (bitmap) - _this.success(success, path, _this.textureLoader(bitmap)); - }); - } - else { - var image_1 = new Image(); - image_1.crossOrigin = "anonymous"; - image_1.onload = function () { - _this.success(success, path, _this.textureLoader(image_1)); - }; - image_1.onerror = function () { - _this.error(error, path, "Couldn't load image: " + path); - }; - if (this.downloader.rawDataUris[path]) - path = this.downloader.rawDataUris[path]; - image_1.src = path; - } - }; - AssetManager.prototype.loadTextureAtlas = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - var index = path.lastIndexOf("/"); - var parent = index >= 0 ? path.substring(0, index + 1) : ""; - path = this.start(path); - this.downloader.downloadText(path, function (atlasText) { - try { - var atlas_1 = new spine.TextureAtlas(atlasText); - var toLoad_1 = atlas_1.pages.length, abort_1 = false; - var _loop_1 = function (page) { - _this.loadTexture(parent + page.name, function (imagePath, texture) { - if (!abort_1) { - page.setTexture(texture); - if (--toLoad_1 == 0) - _this.success(success, path, atlas_1); - } - }, function (imagePath, message) { - if (!abort_1) - _this.error(error, path, "Couldn't load texture atlas " + path + " page image: " + imagePath); - abort_1 = true; - }); - }; - for (var _i = 0, _a = atlas_1.pages; _i < _a.length; _i++) { - var page = _a[_i]; - _loop_1(page); - } - } - catch (e) { - _this.error(error, path, "Couldn't parse texture atlas " + path + ": " + e.message); - } - }, function (status, responseText) { - _this.error(error, path, "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText); - }); - }; - AssetManager.prototype.get = function (path) { - return this.assets[this.pathPrefix + path]; - }; - AssetManager.prototype.require = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset) - return asset; - var error = this.errors[path]; - throw Error("Asset not found: " + path + (error ? "\n" + error : "")); - }; - AssetManager.prototype.remove = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset.dispose) - asset.dispose(); - delete this.assets[path]; - return asset; - }; - AssetManager.prototype.removeAll = function () { - for (var key in this.assets) { - var asset = this.assets[key]; - if (asset.dispose) - asset.dispose(); - } - this.assets = {}; - }; - AssetManager.prototype.isLoadingComplete = function () { - return this.toLoad == 0; - }; - AssetManager.prototype.getToLoad = function () { - return this.toLoad; - }; - AssetManager.prototype.getLoaded = function () { - return this.loaded; - }; - AssetManager.prototype.dispose = function () { - this.removeAll(); - }; - AssetManager.prototype.hasErrors = function () { - return Object.keys(this.errors).length > 0; - }; - AssetManager.prototype.getErrors = function () { - return this.errors; - }; - return AssetManager; - }()); - spine.AssetManager = AssetManager; - var Downloader = (function () { - function Downloader() { - this.callbacks = {}; - this.rawDataUris = {}; - } - Downloader.prototype.downloadText = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.overrideMimeType("text/html"); - request.open("GET", url, true); - var done = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = done; - request.onerror = done; - request.send(); - }; - Downloader.prototype.downloadJson = function (url, success, error) { - this.downloadText(url, function (data) { - success(JSON.parse(data)); - }, error); - }; - Downloader.prototype.downloadBinary = function (url, success, error) { - var _this = this; - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - if (this.start(url, success, error)) - return; - var request = new XMLHttpRequest(); - request.open("GET", url, true); - request.responseType = "arraybuffer"; - var onerror = function () { - _this.finish(url, request.status, request.responseText); - }; - request.onload = function () { - if (request.status == 200) - _this.finish(url, 200, new Uint8Array(request.response)); - else - onerror(); - }; - request.onerror = onerror; - request.send(); - }; - Downloader.prototype.start = function (url, success, error) { - var callbacks = this.callbacks[url]; - try { - if (callbacks) - return true; - this.callbacks[url] = callbacks = []; - } - finally { - callbacks.push(success, error); - } - }; - Downloader.prototype.finish = function (url, status, data) { - var callbacks = this.callbacks[url]; - delete this.callbacks[url]; - var args = status == 200 ? [data] : [status, data]; - for (var i = args.length - 1, n = callbacks.length; i < n; i += 2) - callbacks[i].apply(null, args); - }; - return Downloader; - }()); - spine.Downloader = Downloader; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AtlasAttachmentLoader = (function () { - function AtlasAttachmentLoader(atlas) { - this.atlas = atlas; - } - AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.RegionAttachment(name); - attachment.setRegion(region); - return attachment; - }; - AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.MeshAttachment(name); - attachment.region = region; - return attachment; - }; - AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { - return new spine.BoundingBoxAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { - return new spine.PathAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) { - return new spine.PointAttachment(name); - }; - AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) { - return new spine.ClippingAttachment(name); - }; - return AtlasAttachmentLoader; - }()); - spine.AtlasAttachmentLoader = AtlasAttachmentLoader; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Bone = (function () { - function Bone(data, skeleton, parent) { - this.children = new Array(); - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 0; - this.scaleY = 0; - this.shearX = 0; - this.shearY = 0; - this.ax = 0; - this.ay = 0; - this.arotation = 0; - this.ascaleX = 0; - this.ascaleY = 0; - this.ashearX = 0; - this.ashearY = 0; - this.a = 0; - this.b = 0; - this.c = 0; - this.d = 0; - this.worldY = 0; - this.worldX = 0; - this.sorted = false; - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.skeleton = skeleton; - this.parent = parent; - this.setToSetupPose(); - } - Bone.prototype.isActive = function () { - return this.active; - }; - Bone.prototype.update = function () { - this.updateWorldTransformWith(this.ax, this.ay, this.arotation, this.ascaleX, this.ascaleY, this.ashearX, this.ashearY); - }; - Bone.prototype.updateWorldTransform = function () { - this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); - }; - Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { - this.ax = x; - this.ay = y; - this.arotation = rotation; - this.ascaleX = scaleX; - this.ascaleY = scaleY; - this.ashearX = shearX; - this.ashearY = shearY; - var parent = this.parent; - if (!parent) { - var skeleton = this.skeleton; - var rotationY = rotation + 90 + shearY; - var sx = skeleton.scaleX; - var sy = skeleton.scaleY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX * sx; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY * sx; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX * sy; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY * sy; - this.worldX = x * sx + skeleton.x; - this.worldY = y * sy + skeleton.y; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - this.worldX = pa * x + pb * y + parent.worldX; - this.worldY = pc * x + pd * y + parent.worldY; - switch (this.data.transformMode) { - case spine.TransformMode.Normal: { - var rotationY = rotation + 90 + shearY; - var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * scaleY; - var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * scaleY; - this.a = pa * la + pb * lc; - this.b = pa * lb + pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - return; - } - case spine.TransformMode.OnlyTranslation: { - var rotationY = rotation + 90 + shearY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY; - break; - } - case spine.TransformMode.NoRotationOrReflection: { - var s = pa * pa + pc * pc; - var prx = 0; - if (s > 0.0001) { - s = Math.abs(pa * pd - pb * pc) / s; - pa /= this.skeleton.scaleX; - pc /= this.skeleton.scaleY; - pb = pc * s; - pd = pa * s; - prx = Math.atan2(pc, pa) * spine.MathUtils.radDeg; - } - else { - pa = 0; - pc = 0; - prx = 90 - Math.atan2(pd, pb) * spine.MathUtils.radDeg; - } - var rx = rotation + shearX - prx; - var ry = rotation + shearY - prx + 90; - var la = spine.MathUtils.cosDeg(rx) * scaleX; - var lb = spine.MathUtils.cosDeg(ry) * scaleY; - var lc = spine.MathUtils.sinDeg(rx) * scaleX; - var ld = spine.MathUtils.sinDeg(ry) * scaleY; - this.a = pa * la - pb * lc; - this.b = pa * lb - pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - break; - } - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: { - var cos = spine.MathUtils.cosDeg(rotation); - var sin = spine.MathUtils.sinDeg(rotation); - var za = (pa * cos + pb * sin) / this.skeleton.scaleX; - var zc = (pc * cos + pd * sin) / this.skeleton.scaleY; - var s = Math.sqrt(za * za + zc * zc); - if (s > 0.00001) - s = 1 / s; - za *= s; - zc *= s; - s = Math.sqrt(za * za + zc * zc); - if (this.data.transformMode == spine.TransformMode.NoScale - && (pa * pd - pb * pc < 0) != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0)) - s = -s; - var r = Math.PI / 2 + Math.atan2(zc, za); - var zb = Math.cos(r) * s; - var zd = Math.sin(r) * s; - var la = spine.MathUtils.cosDeg(shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(90 + shearY) * scaleY; - var lc = spine.MathUtils.sinDeg(shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(90 + shearY) * scaleY; - this.a = za * la + zb * lc; - this.b = za * lb + zb * ld; - this.c = zc * la + zd * lc; - this.d = zc * lb + zd * ld; - break; - } - } - this.a *= this.skeleton.scaleX; - this.b *= this.skeleton.scaleX; - this.c *= this.skeleton.scaleY; - this.d *= this.skeleton.scaleY; - }; - Bone.prototype.setToSetupPose = function () { - var data = this.data; - this.x = data.x; - this.y = data.y; - this.rotation = data.rotation; - this.scaleX = data.scaleX; - this.scaleY = data.scaleY; - this.shearX = data.shearX; - this.shearY = data.shearY; - }; - Bone.prototype.getWorldRotationX = function () { - return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldRotationY = function () { - return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldScaleX = function () { - return Math.sqrt(this.a * this.a + this.c * this.c); - }; - Bone.prototype.getWorldScaleY = function () { - return Math.sqrt(this.b * this.b + this.d * this.d); - }; - Bone.prototype.updateAppliedTransform = function () { - var parent = this.parent; - if (!parent) { - this.ax = this.worldX; - this.ay = this.worldY; - this.arotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c); - this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d); - this.ashearX = 0; - this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * spine.MathUtils.radDeg; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - var pid = 1 / (pa * pd - pb * pc); - var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; - this.ax = (dx * pd * pid - dy * pb * pid); - this.ay = (dy * pa * pid - dx * pc * pid); - var ia = pid * pd; - var id = pid * pa; - var ib = pid * pb; - var ic = pid * pc; - var ra = ia * this.a - ib * this.c; - var rb = ia * this.b - ib * this.d; - var rc = id * this.c - ic * this.a; - var rd = id * this.d - ic * this.b; - this.ashearX = 0; - this.ascaleX = Math.sqrt(ra * ra + rc * rc); - if (this.ascaleX > 0.0001) { - var det = ra * rd - rb * rc; - this.ascaleY = det / this.ascaleX; - this.ashearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; - this.arotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; - } - else { - this.ascaleX = 0; - this.ascaleY = Math.sqrt(rb * rb + rd * rd); - this.ashearY = 0; - this.arotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; - } - }; - Bone.prototype.worldToLocal = function (world) { - var invDet = 1 / (this.a * this.d - this.b * this.c); - var x = world.x - this.worldX, y = world.y - this.worldY; - world.x = x * this.d * invDet - y * this.b * invDet; - world.y = y * this.a * invDet - x * this.c * invDet; - return world; - }; - Bone.prototype.localToWorld = function (local) { - var x = local.x, y = local.y; - local.x = x * this.a + y * this.b + this.worldX; - local.y = x * this.c + y * this.d + this.worldY; - return local; - }; - Bone.prototype.worldToLocalRotation = function (worldRotation) { - var sin = spine.MathUtils.sinDeg(worldRotation), cos = spine.MathUtils.cosDeg(worldRotation); - return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * spine.MathUtils.radDeg + this.rotation - this.shearX; - }; - Bone.prototype.localToWorldRotation = function (localRotation) { - localRotation -= this.rotation - this.shearX; - var sin = spine.MathUtils.sinDeg(localRotation), cos = spine.MathUtils.cosDeg(localRotation); - return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.rotateWorld = function (degrees) { - var a = this.a, b = this.b, c = this.c, d = this.d; - var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); - this.a = cos * a - sin * c; - this.b = cos * b - sin * d; - this.c = sin * a + cos * c; - this.d = sin * b + cos * d; - }; - return Bone; - }()); - spine.Bone = Bone; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoneData = (function () { - function BoneData(index, name, parent) { - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 1; - this.scaleY = 1; - this.shearX = 0; - this.shearY = 0; - this.transformMode = TransformMode.Normal; - this.skinRequired = false; - this.color = new spine.Color(); - if (index < 0) - throw new Error("index must be >= 0."); - if (!name) - throw new Error("name cannot be null."); - this.index = index; - this.name = name; - this.parent = parent; - } - return BoneData; - }()); - spine.BoneData = BoneData; - var TransformMode; - (function (TransformMode) { - TransformMode[TransformMode["Normal"] = 0] = "Normal"; - TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; - TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; - TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; - TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; - })(TransformMode = spine.TransformMode || (spine.TransformMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var ConstraintData = (function () { - function ConstraintData(name, order, skinRequired) { - this.name = name; - this.order = order; - this.skinRequired = skinRequired; - } - return ConstraintData; - }()); - spine.ConstraintData = ConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Event = (function () { - function Event(time, data) { - if (!data) - throw new Error("data cannot be null."); - this.time = time; - this.data = data; - } - return Event; - }()); - spine.Event = Event; -})(spine || (spine = {})); -var spine; -(function (spine) { - var EventData = (function () { - function EventData(name) { - this.name = name; - } - return EventData; - }()); - spine.EventData = EventData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraint = (function () { - function IkConstraint(data, skeleton) { - this.bendDirection = 0; - this.compress = false; - this.stretch = false; - this.mix = 1; - this.softness = 0; - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mix = data.mix; - this.softness = data.softness; - this.bendDirection = data.bendDirection; - this.compress = data.compress; - this.stretch = data.stretch; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - IkConstraint.prototype.isActive = function () { - return this.active; - }; - IkConstraint.prototype.update = function () { - if (this.mix == 0) - return; - var target = this.target; - var bones = this.bones; - switch (bones.length) { - case 1: - this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix); - break; - case 2: - this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.data.uniform, this.softness, this.mix); - break; - } - }; - IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) { - var p = bone.parent; - var pa = p.a, pb = p.b, pc = p.c, pd = p.d; - var rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0; - switch (bone.data.transformMode) { - case spine.TransformMode.OnlyTranslation: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - break; - case spine.TransformMode.NoRotationOrReflection: - var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc); - var sa = pa / bone.skeleton.scaleX; - var sc = pc / bone.skeleton.scaleY; - pb = -sc * s * bone.skeleton.scaleX; - pd = sa * s * bone.skeleton.scaleY; - rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg; - default: - var x = targetX - p.worldX, y = targetY - p.worldY; - var d = pa * pd - pb * pc; - tx = (x * pd - y * pb) / d - bone.ax; - ty = (y * pa - x * pc) / d - bone.ay; - } - rotationIK += Math.atan2(ty, tx) * spine.MathUtils.radDeg; - if (bone.ascaleX < 0) - rotationIK += 180; - if (rotationIK > 180) - rotationIK -= 360; - else if (rotationIK < -180) - rotationIK += 360; - var sx = bone.ascaleX, sy = bone.ascaleY; - if (compress || stretch) { - switch (bone.data.transformMode) { - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - } - var b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty); - if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) { - var s = (dd / b - 1) * alpha + 1; - sx *= s; - if (uniform) - sy *= s; - } - } - bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY); - }; - IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, uniform, softness, alpha) { - var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, sx = psx, sy = psy, csx = child.ascaleX; - var os1 = 0, os2 = 0, s2 = 0; - if (psx < 0) { - psx = -psx; - os1 = 180; - s2 = -1; - } - else { - os1 = 0; - s2 = 1; - } - if (psy < 0) { - psy = -psy; - s2 = -s2; - } - if (csx < 0) { - csx = -csx; - os2 = 180; - } - else - os2 = 0; - var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; - var u = Math.abs(psx - psy) <= 0.0001; - if (!u || stretch) { - cy = 0; - cwx = a * cx + parent.worldX; - cwy = c * cx + parent.worldY; - } - else { - cy = child.ay; - cwx = a * cx + b * cy + parent.worldX; - cwy = c * cx + d * cy + parent.worldY; - } - var pp = parent.parent; - a = pp.a; - b = pp.b; - c = pp.c; - d = pp.d; - var id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY; - var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; - var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2; - if (l1 < 0.0001) { - this.apply1(parent, targetX, targetY, false, stretch, false, alpha); - child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - return; - } - x = targetX - pp.worldX; - y = targetY - pp.worldY; - var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; - var dd = tx * tx + ty * ty; - if (softness != 0) { - softness *= psx * (csx + 1) * 0.5; - var td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness; - if (sd > 0) { - var p = Math.min(1, sd / (softness * 2)) - 1; - p = (sd - softness * (1 - p * p)) / td; - tx -= p * tx; - ty -= p * ty; - dd = tx * tx + ty * ty; - } - } - outer: if (u) { - l2 *= psx; - var cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2); - if (cos < -1) { - cos = -1; - a2 = Math.PI * bendDir; - } - else if (cos > 1) { - cos = 1; - a2 = 0; - if (stretch) { - a = (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1; - sx *= a; - if (uniform) - sy *= a; - } - } - else - a2 = Math.acos(cos) * bendDir; - a = l1 + l2 * cos; - b = l2 * Math.sin(a2); - a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); - } - else { - a = psx * l2; - b = psy * l2; - var aa = a * a, bb = b * b, ta = Math.atan2(ty, tx); - c = bb * l1 * l1 + aa * dd - aa * bb; - var c1 = -2 * bb * l1, c2 = bb - aa; - d = c1 * c1 - 4 * c2 * c; - if (d >= 0) { - var q = Math.sqrt(d); - if (c1 < 0) - q = -q; - q = -(c1 + q) * 0.5; - var r0 = q / c2, r1 = c / q; - var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; - if (r * r <= dd) { - y = Math.sqrt(dd - r * r) * bendDir; - a1 = ta - Math.atan2(y, r); - a2 = Math.atan2(y / psy, (r - l1) / psx); - break outer; - } - } - var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; - var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; - c = -a * l1 / (aa - bb); - if (c >= -1 && c <= 1) { - c = Math.acos(c); - x = a * Math.cos(c) + l1; - y = b * Math.sin(c); - d = x * x + y * y; - if (d < minDist) { - minAngle = c; - minDist = d; - minX = x; - minY = y; - } - if (d > maxDist) { - maxAngle = c; - maxDist = d; - maxX = x; - maxY = y; - } - } - if (dd <= (minDist + maxDist) * 0.5) { - a1 = ta - Math.atan2(minY * bendDir, minX); - a2 = minAngle * bendDir; - } - else { - a1 = ta - Math.atan2(maxY * bendDir, maxX); - a2 = maxAngle * bendDir; - } - } - var os = Math.atan2(cy, cx) * s2; - var rotation = parent.arotation; - a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; - if (a1 > 180) - a1 -= 360; - else if (a1 < -180) - a1 += 360; - parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, sy, 0, 0); - rotation = child.arotation; - a2 = ((a2 + os) * spine.MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; - if (a2 > 180) - a2 -= 360; - else if (a2 < -180) - a2 += 360; - child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - }; - return IkConstraint; - }()); - spine.IkConstraint = IkConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraintData = (function (_super) { - __extends(IkConstraintData, _super); - function IkConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.bendDirection = 1; - _this.compress = false; - _this.stretch = false; - _this.uniform = false; - _this.mix = 1; - _this.softness = 0; - return _this; - } - return IkConstraintData; - }(spine.ConstraintData)); - spine.IkConstraintData = IkConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraint = (function () { - function PathConstraint(data, skeleton) { - this.position = 0; - this.spacing = 0; - this.mixRotate = 0; - this.mixX = 0; - this.mixY = 0; - this.spaces = new Array(); - this.positions = new Array(); - this.world = new Array(); - this.curves = new Array(); - this.lengths = new Array(); - this.segments = new Array(); - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0, n = data.bones.length; i < n; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findSlot(data.target.name); - this.position = data.position; - this.spacing = data.spacing; - this.mixRotate = data.mixRotate; - this.mixX = data.mixX; - this.mixY = data.mixY; - } - PathConstraint.prototype.isActive = function () { - return this.active; - }; - PathConstraint.prototype.update = function () { - var attachment = this.target.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - return; - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY; - if (mixRotate == 0 && mixX == 0 && mixY == 0) - return; - var data = this.data; - var tangents = data.rotateMode == spine.RotateMode.Tangent, scale = data.rotateMode == spine.RotateMode.ChainScale; - var bones = this.bones; - var boneCount = bones.length, spacesCount = tangents ? boneCount : boneCount + 1; - var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = spine.Utils.setArraySize(this.lengths, boneCount) : null; - var spacing = this.spacing; - switch (data.spacingMode) { - case spine.SpacingMode.Percent: - if (scale) { - for (var i = 0, n = spacesCount - 1; i < n; i++) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) - lengths[i] = 0; - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - lengths[i] = Math.sqrt(x * x + y * y); - } - } - } - spine.Utils.arrayFill(spaces, 1, spacesCount, spacing); - break; - case spine.SpacingMode.Proportional: - var sum = 0; - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) { - if (scale) - lengths[i] = 0; - spaces[++i] = spacing; - } - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_1 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_1; - spaces[++i] = length_1; - sum += length_1; - } - } - if (sum > 0) { - sum = spacesCount / sum * spacing; - for (var i = 1; i < spacesCount; i++) - spaces[i] *= sum; - } - break; - default: - var lengthSpacing = data.spacingMode == spine.SpacingMode.Length; - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) { - if (scale) - lengths[i] = 0; - spaces[++i] = spacing; - } - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_2 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_2; - spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_2 / setupLength; - } - } - } - var positions = this.computeWorldPositions(attachment, spacesCount, tangents); - var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; - var tip = false; - if (offsetRotation == 0) - tip = data.rotateMode == spine.RotateMode.Chain; - else { - tip = false; - var p = this.target.bone; - offsetRotation *= p.a * p.d - p.b * p.c > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - } - for (var i = 0, p = 3; i < boneCount; i++, p += 3) { - var bone = bones[i]; - bone.worldX += (boneX - bone.worldX) * mixX; - bone.worldY += (boneY - bone.worldY) * mixY; - var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; - if (scale) { - var length_3 = lengths[i]; - if (length_3 != 0) { - var s = (Math.sqrt(dx * dx + dy * dy) / length_3 - 1) * mixRotate + 1; - bone.a *= s; - bone.c *= s; - } - } - boneX = x; - boneY = y; - if (mixRotate > 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; - if (tangents) - r = positions[p - 1]; - else if (spaces[i + 1] == 0) - r = positions[p + 2]; - else - r = Math.atan2(dy, dx); - r -= Math.atan2(c, a); - if (tip) { - cos = Math.cos(r); - sin = Math.sin(r); - var length_4 = bone.data.length; - boneX += (length_4 * (cos * a - sin * c) - dx) * mixRotate; - boneY += (length_4 * (sin * a + cos * c) - dy) * mixRotate; - } - else { - r += offsetRotation; - } - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - cos = Math.cos(r); - sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - bone.updateAppliedTransform(); - } - }; - PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents) { - var target = this.target; - var position = this.position; - var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; - var closed = path.closed; - var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; - if (!path.constantSpeed) { - var lengths = path.lengths; - curveCount -= closed ? 1 : 2; - var pathLength_1 = lengths[curveCount]; - if (this.data.positionMode == spine.PositionMode.Percent) - position *= pathLength_1; - var multiplier_1; - switch (this.data.spacingMode) { - case spine.SpacingMode.Percent: - multiplier_1 = pathLength_1; - break; - case spine.SpacingMode.Proportional: - multiplier_1 = pathLength_1 / spacesCount; - break; - default: - multiplier_1 = 1; - } - world = spine.Utils.setArraySize(this.world, 8); - for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i] * multiplier_1; - position += space; - var p = position; - if (closed) { - p %= pathLength_1; - if (p < 0) - p += pathLength_1; - curve = 0; - } - else if (p < 0) { - if (prevCurve != PathConstraint.BEFORE) { - prevCurve = PathConstraint.BEFORE; - path.computeWorldVertices(target, 2, 4, world, 0, 2); - } - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength_1) { - if (prevCurve != PathConstraint.AFTER) { - prevCurve = PathConstraint.AFTER; - path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2); - } - this.addAfterPosition(p - pathLength_1, world, 0, out, o); - continue; - } - for (;; curve++) { - var length_5 = lengths[curve]; - if (p > length_5) - continue; - if (curve == 0) - p /= length_5; - else { - var prev = lengths[curve - 1]; - p = (p - prev) / (length_5 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - if (closed && curve == curveCount) { - path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2); - path.computeWorldVertices(target, 0, 4, world, 4, 2); - } - else - path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2); - } - this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); - } - return out; - } - if (closed) { - verticesLength += 2; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2); - path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2); - world[verticesLength - 2] = world[0]; - world[verticesLength - 1] = world[1]; - } - else { - curveCount--; - verticesLength -= 4; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); - } - var curves = spine.Utils.setArraySize(this.curves, curveCount); - var pathLength = 0; - var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; - var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; - for (var i = 0, w = 2; i < curveCount; i++, w += 6) { - cx1 = world[w]; - cy1 = world[w + 1]; - cx2 = world[w + 2]; - cy2 = world[w + 3]; - x2 = world[w + 4]; - y2 = world[w + 5]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; - tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - curves[i] = pathLength; - x1 = x2; - y1 = y2; - } - if (this.data.positionMode == spine.PositionMode.Percent) - position *= pathLength; - var multiplier; - switch (this.data.spacingMode) { - case spine.SpacingMode.Percent: - multiplier = pathLength; - break; - case spine.SpacingMode.Proportional: - multiplier = pathLength / spacesCount; - break; - default: - multiplier = 1; - } - var segments = this.segments; - var curveLength = 0; - for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i] * multiplier; - position += space; - var p = position; - if (closed) { - p %= pathLength; - if (p < 0) - p += pathLength; - curve = 0; - } - else if (p < 0) { - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength) { - this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); - continue; - } - for (;; curve++) { - var length_6 = curves[curve]; - if (p > length_6) - continue; - if (curve == 0) - p /= length_6; - else { - var prev = curves[curve - 1]; - p = (p - prev) / (length_6 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - var ii = curve * 6; - x1 = world[ii]; - y1 = world[ii + 1]; - cx1 = world[ii + 2]; - cy1 = world[ii + 3]; - cx2 = world[ii + 4]; - cy2 = world[ii + 5]; - x2 = world[ii + 6]; - y2 = world[ii + 7]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.03; - tmpy = (y1 - cy1 * 2 + cy2) * 0.03; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; - curveLength = Math.sqrt(dfx * dfx + dfy * dfy); - segments[0] = curveLength; - for (ii = 1; ii < 8; ii++) { - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[ii] = curveLength; - } - dfx += ddfx; - dfy += ddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[8] = curveLength; - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[9] = curveLength; - segment = 0; - } - p *= curveLength; - for (;; segment++) { - var length_7 = segments[segment]; - if (p > length_7) - continue; - if (segment == 0) - p /= length_7; - else { - var prev = segments[segment - 1]; - p = segment + (p - prev) / (length_7 - prev); - } - break; - } - this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); - } - return out; - }; - PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { - var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { - var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { - if (p == 0 || isNaN(p)) { - out[o] = x1; - out[o + 1] = y1; - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - return; - } - var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; - var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; - var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; - out[o] = x; - out[o + 1] = y; - if (tangents) { - if (p < 0.001) - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - else - out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); - } - }; - PathConstraint.NONE = -1; - PathConstraint.BEFORE = -2; - PathConstraint.AFTER = -3; - PathConstraint.epsilon = 0.00001; - return PathConstraint; - }()); - spine.PathConstraint = PathConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraintData = (function (_super) { - __extends(PathConstraintData, _super); - function PathConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.mixRotate = 0; - _this.mixX = 0; - _this.mixY = 0; - return _this; - } - return PathConstraintData; - }(spine.ConstraintData)); - spine.PathConstraintData = PathConstraintData; - var PositionMode; - (function (PositionMode) { - PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; - PositionMode[PositionMode["Percent"] = 1] = "Percent"; - })(PositionMode = spine.PositionMode || (spine.PositionMode = {})); - var SpacingMode; - (function (SpacingMode) { - SpacingMode[SpacingMode["Length"] = 0] = "Length"; - SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; - SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; - SpacingMode[SpacingMode["Proportional"] = 3] = "Proportional"; - })(SpacingMode = spine.SpacingMode || (spine.SpacingMode = {})); - var RotateMode; - (function (RotateMode) { - RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; - RotateMode[RotateMode["Chain"] = 1] = "Chain"; - RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; - })(RotateMode = spine.RotateMode || (spine.RotateMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Skeleton = (function () { - function Skeleton(data) { - this._updateCache = new Array(); - this.time = 0; - this.scaleX = 1; - this.scaleY = 1; - this.x = 0; - this.y = 0; - if (!data) - throw new Error("data cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) { - var boneData = data.bones[i]; - var bone = void 0; - if (!boneData.parent) - bone = new spine.Bone(boneData, this, null); - else { - var parent_1 = this.bones[boneData.parent.index]; - bone = new spine.Bone(boneData, this, parent_1); - parent_1.children.push(bone); - } - this.bones.push(bone); - } - this.slots = new Array(); - this.drawOrder = new Array(); - for (var i = 0; i < data.slots.length; i++) { - var slotData = data.slots[i]; - var bone = this.bones[slotData.boneData.index]; - var slot = new spine.Slot(slotData, bone); - this.slots.push(slot); - this.drawOrder.push(slot); - } - this.ikConstraints = new Array(); - for (var i = 0; i < data.ikConstraints.length; i++) { - var ikConstraintData = data.ikConstraints[i]; - this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); - } - this.transformConstraints = new Array(); - for (var i = 0; i < data.transformConstraints.length; i++) { - var transformConstraintData = data.transformConstraints[i]; - this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); - } - this.pathConstraints = new Array(); - for (var i = 0; i < data.pathConstraints.length; i++) { - var pathConstraintData = data.pathConstraints[i]; - this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); - } - this.color = new spine.Color(1, 1, 1, 1); - this.updateCache(); - } - Skeleton.prototype.updateCache = function () { - var updateCache = this._updateCache; - updateCache.length = 0; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - bone.sorted = bone.data.skinRequired; - bone.active = !bone.sorted; - } - if (this.skin) { - var skinBones = this.skin.bones; - for (var i = 0, n = this.skin.bones.length; i < n; i++) { - var bone = this.bones[skinBones[i].index]; - do { - bone.sorted = false; - bone.active = true; - bone = bone.parent; - } while (bone); - } - } - var ikConstraints = this.ikConstraints; - var transformConstraints = this.transformConstraints; - var pathConstraints = this.pathConstraints; - var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length; - var constraintCount = ikCount + transformCount + pathCount; - outer: for (var i = 0; i < constraintCount; i++) { - for (var ii = 0; ii < ikCount; ii++) { - var constraint = ikConstraints[ii]; - if (constraint.data.order == i) { - this.sortIkConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < transformCount; ii++) { - var constraint = transformConstraints[ii]; - if (constraint.data.order == i) { - this.sortTransformConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < pathCount; ii++) { - var constraint = pathConstraints[ii]; - if (constraint.data.order == i) { - this.sortPathConstraint(constraint); - continue outer; - } - } - } - for (var i = 0, n = bones.length; i < n; i++) - this.sortBone(bones[i]); - }; - Skeleton.prototype.sortIkConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var target = constraint.target; - this.sortBone(target); - var constrained = constraint.bones; - var parent = constrained[0]; - this.sortBone(parent); - if (constrained.length == 1) { - this._updateCache.push(constraint); - this.sortReset(parent.children); - } - else { - var child = constrained[constrained.length - 1]; - this.sortBone(child); - this._updateCache.push(constraint); - this.sortReset(parent.children); - child.sorted = true; - } - }; - Skeleton.prototype.sortPathConstraint = function (constraint) { - constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var slot = constraint.target; - var slotIndex = slot.data.index; - var slotBone = slot.bone; - if (this.skin) - this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); - if (this.data.defaultSkin && this.data.defaultSkin != this.skin) - this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); - for (var i = 0, n = this.data.skins.length; i < n; i++) - this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone); - var attachment = slot.getAttachment(); - if (attachment instanceof spine.PathAttachment) - this.sortPathConstraintAttachmentWith(attachment, slotBone); - var constrained = constraint.bones; - var boneCount = constrained.length; - for (var i = 0; i < boneCount; i++) - this.sortBone(constrained[i]); - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortTransformConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - this.sortBone(constraint.target); - var constrained = constraint.bones; - var boneCount = constrained.length; - if (constraint.data.local) { - for (var i = 0; i < boneCount; i++) { - var child = constrained[i]; - this.sortBone(child.parent); - this.sortBone(child); - } - } - else { - for (var i = 0; i < boneCount; i++) { - this.sortBone(constrained[i]); - } - } - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { - var attachments = skin.attachments[slotIndex]; - if (!attachments) - return; - for (var key in attachments) { - this.sortPathConstraintAttachmentWith(attachments[key], slotBone); - } - }; - Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { - if (!(attachment instanceof spine.PathAttachment)) - return; - var pathBones = attachment.bones; - if (!pathBones) - this.sortBone(slotBone); - else { - var bones = this.bones; - for (var i = 0, n = pathBones.length; i < n;) { - var nn = pathBones[i++]; - nn += i; - while (i < nn) - this.sortBone(bones[pathBones[i++]]); - } - } - }; - Skeleton.prototype.sortBone = function (bone) { - if (bone.sorted) - return; - var parent = bone.parent; - if (parent) - this.sortBone(parent); - bone.sorted = true; - this._updateCache.push(bone); - }; - Skeleton.prototype.sortReset = function (bones) { - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (!bone.active) - continue; - if (bone.sorted) - this.sortReset(bone.children); - bone.sorted = false; - } - }; - Skeleton.prototype.updateWorldTransform = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - bone.ax = bone.x; - bone.ay = bone.y; - bone.arotation = bone.rotation; - bone.ascaleX = bone.scaleX; - bone.ascaleY = bone.scaleY; - bone.ashearX = bone.shearX; - bone.ashearY = bone.shearY; - } - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) - updateCache[i].update(); - }; - Skeleton.prototype.updateWorldTransformWith = function (parent) { - var rootBone = this.getRootBone(); - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - rootBone.worldX = pa * this.x + pb * this.y + parent.worldX; - rootBone.worldY = pc * this.x + pd * this.y + parent.worldY; - var rotationY = rootBone.rotation + 90 + rootBone.shearY; - var la = spine.MathUtils.cosDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * rootBone.scaleY; - var lc = spine.MathUtils.sinDeg(rootBone.rotation + rootBone.shearX) * rootBone.scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * rootBone.scaleY; - rootBone.a = (pa * la + pb * lc) * this.scaleX; - rootBone.b = (pa * lb + pb * ld) * this.scaleX; - rootBone.c = (pc * la + pd * lc) * this.scaleY; - rootBone.d = (pc * lb + pd * ld) * this.scaleY; - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) { - var updatable = updateCache[i]; - if (updatable != rootBone) - updatable.update(); - } - }; - Skeleton.prototype.setToSetupPose = function () { - this.setBonesToSetupPose(); - this.setSlotsToSetupPose(); - }; - Skeleton.prototype.setBonesToSetupPose = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - bones[i].setToSetupPose(); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - var data = constraint.data; - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - constraint.mixScaleX = data.mixScaleX; - constraint.mixScaleY = data.mixScaleY; - constraint.mixShearY = data.mixShearY; - } - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - var data = constraint.data; - constraint.position = data.position; - constraint.spacing = data.spacing; - constraint.mixRotate = data.mixRotate; - constraint.mixX = data.mixX; - constraint.mixY = data.mixY; - } - }; - Skeleton.prototype.setSlotsToSetupPose = function () { - var slots = this.slots; - spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); - for (var i = 0, n = slots.length; i < n; i++) - slots[i].setToSetupPose(); - }; - Skeleton.prototype.getRootBone = function () { - if (this.bones.length == 0) - return null; - return this.bones[0]; - }; - Skeleton.prototype.findBone = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.data.name == boneName) - return bone; - } - return null; - }; - Skeleton.prototype.findBoneIndex = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].data.name == boneName) - return i; - return -1; - }; - Skeleton.prototype.findSlot = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) - return slot; - } - return null; - }; - Skeleton.prototype.findSlotIndex = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].data.name == slotName) - return i; - return -1; - }; - Skeleton.prototype.setSkinByName = function (skinName) { - var skin = this.data.findSkin(skinName); - if (!skin) - throw new Error("Skin not found: " + skinName); - this.setSkin(skin); - }; - Skeleton.prototype.setSkin = function (newSkin) { - if (newSkin == this.skin) - return; - if (newSkin) { - if (this.skin) - newSkin.attachAll(this, this.skin); - else { - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var name_1 = slot.data.attachmentName; - if (name_1) { - var attachment = newSkin.getAttachment(i, name_1); - if (attachment) - slot.setAttachment(attachment); - } - } - } - } - this.skin = newSkin; - this.updateCache(); - }; - Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { - return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); - }; - Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { - if (!attachmentName) - throw new Error("attachmentName cannot be null."); - if (this.skin) { - var attachment = this.skin.getAttachment(slotIndex, attachmentName); - if (attachment) - return attachment; - } - if (this.data.defaultSkin) - return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); - return null; - }; - Skeleton.prototype.setAttachment = function (slotName, attachmentName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) { - var attachment = null; - if (attachmentName) { - attachment = this.getAttachment(i, attachmentName); - if (!attachment) - throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); - } - slot.setAttachment(attachment); - return; - } - } - throw new Error("Slot not found: " + slotName); - }; - Skeleton.prototype.findIkConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var ikConstraint = ikConstraints[i]; - if (ikConstraint.data.name == constraintName) - return ikConstraint; - } - return null; - }; - Skeleton.prototype.findTransformConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.findPathConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.getBounds = function (offset, size, temp) { - if (temp === void 0) { temp = new Array(2); } - if (!offset) - throw new Error("offset cannot be null."); - if (!size) - throw new Error("size cannot be null."); - var drawOrder = this.drawOrder; - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - if (!slot.bone.active) - continue; - var verticesLength = 0; - var vertices = null; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - verticesLength = 8; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - attachment.computeWorldVertices(slot.bone, vertices, 0, 2); - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - verticesLength = mesh.worldVerticesLength; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2); - } - if (vertices) { - for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - } - offset.set(minX, minY); - size.set(maxX - minX, maxY - minY); - }; - Skeleton.prototype.update = function (delta) { - this.time += delta; - }; - return Skeleton; - }()); - spine.Skeleton = Skeleton; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBinary = (function () { - function SkeletonBinary(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonBinary.prototype.readSkeletonData = function (binary) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - skeletonData.name = ""; - var input = new BinaryInput(binary); - var lowHash = input.readInt32(); - var highHash = input.readInt32(); - skeletonData.hash = highHash == 0 && lowHash == 0 ? null : highHash.toString(16) + lowHash.toString(16); - skeletonData.version = input.readString(); - skeletonData.x = input.readFloat(); - skeletonData.y = input.readFloat(); - skeletonData.width = input.readFloat(); - skeletonData.height = input.readFloat(); - var nonessential = input.readBoolean(); - if (nonessential) { - skeletonData.fps = input.readFloat(); - skeletonData.imagesPath = input.readString(); - skeletonData.audioPath = input.readString(); - } - var n = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) - input.strings.push(input.readString()); - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var name_2 = input.readString(); - var parent_2 = i == 0 ? null : skeletonData.bones[input.readInt(true)]; - var data = new spine.BoneData(i, name_2, parent_2); - data.rotation = input.readFloat(); - data.x = input.readFloat() * scale; - data.y = input.readFloat() * scale; - data.scaleX = input.readFloat(); - data.scaleY = input.readFloat(); - data.shearX = input.readFloat(); - data.shearY = input.readFloat(); - data.length = input.readFloat() * scale; - data.transformMode = input.readInt(true); - data.skinRequired = input.readBoolean(); - if (nonessential) - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - skeletonData.bones.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var slotName = input.readString(); - var boneData = skeletonData.bones[input.readInt(true)]; - var data = new spine.SlotData(i, slotName, boneData); - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - var darkColor = input.readInt32(); - if (darkColor != -1) - spine.Color.rgb888ToColor(data.darkColor = new spine.Color(), darkColor); - data.attachmentName = input.readStringRef(); - data.blendMode = input.readInt(true); - skeletonData.slots.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.IkConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.mix = input.readFloat(); - data.softness = input.readFloat() * scale; - data.bendDirection = input.readByte(); - data.compress = input.readBoolean(); - data.stretch = input.readBoolean(); - data.uniform = input.readBoolean(); - skeletonData.ikConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.TransformConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.local = input.readBoolean(); - data.relative = input.readBoolean(); - data.offsetRotation = input.readFloat(); - data.offsetX = input.readFloat() * scale; - data.offsetY = input.readFloat() * scale; - data.offsetScaleX = input.readFloat(); - data.offsetScaleY = input.readFloat(); - data.offsetShearY = input.readFloat(); - data.mixRotate = input.readFloat(); - data.mixX = input.readFloat(); - data.mixY = input.readFloat(); - data.mixScaleX = input.readFloat(); - data.mixScaleY = input.readFloat(); - data.mixShearY = input.readFloat(); - skeletonData.transformConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.PathConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.slots[input.readInt(true)]; - data.positionMode = input.readInt(true); - data.spacingMode = input.readInt(true); - data.rotateMode = input.readInt(true); - data.offsetRotation = input.readFloat(); - data.position = input.readFloat(); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = input.readFloat(); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.mixRotate = input.readFloat(); - data.mixX = input.readFloat(); - data.mixY = input.readFloat(); - skeletonData.pathConstraints.push(data); - } - var defaultSkin = this.readSkin(input, skeletonData, true, nonessential); - if (defaultSkin) { - skeletonData.defaultSkin = defaultSkin; - skeletonData.skins.push(defaultSkin); - } - { - var i = skeletonData.skins.length; - spine.Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); - for (; i < n; i++) - skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential); - } - n = this.linkedMeshes.length; - for (var i = 0; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - var parent_3 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_3 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_3); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var data = new spine.EventData(input.readStringRef()); - data.intValue = input.readInt(false); - data.floatValue = input.readFloat(); - data.stringValue = input.readString(); - data.audioPath = input.readString(); - if (data.audioPath) { - data.volume = input.readFloat(); - data.balance = input.readFloat(); - } - skeletonData.events.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) - skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData)); - return skeletonData; - }; - SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) { - var skin = null; - var slotCount = 0; - if (defaultSkin) { - slotCount = input.readInt(true); - if (slotCount == 0) - return null; - skin = new spine.Skin("default"); - } - else { - skin = new spine.Skin(input.readStringRef()); - skin.bones.length = input.readInt(true); - for (var i = 0, n = skin.bones.length; i < n; i++) - skin.bones[i] = skeletonData.bones[input.readInt(true)]; - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]); - slotCount = input.readInt(true); - } - for (var i = 0; i < slotCount; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var name_3 = input.readStringRef(); - var attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name_3, nonessential); - if (attachment) - skin.setAttachment(slotIndex, name_3, attachment); - } - } - return skin; - }; - SkeletonBinary.prototype.readAttachment = function (input, skeletonData, skin, slotIndex, attachmentName, nonessential) { - var scale = this.scale; - var name = input.readStringRef(); - if (!name) - name = attachmentName; - switch (input.readByte()) { - case AttachmentType.Region: { - var path = input.readStringRef(); - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var scaleX = input.readFloat(); - var scaleY = input.readFloat(); - var width = input.readFloat(); - var height = input.readFloat(); - var color = input.readInt32(); - if (!path) - path = name; - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (!region) - return null; - region.path = path; - region.x = x * scale; - region.y = y * scale; - region.scaleX = scaleX; - region.scaleY = scaleY; - region.rotation = rotation; - region.width = width * scale; - region.height = height * scale; - spine.Color.rgba8888ToColor(region.color, color); - region.updateOffset(); - return region; - } - case AttachmentType.BoundingBox: { - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (!box) - return null; - box.worldVerticesLength = vertexCount << 1; - box.vertices = vertices.vertices; - box.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(box.color, color); - return box; - } - case AttachmentType.Mesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var vertexCount = input.readInt(true); - var uvs = this.readFloatArray(input, vertexCount << 1, 1); - var triangles = this.readShortArray(input); - var vertices = this.readVertices(input, vertexCount); - var hullLength = input.readInt(true); - var edges = null; - var width = 0, height = 0; - if (nonessential) { - edges = this.readShortArray(input); - width = input.readFloat(); - height = input.readFloat(); - } - if (!path) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - mesh.bones = vertices.bones; - mesh.vertices = vertices.vertices; - mesh.worldVerticesLength = vertexCount << 1; - mesh.triangles = triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.hullLength = hullLength << 1; - if (nonessential) { - mesh.edges = edges; - mesh.width = width * scale; - mesh.height = height * scale; - } - return mesh; - } - case AttachmentType.LinkedMesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var skinName = input.readStringRef(); - var parent_4 = input.readStringRef(); - var inheritDeform = input.readBoolean(); - var width = 0, height = 0; - if (nonessential) { - width = input.readFloat(); - height = input.readFloat(); - } - if (!path) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - if (nonessential) { - mesh.width = width * scale; - mesh.height = height * scale; - } - this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent_4, inheritDeform)); - return mesh; - } - case AttachmentType.Path: { - var closed_1 = input.readBoolean(); - var constantSpeed = input.readBoolean(); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0, n = lengths.length; i < n; i++) - lengths[i] = input.readFloat() * scale; - var color = nonessential ? input.readInt32() : 0; - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (!path) - return null; - path.closed = closed_1; - path.constantSpeed = constantSpeed; - path.worldVerticesLength = vertexCount << 1; - path.vertices = vertices.vertices; - path.bones = vertices.bones; - path.lengths = lengths; - if (nonessential) - spine.Color.rgba8888ToColor(path.color, color); - return path; - } - case AttachmentType.Point: { - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var color = nonessential ? input.readInt32() : 0; - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (!point) - return null; - point.x = x * scale; - point.y = y * scale; - point.rotation = rotation; - if (nonessential) - spine.Color.rgba8888ToColor(point.color, color); - return point; - } - case AttachmentType.Clipping: { - var endSlotIndex = input.readInt(true); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (!clip) - return null; - clip.endSlot = skeletonData.slots[endSlotIndex]; - clip.worldVerticesLength = vertexCount << 1; - clip.vertices = vertices.vertices; - clip.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(clip.color, color); - return clip; - } - } - return null; - }; - SkeletonBinary.prototype.readVertices = function (input, vertexCount) { - var scale = this.scale; - var verticesLength = vertexCount << 1; - var vertices = new Vertices(); - if (!input.readBoolean()) { - vertices.vertices = this.readFloatArray(input, verticesLength, scale); - return vertices; - } - var weights = new Array(); - var bonesArray = new Array(); - for (var i = 0; i < vertexCount; i++) { - var boneCount = input.readInt(true); - bonesArray.push(boneCount); - for (var ii = 0; ii < boneCount; ii++) { - bonesArray.push(input.readInt(true)); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat()); - } - } - vertices.vertices = spine.Utils.toFloatArray(weights); - vertices.bones = bonesArray; - return vertices; - }; - SkeletonBinary.prototype.readFloatArray = function (input, n, scale) { - var array = new Array(n); - if (scale == 1) { - for (var i = 0; i < n; i++) - array[i] = input.readFloat(); - } - else { - for (var i = 0; i < n; i++) - array[i] = input.readFloat() * scale; - } - return array; - }; - SkeletonBinary.prototype.readShortArray = function (input) { - var n = input.readInt(true); - var array = new Array(n); - for (var i = 0; i < n; i++) - array[i] = input.readShort(); - return array; - }; - SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) { - input.readInt(true); - var timelines = new Array(); - var scale = this.scale; - var tempColor1 = new spine.Color(); - var tempColor2 = new spine.Color(); - for (var i = 0, n = input.readInt(true); i < n; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var timelineType = input.readByte(); - var frameCount = input.readInt(true); - var frameLast = frameCount - 1; - switch (timelineType) { - case SLOT_ATTACHMENT: { - var timeline = new spine.AttachmentTimeline(frameCount, slotIndex); - for (var frame = 0; frame < frameCount; frame++) - timeline.setFrame(frame, input.readFloat(), input.readStringRef()); - timelines.push(timeline); - break; - } - case SLOT_RGBA: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBATimeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var a = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, a); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - var a2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, a, a2, 1); - } - time = time2; - r = r2; - g = g2; - b = b2; - a = a2; - } - timelines.push(timeline); - break; - } - case SLOT_RGB: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBTimeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1); - } - time = time2; - r = r2; - g = g2; - b = b2; - } - timelines.push(timeline); - break; - } - case SLOT_RGBA2: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGBA2Timeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var a = input.readUnsignedByte() / 255.0; - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, a, r2, g2, b2); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var nr = input.readUnsignedByte() / 255.0; - var ng = input.readUnsignedByte() / 255.0; - var nb = input.readUnsignedByte() / 255.0; - var na = input.readUnsignedByte() / 255.0; - var nr2 = input.readUnsignedByte() / 255.0; - var ng2 = input.readUnsignedByte() / 255.0; - var nb2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, a, na, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, r2, nr2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, g2, ng2, 1); - setBezier(input, timeline, bezier++, frame, 6, time, time2, b2, nb2, 1); - } - time = time2; - r = nr; - g = ng; - b = nb; - a = na; - r2 = nr2; - g2 = ng2; - b2 = nb2; - } - timelines.push(timeline); - break; - } - case SLOT_RGB2: { - var bezierCount = input.readInt(true); - var timeline = new spine.RGB2Timeline(frameCount, bezierCount, slotIndex); - var time = input.readFloat(); - var r = input.readUnsignedByte() / 255.0; - var g = input.readUnsignedByte() / 255.0; - var b = input.readUnsignedByte() / 255.0; - var r2 = input.readUnsignedByte() / 255.0; - var g2 = input.readUnsignedByte() / 255.0; - var b2 = input.readUnsignedByte() / 255.0; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, r, g, b, r2, g2, b2); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var nr = input.readUnsignedByte() / 255.0; - var ng = input.readUnsignedByte() / 255.0; - var nb = input.readUnsignedByte() / 255.0; - var nr2 = input.readUnsignedByte() / 255.0; - var ng2 = input.readUnsignedByte() / 255.0; - var nb2 = input.readUnsignedByte() / 255.0; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, r2, nr2, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, g2, ng2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, b2, nb2, 1); - } - time = time2; - r = nr; - g = ng; - b = nb; - r2 = nr2; - g2 = ng2; - b2 = nb2; - } - timelines.push(timeline); - break; - } - case SLOT_ALPHA: { - var timeline = new spine.AlphaTimeline(frameCount, input.readInt(true), slotIndex); - var time = input.readFloat(), a = input.readUnsignedByte() / 255; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, a); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - var a2 = input.readUnsignedByte() / 255; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, a, a2, 1); - } - time = time2; - a = a2; - } - timelines.push(timeline); - break; - } - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var boneIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true); - switch (type) { - case BONE_ROTATE: - timelines.push(readTimeline1(input, new spine.RotateTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_TRANSLATE: - timelines.push(readTimeline2(input, new spine.TranslateTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_TRANSLATEX: - timelines.push(readTimeline1(input, new spine.TranslateXTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_TRANSLATEY: - timelines.push(readTimeline1(input, new spine.TranslateYTimeline(frameCount, bezierCount, boneIndex), scale)); - break; - case BONE_SCALE: - timelines.push(readTimeline2(input, new spine.ScaleTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SCALEX: - timelines.push(readTimeline1(input, new spine.ScaleXTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SCALEY: - timelines.push(readTimeline1(input, new spine.ScaleYTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEAR: - timelines.push(readTimeline2(input, new spine.ShearTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEARX: - timelines.push(readTimeline1(input, new spine.ShearXTimeline(frameCount, bezierCount, boneIndex), 1)); - break; - case BONE_SHEARY: - timelines.push(readTimeline1(input, new spine.ShearYTimeline(frameCount, bezierCount, boneIndex), 1)); - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; - var timeline = new spine.IkConstraintTimeline(frameCount, input.readInt(true), index); - var time = input.readFloat(), mix = input.readFloat(), softness = input.readFloat() * scale; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mix, softness, input.readByte(), input.readBoolean(), input.readBoolean()); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mix2 = input.readFloat(), softness2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale); - } - time = time2; - mix = mix2; - softness = softness2; - } - timelines.push(timeline); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1; - var timeline = new spine.TransformConstraintTimeline(frameCount, input.readInt(true), index); - var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(), mixScaleX = input.readFloat(), mixScaleY = input.readFloat(), mixShearY = input.readFloat(); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(), mixScaleX2 = input.readFloat(), mixScaleY2 = input.readFloat(), mixShearY2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); - setBezier(input, timeline, bezier++, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); - setBezier(input, timeline, bezier++, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); - setBezier(input, timeline, bezier++, frame, 5, time, time2, mixShearY, mixShearY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - mixScaleX = mixScaleX2; - mixScaleY = mixScaleY2; - mixShearY = mixShearY2; - } - timelines.push(timeline); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true); - var data = skeletonData.pathConstraints[index]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - switch (input.readByte()) { - case PATH_POSITION: - timelines - .push(readTimeline1(input, new spine.PathConstraintPositionTimeline(input.readInt(true), input.readInt(true), index), data.positionMode == spine.PositionMode.Fixed ? scale : 1)); - break; - case PATH_SPACING: - timelines - .push(readTimeline1(input, new spine.PathConstraintSpacingTimeline(input.readInt(true), input.readInt(true), index), data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed ? scale : 1)); - break; - case PATH_MIX: - var timeline = new spine.PathConstraintMixTimeline(input.readInt(true), input.readInt(true), index); - var time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(); - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY); - if (frame == frameLast) - break; - var time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1); - setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1); - setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - } - timelines.push(timeline); - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var skin = skeletonData.skins[input.readInt(true)]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var slotIndex = input.readInt(true); - for (var iii = 0, nnn = input.readInt(true); iii < nnn; iii++) { - var attachmentName = input.readStringRef(); - var attachment = skin.getAttachment(slotIndex, attachmentName); - var weighted = attachment.bones; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var frameCount = input.readInt(true); - var frameLast = frameCount - 1; - var bezierCount = input.readInt(true); - var timeline = new spine.DeformTimeline(frameCount, bezierCount, slotIndex, attachment); - var time = input.readFloat(); - for (var frame = 0, bezier = 0;; frame++) { - var deform = void 0; - var end = input.readInt(true); - if (end == 0) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = input.readInt(true); - end += start; - if (scale == 1) { - for (var v = start; v < end; v++) - deform[v] = input.readFloat(); - } - else { - for (var v = start; v < end; v++) - deform[v] = input.readFloat() * scale; - } - if (!weighted) { - for (var v = 0, vn = deform.length; v < vn; v++) - deform[v] += vertices[v]; - } - } - timeline.setFrame(frame, time, deform); - if (frame == frameLast) - break; - var time2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1); - } - time = time2; - } - timelines.push(timeline); - } - } - } - var drawOrderCount = input.readInt(true); - if (drawOrderCount > 0) { - var timeline = new spine.DrawOrderTimeline(drawOrderCount); - var slotCount = skeletonData.slots.length; - for (var i = 0; i < drawOrderCount; i++) { - var time = input.readFloat(); - var offsetCount = input.readInt(true); - var drawOrder = spine.Utils.newArray(slotCount, 0); - for (var ii = slotCount - 1; ii >= 0; ii--) - drawOrder[ii] = -1; - var unchanged = spine.Utils.newArray(slotCount - offsetCount, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var ii = 0; ii < offsetCount; ii++) { - var slotIndex = input.readInt(true); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + input.readInt(true)] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var ii = slotCount - 1; ii >= 0; ii--) - if (drawOrder[ii] == -1) - drawOrder[ii] = unchanged[--unchangedIndex]; - timeline.setFrame(i, time, drawOrder); - } - timelines.push(timeline); - } - var eventCount = input.readInt(true); - if (eventCount > 0) { - var timeline = new spine.EventTimeline(eventCount); - for (var i = 0; i < eventCount; i++) { - var time = input.readFloat(); - var eventData = skeletonData.events[input.readInt(true)]; - var event_4 = new spine.Event(time, eventData); - event_4.intValue = input.readInt(false); - event_4.floatValue = input.readFloat(); - event_4.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue; - if (event_4.data.audioPath) { - event_4.volume = input.readFloat(); - event_4.balance = input.readFloat(); - } - timeline.setFrame(i, event_4); - } - timelines.push(timeline); - } - var duration = 0; - for (var i = 0, n = timelines.length; i < n; i++) - duration = Math.max(duration, timelines[i].getDuration()); - return new spine.Animation(name, timelines, duration); - }; - return SkeletonBinary; - }()); - spine.SkeletonBinary = SkeletonBinary; - var BinaryInput = (function () { - function BinaryInput(data, strings, index, buffer) { - if (strings === void 0) { strings = new Array(); } - if (index === void 0) { index = 0; } - if (buffer === void 0) { buffer = new DataView(data.buffer); } - this.strings = strings; - this.index = index; - this.buffer = buffer; - } - BinaryInput.prototype.readByte = function () { - return this.buffer.getInt8(this.index++); - }; - BinaryInput.prototype.readUnsignedByte = function () { - return this.buffer.getUint8(this.index++); - }; - BinaryInput.prototype.readShort = function () { - var value = this.buffer.getInt16(this.index); - this.index += 2; - return value; - }; - BinaryInput.prototype.readInt32 = function () { - var value = this.buffer.getInt32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readInt = function (optimizePositive) { - var b = this.readByte(); - var result = b & 0x7F; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 7; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 14; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 21; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 28; - } - } - } - } - return optimizePositive ? result : ((result >>> 1) ^ -(result & 1)); - }; - BinaryInput.prototype.readStringRef = function () { - var index = this.readInt(true); - return index == 0 ? null : this.strings[index - 1]; - }; - BinaryInput.prototype.readString = function () { - var byteCount = this.readInt(true); - switch (byteCount) { - case 0: - return null; - case 1: - return ""; - } - byteCount--; - var chars = ""; - var charCount = 0; - for (var i = 0; i < byteCount;) { - var b = this.readByte(); - switch (b >> 4) { - case 12: - case 13: - chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F)); - i += 2; - break; - case 14: - chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F)); - i += 3; - break; - default: - chars += String.fromCharCode(b); - i++; - } - } - return chars; - }; - BinaryInput.prototype.readFloat = function () { - var value = this.buffer.getFloat32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readBoolean = function () { - return this.readByte() != 0; - }; - return BinaryInput; - }()); - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); - var Vertices = (function () { - function Vertices(bones, vertices) { - if (bones === void 0) { bones = null; } - if (vertices === void 0) { vertices = null; } - this.bones = bones; - this.vertices = vertices; - } - return Vertices; - }()); - var AttachmentType; - (function (AttachmentType) { - AttachmentType[AttachmentType["Region"] = 0] = "Region"; - AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; - AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; - AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; - AttachmentType[AttachmentType["Path"] = 4] = "Path"; - AttachmentType[AttachmentType["Point"] = 5] = "Point"; - AttachmentType[AttachmentType["Clipping"] = 6] = "Clipping"; - })(AttachmentType || (AttachmentType = {})); - function readTimeline1(input, timeline, scale) { - var time = input.readFloat(), value = input.readFloat() * scale; - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, value); - if (frame == frameLast) - break; - var time2 = input.readFloat(), value2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, value, value2, 1); - } - time = time2; - value = value2; - } - return timeline; - } - function readTimeline2(input, timeline, scale) { - var time = input.readFloat(), value1 = input.readFloat() * scale, value2 = input.readFloat() * scale; - for (var frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) { - timeline.setFrame(frame, time, value1, value2); - if (frame == frameLast) - break; - var time2 = input.readFloat(), nvalue1 = input.readFloat() * scale, nvalue2 = input.readFloat() * scale; - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, value1, nvalue1, scale); - setBezier(input, timeline, bezier++, frame, 1, time, time2, value2, nvalue2, scale); - } - time = time2; - value1 = nvalue1; - value2 = nvalue2; - } - return timeline; - } - function setBezier(input, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { - timeline.setBezier(bezier, frame, value, time1, value1, input.readFloat(), input.readFloat() * scale, input.readFloat(), input.readFloat() * scale, time2, value2); - } - var BONE_ROTATE = 0; - var BONE_TRANSLATE = 1; - var BONE_TRANSLATEX = 2; - var BONE_TRANSLATEY = 3; - var BONE_SCALE = 4; - var BONE_SCALEX = 5; - var BONE_SCALEY = 6; - var BONE_SHEAR = 7; - var BONE_SHEARX = 8; - var BONE_SHEARY = 9; - var SLOT_ATTACHMENT = 0; - var SLOT_RGBA = 1; - var SLOT_RGB = 2; - var SLOT_RGBA2 = 3; - var SLOT_RGB2 = 4; - var SLOT_ALPHA = 5; - var PATH_POSITION = 0; - var PATH_SPACING = 1; - var PATH_MIX = 2; - var CURVE_LINEAR = 0; - var CURVE_STEPPED = 1; - var CURVE_BEZIER = 2; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBounds = (function () { - function SkeletonBounds() { - this.minX = 0; - this.minY = 0; - this.maxX = 0; - this.maxY = 0; - this.boundingBoxes = new Array(); - this.polygons = new Array(); - this.polygonPool = new spine.Pool(function () { - return spine.Utils.newFloatArray(16); - }); - } - SkeletonBounds.prototype.update = function (skeleton, updateAabb) { - if (!skeleton) - throw new Error("skeleton cannot be null."); - var boundingBoxes = this.boundingBoxes; - var polygons = this.polygons; - var polygonPool = this.polygonPool; - var slots = skeleton.slots; - var slotCount = slots.length; - boundingBoxes.length = 0; - polygonPool.freeAll(polygons); - polygons.length = 0; - for (var i = 0; i < slotCount; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.BoundingBoxAttachment) { - var boundingBox = attachment; - boundingBoxes.push(boundingBox); - var polygon = polygonPool.obtain(); - if (polygon.length != boundingBox.worldVerticesLength) { - polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); - } - polygons.push(polygon); - boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2); - } - } - if (updateAabb) { - this.aabbCompute(); - } - else { - this.minX = Number.POSITIVE_INFINITY; - this.minY = Number.POSITIVE_INFINITY; - this.maxX = Number.NEGATIVE_INFINITY; - this.maxY = Number.NEGATIVE_INFINITY; - } - }; - SkeletonBounds.prototype.aabbCompute = function () { - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - var vertices = polygon; - for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { - var x = vertices[ii]; - var y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - this.minX = minX; - this.minY = minY; - this.maxX = maxX; - this.maxY = maxY; - }; - SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { - return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; - }; - SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { - var minX = this.minX; - var minY = this.minY; - var maxX = this.maxX; - var maxY = this.maxY; - if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) - return false; - var m = (y2 - y1) / (x2 - x1); - var y = m * (minX - x1) + y1; - if (y > minY && y < maxY) - return true; - y = m * (maxX - x1) + y1; - if (y > minY && y < maxY) - return true; - var x = (minY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - x = (maxY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - return false; - }; - SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { - return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; - }; - SkeletonBounds.prototype.containsPoint = function (x, y) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.containsPointPolygon(polygons[i], x, y)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { - var vertices = polygon; - var nn = polygon.length; - var prevIndex = nn - 2; - var inside = false; - for (var ii = 0; ii < nn; ii += 2) { - var vertexY = vertices[ii + 1]; - var prevY = vertices[prevIndex + 1]; - if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { - var vertexX = vertices[ii]; - if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) - inside = !inside; - } - prevIndex = ii; - } - return inside; - }; - SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { - var vertices = polygon; - var nn = polygon.length; - var width12 = x1 - x2, height12 = y1 - y2; - var det1 = x1 * y2 - y1 * x2; - var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; - for (var ii = 0; ii < nn; ii += 2) { - var x4 = vertices[ii], y4 = vertices[ii + 1]; - var det2 = x3 * y4 - y3 * x4; - var width34 = x3 - x4, height34 = y3 - y4; - var det3 = width12 * height34 - height12 * width34; - var x = (det1 * width34 - width12 * det2) / det3; - if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { - var y = (det1 * height34 - height12 * det2) / det3; - if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) - return true; - } - x3 = x4; - y3 = y4; - } - return false; - }; - SkeletonBounds.prototype.getPolygon = function (boundingBox) { - if (!boundingBox) - throw new Error("boundingBox cannot be null."); - var index = this.boundingBoxes.indexOf(boundingBox); - return index == -1 ? null : this.polygons[index]; - }; - SkeletonBounds.prototype.getWidth = function () { - return this.maxX - this.minX; - }; - SkeletonBounds.prototype.getHeight = function () { - return this.maxY - this.minY; - }; - return SkeletonBounds; - }()); - spine.SkeletonBounds = SkeletonBounds; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonClipping = (function () { - function SkeletonClipping() { - this.triangulator = new spine.Triangulator(); - this.clippingPolygon = new Array(); - this.clipOutput = new Array(); - this.clippedVertices = new Array(); - this.clippedTriangles = new Array(); - this.scratch = new Array(); - } - SkeletonClipping.prototype.clipStart = function (slot, clip) { - if (this.clipAttachment) - return 0; - this.clipAttachment = clip; - var n = clip.worldVerticesLength; - var vertices = spine.Utils.setArraySize(this.clippingPolygon, n); - clip.computeWorldVertices(slot, 0, n, vertices, 0, 2); - var clippingPolygon = this.clippingPolygon; - SkeletonClipping.makeClockwise(clippingPolygon); - var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon)); - for (var i = 0, n_2 = clippingPolygons.length; i < n_2; i++) { - var polygon = clippingPolygons[i]; - SkeletonClipping.makeClockwise(polygon); - polygon.push(polygon[0]); - polygon.push(polygon[1]); - } - return clippingPolygons.length; - }; - SkeletonClipping.prototype.clipEndWithSlot = function (slot) { - if (this.clipAttachment && this.clipAttachment.endSlot == slot.data) - this.clipEnd(); - }; - SkeletonClipping.prototype.clipEnd = function () { - if (!this.clipAttachment) - return; - this.clipAttachment = null; - this.clippingPolygons = null; - this.clippedVertices.length = 0; - this.clippedTriangles.length = 0; - this.clippingPolygon.length = 0; - }; - SkeletonClipping.prototype.isClipping = function () { - return this.clipAttachment != null; - }; - SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) { - var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; - var clippedTriangles = this.clippedTriangles; - var polygons = this.clippingPolygons; - var polygonsCount = this.clippingPolygons.length; - var vertexSize = twoColor ? 12 : 8; - var index = 0; - clippedVertices.length = 0; - clippedTriangles.length = 0; - outer: for (var i = 0; i < trianglesLength; i += 3) { - var vertexOffset = triangles[i] << 1; - var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1]; - var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 1] << 1; - var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1]; - var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 2] << 1; - var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1]; - var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1]; - for (var p = 0; p < polygonsCount; p++) { - var s = clippedVertices.length; - if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) { - var clipOutputLength = clipOutput.length; - if (clipOutputLength == 0) - continue; - var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; - var d = 1 / (d0 * d2 + d1 * (y1 - y3)); - var clipOutputCount = clipOutputLength >> 1; - var clipOutputItems = this.clipOutput; - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize); - for (var ii = 0; ii < clipOutputLength; ii += 2) { - var x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; - clippedVerticesItems[s] = x; - clippedVerticesItems[s + 1] = y; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - var c0 = x - x3, c1 = y - y3; - var a = (d0 * c0 + d1 * c1) * d; - var b = (d4 * c0 + d2 * c1) * d; - var c = 1 - a - b; - clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c; - clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c; - if (twoColor) { - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - } - s += vertexSize; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); - clipOutputCount--; - for (var ii = 1; ii < clipOutputCount; ii++) { - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + ii); - clippedTrianglesItems[s + 2] = (index + ii + 1); - s += 3; - } - index += clipOutputCount + 1; - } - else { - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + 3 * vertexSize); - clippedVerticesItems[s] = x1; - clippedVerticesItems[s + 1] = y1; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - if (!twoColor) { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = x2; - clippedVerticesItems[s + 9] = y2; - clippedVerticesItems[s + 10] = light.r; - clippedVerticesItems[s + 11] = light.g; - clippedVerticesItems[s + 12] = light.b; - clippedVerticesItems[s + 13] = light.a; - clippedVerticesItems[s + 14] = u2; - clippedVerticesItems[s + 15] = v2; - clippedVerticesItems[s + 16] = x3; - clippedVerticesItems[s + 17] = y3; - clippedVerticesItems[s + 18] = light.r; - clippedVerticesItems[s + 19] = light.g; - clippedVerticesItems[s + 20] = light.b; - clippedVerticesItems[s + 21] = light.a; - clippedVerticesItems[s + 22] = u3; - clippedVerticesItems[s + 23] = v3; - } - else { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - clippedVerticesItems[s + 12] = x2; - clippedVerticesItems[s + 13] = y2; - clippedVerticesItems[s + 14] = light.r; - clippedVerticesItems[s + 15] = light.g; - clippedVerticesItems[s + 16] = light.b; - clippedVerticesItems[s + 17] = light.a; - clippedVerticesItems[s + 18] = u2; - clippedVerticesItems[s + 19] = v2; - clippedVerticesItems[s + 20] = dark.r; - clippedVerticesItems[s + 21] = dark.g; - clippedVerticesItems[s + 22] = dark.b; - clippedVerticesItems[s + 23] = dark.a; - clippedVerticesItems[s + 24] = x3; - clippedVerticesItems[s + 25] = y3; - clippedVerticesItems[s + 26] = light.r; - clippedVerticesItems[s + 27] = light.g; - clippedVerticesItems[s + 28] = light.b; - clippedVerticesItems[s + 29] = light.a; - clippedVerticesItems[s + 30] = u3; - clippedVerticesItems[s + 31] = v3; - clippedVerticesItems[s + 32] = dark.r; - clippedVerticesItems[s + 33] = dark.g; - clippedVerticesItems[s + 34] = dark.b; - clippedVerticesItems[s + 35] = dark.a; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3); - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + 1); - clippedTrianglesItems[s + 2] = (index + 2); - index += 3; - continue outer; - } - } - } - }; - SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) { - var originalOutput = output; - var clipped = false; - var input = null; - if (clippingArea.length % 4 >= 2) { - input = output; - output = this.scratch; - } - else - input = this.scratch; - input.length = 0; - input.push(x1); - input.push(y1); - input.push(x2); - input.push(y2); - input.push(x3); - input.push(y3); - input.push(x1); - input.push(y1); - output.length = 0; - var clippingVertices = clippingArea; - var clippingVerticesLast = clippingArea.length - 4; - for (var i = 0;; i += 2) { - var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; - var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; - var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; - var inputVertices = input; - var inputVerticesLength = input.length - 2, outputStart = output.length; - for (var ii = 0; ii < inputVerticesLength; ii += 2) { - var inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; - var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; - var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; - if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { - if (side2) { - output.push(inputX2); - output.push(inputY2); - continue; - } - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - } - else if (side2) { - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - output.push(inputX2); - output.push(inputY2); - } - clipped = true; - } - if (outputStart == output.length) { - originalOutput.length = 0; - return true; - } - output.push(output[0]); - output.push(output[1]); - if (i == clippingVerticesLast) - break; - var temp = output; - output = input; - output.length = 0; - input = temp; - } - if (originalOutput != output) { - originalOutput.length = 0; - for (var i = 0, n = output.length - 2; i < n; i++) - originalOutput[i] = output[i]; - } - else - originalOutput.length = originalOutput.length - 2; - return clipped; - }; - SkeletonClipping.makeClockwise = function (polygon) { - var vertices = polygon; - var verticeslength = polygon.length; - var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0; - for (var i = 0, n = verticeslength - 3; i < n; i += 2) { - p1x = vertices[i]; - p1y = vertices[i + 1]; - p2x = vertices[i + 2]; - p2y = vertices[i + 3]; - area += p1x * p2y - p2x * p1y; - } - if (area < 0) - return; - for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) { - var x = vertices[i], y = vertices[i + 1]; - var other = lastX - i; - vertices[i] = vertices[other]; - vertices[i + 1] = vertices[other + 1]; - vertices[other] = x; - vertices[other + 1] = y; - } - }; - return SkeletonClipping; - }()); - spine.SkeletonClipping = SkeletonClipping; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonData = (function () { - function SkeletonData() { - this.bones = new Array(); - this.slots = new Array(); - this.skins = new Array(); - this.events = new Array(); - this.animations = new Array(); - this.ikConstraints = new Array(); - this.transformConstraints = new Array(); - this.pathConstraints = new Array(); - this.fps = 0; - } - SkeletonData.prototype.findBone = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.name == boneName) - return bone; - } - return null; - }; - SkeletonData.prototype.findBoneIndex = function (boneName) { - if (!boneName) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].name == boneName) - return i; - return -1; - }; - SkeletonData.prototype.findSlot = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.name == slotName) - return slot; - } - return null; - }; - SkeletonData.prototype.findSlotIndex = function (slotName) { - if (!slotName) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].name == slotName) - return i; - return -1; - }; - SkeletonData.prototype.findSkin = function (skinName) { - if (!skinName) - throw new Error("skinName cannot be null."); - var skins = this.skins; - for (var i = 0, n = skins.length; i < n; i++) { - var skin = skins[i]; - if (skin.name == skinName) - return skin; - } - return null; - }; - SkeletonData.prototype.findEvent = function (eventDataName) { - if (!eventDataName) - throw new Error("eventDataName cannot be null."); - var events = this.events; - for (var i = 0, n = events.length; i < n; i++) { - var event_5 = events[i]; - if (event_5.name == eventDataName) - return event_5; - } - return null; - }; - SkeletonData.prototype.findAnimation = function (animationName) { - if (!animationName) - throw new Error("animationName cannot be null."); - var animations = this.animations; - for (var i = 0, n = animations.length; i < n; i++) { - var animation = animations[i]; - if (animation.name == animationName) - return animation; - } - return null; - }; - SkeletonData.prototype.findIkConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findTransformConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findPathConstraint = function (constraintName) { - if (!constraintName) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - return SkeletonData; - }()); - spine.SkeletonData = SkeletonData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonJson = (function () { - function SkeletonJson(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonJson.prototype.readSkeletonData = function (json) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - var root = typeof (json) === "string" ? JSON.parse(json) : json; - var skeletonMap = root.skeleton; - if (skeletonMap) { - skeletonData.hash = skeletonMap.hash; - skeletonData.version = skeletonMap.spine; - skeletonData.x = skeletonMap.x; - skeletonData.y = skeletonMap.y; - skeletonData.width = skeletonMap.width; - skeletonData.height = skeletonMap.height; - skeletonData.fps = skeletonMap.fps; - skeletonData.imagesPath = skeletonMap.images; - } - if (root.bones) { - for (var i = 0; i < root.bones.length; i++) { - var boneMap = root.bones[i]; - var parent_5 = null; - var parentName = getValue(boneMap, "parent", null); - if (parentName) - parent_5 = skeletonData.findBone(parentName); - var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_5); - data.length = getValue(boneMap, "length", 0) * scale; - data.x = getValue(boneMap, "x", 0) * scale; - data.y = getValue(boneMap, "y", 0) * scale; - data.rotation = getValue(boneMap, "rotation", 0); - data.scaleX = getValue(boneMap, "scaleX", 1); - data.scaleY = getValue(boneMap, "scaleY", 1); - data.shearX = getValue(boneMap, "shearX", 0); - data.shearY = getValue(boneMap, "shearY", 0); - data.transformMode = spine.Utils.enumValue(spine.TransformMode, getValue(boneMap, "transform", "Normal")); - data.skinRequired = getValue(boneMap, "skin", false); - var color = getValue(boneMap, "color", null); - if (color) - data.color.setFromString(color); - skeletonData.bones.push(data); - } - } - if (root.slots) { - for (var i = 0; i < root.slots.length; i++) { - var slotMap = root.slots[i]; - var boneData = skeletonData.findBone(slotMap.bone); - var data = new spine.SlotData(skeletonData.slots.length, slotMap.name, boneData); - var color = getValue(slotMap, "color", null); - if (color) - data.color.setFromString(color); - var dark = getValue(slotMap, "dark", null); - if (dark) - data.darkColor = spine.Color.fromString(dark); - data.attachmentName = getValue(slotMap, "attachment", null); - data.blendMode = spine.Utils.enumValue(spine.BlendMode, getValue(slotMap, "blend", "normal")); - skeletonData.slots.push(data); - } - } - if (root.ik) { - for (var i = 0; i < root.ik.length; i++) { - var constraintMap = root.ik[i]; - var data = new spine.IkConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - data.target = skeletonData.findBone(constraintMap.target); - data.mix = getValue(constraintMap, "mix", 1); - data.softness = getValue(constraintMap, "softness", 0) * scale; - data.bendDirection = getValue(constraintMap, "bendPositive", true) ? 1 : -1; - data.compress = getValue(constraintMap, "compress", false); - data.stretch = getValue(constraintMap, "stretch", false); - data.uniform = getValue(constraintMap, "uniform", false); - skeletonData.ikConstraints.push(data); - } - } - if (root.transform) { - for (var i = 0; i < root.transform.length; i++) { - var constraintMap = root.transform[i]; - var data = new spine.TransformConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - var targetName = constraintMap.target; - data.target = skeletonData.findBone(targetName); - data.local = getValue(constraintMap, "local", false); - data.relative = getValue(constraintMap, "relative", false); - data.offsetRotation = getValue(constraintMap, "rotation", 0); - data.offsetX = getValue(constraintMap, "x", 0) * scale; - data.offsetY = getValue(constraintMap, "y", 0) * scale; - data.offsetScaleX = getValue(constraintMap, "scaleX", 0); - data.offsetScaleY = getValue(constraintMap, "scaleY", 0); - data.offsetShearY = getValue(constraintMap, "shearY", 0); - data.mixRotate = getValue(constraintMap, "mixRotate", 1); - data.mixX = getValue(constraintMap, "mixX", 1); - data.mixY = getValue(constraintMap, "mixY", data.mixX); - data.mixScaleX = getValue(constraintMap, "mixScaleX", 1); - data.mixScaleY = getValue(constraintMap, "mixScaleY", data.mixScaleX); - data.mixShearY = getValue(constraintMap, "mixShearY", 1); - skeletonData.transformConstraints.push(data); - } - } - if (root.path) { - for (var i = 0; i < root.path.length; i++) { - var constraintMap = root.path[i]; - var data = new spine.PathConstraintData(constraintMap.name); - data.order = getValue(constraintMap, "order", 0); - data.skinRequired = getValue(constraintMap, "skin", false); - for (var ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - var targetName = constraintMap.target; - data.target = skeletonData.findSlot(targetName); - data.positionMode = spine.Utils.enumValue(spine.PositionMode, getValue(constraintMap, "positionMode", "Percent")); - data.spacingMode = spine.Utils.enumValue(spine.SpacingMode, getValue(constraintMap, "spacingMode", "Length")); - data.rotateMode = spine.Utils.enumValue(spine.RotateMode, getValue(constraintMap, "rotateMode", "Tangent")); - data.offsetRotation = getValue(constraintMap, "rotation", 0); - data.position = getValue(constraintMap, "position", 0); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = getValue(constraintMap, "spacing", 0); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.mixRotate = getValue(constraintMap, "mixRotate", 1); - data.mixX = getValue(constraintMap, "mixX", 1); - data.mixY = getValue(constraintMap, "mixY", data.mixX); - skeletonData.pathConstraints.push(data); - } - } - if (root.skins) { - for (var i = 0; i < root.skins.length; i++) { - var skinMap = root.skins[i]; - var skin = new spine.Skin(skinMap.name); - if (skinMap.bones) { - for (var ii = 0; ii < skinMap.bones.length; ii++) - skin.bones.push(skeletonData.findBone(skinMap.bones[ii])); - } - if (skinMap.ik) { - for (var ii = 0; ii < skinMap.ik.length; ii++) - skin.constraints.push(skeletonData.findIkConstraint(skinMap.ik[ii])); - } - if (skinMap.transform) { - for (var ii = 0; ii < skinMap.transform.length; ii++) - skin.constraints.push(skeletonData.findTransformConstraint(skinMap.transform[ii])); - } - if (skinMap.path) { - for (var ii = 0; ii < skinMap.path.length; ii++) - skin.constraints.push(skeletonData.findPathConstraint(skinMap.path[ii])); - } - for (var slotName in skinMap.attachments) { - var slot = skeletonData.findSlot(slotName); - var slotMap = skinMap.attachments[slotName]; - for (var entryName in slotMap) { - var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData); - if (attachment) - skin.setAttachment(slot.index, entryName, attachment); - } - } - skeletonData.skins.push(skin); - if (skin.name == "default") - skeletonData.defaultSkin = skin; - } - } - for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - var parent_6 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_6 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_6); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - if (root.events) { - for (var eventName in root.events) { - var eventMap = root.events[eventName]; - var data = new spine.EventData(eventName); - data.intValue = getValue(eventMap, "int", 0); - data.floatValue = getValue(eventMap, "float", 0); - data.stringValue = getValue(eventMap, "string", ""); - data.audioPath = getValue(eventMap, "audio", null); - if (data.audioPath) { - data.volume = getValue(eventMap, "volume", 1); - data.balance = getValue(eventMap, "balance", 0); - } - skeletonData.events.push(data); - } - } - if (root.animations) { - for (var animationName in root.animations) { - var animationMap = root.animations[animationName]; - this.readAnimation(animationMap, animationName, skeletonData); - } - } - return skeletonData; - }; - SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) { - var scale = this.scale; - name = getValue(map, "name", name); - switch (getValue(map, "type", "region")) { - case "region": { - var path = getValue(map, "path", name); - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (!region) - return null; - region.path = path; - region.x = getValue(map, "x", 0) * scale; - region.y = getValue(map, "y", 0) * scale; - region.scaleX = getValue(map, "scaleX", 1); - region.scaleY = getValue(map, "scaleY", 1); - region.rotation = getValue(map, "rotation", 0); - region.width = map.width * scale; - region.height = map.height * scale; - var color = getValue(map, "color", null); - if (color) - region.color.setFromString(color); - region.updateOffset(); - return region; - } - case "boundingbox": { - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (!box) - return null; - this.readVertices(map, box, map.vertexCount << 1); - var color = getValue(map, "color", null); - if (color) - box.color.setFromString(color); - return box; - } - case "mesh": - case "linkedmesh": { - var path = getValue(map, "path", name); - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (!mesh) - return null; - mesh.path = path; - var color = getValue(map, "color", null); - if (color) - mesh.color.setFromString(color); - mesh.width = getValue(map, "width", 0) * scale; - mesh.height = getValue(map, "height", 0) * scale; - var parent_7 = getValue(map, "parent", null); - if (parent_7) { - this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, "skin", null), slotIndex, parent_7, getValue(map, "deform", true))); - return mesh; - } - var uvs = map.uvs; - this.readVertices(map, mesh, uvs.length); - mesh.triangles = map.triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.edges = getValue(map, "edges", null); - mesh.hullLength = getValue(map, "hull", 0) * 2; - return mesh; - } - case "path": { - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (!path) - return null; - path.closed = getValue(map, "closed", false); - path.constantSpeed = getValue(map, "constantSpeed", true); - var vertexCount = map.vertexCount; - this.readVertices(map, path, vertexCount << 1); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0; i < map.lengths.length; i++) - lengths[i] = map.lengths[i] * scale; - path.lengths = lengths; - var color = getValue(map, "color", null); - if (color) - path.color.setFromString(color); - return path; - } - case "point": { - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (!point) - return null; - point.x = getValue(map, "x", 0) * scale; - point.y = getValue(map, "y", 0) * scale; - point.rotation = getValue(map, "rotation", 0); - var color = getValue(map, "color", null); - if (color) - point.color.setFromString(color); - return point; - } - case "clipping": { - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (!clip) - return null; - var end = getValue(map, "end", null); - if (end) - clip.endSlot = skeletonData.findSlot(end); - var vertexCount = map.vertexCount; - this.readVertices(map, clip, vertexCount << 1); - var color = getValue(map, "color", null); - if (color) - clip.color.setFromString(color); - return clip; - } - } - return null; - }; - SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { - var scale = this.scale; - attachment.worldVerticesLength = verticesLength; - var vertices = map.vertices; - if (verticesLength == vertices.length) { - var scaledVertices = spine.Utils.toFloatArray(vertices); - if (scale != 1) { - for (var i = 0, n = vertices.length; i < n; i++) - scaledVertices[i] *= scale; - } - attachment.vertices = scaledVertices; - return; - } - var weights = new Array(); - var bones = new Array(); - for (var i = 0, n = vertices.length; i < n;) { - var boneCount = vertices[i++]; - bones.push(boneCount); - for (var nn = i + boneCount * 4; i < nn; i += 4) { - bones.push(vertices[i]); - weights.push(vertices[i + 1] * scale); - weights.push(vertices[i + 2] * scale); - weights.push(vertices[i + 3]); - } - } - attachment.bones = bones; - attachment.vertices = spine.Utils.toFloatArray(weights); - }; - SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { - var scale = this.scale; - var timelines = new Array(); - if (map.slots) { - for (var slotName in map.slots) { - var slotMap = map.slots[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - if (!timelineMap) - continue; - if (timelineName == "attachment") { - var timeline = new spine.AttachmentTimeline(timelineMap.length, slotIndex); - for (var frame = 0; frame < timelineMap.length; frame++) { - var keyMap = timelineMap[frame]; - timeline.setFrame(frame, getValue(keyMap, "time", 0), keyMap.name); - } - timelines.push(timeline); - } - else if (timelineName == "rgba") { - var timeline = new spine.RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.color); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color.a); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.color); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); - } - time = time2; - color = newColor; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "rgb") { - var timeline = new spine.RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.color); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.color); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - } - time = time2; - color = newColor; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "alpha") { - timelines.push(readTimeline1(timelineMap, new spine.AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1)); - } - else if (timelineName == "rgba2") { - var timeline = new spine.RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.light); - var color2 = spine.Color.fromString(keyMap.dark); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color.a, color2.r, color2.g, color2.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.light); - var newColor2 = spine.Color.fromString(nextMap.dark); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.r, newColor2.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.g, newColor2.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 6, time, time2, color2.b, newColor2.b, 1); - } - time = time2; - color = newColor; - color2 = newColor2; - keyMap = nextMap; - } - timelines.push(timeline); - } - else if (timelineName == "rgb2") { - var timeline = new spine.RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex); - var keyMap = timelineMap[0]; - var time = getValue(keyMap, "time", 0); - var color = spine.Color.fromString(keyMap.light); - var color2 = spine.Color.fromString(keyMap.dark); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var newColor = spine.Color.fromString(nextMap.light); - var newColor2 = spine.Color.fromString(nextMap.dark); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1); - } - time = time2; - color = newColor; - color2 = newColor2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.bones) { - for (var boneName in map.bones) { - var boneMap = map.bones[boneName]; - var boneIndex = skeletonData.findBoneIndex(boneName); - for (var timelineName in boneMap) { - var timelineMap = boneMap[timelineName]; - if (timelineMap.length == 0) - continue; - if (timelineName === "rotate") { - timelines.push(readTimeline1(timelineMap, new spine.RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1)); - } - else if (timelineName === "translate") { - var timeline = new spine.TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, scale)); - } - else if (timelineName === "translatex") { - var timeline = new spine.TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); - } - else if (timelineName === "translatey") { - var timeline = new spine.TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, scale)); - } - else if (timelineName === "scale") { - var timeline = new spine.ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 1, 1)); - } - else if (timelineName === "scalex") { - var timeline = new spine.ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); - } - else if (timelineName === "scaley") { - var timeline = new spine.ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 1, 1)); - } - else if (timelineName === "shear") { - var timeline = new spine.ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); - timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, 1)); - } - else if (timelineName === "shearx") { - var timeline = new spine.ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); - } - else if (timelineName === "sheary") { - var timeline = new spine.ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, 1)); - } - } - } - } - if (map.ik) { - for (var constraintName in map.ik) { - var constraintMap = map.ik[constraintName]; - var keyMap = constraintMap[0]; - if (!keyMap) - continue; - var constraint = skeletonData.findIkConstraint(constraintName); - var constraintIndex = skeletonData.ikConstraints.indexOf(constraint); - var timeline = new spine.IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mix = getValue(keyMap, "mix", 1); - var softness = getValue(keyMap, "softness", 0) * scale; - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mix, softness, getValue(keyMap, "bendPositive", true) ? 1 : -1, getValue(keyMap, "compress", false), getValue(keyMap, "stretch", false)); - var nextMap = constraintMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mix2 = getValue(nextMap, "mix", 1); - var softness2 = getValue(nextMap, "softness", 0) * scale; - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale); - } - time = time2; - mix = mix2; - softness = softness2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - if (map.transform) { - for (var constraintName in map.transform) { - var timelineMap = map.transform[constraintName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - var constraint = skeletonData.findTransformConstraint(constraintName); - var constraintIndex = skeletonData.transformConstraints.indexOf(constraint); - var timeline = new spine.TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mixRotate = getValue(keyMap, "mixRotate", 1); - var mixX = getValue(keyMap, "mixX", 1); - var mixY = getValue(keyMap, "mixY", mixX); - var mixScaleX = getValue(keyMap, "mixScaleX", 1); - var mixScaleY = getValue(keyMap, "mixScaleY", mixScaleX); - var mixShearY = getValue(keyMap, "mixShearY", 1); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mixRotate2 = getValue(nextMap, "mixRotate", 1); - var mixX2 = getValue(nextMap, "mixX", 1); - var mixY2 = getValue(nextMap, "mixY", mixX2); - var mixScaleX2 = getValue(nextMap, "mixScaleX", 1); - var mixScaleY2 = getValue(nextMap, "mixScaleY", mixScaleX2); - var mixShearY2 = getValue(nextMap, "mixShearY", 1); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - mixScaleX = mixScaleX2; - mixScaleY = mixScaleY2; - mixScaleX = mixScaleX2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - if (map.path) { - for (var constraintName in map.path) { - var constraintMap = map.path[constraintName]; - var constraint = skeletonData.findPathConstraint(constraintName); - var constraintIndex = skeletonData.pathConstraints.indexOf(constraint); - for (var timelineName in constraintMap) { - var timelineMap = constraintMap[timelineName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - if (timelineName === "position") { - var timeline = new spine.PathConstraintPositionTimeline(timelineMap.length, timelineMap.length, constraintIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.positionMode == spine.PositionMode.Fixed ? scale : 1)); - } - else if (timelineName === "spacing") { - var timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, constraintIndex); - timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.spacingMode == spine.SpacingMode.Length || constraint.spacingMode == spine.SpacingMode.Fixed ? scale : 1)); - } - else if (timelineName === "mix") { - var timeline = new spine.PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, constraintIndex); - var time = getValue(keyMap, "time", 0); - var mixRotate = getValue(keyMap, "mixRotate", 1); - var mixX = getValue(keyMap, "mixX", 1); - var mixY = getValue(keyMap, "mixY", mixX); - for (var frame = 0, bezier = 0;; frame++) { - timeline.setFrame(frame, time, mixRotate, mixX, mixY); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var mixRotate2 = getValue(nextMap, "mixRotate", 1); - var mixX2 = getValue(nextMap, "mixX", 1); - var mixY2 = getValue(nextMap, "mixY", mixX2); - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1); - bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1); - } - time = time2; - mixRotate = mixRotate2; - mixX = mixX2; - mixY = mixY2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.deform) { - for (var deformName in map.deform) { - var deformMap = map.deform[deformName]; - var skin = skeletonData.findSkin(deformName); - for (var slotName in deformMap) { - var slotMap = deformMap[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - var keyMap = timelineMap[0]; - if (!keyMap) - continue; - var attachment = skin.getAttachment(slotIndex, timelineName); - var weighted = attachment.bones; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var timeline = new spine.DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment); - var time = getValue(keyMap, "time", 0); - for (var frame = 0, bezier = 0;; frame++) { - var deform = void 0; - var verticesValue = getValue(keyMap, "vertices", null); - if (!verticesValue) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = getValue(keyMap, "offset", 0); - spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); - if (scale != 1) { - for (var i = start, n = i + verticesValue.length; i < n; i++) - deform[i] *= scale; - } - if (!weighted) { - for (var i = 0; i < deformLength; i++) - deform[i] += vertices[i]; - } - } - timeline.setFrame(frame, time, deform); - var nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - var time2 = getValue(nextMap, "time", 0); - var curve = keyMap.curve; - if (curve) - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1); - time = time2; - keyMap = nextMap; - } - timelines.push(timeline); - } - } - } - } - if (map.drawOrder) { - var timeline = new spine.DrawOrderTimeline(map.drawOrder.length); - var slotCount = skeletonData.slots.length; - var frame = 0; - for (var i = 0; i < map.drawOrder.length; i++, frame++) { - var drawOrderMap = map.drawOrder[i]; - var drawOrder = null; - var offsets = getValue(drawOrderMap, "offsets", null); - if (offsets) { - drawOrder = spine.Utils.newArray(slotCount, -1); - var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var ii = 0; ii < offsets.length; ii++) { - var offsetMap = offsets[ii]; - var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + offsetMap.offset] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var ii = slotCount - 1; ii >= 0; ii--) - if (drawOrder[ii] == -1) - drawOrder[ii] = unchanged[--unchangedIndex]; - } - timeline.setFrame(frame, getValue(drawOrderMap, "time", 0), drawOrder); - } - timelines.push(timeline); - } - if (map.events) { - var timeline = new spine.EventTimeline(map.events.length); - var frame = 0; - for (var i = 0; i < map.events.length; i++, frame++) { - var eventMap = map.events[i]; - var eventData = skeletonData.findEvent(eventMap.name); - var event_6 = new spine.Event(spine.Utils.toSinglePrecision(getValue(eventMap, "time", 0)), eventData); - event_6.intValue = getValue(eventMap, "int", eventData.intValue); - event_6.floatValue = getValue(eventMap, "float", eventData.floatValue); - event_6.stringValue = getValue(eventMap, "string", eventData.stringValue); - if (event_6.data.audioPath) { - event_6.volume = getValue(eventMap, "volume", 1); - event_6.balance = getValue(eventMap, "balance", 0); - } - timeline.setFrame(frame, event_6); - } - timelines.push(timeline); - } - var duration = 0; - for (var i = 0, n = timelines.length; i < n; i++) - duration = Math.max(duration, timelines[i].getDuration()); - skeletonData.animations.push(new spine.Animation(name, timelines, duration)); - }; - return SkeletonJson; - }()); - spine.SkeletonJson = SkeletonJson; - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); - function readTimeline1(keys, timeline, defaultValue, scale) { - var keyMap = keys[0]; - var time = getValue(keyMap, "time", 0); - var value = getValue(keyMap, "value", defaultValue) * scale; - var bezier = 0; - for (var frame = 0;; frame++) { - timeline.setFrame(frame, time, value); - var nextMap = keys[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - return timeline; - } - var time2 = getValue(nextMap, "time", 0); - var value2 = getValue(nextMap, "value", defaultValue) * scale; - if (keyMap.curve) - bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale); - time = time2; - value = value2; - keyMap = nextMap; - } - } - function readTimeline2(keys, timeline, name1, name2, defaultValue, scale) { - var keyMap = keys[0]; - var time = getValue(keyMap, "time", 0); - var value1 = getValue(keyMap, name1, defaultValue) * scale; - var value2 = getValue(keyMap, name2, defaultValue) * scale; - var bezier = 0; - for (var frame = 0;; frame++) { - timeline.setFrame(frame, time, value1, value2); - var nextMap = keys[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - return timeline; - } - var time2 = getValue(nextMap, "time", 0); - var nvalue1 = getValue(nextMap, name1, defaultValue) * scale; - var nvalue2 = getValue(nextMap, name2, defaultValue) * scale; - var curve = keyMap.curve; - if (curve) { - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale); - bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale); - } - time = time2; - value1 = nvalue1; - value2 = nvalue2; - keyMap = nextMap; - } - } - function readCurve(curve, timeline, bezier, frame, value, time1, time2, value1, value2, scale) { - if (curve == "stepped") { - timeline.setStepped(frame); - return bezier; - } - var i = value << 2; - var cx1 = curve[i]; - var cy1 = curve[i + 1] * scale; - var cx2 = curve[i + 2]; - var cy2 = curve[i + 3] * scale; - timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2); - return bezier + 1; - } - function getValue(map, property, defaultValue) { - return map[property] !== undefined ? map[property] : defaultValue; - } -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkinEntry = (function () { - function SkinEntry(slotIndex, name, attachment) { - this.slotIndex = slotIndex; - this.name = name; - this.attachment = attachment; - } - return SkinEntry; - }()); - spine.SkinEntry = SkinEntry; - var Skin = (function () { - function Skin(name) { - this.attachments = new Array(); - this.bones = Array(); - this.constraints = new Array(); - if (!name) - throw new Error("name cannot be null."); - this.name = name; - } - Skin.prototype.setAttachment = function (slotIndex, name, attachment) { - if (!attachment) - throw new Error("attachment cannot be null."); - var attachments = this.attachments; - if (slotIndex >= attachments.length) - attachments.length = slotIndex + 1; - if (!attachments[slotIndex]) - attachments[slotIndex] = {}; - attachments[slotIndex][name] = attachment; - }; - Skin.prototype.addSkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var ii = 0; ii < this.bones.length; ii++) { - if (this.bones[ii] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var ii = 0; ii < this.constraints.length; ii++) { - if (this.constraints[ii] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - }; - Skin.prototype.copySkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var ii = 0; ii < this.bones.length; ii++) { - if (this.bones[ii] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var ii = 0; ii < this.constraints.length; ii++) { - if (this.constraints[ii] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - if (!attachment.attachment) - continue; - if (attachment.attachment instanceof spine.MeshAttachment) { - attachment.attachment = attachment.attachment.newLinkedMesh(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - else { - attachment.attachment = attachment.attachment.copy(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - } - }; - Skin.prototype.getAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - return dictionary ? dictionary[name] : null; - }; - Skin.prototype.removeAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - if (dictionary) - dictionary[name] = null; - }; - Skin.prototype.getAttachments = function () { - var entries = new Array(); - for (var i = 0; i < this.attachments.length; i++) { - var slotAttachments = this.attachments[i]; - if (slotAttachments) { - for (var name_4 in slotAttachments) { - var attachment = slotAttachments[name_4]; - if (attachment) - entries.push(new SkinEntry(i, name_4, attachment)); - } - } - } - return entries; - }; - Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) { - var slotAttachments = this.attachments[slotIndex]; - if (slotAttachments) { - for (var name_5 in slotAttachments) { - var attachment = slotAttachments[name_5]; - if (attachment) - attachments.push(new SkinEntry(slotIndex, name_5, attachment)); - } - } - }; - Skin.prototype.clear = function () { - this.attachments.length = 0; - this.bones.length = 0; - this.constraints.length = 0; - }; - Skin.prototype.attachAll = function (skeleton, oldSkin) { - var slotIndex = 0; - for (var i = 0; i < skeleton.slots.length; i++) { - var slot = skeleton.slots[i]; - var slotAttachment = slot.getAttachment(); - if (slotAttachment && slotIndex < oldSkin.attachments.length) { - var dictionary = oldSkin.attachments[slotIndex]; - for (var key in dictionary) { - var skinAttachment = dictionary[key]; - if (slotAttachment == skinAttachment) { - var attachment = this.getAttachment(slotIndex, key); - if (attachment) - slot.setAttachment(attachment); - break; - } - } - } - slotIndex++; - } - }; - return Skin; - }()); - spine.Skin = Skin; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Slot = (function () { - function Slot(data, bone) { - this.deform = new Array(); - if (!data) - throw new Error("data cannot be null."); - if (!bone) - throw new Error("bone cannot be null."); - this.data = data; - this.bone = bone; - this.color = new spine.Color(); - this.darkColor = !data.darkColor ? null : new spine.Color(); - this.setToSetupPose(); - } - Slot.prototype.getSkeleton = function () { - return this.bone.skeleton; - }; - Slot.prototype.getAttachment = function () { - return this.attachment; - }; - Slot.prototype.setAttachment = function (attachment) { - if (this.attachment == attachment) - return; - if (!(attachment instanceof spine.VertexAttachment) || !(this.attachment instanceof spine.VertexAttachment) - || attachment.deformAttachment != this.attachment.deformAttachment) { - this.deform.length = 0; - } - this.attachment = attachment; - this.attachmentTime = this.bone.skeleton.time; - }; - Slot.prototype.setAttachmentTime = function (time) { - this.attachmentTime = this.bone.skeleton.time - time; - }; - Slot.prototype.getAttachmentTime = function () { - return this.bone.skeleton.time - this.attachmentTime; - }; - Slot.prototype.setToSetupPose = function () { - this.color.setFromColor(this.data.color); - if (this.darkColor) - this.darkColor.setFromColor(this.data.darkColor); - if (!this.data.attachmentName) - this.attachment = null; - else { - this.attachment = null; - this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); - } - }; - return Slot; - }()); - spine.Slot = Slot; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SlotData = (function () { - function SlotData(index, name, boneData) { - this.color = new spine.Color(1, 1, 1, 1); - if (index < 0) - throw new Error("index must be >= 0."); - if (!name) - throw new Error("name cannot be null."); - if (!boneData) - throw new Error("boneData cannot be null."); - this.index = index; - this.name = name; - this.boneData = boneData; - } - return SlotData; - }()); - spine.SlotData = SlotData; - var BlendMode; - (function (BlendMode) { - BlendMode[BlendMode["Normal"] = 0] = "Normal"; - BlendMode[BlendMode["Additive"] = 1] = "Additive"; - BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; - BlendMode[BlendMode["Screen"] = 3] = "Screen"; - })(BlendMode = spine.BlendMode || (spine.BlendMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Texture = (function () { - function Texture(image) { - this._image = image; - } - Texture.prototype.getImage = function () { - return this._image; - }; - return Texture; - }()); - spine.Texture = Texture; - var TextureFilter; - (function (TextureFilter) { - TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; - TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; - TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; - TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; - TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; - TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; - TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; - })(TextureFilter = spine.TextureFilter || (spine.TextureFilter = {})); - var TextureWrap; - (function (TextureWrap) { - TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; - TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; - TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; - })(TextureWrap = spine.TextureWrap || (spine.TextureWrap = {})); - var TextureRegion = (function () { - function TextureRegion() { - this.u = 0; - this.v = 0; - this.u2 = 0; - this.v2 = 0; - this.width = 0; - this.height = 0; - this.degrees = 0; - this.offsetX = 0; - this.offsetY = 0; - this.originalWidth = 0; - this.originalHeight = 0; - } - return TextureRegion; - }()); - spine.TextureRegion = TextureRegion; - var FakeTexture = (function (_super) { - __extends(FakeTexture, _super); - function FakeTexture() { - return _super !== null && _super.apply(this, arguments) || this; - } - FakeTexture.prototype.setFilters = function (minFilter, magFilter) { }; - FakeTexture.prototype.setWraps = function (uWrap, vWrap) { }; - FakeTexture.prototype.dispose = function () { }; - return FakeTexture; - }(Texture)); - spine.FakeTexture = FakeTexture; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TextureAtlas = (function () { - function TextureAtlas(atlasText) { - this.pages = new Array(); - this.regions = new Array(); - var reader = new TextureAtlasReader(atlasText); - var entry = new Array(4); - var page = null; - var region = null; - var pageFields = {}; - pageFields["size"] = function () { - page.width = parseInt(entry[1]); - page.height = parseInt(entry[2]); - }; - pageFields["format"] = function () { - }; - pageFields["filter"] = function () { - page.minFilter = spine.Utils.enumValue(spine.TextureFilter, entry[1]); - page.magFilter = spine.Utils.enumValue(spine.TextureFilter, entry[2]); - }; - pageFields["repeat"] = function () { - if (entry[1].indexOf('x') != -1) - page.uWrap = spine.TextureWrap.Repeat; - if (entry[1].indexOf('y') != -1) - page.vWrap = spine.TextureWrap.Repeat; - }; - pageFields["pma"] = function () { - page.pma = entry[1] == "true"; - }; - var regionFields = {}; - regionFields["xy"] = function () { - region.x = parseInt(entry[1]); - region.y = parseInt(entry[2]); - }; - regionFields["size"] = function () { - region.width = parseInt(entry[1]); - region.height = parseInt(entry[2]); - }; - regionFields["bounds"] = function () { - region.x = parseInt(entry[1]); - region.y = parseInt(entry[2]); - region.width = parseInt(entry[3]); - region.height = parseInt(entry[4]); - }; - regionFields["offset"] = function () { - region.offsetX = parseInt(entry[1]); - region.offsetY = parseInt(entry[2]); - }; - regionFields["orig"] = function () { - region.originalWidth = parseInt(entry[1]); - region.originalHeight = parseInt(entry[2]); - }; - regionFields["offsets"] = function () { - region.offsetX = parseInt(entry[1]); - region.offsetY = parseInt(entry[2]); - region.originalWidth = parseInt(entry[3]); - region.originalHeight = parseInt(entry[4]); - }; - regionFields["rotate"] = function () { - var value = entry[1]; - if (value == "true") - region.degrees = 90; - else if (value != "false") - region.degrees = parseInt(value); - }; - regionFields["index"] = function () { - region.index = parseInt(entry[1]); - }; - var line = reader.readLine(); - while (line && line.trim().length == 0) - line = reader.readLine(); - while (true) { - if (!line || line.trim().length == 0) - break; - if (reader.readEntry(entry, line) == 0) - break; - line = reader.readLine(); - } - var names = null; - var values = null; - while (true) { - if (line === null) - break; - if (line.trim().length == 0) { - page = null; - line = reader.readLine(); - } - else if (!page) { - page = new TextureAtlasPage(); - page.name = line.trim(); - while (true) { - if (reader.readEntry(entry, line = reader.readLine()) == 0) - break; - var field = pageFields[entry[0]]; - if (field) - field(); - } - this.pages.push(page); - } - else { - region = new TextureAtlasRegion(); - region.page = page; - region.name = line; - while (true) { - var count = reader.readEntry(entry, line = reader.readLine()); - if (count == 0) - break; - var field = regionFields[entry[0]]; - if (field) - field(); - else { - if (!names) { - names = []; - values = []; - } - names.push(entry[0]); - var entryValues = []; - for (var i = 0; i < count; i++) - entryValues.push(parseInt(entry[i + 1])); - values.push(entryValues); - } - } - if (region.originalWidth == 0 && region.originalHeight == 0) { - region.originalWidth = region.width; - region.originalHeight = region.height; - } - if (names && names.length > 0) { - region.names = names; - region.values = values; - names = null; - values = null; - } - region.u = region.x / page.width; - region.v = region.y / page.height; - if (region.degrees == 90) { - region.u2 = (region.x + region.height) / page.width; - region.v2 = (region.y + region.width) / page.height; - } - else { - region.u2 = (region.x + region.width) / page.width; - region.v2 = (region.y + region.height) / page.height; - } - this.regions.push(region); - } - } - } - TextureAtlas.prototype.findRegion = function (name) { - for (var i = 0; i < this.regions.length; i++) { - if (this.regions[i].name == name) { - return this.regions[i]; - } - } - return null; - }; - TextureAtlas.prototype.setTextures = function (assetManager, pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - for (var _i = 0, _a = this.pages; _i < _a.length; _i++) { - var page = _a[_i]; - page.setTexture(assetManager.get(pathPrefix + page.name)); - } - }; - TextureAtlas.prototype.dispose = function () { - for (var i = 0; i < this.pages.length; i++) { - this.pages[i].texture.dispose(); - } - }; - return TextureAtlas; - }()); - spine.TextureAtlas = TextureAtlas; - var TextureAtlasReader = (function () { - function TextureAtlasReader(text) { - this.index = 0; - this.lines = text.split(/\r\n|\r|\n/); - } - TextureAtlasReader.prototype.readLine = function () { - if (this.index >= this.lines.length) - return null; - return this.lines[this.index++]; - }; - TextureAtlasReader.prototype.readEntry = function (entry, line) { - if (!line) - return 0; - line = line.trim(); - if (line.length == 0) - return 0; - var colon = line.indexOf(':'); - if (colon == -1) - return 0; - entry[0] = line.substr(0, colon).trim(); - for (var i = 1, lastMatch = colon + 1;; i++) { - var comma = line.indexOf(',', lastMatch); - if (comma == -1) { - entry[i] = line.substr(lastMatch).trim(); - return i; - } - entry[i] = line.substr(lastMatch, comma - lastMatch).trim(); - lastMatch = comma + 1; - if (i == 4) - return 4; - } - }; - return TextureAtlasReader; - }()); - var TextureAtlasPage = (function () { - function TextureAtlasPage() { - this.minFilter = spine.TextureFilter.Nearest; - this.magFilter = spine.TextureFilter.Nearest; - this.uWrap = spine.TextureWrap.ClampToEdge; - this.vWrap = spine.TextureWrap.ClampToEdge; - } - TextureAtlasPage.prototype.setTexture = function (texture) { - this.texture = texture; - texture.setFilters(this.minFilter, this.magFilter); - texture.setWraps(this.uWrap, this.vWrap); - }; - return TextureAtlasPage; - }()); - spine.TextureAtlasPage = TextureAtlasPage; - var TextureAtlasRegion = (function (_super) { - __extends(TextureAtlasRegion, _super); - function TextureAtlasRegion() { - return _super !== null && _super.apply(this, arguments) || this; - } - return TextureAtlasRegion; - }(spine.TextureRegion)); - spine.TextureAtlasRegion = TextureAtlasRegion; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraint = (function () { - function TransformConstraint(data, skeleton) { - this.mixRotate = 0; - this.mixX = 0; - this.mixY = 0; - this.mixScaleX = 0; - this.mixScaleY = 0; - this.mixShearY = 0; - this.temp = new spine.Vector2(); - this.active = false; - if (!data) - throw new Error("data cannot be null."); - if (!skeleton) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mixRotate = data.mixRotate; - this.mixX = data.mixX; - this.mixY = data.mixY; - this.mixScaleX = data.mixScaleX; - this.mixScaleY = data.mixScaleY; - this.mixShearY = data.mixShearY; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - TransformConstraint.prototype.isActive = function () { - return this.active; - }; - TransformConstraint.prototype.update = function () { - if (this.mixRotate == 0 && this.mixX == 0 && this.mixY == 0 && this.mixScaleX == 0 && this.mixScaleX == 0 && this.mixShearY == 0) - return; - if (this.data.local) { - if (this.data.relative) - this.applyRelativeLocal(); - else - this.applyAbsoluteLocal(); - } - else { - if (this.data.relative) - this.applyRelativeWorld(); - else - this.applyAbsoluteWorld(); - } - }; - TransformConstraint.prototype.applyAbsoluteWorld = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var translate = mixX != 0 || mixY != 0; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect; - var offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (mixRotate != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - if (translate) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += (temp.x - bone.worldX) * mixX; - bone.worldY += (temp.y - bone.worldY) * mixY; - } - if (mixScaleX != 0) { - var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c); - if (s != 0) - s = (s + (Math.sqrt(ta * ta + tc * tc) - s + this.data.offsetScaleX) * mixScaleX) / s; - bone.a *= s; - bone.c *= s; - } - if (mixScaleY != 0) { - var s = Math.sqrt(bone.b * bone.b + bone.d * bone.d); - if (s != 0) - s = (s + (Math.sqrt(tb * tb + td * td) - s + this.data.offsetScaleY) * mixScaleY) / s; - bone.b *= s; - bone.d *= s; - } - if (mixShearY > 0) { - var b = bone.b, d = bone.d; - var by = Math.atan2(d, b); - var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r = by + (r + offsetShearY) * mixShearY; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - } - bone.updateAppliedTransform(); - } - }; - TransformConstraint.prototype.applyRelativeWorld = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var translate = mixX != 0 || mixY != 0; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (mixRotate != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= mixRotate; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - if (translate) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += temp.x * mixX; - bone.worldY += temp.y * mixY; - } - if (mixScaleX != 0) { - var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * mixScaleX + 1; - bone.a *= s; - bone.c *= s; - } - if (mixScaleY != 0) { - var s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * mixScaleY + 1; - bone.b *= s; - bone.d *= s; - } - if (mixShearY > 0) { - var r = Math.atan2(td, tb) - Math.atan2(tc, ta); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - var b = bone.b, d = bone.d; - r = Math.atan2(d, b) + (r - spine.MathUtils.PI / 2 + offsetShearY) * mixShearY; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - } - bone.updateAppliedTransform(); - } - }; - TransformConstraint.prototype.applyAbsoluteLocal = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var target = this.target; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var rotation = bone.arotation; - if (mixRotate != 0) { - var r = target.arotation - rotation + this.data.offsetRotation; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - rotation += r * mixRotate; - } - var x = bone.ax, y = bone.ay; - x += (target.ax - x + this.data.offsetX) * mixX; - y += (target.ay - y + this.data.offsetY) * mixY; - var scaleX = bone.ascaleX, scaleY = bone.ascaleY; - if (mixScaleX != 0 && scaleX != 0) - scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * mixScaleX) / scaleX; - if (mixScaleY != 0 && scaleY != 0) - scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * mixScaleY) / scaleY; - var shearY = bone.ashearY; - if (mixShearY != 0) { - var r = target.ashearY - shearY + this.data.offsetShearY; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - shearY += r * mixShearY; - } - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - TransformConstraint.prototype.applyRelativeLocal = function () { - var mixRotate = this.mixRotate, mixX = this.mixX, mixY = this.mixY, mixScaleX = this.mixScaleX, mixScaleY = this.mixScaleY, mixShearY = this.mixShearY; - var target = this.target; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var rotation = bone.arotation + (target.arotation + this.data.offsetRotation) * mixRotate; - var x = bone.ax + (target.ax + this.data.offsetX) * mixX; - var y = bone.ay + (target.ay + this.data.offsetY) * mixY; - var scaleX = (bone.ascaleX * ((target.ascaleX - 1 + this.data.offsetScaleX) * mixScaleX) + 1); - var scaleY = (bone.ascaleY * ((target.ascaleY - 1 + this.data.offsetScaleY) * mixScaleY) + 1); - var shearY = bone.ashearY + (target.ashearY + this.data.offsetShearY) * mixShearY; - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - return TransformConstraint; - }()); - spine.TransformConstraint = TransformConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraintData = (function (_super) { - __extends(TransformConstraintData, _super); - function TransformConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.mixRotate = 0; - _this.mixX = 0; - _this.mixY = 0; - _this.mixScaleX = 0; - _this.mixScaleY = 0; - _this.mixShearY = 0; - _this.offsetRotation = 0; - _this.offsetX = 0; - _this.offsetY = 0; - _this.offsetScaleX = 0; - _this.offsetScaleY = 0; - _this.offsetShearY = 0; - _this.relative = false; - _this.local = false; - return _this; - } - return TransformConstraintData; - }(spine.ConstraintData)); - spine.TransformConstraintData = TransformConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Triangulator = (function () { - function Triangulator() { - this.convexPolygons = new Array(); - this.convexPolygonsIndices = new Array(); - this.indicesArray = new Array(); - this.isConcaveArray = new Array(); - this.triangles = new Array(); - this.polygonPool = new spine.Pool(function () { - return new Array(); - }); - this.polygonIndicesPool = new spine.Pool(function () { - return new Array(); - }); - } - Triangulator.prototype.triangulate = function (verticesArray) { - var vertices = verticesArray; - var vertexCount = verticesArray.length >> 1; - var indices = this.indicesArray; - indices.length = 0; - for (var i = 0; i < vertexCount; i++) - indices[i] = i; - var isConcave = this.isConcaveArray; - isConcave.length = 0; - for (var i = 0, n = vertexCount; i < n; ++i) - isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices); - var triangles = this.triangles; - triangles.length = 0; - while (vertexCount > 3) { - var previous = vertexCount - 1, i = 0, next = 1; - while (true) { - outer: if (!isConcave[i]) { - var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; - var p1x = vertices[p1], p1y = vertices[p1 + 1]; - var p2x = vertices[p2], p2y = vertices[p2 + 1]; - var p3x = vertices[p3], p3y = vertices[p3 + 1]; - for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) { - if (!isConcave[ii]) - continue; - var v = indices[ii] << 1; - var vx = vertices[v], vy = vertices[v + 1]; - if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) { - if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) { - if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) - break outer; - } - } - } - break; - } - if (next == 0) { - do { - if (!isConcave[i]) - break; - i--; - } while (i > 0); - break; - } - previous = i; - i = next; - next = (next + 1) % vertexCount; - } - triangles.push(indices[(vertexCount + i - 1) % vertexCount]); - triangles.push(indices[i]); - triangles.push(indices[(i + 1) % vertexCount]); - indices.splice(i, 1); - isConcave.splice(i, 1); - vertexCount--; - var previousIndex = (vertexCount + i - 1) % vertexCount; - var nextIndex = i == vertexCount ? 0 : i; - isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); - isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); - } - if (vertexCount == 3) { - triangles.push(indices[2]); - triangles.push(indices[0]); - triangles.push(indices[1]); - } - return triangles; - }; - Triangulator.prototype.decompose = function (verticesArray, triangles) { - var vertices = verticesArray; - var convexPolygons = this.convexPolygons; - this.polygonPool.freeAll(convexPolygons); - convexPolygons.length = 0; - var convexPolygonsIndices = this.convexPolygonsIndices; - this.polygonIndicesPool.freeAll(convexPolygonsIndices); - convexPolygonsIndices.length = 0; - var polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - var polygon = this.polygonPool.obtain(); - polygon.length = 0; - var fanBaseIndex = -1, lastWinding = 0; - for (var i = 0, n = triangles.length; i < n; i += 3) { - var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; - var x1 = vertices[t1], y1 = vertices[t1 + 1]; - var x2 = vertices[t2], y2 = vertices[t2 + 1]; - var x3 = vertices[t3], y3 = vertices[t3 + 1]; - var merged = false; - if (fanBaseIndex == t1) { - var o = polygon.length - 4; - var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3); - var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]); - if (winding1 == lastWinding && winding2 == lastWinding) { - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(t3); - merged = true; - } - } - if (!merged) { - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - else { - this.polygonPool.free(polygon); - this.polygonIndicesPool.free(polygonIndices); - } - polygon = this.polygonPool.obtain(); - polygon.length = 0; - polygon.push(x1); - polygon.push(y1); - polygon.push(x2); - polygon.push(y2); - polygon.push(x3); - polygon.push(y3); - polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - polygonIndices.push(t1); - polygonIndices.push(t2); - polygonIndices.push(t3); - lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3); - fanBaseIndex = t1; - } - } - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - for (var i = 0, n = convexPolygons.length; i < n; i++) { - polygonIndices = convexPolygonsIndices[i]; - if (polygonIndices.length == 0) - continue; - var firstIndex = polygonIndices[0]; - var lastIndex = polygonIndices[polygonIndices.length - 1]; - polygon = convexPolygons[i]; - var o = polygon.length - 4; - var prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; - var prevX = polygon[o + 2], prevY = polygon[o + 3]; - var firstX = polygon[0], firstY = polygon[1]; - var secondX = polygon[2], secondY = polygon[3]; - var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); - for (var ii = 0; ii < n; ii++) { - if (ii == i) - continue; - var otherIndices = convexPolygonsIndices[ii]; - if (otherIndices.length != 3) - continue; - var otherFirstIndex = otherIndices[0]; - var otherSecondIndex = otherIndices[1]; - var otherLastIndex = otherIndices[2]; - var otherPoly = convexPolygons[ii]; - var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; - if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) - continue; - var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3); - var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY); - if (winding1 == winding && winding2 == winding) { - otherPoly.length = 0; - otherIndices.length = 0; - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(otherLastIndex); - prevPrevX = prevX; - prevPrevY = prevY; - prevX = x3; - prevY = y3; - ii = 0; - } - } - } - for (var i = convexPolygons.length - 1; i >= 0; i--) { - polygon = convexPolygons[i]; - if (polygon.length == 0) { - convexPolygons.splice(i, 1); - this.polygonPool.free(polygon); - polygonIndices = convexPolygonsIndices[i]; - convexPolygonsIndices.splice(i, 1); - this.polygonIndicesPool.free(polygonIndices); - } - } - return convexPolygons; - }; - Triangulator.isConcave = function (index, vertexCount, vertices, indices) { - var previous = indices[(vertexCount + index - 1) % vertexCount] << 1; - var current = indices[index] << 1; - var next = indices[(index + 1) % vertexCount] << 1; - return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]); - }; - Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) { - return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; - }; - Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) { - var px = p2x - p1x, py = p2y - p1y; - return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1; - }; - return Triangulator; - }()); - spine.Triangulator = Triangulator; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IntSet = (function () { - function IntSet() { - this.array = new Array(); - } - IntSet.prototype.add = function (value) { - var contains = this.contains(value); - this.array[value | 0] = value | 0; - return !contains; - }; - IntSet.prototype.contains = function (value) { - return this.array[value | 0] != undefined; - }; - IntSet.prototype.remove = function (value) { - this.array[value | 0] = undefined; - }; - IntSet.prototype.clear = function () { - this.array.length = 0; - }; - return IntSet; - }()); - spine.IntSet = IntSet; - var StringSet = (function () { - function StringSet() { - this.entries = {}; - this.size = 0; - } - StringSet.prototype.add = function (value) { - var contains = this.entries[value]; - this.entries[value] = true; - if (!contains) { - this.size++; - return true; - } - return false; - }; - StringSet.prototype.addAll = function (values) { - var oldSize = this.size; - for (var i = 0, n = values.length; i < n; i++) - this.add(values[i]); - return oldSize != this.size; - }; - StringSet.prototype.contains = function (value) { - return this.entries[value]; - }; - StringSet.prototype.clear = function () { - this.entries = {}; - this.size = 0; - }; - return StringSet; - }()); - spine.StringSet = StringSet; - var Color = (function () { - function Color(r, g, b, a) { - if (r === void 0) { r = 0; } - if (g === void 0) { g = 0; } - if (b === void 0) { b = 0; } - if (a === void 0) { a = 0; } - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } - Color.prototype.set = function (r, g, b, a) { - this.r = r; - this.g = g; - this.b = b; - this.a = a; - return this.clamp(); - }; - Color.prototype.setFromColor = function (c) { - this.r = c.r; - this.g = c.g; - this.b = c.b; - this.a = c.a; - return this; - }; - Color.prototype.setFromString = function (hex) { - hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; - this.r = parseInt(hex.substr(0, 2), 16) / 255; - this.g = parseInt(hex.substr(2, 2), 16) / 255; - this.b = parseInt(hex.substr(4, 2), 16) / 255; - this.a = hex.length != 8 ? 1 : parseInt(hex.substr(6, 2), 16) / 255; - return this; - }; - Color.prototype.add = function (r, g, b, a) { - this.r += r; - this.g += g; - this.b += b; - this.a += a; - return this.clamp(); - }; - Color.prototype.clamp = function () { - if (this.r < 0) - this.r = 0; - else if (this.r > 1) - this.r = 1; - if (this.g < 0) - this.g = 0; - else if (this.g > 1) - this.g = 1; - if (this.b < 0) - this.b = 0; - else if (this.b > 1) - this.b = 1; - if (this.a < 0) - this.a = 0; - else if (this.a > 1) - this.a = 1; - return this; - }; - Color.rgba8888ToColor = function (color, value) { - color.r = ((value & 0xff000000) >>> 24) / 255; - color.g = ((value & 0x00ff0000) >>> 16) / 255; - color.b = ((value & 0x0000ff00) >>> 8) / 255; - color.a = ((value & 0x000000ff)) / 255; - }; - Color.rgb888ToColor = function (color, value) { - color.r = ((value & 0x00ff0000) >>> 16) / 255; - color.g = ((value & 0x0000ff00) >>> 8) / 255; - color.b = ((value & 0x000000ff)) / 255; - }; - Color.fromString = function (hex) { - return new Color().setFromString(hex); - }; - Color.WHITE = new Color(1, 1, 1, 1); - Color.RED = new Color(1, 0, 0, 1); - Color.GREEN = new Color(0, 1, 0, 1); - Color.BLUE = new Color(0, 0, 1, 1); - Color.MAGENTA = new Color(1, 0, 1, 1); - return Color; - }()); - spine.Color = Color; - var MathUtils = (function () { - function MathUtils() { - } - MathUtils.clamp = function (value, min, max) { - if (value < min) - return min; - if (value > max) - return max; - return value; - }; - MathUtils.cosDeg = function (degrees) { - return Math.cos(degrees * MathUtils.degRad); - }; - MathUtils.sinDeg = function (degrees) { - return Math.sin(degrees * MathUtils.degRad); - }; - MathUtils.signum = function (value) { - return value > 0 ? 1 : value < 0 ? -1 : 0; - }; - MathUtils.toInt = function (x) { - return x > 0 ? Math.floor(x) : Math.ceil(x); - }; - MathUtils.cbrt = function (x) { - var y = Math.pow(Math.abs(x), 1 / 3); - return x < 0 ? -y : y; - }; - MathUtils.randomTriangular = function (min, max) { - return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5); - }; - MathUtils.randomTriangularWith = function (min, max, mode) { - var u = Math.random(); - var d = max - min; - if (u <= (mode - min) / d) - return min + Math.sqrt(u * d * (mode - min)); - return max - Math.sqrt((1 - u) * d * (max - mode)); - }; - MathUtils.PI = 3.1415927; - MathUtils.PI2 = MathUtils.PI * 2; - MathUtils.radiansToDegrees = 180 / MathUtils.PI; - MathUtils.radDeg = MathUtils.radiansToDegrees; - MathUtils.degreesToRadians = MathUtils.PI / 180; - MathUtils.degRad = MathUtils.degreesToRadians; - return MathUtils; - }()); - spine.MathUtils = MathUtils; - var Interpolation = (function () { - function Interpolation() { - } - Interpolation.prototype.apply = function (start, end, a) { - return start + (end - start) * this.applyInternal(a); - }; - return Interpolation; - }()); - spine.Interpolation = Interpolation; - var Pow = (function (_super) { - __extends(Pow, _super); - function Pow(power) { - var _this = _super.call(this) || this; - _this.power = 2; - _this.power = power; - return _this; - } - Pow.prototype.applyInternal = function (a) { - if (a <= 0.5) - return Math.pow(a * 2, this.power) / 2; - return Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1; - }; - return Pow; - }(Interpolation)); - spine.Pow = Pow; - var PowOut = (function (_super) { - __extends(PowOut, _super); - function PowOut(power) { - return _super.call(this, power) || this; - } - PowOut.prototype.applyInternal = function (a) { - return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1; - }; - return PowOut; - }(Pow)); - spine.PowOut = PowOut; - var Utils = (function () { - function Utils() { - } - Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { - for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { - dest[j] = source[i]; - } - }; - Utils.arrayFill = function (array, fromIndex, toIndex, value) { - for (var i = fromIndex; i < toIndex; i++) - array[i] = value; - }; - Utils.setArraySize = function (array, size, value) { - if (value === void 0) { value = 0; } - var oldSize = array.length; - if (oldSize == size) - return array; - array.length = size; - if (oldSize < size) { - for (var i = oldSize; i < size; i++) - array[i] = value; - } - return array; - }; - Utils.ensureArrayCapacity = function (array, size, value) { - if (value === void 0) { value = 0; } - if (array.length >= size) - return array; - return Utils.setArraySize(array, size, value); - }; - Utils.newArray = function (size, defaultValue) { - var array = new Array(size); - for (var i = 0; i < size; i++) - array[i] = defaultValue; - return array; - }; - Utils.newFloatArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) - return new Float32Array(size); - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.newShortArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) - return new Int16Array(size); - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.toFloatArray = function (array) { - return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; - }; - Utils.toSinglePrecision = function (value) { - return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; - }; - Utils.webkit602BugfixHelper = function (alpha, blend) { - }; - Utils.contains = function (array, element, identity) { - if (identity === void 0) { identity = true; } - for (var i = 0; i < array.length; i++) - if (array[i] == element) - return true; - return false; - }; - Utils.enumValue = function (type, name) { - return type[name[0].toUpperCase() + name.slice(1)]; - }; - Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; - return Utils; - }()); - spine.Utils = Utils; - var DebugUtils = (function () { - function DebugUtils() { - } - DebugUtils.logBones = function (skeleton) { - for (var i = 0; i < skeleton.bones.length; i++) { - var bone = skeleton.bones[i]; - console.log(bone.data.name + ", " + bone.a + ", " + bone.b + ", " + bone.c + ", " + bone.d + ", " + bone.worldX + ", " + bone.worldY); - } - }; - return DebugUtils; - }()); - spine.DebugUtils = DebugUtils; - var Pool = (function () { - function Pool(instantiator) { - this.items = new Array(); - this.instantiator = instantiator; - } - Pool.prototype.obtain = function () { - return this.items.length > 0 ? this.items.pop() : this.instantiator(); - }; - Pool.prototype.free = function (item) { - if (item.reset) - item.reset(); - this.items.push(item); - }; - Pool.prototype.freeAll = function (items) { - for (var i = 0; i < items.length; i++) - this.free(items[i]); - }; - Pool.prototype.clear = function () { - this.items.length = 0; - }; - return Pool; - }()); - spine.Pool = Pool; - var Vector2 = (function () { - function Vector2(x, y) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - this.x = x; - this.y = y; - } - Vector2.prototype.set = function (x, y) { - this.x = x; - this.y = y; - return this; - }; - Vector2.prototype.length = function () { - var x = this.x; - var y = this.y; - return Math.sqrt(x * x + y * y); - }; - Vector2.prototype.normalize = function () { - var len = this.length(); - if (len != 0) { - this.x /= len; - this.y /= len; - } - return this; - }; - return Vector2; - }()); - spine.Vector2 = Vector2; - var TimeKeeper = (function () { - function TimeKeeper() { - this.maxDelta = 0.064; - this.framesPerSecond = 0; - this.delta = 0; - this.totalTime = 0; - this.lastTime = Date.now() / 1000; - this.frameCount = 0; - this.frameTime = 0; - } - TimeKeeper.prototype.update = function () { - var now = Date.now() / 1000; - this.delta = now - this.lastTime; - this.frameTime += this.delta; - this.totalTime += this.delta; - if (this.delta > this.maxDelta) - this.delta = this.maxDelta; - this.lastTime = now; - this.frameCount++; - if (this.frameTime > 1) { - this.framesPerSecond = this.frameCount / this.frameTime; - this.frameTime = 0; - this.frameCount = 0; - } - }; - return TimeKeeper; - }()); - spine.TimeKeeper = TimeKeeper; - var WindowedMean = (function () { - function WindowedMean(windowSize) { - if (windowSize === void 0) { windowSize = 32; } - this.addedValues = 0; - this.lastValue = 0; - this.mean = 0; - this.dirty = true; - this.values = new Array(windowSize); - } - WindowedMean.prototype.hasEnoughData = function () { - return this.addedValues >= this.values.length; - }; - WindowedMean.prototype.addValue = function (value) { - if (this.addedValues < this.values.length) - this.addedValues++; - this.values[this.lastValue++] = value; - if (this.lastValue > this.values.length - 1) - this.lastValue = 0; - this.dirty = true; - }; - WindowedMean.prototype.getMean = function () { - if (this.hasEnoughData()) { - if (this.dirty) { - var mean = 0; - for (var i = 0; i < this.values.length; i++) - mean += this.values[i]; - this.mean = mean / this.values.length; - this.dirty = false; - } - return this.mean; - } - return 0; - }; - return WindowedMean; - }()); - spine.WindowedMean = WindowedMean; -})(spine || (spine = {})); -(function () { - if (!Math.fround) { - Math.fround = (function (array) { - return function (x) { - return array[0] = x, array[0]; - }; - })(new Float32Array(1)); - } -})(); -var spine; -(function (spine) { - var Attachment = (function () { - function Attachment(name) { - if (!name) - throw new Error("name cannot be null."); - this.name = name; - } - return Attachment; - }()); - spine.Attachment = Attachment; - var VertexAttachment = (function (_super) { - __extends(VertexAttachment, _super); - function VertexAttachment(name) { - var _this = _super.call(this, name) || this; - _this.id = VertexAttachment.nextID++; - _this.worldVerticesLength = 0; - _this.deformAttachment = _this; - return _this; - } - VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) { - count = offset + (count >> 1) * stride; - var skeleton = slot.bone.skeleton; - var deformArray = slot.deform; - var vertices = this.vertices; - var bones = this.bones; - if (!bones) { - if (deformArray.length > 0) - vertices = deformArray; - var bone = slot.bone; - var x = bone.worldX; - var y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) { - var vx = vertices[v_1], vy = vertices[v_1 + 1]; - worldVertices[w] = vx * a + vy * b + x; - worldVertices[w + 1] = vx * c + vy * d + y; - } - return; - } - var v = 0, skip = 0; - for (var i = 0; i < start; i += 2) { - var n = bones[v]; - v += n + 1; - skip += n; - } - var skeletonBones = skeleton.bones; - if (deformArray.length == 0) { - for (var w = offset, b = skip * 3; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - else { - var deform = deformArray; - for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3, f += 2) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - }; - VertexAttachment.prototype.copyTo = function (attachment) { - if (this.bones) { - attachment.bones = new Array(this.bones.length); - spine.Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length); - } - else - attachment.bones = null; - if (this.vertices) { - attachment.vertices = spine.Utils.newFloatArray(this.vertices.length); - spine.Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length); - } - else - attachment.vertices = null; - attachment.worldVerticesLength = this.worldVerticesLength; - attachment.deformAttachment = this.deformAttachment; - }; - VertexAttachment.nextID = 0; - return VertexAttachment; - }(Attachment)); - spine.VertexAttachment = VertexAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoundingBoxAttachment = (function (_super) { - __extends(BoundingBoxAttachment, _super); - function BoundingBoxAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - BoundingBoxAttachment.prototype.copy = function () { - var copy = new BoundingBoxAttachment(this.name); - this.copyTo(copy); - copy.color.setFromColor(this.color); - return copy; - }; - return BoundingBoxAttachment; - }(spine.VertexAttachment)); - spine.BoundingBoxAttachment = BoundingBoxAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var ClippingAttachment = (function (_super) { - __extends(ClippingAttachment, _super); - function ClippingAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.2275, 0.2275, 0.8078, 1); - return _this; - } - ClippingAttachment.prototype.copy = function () { - var copy = new ClippingAttachment(this.name); - this.copyTo(copy); - copy.endSlot = this.endSlot; - copy.color.setFromColor(this.color); - return copy; - }; - return ClippingAttachment; - }(spine.VertexAttachment)); - spine.ClippingAttachment = ClippingAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var MeshAttachment = (function (_super) { - __extends(MeshAttachment, _super); - function MeshAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - _this.tempColor = new spine.Color(0, 0, 0, 0); - return _this; - } - MeshAttachment.prototype.updateUVs = function () { - var regionUVs = this.regionUVs; - if (!this.uvs || this.uvs.length != regionUVs.length) - this.uvs = spine.Utils.newFloatArray(regionUVs.length); - var uvs = this.uvs; - var n = this.uvs.length; - var u = this.region.u, v = this.region.v, width = 0, height = 0; - if (this.region instanceof spine.TextureAtlasRegion) { - var region = this.region, image = region.page.texture.getImage(); - var textureWidth = image.width, textureHeight = image.height; - switch (region.degrees) { - case 90: - u -= (region.originalHeight - region.offsetY - region.height) / textureWidth; - v -= (region.originalWidth - region.offsetX - region.width) / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i + 1] * width; - uvs[i + 1] = v + (1 - regionUVs[i]) * height; - } - return; - case 180: - u -= (region.originalWidth - region.offsetX - region.width) / textureWidth; - v -= region.offsetY / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i]) * width; - uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height; - } - return; - case 270: - u -= region.offsetY / textureWidth; - v -= region.offsetX / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i + 1]) * width; - uvs[i + 1] = v + regionUVs[i] * height; - } - return; - } - u -= region.offsetX / textureWidth; - v -= (region.originalHeight - region.offsetY - region.height) / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - } - else if (!this.region) { - u = v = 0; - width = height = 1; - } - else { - width = this.region.u2 - u; - height = this.region.v2 - v; - } - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i] * width; - uvs[i + 1] = v + regionUVs[i + 1] * height; - } - }; - MeshAttachment.prototype.getParentMesh = function () { - return this.parentMesh; - }; - MeshAttachment.prototype.setParentMesh = function (parentMesh) { - this.parentMesh = parentMesh; - if (parentMesh) { - this.bones = parentMesh.bones; - this.vertices = parentMesh.vertices; - this.worldVerticesLength = parentMesh.worldVerticesLength; - this.regionUVs = parentMesh.regionUVs; - this.triangles = parentMesh.triangles; - this.hullLength = parentMesh.hullLength; - this.worldVerticesLength = parentMesh.worldVerticesLength; - } - }; - MeshAttachment.prototype.copy = function () { - if (this.parentMesh) - return this.newLinkedMesh(); - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - this.copyTo(copy); - copy.regionUVs = new Array(this.regionUVs.length); - spine.Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length); - copy.uvs = new Array(this.uvs.length); - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length); - copy.triangles = new Array(this.triangles.length); - spine.Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); - copy.hullLength = this.hullLength; - if (this.edges) { - copy.edges = new Array(this.edges.length); - spine.Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); - } - copy.width = this.width; - copy.height = this.height; - return copy; - }; - MeshAttachment.prototype.newLinkedMesh = function () { - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - copy.deformAttachment = this.deformAttachment; - copy.setParentMesh(this.parentMesh ? this.parentMesh : this); - copy.updateUVs(); - return copy; - }; - return MeshAttachment; - }(spine.VertexAttachment)); - spine.MeshAttachment = MeshAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathAttachment = (function (_super) { - __extends(PathAttachment, _super); - function PathAttachment(name) { - var _this = _super.call(this, name) || this; - _this.closed = false; - _this.constantSpeed = false; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - PathAttachment.prototype.copy = function () { - var copy = new PathAttachment(this.name); - this.copyTo(copy); - copy.lengths = new Array(this.lengths.length); - spine.Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length); - copy.closed = closed; - copy.constantSpeed = this.constantSpeed; - copy.color.setFromColor(this.color); - return copy; - }; - return PathAttachment; - }(spine.VertexAttachment)); - spine.PathAttachment = PathAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PointAttachment = (function (_super) { - __extends(PointAttachment, _super); - function PointAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.38, 0.94, 0, 1); - return _this; - } - PointAttachment.prototype.computeWorldPosition = function (bone, point) { - point.x = this.x * bone.a + this.y * bone.b + bone.worldX; - point.y = this.x * bone.c + this.y * bone.d + bone.worldY; - return point; - }; - PointAttachment.prototype.computeWorldRotation = function (bone) { - var cos = spine.MathUtils.cosDeg(this.rotation), sin = spine.MathUtils.sinDeg(this.rotation); - var x = cos * bone.a + sin * bone.b; - var y = cos * bone.c + sin * bone.d; - return Math.atan2(y, x) * spine.MathUtils.radDeg; - }; - PointAttachment.prototype.copy = function () { - var copy = new PointAttachment(this.name); - copy.x = this.x; - copy.y = this.y; - copy.rotation = this.rotation; - copy.color.setFromColor(this.color); - return copy; - }; - return PointAttachment; - }(spine.VertexAttachment)); - spine.PointAttachment = PointAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var RegionAttachment = (function (_super) { - __extends(RegionAttachment, _super); - function RegionAttachment(name) { - var _this = _super.call(this, name) || this; - _this.x = 0; - _this.y = 0; - _this.scaleX = 1; - _this.scaleY = 1; - _this.rotation = 0; - _this.width = 0; - _this.height = 0; - _this.color = new spine.Color(1, 1, 1, 1); - _this.offset = spine.Utils.newFloatArray(8); - _this.uvs = spine.Utils.newFloatArray(8); - _this.tempColor = new spine.Color(1, 1, 1, 1); - return _this; - } - RegionAttachment.prototype.updateOffset = function () { - var region = this.region; - var regionScaleX = this.width / this.region.originalWidth * this.scaleX; - var regionScaleY = this.height / this.region.originalHeight * this.scaleY; - var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; - var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; - var localX2 = localX + this.region.width * regionScaleX; - var localY2 = localY + this.region.height * regionScaleY; - var radians = this.rotation * Math.PI / 180; - var cos = Math.cos(radians); - var sin = Math.sin(radians); - var x = this.x, y = this.y; - var localXCos = localX * cos + x; - var localXSin = localX * sin; - var localYCos = localY * cos + y; - var localYSin = localY * sin; - var localX2Cos = localX2 * cos + x; - var localX2Sin = localX2 * sin; - var localY2Cos = localY2 * cos + y; - var localY2Sin = localY2 * sin; - var offset = this.offset; - offset[0] = localXCos - localYSin; - offset[1] = localYCos + localXSin; - offset[2] = localXCos - localY2Sin; - offset[3] = localY2Cos + localXSin; - offset[4] = localX2Cos - localY2Sin; - offset[5] = localY2Cos + localX2Sin; - offset[6] = localX2Cos - localYSin; - offset[7] = localYCos + localX2Sin; - }; - RegionAttachment.prototype.setRegion = function (region) { - this.region = region; - var uvs = this.uvs; - if (region.degrees == 90) { - uvs[2] = region.u; - uvs[3] = region.v2; - uvs[4] = region.u; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v; - uvs[0] = region.u2; - uvs[1] = region.v2; - } - else { - uvs[0] = region.u; - uvs[1] = region.v2; - uvs[2] = region.u; - uvs[3] = region.v; - uvs[4] = region.u2; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v2; - } - }; - RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) { - var vertexOffset = this.offset; - var x = bone.worldX, y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var offsetX = 0, offsetY = 0; - offsetX = vertexOffset[0]; - offsetY = vertexOffset[1]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[2]; - offsetY = vertexOffset[3]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[4]; - offsetY = vertexOffset[5]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[6]; - offsetY = vertexOffset[7]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - }; - RegionAttachment.prototype.copy = function () { - var copy = new RegionAttachment(this.name); - copy.region = this.region; - copy.rendererObject = this.rendererObject; - copy.path = this.path; - copy.x = this.x; - copy.y = this.y; - copy.scaleX = this.scaleX; - copy.scaleY = this.scaleY; - copy.rotation = this.rotation; - copy.width = this.width; - copy.height = this.height; - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8); - spine.Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8); - copy.color.setFromColor(this.color); - return copy; - }; - RegionAttachment.X1 = 0; - RegionAttachment.Y1 = 1; - RegionAttachment.C1R = 2; - RegionAttachment.C1G = 3; - RegionAttachment.C1B = 4; - RegionAttachment.C1A = 5; - RegionAttachment.U1 = 6; - RegionAttachment.V1 = 7; - RegionAttachment.X2 = 8; - RegionAttachment.Y2 = 9; - RegionAttachment.C2R = 10; - RegionAttachment.C2G = 11; - RegionAttachment.C2B = 12; - RegionAttachment.C2A = 13; - RegionAttachment.U2 = 14; - RegionAttachment.V2 = 15; - RegionAttachment.X3 = 16; - RegionAttachment.Y3 = 17; - RegionAttachment.C3R = 18; - RegionAttachment.C3G = 19; - RegionAttachment.C3B = 20; - RegionAttachment.C3A = 21; - RegionAttachment.U3 = 22; - RegionAttachment.V3 = 23; - RegionAttachment.X4 = 24; - RegionAttachment.Y4 = 25; - RegionAttachment.C4R = 26; - RegionAttachment.C4G = 27; - RegionAttachment.C4B = 28; - RegionAttachment.C4A = 29; - RegionAttachment.U4 = 30; - RegionAttachment.V4 = 31; - return RegionAttachment; - }(spine.Attachment)); - spine.RegionAttachment = RegionAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var JitterEffect = (function () { - function JitterEffect(jitterX, jitterY) { - this.jitterX = 0; - this.jitterY = 0; - this.jitterX = jitterX; - this.jitterY = jitterY; - } - JitterEffect.prototype.begin = function (skeleton) { - }; - JitterEffect.prototype.transform = function (position, uv, light, dark) { - position.x += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - position.y += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - }; - JitterEffect.prototype.end = function () { - }; - return JitterEffect; - }()); - spine.JitterEffect = JitterEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SwirlEffect = (function () { - function SwirlEffect(radius) { - this.centerX = 0; - this.centerY = 0; - this.radius = 0; - this.angle = 0; - this.worldX = 0; - this.worldY = 0; - this.radius = radius; - } - SwirlEffect.prototype.begin = function (skeleton) { - this.worldX = skeleton.x + this.centerX; - this.worldY = skeleton.y + this.centerY; - }; - SwirlEffect.prototype.transform = function (position, uv, light, dark) { - var radAngle = this.angle * spine.MathUtils.degreesToRadians; - var x = position.x - this.worldX; - var y = position.y - this.worldY; - var dist = Math.sqrt(x * x + y * y); - if (dist < this.radius) { - var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius); - var cos = Math.cos(theta); - var sin = Math.sin(theta); - position.x = cos * x - sin * y + this.worldX; - position.y = sin * x + cos * y + this.worldY; - } - }; - SwirlEffect.prototype.end = function () { - }; - SwirlEffect.interpolation = new spine.PowOut(2); - return SwirlEffect; - }()); - spine.SwirlEffect = SwirlEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var AssetManager = (function (_super) { - __extends(AssetManager, _super); - function AssetManager(context, pathPrefix, downloader) { - if (pathPrefix === void 0) { pathPrefix = ""; } - if (downloader === void 0) { downloader = null; } - return _super.call(this, function (image) { - return new spine.webgl.GLTexture(context, image); - }, pathPrefix, downloader) || this; - } - return AssetManager; - }(spine.AssetManager)); - webgl.AssetManager = AssetManager; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var OrthoCamera = (function () { - function OrthoCamera(viewportWidth, viewportHeight) { - this.position = new webgl.Vector3(0, 0, 0); - this.direction = new webgl.Vector3(0, 0, -1); - this.up = new webgl.Vector3(0, 1, 0); - this.near = 0; - this.far = 100; - this.zoom = 1; - this.viewportWidth = 0; - this.viewportHeight = 0; - this.projectionView = new webgl.Matrix4(); - this.inverseProjectionView = new webgl.Matrix4(); - this.projection = new webgl.Matrix4(); - this.view = new webgl.Matrix4(); - this.viewportWidth = viewportWidth; - this.viewportHeight = viewportHeight; - this.update(); - } - OrthoCamera.prototype.update = function () { - var projection = this.projection; - var view = this.view; - var projectionView = this.projectionView; - var inverseProjectionView = this.inverseProjectionView; - var zoom = this.zoom, viewportWidth = this.viewportWidth, viewportHeight = this.viewportHeight; - projection.ortho(zoom * (-viewportWidth / 2), zoom * (viewportWidth / 2), zoom * (-viewportHeight / 2), zoom * (viewportHeight / 2), this.near, this.far); - view.lookAt(this.position, this.direction, this.up); - projectionView.set(projection.values); - projectionView.multiply(view); - inverseProjectionView.set(projectionView.values).invert(); - }; - OrthoCamera.prototype.screenToWorld = function (screenCoords, screenWidth, screenHeight) { - var x = screenCoords.x, y = screenHeight - screenCoords.y - 1; - screenCoords.x = (2 * x) / screenWidth - 1; - screenCoords.y = (2 * y) / screenHeight - 1; - screenCoords.z = (2 * screenCoords.z) - 1; - screenCoords.project(this.inverseProjectionView); - return screenCoords; - }; - OrthoCamera.prototype.worldToScreen = function (worldCoords, screenWidth, screenHeight) { - worldCoords.project(this.projectionView); - worldCoords.x = screenWidth * (worldCoords.x + 1) / 2; - worldCoords.y = screenHeight * (worldCoords.y + 1) / 2; - worldCoords.z = (worldCoords.z + 1) / 2; - return worldCoords; - }; - OrthoCamera.prototype.setViewport = function (viewportWidth, viewportHeight) { - this.viewportWidth = viewportWidth; - this.viewportHeight = viewportHeight; - }; - return OrthoCamera; - }()); - webgl.OrthoCamera = OrthoCamera; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var GLTexture = (function (_super) { - __extends(GLTexture, _super); - function GLTexture(context, image, useMipMaps) { - if (useMipMaps === void 0) { useMipMaps = false; } - var _this = _super.call(this, image) || this; - _this.texture = null; - _this.boundUnit = 0; - _this.useMipMaps = false; - _this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - _this.useMipMaps = useMipMaps; - _this.restore(); - _this.context.addRestorable(_this); - return _this; - } - GLTexture.prototype.setFilters = function (minFilter, magFilter) { - var gl = this.context.gl; - this.bind(); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, GLTexture.validateMagFilter(magFilter)); - }; - GLTexture.validateMagFilter = function (magFilter) { - switch (magFilter) { - case spine.TextureFilter.MipMap: - case spine.TextureFilter.MipMapLinearLinear: - case spine.TextureFilter.MipMapLinearNearest: - case spine.TextureFilter.MipMapNearestLinear: - case spine.TextureFilter.MipMapNearestNearest: - return spine.TextureFilter.Linear; - default: - return magFilter; - } - }; - GLTexture.prototype.setWraps = function (uWrap, vWrap) { - var gl = this.context.gl; - this.bind(); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); - }; - GLTexture.prototype.update = function (useMipMaps) { - var gl = this.context.gl; - if (!this.texture) - this.texture = this.context.gl.createTexture(); - this.bind(); - if (GLTexture.DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL) - gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - if (useMipMaps) - gl.generateMipmap(gl.TEXTURE_2D); - }; - GLTexture.prototype.restore = function () { - this.texture = null; - this.update(this.useMipMaps); - }; - GLTexture.prototype.bind = function (unit) { - if (unit === void 0) { unit = 0; } - var gl = this.context.gl; - this.boundUnit = unit; - gl.activeTexture(gl.TEXTURE0 + unit); - gl.bindTexture(gl.TEXTURE_2D, this.texture); - }; - GLTexture.prototype.unbind = function () { - var gl = this.context.gl; - gl.activeTexture(gl.TEXTURE0 + this.boundUnit); - gl.bindTexture(gl.TEXTURE_2D, null); - }; - GLTexture.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - gl.deleteTexture(this.texture); - }; - GLTexture.DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL = false; - return GLTexture; - }(spine.Texture)); - webgl.GLTexture = GLTexture; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Input = (function () { - function Input(element) { - this.lastX = 0; - this.lastY = 0; - this.buttonDown = false; - this.currTouch = null; - this.listeners = new Array(); - this.touchesPool = new spine.Pool(function () { - return new spine.webgl.Touch(0, 0, 0); - }); - this.element = element; - this.setupCallbacks(element); - } - Input.prototype.setupCallbacks = function (element) { - var _this = this; - var mouseDown = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) - if (listeners[i].down) - listeners[i].down(x, y); - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = true; - document.addEventListener("mousemove", mouseMove); - document.addEventListener("mouseup", mouseUp); - } - }; - var mouseMove = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) { - if (_this.buttonDown) { - if (listeners[i].dragged) - listeners[i].dragged(x, y); - } - else { - if (listeners[i].moved) - listeners[i].moved(x, y); - } - } - _this.lastX = x; - _this.lastY = y; - } - }; - var mouseUp = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) - if (listeners[i].up) - listeners[i].up(x, y); - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - document.removeEventListener("mousemove", mouseMove); - document.removeEventListener("mouseup", mouseUp); - } - }; - element.addEventListener("mousedown", mouseDown, true); - element.addEventListener("mousemove", mouseMove, true); - element.addEventListener("mouseup", mouseUp, true); - element.addEventListener("touchstart", function (ev) { - if (!_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - var rect = element.getBoundingClientRect(); - var x = touch.clientX - rect.left; - var y = touch.clientY - rect.top; - _this.currTouch = _this.touchesPool.obtain(); - _this.currTouch.identifier = touch.identifier; - _this.currTouch.x = x; - _this.currTouch.y = y; - break; - } - var listeners = _this.listeners; - for (var i_17 = 0; i_17 < listeners.length; i_17++) { - if (listeners[i_17].down) - listeners[i_17].down(_this.currTouch.x, _this.currTouch.y); - } - _this.lastX = _this.currTouch.x; - _this.lastY = _this.currTouch.y; - _this.buttonDown = true; - } - ev.preventDefault(); - }, false); - element.addEventListener("touchend", function (ev) { - if (_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = _this.currTouch.x = touch.clientX - rect.left; - var y = _this.currTouch.y = touch.clientY - rect.top; - _this.touchesPool.free(_this.currTouch); - var listeners = _this.listeners; - for (var i_18 = 0; i_18 < listeners.length; i_18++) { - if (listeners[i_18].up) - listeners[i_18].up(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - _this.currTouch = null; - break; - } - } - } - ev.preventDefault(); - }, false); - element.addEventListener("touchcancel", function (ev) { - if (_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = _this.currTouch.x = touch.clientX - rect.left; - var y = _this.currTouch.y = touch.clientY - rect.top; - _this.touchesPool.free(_this.currTouch); - var listeners = _this.listeners; - for (var i_19 = 0; i_19 < listeners.length; i_19++) { - if (listeners[i_19].up) - listeners[i_19].up(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - _this.currTouch = null; - break; - } - } - } - ev.preventDefault(); - }, false); - element.addEventListener("touchmove", function (ev) { - if (_this.currTouch) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = touch.clientX - rect.left; - var y = touch.clientY - rect.top; - var listeners = _this.listeners; - for (var i_20 = 0; i_20 < listeners.length; i_20++) { - if (listeners[i_20].dragged) - listeners[i_20].dragged(x, y); - } - _this.lastX = _this.currTouch.x = x; - _this.lastY = _this.currTouch.y = y; - break; - } - } - } - ev.preventDefault(); - }, false); - }; - Input.prototype.addListener = function (listener) { - this.listeners.push(listener); - }; - Input.prototype.removeListener = function (listener) { - var idx = this.listeners.indexOf(listener); - if (idx > -1) { - this.listeners.splice(idx, 1); - } - }; - return Input; - }()); - webgl.Input = Input; - var Touch = (function () { - function Touch(identifier, x, y) { - this.identifier = identifier; - this.x = x; - this.y = y; - } - return Touch; - }()); - webgl.Touch = Touch; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var spinnerImage; - var logoImage; - var loaded = 0; - var FADE_IN = 1, FADE_OUT = 1; - var logoWidth = 165, logoHeight = 108, spinnerSize = 163; - var LoadingScreen = (function () { - function LoadingScreen(renderer) { - this.logo = null; - this.spinner = null; - this.angle = 0; - this.fadeOut = 0; - this.fadeIn = 0; - this.timeKeeper = new spine.TimeKeeper(); - this.backgroundColor = new spine.Color(0.135, 0.135, 0.135, 1); - this.tempColor = new spine.Color(); - this.renderer = renderer; - this.timeKeeper.maxDelta = 9; - if (!logoImage) { - var isSafari = navigator.userAgent.indexOf("Safari") > -1; - var onload_1 = function () { return loaded++; }; - logoImage = new Image(); - logoImage.src = SPINE_LOGO_DATA; - if (!isSafari) - logoImage.crossOrigin = "anonymous"; - logoImage.onload = onload_1; - spinnerImage = new Image(); - spinnerImage.src = SPINNER_DATA; - if (!isSafari) - spinnerImage.crossOrigin = "anonymous"; - spinnerImage.onload = onload_1; - } - } - LoadingScreen.prototype.draw = function (complete) { - if (complete === void 0) { complete = false; } - if (loaded < 2 || (complete && this.fadeOut > FADE_OUT)) - return; - this.timeKeeper.update(); - var a = Math.abs(Math.sin(this.timeKeeper.totalTime + 0.25)); - this.angle -= this.timeKeeper.delta * 200 * (1 + 1.5 * Math.pow(a, 5)); - var tempColor = this.tempColor; - var renderer = this.renderer; - var canvas = renderer.canvas; - var gl = renderer.context.gl; - renderer.resize(webgl.ResizeMode.Expand); - renderer.camera.position.set(canvas.width / 2, canvas.height / 2, 0); - renderer.batcher.setBlendMode(gl.ONE, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - if (complete) { - this.fadeOut += this.timeKeeper.delta * (this.timeKeeper.totalTime < 1 ? 2 : 1); - if (this.fadeOut > FADE_OUT) - return; - tempColor.setFromColor(this.backgroundColor); - a = 1 - this.fadeOut / FADE_OUT; - a = 1 - (a - 1) * (a - 1); - tempColor.a *= a; - if (tempColor.a > 0) { - renderer.camera.zoom = 1; - renderer.begin(); - renderer.quad(true, 0, 0, canvas.width, 0, canvas.width, canvas.height, 0, canvas.height, tempColor, tempColor, tempColor, tempColor); - renderer.end(); - } - } - else { - this.fadeIn += this.timeKeeper.delta; - if (this.backgroundColor.a > 0) { - gl.clearColor(this.backgroundColor.r, this.backgroundColor.g, this.backgroundColor.b, this.backgroundColor.a); - gl.clear(gl.COLOR_BUFFER_BIT); - } - a = 1; - } - a *= Math.min(this.fadeIn / FADE_IN, 1); - tempColor.set(a, a, a, a); - if (!this.logo) { - this.logo = new webgl.GLTexture(renderer.context, logoImage); - this.spinner = new webgl.GLTexture(renderer.context, spinnerImage); - } - renderer.camera.zoom = Math.max(1, spinnerSize / canvas.height); - renderer.begin(); - renderer.drawTexture(this.logo, (canvas.width - logoWidth) / 2, (canvas.height - logoHeight) / 2, logoWidth, logoHeight, tempColor); - renderer.drawTextureRotated(this.spinner, (canvas.width - spinnerSize) / 2, (canvas.height - spinnerSize) / 2, spinnerSize, spinnerSize, spinnerSize / 2, spinnerSize / 2, this.angle, tempColor); - renderer.end(); - }; - return LoadingScreen; - }()); - webgl.LoadingScreen = LoadingScreen; - var SPINNER_DATA = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKMAAACjCAYAAADmbK6AAAALKElEQVR42u2de2iW5R/GPzuqcwfnnKfNmafl5tTNHWzqNi3DEMQykcAoJSsySkspjSIk0iD/07Kf4R+FnVBDUTshZGpWUEJaaiWFgZlUFmXmIe3HNXthyebeZ77P9H13ffBG8Y8H7ut7vff93N/7fu4vGGPiFZiez/Qtw9lytJajfzfw9z/j+efPOv7cV8W+lUNY2a8T/ayTCRsWFLJA5rtUO1LLkV5p9LJeJizQiHeqnlOtmVFtdTGrrZkJCxYXsTgaI6r9MY4/UpNItW4mFDaXsTlaM6qVZlBq3UwofFrJp0HMWJ9DvXUzobCznJ1BzFjWlTLrZkJh/TDWBzFjTgo51s2EgnKI0Rrx+FiOWzNzVaym91Syx5qZsGBWb2ZFa0ZN6dbMhAWTcpkUrRmXD2K5NTNhgVbH0Zpxbl/mWjMTFvRIo0e0ZpzcncnWzISKtvmiMWNRJ4qslwmVXRXsas2Ix8ZwzFqZsGFREYtaM+Oaa1ljrUzYkJ9G/ok6TlzKjJWZVFor0y7c1Zu7WjLiqiGsskamXdHopyT4vALmzS9k/t19uHtKHlOSIMn6xAtARjIZ1sFcUSZ0Y4La+G6M18hS2IlCn4a+WoC0JNL0d/dUupdnUj40g6EJ2VEdMnhrOG/p5f/jUXz8SgmvaGU6KpNRNsLVQV0OdXf24s63h/P2gWoOrBjMCr2GJFQnnxnIM3q5P1PPmaYv+4ev4/C6UtbpV2gzXCkgL5W8Bwt48OIc6ul6Tp+s4+SyASxLiI4+PYCn1bHzDZxvaQW6vZzto7MYnQIpNkf7kp5EuozYUroqEjcNKHHd0Tl9mBPN1pk+hFeieGBnBtog7UXjsj9pWg+m6duecw2cay1OC/uxMC47KmP9OIYfoz1YoC20J/rzRG4quTZK2EAyJGs20qwUbYw0aNRmUxtvfUW/uEtNzc1NB1/X8LVyd15hh82F43AvD+VlXcsSJEZa1CQ3ejleAO7oxR3RDP0XN91X4+NXYb8nkv7UNTwV7e0YTdu7I3g33t7tuaEbNwSZpps2fSyvs4M2Tjhot+jb0Xzbltj8r5j/xVt/6Z1Ob93U1ZYO691EhhzchcHeXosVjcNZysyezLw4xRZt05R+fTeuj8vOj+zKyG0j2aZcVVs6v+QalnjrMFZASQYl2nBoSyz06e3j/Xk8rgWYmMvEICu2pm1HOTuc7okV8FgRj0XukwzanhvCc/F+72TjoQjdObN1OFuDLmh0xP+WHtxiI10ukJlCprb4guiv1fP+avZrS1C7NAkliHZjDtZwMMgqbukAltpMlwuMy2FcEBPqvfLLar5Uqi0hBdEwryy+Mv5n6zkbjTBa+dlMlwvUZFETZKGiFM7tvbhdJ3gSVRO0wzIjnxmvl/J6a6JsGMYGrahtpssFeqbR841S3mhN80OjOaSDEdqd6SjaMKgzgzRK7q1ib3PT9sYyNo7JZoyNFNvRcVMZmy7WOvIuryv/Zvdmdt90+nY0bRp3AvROohFwdwW7dTG7RFlbwlqdrbOBYg005NAQmZU0HWt1rXMBH1Xw0dQ8pmqzoaPmdhun7bHZjNVe9qP9eFQfO1VkUmHjhAVUZ1GtnKFSbjrkrPfy4i4UW5t/6ZxM54J0CqxFe81KpGsQyE4h23oYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjLna+bdOy+IiFquIpGq16Pb79cNYv3IIK/X/ugx+Ui6TVKvYVU9Nc8gX8od8Ir/IN/KPfCQ/yVfyl/6/pfJvLChkQdD6wyqntquCXYuKWJSfRr6D0dEAxV3xlw/khyD+kd/ku/88cHo+09tS3LBpO1HHCVUqcIA6CqB4K+6X6x35L/JM2loXurlWmUmlA5XogOIcK8/If5HncrSWo7F6cKIWPjT/RXGOlWfkv8hzaWsN4uaaysE6WIkOKM6x8oz8F3kusXqo2vxC5jtYiQ4ozrH0TeS5qIZcrB7qkrwdA8U5Vp6R/yLPZV8V+2L14Cl5THGwEh1QnGPlGfkv8lyUlIzFQ1cNYVVHrcjZ0VCcFe9Y+Eb+izy3ceclUl43aFN52DXXssYpnY6a4qFS8ZcP2uIf+e7inRh6pdFrdTGrm8uiHx/L8T2V7NGWzvJBLJ/bl7mTuzO5qBNFDoiJID/IF/KHfCK/yDfyT3O7d/KbfNfS80hNIrU0g9L6HOq1x5iTQo6FNpeLfCQ/yVfyl3xmXYwxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHNk9z4JwJ0SqKTdQkbyEwhU393T6V7zzR6pieR3tE1ITeVXImhe6BXDGZFdRbVeank2TBhcaEMr0rwbixj49IBLL2/L/ffmMuNHfqO9tFZjJYBd1ewO3Lx+IcVfKhqna5nHZYR6XFPH+5R3eeI5t9fx/fvjeC9Jdew5OKZKqFR/RDVKL6vL/f9PJafmyvHsL+a/ff24V6NmjZQbGchVbY6UM2BluqHv1rCqzVZ1KQlkZboepCdQvacPsz5bjTfXao+yMEaDt7Wk9tSIMVGig3TejCtJSM2bSpkPjWPqd1S6Zao+lORSYWmgkOjORRNwZqd5ezMSiHLRooNr5XwWjS6/1XHX9vL2T67N7M1iyXa9JCrYjVrS1gbpJyw6hBfsmiNCYT0P9/A+Wj1/6qGr5YNYFlJBiWJogEzezLz/ZG8/9s4fgtSyuvNYbyp1IONFBtu7sHNv4/j9yAxUHWrdaWsG9+N8XHd+YxkMpSy+aySz841cC5oXbmHCnnI74yxAgZ3YbDeB4PEQCOpBpFNZWwa2ZWRcdnxLsl00crtRB0n2lLg8JNRfDKoM4NsolgBSmw/UMADba1+qpmqfyf6x1u/0a/og3I+aEunP6/i86osqmygcGarF4p54dex/Bo0LqfqOfVwIQ/HW5/RSkwV1oN2WLlHTc82TljAwM4M1O5LWwYKZTjibYXNS0N5KcjKTe10PadfLObFuJwK4ozp+UzXDBTUjL+M5ZcBnRkQV53dMIwNQTu6bSTbVEzbi5awuVByd2E/FgaN0Tc1fKOzBHHV2aAdVSdv6s5NNkp7cSH/++xAng2yyHx+CM/H21YhfdPp+0U1X0TbSZnXx8faG9Aop0MS0cToh1p+iLcpOkLj9t/JOk5eqoPHxnDsyf486an5yqCDK7XZ1O4oZ4dWyy3FSXHUAYq47uyYbMZoGmhpG3DlEFb6uNiVBhpyaHhnBO8oJmfqOROJjzIiP43hJ8UxITqqX56S2Hur2KsOnq3nrE6PPNKPRwrSKbAZrjTQNZmuE7oxYXMZmxWbw9dxWFu4W4ezVedOE6qzI7oyYkY+M7TPeWsPbk2UX1qioSN+E3OZqOR2cReKE+qQRFN0Pi7y73g/UawU1KzezJpXwLz5hczX1ueUPKYkNb6GJQZ+j7/aAfRZREsv+quGsMoamXZBW2Gt5eU0alorEzYsKmJRa/m4NdeyxlqZsCGa84DKnVorEzboC7podis69DfIJmwufHMc7famvvmxZiYsKOtKWbRm1OcW1syEBboSJFozLh/EcmtmwgIluaM14/phrLdmJixYXMTiaM24p5I91syEBTphFOR7Y2tmwgJNvUFOr+tov3UzoaAv44KYUatv62ZCoemdhtG0+hzqrZsJBR08DWLG0gxKrZu50qvpxos3U5NItW4mFPp1ot+lPlpq2lYXs9qamVBZUMiC1ox4pJYjvlfStAu6GmTLcLboMtPIV4/6im5fFfuUi9QIap2MiWP+D96R1vPmsD/fAAAAAElFTkSuQmCC"; - var SPINE_LOGO_DATA = "data:image/png;base64,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"; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - webgl.M00 = 0; - webgl.M01 = 4; - webgl.M02 = 8; - webgl.M03 = 12; - webgl.M10 = 1; - webgl.M11 = 5; - webgl.M12 = 9; - webgl.M13 = 13; - webgl.M20 = 2; - webgl.M21 = 6; - webgl.M22 = 10; - webgl.M23 = 14; - webgl.M30 = 3; - webgl.M31 = 7; - webgl.M32 = 11; - webgl.M33 = 15; - var Matrix4 = (function () { - function Matrix4() { - this.temp = new Float32Array(16); - this.values = new Float32Array(16); - var v = this.values; - v[webgl.M00] = 1; - v[webgl.M11] = 1; - v[webgl.M22] = 1; - v[webgl.M33] = 1; - } - Matrix4.prototype.set = function (values) { - this.values.set(values); - return this; - }; - Matrix4.prototype.transpose = function () { - var t = this.temp; - var v = this.values; - t[webgl.M00] = v[webgl.M00]; - t[webgl.M01] = v[webgl.M10]; - t[webgl.M02] = v[webgl.M20]; - t[webgl.M03] = v[webgl.M30]; - t[webgl.M10] = v[webgl.M01]; - t[webgl.M11] = v[webgl.M11]; - t[webgl.M12] = v[webgl.M21]; - t[webgl.M13] = v[webgl.M31]; - t[webgl.M20] = v[webgl.M02]; - t[webgl.M21] = v[webgl.M12]; - t[webgl.M22] = v[webgl.M22]; - t[webgl.M23] = v[webgl.M32]; - t[webgl.M30] = v[webgl.M03]; - t[webgl.M31] = v[webgl.M13]; - t[webgl.M32] = v[webgl.M23]; - t[webgl.M33] = v[webgl.M33]; - return this.set(t); - }; - Matrix4.prototype.identity = function () { - var v = this.values; - v[webgl.M00] = 1; - v[webgl.M01] = 0; - v[webgl.M02] = 0; - v[webgl.M03] = 0; - v[webgl.M10] = 0; - v[webgl.M11] = 1; - v[webgl.M12] = 0; - v[webgl.M13] = 0; - v[webgl.M20] = 0; - v[webgl.M21] = 0; - v[webgl.M22] = 1; - v[webgl.M23] = 0; - v[webgl.M30] = 0; - v[webgl.M31] = 0; - v[webgl.M32] = 0; - v[webgl.M33] = 1; - return this; - }; - Matrix4.prototype.invert = function () { - var v = this.values; - var t = this.temp; - var l_det = v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] - + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] - - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] - - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] - + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] - + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] - - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] - - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - if (l_det == 0) - throw new Error("non-invertible matrix"); - var inv_det = 1.0 / l_det; - t[webgl.M00] = v[webgl.M12] * v[webgl.M23] * v[webgl.M31] - v[webgl.M13] * v[webgl.M22] * v[webgl.M31] + v[webgl.M13] * v[webgl.M21] * v[webgl.M32] - - v[webgl.M11] * v[webgl.M23] * v[webgl.M32] - v[webgl.M12] * v[webgl.M21] * v[webgl.M33] + v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M01] = v[webgl.M03] * v[webgl.M22] * v[webgl.M31] - v[webgl.M02] * v[webgl.M23] * v[webgl.M31] - v[webgl.M03] * v[webgl.M21] * v[webgl.M32] - + v[webgl.M01] * v[webgl.M23] * v[webgl.M32] + v[webgl.M02] * v[webgl.M21] * v[webgl.M33] - v[webgl.M01] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M02] = v[webgl.M02] * v[webgl.M13] * v[webgl.M31] - v[webgl.M03] * v[webgl.M12] * v[webgl.M31] + v[webgl.M03] * v[webgl.M11] * v[webgl.M32] - - v[webgl.M01] * v[webgl.M13] * v[webgl.M32] - v[webgl.M02] * v[webgl.M11] * v[webgl.M33] + v[webgl.M01] * v[webgl.M12] * v[webgl.M33]; - t[webgl.M03] = v[webgl.M03] * v[webgl.M12] * v[webgl.M21] - v[webgl.M02] * v[webgl.M13] * v[webgl.M21] - v[webgl.M03] * v[webgl.M11] * v[webgl.M22] - + v[webgl.M01] * v[webgl.M13] * v[webgl.M22] + v[webgl.M02] * v[webgl.M11] * v[webgl.M23] - v[webgl.M01] * v[webgl.M12] * v[webgl.M23]; - t[webgl.M10] = v[webgl.M13] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M20] * v[webgl.M32] - + v[webgl.M10] * v[webgl.M23] * v[webgl.M32] + v[webgl.M12] * v[webgl.M20] * v[webgl.M33] - v[webgl.M10] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M11] = v[webgl.M02] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M22] * v[webgl.M30] + v[webgl.M03] * v[webgl.M20] * v[webgl.M32] - - v[webgl.M00] * v[webgl.M23] * v[webgl.M32] - v[webgl.M02] * v[webgl.M20] * v[webgl.M33] + v[webgl.M00] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M12] = v[webgl.M03] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M10] * v[webgl.M32] - + v[webgl.M00] * v[webgl.M13] * v[webgl.M32] + v[webgl.M02] * v[webgl.M10] * v[webgl.M33] - v[webgl.M00] * v[webgl.M12] * v[webgl.M33]; - t[webgl.M13] = v[webgl.M02] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M12] * v[webgl.M20] + v[webgl.M03] * v[webgl.M10] * v[webgl.M22] - - v[webgl.M00] * v[webgl.M13] * v[webgl.M22] - v[webgl.M02] * v[webgl.M10] * v[webgl.M23] + v[webgl.M00] * v[webgl.M12] * v[webgl.M23]; - t[webgl.M20] = v[webgl.M11] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M21] * v[webgl.M30] + v[webgl.M13] * v[webgl.M20] * v[webgl.M31] - - v[webgl.M10] * v[webgl.M23] * v[webgl.M31] - v[webgl.M11] * v[webgl.M20] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M33]; - t[webgl.M21] = v[webgl.M03] * v[webgl.M21] * v[webgl.M30] - v[webgl.M01] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M20] * v[webgl.M31] - + v[webgl.M00] * v[webgl.M23] * v[webgl.M31] + v[webgl.M01] * v[webgl.M20] * v[webgl.M33] - v[webgl.M00] * v[webgl.M21] * v[webgl.M33]; - t[webgl.M22] = v[webgl.M01] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M11] * v[webgl.M30] + v[webgl.M03] * v[webgl.M10] * v[webgl.M31] - - v[webgl.M00] * v[webgl.M13] * v[webgl.M31] - v[webgl.M01] * v[webgl.M10] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M33]; - t[webgl.M23] = v[webgl.M03] * v[webgl.M11] * v[webgl.M20] - v[webgl.M01] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M10] * v[webgl.M21] - + v[webgl.M00] * v[webgl.M13] * v[webgl.M21] + v[webgl.M01] * v[webgl.M10] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M23]; - t[webgl.M30] = v[webgl.M12] * v[webgl.M21] * v[webgl.M30] - v[webgl.M11] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M20] * v[webgl.M31] - + v[webgl.M10] * v[webgl.M22] * v[webgl.M31] + v[webgl.M11] * v[webgl.M20] * v[webgl.M32] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32]; - t[webgl.M31] = v[webgl.M01] * v[webgl.M22] * v[webgl.M30] - v[webgl.M02] * v[webgl.M21] * v[webgl.M30] + v[webgl.M02] * v[webgl.M20] * v[webgl.M31] - - v[webgl.M00] * v[webgl.M22] * v[webgl.M31] - v[webgl.M01] * v[webgl.M20] * v[webgl.M32] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32]; - t[webgl.M32] = v[webgl.M02] * v[webgl.M11] * v[webgl.M30] - v[webgl.M01] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M10] * v[webgl.M31] - + v[webgl.M00] * v[webgl.M12] * v[webgl.M31] + v[webgl.M01] * v[webgl.M10] * v[webgl.M32] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32]; - t[webgl.M33] = v[webgl.M01] * v[webgl.M12] * v[webgl.M20] - v[webgl.M02] * v[webgl.M11] * v[webgl.M20] + v[webgl.M02] * v[webgl.M10] * v[webgl.M21] - - v[webgl.M00] * v[webgl.M12] * v[webgl.M21] - v[webgl.M01] * v[webgl.M10] * v[webgl.M22] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22]; - v[webgl.M00] = t[webgl.M00] * inv_det; - v[webgl.M01] = t[webgl.M01] * inv_det; - v[webgl.M02] = t[webgl.M02] * inv_det; - v[webgl.M03] = t[webgl.M03] * inv_det; - v[webgl.M10] = t[webgl.M10] * inv_det; - v[webgl.M11] = t[webgl.M11] * inv_det; - v[webgl.M12] = t[webgl.M12] * inv_det; - v[webgl.M13] = t[webgl.M13] * inv_det; - v[webgl.M20] = t[webgl.M20] * inv_det; - v[webgl.M21] = t[webgl.M21] * inv_det; - v[webgl.M22] = t[webgl.M22] * inv_det; - v[webgl.M23] = t[webgl.M23] * inv_det; - v[webgl.M30] = t[webgl.M30] * inv_det; - v[webgl.M31] = t[webgl.M31] * inv_det; - v[webgl.M32] = t[webgl.M32] * inv_det; - v[webgl.M33] = t[webgl.M33] * inv_det; - return this; - }; - Matrix4.prototype.determinant = function () { - var v = this.values; - return v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] - + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] - - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] - - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] - + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] - + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] - - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] - - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - }; - Matrix4.prototype.translate = function (x, y, z) { - var v = this.values; - v[webgl.M03] += x; - v[webgl.M13] += y; - v[webgl.M23] += z; - return this; - }; - Matrix4.prototype.copy = function () { - return new Matrix4().set(this.values); - }; - Matrix4.prototype.projection = function (near, far, fovy, aspectRatio) { - this.identity(); - var l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); - var l_a1 = (far + near) / (near - far); - var l_a2 = (2 * far * near) / (near - far); - var v = this.values; - v[webgl.M00] = l_fd / aspectRatio; - v[webgl.M10] = 0; - v[webgl.M20] = 0; - v[webgl.M30] = 0; - v[webgl.M01] = 0; - v[webgl.M11] = l_fd; - v[webgl.M21] = 0; - v[webgl.M31] = 0; - v[webgl.M02] = 0; - v[webgl.M12] = 0; - v[webgl.M22] = l_a1; - v[webgl.M32] = -1; - v[webgl.M03] = 0; - v[webgl.M13] = 0; - v[webgl.M23] = l_a2; - v[webgl.M33] = 0; - return this; - }; - Matrix4.prototype.ortho2d = function (x, y, width, height) { - return this.ortho(x, x + width, y, y + height, 0, 1); - }; - Matrix4.prototype.ortho = function (left, right, bottom, top, near, far) { - this.identity(); - var x_orth = 2 / (right - left); - var y_orth = 2 / (top - bottom); - var z_orth = -2 / (far - near); - var tx = -(right + left) / (right - left); - var ty = -(top + bottom) / (top - bottom); - var tz = -(far + near) / (far - near); - var v = this.values; - v[webgl.M00] = x_orth; - v[webgl.M10] = 0; - v[webgl.M20] = 0; - v[webgl.M30] = 0; - v[webgl.M01] = 0; - v[webgl.M11] = y_orth; - v[webgl.M21] = 0; - v[webgl.M31] = 0; - v[webgl.M02] = 0; - v[webgl.M12] = 0; - v[webgl.M22] = z_orth; - v[webgl.M32] = 0; - v[webgl.M03] = tx; - v[webgl.M13] = ty; - v[webgl.M23] = tz; - v[webgl.M33] = 1; - return this; - }; - Matrix4.prototype.multiply = function (matrix) { - var t = this.temp; - var v = this.values; - var m = matrix.values; - t[webgl.M00] = v[webgl.M00] * m[webgl.M00] + v[webgl.M01] * m[webgl.M10] + v[webgl.M02] * m[webgl.M20] + v[webgl.M03] * m[webgl.M30]; - t[webgl.M01] = v[webgl.M00] * m[webgl.M01] + v[webgl.M01] * m[webgl.M11] + v[webgl.M02] * m[webgl.M21] + v[webgl.M03] * m[webgl.M31]; - t[webgl.M02] = v[webgl.M00] * m[webgl.M02] + v[webgl.M01] * m[webgl.M12] + v[webgl.M02] * m[webgl.M22] + v[webgl.M03] * m[webgl.M32]; - t[webgl.M03] = v[webgl.M00] * m[webgl.M03] + v[webgl.M01] * m[webgl.M13] + v[webgl.M02] * m[webgl.M23] + v[webgl.M03] * m[webgl.M33]; - t[webgl.M10] = v[webgl.M10] * m[webgl.M00] + v[webgl.M11] * m[webgl.M10] + v[webgl.M12] * m[webgl.M20] + v[webgl.M13] * m[webgl.M30]; - t[webgl.M11] = v[webgl.M10] * m[webgl.M01] + v[webgl.M11] * m[webgl.M11] + v[webgl.M12] * m[webgl.M21] + v[webgl.M13] * m[webgl.M31]; - t[webgl.M12] = v[webgl.M10] * m[webgl.M02] + v[webgl.M11] * m[webgl.M12] + v[webgl.M12] * m[webgl.M22] + v[webgl.M13] * m[webgl.M32]; - t[webgl.M13] = v[webgl.M10] * m[webgl.M03] + v[webgl.M11] * m[webgl.M13] + v[webgl.M12] * m[webgl.M23] + v[webgl.M13] * m[webgl.M33]; - t[webgl.M20] = v[webgl.M20] * m[webgl.M00] + v[webgl.M21] * m[webgl.M10] + v[webgl.M22] * m[webgl.M20] + v[webgl.M23] * m[webgl.M30]; - t[webgl.M21] = v[webgl.M20] * m[webgl.M01] + v[webgl.M21] * m[webgl.M11] + v[webgl.M22] * m[webgl.M21] + v[webgl.M23] * m[webgl.M31]; - t[webgl.M22] = v[webgl.M20] * m[webgl.M02] + v[webgl.M21] * m[webgl.M12] + v[webgl.M22] * m[webgl.M22] + v[webgl.M23] * m[webgl.M32]; - t[webgl.M23] = v[webgl.M20] * m[webgl.M03] + v[webgl.M21] * m[webgl.M13] + v[webgl.M22] * m[webgl.M23] + v[webgl.M23] * m[webgl.M33]; - t[webgl.M30] = v[webgl.M30] * m[webgl.M00] + v[webgl.M31] * m[webgl.M10] + v[webgl.M32] * m[webgl.M20] + v[webgl.M33] * m[webgl.M30]; - t[webgl.M31] = v[webgl.M30] * m[webgl.M01] + v[webgl.M31] * m[webgl.M11] + v[webgl.M32] * m[webgl.M21] + v[webgl.M33] * m[webgl.M31]; - t[webgl.M32] = v[webgl.M30] * m[webgl.M02] + v[webgl.M31] * m[webgl.M12] + v[webgl.M32] * m[webgl.M22] + v[webgl.M33] * m[webgl.M32]; - t[webgl.M33] = v[webgl.M30] * m[webgl.M03] + v[webgl.M31] * m[webgl.M13] + v[webgl.M32] * m[webgl.M23] + v[webgl.M33] * m[webgl.M33]; - return this.set(this.temp); - }; - Matrix4.prototype.multiplyLeft = function (matrix) { - var t = this.temp; - var v = this.values; - var m = matrix.values; - t[webgl.M00] = m[webgl.M00] * v[webgl.M00] + m[webgl.M01] * v[webgl.M10] + m[webgl.M02] * v[webgl.M20] + m[webgl.M03] * v[webgl.M30]; - t[webgl.M01] = m[webgl.M00] * v[webgl.M01] + m[webgl.M01] * v[webgl.M11] + m[webgl.M02] * v[webgl.M21] + m[webgl.M03] * v[webgl.M31]; - t[webgl.M02] = m[webgl.M00] * v[webgl.M02] + m[webgl.M01] * v[webgl.M12] + m[webgl.M02] * v[webgl.M22] + m[webgl.M03] * v[webgl.M32]; - t[webgl.M03] = m[webgl.M00] * v[webgl.M03] + m[webgl.M01] * v[webgl.M13] + m[webgl.M02] * v[webgl.M23] + m[webgl.M03] * v[webgl.M33]; - t[webgl.M10] = m[webgl.M10] * v[webgl.M00] + m[webgl.M11] * v[webgl.M10] + m[webgl.M12] * v[webgl.M20] + m[webgl.M13] * v[webgl.M30]; - t[webgl.M11] = m[webgl.M10] * v[webgl.M01] + m[webgl.M11] * v[webgl.M11] + m[webgl.M12] * v[webgl.M21] + m[webgl.M13] * v[webgl.M31]; - t[webgl.M12] = m[webgl.M10] * v[webgl.M02] + m[webgl.M11] * v[webgl.M12] + m[webgl.M12] * v[webgl.M22] + m[webgl.M13] * v[webgl.M32]; - t[webgl.M13] = m[webgl.M10] * v[webgl.M03] + m[webgl.M11] * v[webgl.M13] + m[webgl.M12] * v[webgl.M23] + m[webgl.M13] * v[webgl.M33]; - t[webgl.M20] = m[webgl.M20] * v[webgl.M00] + m[webgl.M21] * v[webgl.M10] + m[webgl.M22] * v[webgl.M20] + m[webgl.M23] * v[webgl.M30]; - t[webgl.M21] = m[webgl.M20] * v[webgl.M01] + m[webgl.M21] * v[webgl.M11] + m[webgl.M22] * v[webgl.M21] + m[webgl.M23] * v[webgl.M31]; - t[webgl.M22] = m[webgl.M20] * v[webgl.M02] + m[webgl.M21] * v[webgl.M12] + m[webgl.M22] * v[webgl.M22] + m[webgl.M23] * v[webgl.M32]; - t[webgl.M23] = m[webgl.M20] * v[webgl.M03] + m[webgl.M21] * v[webgl.M13] + m[webgl.M22] * v[webgl.M23] + m[webgl.M23] * v[webgl.M33]; - t[webgl.M30] = m[webgl.M30] * v[webgl.M00] + m[webgl.M31] * v[webgl.M10] + m[webgl.M32] * v[webgl.M20] + m[webgl.M33] * v[webgl.M30]; - t[webgl.M31] = m[webgl.M30] * v[webgl.M01] + m[webgl.M31] * v[webgl.M11] + m[webgl.M32] * v[webgl.M21] + m[webgl.M33] * v[webgl.M31]; - t[webgl.M32] = m[webgl.M30] * v[webgl.M02] + m[webgl.M31] * v[webgl.M12] + m[webgl.M32] * v[webgl.M22] + m[webgl.M33] * v[webgl.M32]; - t[webgl.M33] = m[webgl.M30] * v[webgl.M03] + m[webgl.M31] * v[webgl.M13] + m[webgl.M32] * v[webgl.M23] + m[webgl.M33] * v[webgl.M33]; - return this.set(this.temp); - }; - Matrix4.prototype.lookAt = function (position, direction, up) { - Matrix4.initTemps(); - var xAxis = Matrix4.xAxis, yAxis = Matrix4.yAxis, zAxis = Matrix4.zAxis; - zAxis.setFrom(direction).normalize(); - xAxis.setFrom(direction).normalize(); - xAxis.cross(up).normalize(); - yAxis.setFrom(xAxis).cross(zAxis).normalize(); - this.identity(); - var val = this.values; - val[webgl.M00] = xAxis.x; - val[webgl.M01] = xAxis.y; - val[webgl.M02] = xAxis.z; - val[webgl.M10] = yAxis.x; - val[webgl.M11] = yAxis.y; - val[webgl.M12] = yAxis.z; - val[webgl.M20] = -zAxis.x; - val[webgl.M21] = -zAxis.y; - val[webgl.M22] = -zAxis.z; - Matrix4.tmpMatrix.identity(); - Matrix4.tmpMatrix.values[webgl.M03] = -position.x; - Matrix4.tmpMatrix.values[webgl.M13] = -position.y; - Matrix4.tmpMatrix.values[webgl.M23] = -position.z; - this.multiply(Matrix4.tmpMatrix); - return this; - }; - Matrix4.initTemps = function () { - if (Matrix4.xAxis === null) - Matrix4.xAxis = new webgl.Vector3(); - if (Matrix4.yAxis === null) - Matrix4.yAxis = new webgl.Vector3(); - if (Matrix4.zAxis === null) - Matrix4.zAxis = new webgl.Vector3(); - }; - Matrix4.xAxis = null; - Matrix4.yAxis = null; - Matrix4.zAxis = null; - Matrix4.tmpMatrix = new Matrix4(); - return Matrix4; - }()); - webgl.Matrix4 = Matrix4; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Mesh = (function () { - function Mesh(context, attributes, maxVertices, maxIndices) { - this.attributes = attributes; - this.verticesLength = 0; - this.dirtyVertices = false; - this.indicesLength = 0; - this.dirtyIndices = false; - this.elementsPerVertex = 0; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.elementsPerVertex = 0; - for (var i = 0; i < attributes.length; i++) { - this.elementsPerVertex += attributes[i].numElements; - } - this.vertices = new Float32Array(maxVertices * this.elementsPerVertex); - this.indices = new Uint16Array(maxIndices); - this.context.addRestorable(this); - } - Mesh.prototype.getAttributes = function () { return this.attributes; }; - Mesh.prototype.maxVertices = function () { return this.vertices.length / this.elementsPerVertex; }; - Mesh.prototype.numVertices = function () { return this.verticesLength / this.elementsPerVertex; }; - Mesh.prototype.setVerticesLength = function (length) { - this.dirtyVertices = true; - this.verticesLength = length; - }; - Mesh.prototype.getVertices = function () { return this.vertices; }; - Mesh.prototype.maxIndices = function () { return this.indices.length; }; - Mesh.prototype.numIndices = function () { return this.indicesLength; }; - Mesh.prototype.setIndicesLength = function (length) { - this.dirtyIndices = true; - this.indicesLength = length; - }; - Mesh.prototype.getIndices = function () { return this.indices; }; - ; - Mesh.prototype.getVertexSizeInFloats = function () { - var size = 0; - for (var i = 0; i < this.attributes.length; i++) { - var attribute = this.attributes[i]; - size += attribute.numElements; - } - return size; - }; - Mesh.prototype.setVertices = function (vertices) { - this.dirtyVertices = true; - if (vertices.length > this.vertices.length) - throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); - this.vertices.set(vertices, 0); - this.verticesLength = vertices.length; - }; - Mesh.prototype.setIndices = function (indices) { - this.dirtyIndices = true; - if (indices.length > this.indices.length) - throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); - this.indices.set(indices, 0); - this.indicesLength = indices.length; - }; - Mesh.prototype.draw = function (shader, primitiveType) { - this.drawWithOffset(shader, primitiveType, 0, this.indicesLength > 0 ? this.indicesLength : this.verticesLength / this.elementsPerVertex); - }; - Mesh.prototype.drawWithOffset = function (shader, primitiveType, offset, count) { - var gl = this.context.gl; - if (this.dirtyVertices || this.dirtyIndices) - this.update(); - this.bind(shader); - if (this.indicesLength > 0) { - gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); - } - else { - gl.drawArrays(primitiveType, offset, count); - } - this.unbind(shader); - }; - Mesh.prototype.bind = function (shader) { - var gl = this.context.gl; - gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); - var offset = 0; - for (var i = 0; i < this.attributes.length; i++) { - var attrib = this.attributes[i]; - var location_1 = shader.getAttributeLocation(attrib.name); - gl.enableVertexAttribArray(location_1); - gl.vertexAttribPointer(location_1, attrib.numElements, gl.FLOAT, false, this.elementsPerVertex * 4, offset * 4); - offset += attrib.numElements; - } - if (this.indicesLength > 0) - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); - }; - Mesh.prototype.unbind = function (shader) { - var gl = this.context.gl; - for (var i = 0; i < this.attributes.length; i++) { - var attrib = this.attributes[i]; - var location_2 = shader.getAttributeLocation(attrib.name); - gl.disableVertexAttribArray(location_2); - } - gl.bindBuffer(gl.ARRAY_BUFFER, null); - if (this.indicesLength > 0) - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); - }; - Mesh.prototype.update = function () { - var gl = this.context.gl; - if (this.dirtyVertices) { - if (!this.verticesBuffer) { - this.verticesBuffer = gl.createBuffer(); - } - gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertices.subarray(0, this.verticesLength), gl.DYNAMIC_DRAW); - this.dirtyVertices = false; - } - if (this.dirtyIndices) { - if (!this.indicesBuffer) { - this.indicesBuffer = gl.createBuffer(); - } - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices.subarray(0, this.indicesLength), gl.DYNAMIC_DRAW); - this.dirtyIndices = false; - } - }; - Mesh.prototype.restore = function () { - this.verticesBuffer = null; - this.indicesBuffer = null; - this.update(); - }; - Mesh.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - gl.deleteBuffer(this.verticesBuffer); - gl.deleteBuffer(this.indicesBuffer); - }; - return Mesh; - }()); - webgl.Mesh = Mesh; - var VertexAttribute = (function () { - function VertexAttribute(name, type, numElements) { - this.name = name; - this.type = type; - this.numElements = numElements; - } - return VertexAttribute; - }()); - webgl.VertexAttribute = VertexAttribute; - var Position2Attribute = (function (_super) { - __extends(Position2Attribute, _super); - function Position2Attribute() { - return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 2) || this; - } - return Position2Attribute; - }(VertexAttribute)); - webgl.Position2Attribute = Position2Attribute; - var Position3Attribute = (function (_super) { - __extends(Position3Attribute, _super); - function Position3Attribute() { - return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 3) || this; - } - return Position3Attribute; - }(VertexAttribute)); - webgl.Position3Attribute = Position3Attribute; - var TexCoordAttribute = (function (_super) { - __extends(TexCoordAttribute, _super); - function TexCoordAttribute(unit) { - if (unit === void 0) { unit = 0; } - return _super.call(this, webgl.Shader.TEXCOORDS + (unit == 0 ? "" : unit), VertexAttributeType.Float, 2) || this; - } - return TexCoordAttribute; - }(VertexAttribute)); - webgl.TexCoordAttribute = TexCoordAttribute; - var ColorAttribute = (function (_super) { - __extends(ColorAttribute, _super); - function ColorAttribute() { - return _super.call(this, webgl.Shader.COLOR, VertexAttributeType.Float, 4) || this; - } - return ColorAttribute; - }(VertexAttribute)); - webgl.ColorAttribute = ColorAttribute; - var Color2Attribute = (function (_super) { - __extends(Color2Attribute, _super); - function Color2Attribute() { - return _super.call(this, webgl.Shader.COLOR2, VertexAttributeType.Float, 4) || this; - } - return Color2Attribute; - }(VertexAttribute)); - webgl.Color2Attribute = Color2Attribute; - var VertexAttributeType; - (function (VertexAttributeType) { - VertexAttributeType[VertexAttributeType["Float"] = 0] = "Float"; - })(VertexAttributeType = webgl.VertexAttributeType || (webgl.VertexAttributeType = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var PolygonBatcher = (function () { - function PolygonBatcher(context, twoColorTint, maxVertices) { - if (twoColorTint === void 0) { twoColorTint = true; } - if (maxVertices === void 0) { maxVertices = 10920; } - this.isDrawing = false; - this.shader = null; - this.lastTexture = null; - this.verticesLength = 0; - this.indicesLength = 0; - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - var attributes = twoColorTint ? - [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute(), new webgl.Color2Attribute()] : - [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute()]; - this.mesh = new webgl.Mesh(context, attributes, maxVertices, maxVertices * 3); - var gl = this.context.gl; - this.srcColorBlend = gl.SRC_ALPHA; - this.srcAlphaBlend = gl.ONE; - this.dstBlend = gl.ONE_MINUS_SRC_ALPHA; - } - PolygonBatcher.prototype.begin = function (shader) { - if (this.isDrawing) - throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); - this.drawCalls = 0; - this.shader = shader; - this.lastTexture = null; - this.isDrawing = true; - var gl = this.context.gl; - gl.enable(gl.BLEND); - gl.blendFuncSeparate(this.srcColorBlend, this.dstBlend, this.srcAlphaBlend, this.dstBlend); - }; - PolygonBatcher.prototype.setBlendMode = function (srcColorBlend, srcAlphaBlend, dstBlend) { - this.srcColorBlend = srcColorBlend; - this.srcAlphaBlend = srcAlphaBlend; - this.dstBlend = dstBlend; - if (this.isDrawing) { - this.flush(); - var gl = this.context.gl; - gl.blendFuncSeparate(srcColorBlend, dstBlend, srcAlphaBlend, dstBlend); - } - }; - PolygonBatcher.prototype.draw = function (texture, vertices, indices) { - if (texture != this.lastTexture) { - this.flush(); - this.lastTexture = texture; - } - else if (this.verticesLength + vertices.length > this.mesh.getVertices().length || - this.indicesLength + indices.length > this.mesh.getIndices().length) { - this.flush(); - } - var indexStart = this.mesh.numVertices(); - this.mesh.getVertices().set(vertices, this.verticesLength); - this.verticesLength += vertices.length; - this.mesh.setVerticesLength(this.verticesLength); - var indicesArray = this.mesh.getIndices(); - for (var i = this.indicesLength, j = 0; j < indices.length; i++, j++) - indicesArray[i] = indices[j] + indexStart; - this.indicesLength += indices.length; - this.mesh.setIndicesLength(this.indicesLength); - }; - PolygonBatcher.prototype.flush = function () { - if (this.verticesLength == 0) - return; - this.lastTexture.bind(); - this.mesh.draw(this.shader, this.context.gl.TRIANGLES); - this.verticesLength = 0; - this.indicesLength = 0; - this.mesh.setVerticesLength(0); - this.mesh.setIndicesLength(0); - this.drawCalls++; - }; - PolygonBatcher.prototype.end = function () { - if (!this.isDrawing) - throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); - if (this.verticesLength > 0 || this.indicesLength > 0) - this.flush(); - this.shader = null; - this.lastTexture = null; - this.isDrawing = false; - var gl = this.context.gl; - gl.disable(gl.BLEND); - }; - PolygonBatcher.prototype.getDrawCalls = function () { - return this.drawCalls; - }; - PolygonBatcher.prototype.dispose = function () { - this.mesh.dispose(); - }; - return PolygonBatcher; - }()); - webgl.PolygonBatcher = PolygonBatcher; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var quad = [ - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - ]; - var QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - var WHITE = new spine.Color(1, 1, 1, 1); - var SceneRenderer = (function () { - function SceneRenderer(canvas, context, twoColorTint) { - if (twoColorTint === void 0) { twoColorTint = true; } - this.twoColorTint = false; - this.canvas = canvas; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.twoColorTint = twoColorTint; - this.camera = new webgl.OrthoCamera(canvas.width, canvas.height); - this.batcherShader = twoColorTint ? webgl.Shader.newTwoColoredTextured(this.context) : webgl.Shader.newColoredTextured(this.context); - this.batcher = new webgl.PolygonBatcher(this.context, twoColorTint); - this.shapesShader = webgl.Shader.newColored(this.context); - this.shapes = new webgl.ShapeRenderer(this.context); - this.skeletonRenderer = new webgl.SkeletonRenderer(this.context, twoColorTint); - this.skeletonDebugRenderer = new webgl.SkeletonDebugRenderer(this.context); - } - SceneRenderer.prototype.begin = function () { - this.camera.update(); - this.enableRenderer(this.batcher); - }; - SceneRenderer.prototype.drawSkeleton = function (skeleton, premultipliedAlpha, slotRangeStart, slotRangeEnd) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - if (slotRangeStart === void 0) { slotRangeStart = -1; } - if (slotRangeEnd === void 0) { slotRangeEnd = -1; } - this.enableRenderer(this.batcher); - this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha; - this.skeletonRenderer.draw(this.batcher, skeleton, slotRangeStart, slotRangeEnd); - }; - SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha, ignoredBones) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - if (ignoredBones === void 0) { ignoredBones = null; } - this.enableRenderer(this.shapes); - this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; - this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones); - }; - SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawTextureUV = function (texture, x, y, width, height, u, v, u2, v2, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u; - quad[i++] = v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u2; - quad[i++] = v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u2; - quad[i++] = v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u; - quad[i++] = v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawTextureRotated = function (texture, x, y, width, height, pivotX, pivotY, angle, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var worldOriginX = x + pivotX; - var worldOriginY = y + pivotY; - var fx = -pivotX; - var fy = -pivotY; - var fx2 = width - pivotX; - var fy2 = height - pivotY; - var p1x = fx; - var p1y = fy; - var p2x = fx; - var p2y = fy2; - var p3x = fx2; - var p3y = fy2; - var p4x = fx2; - var p4y = fy; - var x1 = 0; - var y1 = 0; - var x2 = 0; - var y2 = 0; - var x3 = 0; - var y3 = 0; - var x4 = 0; - var y4 = 0; - if (angle != 0) { - var cos = spine.MathUtils.cosDeg(angle); - var sin = spine.MathUtils.sinDeg(angle); - x1 = cos * p1x - sin * p1y; - y1 = sin * p1x + cos * p1y; - x4 = cos * p2x - sin * p2y; - y4 = sin * p2x + cos * p2y; - x3 = cos * p3x - sin * p3y; - y3 = sin * p3x + cos * p3y; - x2 = x3 + (x1 - x4); - y2 = y3 + (y1 - y4); - } - else { - x1 = p1x; - y1 = p1y; - x4 = p2x; - y4 = p2y; - x3 = p3x; - y3 = p3y; - x2 = p4x; - y2 = p4y; - } - x1 += worldOriginX; - y1 += worldOriginY; - x2 += worldOriginX; - y2 += worldOriginY; - x3 += worldOriginX; - y3 += worldOriginY; - x4 += worldOriginX; - y4 += worldOriginY; - var i = 0; - quad[i++] = x1; - quad[i++] = y1; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x2; - quad[i++] = y2; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x3; - quad[i++] = y3; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x4; - quad[i++] = y4; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawRegion = function (region, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = WHITE; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u; - quad[i++] = region.v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u2; - quad[i++] = region.v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u2; - quad[i++] = region.v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u; - quad[i++] = region.v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i] = 0; - } - this.batcher.draw(region.page.texture, quad, QUAD_TRIANGLES); - }; - SceneRenderer.prototype.line = function (x, y, x2, y2, color, color2) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - this.enableRenderer(this.shapes); - this.shapes.line(x, y, x2, y2, color); - }; - SceneRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - this.enableRenderer(this.shapes); - this.shapes.triangle(filled, x, y, x2, y2, x3, y3, color, color2, color3); - }; - SceneRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - if (color4 === void 0) { color4 = null; } - this.enableRenderer(this.shapes); - this.shapes.quad(filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4); - }; - SceneRenderer.prototype.rect = function (filled, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.rect(filled, x, y, width, height, color); - }; - SceneRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.rectLine(filled, x1, y1, x2, y2, width, color); - }; - SceneRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.polygon(polygonVertices, offset, count, color); - }; - SceneRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { - if (color === void 0) { color = null; } - if (segments === void 0) { segments = 0; } - this.enableRenderer(this.shapes); - this.shapes.circle(filled, x, y, radius, color, segments); - }; - SceneRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color); - }; - SceneRenderer.prototype.end = function () { - if (this.activeRenderer === this.batcher) - this.batcher.end(); - else if (this.activeRenderer === this.shapes) - this.shapes.end(); - this.activeRenderer = null; - }; - SceneRenderer.prototype.resize = function (resizeMode) { - var canvas = this.canvas; - var dpr = window.devicePixelRatio || 1; - var w = Math.round(canvas.clientWidth * dpr); - var h = Math.round(canvas.clientHeight * dpr); - if (canvas.width != w || canvas.height != h) { - canvas.width = w; - canvas.height = h; - } - this.context.gl.viewport(0, 0, canvas.width, canvas.height); - if (resizeMode === ResizeMode.Expand) - this.camera.setViewport(w, h); - else if (resizeMode === ResizeMode.Fit) { - var sourceWidth = canvas.width, sourceHeight = canvas.height; - var targetWidth = this.camera.viewportWidth, targetHeight = this.camera.viewportHeight; - var targetRatio = targetHeight / targetWidth; - var sourceRatio = sourceHeight / sourceWidth; - var scale = targetRatio < sourceRatio ? targetWidth / sourceWidth : targetHeight / sourceHeight; - this.camera.setViewport(sourceWidth * scale, sourceHeight * scale); - } - this.camera.update(); - }; - SceneRenderer.prototype.enableRenderer = function (renderer) { - if (this.activeRenderer === renderer) - return; - this.end(); - if (renderer instanceof webgl.PolygonBatcher) { - this.batcherShader.bind(); - this.batcherShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); - this.batcherShader.setUniformi("u_texture", 0); - this.batcher.begin(this.batcherShader); - this.activeRenderer = this.batcher; - } - else if (renderer instanceof webgl.ShapeRenderer) { - this.shapesShader.bind(); - this.shapesShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); - this.shapes.begin(this.shapesShader); - this.activeRenderer = this.shapes; - } - else - this.activeRenderer = this.skeletonDebugRenderer; - }; - SceneRenderer.prototype.dispose = function () { - this.batcher.dispose(); - this.batcherShader.dispose(); - this.shapes.dispose(); - this.shapesShader.dispose(); - this.skeletonDebugRenderer.dispose(); - }; - return SceneRenderer; - }()); - webgl.SceneRenderer = SceneRenderer; - var ResizeMode; - (function (ResizeMode) { - ResizeMode[ResizeMode["Stretch"] = 0] = "Stretch"; - ResizeMode[ResizeMode["Expand"] = 1] = "Expand"; - ResizeMode[ResizeMode["Fit"] = 2] = "Fit"; - })(ResizeMode = webgl.ResizeMode || (webgl.ResizeMode = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Shader = (function () { - function Shader(context, vertexShader, fragmentShader) { - this.vertexShader = vertexShader; - this.fragmentShader = fragmentShader; - this.vs = null; - this.fs = null; - this.program = null; - this.tmp2x2 = new Float32Array(2 * 2); - this.tmp3x3 = new Float32Array(3 * 3); - this.tmp4x4 = new Float32Array(4 * 4); - this.vsSource = vertexShader; - this.fsSource = fragmentShader; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.context.addRestorable(this); - this.compile(); - } - Shader.prototype.getProgram = function () { return this.program; }; - Shader.prototype.getVertexShader = function () { return this.vertexShader; }; - Shader.prototype.getFragmentShader = function () { return this.fragmentShader; }; - Shader.prototype.getVertexShaderSource = function () { return this.vsSource; }; - Shader.prototype.getFragmentSource = function () { return this.fsSource; }; - Shader.prototype.compile = function () { - var gl = this.context.gl; - try { - this.vs = this.compileShader(gl.VERTEX_SHADER, this.vertexShader); - this.fs = this.compileShader(gl.FRAGMENT_SHADER, this.fragmentShader); - this.program = this.compileProgram(this.vs, this.fs); - } - catch (e) { - this.dispose(); - throw e; - } - }; - Shader.prototype.compileShader = function (type, source) { - var gl = this.context.gl; - var shader = gl.createShader(type); - gl.shaderSource(shader, source); - gl.compileShader(shader); - if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - var error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); - gl.deleteShader(shader); - if (!gl.isContextLost()) - throw new Error(error); - } - return shader; - }; - Shader.prototype.compileProgram = function (vs, fs) { - var gl = this.context.gl; - var program = gl.createProgram(); - gl.attachShader(program, vs); - gl.attachShader(program, fs); - gl.linkProgram(program); - if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - var error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); - gl.deleteProgram(program); - if (!gl.isContextLost()) - throw new Error(error); - } - return program; - }; - Shader.prototype.restore = function () { - this.compile(); - }; - Shader.prototype.bind = function () { - this.context.gl.useProgram(this.program); - }; - Shader.prototype.unbind = function () { - this.context.gl.useProgram(null); - }; - Shader.prototype.setUniformi = function (uniform, value) { - this.context.gl.uniform1i(this.getUniformLocation(uniform), value); - }; - Shader.prototype.setUniformf = function (uniform, value) { - this.context.gl.uniform1f(this.getUniformLocation(uniform), value); - }; - Shader.prototype.setUniform2f = function (uniform, value, value2) { - this.context.gl.uniform2f(this.getUniformLocation(uniform), value, value2); - }; - Shader.prototype.setUniform3f = function (uniform, value, value2, value3) { - this.context.gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); - }; - Shader.prototype.setUniform4f = function (uniform, value, value2, value3, value4) { - this.context.gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); - }; - Shader.prototype.setUniform2x2f = function (uniform, value) { - var gl = this.context.gl; - this.tmp2x2.set(value); - gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this.tmp2x2); - }; - Shader.prototype.setUniform3x3f = function (uniform, value) { - var gl = this.context.gl; - this.tmp3x3.set(value); - gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this.tmp3x3); - }; - Shader.prototype.setUniform4x4f = function (uniform, value) { - var gl = this.context.gl; - this.tmp4x4.set(value); - gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this.tmp4x4); - }; - Shader.prototype.getUniformLocation = function (uniform) { - var gl = this.context.gl; - var location = gl.getUniformLocation(this.program, uniform); - if (!location && !gl.isContextLost()) - throw new Error("Couldn't find location for uniform " + uniform); - return location; - }; - Shader.prototype.getAttributeLocation = function (attribute) { - var gl = this.context.gl; - var location = gl.getAttribLocation(this.program, attribute); - if (location == -1 && !gl.isContextLost()) - throw new Error("Couldn't find location for attribute " + attribute); - return location; - }; - Shader.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - if (this.vs) { - gl.deleteShader(this.vs); - this.vs = null; - } - if (this.fs) { - gl.deleteShader(this.fs); - this.fs = null; - } - if (this.program) { - gl.deleteProgram(this.program); - this.program = null; - } - }; - Shader.newColoredTextured = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.newTwoColoredTextured = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR2 + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_light;\n\t\t\t\tvarying vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_light = " + Shader.COLOR + ";\n\t\t\t\t\tv_dark = " + Shader.COLOR2 + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_light;\n\t\t\t\tvarying LOWP vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tvec4 texColor = texture2D(u_texture, v_texCoords);\n\t\t\t\t\tgl_FragColor.a = texColor.a * v_light.a;\n\t\t\t\t\tgl_FragColor.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb;\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.newColored = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color;\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.MVP_MATRIX = "u_projTrans"; - Shader.POSITION = "a_position"; - Shader.COLOR = "a_color"; - Shader.COLOR2 = "a_color2"; - Shader.TEXCOORDS = "a_texCoords"; - Shader.SAMPLER = "u_texture"; - return Shader; - }()); - webgl.Shader = Shader; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var ShapeRenderer = (function () { - function ShapeRenderer(context, maxVertices) { - if (maxVertices === void 0) { maxVertices = 10920; } - this.isDrawing = false; - this.shapeType = ShapeType.Filled; - this.color = new spine.Color(1, 1, 1, 1); - this.vertexIndex = 0; - this.tmp = new spine.Vector2(); - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.mesh = new webgl.Mesh(context, [new webgl.Position2Attribute(), new webgl.ColorAttribute()], maxVertices, 0); - var gl = this.context.gl; - this.srcColorBlend = gl.SRC_ALPHA; - this.srcAlphaBlend = gl.ONE; - this.dstBlend = gl.ONE_MINUS_SRC_ALPHA; - } - ShapeRenderer.prototype.begin = function (shader) { - if (this.isDrawing) - throw new Error("ShapeRenderer.begin() has already been called"); - this.shader = shader; - this.vertexIndex = 0; - this.isDrawing = true; - var gl = this.context.gl; - gl.enable(gl.BLEND); - gl.blendFuncSeparate(this.srcColorBlend, this.dstBlend, this.srcAlphaBlend, this.dstBlend); - }; - ShapeRenderer.prototype.setBlendMode = function (srcColorBlend, srcAlphaBlend, dstBlend) { - this.srcColorBlend = srcColorBlend; - this.srcAlphaBlend = srcAlphaBlend; - this.dstBlend = dstBlend; - if (this.isDrawing) { - this.flush(); - var gl = this.context.gl; - gl.blendFuncSeparate(srcColorBlend, dstBlend, srcAlphaBlend, dstBlend); - } - }; - ShapeRenderer.prototype.setColor = function (color) { - this.color.setFromColor(color); - }; - ShapeRenderer.prototype.setColorWith = function (r, g, b, a) { - this.color.set(r, g, b, a); - }; - ShapeRenderer.prototype.point = function (x, y, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Point, 1); - if (color === null) - color = this.color; - this.vertex(x, y, color); - }; - ShapeRenderer.prototype.line = function (x, y, x2, y2, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Line, 2); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - this.vertex(x, y, color); - this.vertex(x2, y2, color); - }; - ShapeRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - if (color2 === null) - color2 = this.color; - if (color3 === null) - color3 = this.color; - if (filled) { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - } - else { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x2, y2, color); - this.vertex(x3, y3, color2); - this.vertex(x3, y3, color); - this.vertex(x, y, color2); - } - }; - ShapeRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - if (color4 === void 0) { color4 = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - if (color2 === null) - color2 = this.color; - if (color3 === null) - color3 = this.color; - if (color4 === null) - color4 = this.color; - if (filled) { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - this.vertex(x3, y3, color3); - this.vertex(x4, y4, color4); - this.vertex(x, y, color); - } - else { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - this.vertex(x3, y3, color3); - this.vertex(x4, y4, color4); - this.vertex(x4, y4, color4); - this.vertex(x, y, color); - } - }; - ShapeRenderer.prototype.rect = function (filled, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.quad(filled, x, y, x + width, y, x + width, y + height, x, y + height, color, color, color, color); - }; - ShapeRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { - if (color === void 0) { color = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 8); - if (color === null) - color = this.color; - var t = this.tmp.set(y2 - y1, x1 - x2); - t.normalize(); - width *= 0.5; - var tx = t.x * width; - var ty = t.y * width; - if (!filled) { - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x1 - tx, y1 - ty, color); - } - else { - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - } - }; - ShapeRenderer.prototype.x = function (x, y, size) { - this.line(x - size, y - size, x + size, y + size); - this.line(x - size, y + size, x + size, y - size); - }; - ShapeRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { - if (color === void 0) { color = null; } - if (count < 3) - throw new Error("Polygon must contain at least 3 vertices"); - this.check(ShapeType.Line, count * 2); - if (color === null) - color = this.color; - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - offset <<= 1; - count <<= 1; - var firstX = polygonVertices[offset]; - var firstY = polygonVertices[offset + 1]; - var last = offset + count; - for (var i = offset, n = offset + count - 2; i < n; i += 2) { - var x1 = polygonVertices[i]; - var y1 = polygonVertices[i + 1]; - var x2 = 0; - var y2 = 0; - if (i + 2 >= last) { - x2 = firstX; - y2 = firstY; - } - else { - x2 = polygonVertices[i + 2]; - y2 = polygonVertices[i + 3]; - } - this.vertex(x1, y1, color); - this.vertex(x2, y2, color); - } - }; - ShapeRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { - if (color === void 0) { color = null; } - if (segments === void 0) { segments = 0; } - if (segments === 0) - segments = Math.max(1, (6 * spine.MathUtils.cbrt(radius)) | 0); - if (segments <= 0) - throw new Error("segments must be > 0."); - if (color === null) - color = this.color; - var angle = 2 * spine.MathUtils.PI / segments; - var cos = Math.cos(angle); - var sin = Math.sin(angle); - var cx = radius, cy = 0; - if (!filled) { - this.check(ShapeType.Line, segments * 2 + 2); - for (var i = 0; i < segments; i++) { - this.vertex(x + cx, y + cy, color); - var temp_1 = cx; - cx = cos * cx - sin * cy; - cy = sin * temp_1 + cos * cy; - this.vertex(x + cx, y + cy, color); - } - this.vertex(x + cx, y + cy, color); - } - else { - this.check(ShapeType.Filled, segments * 3 + 3); - segments--; - for (var i = 0; i < segments; i++) { - this.vertex(x, y, color); - this.vertex(x + cx, y + cy, color); - var temp_2 = cx; - cx = cos * cx - sin * cy; - cy = sin * temp_2 + cos * cy; - this.vertex(x + cx, y + cy, color); - } - this.vertex(x, y, color); - this.vertex(x + cx, y + cy, color); - } - var temp = cx; - cx = radius; - cy = 0; - this.vertex(x + cx, y + cy, color); - }; - ShapeRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Line, segments * 2 + 2); - if (color === null) - color = this.color; - var subdiv_step = 1 / segments; - var subdiv_step2 = subdiv_step * subdiv_step; - var subdiv_step3 = subdiv_step * subdiv_step * subdiv_step; - var pre1 = 3 * subdiv_step; - var pre2 = 3 * subdiv_step2; - var pre4 = 6 * subdiv_step2; - var pre5 = 6 * subdiv_step3; - var tmp1x = x1 - cx1 * 2 + cx2; - var tmp1y = y1 - cy1 * 2 + cy2; - var tmp2x = (cx1 - cx2) * 3 - x1 + x2; - var tmp2y = (cy1 - cy2) * 3 - y1 + y2; - var fx = x1; - var fy = y1; - var dfx = (cx1 - x1) * pre1 + tmp1x * pre2 + tmp2x * subdiv_step3; - var dfy = (cy1 - y1) * pre1 + tmp1y * pre2 + tmp2y * subdiv_step3; - var ddfx = tmp1x * pre4 + tmp2x * pre5; - var ddfy = tmp1y * pre4 + tmp2y * pre5; - var dddfx = tmp2x * pre5; - var dddfy = tmp2y * pre5; - while (segments-- > 0) { - this.vertex(fx, fy, color); - fx += dfx; - fy += dfy; - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - this.vertex(fx, fy, color); - } - this.vertex(fx, fy, color); - this.vertex(x2, y2, color); - }; - ShapeRenderer.prototype.vertex = function (x, y, color) { - var idx = this.vertexIndex; - var vertices = this.mesh.getVertices(); - vertices[idx++] = x; - vertices[idx++] = y; - vertices[idx++] = color.r; - vertices[idx++] = color.g; - vertices[idx++] = color.b; - vertices[idx++] = color.a; - this.vertexIndex = idx; - }; - ShapeRenderer.prototype.end = function () { - if (!this.isDrawing) - throw new Error("ShapeRenderer.begin() has not been called"); - this.flush(); - var gl = this.context.gl; - gl.disable(gl.BLEND); - this.isDrawing = false; - }; - ShapeRenderer.prototype.flush = function () { - if (this.vertexIndex == 0) - return; - this.mesh.setVerticesLength(this.vertexIndex); - this.mesh.draw(this.shader, this.shapeType); - this.vertexIndex = 0; - }; - ShapeRenderer.prototype.check = function (shapeType, numVertices) { - if (!this.isDrawing) - throw new Error("ShapeRenderer.begin() has not been called"); - if (this.shapeType == shapeType) { - if (this.mesh.maxVertices() - this.mesh.numVertices() < numVertices) - this.flush(); - else - return; - } - else { - this.flush(); - this.shapeType = shapeType; - } - }; - ShapeRenderer.prototype.dispose = function () { - this.mesh.dispose(); - }; - return ShapeRenderer; - }()); - webgl.ShapeRenderer = ShapeRenderer; - var ShapeType; - (function (ShapeType) { - ShapeType[ShapeType["Point"] = 0] = "Point"; - ShapeType[ShapeType["Line"] = 1] = "Line"; - ShapeType[ShapeType["Filled"] = 4] = "Filled"; - })(ShapeType = webgl.ShapeType || (webgl.ShapeType = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var SkeletonDebugRenderer = (function () { - function SkeletonDebugRenderer(context) { - this.boneLineColor = new spine.Color(1, 0, 0, 1); - this.boneOriginColor = new spine.Color(0, 1, 0, 1); - this.attachmentLineColor = new spine.Color(0, 0, 1, 0.5); - this.triangleLineColor = new spine.Color(1, 0.64, 0, 0.5); - this.pathColor = new spine.Color().setFromString("FF7F00"); - this.clipColor = new spine.Color(0.8, 0, 0, 2); - this.aabbColor = new spine.Color(0, 1, 0, 0.5); - this.drawBones = true; - this.drawRegionAttachments = true; - this.drawBoundingBoxes = true; - this.drawMeshHull = true; - this.drawMeshTriangles = true; - this.drawPaths = true; - this.drawSkeletonXY = false; - this.drawClipping = true; - this.premultipliedAlpha = false; - this.scale = 1; - this.boneWidth = 2; - this.bounds = new spine.SkeletonBounds(); - this.temp = new Array(); - this.vertices = spine.Utils.newFloatArray(2 * 1024); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - } - SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton, ignoredBones) { - if (ignoredBones === void 0) { ignoredBones = null; } - var skeletonX = skeleton.x; - var skeletonY = skeleton.y; - var gl = this.context.gl; - var srcFunc = this.premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; - shapes.setBlendMode(srcFunc, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - var bones = skeleton.bones; - if (this.drawBones) { - shapes.setColor(this.boneLineColor); - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) - continue; - if (!bone.parent) - continue; - var x = skeletonX + bone.data.length * bone.a + bone.worldX; - var y = skeletonY + bone.data.length * bone.c + bone.worldY; - shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale); - } - if (this.drawSkeletonXY) - shapes.x(skeletonX, skeletonY, 4 * this.scale); - } - if (this.drawRegionAttachments) { - shapes.setColor(this.attachmentLineColor); - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - var regionAttachment = attachment; - var vertices = this.vertices; - regionAttachment.computeWorldVertices(slot.bone, vertices, 0, 2); - shapes.line(vertices[0], vertices[1], vertices[2], vertices[3]); - shapes.line(vertices[2], vertices[3], vertices[4], vertices[5]); - shapes.line(vertices[4], vertices[5], vertices[6], vertices[7]); - shapes.line(vertices[6], vertices[7], vertices[0], vertices[1]); - } - } - } - if (this.drawMeshHull || this.drawMeshTriangles) { - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.MeshAttachment)) - continue; - var mesh = attachment; - var vertices = this.vertices; - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, 2); - var triangles = mesh.triangles; - var hullLength = mesh.hullLength; - if (this.drawMeshTriangles) { - shapes.setColor(this.triangleLineColor); - for (var ii = 0, nn = triangles.length; ii < nn; ii += 3) { - var v1 = triangles[ii] * 2, v2 = triangles[ii + 1] * 2, v3 = triangles[ii + 2] * 2; - shapes.triangle(false, vertices[v1], vertices[v1 + 1], vertices[v2], vertices[v2 + 1], vertices[v3], vertices[v3 + 1]); - } - } - if (this.drawMeshHull && hullLength > 0) { - shapes.setColor(this.attachmentLineColor); - hullLength = (hullLength >> 1) * 2; - var lastX = vertices[hullLength - 2], lastY = vertices[hullLength - 1]; - for (var ii = 0, nn = hullLength; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - shapes.line(x, y, lastX, lastY); - lastX = x; - lastY = y; - } - } - } - } - if (this.drawBoundingBoxes) { - var bounds = this.bounds; - bounds.update(skeleton, true); - shapes.setColor(this.aabbColor); - shapes.rect(false, bounds.minX, bounds.minY, bounds.getWidth(), bounds.getHeight()); - var polygons = bounds.polygons; - var boxes = bounds.boundingBoxes; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - shapes.setColor(boxes[i].color); - shapes.polygon(polygon, 0, polygon.length); - } - } - if (this.drawPaths) { - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - continue; - var path = attachment; - var nn = path.worldVerticesLength; - var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); - path.computeWorldVertices(slot, 0, nn, world, 0, 2); - var color = this.pathColor; - var x1 = world[2], y1 = world[3], x2 = 0, y2 = 0; - if (path.closed) { - shapes.setColor(color); - var cx1 = world[0], cy1 = world[1], cx2 = world[nn - 2], cy2 = world[nn - 1]; - x2 = world[nn - 4]; - y2 = world[nn - 3]; - shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); - shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); - shapes.line(x1, y1, cx1, cy1); - shapes.line(x2, y2, cx2, cy2); - } - nn -= 4; - for (var ii = 4; ii < nn; ii += 6) { - var cx1 = world[ii], cy1 = world[ii + 1], cx2 = world[ii + 2], cy2 = world[ii + 3]; - x2 = world[ii + 4]; - y2 = world[ii + 5]; - shapes.setColor(color); - shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); - shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); - shapes.line(x1, y1, cx1, cy1); - shapes.line(x2, y2, cx2, cy2); - x1 = x2; - y1 = y2; - } - } - } - if (this.drawBones) { - shapes.setColor(this.boneOriginColor); - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) - continue; - shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); - } - } - if (this.drawClipping) { - var slots = skeleton.slots; - shapes.setColor(this.clipColor); - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.ClippingAttachment)) - continue; - var clip = attachment; - var nn = clip.worldVerticesLength; - var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); - clip.computeWorldVertices(slot, 0, nn, world, 0, 2); - for (var i_21 = 0, n_3 = world.length; i_21 < n_3; i_21 += 2) { - var x = world[i_21]; - var y = world[i_21 + 1]; - var x2 = world[(i_21 + 2) % world.length]; - var y2 = world[(i_21 + 3) % world.length]; - shapes.line(x, y, x2, y2); - } - } - } - }; - SkeletonDebugRenderer.prototype.dispose = function () { - }; - SkeletonDebugRenderer.LIGHT_GRAY = new spine.Color(192 / 255, 192 / 255, 192 / 255, 1); - SkeletonDebugRenderer.GREEN = new spine.Color(0, 1, 0, 1); - return SkeletonDebugRenderer; - }()); - webgl.SkeletonDebugRenderer = SkeletonDebugRenderer; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Renderable = (function () { - function Renderable(vertices, numVertices, numFloats) { - this.vertices = vertices; - this.numVertices = numVertices; - this.numFloats = numFloats; - } - return Renderable; - }()); - ; - var SkeletonRenderer = (function () { - function SkeletonRenderer(context, twoColorTint) { - if (twoColorTint === void 0) { twoColorTint = true; } - this.premultipliedAlpha = false; - this.vertexEffect = null; - this.tempColor = new spine.Color(); - this.tempColor2 = new spine.Color(); - this.vertexSize = 2 + 2 + 4; - this.twoColorTint = false; - this.renderable = new Renderable(null, 0, 0); - this.clipper = new spine.SkeletonClipping(); - this.temp = new spine.Vector2(); - this.temp2 = new spine.Vector2(); - this.temp3 = new spine.Color(); - this.temp4 = new spine.Color(); - this.twoColorTint = twoColorTint; - if (twoColorTint) - this.vertexSize += 4; - this.vertices = spine.Utils.newFloatArray(this.vertexSize * 1024); - } - SkeletonRenderer.prototype.draw = function (batcher, skeleton, slotRangeStart, slotRangeEnd) { - if (slotRangeStart === void 0) { slotRangeStart = -1; } - if (slotRangeEnd === void 0) { slotRangeEnd = -1; } - var clipper = this.clipper; - var premultipliedAlpha = this.premultipliedAlpha; - var twoColorTint = this.twoColorTint; - var blendMode = null; - var tempPos = this.temp; - var tempUv = this.temp2; - var tempLight = this.temp3; - var tempDark = this.temp4; - var renderable = this.renderable; - var uvs = null; - var triangles = null; - var drawOrder = skeleton.drawOrder; - var attachmentColor = null; - var skeletonColor = skeleton.color; - var vertexSize = twoColorTint ? 12 : 8; - var inRange = false; - if (slotRangeStart == -1) - inRange = true; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var clippedVertexSize = clipper.isClipping() ? 2 : vertexSize; - var slot = drawOrder[i]; - if (!slot.bone.active) { - clipper.clipEndWithSlot(slot); - continue; - } - if (slotRangeStart >= 0 && slotRangeStart == slot.data.index) { - inRange = true; - } - if (!inRange) { - clipper.clipEndWithSlot(slot); - continue; - } - if (slotRangeEnd >= 0 && slotRangeEnd == slot.data.index) { - inRange = false; - } - var attachment = slot.getAttachment(); - var texture = null; - if (attachment instanceof spine.RegionAttachment) { - var region = attachment; - renderable.vertices = this.vertices; - renderable.numVertices = 4; - renderable.numFloats = clippedVertexSize << 2; - region.computeWorldVertices(slot.bone, renderable.vertices, 0, clippedVertexSize); - triangles = SkeletonRenderer.QUAD_TRIANGLES; - uvs = region.uvs; - texture = region.region.renderObject.page.texture; - attachmentColor = region.color; - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - renderable.vertices = this.vertices; - renderable.numVertices = (mesh.worldVerticesLength >> 1); - renderable.numFloats = renderable.numVertices * clippedVertexSize; - if (renderable.numFloats > renderable.vertices.length) { - renderable.vertices = this.vertices = spine.Utils.newFloatArray(renderable.numFloats); - } - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, renderable.vertices, 0, clippedVertexSize); - triangles = mesh.triangles; - texture = mesh.region.renderObject.page.texture; - uvs = mesh.uvs; - attachmentColor = mesh.color; - } - else if (attachment instanceof spine.ClippingAttachment) { - var clip = (attachment); - clipper.clipStart(slot, clip); - continue; - } - else { - clipper.clipEndWithSlot(slot); - continue; - } - if (texture) { - var slotColor = slot.color; - var finalColor = this.tempColor; - finalColor.r = skeletonColor.r * slotColor.r * attachmentColor.r; - finalColor.g = skeletonColor.g * slotColor.g * attachmentColor.g; - finalColor.b = skeletonColor.b * slotColor.b * attachmentColor.b; - finalColor.a = skeletonColor.a * slotColor.a * attachmentColor.a; - if (premultipliedAlpha) { - finalColor.r *= finalColor.a; - finalColor.g *= finalColor.a; - finalColor.b *= finalColor.a; - } - var darkColor = this.tempColor2; - if (!slot.darkColor) - darkColor.set(0, 0, 0, 1.0); - else { - if (premultipliedAlpha) { - darkColor.r = slot.darkColor.r * finalColor.a; - darkColor.g = slot.darkColor.g * finalColor.a; - darkColor.b = slot.darkColor.b * finalColor.a; - } - else { - darkColor.setFromColor(slot.darkColor); - } - darkColor.a = premultipliedAlpha ? 1.0 : 0.0; - } - var slotBlendMode = slot.data.blendMode; - if (slotBlendMode != blendMode) { - blendMode = slotBlendMode; - batcher.setBlendMode(webgl.WebGLBlendModeConverter.getSourceColorGLBlendMode(blendMode, premultipliedAlpha), webgl.WebGLBlendModeConverter.getSourceAlphaGLBlendMode(blendMode), webgl.WebGLBlendModeConverter.getDestGLBlendMode(blendMode)); - } - if (clipper.isClipping()) { - clipper.clipTriangles(renderable.vertices, renderable.numFloats, triangles, triangles.length, uvs, finalColor, darkColor, twoColorTint); - var clippedVertices = new Float32Array(clipper.clippedVertices); - var clippedTriangles = clipper.clippedTriangles; - if (this.vertexEffect) { - var vertexEffect = this.vertexEffect; - var verts = clippedVertices; - if (!twoColorTint) { - for (var v = 0, n_4 = clippedVertices.length; v < n_4; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - tempDark.set(0, 0, 0, 0); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 0, n_5 = clippedVertices.length; v < n_5; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - tempDark.set(verts[v + 8], verts[v + 9], verts[v + 10], verts[v + 11]); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - verts[v + 8] = tempDark.r; - verts[v + 9] = tempDark.g; - verts[v + 10] = tempDark.b; - verts[v + 11] = tempDark.a; - } - } - } - batcher.draw(texture, clippedVertices, clippedTriangles); - } - else { - var verts = renderable.vertices; - if (this.vertexEffect) { - var vertexEffect = this.vertexEffect; - if (!twoColorTint) { - for (var v = 0, u = 0, n_6 = renderable.numFloats; v < n_6; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - tempLight.setFromColor(finalColor); - tempDark.set(0, 0, 0, 0); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 0, u = 0, n_7 = renderable.numFloats; v < n_7; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - tempLight.setFromColor(finalColor); - tempDark.setFromColor(darkColor); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - verts[v + 8] = tempDark.r; - verts[v + 9] = tempDark.g; - verts[v + 10] = tempDark.b; - verts[v + 11] = tempDark.a; - } - } - } - else { - if (!twoColorTint) { - for (var v = 2, u = 0, n_8 = renderable.numFloats; v < n_8; v += vertexSize, u += 2) { - verts[v] = finalColor.r; - verts[v + 1] = finalColor.g; - verts[v + 2] = finalColor.b; - verts[v + 3] = finalColor.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - } - } - else { - for (var v = 2, u = 0, n_9 = renderable.numFloats; v < n_9; v += vertexSize, u += 2) { - verts[v] = finalColor.r; - verts[v + 1] = finalColor.g; - verts[v + 2] = finalColor.b; - verts[v + 3] = finalColor.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - verts[v + 6] = darkColor.r; - verts[v + 7] = darkColor.g; - verts[v + 8] = darkColor.b; - verts[v + 9] = darkColor.a; - } - } - } - var view = renderable.vertices.subarray(0, renderable.numFloats); - batcher.draw(texture, view, triangles); - } - } - clipper.clipEndWithSlot(slot); - } - clipper.clipEnd(); - }; - SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - return SkeletonRenderer; - }()); - webgl.SkeletonRenderer = SkeletonRenderer; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Vector3 = (function () { - function Vector3(x, y, z) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - if (z === void 0) { z = 0; } - this.x = 0; - this.y = 0; - this.z = 0; - this.x = x; - this.y = y; - this.z = z; - } - Vector3.prototype.setFrom = function (v) { - this.x = v.x; - this.y = v.y; - this.z = v.z; - return this; - }; - Vector3.prototype.set = function (x, y, z) { - this.x = x; - this.y = y; - this.z = z; - return this; - }; - Vector3.prototype.add = function (v) { - this.x += v.x; - this.y += v.y; - this.z += v.z; - return this; - }; - Vector3.prototype.sub = function (v) { - this.x -= v.x; - this.y -= v.y; - this.z -= v.z; - return this; - }; - Vector3.prototype.scale = function (s) { - this.x *= s; - this.y *= s; - this.z *= s; - return this; - }; - Vector3.prototype.normalize = function () { - var len = this.length(); - if (len == 0) - return this; - len = 1 / len; - this.x *= len; - this.y *= len; - this.z *= len; - return this; - }; - Vector3.prototype.cross = function (v) { - return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x); - }; - Vector3.prototype.multiply = function (matrix) { - var l_mat = matrix.values; - return this.set(this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03], this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13], this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]); - }; - Vector3.prototype.project = function (matrix) { - var l_mat = matrix.values; - var l_w = 1 / (this.x * l_mat[webgl.M30] + this.y * l_mat[webgl.M31] + this.z * l_mat[webgl.M32] + l_mat[webgl.M33]); - return this.set((this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03]) * l_w, (this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13]) * l_w, (this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]) * l_w); - }; - Vector3.prototype.dot = function (v) { - return this.x * v.x + this.y * v.y + this.z * v.z; - }; - Vector3.prototype.length = function () { - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); - }; - Vector3.prototype.distance = function (v) { - var a = v.x - this.x; - var b = v.y - this.y; - var c = v.z - this.z; - return Math.sqrt(a * a + b * b + c * c); - }; - return Vector3; - }()); - webgl.Vector3 = Vector3; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var ManagedWebGLRenderingContext = (function () { - function ManagedWebGLRenderingContext(canvasOrContext, contextConfig) { - if (contextConfig === void 0) { contextConfig = { alpha: "true" }; } - this.restorables = new Array(); - if (!((canvasOrContext instanceof WebGLRenderingContext) || (typeof WebGL2RenderingContext !== 'undefined' && canvasOrContext instanceof WebGL2RenderingContext))) - this.setupCanvas(canvasOrContext, contextConfig); - else { - this.gl = canvasOrContext; - this.canvas = this.gl.canvas; - } - } - ManagedWebGLRenderingContext.prototype.setupCanvas = function (canvas, contextConfig) { - var _this = this; - this.gl = (canvas.getContext("webgl2", contextConfig) || canvas.getContext("webgl", contextConfig)); - this.canvas = canvas; - canvas.addEventListener("webglcontextlost", function (e) { - var event = e; - if (e) - e.preventDefault(); - }); - canvas.addEventListener("webglcontextrestored", function (e) { - for (var i = 0, n = _this.restorables.length; i < n; i++) - _this.restorables[i].restore(); - }); - }; - ManagedWebGLRenderingContext.prototype.addRestorable = function (restorable) { - this.restorables.push(restorable); - }; - ManagedWebGLRenderingContext.prototype.removeRestorable = function (restorable) { - var index = this.restorables.indexOf(restorable); - if (index > -1) - this.restorables.splice(index, 1); - }; - return ManagedWebGLRenderingContext; - }()); - webgl.ManagedWebGLRenderingContext = ManagedWebGLRenderingContext; - var ONE = 1; - var ONE_MINUS_SRC_COLOR = 0x0301; - var SRC_ALPHA = 0x0302; - var ONE_MINUS_SRC_ALPHA = 0x0303; - var ONE_MINUS_DST_ALPHA = 0x0305; - var DST_COLOR = 0x0306; - var WebGLBlendModeConverter = (function () { - function WebGLBlendModeConverter() { - } - WebGLBlendModeConverter.getDestGLBlendMode = function (blendMode) { - switch (blendMode) { - case spine.BlendMode.Normal: return ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Additive: return ONE; - case spine.BlendMode.Multiply: return ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Screen: return ONE_MINUS_SRC_ALPHA; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - WebGLBlendModeConverter.getSourceColorGLBlendMode = function (blendMode, premultipliedAlpha) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - switch (blendMode) { - case spine.BlendMode.Normal: return premultipliedAlpha ? ONE : SRC_ALPHA; - case spine.BlendMode.Additive: return premultipliedAlpha ? ONE : SRC_ALPHA; - case spine.BlendMode.Multiply: return DST_COLOR; - case spine.BlendMode.Screen: return ONE; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - WebGLBlendModeConverter.getSourceAlphaGLBlendMode = function (blendMode) { - switch (blendMode) { - case spine.BlendMode.Normal: return ONE; - case spine.BlendMode.Additive: return ONE; - case spine.BlendMode.Multiply: return ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Screen: return ONE_MINUS_SRC_COLOR; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - return WebGLBlendModeConverter; - }()); - webgl.WebGLBlendModeConverter = WebGLBlendModeConverter; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -//# sourceMappingURL=spine-webgl.js.map \ No newline at end of file diff --git a/spine-ts/build/spine-webgl.js.map b/spine-ts/build/spine-webgl.js.map deleted file mode 100644 index 0c16e5ce4..000000000 --- a/spine-ts/build/spine-webgl.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"spine-webgl.js","sourceRoot":"","sources":["../core/src/Animation.ts","../core/src/AnimationState.ts","../core/src/AnimationStateData.ts","../core/src/AssetManager.ts","../core/src/AtlasAttachmentLoader.ts","../core/src/Bone.ts","../core/src/BoneData.ts","../core/src/ConstraintData.ts","../core/src/Event.ts","../core/src/EventData.ts","../core/src/IkConstraint.ts","../core/src/IkConstraintData.ts","../core/src/PathConstraint.ts","../core/src/PathConstraintData.ts","../core/src/Skeleton.ts","../core/src/SkeletonBinary.ts","../core/src/SkeletonBounds.ts","../core/src/SkeletonClipping.ts","../core/src/SkeletonData.ts","../core/src/SkeletonJson.ts","../core/src/Skin.ts","../core/src/Slot.ts","../core/src/SlotData.ts","../core/src/Texture.ts","../core/src/TextureAtlas.ts","../core/src/TransformConstraint.ts","../core/src/TransformConstraintData.ts","../core/src/Triangulator.ts","../core/src/Updatable.ts","../core/src/Utils.ts","../core/src/VertexEffect.ts","../core/src/polyfills.ts","../core/src/attachments/Attachment.ts","../core/src/attachments/AttachmentLoader.ts","../core/src/attachments/BoundingBoxAttachment.ts","../core/src/attachments/ClippingAttachment.ts","../core/src/attachments/MeshAttachment.ts","../core/src/attachments/PathAttachment.ts","../core/src/attachments/PointAttachment.ts","../core/src/attachments/RegionAttachment.ts","../core/src/vertexeffects/JitterEffect.ts","../core/src/vertexeffects/SwirlEffect.ts","../webgl/src/AssetManager.ts","../webgl/src/Camera.ts","../webgl/src/GLTexture.ts","../webgl/src/Input.ts","../webgl/src/LoadingScreen.ts","../webgl/src/Matrix4.ts","../webgl/src/Mesh.ts","../webgl/src/PolygonBatcher.ts","../webgl/src/SceneRenderer.ts","../webgl/src/Shader.ts","../webgl/src/ShapeRenderer.ts","../webgl/src/SkeletonDebugRenderer.ts","../webgl/src/SkeletonRenderer.ts","../webgl/src/Vector3.ts","../webgl/src/WebGL.ts"],"names":[],"mappings":"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,CAAC;gBAClB,IAAI,KAAK,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBAClH,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC7G,IAAI,KAAK,IAAI,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACb,CAAC;YAED,6BAAW,GAAX;gBACC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,OAAO,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBAC7G,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC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AG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,8BAAY,GAAZ,UAAc,MAAe;gBAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAClB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA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"} \ No newline at end of file diff --git a/spine-ts/package-lock.json b/spine-ts/package-lock.json index bed7a2d74..a58c7e025 100644 --- a/spine-ts/package-lock.json +++ b/spine-ts/package-lock.json @@ -13,7 +13,13 @@ "spine-player", "spine-threejs", "spine-webgl" - ] + ], + "devDependencies": { + "npx": "^10.2.2", + "rollup": "^2.56.2", + "rollup-plugin-dts": "^3.0.2", + "typescript": "^4.3.5" + } }, "node_modules/@babel/code-frame": { "version": "7.14.5", @@ -53,6 +59,10 @@ "node": ">=6.9.0" } }, + "node_modules/@esotericsoftware/spine-canvas": { + "resolved": "spine-canvas", + "link": true + }, "node_modules/@esotericsoftware/spine-core": { "resolved": "spine-core", "link": true @@ -102,16 +112,6 @@ "dev": true, "optional": true }, - "node_modules/esbuild": { - "version": "0.12.21", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.21.tgz", - "integrity": "sha512-7hyXbU3g94aREufI/5nls7Xcc+RGQeZWZApm6hoBaFvt2BPtpT4TjFMQ9Tb1jU8XyBGz00ShmiyflCogphMHFQ==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - } - }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -5272,17 +5272,21 @@ "node": ">=4.2.0" } }, - "spine-core": { - "name": "@esotericsoftware/spine-core", + "spine-canvas": { + "name": "@esotericsoftware/spine-canvas", "version": "4.0.1", "license": "LicenseRef-LICENSE", "devDependencies": { - "esbuild": "^0.12.21", "npx": "^10.2.2", "rollup": "^2.56.2", "rollup-plugin-dts": "^3.0.2", "typescript": "^4.3.5" } + }, + "spine-core": { + "name": "@esotericsoftware/spine-core", + "version": "4.0.1", + "license": "LicenseRef-LICENSE" } }, "dependencies": { @@ -5315,16 +5319,18 @@ "js-tokens": "^4.0.0" } }, - "@esotericsoftware/spine-core": { - "version": "file:spine-core", + "@esotericsoftware/spine-canvas": { + "version": "file:spine-canvas", "requires": { - "esbuild": "^0.12.21", "npx": "^10.2.2", "rollup": "^2.56.2", "rollup-plugin-dts": "^3.0.2", "typescript": "^4.3.5" } }, + "@esotericsoftware/spine-core": { + "version": "file:spine-core" + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -5364,12 +5370,6 @@ "dev": true, "optional": true }, - "esbuild": { - "version": "0.12.21", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.21.tgz", - "integrity": "sha512-7hyXbU3g94aREufI/5nls7Xcc+RGQeZWZApm6hoBaFvt2BPtpT4TjFMQ9Tb1jU8XyBGz00ShmiyflCogphMHFQ==", - "dev": true - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", diff --git a/spine-ts/package.json b/spine-ts/package.json index ca5e5a097..3759372ef 100644 --- a/spine-ts/package.json +++ b/spine-ts/package.json @@ -2,7 +2,9 @@ "name": "spine-ts", "version": "4.0.1", "description": "The official Spine Runtimes for the web.", - "scripts": {}, + "scripts": { + "build": "npx tsc -b --clean; tsc -b; npx rollup -c rollup.config.js --sourcemap;" + }, "repository": { "type": "git", "url": "git+https://github.com/esotericsoftware/spine-runtimes.git" @@ -29,5 +31,11 @@ "spine-player", "spine-threejs", "spine-webgl" - ] -} + ], + "devDependencies": { + "npx": "^10.2.2", + "rollup": "^2.56.2", + "rollup-plugin-dts": "^3.0.2", + "typescript": "^4.3.5" + } +} \ No newline at end of file diff --git a/spine-ts/rollup.config.js b/spine-ts/rollup.config.js new file mode 100644 index 000000000..5c6bb4229 --- /dev/null +++ b/spine-ts/rollup.config.js @@ -0,0 +1,34 @@ +import dts from 'rollup-plugin-dts' + +export default [ + { + input: 'spine-core/dist/index.js', + context: 'this', + output: [ + { + file: 'build/spine-core.js', + name: 'spine', + format: 'umd', + exports: 'named', + } + ] + }, + { + input: 'spine-core/dist/index.d.ts', + output: [{ file: 'build/spine-core.d.ts', format: 'es' }], + plugins: [dts()], + }, + + { + input: 'spine-canvas/dist/index.js', + context: 'this', + output: [ + { + file: 'build/spine-canvas.js', + name: 'spine', + format: 'umd', + exports: 'named', + } + ] + } +] \ No newline at end of file diff --git a/spine-ts/spine-canvas/package.json b/spine-ts/spine-canvas/package.json new file mode 100644 index 000000000..6b7f39490 --- /dev/null +++ b/spine-ts/spine-canvas/package.json @@ -0,0 +1,32 @@ +{ + "name": "@esotericsoftware/spine-canvas", + "version": "4.0.1", + "description": "The official Spine Runtimes for the web.", + "main": "dist/index.js", + "scripts": {}, + "repository": { + "type": "git", + "url": "git+https://github.com/esotericsoftware/spine-runtimes.git" + }, + "keywords": [ + "gamedev", + "animations", + "2d", + "spine", + "game-dev", + "runtimes", + "skeletal" + ], + "author": "Esoteric Software LLC", + "license": "LicenseRef-LICENSE", + "bugs": { + "url": "https://github.com/esotericsoftware/spine-runtimes/issues" + }, + "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", + "devDependencies": { + "npx": "^10.2.2", + "rollup": "^2.56.2", + "rollup-plugin-dts": "^3.0.2", + "typescript": "^4.3.5" + } +} \ No newline at end of file diff --git a/spine-ts/spine-canvas/src/AssetManager.ts b/spine-ts/spine-canvas/src/AssetManager.ts index 95b66e262..5757e3320 100644 --- a/spine-ts/spine-canvas/src/AssetManager.ts +++ b/spine-ts/spine-canvas/src/AssetManager.ts @@ -27,12 +27,11 @@ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -/// +import { Downloader, AssetManagerBase } from "../../spine-core/dist/index"; +import { CanvasTexture } from "./CanvasTexture"; -module spine.canvas { - export class AssetManager extends spine.AssetManager { - constructor (pathPrefix: string = "", downloader: Downloader = null) { - super((image: HTMLImageElement) => { return new spine.canvas.CanvasTexture(image); }, pathPrefix, downloader); - } +export class AssetManager extends AssetManagerBase { + constructor(pathPrefix: string = "", downloader: Downloader = null) { + super((image: HTMLImageElement) => { return new CanvasTexture(image); }, pathPrefix, downloader); } } diff --git a/spine-ts/spine-canvas/src/CanvasTexture.ts b/spine-ts/spine-canvas/src/CanvasTexture.ts index b8794e7e9..9cff9ec9f 100644 --- a/spine-ts/spine-canvas/src/CanvasTexture.ts +++ b/spine-ts/spine-canvas/src/CanvasTexture.ts @@ -27,16 +27,14 @@ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -/// +import { Texture, TextureFilter, TextureWrap } from "../../spine-core/dist/index"; -module spine.canvas { - export class CanvasTexture extends Texture { - constructor (image: HTMLImageElement) { - super(image); - } - - setFilters (minFilter: TextureFilter, magFilter: TextureFilter) { } - setWraps (uWrap: TextureWrap, vWrap: TextureWrap) { } - dispose () { } +export class CanvasTexture extends Texture { + constructor(image: HTMLImageElement) { + super(image); } + + setFilters(minFilter: TextureFilter, magFilter: TextureFilter) { } + setWraps(uWrap: TextureWrap, vWrap: TextureWrap) { } + dispose() { } } diff --git a/spine-ts/spine-canvas/src/SkeletonRenderer.ts b/spine-ts/spine-canvas/src/SkeletonRenderer.ts index 00485b5ce..0b2122906 100644 --- a/spine-ts/spine-canvas/src/SkeletonRenderer.ts +++ b/spine-ts/spine-canvas/src/SkeletonRenderer.ts @@ -27,283 +27,284 @@ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -module spine.canvas { - export class SkeletonRenderer { - static QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - static VERTEX_SIZE = 2 + 2 + 4; +import { Utils, Color, Skeleton, RegionAttachment, TextureAtlasRegion, BlendMode, MeshAttachment, Slot } from "../../spine-core/dist/index"; +import { CanvasTexture } from "./CanvasTexture"; - private ctx: CanvasRenderingContext2D; +export class SkeletonRenderer { + static QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + static VERTEX_SIZE = 2 + 2 + 4; - public triangleRendering = false; - public debugRendering = false; - private vertices = Utils.newFloatArray(8 * 1024); - private tempColor = new Color(); + private ctx: CanvasRenderingContext2D; - constructor(context: CanvasRenderingContext2D) { - this.ctx = context; + public triangleRendering = false; + public debugRendering = false; + private vertices = Utils.newFloatArray(8 * 1024); + private tempColor = new Color(); + + constructor(context: CanvasRenderingContext2D) { + this.ctx = context; + } + + draw(skeleton: Skeleton) { + if (this.triangleRendering) this.drawTriangles(skeleton); + else this.drawImages(skeleton); + } + + private drawImages(skeleton: Skeleton) { + let ctx = this.ctx; + let color = this.tempColor; + let skeletonColor = skeleton.color; + let drawOrder = skeleton.drawOrder; + + if (this.debugRendering) ctx.strokeStyle = "green"; + + for (let i = 0, n = drawOrder.length; i < n; i++) { + let slot = drawOrder[i]; + let bone = slot.bone; + if (!bone.active) continue; + + let attachment = slot.getAttachment(); + if (!(attachment instanceof RegionAttachment)) continue; + let region: TextureAtlasRegion = attachment.region; + let image: HTMLImageElement = (region.page.texture).getImage() as HTMLImageElement; + + let slotColor = slot.color; + let regionColor = attachment.color; + color.set(skeletonColor.r * slotColor.r * regionColor.r, + skeletonColor.g * slotColor.g * regionColor.g, + skeletonColor.b * slotColor.b * regionColor.b, + skeletonColor.a * slotColor.a * regionColor.a); + + ctx.save(); + ctx.transform(bone.a, bone.c, bone.b, bone.d, bone.worldX, bone.worldY); + ctx.translate(attachment.offset[0], attachment.offset[1]); + ctx.rotate(attachment.rotation * Math.PI / 180); + + let atlasScale = attachment.width / region.originalWidth; + ctx.scale(atlasScale * attachment.scaleX, atlasScale * attachment.scaleY); + + let w = region.width, h = region.height; + ctx.translate(w / 2, h / 2); + if (attachment.region.degrees == 90) { + let t = w; + w = h; + h = t; + ctx.rotate(-Math.PI / 2); + } + ctx.scale(1, -1); + ctx.translate(-w / 2, -h / 2); + + if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) { + ctx.globalAlpha = color.a; + // experimental tinting via compositing, doesn't work + // ctx.globalCompositeOperation = "source-atop"; + // ctx.fillStyle = "rgba(" + (color.r * 255 | 0) + ", " + (color.g * 255 | 0) + ", " + (color.b * 255 | 0) + ", " + color.a + ")"; + // ctx.fillRect(0, 0, w, h); + } + ctx.drawImage(image, region.x, region.y, w, h, 0, 0, w, h); + if (this.debugRendering) ctx.strokeRect(0, 0, w, h); + ctx.restore(); } + } - draw(skeleton: Skeleton) { - if (this.triangleRendering) this.drawTriangles(skeleton); - else this.drawImages(skeleton); - } + private drawTriangles(skeleton: Skeleton) { + let ctx = this.ctx; + let color = this.tempColor; + let skeletonColor = skeleton.color; + let drawOrder = skeleton.drawOrder; - private drawImages(skeleton: Skeleton) { - let ctx = this.ctx; - let color = this.tempColor; - let skeletonColor = skeleton.color; - let drawOrder = skeleton.drawOrder; + let blendMode: BlendMode = null; + let vertices: ArrayLike = this.vertices; + let triangles: Array = null; - if (this.debugRendering) ctx.strokeStyle = "green"; + for (let i = 0, n = drawOrder.length; i < n; i++) { + let slot = drawOrder[i]; + let attachment = slot.getAttachment(); - for (let i = 0, n = drawOrder.length; i < n; i++) { - let slot = drawOrder[i]; - let bone = slot.bone; - if (!bone.active) continue; + let texture: HTMLImageElement; + let region: TextureAtlasRegion; + if (attachment instanceof RegionAttachment) { + let regionAttachment = attachment; + vertices = this.computeRegionVertices(slot, regionAttachment, false); + triangles = SkeletonRenderer.QUAD_TRIANGLES; + region = regionAttachment.region; + texture = (region.page.texture).getImage() as HTMLImageElement; + } else if (attachment instanceof MeshAttachment) { + let mesh = attachment; + vertices = this.computeMeshVertices(slot, mesh, false); + triangles = mesh.triangles; + texture = (mesh.region.renderObject).page.texture.getImage() as HTMLImageElement; + } else + continue; - let attachment = slot.getAttachment(); - if (!(attachment instanceof RegionAttachment)) continue; - let region: TextureAtlasRegion = attachment.region; - let image: HTMLImageElement = (region.page.texture).getImage() as HTMLImageElement; + if (texture) { + if (slot.data.blendMode != blendMode) blendMode = slot.data.blendMode; let slotColor = slot.color; - let regionColor = attachment.color; - color.set(skeletonColor.r * slotColor.r * regionColor.r, - skeletonColor.g * slotColor.g * regionColor.g, - skeletonColor.b * slotColor.b * regionColor.b, - skeletonColor.a * slotColor.a * regionColor.a); - - ctx.save(); - ctx.transform(bone.a, bone.c, bone.b, bone.d, bone.worldX, bone.worldY); - ctx.translate(attachment.offset[0], attachment.offset[1]); - ctx.rotate(attachment.rotation * Math.PI / 180); - - let atlasScale = attachment.width / region.originalWidth; - ctx.scale(atlasScale * attachment.scaleX, atlasScale * attachment.scaleY); - - let w = region.width, h = region.height; - ctx.translate(w / 2, h / 2); - if (attachment.region.degrees == 90) { - let t = w; - w = h; - h = t; - ctx.rotate(-Math.PI / 2); - } - ctx.scale(1, -1); - ctx.translate(-w / 2, -h / 2); + let attachmentColor = attachment.color; + color.set(skeletonColor.r * slotColor.r * attachmentColor.r, + skeletonColor.g * slotColor.g * attachmentColor.g, + skeletonColor.b * slotColor.b * attachmentColor.b, + skeletonColor.a * slotColor.a * attachmentColor.a); if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) { ctx.globalAlpha = color.a; // experimental tinting via compositing, doesn't work // ctx.globalCompositeOperation = "source-atop"; - // ctx.fillStyle = "rgba(" + (color.r * 255 | 0) + ", " + (color.g * 255 | 0) + ", " + (color.b * 255 | 0) + ", " + color.a + ")"; + // ctx.fillStyle = "rgba(" + (color.r * 255 | 0) + ", " + (color.g * 255 | 0) + ", " + (color.b * 255 | 0) + ", " + color.a + ")"; // ctx.fillRect(0, 0, w, h); } - ctx.drawImage(image, region.x, region.y, w, h, 0, 0, w, h); - if (this.debugRendering) ctx.strokeRect(0, 0, w, h); - ctx.restore(); - } - } - private drawTriangles(skeleton: Skeleton) { - let ctx = this.ctx; - let color = this.tempColor; - let skeletonColor = skeleton.color; - let drawOrder = skeleton.drawOrder; + for (var j = 0; j < triangles.length; j += 3) { + let t1 = triangles[j] * 8, t2 = triangles[j + 1] * 8, t3 = triangles[j + 2] * 8; - let blendMode: BlendMode = null; - let vertices: ArrayLike = this.vertices; - let triangles: Array = null; + let x0 = vertices[t1], y0 = vertices[t1 + 1], u0 = vertices[t1 + 6], v0 = vertices[t1 + 7]; + let x1 = vertices[t2], y1 = vertices[t2 + 1], u1 = vertices[t2 + 6], v1 = vertices[t2 + 7]; + let x2 = vertices[t3], y2 = vertices[t3 + 1], u2 = vertices[t3 + 6], v2 = vertices[t3 + 7]; - for (let i = 0, n = drawOrder.length; i < n; i++) { - let slot = drawOrder[i]; - let attachment = slot.getAttachment(); + this.drawTriangle(texture, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2); - let texture: HTMLImageElement; - let region: TextureAtlasRegion; - if (attachment instanceof RegionAttachment) { - let regionAttachment = attachment; - vertices = this.computeRegionVertices(slot, regionAttachment, false); - triangles = SkeletonRenderer.QUAD_TRIANGLES; - region = regionAttachment.region; - texture = (region.page.texture).getImage() as HTMLImageElement; - } else if (attachment instanceof MeshAttachment) { - let mesh = attachment; - vertices = this.computeMeshVertices(slot, mesh, false); - triangles = mesh.triangles; - texture = (mesh.region.renderObject).page.texture.getImage() as HTMLImageElement; - } else - continue; - - if (texture) { - if (slot.data.blendMode != blendMode) blendMode = slot.data.blendMode; - - let slotColor = slot.color; - let attachmentColor = attachment.color; - color.set(skeletonColor.r * slotColor.r * attachmentColor.r, - skeletonColor.g * slotColor.g * attachmentColor.g, - skeletonColor.b * slotColor.b * attachmentColor.b, - skeletonColor.a * slotColor.a * attachmentColor.a); - - if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) { - ctx.globalAlpha = color.a; - // experimental tinting via compositing, doesn't work - // ctx.globalCompositeOperation = "source-atop"; - // ctx.fillStyle = "rgba(" + (color.r * 255 | 0) + ", " + (color.g * 255 | 0) + ", " + (color.b * 255 | 0) + ", " + color.a + ")"; - // ctx.fillRect(0, 0, w, h); - } - - for (var j = 0; j < triangles.length; j += 3) { - let t1 = triangles[j] * 8, t2 = triangles[j + 1] * 8, t3 = triangles[j + 2] * 8; - - let x0 = vertices[t1], y0 = vertices[t1 + 1], u0 = vertices[t1 + 6], v0 = vertices[t1 + 7]; - let x1 = vertices[t2], y1 = vertices[t2 + 1], u1 = vertices[t2 + 6], v1 = vertices[t2 + 7]; - let x2 = vertices[t3], y2 = vertices[t3 + 1], u2 = vertices[t3 + 6], v2 = vertices[t3 + 7]; - - this.drawTriangle(texture, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2); - - if (this.debugRendering) { - ctx.strokeStyle = "green"; - ctx.beginPath(); - ctx.moveTo(x0, y0); - ctx.lineTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.lineTo(x0, y0); - ctx.stroke(); - } + if (this.debugRendering) { + ctx.strokeStyle = "green"; + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.lineTo(x0, y0); + ctx.stroke(); } } } - - this.ctx.globalAlpha = 1; } - // Adapted from http://extremelysatisfactorytotalitarianism.com/blog/?p=2120 - // Apache 2 licensed - private drawTriangle(img: HTMLImageElement, x0: number, y0: number, u0: number, v0: number, - x1: number, y1: number, u1: number, v1: number, - x2: number, y2: number, u2: number, v2: number) { - let ctx = this.ctx; - - u0 *= img.width; - v0 *= img.height; - u1 *= img.width; - v1 *= img.height; - u2 *= img.width; - v2 *= img.height; - - ctx.beginPath(); - ctx.moveTo(x0, y0); - ctx.lineTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.closePath(); - - x1 -= x0; - y1 -= y0; - x2 -= x0; - y2 -= y0; - - u1 -= u0; - v1 -= v0; - u2 -= u0; - v2 -= v0; - - var det = 1 / (u1 * v2 - u2 * v1), - - // linear transformation - a = (v2 * x1 - v1 * x2) * det, - b = (v2 * y1 - v1 * y2) * det, - c = (u1 * x2 - u2 * x1) * det, - d = (u1 * y2 - u2 * y1) * det, - - // translation - e = x0 - a * u0 - c * v0, - f = y0 - b * u0 - d * v0; - - ctx.save(); - ctx.transform(a, b, c, d, e, f); - ctx.clip(); - ctx.drawImage(img, 0, 0); - ctx.restore(); - } - - private computeRegionVertices(slot: Slot, region: RegionAttachment, pma: boolean) { - let skeletonColor = slot.bone.skeleton.color; - let slotColor = slot.color; - let regionColor = region.color; - let alpha = skeletonColor.a * slotColor.a * regionColor.a; - let multiplier = pma ? alpha : 1; - let color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, - skeletonColor.g * slotColor.g * regionColor.g * multiplier, - skeletonColor.b * slotColor.b * regionColor.b * multiplier, - alpha); - - region.computeWorldVertices(slot.bone, this.vertices, 0, SkeletonRenderer.VERTEX_SIZE); - - let vertices = this.vertices; - let uvs = region.uvs; - - vertices[RegionAttachment.C1R] = color.r; - vertices[RegionAttachment.C1G] = color.g; - vertices[RegionAttachment.C1B] = color.b; - vertices[RegionAttachment.C1A] = color.a; - vertices[RegionAttachment.U1] = uvs[0]; - vertices[RegionAttachment.V1] = uvs[1]; - - vertices[RegionAttachment.C2R] = color.r; - vertices[RegionAttachment.C2G] = color.g; - vertices[RegionAttachment.C2B] = color.b; - vertices[RegionAttachment.C2A] = color.a; - vertices[RegionAttachment.U2] = uvs[2]; - vertices[RegionAttachment.V2] = uvs[3]; - - vertices[RegionAttachment.C3R] = color.r; - vertices[RegionAttachment.C3G] = color.g; - vertices[RegionAttachment.C3B] = color.b; - vertices[RegionAttachment.C3A] = color.a; - vertices[RegionAttachment.U3] = uvs[4]; - vertices[RegionAttachment.V3] = uvs[5]; - - vertices[RegionAttachment.C4R] = color.r; - vertices[RegionAttachment.C4G] = color.g; - vertices[RegionAttachment.C4B] = color.b; - vertices[RegionAttachment.C4A] = color.a; - vertices[RegionAttachment.U4] = uvs[6]; - vertices[RegionAttachment.V4] = uvs[7]; - - return vertices; - } - - private computeMeshVertices(slot: Slot, mesh: MeshAttachment, pma: boolean) { - let skeletonColor = slot.bone.skeleton.color; - let slotColor = slot.color; - let regionColor = mesh.color; - let alpha = skeletonColor.a * slotColor.a * regionColor.a; - let multiplier = pma ? alpha : 1; - let color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, - skeletonColor.g * slotColor.g * regionColor.g * multiplier, - skeletonColor.b * slotColor.b * regionColor.b * multiplier, - alpha); - - let vertexCount = mesh.worldVerticesLength / 2; - let vertices = this.vertices; - if (vertices.length < mesh.worldVerticesLength) this.vertices = vertices = Utils.newFloatArray(mesh.worldVerticesLength); - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, SkeletonRenderer.VERTEX_SIZE); - - let uvs = mesh.uvs; - for (let i = 0, u = 0, v = 2; i < vertexCount; i++) { - vertices[v++] = color.r; - vertices[v++] = color.g; - vertices[v++] = color.b; - vertices[v++] = color.a; - vertices[v++] = uvs[u++]; - vertices[v++] = uvs[u++]; - v += 2; - } - - return vertices; - } + this.ctx.globalAlpha = 1; } -} + + // Adapted from http://extremelysatisfactorytotalitarianism.com/blog/?p=2120 + // Apache 2 licensed + private drawTriangle(img: HTMLImageElement, x0: number, y0: number, u0: number, v0: number, + x1: number, y1: number, u1: number, v1: number, + x2: number, y2: number, u2: number, v2: number) { + let ctx = this.ctx; + + u0 *= img.width; + v0 *= img.height; + u1 *= img.width; + v1 *= img.height; + u2 *= img.width; + v2 *= img.height; + + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.closePath(); + + x1 -= x0; + y1 -= y0; + x2 -= x0; + y2 -= y0; + + u1 -= u0; + v1 -= v0; + u2 -= u0; + v2 -= v0; + + var det = 1 / (u1 * v2 - u2 * v1), + + // linear transformation + a = (v2 * x1 - v1 * x2) * det, + b = (v2 * y1 - v1 * y2) * det, + c = (u1 * x2 - u2 * x1) * det, + d = (u1 * y2 - u2 * y1) * det, + + // translation + e = x0 - a * u0 - c * v0, + f = y0 - b * u0 - d * v0; + + ctx.save(); + ctx.transform(a, b, c, d, e, f); + ctx.clip(); + ctx.drawImage(img, 0, 0); + ctx.restore(); + } + + private computeRegionVertices(slot: Slot, region: RegionAttachment, pma: boolean) { + let skeletonColor = slot.bone.skeleton.color; + let slotColor = slot.color; + let regionColor = region.color; + let alpha = skeletonColor.a * slotColor.a * regionColor.a; + let multiplier = pma ? alpha : 1; + let color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, + skeletonColor.g * slotColor.g * regionColor.g * multiplier, + skeletonColor.b * slotColor.b * regionColor.b * multiplier, + alpha); + + region.computeWorldVertices(slot.bone, this.vertices, 0, SkeletonRenderer.VERTEX_SIZE); + + let vertices = this.vertices; + let uvs = region.uvs; + + vertices[RegionAttachment.C1R] = color.r; + vertices[RegionAttachment.C1G] = color.g; + vertices[RegionAttachment.C1B] = color.b; + vertices[RegionAttachment.C1A] = color.a; + vertices[RegionAttachment.U1] = uvs[0]; + vertices[RegionAttachment.V1] = uvs[1]; + + vertices[RegionAttachment.C2R] = color.r; + vertices[RegionAttachment.C2G] = color.g; + vertices[RegionAttachment.C2B] = color.b; + vertices[RegionAttachment.C2A] = color.a; + vertices[RegionAttachment.U2] = uvs[2]; + vertices[RegionAttachment.V2] = uvs[3]; + + vertices[RegionAttachment.C3R] = color.r; + vertices[RegionAttachment.C3G] = color.g; + vertices[RegionAttachment.C3B] = color.b; + vertices[RegionAttachment.C3A] = color.a; + vertices[RegionAttachment.U3] = uvs[4]; + vertices[RegionAttachment.V3] = uvs[5]; + + vertices[RegionAttachment.C4R] = color.r; + vertices[RegionAttachment.C4G] = color.g; + vertices[RegionAttachment.C4B] = color.b; + vertices[RegionAttachment.C4A] = color.a; + vertices[RegionAttachment.U4] = uvs[6]; + vertices[RegionAttachment.V4] = uvs[7]; + + return vertices; + } + + private computeMeshVertices(slot: Slot, mesh: MeshAttachment, pma: boolean) { + let skeletonColor = slot.bone.skeleton.color; + let slotColor = slot.color; + let regionColor = mesh.color; + let alpha = skeletonColor.a * slotColor.a * regionColor.a; + let multiplier = pma ? alpha : 1; + let color = this.tempColor; + color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, + skeletonColor.g * slotColor.g * regionColor.g * multiplier, + skeletonColor.b * slotColor.b * regionColor.b * multiplier, + alpha); + + let vertexCount = mesh.worldVerticesLength / 2; + let vertices = this.vertices; + if (vertices.length < mesh.worldVerticesLength) this.vertices = vertices = Utils.newFloatArray(mesh.worldVerticesLength); + mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, SkeletonRenderer.VERTEX_SIZE); + + let uvs = mesh.uvs; + for (let i = 0, u = 0, v = 2; i < vertexCount; i++) { + vertices[v++] = color.r; + vertices[v++] = color.g; + vertices[v++] = color.b; + vertices[v++] = color.a; + vertices[v++] = uvs[u++]; + vertices[v++] = uvs[u++]; + v += 2; + } + + return vertices; + } +} \ No newline at end of file diff --git a/spine-ts/spine-canvas/src/index.ts b/spine-ts/spine-canvas/src/index.ts new file mode 100644 index 000000000..e62d98930 --- /dev/null +++ b/spine-ts/spine-canvas/src/index.ts @@ -0,0 +1,28 @@ +import { AssetManager } from "./AssetManager"; +import { CanvasTexture } from "./CanvasTexture"; +import { SkeletonRenderer } from "./SkeletonRenderer"; + +export * from "./AssetManager"; +export * from "./CanvasTexture"; +export * from "./SkeletonRenderer"; +export * from "../../spine-core/dist/index" + +// Needed for compatibility with the old way of how +// spine-canvas worked. We'd set all exported types +// on the global spine.canvas. However, with rollup +// we can only specify a single default object global +// name, which is spine, not spine.canvas. If spine-canvas.js +// is used in vanilla.js, we added a property spine.canvas +// and assign the types of spine-canvas to it. This way +// old code keeps on working. +declare global { + var spine: any; +} + +if (globalThis.spine) { + globalThis.spine.canvas = { + AssetManager: AssetManager, + CanvasTexture: CanvasTexture, + SkeletonRenderer: SkeletonRenderer + }; +} \ No newline at end of file diff --git a/spine-ts/spine-canvas/tsconfig.json b/spine-ts/spine-canvas/tsconfig.json new file mode 100644 index 000000000..6b1a5cf71 --- /dev/null +++ b/spine-ts/spine-canvas/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist", + "moduleResolution": "node", + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "dist/**/*.d.ts" + ], + "references": [ + { + "path": "../spine-core" + } + ] +} \ No newline at end of file diff --git a/spine-ts/spine-core/package.json b/spine-ts/spine-core/package.json index e6269c362..c8ceb255d 100644 --- a/spine-ts/spine-core/package.json +++ b/spine-ts/spine-core/package.json @@ -2,10 +2,8 @@ "name": "@esotericsoftware/spine-core", "version": "4.0.1", "description": "The official Spine Runtimes for the web.", - "main": "build/index.js", - "scripts": { - "build": "npx tsc -p ./tsconfig.json; npx rollup -c rollup.config.js --sourcemap;" - }, + "main": "dist/index.js", + "scripts": {}, "repository": { "type": "git", "url": "git+https://github.com/esotericsoftware/spine-runtimes.git" @@ -24,11 +22,5 @@ "bugs": { "url": "https://github.com/esotericsoftware/spine-runtimes/issues" }, - "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", - "devDependencies": { - "npx": "^10.2.2", - "rollup": "^2.56.2", - "rollup-plugin-dts": "^3.0.2", - "typescript": "^4.3.5" - } -} + "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme" +} \ No newline at end of file diff --git a/spine-ts/spine-core/rollup.config.js b/spine-ts/spine-core/rollup.config.js deleted file mode 100644 index 49eda4b4a..000000000 --- a/spine-ts/spine-core/rollup.config.js +++ /dev/null @@ -1,16 +0,0 @@ -import dts from 'rollup-plugin-dts' - -export default [ - { - input: 'build/index.js', - context: 'this', - output: [ - { - file: '../build/spine-core.js', - name: 'spine', - format: 'umd', - exports: 'named', - } - ] - } -] \ No newline at end of file diff --git a/spine-ts/spine-core/src/AssetManager.ts b/spine-ts/spine-core/src/AssetManagerBase.ts similarity index 99% rename from spine-ts/spine-core/src/AssetManager.ts rename to spine-ts/spine-core/src/AssetManagerBase.ts index d017b7baa..08d9e6c73 100644 --- a/spine-ts/spine-core/src/AssetManager.ts +++ b/spine-ts/spine-core/src/AssetManagerBase.ts @@ -31,7 +31,7 @@ import { Texture } from "./Texture"; import { TextureAtlas } from "./TextureAtlas"; import { Disposable, StringMap } from "./Utils"; -export class AssetManager implements Disposable { +export class AssetManagerBase implements Disposable { private pathPrefix: string; private textureLoader: (image: HTMLImageElement | ImageBitmap) => Texture; private downloader: Downloader; diff --git a/spine-ts/spine-core/src/TextureAtlas.ts b/spine-ts/spine-core/src/TextureAtlas.ts index 54ccd7584..d98fc90db 100644 --- a/spine-ts/spine-core/src/TextureAtlas.ts +++ b/spine-ts/spine-core/src/TextureAtlas.ts @@ -27,7 +27,7 @@ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -import { AssetManager } from "./AssetManager"; +import { AssetManagerBase } from "./AssetManagerBase"; import { TextureFilter, TextureWrap, Texture, TextureRegion } from "./Texture"; import { Disposable, Utils, StringMap } from "./Utils"; @@ -185,7 +185,7 @@ export class TextureAtlas implements Disposable { return null; } - setTextures(assetManager: AssetManager, pathPrefix: string = "") { + setTextures(assetManager: AssetManagerBase, pathPrefix: string = "") { for (let page of this.pages) page.setTexture(assetManager.get(pathPrefix + page.name)); } diff --git a/spine-ts/spine-core/src/attachments/index.ts b/spine-ts/spine-core/src/attachments/index.ts new file mode 100644 index 000000000..ef8343420 --- /dev/null +++ b/spine-ts/spine-core/src/attachments/index.ts @@ -0,0 +1,8 @@ +export * from './Attachment'; +export * from './AttachmentLoader'; +export * from './BoundingBoxAttachment'; +export * from './ClippingAttachment'; +export * from './MeshAttachment'; +export * from './PathAttachment'; +export * from './PointAttachment'; +export * from './RegionAttachment'; diff --git a/spine-ts/spine-core/src/index.ts b/spine-ts/spine-core/src/index.ts index 733cd87b6..e543c0626 100644 --- a/spine-ts/spine-core/src/index.ts +++ b/spine-ts/spine-core/src/index.ts @@ -1,42 +1,42 @@ -export * from "./Animation"; -export * from "./AnimationState"; -export * from "./AnimationStateData"; -export * from "./AssetManager"; -export * from "./AtlasAttachmentLoader"; -export * from "./Bone"; -export * from "./BoneData"; -export * from "./ConstraintData"; -export * from "./Event"; -export * from "./EventData"; -export * from "./IkConstraint"; -export * from "./IkConstraintData"; -export * from "./PathConstraint"; -export * from "./PathConstraintData"; -export * from "./Skeleton"; -export * from "./SkeletonBinary"; -export * from "./SkeletonBounds"; -export * from "./SkeletonClipping"; -export * from "./SkeletonData"; -export * from "./SkeletonJson"; -export * from "./Skin"; -export * from "./Slot"; -export * from "./SlotData"; -export * from "./Texture"; -export * from "./TextureAtlas"; -export * from "./TransformConstraint"; -export * from "./TransformConstraintData"; -export * from "./Triangulator"; -export * from "./Updatable"; -export * from "./Utils"; -export * from "./VertexEffect"; -export * from "./polyfills"; -export * from "./attachments/Attachment"; -export * from "./attachments/AttachmentLoader"; -export * from "./attachments/BoundingBoxAttachment"; -export * from "./attachments/ClippingAttachment"; -export * from "./attachments/MeshAttachment"; -export * from "./attachments/PathAttachment"; -export * from "./attachments/PointAttachment"; -export * from "./attachments/RegionAttachment"; -export * from "./vertexeffects/JitterEffect"; -export * from "./vertexeffects/SwirlEffect"; \ No newline at end of file +export * from './Animation'; +export * from './AnimationState'; +export * from './AnimationStateData'; +export * from './AtlasAttachmentLoader'; +export * from './Bone'; +export * from './BoneData'; +export * from './ConstraintData'; +export * from './AssetManagerBase'; +export * from './Event'; +export * from './EventData'; +export * from './IkConstraint'; +export * from './IkConstraintData'; +export * from './PathConstraint'; +export * from './PathConstraintData'; +export * from './Skeleton'; +export * from './SkeletonBinary'; +export * from './SkeletonBounds'; +export * from './SkeletonClipping'; +export * from './SkeletonData'; +export * from './SkeletonJson'; +export * from './Skin'; +export * from './Slot'; +export * from './SlotData'; +export * from './Texture'; +export * from './TextureAtlas'; +export * from './TransformConstraint'; +export * from './TransformConstraintData'; +export * from './Triangulator'; +export * from './Updatable'; +export * from './Utils'; +export * from './VertexEffect'; +export * from './polyfills'; +export * from './attachments/Attachment'; +export * from './attachments/AttachmentLoader'; +export * from './attachments/BoundingBoxAttachment'; +export * from './attachments/ClippingAttachment'; +export * from './attachments/MeshAttachment'; +export * from './attachments/PathAttachment'; +export * from './attachments/PointAttachment'; +export * from './attachments/RegionAttachment'; +export * from './vertexeffects/JitterEffect'; +export * from './vertexeffects/SwirlEffect'; diff --git a/spine-ts/spine-core/tsconfig.json b/spine-ts/spine-core/tsconfig.json index bfcf44af4..4f1fa1341 100644 --- a/spine-ts/spine-core/tsconfig.json +++ b/spine-ts/spine-core/tsconfig.json @@ -1,14 +1,14 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "compilerOptions": { - "rootDir": "src", - "outDir": "build", - "module": "es2015", - "target": "es5", - "moduleResolution": "node", - "lib": [ - "dom", - "es2015" - ] - } + "rootDir": "./src", + "outDir": "./dist", + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "dist/**/*.d.ts" + ], + "references": [] } \ No newline at end of file diff --git a/spine-ts/tsconfig.base.json b/spine-ts/tsconfig.base.json new file mode 100644 index 000000000..b2d2ff70a --- /dev/null +++ b/spine-ts/tsconfig.base.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "es2015", + "noImplicitAny": true, + "preserveConstEnums": true, + "sourceMap": true, + "esModuleInterop": true, + "isolatedModules": true, + "lib": [ + "DOM", + "ES2015" + ], + "declaration": true, + "declarationMap": true, + "composite": true, + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/spine-ts/tsconfig.build.json b/spine-ts/tsconfig.build.json deleted file mode 100644 index 4e526a600..000000000 --- a/spine-ts/tsconfig.build.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "files": [], - "references": [{ "path": "spine-core" }] -} \ No newline at end of file diff --git a/spine-ts/tsconfig.json b/spine-ts/tsconfig.json index 3be6a9ea5..60eb0da37 100644 --- a/spine-ts/tsconfig.json +++ b/spine-ts/tsconfig.json @@ -1,13 +1,14 @@ { - "compilerOptions": { - "noImplicitAny": true, - "removeComments": true, - "preserveConstEnums": true, - "sourceMap": true, - "declaration": true, - "declarationMap": true, - "composite": true, - "esModuleInterop": true, - "isolatedModules": true, - }, + "files": [], + "references": [ + { + "path": "./spine-core" + }, + { + "path": "./spine-canvas" + } + ], + "paths": { + "@esotericsoftware/spine-core": "./spine-core/src/index.ts" + } } \ No newline at end of file