Pārlūkot izejas kodu

[ts] Finished 4.0 port. See #1796

badlogic 4 gadi atpakaļ
vecāks
revīzija
88f0d98dd2
58 mainītis faili ar 18918 papildinājumiem un 13558 dzēšanām
  1. 1 1
      examples/export/export.sh
  2. 1 1
      spine-ts/README.md
  3. 257 175
      spine-ts/build/spine-all.d.ts
  4. 983 355
      spine-ts/build/spine-all.js
  5. 0 0
      spine-ts/build/spine-all.js.map
  6. 257 175
      spine-ts/build/spine-canvas.d.ts
  7. 983 355
      spine-ts/build/spine-canvas.js
  8. 0 0
      spine-ts/build/spine-canvas.js.map
  9. 257 175
      spine-ts/build/spine-core.d.ts
  10. 983 355
      spine-ts/build/spine-core.js
  11. 0 0
      spine-ts/build/spine-core.js.map
  12. 257 175
      spine-ts/build/spine-player.d.ts
  13. 983 355
      spine-ts/build/spine-player.js
  14. 0 0
      spine-ts/build/spine-player.js.map
  15. 257 175
      spine-ts/build/spine-threejs.d.ts
  16. 983 355
      spine-ts/build/spine-threejs.js
  17. 0 0
      spine-ts/build/spine-threejs.js.map
  18. 1737 1653
      spine-ts/build/spine-webgl.d.ts
  19. 9578 8772
      spine-ts/build/spine-webgl.js
  20. 0 0
      spine-ts/build/spine-webgl.js.map
  21. 841 140
      spine-ts/canvas/example/assets/spineboy-ess.json
  22. BIN
      spine-ts/canvas/example/assets/spineboy.png
  23. 163 49
      spine-ts/core/src/SkeletonJson.ts
  24. BIN
      spine-ts/player/example/assets/raptor-pma.png
  25. 27 12
      spine-ts/player/example/assets/raptor-pro.json
  26. BIN
      spine-ts/player/example/assets/spineboy-pma.png
  27. BIN
      spine-ts/player/example/assets/spineboy-pro.skel
  28. 27 12
      spine-ts/threejs/example/assets/raptor-pro.json
  29. BIN
      spine-ts/threejs/example/assets/raptor.png
  30. BIN
      spine-ts/webgl/example/assets/coin-pma.png
  31. 18 18
      spine-ts/webgl/example/assets/coin-pro.json
  32. BIN
      spine-ts/webgl/example/assets/coin-pro.skel
  33. BIN
      spine-ts/webgl/example/assets/goblins-pma.png
  34. 1 1
      spine-ts/webgl/example/assets/goblins-pro.json
  35. BIN
      spine-ts/webgl/example/assets/goblins-pro.skel
  36. BIN
      spine-ts/webgl/example/assets/mix-and-match-pma.png
  37. 119 91
      spine-ts/webgl/example/assets/mix-and-match-pro.json
  38. BIN
      spine-ts/webgl/example/assets/mix-and-match-pro.skel
  39. BIN
      spine-ts/webgl/example/assets/owl-pma.png
  40. 8 6
      spine-ts/webgl/example/assets/owl-pro.json
  41. BIN
      spine-ts/webgl/example/assets/owl-pro.skel
  42. BIN
      spine-ts/webgl/example/assets/raptor-pma.png
  43. 27 12
      spine-ts/webgl/example/assets/raptor-pro.json
  44. BIN
      spine-ts/webgl/example/assets/raptor-pro.skel
  45. BIN
      spine-ts/webgl/example/assets/spineboy-pma.png
  46. 54 38
      spine-ts/webgl/example/assets/spineboy-pro.json
  47. BIN
      spine-ts/webgl/example/assets/spineboy-pro.skel
  48. BIN
      spine-ts/webgl/example/assets/spineboy.png
  49. BIN
      spine-ts/webgl/example/assets/stretchyman-pma.png
  50. 10 8
      spine-ts/webgl/example/assets/stretchyman-pro.json
  51. BIN
      spine-ts/webgl/example/assets/stretchyman-pro.skel
  52. BIN
      spine-ts/webgl/example/assets/tank-pma.png
  53. 87 75
      spine-ts/webgl/example/assets/tank-pro.json
  54. BIN
      spine-ts/webgl/example/assets/tank-pro.skel
  55. BIN
      spine-ts/webgl/example/assets/vine-pma.png
  56. 17 17
      spine-ts/webgl/example/assets/vine-pro.json
  57. BIN
      spine-ts/webgl/example/assets/vine-pro.skel
  58. 2 2
      spine-ts/webgl/tests/test-binary.html

+ 1 - 1
examples/export/export.sh

@@ -11,7 +11,7 @@ if [ ! -f "$SPINE_EXE" ]; then
    SPINE_EXE="/mnt/c/Program Files/Spine/Spine.com"
 fi
 if [ ! -f "$SPINE_EXE" ]; then
-	SPINE_EXE="/Applications/Spine/Spine.app/Contents/MacOS/Spine"
+	SPINE_EXE="/Applications/Spine.app/Contents/MacOS/Spine"
 fi
 echo "Spine exe: $SPINE_EXE"
 

+ 1 - 1
spine-ts/README.md

@@ -23,7 +23,7 @@ For the official legal terms governing the Spine Runtimes, please read the [Spin
 
 ## Spine version
 
-spine-ts works with data exported from Spine 3.8.xx.
+spine-ts works with data exported from Spine 4.0.xx.
 
 The spine-ts WebGL and Player backends support all Spine features.
 

+ 257 - 175
spine-ts/build/spine-all.d.ts

@@ -2,17 +2,13 @@ declare module spine {
 	class Animation {
 		name: string;
 		timelines: Array<Timeline>;
-		timelineIds: Array<boolean>;
+		timelineIds: StringSet;
 		duration: number;
 		constructor(name: string, timelines: Array<Timeline>, duration: number);
-		hasTimeline(id: number): boolean;
+		hasTimeline(ids: string[]): boolean;
 		apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-		static binarySearch(values: ArrayLike<number>, target: number, step?: number): number;
-		static linearSearch(values: ArrayLike<number>, target: number, step: number): number;
-	}
-	interface Timeline {
-		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-		getPropertyId(): number;
+		static search(frames: ArrayLike<number>, time: number): number;
+		static search2(values: ArrayLike<number>, time: number, step: number): number;
 	}
 	enum MixBlend {
 		setup = 0,
@@ -24,103 +20,152 @@ declare module spine {
 		mixIn = 0,
 		mixOut = 1
 	}
-	enum TimelineType {
+	enum Property {
 		rotate = 0,
-		translate = 1,
-		scale = 2,
-		shear = 3,
-		attachment = 4,
-		color = 5,
-		deform = 6,
-		event = 7,
-		drawOrder = 8,
-		ikConstraint = 9,
-		transformConstraint = 10,
-		pathConstraintPosition = 11,
-		pathConstraintSpacing = 12,
-		pathConstraintMix = 13,
-		twoColor = 14
-	}
-	abstract class CurveTimeline implements Timeline {
+		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
+	}
+	abstract class Timeline {
+		propertyIds: string[];
+		frames: ArrayLike<number>;
+		constructor(frameCount: number, propertyIds: string[]);
+		getPropertyIds(): string[];
+		abstract getFrameEntries(): number;
+		getFrameCount(): number;
+		getDuration(): number;
+		abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	interface BoneTimeline {
+		boneIndex: number;
+	}
+	interface SlotTimeline {
+		slotIndex: number;
+	}
+	abstract class CurveTimeline extends Timeline {
 		static LINEAR: number;
 		static STEPPED: number;
 		static BEZIER: number;
 		static BEZIER_SIZE: number;
-		private curves;
-		abstract getPropertyId(): number;
-		constructor(frameCount: number);
-		getFrameCount(): number;
-		setLinear(frameIndex: number): void;
-		setStepped(frameIndex: number): void;
-		getCurveType(frameIndex: number): number;
-		setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
-		getCurvePercent(frameIndex: number, percent: number): number;
-		abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+		protected curves: ArrayLike<number>;
+		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 {
+		static ENTRIES: number;
+		static VALUE: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, value: number): void;
+		getCurveValue(time: number): number;
 	}
-	class RotateTimeline extends CurveTimeline {
+	abstract class CurveTimeline2 extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATION: number;
-		static ROTATION: number;
+		static VALUE1: number;
+		static VALUE2: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, value1: number, value2: number): void;
+	}
+	class RotateTimeline extends CurveTimeline1 implements BoneTimeline {
 		boneIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, degrees: number): void;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class TranslateTimeline extends CurveTimeline {
-		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_X: number;
-		static PREV_Y: number;
-		static X: number;
-		static Y: number;
+	class TranslateTimeline extends CurveTimeline2 implements BoneTimeline {
 		boneIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, x: number, y: number): void;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ScaleTimeline extends TranslateTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ShearTimeline extends TranslateTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ColorTimeline extends CurveTimeline {
+	class ScaleTimeline extends CurveTimeline2 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
+		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBATimeline extends CurveTimeline implements SlotTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_R: number;
-		static PREV_G: number;
-		static PREV_B: number;
-		static PREV_A: number;
 		static R: number;
 		static G: number;
 		static B: number;
 		static A: number;
 		slotIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBTimeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class TwoColorTimeline extends CurveTimeline {
+	class RGBA2Timeline extends CurveTimeline implements SlotTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_R: number;
-		static PREV_G: number;
-		static PREV_B: number;
-		static PREV_A: number;
-		static PREV_R2: number;
-		static PREV_G2: number;
-		static PREV_B2: number;
 		static R: number;
 		static G: number;
 		static B: number;
@@ -129,124 +174,115 @@ declare module spine {
 		static G2: number;
 		static B2: number;
 		slotIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class AttachmentTimeline implements Timeline {
+	class RGB2Timeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		static R2: number;
+		static G2: number;
+		static B2: number;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class AttachmentTimeline extends Timeline implements SlotTimeline {
 		slotIndex: number;
-		frames: ArrayLike<number>;
 		attachmentNames: Array<string>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
+		constructor(frameCount: number, slotIndex: number);
+		getFrameEntries(): number;
 		getFrameCount(): number;
-		setFrame(frameIndex: number, time: number, attachmentName: string): void;
+		setFrame(frame: number, time: number, attachmentName: string): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 		setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void;
 	}
-	class DeformTimeline extends CurveTimeline {
+	class DeformTimeline extends CurveTimeline implements SlotTimeline {
 		slotIndex: number;
 		attachment: VertexAttachment;
-		frames: ArrayLike<number>;
-		frameVertices: Array<ArrayLike<number>>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, vertices: ArrayLike<number>): void;
+		vertices: Array<ArrayLike<number>>;
+		constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, vertices: ArrayLike<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;
+		getCurvePercent(time: number, frame: number): number;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class EventTimeline implements Timeline {
-		frames: ArrayLike<number>;
+	class EventTimeline extends Timeline {
+		static propertyIds: string[];
 		events: Array<Event>;
 		constructor(frameCount: number);
-		getPropertyId(): number;
-		getFrameCount(): number;
-		setFrame(frameIndex: number, event: Event): void;
+		getFrameEntries(): number;
+		setFrame(frame: number, event: Event): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class DrawOrderTimeline implements Timeline {
-		frames: ArrayLike<number>;
+	class DrawOrderTimeline extends Timeline {
+		static propertyIds: string[];
 		drawOrders: Array<Array<number>>;
 		constructor(frameCount: number);
-		getPropertyId(): number;
-		getFrameCount(): number;
-		setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void;
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, drawOrder: Array<number>): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class IkConstraintTimeline extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_MIX: number;
-		static PREV_SOFTNESS: number;
-		static PREV_BEND_DIRECTION: number;
-		static PREV_COMPRESS: number;
-		static PREV_STRETCH: number;
 		static MIX: number;
 		static SOFTNESS: number;
 		static BEND_DIRECTION: number;
 		static COMPRESS: number;
 		static STRETCH: number;
 		ikConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class TransformConstraintTimeline extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATE: number;
-		static PREV_TRANSLATE: number;
-		static PREV_SCALE: number;
-		static PREV_SHEAR: number;
 		static ROTATE: number;
-		static TRANSLATE: number;
-		static SCALE: number;
-		static SHEAR: number;
+		static X: number;
+		static Y: number;
+		static SCALEX: number;
+		static SCALEY: number;
+		static SHEARY: number;
 		transformConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class PathConstraintPositionTimeline extends CurveTimeline {
-		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_VALUE: number;
-		static VALUE: number;
+	class PathConstraintPositionTimeline extends CurveTimeline1 {
 		pathConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, value: number): void;
+		constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class PathConstraintSpacingTimeline extends CurveTimeline1 {
+		pathConstraintIndex: number;
+		constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class PathConstraintMixTimeline extends CurveTimeline {
+		pathConstraintIndex: number;
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATE: number;
-		static PREV_TRANSLATE: number;
 		static ROTATE: number;
-		static TRANSLATE: number;
-		pathConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void;
+		static X: number;
+		static Y: 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 }
 declare module spine {
 	class AnimationState {
-		static emptyAnimation: Animation;
+		private static _emptyAnimation;
+		private static emptyAnimation;
 		static SUBSEQUENT: number;
 		static FIRST: number;
 		static HOLD_SUBSEQUENT: number;
@@ -261,7 +297,7 @@ declare module spine {
 		events: Event[];
 		listeners: AnimationStateListener[];
 		queue: EventQueue;
-		propertyIDs: IntSet;
+		propertyIDs: StringSet;
 		animationsChanged: boolean;
 		trackEntryPool: Pool<TrackEntry>;
 		constructor(data: AnimationStateData);
@@ -275,6 +311,7 @@ declare module spine {
 		queueEvents(entry: TrackEntry, animationTime: number): void;
 		clearTracks(): void;
 		clearTrack(trackIndex: number): void;
+		clearNext(entry: TrackEntry): 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;
@@ -296,6 +333,7 @@ declare module spine {
 	}
 	class TrackEntry {
 		animation: Animation;
+		previous: TrackEntry;
 		next: TrackEntry;
 		mixingFrom: TrackEntry;
 		mixingTo: TrackEntry;
@@ -303,6 +341,7 @@ declare module spine {
 		trackIndex: number;
 		loop: boolean;
 		holdPrevious: boolean;
+		reverse: boolean;
 		eventThreshold: number;
 		attachmentThreshold: number;
 		drawOrderThreshold: number;
@@ -330,6 +369,7 @@ declare module spine {
 		setAnimationLast(animationLast: number): void;
 		isComplete(): boolean;
 		resetRotationDirections(): void;
+		getTrackComplete(): number;
 	}
 	class EventQueue {
 		objects: Array<any>;
@@ -547,7 +587,6 @@ declare module spine {
 		active: boolean;
 		constructor(data: IkConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		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, softness: number, alpha: number): void;
@@ -577,8 +616,9 @@ declare module spine {
 		target: Slot;
 		position: number;
 		spacing: number;
-		rotateMix: number;
-		translateMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
 		spaces: number[];
 		positions: number[];
 		world: number[];
@@ -588,9 +628,8 @@ declare module spine {
 		active: boolean;
 		constructor(data: PathConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		update(): void;
-		computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[];
+		computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[];
 		addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
 		addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
 		addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
@@ -606,8 +645,9 @@ declare module spine {
 		offsetRotation: number;
 		position: number;
 		spacing: number;
-		rotateMix: number;
-		translateMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
 		constructor(name: string);
 	}
 	enum PositionMode {
@@ -617,7 +657,8 @@ declare module spine {
 	enum SpacingMode {
 		Length = 0,
 		Fixed = 1,
-		Percent = 2
+		Percent = 2,
+		Proportional = 3
 	}
 	enum RotateMode {
 		Tangent = 0,
@@ -655,7 +696,6 @@ declare module spine {
 		transformConstraints: Array<TransformConstraint>;
 		pathConstraints: Array<PathConstraint>;
 		_updateCache: Updatable[];
-		updateCacheReset: Updatable[];
 		skin: Skin;
 		color: Color;
 		time: number;
@@ -673,6 +713,7 @@ declare module spine {
 		sortBone(bone: Bone): void;
 		sortReset(bones: Array<Bone>): void;
 		updateWorldTransform(): void;
+		updateWorldTransformWith(parent: Bone): void;
 		setToSetupPose(): void;
 		setBonesToSetupPose(): void;
 		setSlotsToSetupPose(): void;
@@ -694,7 +735,7 @@ declare module spine {
 	}
 }
 declare module spine {
-	class SkeletonBinary {
+	export class SkeletonBinary {
 		static AttachmentTypeValues: number[];
 		static TransformModeValues: TransformMode[];
 		static PositionModeValues: PositionMode[];
@@ -703,11 +744,20 @@ declare module spine {
 		static BlendModeValues: BlendMode[];
 		static BONE_ROTATE: number;
 		static BONE_TRANSLATE: number;
+		static BONE_TRANSLATEX: number;
+		static BONE_TRANSLATEY: number;
 		static BONE_SCALE: number;
+		static BONE_SCALEX: number;
+		static BONE_SCALEY: number;
 		static BONE_SHEAR: number;
+		static BONE_SHEARX: number;
+		static BONE_SHEARY: number;
 		static SLOT_ATTACHMENT: number;
-		static SLOT_COLOR: number;
-		static SLOT_TWO_COLOR: number;
+		static SLOT_RGBA: number;
+		static SLOT_RGB: number;
+		static SLOT_RGBA2: number;
+		static SLOT_RGB2: number;
+		static SLOT_ALPHA: number;
 		static PATH_POSITION: number;
 		static PATH_SPACING: number;
 		static PATH_MIX: number;
@@ -725,9 +775,26 @@ declare module spine {
 		private readFloatArray;
 		private readShortArray;
 		private readAnimation;
-		private readCurve;
-		setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
-	}
+		static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
+		static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
+		static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
+	}
+	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;
+	}
+	export {};
 }
 declare module spine {
 	class SkeletonBounds {
@@ -815,11 +882,14 @@ declare module spine {
 		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;
-		readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void;
+		private readTimeline;
+		private readTimeline2;
+		private readCurve;
+		setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
 		getValue(map: any, prop: string, defaultValue: any): any;
 		static blendModeFromString(str: string): BlendMode;
 		static positionModeFromString(str: string): PositionMode;
-		static spacingModeFromString(str: string): SpacingMode;
+		static spacingModeFromString(str: string): SpacingMode.Length | SpacingMode.Fixed | SpacingMode.Percent;
 		static rotateModeFromString(str: string): RotateMode;
 		static transformModeFromString(str: string): TransformMode;
 	}
@@ -959,15 +1029,16 @@ declare module spine {
 		data: TransformConstraintData;
 		bones: Array<Bone>;
 		target: Bone;
-		rotateMix: number;
-		translateMix: number;
-		scaleMix: number;
-		shearMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
+		mixScaleX: number;
+		mixScaleY: number;
+		mixShearY: number;
 		temp: Vector2;
 		active: boolean;
 		constructor(data: TransformConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		update(): void;
 		applyAbsoluteWorld(): void;
 		applyRelativeWorld(): void;
@@ -979,10 +1050,12 @@ declare module spine {
 	class TransformConstraintData extends ConstraintData {
 		bones: BoneData[];
 		target: BoneData;
-		rotateMix: number;
-		translateMix: number;
-		scaleMix: number;
-		shearMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
+		mixScaleX: number;
+		mixScaleY: number;
+		mixShearY: number;
 		offsetRotation: number;
 		offsetX: number;
 		offsetY: number;
@@ -1027,6 +1100,14 @@ declare module spine {
 		remove(value: number): void;
 		clear(): void;
 	}
+	class StringSet {
+		entries: Map<boolean>;
+		size: number;
+		add(value: string): boolean;
+		addAll(values: string[]): boolean;
+		contains(value: string): boolean;
+		clear(): void;
+	}
 	interface Disposable {
 		dispose(): void;
 	}
@@ -1084,6 +1165,7 @@ declare module spine {
 	class Utils {
 		static SUPPORTS_TYPED_ARRAYS: boolean;
 		static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
+		static arrayFill<T>(array: ArrayLike<T>, fromIndex: number, toIndex: number, value: T): void;
 		static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
 		static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
 		static newArray<T>(size: number, defaultValue: T): Array<T>;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 983 - 355
spine-ts/build/spine-all.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
spine-ts/build/spine-all.js.map


+ 257 - 175
spine-ts/build/spine-canvas.d.ts

@@ -2,17 +2,13 @@ declare module spine {
 	class Animation {
 		name: string;
 		timelines: Array<Timeline>;
-		timelineIds: Array<boolean>;
+		timelineIds: StringSet;
 		duration: number;
 		constructor(name: string, timelines: Array<Timeline>, duration: number);
-		hasTimeline(id: number): boolean;
+		hasTimeline(ids: string[]): boolean;
 		apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-		static binarySearch(values: ArrayLike<number>, target: number, step?: number): number;
-		static linearSearch(values: ArrayLike<number>, target: number, step: number): number;
-	}
-	interface Timeline {
-		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-		getPropertyId(): number;
+		static search(frames: ArrayLike<number>, time: number): number;
+		static search2(values: ArrayLike<number>, time: number, step: number): number;
 	}
 	enum MixBlend {
 		setup = 0,
@@ -24,103 +20,152 @@ declare module spine {
 		mixIn = 0,
 		mixOut = 1
 	}
-	enum TimelineType {
+	enum Property {
 		rotate = 0,
-		translate = 1,
-		scale = 2,
-		shear = 3,
-		attachment = 4,
-		color = 5,
-		deform = 6,
-		event = 7,
-		drawOrder = 8,
-		ikConstraint = 9,
-		transformConstraint = 10,
-		pathConstraintPosition = 11,
-		pathConstraintSpacing = 12,
-		pathConstraintMix = 13,
-		twoColor = 14
-	}
-	abstract class CurveTimeline implements Timeline {
+		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
+	}
+	abstract class Timeline {
+		propertyIds: string[];
+		frames: ArrayLike<number>;
+		constructor(frameCount: number, propertyIds: string[]);
+		getPropertyIds(): string[];
+		abstract getFrameEntries(): number;
+		getFrameCount(): number;
+		getDuration(): number;
+		abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	interface BoneTimeline {
+		boneIndex: number;
+	}
+	interface SlotTimeline {
+		slotIndex: number;
+	}
+	abstract class CurveTimeline extends Timeline {
 		static LINEAR: number;
 		static STEPPED: number;
 		static BEZIER: number;
 		static BEZIER_SIZE: number;
-		private curves;
-		abstract getPropertyId(): number;
-		constructor(frameCount: number);
-		getFrameCount(): number;
-		setLinear(frameIndex: number): void;
-		setStepped(frameIndex: number): void;
-		getCurveType(frameIndex: number): number;
-		setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
-		getCurvePercent(frameIndex: number, percent: number): number;
-		abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+		protected curves: ArrayLike<number>;
+		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 {
+		static ENTRIES: number;
+		static VALUE: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, value: number): void;
+		getCurveValue(time: number): number;
 	}
-	class RotateTimeline extends CurveTimeline {
+	abstract class CurveTimeline2 extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATION: number;
-		static ROTATION: number;
+		static VALUE1: number;
+		static VALUE2: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, value1: number, value2: number): void;
+	}
+	class RotateTimeline extends CurveTimeline1 implements BoneTimeline {
 		boneIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, degrees: number): void;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class TranslateTimeline extends CurveTimeline {
-		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_X: number;
-		static PREV_Y: number;
-		static X: number;
-		static Y: number;
+	class TranslateTimeline extends CurveTimeline2 implements BoneTimeline {
 		boneIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, x: number, y: number): void;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ScaleTimeline extends TranslateTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ShearTimeline extends TranslateTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ColorTimeline extends CurveTimeline {
+	class ScaleTimeline extends CurveTimeline2 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
+		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBATimeline extends CurveTimeline implements SlotTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_R: number;
-		static PREV_G: number;
-		static PREV_B: number;
-		static PREV_A: number;
 		static R: number;
 		static G: number;
 		static B: number;
 		static A: number;
 		slotIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBTimeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class TwoColorTimeline extends CurveTimeline {
+	class RGBA2Timeline extends CurveTimeline implements SlotTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_R: number;
-		static PREV_G: number;
-		static PREV_B: number;
-		static PREV_A: number;
-		static PREV_R2: number;
-		static PREV_G2: number;
-		static PREV_B2: number;
 		static R: number;
 		static G: number;
 		static B: number;
@@ -129,124 +174,115 @@ declare module spine {
 		static G2: number;
 		static B2: number;
 		slotIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class AttachmentTimeline implements Timeline {
+	class RGB2Timeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		static R2: number;
+		static G2: number;
+		static B2: number;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class AttachmentTimeline extends Timeline implements SlotTimeline {
 		slotIndex: number;
-		frames: ArrayLike<number>;
 		attachmentNames: Array<string>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
+		constructor(frameCount: number, slotIndex: number);
+		getFrameEntries(): number;
 		getFrameCount(): number;
-		setFrame(frameIndex: number, time: number, attachmentName: string): void;
+		setFrame(frame: number, time: number, attachmentName: string): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 		setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void;
 	}
-	class DeformTimeline extends CurveTimeline {
+	class DeformTimeline extends CurveTimeline implements SlotTimeline {
 		slotIndex: number;
 		attachment: VertexAttachment;
-		frames: ArrayLike<number>;
-		frameVertices: Array<ArrayLike<number>>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, vertices: ArrayLike<number>): void;
+		vertices: Array<ArrayLike<number>>;
+		constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, vertices: ArrayLike<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;
+		getCurvePercent(time: number, frame: number): number;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class EventTimeline implements Timeline {
-		frames: ArrayLike<number>;
+	class EventTimeline extends Timeline {
+		static propertyIds: string[];
 		events: Array<Event>;
 		constructor(frameCount: number);
-		getPropertyId(): number;
-		getFrameCount(): number;
-		setFrame(frameIndex: number, event: Event): void;
+		getFrameEntries(): number;
+		setFrame(frame: number, event: Event): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class DrawOrderTimeline implements Timeline {
-		frames: ArrayLike<number>;
+	class DrawOrderTimeline extends Timeline {
+		static propertyIds: string[];
 		drawOrders: Array<Array<number>>;
 		constructor(frameCount: number);
-		getPropertyId(): number;
-		getFrameCount(): number;
-		setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void;
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, drawOrder: Array<number>): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class IkConstraintTimeline extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_MIX: number;
-		static PREV_SOFTNESS: number;
-		static PREV_BEND_DIRECTION: number;
-		static PREV_COMPRESS: number;
-		static PREV_STRETCH: number;
 		static MIX: number;
 		static SOFTNESS: number;
 		static BEND_DIRECTION: number;
 		static COMPRESS: number;
 		static STRETCH: number;
 		ikConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class TransformConstraintTimeline extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATE: number;
-		static PREV_TRANSLATE: number;
-		static PREV_SCALE: number;
-		static PREV_SHEAR: number;
 		static ROTATE: number;
-		static TRANSLATE: number;
-		static SCALE: number;
-		static SHEAR: number;
+		static X: number;
+		static Y: number;
+		static SCALEX: number;
+		static SCALEY: number;
+		static SHEARY: number;
 		transformConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class PathConstraintPositionTimeline extends CurveTimeline {
-		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_VALUE: number;
-		static VALUE: number;
+	class PathConstraintPositionTimeline extends CurveTimeline1 {
 		pathConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, value: number): void;
+		constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class PathConstraintSpacingTimeline extends CurveTimeline1 {
+		pathConstraintIndex: number;
+		constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class PathConstraintMixTimeline extends CurveTimeline {
+		pathConstraintIndex: number;
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATE: number;
-		static PREV_TRANSLATE: number;
 		static ROTATE: number;
-		static TRANSLATE: number;
-		pathConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void;
+		static X: number;
+		static Y: 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 }
 declare module spine {
 	class AnimationState {
-		static emptyAnimation: Animation;
+		private static _emptyAnimation;
+		private static emptyAnimation;
 		static SUBSEQUENT: number;
 		static FIRST: number;
 		static HOLD_SUBSEQUENT: number;
@@ -261,7 +297,7 @@ declare module spine {
 		events: Event[];
 		listeners: AnimationStateListener[];
 		queue: EventQueue;
-		propertyIDs: IntSet;
+		propertyIDs: StringSet;
 		animationsChanged: boolean;
 		trackEntryPool: Pool<TrackEntry>;
 		constructor(data: AnimationStateData);
@@ -275,6 +311,7 @@ declare module spine {
 		queueEvents(entry: TrackEntry, animationTime: number): void;
 		clearTracks(): void;
 		clearTrack(trackIndex: number): void;
+		clearNext(entry: TrackEntry): 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;
@@ -296,6 +333,7 @@ declare module spine {
 	}
 	class TrackEntry {
 		animation: Animation;
+		previous: TrackEntry;
 		next: TrackEntry;
 		mixingFrom: TrackEntry;
 		mixingTo: TrackEntry;
@@ -303,6 +341,7 @@ declare module spine {
 		trackIndex: number;
 		loop: boolean;
 		holdPrevious: boolean;
+		reverse: boolean;
 		eventThreshold: number;
 		attachmentThreshold: number;
 		drawOrderThreshold: number;
@@ -330,6 +369,7 @@ declare module spine {
 		setAnimationLast(animationLast: number): void;
 		isComplete(): boolean;
 		resetRotationDirections(): void;
+		getTrackComplete(): number;
 	}
 	class EventQueue {
 		objects: Array<any>;
@@ -547,7 +587,6 @@ declare module spine {
 		active: boolean;
 		constructor(data: IkConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		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, softness: number, alpha: number): void;
@@ -577,8 +616,9 @@ declare module spine {
 		target: Slot;
 		position: number;
 		spacing: number;
-		rotateMix: number;
-		translateMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
 		spaces: number[];
 		positions: number[];
 		world: number[];
@@ -588,9 +628,8 @@ declare module spine {
 		active: boolean;
 		constructor(data: PathConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		update(): void;
-		computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[];
+		computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[];
 		addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
 		addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
 		addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
@@ -606,8 +645,9 @@ declare module spine {
 		offsetRotation: number;
 		position: number;
 		spacing: number;
-		rotateMix: number;
-		translateMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
 		constructor(name: string);
 	}
 	enum PositionMode {
@@ -617,7 +657,8 @@ declare module spine {
 	enum SpacingMode {
 		Length = 0,
 		Fixed = 1,
-		Percent = 2
+		Percent = 2,
+		Proportional = 3
 	}
 	enum RotateMode {
 		Tangent = 0,
@@ -655,7 +696,6 @@ declare module spine {
 		transformConstraints: Array<TransformConstraint>;
 		pathConstraints: Array<PathConstraint>;
 		_updateCache: Updatable[];
-		updateCacheReset: Updatable[];
 		skin: Skin;
 		color: Color;
 		time: number;
@@ -673,6 +713,7 @@ declare module spine {
 		sortBone(bone: Bone): void;
 		sortReset(bones: Array<Bone>): void;
 		updateWorldTransform(): void;
+		updateWorldTransformWith(parent: Bone): void;
 		setToSetupPose(): void;
 		setBonesToSetupPose(): void;
 		setSlotsToSetupPose(): void;
@@ -694,7 +735,7 @@ declare module spine {
 	}
 }
 declare module spine {
-	class SkeletonBinary {
+	export class SkeletonBinary {
 		static AttachmentTypeValues: number[];
 		static TransformModeValues: TransformMode[];
 		static PositionModeValues: PositionMode[];
@@ -703,11 +744,20 @@ declare module spine {
 		static BlendModeValues: BlendMode[];
 		static BONE_ROTATE: number;
 		static BONE_TRANSLATE: number;
+		static BONE_TRANSLATEX: number;
+		static BONE_TRANSLATEY: number;
 		static BONE_SCALE: number;
+		static BONE_SCALEX: number;
+		static BONE_SCALEY: number;
 		static BONE_SHEAR: number;
+		static BONE_SHEARX: number;
+		static BONE_SHEARY: number;
 		static SLOT_ATTACHMENT: number;
-		static SLOT_COLOR: number;
-		static SLOT_TWO_COLOR: number;
+		static SLOT_RGBA: number;
+		static SLOT_RGB: number;
+		static SLOT_RGBA2: number;
+		static SLOT_RGB2: number;
+		static SLOT_ALPHA: number;
 		static PATH_POSITION: number;
 		static PATH_SPACING: number;
 		static PATH_MIX: number;
@@ -725,9 +775,26 @@ declare module spine {
 		private readFloatArray;
 		private readShortArray;
 		private readAnimation;
-		private readCurve;
-		setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
-	}
+		static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
+		static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
+		static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
+	}
+	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;
+	}
+	export {};
 }
 declare module spine {
 	class SkeletonBounds {
@@ -815,11 +882,14 @@ declare module spine {
 		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;
-		readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void;
+		private readTimeline;
+		private readTimeline2;
+		private readCurve;
+		setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
 		getValue(map: any, prop: string, defaultValue: any): any;
 		static blendModeFromString(str: string): BlendMode;
 		static positionModeFromString(str: string): PositionMode;
-		static spacingModeFromString(str: string): SpacingMode;
+		static spacingModeFromString(str: string): SpacingMode.Length | SpacingMode.Fixed | SpacingMode.Percent;
 		static rotateModeFromString(str: string): RotateMode;
 		static transformModeFromString(str: string): TransformMode;
 	}
@@ -959,15 +1029,16 @@ declare module spine {
 		data: TransformConstraintData;
 		bones: Array<Bone>;
 		target: Bone;
-		rotateMix: number;
-		translateMix: number;
-		scaleMix: number;
-		shearMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
+		mixScaleX: number;
+		mixScaleY: number;
+		mixShearY: number;
 		temp: Vector2;
 		active: boolean;
 		constructor(data: TransformConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		update(): void;
 		applyAbsoluteWorld(): void;
 		applyRelativeWorld(): void;
@@ -979,10 +1050,12 @@ declare module spine {
 	class TransformConstraintData extends ConstraintData {
 		bones: BoneData[];
 		target: BoneData;
-		rotateMix: number;
-		translateMix: number;
-		scaleMix: number;
-		shearMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
+		mixScaleX: number;
+		mixScaleY: number;
+		mixShearY: number;
 		offsetRotation: number;
 		offsetX: number;
 		offsetY: number;
@@ -1027,6 +1100,14 @@ declare module spine {
 		remove(value: number): void;
 		clear(): void;
 	}
+	class StringSet {
+		entries: Map<boolean>;
+		size: number;
+		add(value: string): boolean;
+		addAll(values: string[]): boolean;
+		contains(value: string): boolean;
+		clear(): void;
+	}
 	interface Disposable {
 		dispose(): void;
 	}
@@ -1084,6 +1165,7 @@ declare module spine {
 	class Utils {
 		static SUPPORTS_TYPED_ARRAYS: boolean;
 		static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
+		static arrayFill<T>(array: ArrayLike<T>, fromIndex: number, toIndex: number, value: T): void;
 		static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
 		static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
 		static newArray<T>(size: number, defaultValue: T): Array<T>;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 983 - 355
spine-ts/build/spine-canvas.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
spine-ts/build/spine-canvas.js.map


+ 257 - 175
spine-ts/build/spine-core.d.ts

@@ -2,17 +2,13 @@ declare module spine {
 	class Animation {
 		name: string;
 		timelines: Array<Timeline>;
-		timelineIds: Array<boolean>;
+		timelineIds: StringSet;
 		duration: number;
 		constructor(name: string, timelines: Array<Timeline>, duration: number);
-		hasTimeline(id: number): boolean;
+		hasTimeline(ids: string[]): boolean;
 		apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-		static binarySearch(values: ArrayLike<number>, target: number, step?: number): number;
-		static linearSearch(values: ArrayLike<number>, target: number, step: number): number;
-	}
-	interface Timeline {
-		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-		getPropertyId(): number;
+		static search(frames: ArrayLike<number>, time: number): number;
+		static search2(values: ArrayLike<number>, time: number, step: number): number;
 	}
 	enum MixBlend {
 		setup = 0,
@@ -24,103 +20,152 @@ declare module spine {
 		mixIn = 0,
 		mixOut = 1
 	}
-	enum TimelineType {
+	enum Property {
 		rotate = 0,
-		translate = 1,
-		scale = 2,
-		shear = 3,
-		attachment = 4,
-		color = 5,
-		deform = 6,
-		event = 7,
-		drawOrder = 8,
-		ikConstraint = 9,
-		transformConstraint = 10,
-		pathConstraintPosition = 11,
-		pathConstraintSpacing = 12,
-		pathConstraintMix = 13,
-		twoColor = 14
-	}
-	abstract class CurveTimeline implements Timeline {
+		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
+	}
+	abstract class Timeline {
+		propertyIds: string[];
+		frames: ArrayLike<number>;
+		constructor(frameCount: number, propertyIds: string[]);
+		getPropertyIds(): string[];
+		abstract getFrameEntries(): number;
+		getFrameCount(): number;
+		getDuration(): number;
+		abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	interface BoneTimeline {
+		boneIndex: number;
+	}
+	interface SlotTimeline {
+		slotIndex: number;
+	}
+	abstract class CurveTimeline extends Timeline {
 		static LINEAR: number;
 		static STEPPED: number;
 		static BEZIER: number;
 		static BEZIER_SIZE: number;
-		private curves;
-		abstract getPropertyId(): number;
-		constructor(frameCount: number);
-		getFrameCount(): number;
-		setLinear(frameIndex: number): void;
-		setStepped(frameIndex: number): void;
-		getCurveType(frameIndex: number): number;
-		setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
-		getCurvePercent(frameIndex: number, percent: number): number;
-		abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+		protected curves: ArrayLike<number>;
+		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 {
+		static ENTRIES: number;
+		static VALUE: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, value: number): void;
+		getCurveValue(time: number): number;
 	}
-	class RotateTimeline extends CurveTimeline {
+	abstract class CurveTimeline2 extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATION: number;
-		static ROTATION: number;
+		static VALUE1: number;
+		static VALUE2: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, value1: number, value2: number): void;
+	}
+	class RotateTimeline extends CurveTimeline1 implements BoneTimeline {
 		boneIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, degrees: number): void;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class TranslateTimeline extends CurveTimeline {
-		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_X: number;
-		static PREV_Y: number;
-		static X: number;
-		static Y: number;
+	class TranslateTimeline extends CurveTimeline2 implements BoneTimeline {
 		boneIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, x: number, y: number): void;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ScaleTimeline extends TranslateTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ShearTimeline extends TranslateTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ColorTimeline extends CurveTimeline {
+	class ScaleTimeline extends CurveTimeline2 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
+		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBATimeline extends CurveTimeline implements SlotTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_R: number;
-		static PREV_G: number;
-		static PREV_B: number;
-		static PREV_A: number;
 		static R: number;
 		static G: number;
 		static B: number;
 		static A: number;
 		slotIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBTimeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class TwoColorTimeline extends CurveTimeline {
+	class RGBA2Timeline extends CurveTimeline implements SlotTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_R: number;
-		static PREV_G: number;
-		static PREV_B: number;
-		static PREV_A: number;
-		static PREV_R2: number;
-		static PREV_G2: number;
-		static PREV_B2: number;
 		static R: number;
 		static G: number;
 		static B: number;
@@ -129,124 +174,115 @@ declare module spine {
 		static G2: number;
 		static B2: number;
 		slotIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class AttachmentTimeline implements Timeline {
+	class RGB2Timeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		static R2: number;
+		static G2: number;
+		static B2: number;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class AttachmentTimeline extends Timeline implements SlotTimeline {
 		slotIndex: number;
-		frames: ArrayLike<number>;
 		attachmentNames: Array<string>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
+		constructor(frameCount: number, slotIndex: number);
+		getFrameEntries(): number;
 		getFrameCount(): number;
-		setFrame(frameIndex: number, time: number, attachmentName: string): void;
+		setFrame(frame: number, time: number, attachmentName: string): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 		setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void;
 	}
-	class DeformTimeline extends CurveTimeline {
+	class DeformTimeline extends CurveTimeline implements SlotTimeline {
 		slotIndex: number;
 		attachment: VertexAttachment;
-		frames: ArrayLike<number>;
-		frameVertices: Array<ArrayLike<number>>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, vertices: ArrayLike<number>): void;
+		vertices: Array<ArrayLike<number>>;
+		constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, vertices: ArrayLike<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;
+		getCurvePercent(time: number, frame: number): number;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class EventTimeline implements Timeline {
-		frames: ArrayLike<number>;
+	class EventTimeline extends Timeline {
+		static propertyIds: string[];
 		events: Array<Event>;
 		constructor(frameCount: number);
-		getPropertyId(): number;
-		getFrameCount(): number;
-		setFrame(frameIndex: number, event: Event): void;
+		getFrameEntries(): number;
+		setFrame(frame: number, event: Event): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class DrawOrderTimeline implements Timeline {
-		frames: ArrayLike<number>;
+	class DrawOrderTimeline extends Timeline {
+		static propertyIds: string[];
 		drawOrders: Array<Array<number>>;
 		constructor(frameCount: number);
-		getPropertyId(): number;
-		getFrameCount(): number;
-		setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void;
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, drawOrder: Array<number>): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class IkConstraintTimeline extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_MIX: number;
-		static PREV_SOFTNESS: number;
-		static PREV_BEND_DIRECTION: number;
-		static PREV_COMPRESS: number;
-		static PREV_STRETCH: number;
 		static MIX: number;
 		static SOFTNESS: number;
 		static BEND_DIRECTION: number;
 		static COMPRESS: number;
 		static STRETCH: number;
 		ikConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class TransformConstraintTimeline extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATE: number;
-		static PREV_TRANSLATE: number;
-		static PREV_SCALE: number;
-		static PREV_SHEAR: number;
 		static ROTATE: number;
-		static TRANSLATE: number;
-		static SCALE: number;
-		static SHEAR: number;
+		static X: number;
+		static Y: number;
+		static SCALEX: number;
+		static SCALEY: number;
+		static SHEARY: number;
 		transformConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class PathConstraintPositionTimeline extends CurveTimeline {
-		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_VALUE: number;
-		static VALUE: number;
+	class PathConstraintPositionTimeline extends CurveTimeline1 {
 		pathConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, value: number): void;
+		constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class PathConstraintSpacingTimeline extends CurveTimeline1 {
+		pathConstraintIndex: number;
+		constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class PathConstraintMixTimeline extends CurveTimeline {
+		pathConstraintIndex: number;
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATE: number;
-		static PREV_TRANSLATE: number;
 		static ROTATE: number;
-		static TRANSLATE: number;
-		pathConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void;
+		static X: number;
+		static Y: 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 }
 declare module spine {
 	class AnimationState {
-		static emptyAnimation: Animation;
+		private static _emptyAnimation;
+		private static emptyAnimation;
 		static SUBSEQUENT: number;
 		static FIRST: number;
 		static HOLD_SUBSEQUENT: number;
@@ -261,7 +297,7 @@ declare module spine {
 		events: Event[];
 		listeners: AnimationStateListener[];
 		queue: EventQueue;
-		propertyIDs: IntSet;
+		propertyIDs: StringSet;
 		animationsChanged: boolean;
 		trackEntryPool: Pool<TrackEntry>;
 		constructor(data: AnimationStateData);
@@ -275,6 +311,7 @@ declare module spine {
 		queueEvents(entry: TrackEntry, animationTime: number): void;
 		clearTracks(): void;
 		clearTrack(trackIndex: number): void;
+		clearNext(entry: TrackEntry): 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;
@@ -296,6 +333,7 @@ declare module spine {
 	}
 	class TrackEntry {
 		animation: Animation;
+		previous: TrackEntry;
 		next: TrackEntry;
 		mixingFrom: TrackEntry;
 		mixingTo: TrackEntry;
@@ -303,6 +341,7 @@ declare module spine {
 		trackIndex: number;
 		loop: boolean;
 		holdPrevious: boolean;
+		reverse: boolean;
 		eventThreshold: number;
 		attachmentThreshold: number;
 		drawOrderThreshold: number;
@@ -330,6 +369,7 @@ declare module spine {
 		setAnimationLast(animationLast: number): void;
 		isComplete(): boolean;
 		resetRotationDirections(): void;
+		getTrackComplete(): number;
 	}
 	class EventQueue {
 		objects: Array<any>;
@@ -547,7 +587,6 @@ declare module spine {
 		active: boolean;
 		constructor(data: IkConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		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, softness: number, alpha: number): void;
@@ -577,8 +616,9 @@ declare module spine {
 		target: Slot;
 		position: number;
 		spacing: number;
-		rotateMix: number;
-		translateMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
 		spaces: number[];
 		positions: number[];
 		world: number[];
@@ -588,9 +628,8 @@ declare module spine {
 		active: boolean;
 		constructor(data: PathConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		update(): void;
-		computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[];
+		computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[];
 		addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
 		addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
 		addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
@@ -606,8 +645,9 @@ declare module spine {
 		offsetRotation: number;
 		position: number;
 		spacing: number;
-		rotateMix: number;
-		translateMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
 		constructor(name: string);
 	}
 	enum PositionMode {
@@ -617,7 +657,8 @@ declare module spine {
 	enum SpacingMode {
 		Length = 0,
 		Fixed = 1,
-		Percent = 2
+		Percent = 2,
+		Proportional = 3
 	}
 	enum RotateMode {
 		Tangent = 0,
@@ -655,7 +696,6 @@ declare module spine {
 		transformConstraints: Array<TransformConstraint>;
 		pathConstraints: Array<PathConstraint>;
 		_updateCache: Updatable[];
-		updateCacheReset: Updatable[];
 		skin: Skin;
 		color: Color;
 		time: number;
@@ -673,6 +713,7 @@ declare module spine {
 		sortBone(bone: Bone): void;
 		sortReset(bones: Array<Bone>): void;
 		updateWorldTransform(): void;
+		updateWorldTransformWith(parent: Bone): void;
 		setToSetupPose(): void;
 		setBonesToSetupPose(): void;
 		setSlotsToSetupPose(): void;
@@ -694,7 +735,7 @@ declare module spine {
 	}
 }
 declare module spine {
-	class SkeletonBinary {
+	export class SkeletonBinary {
 		static AttachmentTypeValues: number[];
 		static TransformModeValues: TransformMode[];
 		static PositionModeValues: PositionMode[];
@@ -703,11 +744,20 @@ declare module spine {
 		static BlendModeValues: BlendMode[];
 		static BONE_ROTATE: number;
 		static BONE_TRANSLATE: number;
+		static BONE_TRANSLATEX: number;
+		static BONE_TRANSLATEY: number;
 		static BONE_SCALE: number;
+		static BONE_SCALEX: number;
+		static BONE_SCALEY: number;
 		static BONE_SHEAR: number;
+		static BONE_SHEARX: number;
+		static BONE_SHEARY: number;
 		static SLOT_ATTACHMENT: number;
-		static SLOT_COLOR: number;
-		static SLOT_TWO_COLOR: number;
+		static SLOT_RGBA: number;
+		static SLOT_RGB: number;
+		static SLOT_RGBA2: number;
+		static SLOT_RGB2: number;
+		static SLOT_ALPHA: number;
 		static PATH_POSITION: number;
 		static PATH_SPACING: number;
 		static PATH_MIX: number;
@@ -725,9 +775,26 @@ declare module spine {
 		private readFloatArray;
 		private readShortArray;
 		private readAnimation;
-		private readCurve;
-		setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
-	}
+		static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
+		static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
+		static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
+	}
+	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;
+	}
+	export {};
 }
 declare module spine {
 	class SkeletonBounds {
@@ -815,11 +882,14 @@ declare module spine {
 		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;
-		readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void;
+		private readTimeline;
+		private readTimeline2;
+		private readCurve;
+		setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
 		getValue(map: any, prop: string, defaultValue: any): any;
 		static blendModeFromString(str: string): BlendMode;
 		static positionModeFromString(str: string): PositionMode;
-		static spacingModeFromString(str: string): SpacingMode;
+		static spacingModeFromString(str: string): SpacingMode.Length | SpacingMode.Fixed | SpacingMode.Percent;
 		static rotateModeFromString(str: string): RotateMode;
 		static transformModeFromString(str: string): TransformMode;
 	}
@@ -959,15 +1029,16 @@ declare module spine {
 		data: TransformConstraintData;
 		bones: Array<Bone>;
 		target: Bone;
-		rotateMix: number;
-		translateMix: number;
-		scaleMix: number;
-		shearMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
+		mixScaleX: number;
+		mixScaleY: number;
+		mixShearY: number;
 		temp: Vector2;
 		active: boolean;
 		constructor(data: TransformConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		update(): void;
 		applyAbsoluteWorld(): void;
 		applyRelativeWorld(): void;
@@ -979,10 +1050,12 @@ declare module spine {
 	class TransformConstraintData extends ConstraintData {
 		bones: BoneData[];
 		target: BoneData;
-		rotateMix: number;
-		translateMix: number;
-		scaleMix: number;
-		shearMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
+		mixScaleX: number;
+		mixScaleY: number;
+		mixShearY: number;
 		offsetRotation: number;
 		offsetX: number;
 		offsetY: number;
@@ -1027,6 +1100,14 @@ declare module spine {
 		remove(value: number): void;
 		clear(): void;
 	}
+	class StringSet {
+		entries: Map<boolean>;
+		size: number;
+		add(value: string): boolean;
+		addAll(values: string[]): boolean;
+		contains(value: string): boolean;
+		clear(): void;
+	}
 	interface Disposable {
 		dispose(): void;
 	}
@@ -1084,6 +1165,7 @@ declare module spine {
 	class Utils {
 		static SUPPORTS_TYPED_ARRAYS: boolean;
 		static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
+		static arrayFill<T>(array: ArrayLike<T>, fromIndex: number, toIndex: number, value: T): void;
 		static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
 		static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
 		static newArray<T>(size: number, defaultValue: T): Array<T>;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 983 - 355
spine-ts/build/spine-core.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
spine-ts/build/spine-core.js.map


+ 257 - 175
spine-ts/build/spine-player.d.ts

@@ -2,17 +2,13 @@ declare module spine {
 	class Animation {
 		name: string;
 		timelines: Array<Timeline>;
-		timelineIds: Array<boolean>;
+		timelineIds: StringSet;
 		duration: number;
 		constructor(name: string, timelines: Array<Timeline>, duration: number);
-		hasTimeline(id: number): boolean;
+		hasTimeline(ids: string[]): boolean;
 		apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-		static binarySearch(values: ArrayLike<number>, target: number, step?: number): number;
-		static linearSearch(values: ArrayLike<number>, target: number, step: number): number;
-	}
-	interface Timeline {
-		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-		getPropertyId(): number;
+		static search(frames: ArrayLike<number>, time: number): number;
+		static search2(values: ArrayLike<number>, time: number, step: number): number;
 	}
 	enum MixBlend {
 		setup = 0,
@@ -24,103 +20,152 @@ declare module spine {
 		mixIn = 0,
 		mixOut = 1
 	}
-	enum TimelineType {
+	enum Property {
 		rotate = 0,
-		translate = 1,
-		scale = 2,
-		shear = 3,
-		attachment = 4,
-		color = 5,
-		deform = 6,
-		event = 7,
-		drawOrder = 8,
-		ikConstraint = 9,
-		transformConstraint = 10,
-		pathConstraintPosition = 11,
-		pathConstraintSpacing = 12,
-		pathConstraintMix = 13,
-		twoColor = 14
-	}
-	abstract class CurveTimeline implements Timeline {
+		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
+	}
+	abstract class Timeline {
+		propertyIds: string[];
+		frames: ArrayLike<number>;
+		constructor(frameCount: number, propertyIds: string[]);
+		getPropertyIds(): string[];
+		abstract getFrameEntries(): number;
+		getFrameCount(): number;
+		getDuration(): number;
+		abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	interface BoneTimeline {
+		boneIndex: number;
+	}
+	interface SlotTimeline {
+		slotIndex: number;
+	}
+	abstract class CurveTimeline extends Timeline {
 		static LINEAR: number;
 		static STEPPED: number;
 		static BEZIER: number;
 		static BEZIER_SIZE: number;
-		private curves;
-		abstract getPropertyId(): number;
-		constructor(frameCount: number);
-		getFrameCount(): number;
-		setLinear(frameIndex: number): void;
-		setStepped(frameIndex: number): void;
-		getCurveType(frameIndex: number): number;
-		setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
-		getCurvePercent(frameIndex: number, percent: number): number;
-		abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+		protected curves: ArrayLike<number>;
+		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 {
+		static ENTRIES: number;
+		static VALUE: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, value: number): void;
+		getCurveValue(time: number): number;
 	}
-	class RotateTimeline extends CurveTimeline {
+	abstract class CurveTimeline2 extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATION: number;
-		static ROTATION: number;
+		static VALUE1: number;
+		static VALUE2: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, value1: number, value2: number): void;
+	}
+	class RotateTimeline extends CurveTimeline1 implements BoneTimeline {
 		boneIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, degrees: number): void;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class TranslateTimeline extends CurveTimeline {
-		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_X: number;
-		static PREV_Y: number;
-		static X: number;
-		static Y: number;
+	class TranslateTimeline extends CurveTimeline2 implements BoneTimeline {
 		boneIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, x: number, y: number): void;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ScaleTimeline extends TranslateTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ShearTimeline extends TranslateTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ColorTimeline extends CurveTimeline {
+	class ScaleTimeline extends CurveTimeline2 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
+		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBATimeline extends CurveTimeline implements SlotTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_R: number;
-		static PREV_G: number;
-		static PREV_B: number;
-		static PREV_A: number;
 		static R: number;
 		static G: number;
 		static B: number;
 		static A: number;
 		slotIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBTimeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class TwoColorTimeline extends CurveTimeline {
+	class RGBA2Timeline extends CurveTimeline implements SlotTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_R: number;
-		static PREV_G: number;
-		static PREV_B: number;
-		static PREV_A: number;
-		static PREV_R2: number;
-		static PREV_G2: number;
-		static PREV_B2: number;
 		static R: number;
 		static G: number;
 		static B: number;
@@ -129,124 +174,115 @@ declare module spine {
 		static G2: number;
 		static B2: number;
 		slotIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class AttachmentTimeline implements Timeline {
+	class RGB2Timeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		static R2: number;
+		static G2: number;
+		static B2: number;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class AttachmentTimeline extends Timeline implements SlotTimeline {
 		slotIndex: number;
-		frames: ArrayLike<number>;
 		attachmentNames: Array<string>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
+		constructor(frameCount: number, slotIndex: number);
+		getFrameEntries(): number;
 		getFrameCount(): number;
-		setFrame(frameIndex: number, time: number, attachmentName: string): void;
+		setFrame(frame: number, time: number, attachmentName: string): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 		setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void;
 	}
-	class DeformTimeline extends CurveTimeline {
+	class DeformTimeline extends CurveTimeline implements SlotTimeline {
 		slotIndex: number;
 		attachment: VertexAttachment;
-		frames: ArrayLike<number>;
-		frameVertices: Array<ArrayLike<number>>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, vertices: ArrayLike<number>): void;
+		vertices: Array<ArrayLike<number>>;
+		constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, vertices: ArrayLike<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;
+		getCurvePercent(time: number, frame: number): number;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class EventTimeline implements Timeline {
-		frames: ArrayLike<number>;
+	class EventTimeline extends Timeline {
+		static propertyIds: string[];
 		events: Array<Event>;
 		constructor(frameCount: number);
-		getPropertyId(): number;
-		getFrameCount(): number;
-		setFrame(frameIndex: number, event: Event): void;
+		getFrameEntries(): number;
+		setFrame(frame: number, event: Event): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class DrawOrderTimeline implements Timeline {
-		frames: ArrayLike<number>;
+	class DrawOrderTimeline extends Timeline {
+		static propertyIds: string[];
 		drawOrders: Array<Array<number>>;
 		constructor(frameCount: number);
-		getPropertyId(): number;
-		getFrameCount(): number;
-		setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void;
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, drawOrder: Array<number>): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class IkConstraintTimeline extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_MIX: number;
-		static PREV_SOFTNESS: number;
-		static PREV_BEND_DIRECTION: number;
-		static PREV_COMPRESS: number;
-		static PREV_STRETCH: number;
 		static MIX: number;
 		static SOFTNESS: number;
 		static BEND_DIRECTION: number;
 		static COMPRESS: number;
 		static STRETCH: number;
 		ikConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class TransformConstraintTimeline extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATE: number;
-		static PREV_TRANSLATE: number;
-		static PREV_SCALE: number;
-		static PREV_SHEAR: number;
 		static ROTATE: number;
-		static TRANSLATE: number;
-		static SCALE: number;
-		static SHEAR: number;
+		static X: number;
+		static Y: number;
+		static SCALEX: number;
+		static SCALEY: number;
+		static SHEARY: number;
 		transformConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class PathConstraintPositionTimeline extends CurveTimeline {
-		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_VALUE: number;
-		static VALUE: number;
+	class PathConstraintPositionTimeline extends CurveTimeline1 {
 		pathConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, value: number): void;
+		constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class PathConstraintSpacingTimeline extends CurveTimeline1 {
+		pathConstraintIndex: number;
+		constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class PathConstraintMixTimeline extends CurveTimeline {
+		pathConstraintIndex: number;
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATE: number;
-		static PREV_TRANSLATE: number;
 		static ROTATE: number;
-		static TRANSLATE: number;
-		pathConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void;
+		static X: number;
+		static Y: 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 }
 declare module spine {
 	class AnimationState {
-		static emptyAnimation: Animation;
+		private static _emptyAnimation;
+		private static emptyAnimation;
 		static SUBSEQUENT: number;
 		static FIRST: number;
 		static HOLD_SUBSEQUENT: number;
@@ -261,7 +297,7 @@ declare module spine {
 		events: Event[];
 		listeners: AnimationStateListener[];
 		queue: EventQueue;
-		propertyIDs: IntSet;
+		propertyIDs: StringSet;
 		animationsChanged: boolean;
 		trackEntryPool: Pool<TrackEntry>;
 		constructor(data: AnimationStateData);
@@ -275,6 +311,7 @@ declare module spine {
 		queueEvents(entry: TrackEntry, animationTime: number): void;
 		clearTracks(): void;
 		clearTrack(trackIndex: number): void;
+		clearNext(entry: TrackEntry): 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;
@@ -296,6 +333,7 @@ declare module spine {
 	}
 	class TrackEntry {
 		animation: Animation;
+		previous: TrackEntry;
 		next: TrackEntry;
 		mixingFrom: TrackEntry;
 		mixingTo: TrackEntry;
@@ -303,6 +341,7 @@ declare module spine {
 		trackIndex: number;
 		loop: boolean;
 		holdPrevious: boolean;
+		reverse: boolean;
 		eventThreshold: number;
 		attachmentThreshold: number;
 		drawOrderThreshold: number;
@@ -330,6 +369,7 @@ declare module spine {
 		setAnimationLast(animationLast: number): void;
 		isComplete(): boolean;
 		resetRotationDirections(): void;
+		getTrackComplete(): number;
 	}
 	class EventQueue {
 		objects: Array<any>;
@@ -547,7 +587,6 @@ declare module spine {
 		active: boolean;
 		constructor(data: IkConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		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, softness: number, alpha: number): void;
@@ -577,8 +616,9 @@ declare module spine {
 		target: Slot;
 		position: number;
 		spacing: number;
-		rotateMix: number;
-		translateMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
 		spaces: number[];
 		positions: number[];
 		world: number[];
@@ -588,9 +628,8 @@ declare module spine {
 		active: boolean;
 		constructor(data: PathConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		update(): void;
-		computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[];
+		computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[];
 		addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
 		addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
 		addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
@@ -606,8 +645,9 @@ declare module spine {
 		offsetRotation: number;
 		position: number;
 		spacing: number;
-		rotateMix: number;
-		translateMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
 		constructor(name: string);
 	}
 	enum PositionMode {
@@ -617,7 +657,8 @@ declare module spine {
 	enum SpacingMode {
 		Length = 0,
 		Fixed = 1,
-		Percent = 2
+		Percent = 2,
+		Proportional = 3
 	}
 	enum RotateMode {
 		Tangent = 0,
@@ -655,7 +696,6 @@ declare module spine {
 		transformConstraints: Array<TransformConstraint>;
 		pathConstraints: Array<PathConstraint>;
 		_updateCache: Updatable[];
-		updateCacheReset: Updatable[];
 		skin: Skin;
 		color: Color;
 		time: number;
@@ -673,6 +713,7 @@ declare module spine {
 		sortBone(bone: Bone): void;
 		sortReset(bones: Array<Bone>): void;
 		updateWorldTransform(): void;
+		updateWorldTransformWith(parent: Bone): void;
 		setToSetupPose(): void;
 		setBonesToSetupPose(): void;
 		setSlotsToSetupPose(): void;
@@ -694,7 +735,7 @@ declare module spine {
 	}
 }
 declare module spine {
-	class SkeletonBinary {
+	export class SkeletonBinary {
 		static AttachmentTypeValues: number[];
 		static TransformModeValues: TransformMode[];
 		static PositionModeValues: PositionMode[];
@@ -703,11 +744,20 @@ declare module spine {
 		static BlendModeValues: BlendMode[];
 		static BONE_ROTATE: number;
 		static BONE_TRANSLATE: number;
+		static BONE_TRANSLATEX: number;
+		static BONE_TRANSLATEY: number;
 		static BONE_SCALE: number;
+		static BONE_SCALEX: number;
+		static BONE_SCALEY: number;
 		static BONE_SHEAR: number;
+		static BONE_SHEARX: number;
+		static BONE_SHEARY: number;
 		static SLOT_ATTACHMENT: number;
-		static SLOT_COLOR: number;
-		static SLOT_TWO_COLOR: number;
+		static SLOT_RGBA: number;
+		static SLOT_RGB: number;
+		static SLOT_RGBA2: number;
+		static SLOT_RGB2: number;
+		static SLOT_ALPHA: number;
 		static PATH_POSITION: number;
 		static PATH_SPACING: number;
 		static PATH_MIX: number;
@@ -725,9 +775,26 @@ declare module spine {
 		private readFloatArray;
 		private readShortArray;
 		private readAnimation;
-		private readCurve;
-		setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
-	}
+		static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
+		static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
+		static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
+	}
+	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;
+	}
+	export {};
 }
 declare module spine {
 	class SkeletonBounds {
@@ -815,11 +882,14 @@ declare module spine {
 		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;
-		readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void;
+		private readTimeline;
+		private readTimeline2;
+		private readCurve;
+		setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
 		getValue(map: any, prop: string, defaultValue: any): any;
 		static blendModeFromString(str: string): BlendMode;
 		static positionModeFromString(str: string): PositionMode;
-		static spacingModeFromString(str: string): SpacingMode;
+		static spacingModeFromString(str: string): SpacingMode.Length | SpacingMode.Fixed | SpacingMode.Percent;
 		static rotateModeFromString(str: string): RotateMode;
 		static transformModeFromString(str: string): TransformMode;
 	}
@@ -959,15 +1029,16 @@ declare module spine {
 		data: TransformConstraintData;
 		bones: Array<Bone>;
 		target: Bone;
-		rotateMix: number;
-		translateMix: number;
-		scaleMix: number;
-		shearMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
+		mixScaleX: number;
+		mixScaleY: number;
+		mixShearY: number;
 		temp: Vector2;
 		active: boolean;
 		constructor(data: TransformConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		update(): void;
 		applyAbsoluteWorld(): void;
 		applyRelativeWorld(): void;
@@ -979,10 +1050,12 @@ declare module spine {
 	class TransformConstraintData extends ConstraintData {
 		bones: BoneData[];
 		target: BoneData;
-		rotateMix: number;
-		translateMix: number;
-		scaleMix: number;
-		shearMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
+		mixScaleX: number;
+		mixScaleY: number;
+		mixShearY: number;
 		offsetRotation: number;
 		offsetX: number;
 		offsetY: number;
@@ -1027,6 +1100,14 @@ declare module spine {
 		remove(value: number): void;
 		clear(): void;
 	}
+	class StringSet {
+		entries: Map<boolean>;
+		size: number;
+		add(value: string): boolean;
+		addAll(values: string[]): boolean;
+		contains(value: string): boolean;
+		clear(): void;
+	}
 	interface Disposable {
 		dispose(): void;
 	}
@@ -1084,6 +1165,7 @@ declare module spine {
 	class Utils {
 		static SUPPORTS_TYPED_ARRAYS: boolean;
 		static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
+		static arrayFill<T>(array: ArrayLike<T>, fromIndex: number, toIndex: number, value: T): void;
 		static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
 		static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
 		static newArray<T>(size: number, defaultValue: T): Array<T>;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 983 - 355
spine-ts/build/spine-player.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
spine-ts/build/spine-player.js.map


+ 257 - 175
spine-ts/build/spine-threejs.d.ts

@@ -2,17 +2,13 @@ declare module spine {
 	class Animation {
 		name: string;
 		timelines: Array<Timeline>;
-		timelineIds: Array<boolean>;
+		timelineIds: StringSet;
 		duration: number;
 		constructor(name: string, timelines: Array<Timeline>, duration: number);
-		hasTimeline(id: number): boolean;
+		hasTimeline(ids: string[]): boolean;
 		apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-		static binarySearch(values: ArrayLike<number>, target: number, step?: number): number;
-		static linearSearch(values: ArrayLike<number>, target: number, step: number): number;
-	}
-	interface Timeline {
-		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-		getPropertyId(): number;
+		static search(frames: ArrayLike<number>, time: number): number;
+		static search2(values: ArrayLike<number>, time: number, step: number): number;
 	}
 	enum MixBlend {
 		setup = 0,
@@ -24,103 +20,152 @@ declare module spine {
 		mixIn = 0,
 		mixOut = 1
 	}
-	enum TimelineType {
+	enum Property {
 		rotate = 0,
-		translate = 1,
-		scale = 2,
-		shear = 3,
-		attachment = 4,
-		color = 5,
-		deform = 6,
-		event = 7,
-		drawOrder = 8,
-		ikConstraint = 9,
-		transformConstraint = 10,
-		pathConstraintPosition = 11,
-		pathConstraintSpacing = 12,
-		pathConstraintMix = 13,
-		twoColor = 14
-	}
-	abstract class CurveTimeline implements Timeline {
+		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
+	}
+	abstract class Timeline {
+		propertyIds: string[];
+		frames: ArrayLike<number>;
+		constructor(frameCount: number, propertyIds: string[]);
+		getPropertyIds(): string[];
+		abstract getFrameEntries(): number;
+		getFrameCount(): number;
+		getDuration(): number;
+		abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	interface BoneTimeline {
+		boneIndex: number;
+	}
+	interface SlotTimeline {
+		slotIndex: number;
+	}
+	abstract class CurveTimeline extends Timeline {
 		static LINEAR: number;
 		static STEPPED: number;
 		static BEZIER: number;
 		static BEZIER_SIZE: number;
-		private curves;
-		abstract getPropertyId(): number;
-		constructor(frameCount: number);
-		getFrameCount(): number;
-		setLinear(frameIndex: number): void;
-		setStepped(frameIndex: number): void;
-		getCurveType(frameIndex: number): number;
-		setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
-		getCurvePercent(frameIndex: number, percent: number): number;
-		abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+		protected curves: ArrayLike<number>;
+		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 {
+		static ENTRIES: number;
+		static VALUE: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, value: number): void;
+		getCurveValue(time: number): number;
 	}
-	class RotateTimeline extends CurveTimeline {
+	abstract class CurveTimeline2 extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATION: number;
-		static ROTATION: number;
+		static VALUE1: number;
+		static VALUE2: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, value1: number, value2: number): void;
+	}
+	class RotateTimeline extends CurveTimeline1 implements BoneTimeline {
 		boneIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, degrees: number): void;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class TranslateTimeline extends CurveTimeline {
-		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_X: number;
-		static PREV_Y: number;
-		static X: number;
-		static Y: number;
+	class TranslateTimeline extends CurveTimeline2 implements BoneTimeline {
 		boneIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, x: number, y: number): void;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ScaleTimeline extends TranslateTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ShearTimeline extends TranslateTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class ColorTimeline extends CurveTimeline {
+	class ScaleTimeline extends CurveTimeline2 implements BoneTimeline {
+		boneIndex: number;
+		constructor(frameCount: number, bezierCount: number, boneIndex: number);
+		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBATimeline extends CurveTimeline implements SlotTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_R: number;
-		static PREV_G: number;
-		static PREV_B: number;
-		static PREV_A: number;
 		static R: number;
 		static G: number;
 		static B: number;
 		static A: number;
 		slotIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBTimeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class TwoColorTimeline extends CurveTimeline {
+	class RGBA2Timeline extends CurveTimeline implements SlotTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_R: number;
-		static PREV_G: number;
-		static PREV_B: number;
-		static PREV_A: number;
-		static PREV_R2: number;
-		static PREV_G2: number;
-		static PREV_B2: number;
 		static R: number;
 		static G: number;
 		static B: number;
@@ -129,124 +174,115 @@ declare module spine {
 		static G2: number;
 		static B2: number;
 		slotIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class AttachmentTimeline implements Timeline {
+	class RGB2Timeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		static R2: number;
+		static G2: number;
+		static B2: number;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class AttachmentTimeline extends Timeline implements SlotTimeline {
 		slotIndex: number;
-		frames: ArrayLike<number>;
 		attachmentNames: Array<string>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
+		constructor(frameCount: number, slotIndex: number);
+		getFrameEntries(): number;
 		getFrameCount(): number;
-		setFrame(frameIndex: number, time: number, attachmentName: string): void;
+		setFrame(frame: number, time: number, attachmentName: string): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 		setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void;
 	}
-	class DeformTimeline extends CurveTimeline {
+	class DeformTimeline extends CurveTimeline implements SlotTimeline {
 		slotIndex: number;
 		attachment: VertexAttachment;
-		frames: ArrayLike<number>;
-		frameVertices: Array<ArrayLike<number>>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, vertices: ArrayLike<number>): void;
+		vertices: Array<ArrayLike<number>>;
+		constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, vertices: ArrayLike<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;
+		getCurvePercent(time: number, frame: number): number;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class EventTimeline implements Timeline {
-		frames: ArrayLike<number>;
+	class EventTimeline extends Timeline {
+		static propertyIds: string[];
 		events: Array<Event>;
 		constructor(frameCount: number);
-		getPropertyId(): number;
-		getFrameCount(): number;
-		setFrame(frameIndex: number, event: Event): void;
+		getFrameEntries(): number;
+		setFrame(frame: number, event: Event): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class DrawOrderTimeline implements Timeline {
-		frames: ArrayLike<number>;
+	class DrawOrderTimeline extends Timeline {
+		static propertyIds: string[];
 		drawOrders: Array<Array<number>>;
 		constructor(frameCount: number);
-		getPropertyId(): number;
-		getFrameCount(): number;
-		setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void;
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, drawOrder: Array<number>): void;
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class IkConstraintTimeline extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_MIX: number;
-		static PREV_SOFTNESS: number;
-		static PREV_BEND_DIRECTION: number;
-		static PREV_COMPRESS: number;
-		static PREV_STRETCH: number;
 		static MIX: number;
 		static SOFTNESS: number;
 		static BEND_DIRECTION: number;
 		static COMPRESS: number;
 		static STRETCH: number;
 		ikConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class TransformConstraintTimeline extends CurveTimeline {
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATE: number;
-		static PREV_TRANSLATE: number;
-		static PREV_SCALE: number;
-		static PREV_SHEAR: number;
 		static ROTATE: number;
-		static TRANSLATE: number;
-		static SCALE: number;
-		static SHEAR: number;
+		static X: number;
+		static Y: number;
+		static SCALEX: number;
+		static SCALEY: number;
+		static SHEARY: number;
 		transformConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class PathConstraintPositionTimeline extends CurveTimeline {
-		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_VALUE: number;
-		static VALUE: number;
+	class PathConstraintPositionTimeline extends CurveTimeline1 {
 		pathConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, value: number): void;
+		constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
-	class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline {
-		constructor(frameCount: number);
-		getPropertyId(): number;
+	class PathConstraintSpacingTimeline extends CurveTimeline1 {
+		pathConstraintIndex: number;
+		constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
 		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 	class PathConstraintMixTimeline extends CurveTimeline {
+		pathConstraintIndex: number;
 		static ENTRIES: number;
-		static PREV_TIME: number;
-		static PREV_ROTATE: number;
-		static PREV_TRANSLATE: number;
 		static ROTATE: number;
-		static TRANSLATE: number;
-		pathConstraintIndex: number;
-		frames: ArrayLike<number>;
-		constructor(frameCount: number);
-		getPropertyId(): number;
-		setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void;
+		static X: number;
+		static Y: 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
 	}
 }
 declare module spine {
 	class AnimationState {
-		static emptyAnimation: Animation;
+		private static _emptyAnimation;
+		private static emptyAnimation;
 		static SUBSEQUENT: number;
 		static FIRST: number;
 		static HOLD_SUBSEQUENT: number;
@@ -261,7 +297,7 @@ declare module spine {
 		events: Event[];
 		listeners: AnimationStateListener[];
 		queue: EventQueue;
-		propertyIDs: IntSet;
+		propertyIDs: StringSet;
 		animationsChanged: boolean;
 		trackEntryPool: Pool<TrackEntry>;
 		constructor(data: AnimationStateData);
@@ -275,6 +311,7 @@ declare module spine {
 		queueEvents(entry: TrackEntry, animationTime: number): void;
 		clearTracks(): void;
 		clearTrack(trackIndex: number): void;
+		clearNext(entry: TrackEntry): 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;
@@ -296,6 +333,7 @@ declare module spine {
 	}
 	class TrackEntry {
 		animation: Animation;
+		previous: TrackEntry;
 		next: TrackEntry;
 		mixingFrom: TrackEntry;
 		mixingTo: TrackEntry;
@@ -303,6 +341,7 @@ declare module spine {
 		trackIndex: number;
 		loop: boolean;
 		holdPrevious: boolean;
+		reverse: boolean;
 		eventThreshold: number;
 		attachmentThreshold: number;
 		drawOrderThreshold: number;
@@ -330,6 +369,7 @@ declare module spine {
 		setAnimationLast(animationLast: number): void;
 		isComplete(): boolean;
 		resetRotationDirections(): void;
+		getTrackComplete(): number;
 	}
 	class EventQueue {
 		objects: Array<any>;
@@ -547,7 +587,6 @@ declare module spine {
 		active: boolean;
 		constructor(data: IkConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		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, softness: number, alpha: number): void;
@@ -577,8 +616,9 @@ declare module spine {
 		target: Slot;
 		position: number;
 		spacing: number;
-		rotateMix: number;
-		translateMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
 		spaces: number[];
 		positions: number[];
 		world: number[];
@@ -588,9 +628,8 @@ declare module spine {
 		active: boolean;
 		constructor(data: PathConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		update(): void;
-		computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[];
+		computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[];
 		addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
 		addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
 		addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
@@ -606,8 +645,9 @@ declare module spine {
 		offsetRotation: number;
 		position: number;
 		spacing: number;
-		rotateMix: number;
-		translateMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
 		constructor(name: string);
 	}
 	enum PositionMode {
@@ -617,7 +657,8 @@ declare module spine {
 	enum SpacingMode {
 		Length = 0,
 		Fixed = 1,
-		Percent = 2
+		Percent = 2,
+		Proportional = 3
 	}
 	enum RotateMode {
 		Tangent = 0,
@@ -655,7 +696,6 @@ declare module spine {
 		transformConstraints: Array<TransformConstraint>;
 		pathConstraints: Array<PathConstraint>;
 		_updateCache: Updatable[];
-		updateCacheReset: Updatable[];
 		skin: Skin;
 		color: Color;
 		time: number;
@@ -673,6 +713,7 @@ declare module spine {
 		sortBone(bone: Bone): void;
 		sortReset(bones: Array<Bone>): void;
 		updateWorldTransform(): void;
+		updateWorldTransformWith(parent: Bone): void;
 		setToSetupPose(): void;
 		setBonesToSetupPose(): void;
 		setSlotsToSetupPose(): void;
@@ -694,7 +735,7 @@ declare module spine {
 	}
 }
 declare module spine {
-	class SkeletonBinary {
+	export class SkeletonBinary {
 		static AttachmentTypeValues: number[];
 		static TransformModeValues: TransformMode[];
 		static PositionModeValues: PositionMode[];
@@ -703,11 +744,20 @@ declare module spine {
 		static BlendModeValues: BlendMode[];
 		static BONE_ROTATE: number;
 		static BONE_TRANSLATE: number;
+		static BONE_TRANSLATEX: number;
+		static BONE_TRANSLATEY: number;
 		static BONE_SCALE: number;
+		static BONE_SCALEX: number;
+		static BONE_SCALEY: number;
 		static BONE_SHEAR: number;
+		static BONE_SHEARX: number;
+		static BONE_SHEARY: number;
 		static SLOT_ATTACHMENT: number;
-		static SLOT_COLOR: number;
-		static SLOT_TWO_COLOR: number;
+		static SLOT_RGBA: number;
+		static SLOT_RGB: number;
+		static SLOT_RGBA2: number;
+		static SLOT_RGB2: number;
+		static SLOT_ALPHA: number;
 		static PATH_POSITION: number;
 		static PATH_SPACING: number;
 		static PATH_MIX: number;
@@ -725,9 +775,26 @@ declare module spine {
 		private readFloatArray;
 		private readShortArray;
 		private readAnimation;
-		private readCurve;
-		setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
-	}
+		static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
+		static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
+		static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
+	}
+	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;
+	}
+	export {};
 }
 declare module spine {
 	class SkeletonBounds {
@@ -815,11 +882,14 @@ declare module spine {
 		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;
-		readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void;
+		private readTimeline;
+		private readTimeline2;
+		private readCurve;
+		setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
 		getValue(map: any, prop: string, defaultValue: any): any;
 		static blendModeFromString(str: string): BlendMode;
 		static positionModeFromString(str: string): PositionMode;
-		static spacingModeFromString(str: string): SpacingMode;
+		static spacingModeFromString(str: string): SpacingMode.Length | SpacingMode.Fixed | SpacingMode.Percent;
 		static rotateModeFromString(str: string): RotateMode;
 		static transformModeFromString(str: string): TransformMode;
 	}
@@ -959,15 +1029,16 @@ declare module spine {
 		data: TransformConstraintData;
 		bones: Array<Bone>;
 		target: Bone;
-		rotateMix: number;
-		translateMix: number;
-		scaleMix: number;
-		shearMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
+		mixScaleX: number;
+		mixScaleY: number;
+		mixShearY: number;
 		temp: Vector2;
 		active: boolean;
 		constructor(data: TransformConstraintData, skeleton: Skeleton);
 		isActive(): boolean;
-		apply(): void;
 		update(): void;
 		applyAbsoluteWorld(): void;
 		applyRelativeWorld(): void;
@@ -979,10 +1050,12 @@ declare module spine {
 	class TransformConstraintData extends ConstraintData {
 		bones: BoneData[];
 		target: BoneData;
-		rotateMix: number;
-		translateMix: number;
-		scaleMix: number;
-		shearMix: number;
+		mixRotate: number;
+		mixX: number;
+		mixY: number;
+		mixScaleX: number;
+		mixScaleY: number;
+		mixShearY: number;
 		offsetRotation: number;
 		offsetX: number;
 		offsetY: number;
@@ -1027,6 +1100,14 @@ declare module spine {
 		remove(value: number): void;
 		clear(): void;
 	}
+	class StringSet {
+		entries: Map<boolean>;
+		size: number;
+		add(value: string): boolean;
+		addAll(values: string[]): boolean;
+		contains(value: string): boolean;
+		clear(): void;
+	}
 	interface Disposable {
 		dispose(): void;
 	}
@@ -1084,6 +1165,7 @@ declare module spine {
 	class Utils {
 		static SUPPORTS_TYPED_ARRAYS: boolean;
 		static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
+		static arrayFill<T>(array: ArrayLike<T>, fromIndex: number, toIndex: number, value: T): void;
 		static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
 		static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
 		static newArray<T>(size: number, defaultValue: T): Array<T>;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 983 - 355
spine-ts/build/spine-threejs.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
spine-ts/build/spine-threejs.js.map


+ 1737 - 1653
spine-ts/build/spine-webgl.d.ts

@@ -1,1773 +1,1857 @@
 declare module spine {
-    class Animation {
-        name: string;
-        timelines: Array<Timeline>;
-        timelineIds: StringSet;
-        duration: number;
-        constructor(name: string, timelines: Array<Timeline>, duration: number);
-        hasTimeline(ids: string[]): boolean;
-        apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-        static search(frames: ArrayLike<number>, time: number): number;
-        static search2(values: ArrayLike<number>, target: number, step: number): number;
-    }
-    enum MixBlend {
-        setup = 0,
-        first = 1,
-        replace = 2,
-        add = 3
-    }
-    enum MixDirection {
-        mixIn = 0,
-        mixOut = 1
-    }
-    enum Property {
-        rotate = 0,
-        translateX = 1,
-        translateY = 2,
-        scaleX = 3,
-        scaleY = 4,
-        shearX = 5,
-        shearY = 6,
-        rgba = 7,
-        rgb2 = 8,
-        attachment = 9,
-        deform = 10,
-        event = 11,
-        drawOrder = 12,
-        ikConstraint = 13,
-        transformConstraint = 14,
-        pathConstraintPosition = 15,
-        pathConstraintSpacing = 16,
-        pathConstraintMix = 17
-    }
-    abstract class Timeline {
-        propertyIds: string[];
-        frames: ArrayLike<number>;
-        constructor(frameCount: number, propertyIds: string[]);
-        abstract getFrameEntries(): number;
-        getFrameCount(): number;
-        getDuration(): number;
-        abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-        getPropertyIds(): string[];
-    }
-    interface BoneTimeline {
-        boneIndex: number;
-    }
-    interface SlotTimeline {
-        slotIndex: number;
-    }
-    abstract class CurveTimeline extends Timeline {
-        static LINEAR: number;
-        static STEPPED: number;
-        static BEZIER: number;
-        static BEZIER_SIZE: number;
-        protected curves: ArrayLike<number>;
-        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 {
-        static ENTRIES: number;
-        static VALUE: number;
-        constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
-        getFrameEntries(): number;
-        setFrame(frame: number, time: number, value: number): void;
-        getCurveValue(time: number): number;
-    }
-    abstract class CurveTimeline2 extends CurveTimeline {
-        static ENTRIES: number;
-        static VALUE1: number;
-        static VALUE2: number;
-        constructor(frameCount: number, bezierCount: number, propertyIds: 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<Event>, 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<Event>, 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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-    }
-    class ColorTimeline extends CurveTimeline implements SlotTimeline {
-        static ENTRIES: number;
-        static R: number;
-        static G: number;
-        static B: number;
-        static A: number;
-        slotIndex: number;
-        constructor(frameCount: number, bezierCount: number, slotIndex: number);
-        getFrameEntries(): number;
-        setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void;
-        apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-    }
-    class TwoColorTimeline extends CurveTimeline implements SlotTimeline {
-        static ENTRIES: number;
-        static R: number;
-        static G: number;
-        static B: number;
-        static A: number;
-        static R2: number;
-        static G2: number;
-        static B2: number;
-        slotIndex: number;
-        constructor(frameCount: number, bezierCount: number, slotIndex: number);
-        getFrameEntries(): number;
-        setFrame(frameIndex: 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-    }
-    class AttachmentTimeline extends Timeline implements SlotTimeline {
-        slotIndex: number;
-        attachmentNames: Array<string>;
-        constructor(frameCount: number, slotIndex: number);
-        getFrameEntries(): number;
-        getFrameCount(): number;
-        setFrame(frameIndex: number, time: number, attachmentName: string): void;
-        apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, 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<ArrayLike<number>>;
-        constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
-        getFrameEntries(): number;
-        setFrame(frameIndex: number, time: number, vertices: ArrayLike<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;
-        getCurvePercent(time: number, frame: number): number;
-        apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-    }
-    class EventTimeline extends Timeline {
-        static propertyIds: string[];
-        events: Array<Event>;
-        constructor(frameCount: number);
-        getFrameEntries(): number;
-        setFrame(frameIndex: number, event: Event): void;
-        apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-    }
-    class DrawOrderTimeline extends Timeline {
-        static propertyIds: string[];
-        drawOrders: Array<Array<number>>;
-        constructor(frameCount: number);
-        getFrameEntries(): number;
-        setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void;
-        apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-    }
-    class IkConstraintTimeline extends CurveTimeline {
-        static ENTRIES: number;
-        static MIX: number;
-        static SOFTNESS: number;
-        static BEND_DIRECTION: number;
-        static COMPRESS: number;
-        static STRETCH: number;
-        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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-    }
-    class TransformConstraintTimeline extends CurveTimeline {
-        static ENTRIES: number;
-        static ROTATE: number;
-        static TRANSLATE: number;
-        static SCALE: number;
-        static SHEAR: number;
-        transformConstraintIndex: number;
-        constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number);
-        getFrameEntries(): number;
-        setFrame(frame: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void;
-        apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-    }
-    class PathConstraintPositionTimeline extends CurveTimeline1 {
-        pathConstraintIndex: number;
-        constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
-        setFrame(frameIndex: number, time: number, value: number): void;
-        apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-    }
-    class PathConstraintMixTimeline extends CurveTimeline2 {
-        pathConstraintIndex: number;
-        constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
-        apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
-    }
+	class Animation {
+		name: string;
+		timelines: Array<Timeline>;
+		timelineIds: StringSet;
+		duration: number;
+		constructor(name: string, timelines: Array<Timeline>, duration: number);
+		hasTimeline(ids: string[]): boolean;
+		apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+		static search(frames: ArrayLike<number>, time: number): number;
+		static search2(values: ArrayLike<number>, time: number, step: number): number;
+	}
+	enum MixBlend {
+		setup = 0,
+		first = 1,
+		replace = 2,
+		add = 3
+	}
+	enum MixDirection {
+		mixIn = 0,
+		mixOut = 1
+	}
+	enum 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
+	}
+	abstract class Timeline {
+		propertyIds: string[];
+		frames: ArrayLike<number>;
+		constructor(frameCount: number, propertyIds: string[]);
+		getPropertyIds(): string[];
+		abstract getFrameEntries(): number;
+		getFrameCount(): number;
+		getDuration(): number;
+		abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	interface BoneTimeline {
+		boneIndex: number;
+	}
+	interface SlotTimeline {
+		slotIndex: number;
+	}
+	abstract class CurveTimeline extends Timeline {
+		static LINEAR: number;
+		static STEPPED: number;
+		static BEZIER: number;
+		static BEZIER_SIZE: number;
+		protected curves: ArrayLike<number>;
+		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 {
+		static ENTRIES: number;
+		static VALUE: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, value: number): void;
+		getCurveValue(time: number): number;
+	}
+	abstract class CurveTimeline2 extends CurveTimeline {
+		static ENTRIES: number;
+		static VALUE1: number;
+		static VALUE2: number;
+		constructor(frameCount: number, bezierCount: number, propertyIds: 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<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBATimeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		static A: number;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBTimeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGBA2Timeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		static A: number;
+		static R2: number;
+		static G2: number;
+		static B2: number;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class RGB2Timeline extends CurveTimeline implements SlotTimeline {
+		static ENTRIES: number;
+		static R: number;
+		static G: number;
+		static B: number;
+		static R2: number;
+		static G2: number;
+		static B2: number;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class AttachmentTimeline extends Timeline implements SlotTimeline {
+		slotIndex: number;
+		attachmentNames: Array<string>;
+		constructor(frameCount: number, slotIndex: number);
+		getFrameEntries(): number;
+		getFrameCount(): number;
+		setFrame(frame: number, time: number, attachmentName: string): void;
+		apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, 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<ArrayLike<number>>;
+		constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, vertices: ArrayLike<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;
+		getCurvePercent(time: number, frame: number): number;
+		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class EventTimeline extends Timeline {
+		static propertyIds: string[];
+		events: Array<Event>;
+		constructor(frameCount: number);
+		getFrameEntries(): number;
+		setFrame(frame: number, event: Event): void;
+		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class DrawOrderTimeline extends Timeline {
+		static propertyIds: string[];
+		drawOrders: Array<Array<number>>;
+		constructor(frameCount: number);
+		getFrameEntries(): number;
+		setFrame(frame: number, time: number, drawOrder: Array<number>): void;
+		apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class IkConstraintTimeline extends CurveTimeline {
+		static ENTRIES: number;
+		static MIX: number;
+		static SOFTNESS: number;
+		static BEND_DIRECTION: number;
+		static COMPRESS: number;
+		static STRETCH: number;
+		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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class TransformConstraintTimeline extends CurveTimeline {
+		static ENTRIES: number;
+		static ROTATE: number;
+		static X: number;
+		static Y: number;
+		static SCALEX: number;
+		static SCALEY: number;
+		static SHEARY: number;
+		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<Event>, 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<Event>, 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
+	class PathConstraintMixTimeline extends CurveTimeline {
+		pathConstraintIndex: number;
+		static ENTRIES: number;
+		static ROTATE: number;
+		static X: number;
+		static Y: 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<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
+	}
 }
 declare module spine {
-    class AnimationState {
-        private static _emptyAnimation;
-        private static emptyAnimation;
-        static SUBSEQUENT: number;
-        static FIRST: number;
-        static HOLD_SUBSEQUENT: number;
-        static HOLD_FIRST: number;
-        static HOLD_MIX: number;
-        static SETUP: number;
-        static CURRENT: number;
-        data: AnimationStateData;
-        tracks: TrackEntry[];
-        timeScale: number;
-        unkeyedState: number;
-        events: Event[];
-        listeners: AnimationStateListener[];
-        queue: EventQueue;
-        propertyIDs: StringSet;
-        animationsChanged: boolean;
-        trackEntryPool: Pool<TrackEntry>;
-        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: Timeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array<number>, i: number, firstFrame: boolean): void;
-        queueEvents(entry: TrackEntry, animationTime: number): void;
-        clearTracks(): void;
-        clearTrack(trackIndex: number): void;
-        clearNext(entry: TrackEntry): 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;
-        disposeNext(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<any>;
-        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;
-    }
+	class AnimationState {
+		private static _emptyAnimation;
+		private static emptyAnimation;
+		static SUBSEQUENT: number;
+		static FIRST: number;
+		static HOLD_SUBSEQUENT: number;
+		static HOLD_FIRST: number;
+		static HOLD_MIX: number;
+		static SETUP: number;
+		static CURRENT: number;
+		data: AnimationStateData;
+		tracks: TrackEntry[];
+		timeScale: number;
+		unkeyedState: number;
+		events: Event[];
+		listeners: AnimationStateListener[];
+		queue: EventQueue;
+		propertyIDs: StringSet;
+		animationsChanged: boolean;
+		trackEntryPool: Pool<TrackEntry>;
+		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: Timeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array<number>, i: number, firstFrame: boolean): void;
+		queueEvents(entry: TrackEntry, animationTime: number): void;
+		clearTracks(): void;
+		clearTrack(trackIndex: number): void;
+		clearNext(entry: TrackEntry): 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;
+		disposeNext(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<any>;
+		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<number>;
-        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;
-    }
+	class AnimationStateData {
+		skeletonData: SkeletonData;
+		animationToMixTime: Map<number>;
+		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 assets;
-        private errors;
-        private toLoad;
-        private loaded;
-        private rawDataUris;
-        constructor(textureLoader: (image: HTMLImageElement) => any, pathPrefix?: string);
-        private downloadText;
-        private downloadBinary;
-        setRawDataURI(path: string, data: string): void;
-        loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, error: string) => void): void;
-        loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, error: string) => void): void;
-        loadTexture(path: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void;
-        loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, error: string) => void): void;
-        get(path: string): any;
-        remove(path: string): void;
-        removeAll(): void;
-        isLoadingComplete(): boolean;
-        getToLoad(): number;
-        getLoaded(): number;
-        dispose(): void;
-        hasErrors(): boolean;
-        getErrors(): Map<string>;
-    }
+	class AssetManager implements Disposable {
+		private pathPrefix;
+		private textureLoader;
+		private assets;
+		private errors;
+		private toLoad;
+		private loaded;
+		private rawDataUris;
+		constructor(textureLoader: (image: HTMLImageElement) => any, pathPrefix?: string);
+		private downloadText;
+		private downloadBinary;
+		setRawDataURI(path: string, data: string): void;
+		loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, error: string) => void): void;
+		loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, error: string) => void): void;
+		loadTexture(path: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void;
+		loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, error: string) => void): void;
+		get(path: string): any;
+		remove(path: string): void;
+		removeAll(): void;
+		isLoadingComplete(): boolean;
+		getToLoad(): number;
+		getLoaded(): number;
+		dispose(): void;
+		hasErrors(): boolean;
+		getErrors(): Map<string>;
+	}
 }
 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;
-    }
+	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 {
-    enum BlendMode {
-        Normal = 0,
-        Additive = 1,
-        Multiply = 2,
-        Screen = 3
-    }
+	enum BlendMode {
+		Normal = 0,
+		Additive = 1,
+		Multiply = 2,
+		Screen = 3
+	}
 }
 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;
-        appliedValid: boolean;
-        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;
-    }
+	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;
+		appliedValid: boolean;
+		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
-    }
+	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);
-    }
+	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);
-    }
+	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);
-    }
+	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<Bone>;
-        target: Bone;
-        bendDirection: number;
-        compress: boolean;
-        stretch: boolean;
-        mix: number;
-        softness: number;
-        active: boolean;
-        constructor(data: IkConstraintData, skeleton: Skeleton);
-        isActive(): boolean;
-        apply(): void;
-        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, softness: number, alpha: number): void;
-    }
+	class IkConstraint implements Updatable {
+		data: IkConstraintData;
+		bones: Array<Bone>;
+		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, 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);
-    }
+	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<Bone>;
-        target: Slot;
-        position: number;
-        spacing: number;
-        rotateMix: number;
-        translateMix: 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, percentPosition: boolean, percentSpacing: boolean): number[];
-        addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
-        addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
-        addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
-    }
+	class PathConstraint implements Updatable {
+		static NONE: number;
+		static BEFORE: number;
+		static AFTER: number;
+		static epsilon: number;
+		data: PathConstraintData;
+		bones: Array<Bone>;
+		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<number>, i: number, out: Array<number>, o: number): void;
+		addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
+		addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, 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;
-        rotateMix: number;
-        translateMix: number;
-        constructor(name: string);
-    }
-    enum PositionMode {
-        Fixed = 0,
-        Percent = 1
-    }
-    enum SpacingMode {
-        Length = 0,
-        Fixed = 1,
-        Percent = 2
-    }
-    enum RotateMode {
-        Tangent = 0,
-        Chain = 1,
-        ChainScale = 2
-    }
+	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 SharedAssetManager implements Disposable {
-        private pathPrefix;
-        private clientAssets;
-        private queuedAssets;
-        private rawAssets;
-        private errors;
-        constructor(pathPrefix?: string);
-        private queueAsset;
-        loadText(clientId: string, path: string): void;
-        loadJson(clientId: string, path: string): void;
-        loadTexture(clientId: string, textureLoader: (image: HTMLImageElement | ImageBitmap) => any, path: string): void;
-        get(clientId: string, path: string): any;
-        private updateClientAssets;
-        isLoadingComplete(clientId: string): boolean;
-        dispose(): void;
-        hasErrors(): boolean;
-        getErrors(): Map<string>;
-    }
+	class SharedAssetManager implements Disposable {
+		private pathPrefix;
+		private clientAssets;
+		private queuedAssets;
+		private rawAssets;
+		private errors;
+		constructor(pathPrefix?: string);
+		private queueAsset;
+		loadText(clientId: string, path: string): void;
+		loadJson(clientId: string, path: string): void;
+		loadTexture(clientId: string, textureLoader: (image: HTMLImageElement | ImageBitmap) => any, path: string): void;
+		get(clientId: string, path: string): any;
+		private updateClientAssets;
+		isLoadingComplete(clientId: string): boolean;
+		dispose(): void;
+		hasErrors(): boolean;
+		getErrors(): Map<string>;
+	}
 }
 declare module spine {
-    class Skeleton {
-        data: SkeletonData;
-        bones: Array<Bone>;
-        slots: Array<Slot>;
-        drawOrder: Array<Slot>;
-        ikConstraints: Array<IkConstraint>;
-        transformConstraints: Array<TransformConstraint>;
-        pathConstraints: Array<PathConstraint>;
-        _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<Bone>): 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<number>): void;
-        update(delta: number): void;
-    }
+	class Skeleton {
+		data: SkeletonData;
+		bones: Array<Bone>;
+		slots: Array<Slot>;
+		drawOrder: Array<Slot>;
+		ikConstraints: Array<IkConstraint>;
+		transformConstraints: Array<TransformConstraint>;
+		pathConstraints: Array<PathConstraint>;
+		_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<Bone>): 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<number>): void;
+		update(delta: number): void;
+	}
 }
 declare module spine {
-    export class SkeletonBinary {
-        static AttachmentTypeValues: number[];
-        static TransformModeValues: TransformMode[];
-        static PositionModeValues: PositionMode[];
-        static SpacingModeValues: SpacingMode[];
-        static RotateModeValues: RotateMode[];
-        static BlendModeValues: BlendMode[];
-        static BONE_ROTATE: number;
-        static BONE_TRANSLATE: number;
-        static BONE_SCALE: number;
-        static BONE_SHEAR: number;
-        static SLOT_ATTACHMENT: number;
-        static SLOT_COLOR: number;
-        static SLOT_TWO_COLOR: number;
-        static PATH_POSITION: number;
-        static PATH_SPACING: number;
-        static PATH_MIX: number;
-        static CURVE_LINEAR: number;
-        static CURVE_STEPPED: number;
-        static CURVE_BEZIER: number;
-        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;
-        static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
-        static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
-        static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
-    }
-    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;
-    }
-    export {};
+	export class SkeletonBinary {
+		static AttachmentTypeValues: number[];
+		static TransformModeValues: TransformMode[];
+		static PositionModeValues: PositionMode[];
+		static SpacingModeValues: SpacingMode[];
+		static RotateModeValues: RotateMode[];
+		static BlendModeValues: BlendMode[];
+		static BONE_ROTATE: number;
+		static BONE_TRANSLATE: number;
+		static BONE_TRANSLATEX: number;
+		static BONE_TRANSLATEY: number;
+		static BONE_SCALE: number;
+		static BONE_SCALEX: number;
+		static BONE_SCALEY: number;
+		static BONE_SHEAR: number;
+		static BONE_SHEARX: number;
+		static BONE_SHEARY: number;
+		static SLOT_ATTACHMENT: number;
+		static SLOT_RGBA: number;
+		static SLOT_RGB: number;
+		static SLOT_RGBA2: number;
+		static SLOT_RGB2: number;
+		static SLOT_ALPHA: number;
+		static PATH_POSITION: number;
+		static PATH_SPACING: number;
+		static PATH_MIX: number;
+		static CURVE_LINEAR: number;
+		static CURVE_STEPPED: number;
+		static CURVE_BEZIER: number;
+		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;
+		static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
+		static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
+		static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
+	}
+	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;
+	}
+	export {};
 }
 declare module spine {
-    class SkeletonBounds {
-        minX: number;
-        minY: number;
-        maxX: number;
-        maxY: number;
-        boundingBoxes: BoundingBoxAttachment[];
-        polygons: ArrayLike<number>[];
-        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<number>, x: number, y: number): boolean;
-        intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment;
-        intersectsSegmentPolygon(polygon: ArrayLike<number>, x1: number, y1: number, x2: number, y2: number): boolean;
-        getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike<number>;
-        getWidth(): number;
-        getHeight(): number;
-    }
+	class SkeletonBounds {
+		minX: number;
+		minY: number;
+		maxX: number;
+		maxY: number;
+		boundingBoxes: BoundingBoxAttachment[];
+		polygons: ArrayLike<number>[];
+		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<number>, x: number, y: number): boolean;
+		intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment;
+		intersectsSegmentPolygon(polygon: ArrayLike<number>, x1: number, y1: number, x2: number, y2: number): boolean;
+		getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike<number>;
+		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<number>, verticesLength: number, triangles: ArrayLike<number>, trianglesLength: number, uvs: ArrayLike<number>, light: Color, dark: Color, twoColor: boolean): void;
-        clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array<number>, output: Array<number>): boolean;
-        static makeClockwise(polygon: ArrayLike<number>): void;
-    }
+	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<number>, verticesLength: number, triangles: ArrayLike<number>, trianglesLength: number, uvs: ArrayLike<number>, light: Color, dark: Color, twoColor: boolean): void;
+		clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array<number>, output: Array<number>): boolean;
+		static makeClockwise(polygon: ArrayLike<number>): 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;
-        findPathConstraintIndex(pathConstraintName: string): number;
-    }
+	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;
+		findPathConstraintIndex(pathConstraintName: string): number;
+	}
 }
 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;
-        private readTimeline;
-        private readTimeline2;
-        private readCurve;
-        setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
-        getValue(map: any, prop: string, defaultValue: any): any;
-        static blendModeFromString(str: string): BlendMode;
-        static positionModeFromString(str: string): PositionMode;
-        static spacingModeFromString(str: string): SpacingMode;
-        static rotateModeFromString(str: string): RotateMode;
-        static transformModeFromString(str: string): TransformMode;
-    }
+	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;
+		private readTimeline;
+		private readTimeline2;
+		private readCurve;
+		setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
+		getValue(map: any, prop: string, defaultValue: any): any;
+		static blendModeFromString(str: string): BlendMode;
+		static positionModeFromString(str: string): PositionMode;
+		static spacingModeFromString(str: string): SpacingMode.Length | SpacingMode.Fixed | SpacingMode.Percent;
+		static rotateModeFromString(str: string): RotateMode;
+		static transformModeFromString(str: string): TransformMode;
+	}
 }
 declare module spine {
-    class SkinEntry {
-        slotIndex: number;
-        name: string;
-        attachment: Attachment;
-        constructor(slotIndex: number, name: string, attachment: Attachment);
-    }
-    class Skin {
-        name: string;
-        attachments: Map<Attachment>[];
-        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<SkinEntry>;
-        getAttachmentsForSlot(slotIndex: number, attachments: Array<SkinEntry>): void;
-        clear(): void;
-        attachAll(skeleton: Skeleton, oldSkin: Skin): void;
-    }
+	class SkinEntry {
+		slotIndex: number;
+		name: string;
+		attachment: Attachment;
+		constructor(slotIndex: number, name: string, attachment: Attachment);
+	}
+	class Skin {
+		name: string;
+		attachments: Map<Attachment>[];
+		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<SkinEntry>;
+		getAttachmentsForSlot(slotIndex: number, attachments: Array<SkinEntry>): 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;
-    }
+	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);
-    }
+	class SlotData {
+		index: number;
+		name: string;
+		boneData: BoneData;
+		color: Color;
+		darkColor: Color;
+		attachmentName: string;
+		blendMode: BlendMode;
+		constructor(index: number, name: string, boneData: BoneData);
+	}
 }
 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;
-        static filterFromString(text: string): TextureFilter;
-        static wrapFromString(text: string): TextureWrap;
-    }
-    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;
-        rotate: boolean;
-        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;
-    }
+	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;
+		static filterFromString(text: string): TextureFilter;
+		static wrapFromString(text: string): TextureWrap;
+	}
+	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;
+		rotate: boolean;
+		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, textureLoader: (path: string) => any);
-        private load;
-        findRegion(name: string): TextureAtlasRegion;
-        dispose(): void;
-    }
-    class TextureAtlasPage {
-        name: string;
-        minFilter: TextureFilter;
-        magFilter: TextureFilter;
-        uWrap: TextureWrap;
-        vWrap: TextureWrap;
-        texture: Texture;
-        width: number;
-        height: number;
-    }
-    class TextureAtlasRegion extends TextureRegion {
-        page: TextureAtlasPage;
-        name: string;
-        x: number;
-        y: number;
-        index: number;
-        rotate: boolean;
-        degrees: number;
-        texture: Texture;
-    }
+	class TextureAtlas implements Disposable {
+		pages: TextureAtlasPage[];
+		regions: TextureAtlasRegion[];
+		constructor(atlasText: string, textureLoader: (path: string) => any);
+		private load;
+		findRegion(name: string): TextureAtlasRegion;
+		dispose(): void;
+	}
+	class TextureAtlasPage {
+		name: string;
+		minFilter: TextureFilter;
+		magFilter: TextureFilter;
+		uWrap: TextureWrap;
+		vWrap: TextureWrap;
+		texture: Texture;
+		width: number;
+		height: number;
+	}
+	class TextureAtlasRegion extends TextureRegion {
+		page: TextureAtlasPage;
+		name: string;
+		x: number;
+		y: number;
+		index: number;
+		rotate: boolean;
+		degrees: number;
+		texture: Texture;
+	}
 }
 declare module spine {
-    class TransformConstraint implements Updatable {
-        data: TransformConstraintData;
-        bones: Array<Bone>;
-        target: Bone;
-        rotateMix: number;
-        translateMix: number;
-        scaleMix: number;
-        shearMix: number;
-        temp: Vector2;
-        active: boolean;
-        constructor(data: TransformConstraintData, skeleton: Skeleton);
-        isActive(): boolean;
-        update(): void;
-        applyAbsoluteWorld(): void;
-        applyRelativeWorld(): void;
-        applyAbsoluteLocal(): void;
-        applyRelativeLocal(): void;
-    }
+	class TransformConstraint implements Updatable {
+		data: TransformConstraintData;
+		bones: Array<Bone>;
+		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;
-        rotateMix: number;
-        translateMix: number;
-        scaleMix: number;
-        shearMix: number;
-        offsetRotation: number;
-        offsetX: number;
-        offsetY: number;
-        offsetScaleX: number;
-        offsetScaleY: number;
-        offsetShearY: number;
-        relative: boolean;
-        local: boolean;
-        constructor(name: string);
-    }
+	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<number>): Array<number>;
-        decompose(verticesArray: Array<number>, triangles: Array<number>): Array<Array<number>>;
-        private static isConcave;
-        private static positiveArea;
-        private static winding;
-    }
+	class Triangulator {
+		private convexPolygons;
+		private convexPolygonsIndices;
+		private indicesArray;
+		private isConcaveArray;
+		private triangles;
+		private polygonPool;
+		private polygonIndicesPool;
+		triangulate(verticesArray: ArrayLike<number>): Array<number>;
+		decompose(verticesArray: Array<number>, triangles: Array<number>): Array<Array<number>>;
+		private static isConcave;
+		private static positiveArea;
+		private static winding;
+	}
 }
 declare module spine {
-    interface Updatable {
-        update(): void;
-        isActive(): boolean;
-    }
+	interface Updatable {
+		update(): void;
+		isActive(): boolean;
+	}
 }
 declare module spine {
-    interface Map<T> {
-        [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<boolean>;
-        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;
-    }
-    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<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
-        static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
-        static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
-        static newArray<T>(size: number, defaultValue: T): Array<T>;
-        static newFloatArray(size: number): ArrayLike<number>;
-        static newShortArray(size: number): ArrayLike<number>;
-        static toFloatArray(array: Array<number>): number[] | Float32Array;
-        static toSinglePrecision(value: number): number;
-        static webkit602BugfixHelper(alpha: number, blend: MixBlend): void;
-        static contains<T>(array: Array<T>, element: T, identity?: boolean): boolean;
-    }
-    class DebugUtils {
-        static logBones(skeleton: Skeleton): void;
-    }
-    class Pool<T> {
-        private items;
-        private instantiator;
-        constructor(instantiator: () => T);
-        obtain(): T;
-        free(item: T): void;
-        freeAll(items: ArrayLike<T>): 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<T> {
-        length: number;
-        [n: number]: T;
-    }
-    class WindowedMean {
-        values: Array<number>;
-        addedValues: number;
-        lastValue: number;
-        mean: number;
-        dirty: boolean;
-        constructor(windowSize?: number);
-        hasEnoughData(): boolean;
-        addValue(value: number): void;
-        getMean(): number;
-    }
+	interface Map<T> {
+		[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<boolean>;
+		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;
+	}
+	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<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
+		static arrayFill<T>(array: ArrayLike<T>, fromIndex: number, toIndex: number, value: T): void;
+		static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
+		static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
+		static newArray<T>(size: number, defaultValue: T): Array<T>;
+		static newFloatArray(size: number): ArrayLike<number>;
+		static newShortArray(size: number): ArrayLike<number>;
+		static toFloatArray(array: Array<number>): number[] | Float32Array;
+		static toSinglePrecision(value: number): number;
+		static webkit602BugfixHelper(alpha: number, blend: MixBlend): void;
+		static contains<T>(array: Array<T>, element: T, identity?: boolean): boolean;
+	}
+	class DebugUtils {
+		static logBones(skeleton: Skeleton): void;
+	}
+	class Pool<T> {
+		private items;
+		private instantiator;
+		constructor(instantiator: () => T);
+		obtain(): T;
+		free(item: T): void;
+		freeAll(items: ArrayLike<T>): 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<T> {
+		length: number;
+		[n: number]: T;
+	}
+	class WindowedMean {
+		values: Array<number>;
+		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 VertexEffect {
+		begin(skeleton: Skeleton): void;
+		transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void;
+		end(): void;
+	}
 }
 interface Math {
-    fround(n: number): number;
+	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<number>;
-        vertices: ArrayLike<number>;
-        worldVerticesLength: number;
-        deformAttachment: VertexAttachment;
-        constructor(name: string);
-        computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike<number>, offset: number, stride: number): void;
-        copyTo(attachment: VertexAttachment): void;
-    }
+	abstract class Attachment {
+		name: string;
+		constructor(name: string);
+		abstract copy(): Attachment;
+	}
+	abstract class VertexAttachment extends Attachment {
+		private static nextID;
+		id: number;
+		bones: Array<number>;
+		vertices: ArrayLike<number>;
+		worldVerticesLength: number;
+		deformAttachment: VertexAttachment;
+		constructor(name: string);
+		computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike<number>, 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;
-    }
+	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 {
-    enum AttachmentType {
-        Region = 0,
-        BoundingBox = 1,
-        Mesh = 2,
-        LinkedMesh = 3,
-        Path = 4,
-        Point = 5,
-        Clipping = 6
-    }
+	enum AttachmentType {
+		Region = 0,
+		BoundingBox = 1,
+		Mesh = 2,
+		LinkedMesh = 3,
+		Path = 4,
+		Point = 5,
+		Clipping = 6
+	}
 }
 declare module spine {
-    class BoundingBoxAttachment extends VertexAttachment {
-        color: Color;
-        constructor(name: string);
-        copy(): Attachment;
-    }
+	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;
-    }
+	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<number>;
-        uvs: ArrayLike<number>;
-        triangles: Array<number>;
-        color: Color;
-        width: number;
-        height: number;
-        hullLength: number;
-        edges: Array<number>;
-        private parentMesh;
-        tempColor: Color;
-        constructor(name: string);
-        updateUVs(): void;
-        getParentMesh(): MeshAttachment;
-        setParentMesh(parentMesh: MeshAttachment): void;
-        copy(): Attachment;
-        newLinkedMesh(): MeshAttachment;
-    }
+	class MeshAttachment extends VertexAttachment {
+		region: TextureRegion;
+		path: string;
+		regionUVs: ArrayLike<number>;
+		uvs: ArrayLike<number>;
+		triangles: Array<number>;
+		color: Color;
+		width: number;
+		height: number;
+		hullLength: number;
+		edges: Array<number>;
+		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<number>;
-        closed: boolean;
-        constantSpeed: boolean;
-        color: Color;
-        constructor(name: string);
-        copy(): Attachment;
-    }
+	class PathAttachment extends VertexAttachment {
+		lengths: Array<number>;
+		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;
-    }
+	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 {
-        static OX1: number;
-        static OY1: number;
-        static OX2: number;
-        static OY2: number;
-        static OX3: number;
-        static OY3: number;
-        static OX4: number;
-        static OY4: number;
-        static X1: number;
-        static Y1: number;
-        static C1R: number;
-        static C1G: number;
-        static C1B: number;
-        static C1A: number;
-        static U1: number;
-        static V1: number;
-        static X2: number;
-        static Y2: number;
-        static C2R: number;
-        static C2G: number;
-        static C2B: number;
-        static C2A: number;
-        static U2: number;
-        static V2: number;
-        static X3: number;
-        static Y3: number;
-        static C3R: number;
-        static C3G: number;
-        static C3B: number;
-        static C3A: number;
-        static U3: number;
-        static V3: number;
-        static X4: number;
-        static Y4: number;
-        static C4R: number;
-        static C4G: number;
-        static C4B: number;
-        static C4A: number;
-        static U4: number;
-        static V4: number;
-        x: number;
-        y: number;
-        scaleX: number;
-        scaleY: number;
-        rotation: number;
-        width: number;
-        height: number;
-        color: Color;
-        path: string;
-        rendererObject: any;
-        region: TextureRegion;
-        offset: ArrayLike<number>;
-        uvs: ArrayLike<number>;
-        tempColor: Color;
-        constructor(name: string);
-        updateOffset(): void;
-        setRegion(region: TextureRegion): void;
-        computeWorldVertices(bone: Bone, worldVertices: ArrayLike<number>, offset: number, stride: number): void;
-        copy(): Attachment;
-    }
+	class RegionAttachment extends Attachment {
+		static OX1: number;
+		static OY1: number;
+		static OX2: number;
+		static OY2: number;
+		static OX3: number;
+		static OY3: number;
+		static OX4: number;
+		static OY4: number;
+		static X1: number;
+		static Y1: number;
+		static C1R: number;
+		static C1G: number;
+		static C1B: number;
+		static C1A: number;
+		static U1: number;
+		static V1: number;
+		static X2: number;
+		static Y2: number;
+		static C2R: number;
+		static C2G: number;
+		static C2B: number;
+		static C2A: number;
+		static U2: number;
+		static V2: number;
+		static X3: number;
+		static Y3: number;
+		static C3R: number;
+		static C3G: number;
+		static C3B: number;
+		static C3A: number;
+		static U3: number;
+		static V3: number;
+		static X4: number;
+		static Y4: number;
+		static C4R: number;
+		static C4G: number;
+		static C4B: number;
+		static C4A: number;
+		static U4: number;
+		static V4: number;
+		x: number;
+		y: number;
+		scaleX: number;
+		scaleY: number;
+		rotation: number;
+		width: number;
+		height: number;
+		color: Color;
+		path: string;
+		rendererObject: any;
+		region: TextureRegion;
+		offset: ArrayLike<number>;
+		uvs: ArrayLike<number>;
+		tempColor: Color;
+		constructor(name: string);
+		updateOffset(): void;
+		setRegion(region: TextureRegion): void;
+		computeWorldVertices(bone: Bone, worldVertices: ArrayLike<number>, offset: number, stride: number): void;
+		copy(): Attachment;
+	}
 }
 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;
-    }
+	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;
-    }
+	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);
-    }
+	class AssetManager extends spine.AssetManager {
+		constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, pathPrefix?: string);
+	}
 }
 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;
-        private tmp;
-        constructor(viewportWidth: number, viewportHeight: number);
-        update(): void;
-        screenToWorld(screenCoords: Vector3, screenWidth: number, screenHeight: number): Vector3;
-        setViewport(viewportWidth: number, viewportHeight: number): void;
-    }
+	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;
+		private tmp;
+		constructor(viewportWidth: number, viewportHeight: number);
+		update(): void;
+		screenToWorld(screenCoords: Vector3, screenWidth: number, screenHeight: number): Vector3;
+		setViewport(viewportWidth: number, viewportHeight: number): void;
+	}
 }
 declare module spine.webgl {
-    class GLTexture extends Texture implements Disposable, Restorable {
-        private context;
-        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 | TextureFilter.Linear;
-        setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void;
-        update(useMipMaps: boolean): void;
-        restore(): void;
-        bind(unit?: number): void;
-        unbind(): void;
-        dispose(): void;
-    }
+	class GLTexture extends Texture implements Disposable, Restorable {
+		private context;
+		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 | 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;
-        touchesPool: Pool<Touch>;
-        private listeners;
-        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;
-    }
+	class Input {
+		element: HTMLElement;
+		lastX: number;
+		lastY: number;
+		buttonDown: boolean;
+		currTouch: Touch;
+		touchesPool: Pool<Touch>;
+		private listeners;
+		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 {
-        static FADE_SECONDS: number;
-        private static loaded;
-        private static spinnerImg;
-        private static logoImg;
-        private renderer;
-        private logo;
-        private spinner;
-        private angle;
-        private fadeOut;
-        private timeKeeper;
-        backgroundColor: Color;
-        private tempColor;
-        private firstDraw;
-        private static SPINNER_DATA;
-        private static SPINE_LOGO_DATA;
-        constructor(renderer: SceneRenderer);
-        draw(complete?: boolean): void;
-    }
+	class LoadingScreen {
+		static FADE_SECONDS: number;
+		private static loaded;
+		private static spinnerImg;
+		private static logoImg;
+		private renderer;
+		private logo;
+		private spinner;
+		private angle;
+		private fadeOut;
+		private timeKeeper;
+		backgroundColor: Color;
+		private tempColor;
+		private firstDraw;
+		private static SPINNER_DATA;
+		private static SPINE_LOGO_DATA;
+		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<number>): 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;
-    }
+	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<number>): 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<number>): void;
-        setIndices(indices: Array<number>): 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
-    }
+	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<number>): void;
+		setIndices(indices: Array<number>): 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 srcBlend;
-        private dstBlend;
-        constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean, maxVertices?: number);
-        begin(shader: Shader): void;
-        setBlendMode(srcBlend: number, dstBlend: number): void;
-        draw(texture: GLTexture, vertices: ArrayLike<number>, indices: Array<number>): void;
-        private flush;
-        end(): void;
-        getDrawCalls(): number;
-        dispose(): void;
-    }
+	class PolygonBatcher implements Disposable {
+		private context;
+		private drawCalls;
+		private isDrawing;
+		private mesh;
+		private shader;
+		private lastTexture;
+		private verticesLength;
+		private indicesLength;
+		private srcBlend;
+		private dstBlend;
+		constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean, maxVertices?: number);
+		begin(shader: Shader): void;
+		setBlendMode(srcBlend: number, dstBlend: number): void;
+		draw(texture: GLTexture, vertices: ArrayLike<number>, indices: Array<number>): void;
+		private flush;
+		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;
-        private QUAD;
-        private QUAD_TRIANGLES;
-        private WHITE;
-        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<string>): 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, premultipliedAlpha?: boolean): void;
-        drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color, premultipliedAlpha?: boolean): 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<number>, 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
-    }
+	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;
+		private QUAD;
+		private QUAD_TRIANGLES;
+		private WHITE;
+		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<string>): 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, premultipliedAlpha?: boolean): void;
+		drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color, premultipliedAlpha?: boolean): 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<number>, 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<number>): void;
-        setUniform3x3f(uniform: string, value: ArrayLike<number>): void;
-        setUniform4x4f(uniform: string, value: ArrayLike<number>): 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;
-    }
+	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<number>): void;
+		setUniform3x3f(uniform: string, value: ArrayLike<number>): void;
+		setUniform4x4f(uniform: string, value: ArrayLike<number>): 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 srcBlend;
-        private dstBlend;
-        constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, maxVertices?: number);
-        begin(shader: Shader): void;
-        setBlendMode(srcBlend: 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<number>, 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
-    }
+	class ShapeRenderer implements Disposable {
+		private context;
+		private isDrawing;
+		private mesh;
+		private shapeType;
+		private color;
+		private shader;
+		private vertexIndex;
+		private tmp;
+		private srcBlend;
+		private dstBlend;
+		constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, maxVertices?: number);
+		begin(shader: Shader): void;
+		setBlendMode(srcBlend: 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<number>, 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<string>): void;
-        dispose(): void;
-    }
+	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<string>): 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;
-    }
+	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;
-    }
+	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 | OffscreenCanvas | WebGL2RenderingContext, contextConfig?: any);
-        addRestorable(restorable: Restorable): void;
-        removeRestorable(restorable: Restorable): void;
-    }
-    class WebGLBlendModeConverter {
-        static ZERO: number;
-        static ONE: number;
-        static SRC_COLOR: number;
-        static ONE_MINUS_SRC_COLOR: number;
-        static SRC_ALPHA: number;
-        static ONE_MINUS_SRC_ALPHA: number;
-        static DST_ALPHA: number;
-        static ONE_MINUS_DST_ALPHA: number;
-        static DST_COLOR: number;
-        static getDestGLBlendMode(blendMode: BlendMode): number;
-        static getSourceGLBlendMode(blendMode: BlendMode, premultipliedAlpha?: boolean): number;
-    }
+	class ManagedWebGLRenderingContext {
+		canvas: HTMLCanvasElement | OffscreenCanvas;
+		gl: WebGLRenderingContext;
+		private restorables;
+		constructor(canvasOrContext: HTMLCanvasElement | WebGLRenderingContext | OffscreenCanvas | WebGL2RenderingContext, contextConfig?: any);
+		addRestorable(restorable: Restorable): void;
+		removeRestorable(restorable: Restorable): void;
+	}
+	class WebGLBlendModeConverter {
+		static ZERO: number;
+		static ONE: number;
+		static SRC_COLOR: number;
+		static ONE_MINUS_SRC_COLOR: number;
+		static SRC_ALPHA: number;
+		static ONE_MINUS_SRC_ALPHA: number;
+		static DST_ALPHA: number;
+		static ONE_MINUS_DST_ALPHA: number;
+		static DST_COLOR: number;
+		static getDestGLBlendMode(blendMode: BlendMode): number;
+		static getSourceGLBlendMode(blendMode: BlendMode, premultipliedAlpha?: boolean): number;
+	}
 }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 9578 - 8772
spine-ts/build/spine-webgl.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
spine-ts/build/spine-webgl.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 841 - 140
spine-ts/canvas/example/assets/spineboy-ess.json


BIN
spine-ts/canvas/example/assets/spineboy.png


+ 163 - 49
spine-ts/core/src/SkeletonJson.ts

@@ -89,6 +89,9 @@ module spine {
 					data.transformMode = SkeletonJson.transformModeFromString(this.getValue(boneMap, "transform", "normal"));
 					data.skinRequired = this.getValue(boneMap, "skin", false);
 
+					let color = this.getValue(boneMap, "color", null);
+					if (color) data.color.setFromString(color);
+
 					skeletonData.bones.push(data);
 				}
 			}
@@ -176,10 +179,12 @@ module spine {
 					data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0);
 					data.offsetShearY = this.getValue(constraintMap, "shearY", 0);
 
-					data.rotateMix = this.getValue(constraintMap, "rotateMix", 1);
-					data.translateMix = this.getValue(constraintMap, "translateMix", 1);
-					data.scaleMix = this.getValue(constraintMap, "scaleMix", 1);
-					data.shearMix = this.getValue(constraintMap, "shearMix", 1);
+					data.mixRotate = this.getValue(constraintMap, "mixRotate", 1);
+					data.mixX = this.getValue(constraintMap, "mixX", 1);
+					data.mixY = this.getValue(constraintMap, "mixY", data.mixX);
+					data.mixScaleX = this.getValue(constraintMap, "mixScaleX", 1);
+					data.mixScaleY = this.getValue(constraintMap, "mixScaleY", data.mixScaleX);
+					data.mixShearY = this.getValue(constraintMap, "mixShearY", 1);
 
 					skeletonData.transformConstraints.push(data);
 				}
@@ -212,8 +217,9 @@ module spine {
 					if (data.positionMode == PositionMode.Fixed) data.position *= scale;
 					data.spacing = this.getValue(constraintMap, "spacing", 0);
 					if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed) data.spacing *= scale;
-					data.rotateMix = this.getValue(constraintMap, "rotateMix", 1);
-					data.translateMix = this.getValue(constraintMap, "translateMix", 1);
+					data.mixRotate = this.getValue(constraintMap, "mixRotate", 1);
+					data.mixX = this.getValue(constraintMap, "mixX", 1);
+					data.mixY = this.getValue(constraintMap, "mixY", 1);
 
 					skeletonData.pathConstraints.push(data);
 				}
@@ -316,9 +322,7 @@ module spine {
 			let scale = this.scale;
 			name = this.getValue(map, "name", name);
 
-			let type = this.getValue(map, "type", "region");
-
-			switch (type) {
+			switch (this.getValue(map, "type", "region")) {
 				case "region": {
 					let path = this.getValue(map, "path", name);
 					let region = this.attachmentLoader.newRegionAttachment(skin, name, path);
@@ -470,15 +474,14 @@ module spine {
 						if (!timelineMap) continue;
 						if (timelineName == "attachment") {
 							let timeline = new AttachmentTimeline(timelineMap.length, slotIndex);
-
-							let frame = 0;
-							for (let i = 0; i < timelineMap.length; i++) {
-								let keyMap = timelineMap[i];
-								timeline.setFrame(frame++, this.getValue(keyMap, "time", 0), keyMap.name);
+							for (let frame = 0; frame < timelineMap.length; frame++) {
+								let keyMap = timelineMap[frame];
+								timeline.setFrame(frame, this.getValue(keyMap, "time", 0), keyMap.name);
 							}
 							timelines.push(timeline);
-						} else if (timelineName == "color") {
-							let timeline = new ColorTimeline(timelineMap.length, timelineMap.length << 2, slotIndex);
+
+						} else if (timelineName == "rgba") {
+							let timeline = new RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex);
 							let keyMap = timelineMap[0];
 							let time = this.getValue(keyMap, "time", 0);
 							let color = new Color().setFromString(keyMap.color);
@@ -505,8 +508,37 @@ module spine {
 
 							timelines.push(timeline);
 
-						} else if (timelineName == "twoColor") {
-							let timeline = new TwoColorTimeline(timelineMap.length, timelineMap.length * 7, slotIndex);
+						} else if (timelineName == "rgb") {
+							let timeline = new RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex);
+							let keyMap = timelineMap[0];
+							let time = this.getValue(keyMap, "time", 0);
+							let color = new Color().setFromString(keyMap.color);
+
+							for (let frame = 0, bezier = 0;; frame++) {
+								timeline.setFrame(frame, time, color.r, color.g, color.b);
+								if (timelineMap.length == frame + 1) {
+									break;
+								}
+								let nextMap = timelineMap[frame + 1];
+								let time2 = this.getValue(nextMap, "time", 0);
+								let newColor = new Color().setFromString(nextMap.color);
+								let curve = keyMap.curve;
+								if (curve) {
+									bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);
+									bezier = this.readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);
+									bezier = this.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(this.readTimeline(timelineMap, new AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1));
+						} else if (timelineName == "rgba2") {
+							let timeline = new RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex);
 
 							let keyMap = timelineMap[0];
 							let time = this.getValue(keyMap, "time", 0);
@@ -540,6 +572,40 @@ module spine {
 
 							timelines.push(timeline);
 
+						} else if (timelineName == "rgb2") {
+							let timeline = new RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex);
+
+							let keyMap = timelineMap[0];
+							let time = this.getValue(keyMap, "time", 0);
+							let color = new Color().setFromString(keyMap.light);
+							let color2 = new Color().setFromString(keyMap.dark);
+
+							for (let frame = 0, bezier = 0;; frame++) {
+								timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b);
+								if (timelineMap.length == frame + 1) {
+									break;
+								}
+								let nextMap = timelineMap[frame + 1];
+								let time2 = this.getValue(nextMap, "time", 0);
+								let newColor = new Color().setFromString(nextMap.light);
+								let newColor2 = new Color().setFromString(nextMap.dark);
+								let curve = keyMap.curve;
+								if (curve) {
+									bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);
+									bezier = this.readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);
+									bezier = this.readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);
+									bezier = this.readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1);
+									bezier = this.readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1);
+									bezier = this.readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1);
+								}
+								time = time2;
+								color = newColor;
+								color2 = newColor2;
+								keyMap = nextMap;
+							}
+
+							timelines.push(timeline);
+
 						} else
 							throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")");
 					}
@@ -554,20 +620,37 @@ module spine {
 					if (boneIndex == -1) throw new Error("Bone not found: " + boneName);
 					for (let timelineName in boneMap) {
 						let timelineMap = boneMap[timelineName];
-						let keyMap = timelineMap[0];
-						if (!keyMap) continue;
+						if (timelineMap.length == 0) continue;
 
 						if (timelineName === "rotate") {
 							timelines.push(this.readTimeline(timelineMap, new RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1));
 						} else if (timelineName === "translate") {
 							let timeline = new TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);
 							timelines.push(this.readTimeline2(timelineMap, timeline, "x", "y", 0, scale));
+						} else if (timelineName === "translatex") {
+							let timeline = new TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex);
+							timelines.push(this.readTimeline(timelineMap, timeline, 0, scale));
+						} else if (timelineName === "translatey") {
+							let timeline = new TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex);
+							timelines.push(this.readTimeline(timelineMap, timeline, 0, scale));
 						} else if (timelineName === "scale") {
 							let timeline = new ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);
 							timelines.push(this.readTimeline2(timelineMap, timeline, "x", "y", 1, 1));
+						} else if (timelineName === "scalex") {
+							let timeline = new ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex);
+							timelines.push(this.readTimeline(timelineMap, timeline, 1, 1));
+						} else if (timelineName === "scaley") {
+							let timeline = new ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex);
+							timelines.push(this.readTimeline(timelineMap, timeline, 1, 1));
 						} else if (timelineName === "shear") {
 							let timeline = new ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);
 							timelines.push(this.readTimeline2(timelineMap, timeline, "x", "y", 0, 1));
+						} else if (timelineName === "shearx") {
+							let timeline = new ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex);
+							timelines.push(this.readTimeline(timelineMap, timeline, 0, 1));
+						} else if (timelineName === "sheary") {
+							let timeline = new ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex);
+							timelines.push(this.readTimeline(timelineMap, timeline, 0, 1));
 						} else {
 							throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")");
 						}
@@ -600,7 +683,6 @@ module spine {
 						let time2 = this.getValue(nextMap, "time", 0);
 						let mix2 = this.getValue(nextMap, "mix", 1);
 						let softness2 = this.getValue(nextMap, "softness", 0) * scale;
-
 						let curve = keyMap.curve;
 						if (curve) {
 							bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1);
@@ -619,46 +701,53 @@ module spine {
 			// Transform constraint timelines.
 			if (map.transform) {
 				for (let constraintName in map.transform) {
-					let constraintMap = map.transform[constraintName];
-					let keyMap = constraintMap[0];
+					let timelineMap = map.transform[constraintName];
+					let keyMap = timelineMap[0];
 					if (!keyMap) continue;
 
 					let constraint = skeletonData.findTransformConstraint(constraintName);
 					let constraintIndex = skeletonData.transformConstraints.indexOf(constraint);
-					let timeline = new TransformConstraintTimeline(constraintMap.length, constraintMap.length << 2, constraintIndex);
+					let timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex);
 
 					let time = this.getValue(keyMap, "time", 0);
-					let rotateMix = this.getValue(keyMap, "rotateMix", 1);
-					let translateMix = this.getValue(keyMap, "translateMix", 1);
-					let scaleMix = this.getValue(keyMap, "scaleMix", 1);
-					let shearMix = this.getValue(keyMap, "shearMix", 1);
+					let mixRotate = this.getValue(keyMap, "mixRotate", 1);
+					let mixShearY = this.getValue(keyMap, "mixShearY", 1);
+					let mixX = this.getValue(keyMap, "mixX", 1);
+					let mixY = this.getValue(keyMap, "mixY", mixX);
+					let mixScaleX = this.getValue(keyMap, "mixScaleX", 1);
+					let mixScaleY = this.getValue(keyMap, "mixScaleY", mixScaleX);
 
 					for (let frame = 0, bezier = 0;; frame++) {
-						timeline.setFrame(frame, time, rotateMix, translateMix, scaleMix, shearMix);
-						let nextMap = constraintMap[frame + 1];
+						timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY);
+						let nextMap = timelineMap[frame + 1];
 						if (!nextMap) {
 							break;
 						}
 
 						let time2 = this.getValue(nextMap, "time", 0);
-						let rotateMix2 = this.getValue(nextMap, "rotateMix", 1);
-						let translateMix2 = this.getValue(nextMap, "translateMix", 1);
-						let scaleMix2 = this.getValue(nextMap, "scaleMix", 1);
-						let shearMix2 = this.getValue(nextMap, "shearMix", 1);
-
+						let mixRotate2 = this.getValue(nextMap, "mixRotate", 1);
+						let mixShearY2 = this.getValue(nextMap, "mixShearY", 1);
+						let mixX2 = this.getValue(nextMap, "mixX", 1);
+						let mixY2 = this.getValue(nextMap, "mixY", mixX2);
+						let mixScaleX2 = this.getValue(nextMap, "mixScaleX", 1);
+						let mixScaleY2 = this.getValue(nextMap, "mixScaleY", mixScaleX2);
 						let curve = keyMap.curve;
 						if (curve) {
-							bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, rotateMix, rotateMix2, 1);
-							bezier = this.readCurve(curve, timeline, bezier, frame, 1, time, time2, translateMix, translateMix2, 1);
-							bezier = this.readCurve(curve, timeline, bezier, frame, 2, time, time2, scaleMix, scaleMix2, 1);
-							bezier = this.readCurve(curve, timeline, bezier, frame, 3, time, time2, shearMix, shearMix2, 1);
+							bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);
+							bezier = this.readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);
+							bezier = this.readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);
+							bezier = this.readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1);
+							bezier = this.readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1);
+							bezier = this.readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1);
 						}
 
 						time = time2;
-						rotateMix = rotateMix2;
-						translateMix = translateMix2;
-						scaleMix = scaleMix2;
-						shearMix = shearMix2;
+						mixRotate = mixRotate2;
+						mixX = mixX2;
+						mixY = mixY2;
+						mixScaleX = mixScaleX2;
+						mixScaleY = mixScaleY2;
+						mixScaleX = mixScaleX2;
 						keyMap = nextMap;
 					}
 					timelines.push(timeline);
@@ -674,7 +763,7 @@ module spine {
 					let data = skeletonData.pathConstraints[index];
 					for (let timelineName in constraintMap) {
 						let timelineMap = constraintMap[timelineName];
-						let keyMap = constraintMap[0];
+						let keyMap = timelineMap[0];
 						if (!keyMap) continue;
 
 						if (timelineName === "position") {
@@ -684,8 +773,34 @@ module spine {
 							let timeline = new PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, index);
 							timelines.push(this.readTimeline(timelineMap, timeline, 0, data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed ? scale : 1));
 						} else if (timelineName === "mix") {
-							let timeline = new PathConstraintMixTimeline(timelineMap.size, timelineMap.size << 1, index);
-							timelines.push(this.readTimeline2(timelineMap, timeline, "rotateMix", "translateMix", 1, 1));
+							let timeline = new PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, index);
+							let time = this.getValue(keyMap, "time", 0);
+							let mixRotate = this.getValue(keyMap, "mixRotate", 1);
+							let mixX = this.getValue(keyMap, "mixX", 1);
+							let mixY = this.getValue(keyMap, "mixY", mixX);
+							for (let frame = 0, bezier = 0;; frame++) {
+								timeline.setFrame(frame, time, mixRotate, mixX, mixY);
+								let nextMap = timelineMap[frame + 1];
+								if (!nextMap) {
+									break;
+								}
+								let time2 = this.getValue(nextMap, "time", 0);
+								let mixRotate2 = this.getValue(nextMap, "mixRotate", 1);
+								let mixX2 = this.getValue(nextMap, "mixX", 1);
+								let mixY2 = this.getValue(nextMap, "mixY", mixX2);
+								let curve = keyMap.curve;
+								if (curve != null) {
+									bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);
+									bezier = this.readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);
+									bezier = this.readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);
+								}
+								time = time2;
+								mixRotate = mixRotate2;
+								mixX = mixX2;
+								mixY = mixY2;
+								keyMap = nextMap;
+							}
+							timelines.push(timeline);
 						}
 					}
 				}
@@ -811,9 +926,8 @@ module spine {
 			}
 
 			let duration = 0;
-			for (let i = 0, n = timelines.length; i < n; i++) {
-				duration = Math.max(duration, timelines[i].getDuration());
-			}
+			for (let i = 0, n = timelines.length; i < n; i++)
+				duration = Math.max(duration, (timelines[i]).getDuration());
 
 			if (isNaN(duration)) {
 				throw new Error("Error while parsing animation, duration is NaN");

BIN
spine-ts/player/example/assets/raptor-pma.png


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 27 - 12
spine-ts/player/example/assets/raptor-pro.json


BIN
spine-ts/player/example/assets/spineboy-pma.png


BIN
spine-ts/player/example/assets/spineboy-pro.skel


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 27 - 12
spine-ts/threejs/example/assets/raptor-pro.json


BIN
spine-ts/threejs/example/assets/raptor.png


BIN
spine-ts/webgl/example/assets/coin-pma.png


+ 18 - 18
spine-ts/webgl/example/assets/coin-pro.json

@@ -1,7 +1,7 @@
 {
 "skeleton": {
-	"hash": "upF+oMt2JRY",
-	"spine": "4.0.05-beta",
+	"hash": "svidebPqqeg",
+	"spine": "4.0.34-beta",
 	"x": -152.5,
 	"y": -151,
 	"width": 305,
@@ -63,7 +63,7 @@
 	"animation": {
 		"slots": {
 			"coin-front-shine": {
-				"twoColor": [
+				"rgba2": [
 					{ "light": "7d7d7dff", "dark": "000000" },
 					{ "time": 0.2667, "light": "000000ff", "dark": "7e7e7e" },
 					{ "time": 0.664, "light": "000000ff", "dark": "000000" },
@@ -80,7 +80,7 @@
 				]
 			},
 			"coin-front-texture": {
-				"color": [
+				"rgba": [
 					{ "color": "858585ff" },
 					{ "time": 0.4, "color": "ffffffff" },
 					{
@@ -120,23 +120,23 @@
 				],
 				"scale": [
 					{
-						"curve": [ 0.164, 1, 0.484, 0.09, 0.164, 1, 0.484, 1 ]
+						"curve": [ 0.164, 1, 0.484, 0.091, 0.164, 1, 0.484, 1 ]
 					},
 					{ "time": 0.664, "x": 0, "curve": "stepped" },
 					{
 						"time": 0.6696,
 						"x": 0.003,
-						"curve": [ 0.786, 0.15, 1.167, 1, 0.786, 1, 1.167, 1 ]
+						"curve": [ 0.786, 0.153, 1.167, 1, 0.786, 1, 1.167, 1 ]
 					},
 					{
 						"time": 1.3333,
-						"curve": [ 1.442, 0.99, 1.858, 0.1, 1.442, 1, 1.858, 1 ]
+						"curve": [ 1.442, 0.992, 1.858, 0.098, 1.442, 1, 1.858, 1 ]
 					},
 					{ "time": 1.9982, "x": 0.003, "curve": "stepped" },
 					{
 						"time": 2.0022,
 						"x": 0.003,
-						"curve": [ 2.123, 0.15, 2.501, 1, 2.123, 1, 2.501, 1 ]
+						"curve": [ 2.123, 0.151, 2.501, 1, 2.123, 1, 2.501, 1 ]
 					},
 					{ "time": 2.6667 }
 				]
@@ -157,54 +157,54 @@
 				],
 				"scale": [
 					{
-						"curve": [ 0.085, 1, 0.207, 0.79, 0.085, 1, 0.207, 1 ]
+						"curve": [ 0.085, 1, 0.207, 0.789, 0.085, 1, 0.207, 1 ]
 					},
 					{
 						"time": 0.3333,
 						"x": 0.555,
-						"curve": [ 0.449, 0.35, 0.567, 0.12, 0.449, 1, 0.567, 1 ]
+						"curve": [ 0.449, 0.347, 0.567, 0.122, 0.449, 1, 0.567, 1 ]
 					},
 					{ "time": 0.664, "x": 0.014, "curve": "stepped" },
 					{
 						"time": 0.6696,
 						"x": -0.028,
-						"curve": [ 0.723, -0.13, 0.865, -0.37, 0.723, 1, 0.865, 1 ]
+						"curve": [ 0.723, -0.126, 0.865, -0.367, 0.723, 1, 0.865, 1 ]
 					},
 					{
 						"time": 1,
 						"x": -0.609,
-						"curve": [ 1.053, -0.78, 1.29, -1, 1.053, 1, 1.29, 1 ]
+						"curve": [ 1.053, -0.778, 1.29, -0.997, 1.053, 1, 1.29, 1 ]
 					},
 					{ "time": 1.3318, "x": -1, "curve": "stepped" },
 					{
 						"time": 1.3333,
-						"curve": [ 1.384, 1, 1.439, 0.94, 1.384, 1, 1.439, 1 ]
+						"curve": [ 1.384, 0.997, 1.439, 0.94, 1.384, 1, 1.439, 1 ]
 					},
 					{
 						"time": 1.5,
 						"x": 0.852,
-						"curve": [ 1.564, 0.75, 1.703, 0.51, 1.564, 1, 1.703, 1 ]
+						"curve": [ 1.564, 0.748, 1.703, 0.509, 1.564, 1, 1.703, 1 ]
 					},
 					{
 						"time": 1.8,
 						"x": 0.315,
-						"curve": [ 1.873, 0.13, 1.987, 0.01, 1.873, 1, 1.987, 1 ]
+						"curve": [ 1.873, 0.13, 1.987, 0.015, 1.873, 1, 1.987, 1 ]
 					},
 					{ "time": 1.9982, "x": 0.014, "curve": "stepped" },
 					{
 						"time": 2.0022,
 						"x": -0.028,
-						"curve": [ 2.039, -0.07, 2.123, -0.24, 2.039, 1, 2.123, 1 ]
+						"curve": [ 2.039, -0.072, 2.123, -0.239, 2.039, 1, 2.123, 1 ]
 					},
 					{
 						"time": 2.2018,
 						"x": -0.365,
-						"curve": [ 2.269, -0.51, 2.337, -0.63, 2.269, 1, 2.337, 1 ]
+						"curve": [ 2.269, -0.513, 2.337, -0.635, 2.269, 1, 2.337, 1 ]
 					},
 					{
 						"time": 2.4,
 						"x": -0.731,
-						"curve": [ 2.503, -0.87, 2.596, -0.96, 2.503, 1, 2.596, 1 ]
+						"curve": [ 2.503, -0.871, 2.596, -0.961, 2.503, 1, 2.596, 1 ]
 					},
 					{
 						"time": 2.6592,

BIN
spine-ts/webgl/example/assets/coin-pro.skel


BIN
spine-ts/webgl/example/assets/goblins-pma.png


+ 1 - 1
spine-ts/webgl/example/assets/goblins-pro.json

@@ -1,7 +1,7 @@
 {
 "skeleton": {
 	"hash": "PtTAK+zF95I",
-	"spine": "4.0.05-beta",
+	"spine": "4.0.34-beta",
 	"x": -134.12,
 	"y": -3.28,
 	"width": 266.94,

BIN
spine-ts/webgl/example/assets/goblins-pro.skel


BIN
spine-ts/webgl/example/assets/mix-and-match-pma.png


+ 119 - 91
spine-ts/webgl/example/assets/mix-and-match-pro.json

@@ -1,7 +1,7 @@
 {
 "skeleton": {
-	"hash": "nE4g85mprlE",
-	"spine": "4.0.05-beta",
+	"hash": "EedJfu7UJ/I",
+	"spine": "4.0.34-beta",
 	"x": -240.58,
 	"y": -3.38,
 	"width": 410.36,
@@ -838,30 +838,36 @@
 		"order": 12,
 		"bones": [ "eye-back-iris" ],
 		"target": "eye-back-pupil",
-		"rotateMix": 0,
-		"translateMix": 0.4,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixRotate": 0,
+		"mixX": 0.4,
+		"mixY": 0.4,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "eye-front-pupil",
 		"order": 11,
 		"bones": [ "eye-front-iris" ],
 		"target": "eye-front-pupil",
-		"rotateMix": 0,
-		"translateMix": 0.4,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixRotate": 0,
+		"mixX": 0.4,
+		"mixY": 0.4,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "eye-transform",
 		"order": 7,
 		"bones": [ "features-control" ],
 		"target": "head-control",
-		"rotateMix": 0,
-		"translateMix": 0.2,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixRotate": 0,
+		"mixX": 0.2,
+		"mixY": 0.2,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "hair-side-back",
@@ -871,10 +877,12 @@
 		"rotation": -62.21,
 		"x": 132.47,
 		"y": 46.72,
-		"rotateMix": 0,
-		"translateMix": 0.05,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixRotate": 0,
+		"mixX": 0.05,
+		"mixY": 0.05,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "hair-side-front-control",
@@ -884,10 +892,12 @@
 		"rotation": -80.89,
 		"x": -102.78,
 		"y": 27.17,
-		"rotateMix": 0,
-		"translateMix": 0.15,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixRotate": 0,
+		"mixX": 0.15,
+		"mixY": 0.15,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "hat-control",
@@ -899,10 +909,12 @@
 		"x": -78.91,
 		"y": 123.01,
 		"shearY": -36,
-		"rotateMix": 0,
-		"translateMix": 0.6,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixRotate": 0,
+		"mixX": 0.6,
+		"mixY": 0.6,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "head-control",
@@ -910,10 +922,12 @@
 		"bones": [ "head-back-control" ],
 		"target": "head-control",
 		"x": -88.92,
-		"rotateMix": 0,
-		"translateMix": -1,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixRotate": 0,
+		"mixX": -1,
+		"mixY": -1,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "leg-down-back",
@@ -923,8 +937,9 @@
 		"target": "leg-down-back",
 		"x": 132.85,
 		"y": 58.02,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "leg-down-back-up",
@@ -934,8 +949,9 @@
 		"target": "leg-down-back",
 		"x": 17.25,
 		"y": 41.79,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "leg-down-down",
@@ -945,8 +961,9 @@
 		"target": "leg-down",
 		"x": 147.87,
 		"y": -60.85,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "leg-down-front",
@@ -956,8 +973,9 @@
 		"target": "leg-down",
 		"x": 23.51,
 		"y": -48.52,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "leg-up",
@@ -967,8 +985,9 @@
 		"target": "leg-up",
 		"x": 130.03,
 		"y": -50.13,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "leg-up-back",
@@ -978,8 +997,9 @@
 		"target": "leg-up-back",
 		"x": 129.36,
 		"y": 40.42,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "shoulder-back",
@@ -989,10 +1009,12 @@
 		"rotation": 180,
 		"x": -14.41,
 		"y": -46.12,
-		"rotateMix": 0.18,
-		"translateMix": 0,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixRotate": 0.18,
+		"mixX": 0,
+		"mixY": 0,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "shoulder-front",
@@ -1002,10 +1024,12 @@
 		"rotation": 90,
 		"x": -24.78,
 		"y": 29.54,
-		"rotateMix": 0.186,
-		"translateMix": 0,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixRotate": 0.186,
+		"mixX": 0,
+		"mixY": 0,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "skirt-rotation-back",
@@ -1017,9 +1041,11 @@
 		"x": 148.43,
 		"y": -0.72,
 		"shearY": -36,
-		"translateMix": 0.7,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixX": 0.7,
+		"mixY": 0.7,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "skirt-rotation-front",
@@ -1031,9 +1057,11 @@
 		"x": 141.99,
 		"y": 2.23,
 		"shearY": -36,
-		"translateMix": 0.7,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixX": 0.7,
+		"mixY": 0.7,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	}
 ],
 "path": [
@@ -6017,10 +6045,10 @@
 		},
 		"transform": {
 			"leg-down-back": [
-				{ "rotateMix": 0.269, "translateMix": 0.234, "scaleMix": 0, "shearMix": 0 }
+				{ "mixRotate": 0.269, "mixX": 0.234, "mixScaleX": 0, "mixShearY": 0 }
 			],
 			"leg-down-down": [
-				{ "rotateMix": 0.394, "translateMix": 0.177, "scaleMix": 0, "shearMix": 0 }
+				{ "mixRotate": 0.394, "mixX": 0.177, "mixScaleX": 0, "mixShearY": 0 }
 			]
 		}
 	},
@@ -6917,29 +6945,29 @@
 		},
 		"transform": {
 			"leg-down-back": [
-				{ "scaleMix": 0, "shearMix": 0 },
-				{ "time": 0.1333, "rotateMix": 0, "translateMix": 0.026, "scaleMix": 0, "shearMix": 0, "curve": "stepped" },
-				{ "time": 1.1667, "rotateMix": 0, "translateMix": 0.026, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 1.2667, "rotateMix": 0.1905, "translateMix": 0.2115, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 1.5333, "scaleMix": 0, "shearMix": 0, "curve": "stepped" },
-				{ "time": 2.0667, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 2.1, "rotateMix": 0.217, "translateMix": 0.078, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 2.4667, "scaleMix": 0, "shearMix": 0 }
+				{ "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 0.1333, "mixRotate": 0, "mixX": 0.026, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
+				{ "time": 1.1667, "mixRotate": 0, "mixX": 0.026, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 1.2667, "mixRotate": 0.1905, "mixX": 0.2115, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 1.5333, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
+				{ "time": 2.0667, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 2.1, "mixRotate": 0.217, "mixX": 0.078, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 2.4667, "mixScaleX": 0, "mixShearY": 0 }
 			],
 			"leg-down-down": [
-				{ "scaleMix": 0, "shearMix": 0 },
-				{ "time": 0.0667, "translateMix": 0, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 0.3333, "scaleMix": 0, "shearMix": 0, "curve": "stepped" },
-				{ "time": 1.0667, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 1.3667, "translateMix": 0.774, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 2.7667, "scaleMix": 0, "shearMix": 0 }
+				{ "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 0.0667, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 0.3333, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
+				{ "time": 1.0667, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 1.3667, "mixX": 0.774, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 2.7667, "mixScaleX": 0, "mixShearY": 0 }
 			],
 			"leg-down-front": [
-				{ "scaleMix": 0, "shearMix": 0 },
-				{ "time": 0.2333, "translateMix": 0.609, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 0.3667, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0, "curve": "stepped" },
-				{ "time": 2.1, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 2.5, "scaleMix": 0, "shearMix": 0 }
+				{ "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 0.2333, "mixX": 0.609, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 0.3667, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
+				{ "time": 2.1, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 2.5, "mixScaleX": 0, "mixShearY": 0 }
 			]
 		}
 	},
@@ -7970,30 +7998,30 @@
 		},
 		"transform": {
 			"leg-down-back": [
-				{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0, "curve": "stepped" },
-				{ "time": 0.1, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 0.3333, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 0.5667, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }
+				{ "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
+				{ "time": 0.1, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 0.3333, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 0.5667, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
 			],
 			"leg-down-back-up": [
-				{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0, "curve": "stepped" },
-				{ "time": 0.1, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 0.3333, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 0.5667, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }
+				{ "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
+				{ "time": 0.1, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 0.3333, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 0.5667, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
 			],
 			"leg-down-down": [
-				{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }
+				{ "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
 			],
 			"leg-down-front": [
-				{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }
+				{ "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
 			],
 			"leg-up": [
-				{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }
+				{ "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
 			],
 			"leg-up-back": [
-				{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 0.3333, "scaleMix": 0, "shearMix": 0 },
-				{ "time": 0.5667, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }
+				{ "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 0.3333, "mixScaleX": 0, "mixShearY": 0 },
+				{ "time": 0.5667, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
 			]
 		}
 	}

BIN
spine-ts/webgl/example/assets/mix-and-match-pro.skel


BIN
spine-ts/webgl/example/assets/owl-pma.png


+ 8 - 6
spine-ts/webgl/example/assets/owl-pro.json

@@ -1,7 +1,7 @@
 {
 "skeleton": {
-	"hash": "Px3F6YZd0YY",
-	"spine": "4.0.05-beta",
+	"hash": "HV648sya8jg",
+	"spine": "4.0.34-beta",
 	"x": -644,
 	"y": -274,
 	"width": 1350.84,
@@ -129,10 +129,12 @@
 		"name": "control-back",
 		"bones": [ "control-back" ],
 		"target": "control",
-		"rotateMix": 0,
-		"translateMix": -1,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixRotate": 0,
+		"mixX": -1,
+		"mixY": -1,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	}
 ],
 "skins": [

BIN
spine-ts/webgl/example/assets/owl-pro.skel


BIN
spine-ts/webgl/example/assets/raptor-pma.png


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 27 - 12
spine-ts/webgl/example/assets/raptor-pro.json


BIN
spine-ts/webgl/example/assets/raptor-pro.skel


BIN
spine-ts/webgl/example/assets/spineboy-pma.png


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 54 - 38
spine-ts/webgl/example/assets/spineboy-pro.json


BIN
spine-ts/webgl/example/assets/spineboy-pro.skel


BIN
spine-ts/webgl/example/assets/spineboy.png


BIN
spine-ts/webgl/example/assets/stretchyman-pma.png


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 10 - 8
spine-ts/webgl/example/assets/stretchyman-pro.json


BIN
spine-ts/webgl/example/assets/stretchyman-pro.skel


BIN
spine-ts/webgl/example/assets/tank-pma.png


+ 87 - 75
spine-ts/webgl/example/assets/tank-pro.json

@@ -1,7 +1,7 @@
 {
 "skeleton": {
-	"hash": "C8ZQzuFlwMI",
-	"spine": "4.0.05-beta",
+	"hash": "3P3VgYJ8Bxk",
+	"spine": "4.0.34-beta",
 	"x": -5852.65,
 	"y": -348.5,
 	"width": 7202.61,
@@ -888,9 +888,11 @@
 		"bones": [ "wheel-big2" ],
 		"target": "wheel-big1",
 		"rotation": 65.6,
-		"translateMix": 0,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixX": 0,
+		"mixY": 0,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "wheel-mid1-transform",
@@ -898,9 +900,11 @@
 		"bones": [ "wheel-mid2", "wheel-mid4" ],
 		"target": "wheel-mid1",
 		"rotation": 93,
-		"translateMix": 0,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixX": 0,
+		"mixY": 0,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "wheel-mid2-transform",
@@ -908,9 +912,11 @@
 		"bones": [ "wheel-mid3", "wheel-mid5" ],
 		"target": "wheel-mid1",
 		"rotation": -89,
-		"translateMix": 0,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixX": 0,
+		"mixY": 0,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "wheel-mid3-transform",
@@ -918,9 +924,11 @@
 		"bones": [ "wheel-mid6" ],
 		"target": "wheel-mid1",
 		"rotation": -152.6,
-		"translateMix": 0,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixX": 0,
+		"mixY": 0,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "wheel-small1-transform",
@@ -928,9 +936,11 @@
 		"bones": [ "wheel-small2" ],
 		"target": "wheel-small1",
 		"rotation": 87,
-		"translateMix": 0,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixX": 0,
+		"mixY": 0,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	},
 	{
 		"name": "wheel-small2-transform",
@@ -938,9 +948,11 @@
 		"bones": [ "wheel-small3" ],
 		"target": "wheel-small1",
 		"rotation": 54.9,
-		"translateMix": 0,
-		"scaleMix": 0,
-		"shearMix": 0
+		"mixX": 0,
+		"mixY": 0,
+		"mixScaleX": 0,
+		"mixScaleY": 0,
+		"mixShearY": 0
 	}
 ],
 "path": [
@@ -3424,7 +3436,7 @@
 				]
 			},
 			"smoke-glow": {
-				"color": [
+				"rgba": [
 					{ "time": 0.1333, "color": "ffffffff" },
 					{ "time": 0.1667, "color": "ffbc8af4" },
 					{ "time": 0.2, "color": "fc8e8e90" },
@@ -3436,7 +3448,7 @@
 				]
 			},
 			"smoke-puff1-bg": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
@@ -3447,7 +3459,7 @@
 				]
 			},
 			"smoke-puff1-bg2": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@@ -3458,7 +3470,7 @@
 				]
 			},
 			"smoke-puff1-bg3": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@@ -3469,7 +3481,7 @@
 				]
 			},
 			"smoke-puff1-bg4": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
@@ -3480,7 +3492,7 @@
 				]
 			},
 			"smoke-puff1-bg5": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
@@ -3491,7 +3503,7 @@
 				]
 			},
 			"smoke-puff1-bg6": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@@ -3502,7 +3514,7 @@
 				]
 			},
 			"smoke-puff1-bg7": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@@ -3513,7 +3525,7 @@
 				]
 			},
 			"smoke-puff1-bg8": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4333, "light": "ffd50cff", "dark": "604b3f" },
@@ -3524,7 +3536,7 @@
 				]
 			},
 			"smoke-puff1-bg9": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.5333, "light": "ffd50cff", "dark": "604b3f" },
@@ -3535,7 +3547,7 @@
 				]
 			},
 			"smoke-puff1-bg10": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.5333, "light": "ffd50cff", "dark": "604b3f" },
@@ -3546,7 +3558,7 @@
 				]
 			},
 			"smoke-puff1-bg11": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
 					{ "time": 0.7667, "light": "ffd50c00", "dark": "604b3f" }
@@ -3556,7 +3568,7 @@
 				]
 			},
 			"smoke-puff1-bg12": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
 					{ "time": 0.8667, "light": "ffd50c00", "dark": "604a3f" }
@@ -3566,7 +3578,7 @@
 				]
 			},
 			"smoke-puff1-bg13": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3667, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
 					{ "time": 1, "light": "ffd50c00", "dark": "604b3f" }
@@ -3576,7 +3588,7 @@
 				]
 			},
 			"smoke-puff1-bg14": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.4333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
 					{ "time": 1.0667, "light": "ffd50c00", "dark": "604b3f" }
@@ -3586,7 +3598,7 @@
 				]
 			},
 			"smoke-puff1-bg15": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.4, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
 					{ "time": 0.8333, "light": "ffd50c00", "dark": "604b3f" }
@@ -3596,7 +3608,7 @@
 				]
 			},
 			"smoke-puff1-bg16": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.4, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
 					{ "time": 0.7, "light": "ffd50c00", "dark": "604b3f" }
@@ -3606,7 +3618,7 @@
 				]
 			},
 			"smoke-puff1-bg17": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.2333, "light": "ffd50cff", "dark": "534035" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4, "light": "ffd50cff", "dark": "604b3f" },
@@ -3617,7 +3629,7 @@
 				]
 			},
 			"smoke-puff1-bg18": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.5, "light": "ffd50cff", "dark": "604b3f" },
@@ -3628,7 +3640,7 @@
 				]
 			},
 			"smoke-puff1-bg20": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@@ -3639,7 +3651,7 @@
 				]
 			},
 			"smoke-puff1-bg21": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@@ -3647,7 +3659,7 @@
 				]
 			},
 			"smoke-puff1-bg22": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@@ -3655,7 +3667,7 @@
 				]
 			},
 			"smoke-puff1-bg23": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.5, "light": "ffd50cff", "dark": "604b3f" },
@@ -3666,7 +3678,7 @@
 				]
 			},
 			"smoke-puff1-bg24": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
 					{ "time": 0.7, "light": "ffd50c00", "dark": "604b3f" }
@@ -3676,7 +3688,7 @@
 				]
 			},
 			"smoke-puff1-bg25": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
 					{ "time": 1, "light": "ffd50c00", "dark": "604b3f" }
@@ -3686,7 +3698,7 @@
 				]
 			},
 			"smoke-puff1-bg26": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
 					{ "time": 0.9333, "light": "ffd50c00", "dark": "604b3f" }
@@ -3696,7 +3708,7 @@
 				]
 			},
 			"smoke-puff1-bg27": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
 					{ "time": 0.7333, "light": "ffd50c00", "dark": "604b3f" }
@@ -3706,7 +3718,7 @@
 				]
 			},
 			"smoke-puff1-fg": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.0667, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1333, "light": "fde252ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
@@ -3723,7 +3735,7 @@
 				]
 			},
 			"smoke-puff1-fg2": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3739,7 +3751,7 @@
 				]
 			},
 			"smoke-puff1-fg3": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffe457ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3755,7 +3767,7 @@
 				]
 			},
 			"smoke-puff1-fg4": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "fae781ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3771,7 +3783,7 @@
 				]
 			},
 			"smoke-puff1-fg5": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3787,7 +3799,7 @@
 				]
 			},
 			"smoke-puff1-fg6": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3803,7 +3815,7 @@
 				]
 			},
 			"smoke-puff1-fg7": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3819,7 +3831,7 @@
 				]
 			},
 			"smoke-puff1-fg8": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3835,7 +3847,7 @@
 				]
 			},
 			"smoke-puff1-fg9": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3851,7 +3863,7 @@
 				]
 			},
 			"smoke-puff1-fg10": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "fce35dff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3867,7 +3879,7 @@
 				]
 			},
 			"smoke-puff1-fg11": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3333, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
 					{ "time": 0.7667, "light": "ab764c00", "dark": "ac8d75" }
@@ -3877,7 +3889,7 @@
 				]
 			},
 			"smoke-puff1-fg12": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3667, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
 					{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
 					{ "time": 0.8667, "light": "ac8c7500", "dark": "604a3f" }
@@ -3887,7 +3899,7 @@
 				]
 			},
 			"smoke-puff1-fg13": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3667, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
 					{ "time": 1, "light": "ab764c00", "dark": "ac8d75" }
@@ -3897,7 +3909,7 @@
 				]
 			},
 			"smoke-puff1-fg14": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.4333, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
 					{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
 					{ "time": 1.0667, "light": "ab764c00", "dark": "ac8d75" }
@@ -3907,7 +3919,7 @@
 				]
 			},
 			"smoke-puff1-fg15": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.4, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
 					{ "time": 0.8333, "light": "ab764c00", "dark": "ac8d75" }
@@ -3917,7 +3929,7 @@
 				]
 			},
 			"smoke-puff1-fg16": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.4, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
 					{ "time": 0.7, "light": "ab764c00", "dark": "ac8d75" }
@@ -3927,7 +3939,7 @@
 				]
 			},
 			"smoke-puff1-fg17": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.2333, "light": "e3c05eff", "dark": "ab7e59" },
 					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
 					{ "time": 0.4, "light": "ab764cff", "dark": "ac8d75" },
@@ -3938,7 +3950,7 @@
 				]
 			},
 			"smoke-puff1-fg18": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3952,7 +3964,7 @@
 				]
 			},
 			"smoke-puff1-fg20": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3965,7 +3977,7 @@
 				]
 			},
 			"smoke-puff1-fg21": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3975,7 +3987,7 @@
 				]
 			},
 			"smoke-puff1-fg22": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3985,7 +3997,7 @@
 				]
 			},
 			"smoke-puff1-fg23": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
 					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
 					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@@ -3998,7 +4010,7 @@
 				]
 			},
 			"smoke-puff1-fg24": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
 					{ "time": 0.7, "light": "ab764c00", "dark": "ac8d75" }
@@ -4008,7 +4020,7 @@
 				]
 			},
 			"smoke-puff1-fg25": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
 					{ "time": 1, "light": "ab764c00", "dark": "ac8d75" }
@@ -4018,7 +4030,7 @@
 				]
 			},
 			"smoke-puff1-fg26": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
 					{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
 					{ "time": 0.9333, "light": "ab764c00", "dark": "ac8d75" }
@@ -4028,7 +4040,7 @@
 				]
 			},
 			"smoke-puff1-fg27": {
-				"twoColor": [
+				"rgba2": [
 					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
 					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
 					{ "time": 0.7333, "light": "ab764c00", "dark": "ac8d75" }
@@ -4038,7 +4050,7 @@
 				]
 			},
 			"tank-glow": {
-				"color": [
+				"rgba": [
 					{ "time": 0.0667, "color": "fc994d84" },
 					{
 						"time": 0.1333,
@@ -4864,7 +4876,7 @@
 						"time": 0.1333,
 						"x": 1.185,
 						"y": 0.945,
-						"curve": [ 0.199, 1.18, 0.222, 1.05, 0.199, 0.94, 0.222, 0.58 ]
+						"curve": [ 0.199, 1.182, 0.222, 1.048, 0.199, 0.939, 0.222, 0.579 ]
 					},
 					{ "time": 0.2333, "x": 1.008, "y": 0.471 }
 				]

BIN
spine-ts/webgl/example/assets/tank-pro.skel


BIN
spine-ts/webgl/example/assets/vine-pma.png


+ 17 - 17
spine-ts/webgl/example/assets/vine-pro.json

@@ -1,7 +1,7 @@
 {
 "skeleton": {
-	"hash": "xgpkAVpHzus",
-	"spine": "4.0.05-beta",
+	"hash": "mROo4Xkf3Fs",
+	"spine": "4.0.34-beta",
 	"x": -87.7,
 	"y": -1.71,
 	"width": 227.65,
@@ -176,7 +176,7 @@
 	"grow": {
 		"slots": {
 			"vine": {
-				"color": [
+				"rgba": [
 					{
 						"color": "ffcb73ff",
 						"curve": [ 2.592, 1, 7.775, 1, 2.592, 0.8, 7.775, 0.98, 2.592, 0.45, 7.775, 1, 2.592, 1, 7.775, 1 ]
@@ -191,13 +191,13 @@
 					{
 						"x": 0,
 						"y": 0.183,
-						"curve": [ 0.978, 0.7, 1.776, 1.01, 0.978, 0.71, 1.776, 0.94 ]
+						"curve": [ 0.978, 0.698, 1.776, 1.011, 0.978, 0.708, 1.776, 0.944 ]
 					},
 					{
 						"time": 3.2333,
 						"x": 1.218,
 						"y": 1.1,
-						"curve": [ 7.182, 1.16, 9.04, 1.12, 7.182, 1.18, 9.04, 1.26 ]
+						"curve": [ 7.182, 1.164, 9.04, 1.116, 7.182, 1.184, 9.04, 1.259 ]
 					},
 					{ "time": 11.4333, "y": 1.439 }
 				]
@@ -227,16 +227,16 @@
 				],
 				"scale": [
 					{
-						"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.79 ]
+						"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.792 ]
 					},
 					{
 						"time": 4.3333,
 						"y": 0.792,
-						"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.79, 6.783, 1 ]
+						"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.792, 6.783, 1 ]
 					},
 					{
 						"time": 7.6,
-						"curve": [ 8.558, 1, 9.781, 1, 8.558, 1, 9.781, 0.64 ]
+						"curve": [ 8.558, 1, 9.781, 1, 8.558, 1, 9.781, 0.638 ]
 					},
 					{ "time": 11.4333, "y": 0.636 }
 				]
@@ -261,16 +261,16 @@
 				],
 				"scale": [
 					{
-						"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.79 ]
+						"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.792 ]
 					},
 					{
 						"time": 4.3333,
 						"y": 0.792,
-						"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.79, 6.783, 1 ]
+						"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.792, 6.783, 1 ]
 					},
 					{
 						"time": 7.6,
-						"curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.92 ]
+						"curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.924 ]
 					},
 					{ "time": 11.4333, "y": 0.924 }
 				]
@@ -299,16 +299,16 @@
 				],
 				"scale": [
 					{
-						"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.79 ]
+						"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.792 ]
 					},
 					{
 						"time": 4.3333,
 						"y": 0.792,
-						"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.79, 6.783, 1 ]
+						"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.792, 6.783, 1 ]
 					},
 					{
 						"time": 7.6,
-						"curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.92 ]
+						"curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.924 ]
 					},
 					{ "time": 11.4333, "y": 0.924 }
 				]
@@ -337,16 +337,16 @@
 				],
 				"scale": [
 					{
-						"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.79 ]
+						"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.792 ]
 					},
 					{
 						"time": 4.3333,
 						"y": 0.792,
-						"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.79, 6.783, 1 ]
+						"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.792, 6.783, 1 ]
 					},
 					{
 						"time": 7.6,
-						"curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.92 ]
+						"curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.924 ]
 					},
 					{ "time": 11.4333, "y": 0.924 }
 				]

BIN
spine-ts/webgl/example/assets/vine-pro.skel


+ 2 - 2
spine-ts/webgl/tests/test-binary.html

@@ -50,8 +50,8 @@ function load() {
 		var atlasLoader = new spine.AtlasAttachmentLoader(atlas);
 		var skeletonBinary = new spine.SkeletonBinary(atlasLoader);
 		skeletonBinary.scale = SCALE;
-		var skeletonJson = new spine.SkeletonJson(atlasLoader);
-		skeletonJson.scale = SCALE;
+		// var skeletonJson = new spine.SkeletonJson(atlasLoader);
+		// skeletonJson.scale = SCALE;
 		var skeletonData = null;
 		var skeletonJsonData = null;
 

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels