@esotericsoftware/spine-core 4.0.7 → 4.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/Animation.js +577 -710
  2. package/dist/AnimationState.js +239 -259
  3. package/dist/AnimationStateData.js +15 -17
  4. package/dist/AssetManagerBase.d.ts +3 -0
  5. package/dist/AssetManagerBase.js +168 -147
  6. package/dist/AtlasAttachmentLoader.js +20 -22
  7. package/dist/Bone.js +89 -91
  8. package/dist/BoneData.js +4 -6
  9. package/dist/ConstraintData.js +4 -6
  10. package/dist/Event.js +4 -6
  11. package/dist/EventData.js +4 -6
  12. package/dist/IkConstraint.js +48 -50
  13. package/dist/IkConstraintData.js +12 -31
  14. package/dist/PathConstraint.js +116 -118
  15. package/dist/PathConstraintData.js +9 -28
  16. package/dist/Skeleton.d.ts +0 -4
  17. package/dist/Skeleton.js +190 -213
  18. package/dist/SkeletonBinary.js +352 -363
  19. package/dist/SkeletonBounds.js +79 -81
  20. package/dist/SkeletonClipping.js +86 -88
  21. package/dist/SkeletonData.d.ts +0 -2
  22. package/dist/SkeletonData.js +46 -66
  23. package/dist/SkeletonJson.js +307 -307
  24. package/dist/Skin.js +65 -69
  25. package/dist/Slot.js +16 -18
  26. package/dist/SlotData.js +4 -6
  27. package/dist/Texture.js +14 -39
  28. package/dist/TextureAtlas.js +56 -85
  29. package/dist/TransformConstraint.js +77 -79
  30. package/dist/TransformConstraintData.js +20 -39
  31. package/dist/Triangulator.js +71 -73
  32. package/dist/Updatable.js +1 -1
  33. package/dist/Utils.js +183 -245
  34. package/dist/VertexEffect.js +1 -1
  35. package/dist/attachments/Attachment.js +41 -62
  36. package/dist/attachments/AttachmentLoader.js +1 -1
  37. package/dist/attachments/BoundingBoxAttachment.js +9 -28
  38. package/dist/attachments/ClippingAttachment.js +9 -28
  39. package/dist/attachments/MeshAttachment.js +29 -48
  40. package/dist/attachments/PathAttachment.js +11 -30
  41. package/dist/attachments/PointAttachment.js +16 -35
  42. package/dist/attachments/RegionAttachment.js +82 -101
  43. package/dist/attachments/index.js +1 -1
  44. package/dist/iife/spine-core.js +89 -85
  45. package/dist/iife/spine-core.js.map +2 -2
  46. package/dist/iife/spine-core.min.js +2 -2
  47. package/dist/index.js +1 -1
  48. package/dist/polyfills.js +2 -2
  49. package/dist/vertexeffects/JitterEffect.js +10 -12
  50. package/dist/vertexeffects/SwirlEffect.js +18 -20
  51. package/package.json +1 -1
  52. package/dist/Animation.js.map +0 -1
  53. package/dist/AnimationState.js.map +0 -1
  54. package/dist/AnimationStateData.js.map +0 -1
  55. package/dist/AssetManagerBase.js.map +0 -1
  56. package/dist/AtlasAttachmentLoader.js.map +0 -1
  57. package/dist/Bone.js.map +0 -1
  58. package/dist/BoneData.js.map +0 -1
  59. package/dist/ConstraintData.js.map +0 -1
  60. package/dist/Event.js.map +0 -1
  61. package/dist/EventData.js.map +0 -1
  62. package/dist/IkConstraint.js.map +0 -1
  63. package/dist/IkConstraintData.js.map +0 -1
  64. package/dist/PathConstraint.js.map +0 -1
  65. package/dist/PathConstraintData.js.map +0 -1
  66. package/dist/Skeleton.js.map +0 -1
  67. package/dist/SkeletonBinary.js.map +0 -1
  68. package/dist/SkeletonBounds.js.map +0 -1
  69. package/dist/SkeletonClipping.js.map +0 -1
  70. package/dist/SkeletonData.js.map +0 -1
  71. package/dist/SkeletonJson.js.map +0 -1
  72. package/dist/Skin.js.map +0 -1
  73. package/dist/Slot.js.map +0 -1
  74. package/dist/SlotData.js.map +0 -1
  75. package/dist/Texture.js.map +0 -1
  76. package/dist/TextureAtlas.js.map +0 -1
  77. package/dist/TransformConstraint.js.map +0 -1
  78. package/dist/TransformConstraintData.js.map +0 -1
  79. package/dist/Triangulator.js.map +0 -1
  80. package/dist/Updatable.js.map +0 -1
  81. package/dist/Utils.js.map +0 -1
  82. package/dist/VertexEffect.js.map +0 -1
  83. package/dist/attachments/Attachment.js.map +0 -1
  84. package/dist/attachments/AttachmentLoader.js.map +0 -1
  85. package/dist/attachments/BoundingBoxAttachment.js.map +0 -1
  86. package/dist/attachments/ClippingAttachment.js.map +0 -1
  87. package/dist/attachments/MeshAttachment.js.map +0 -1
  88. package/dist/attachments/PathAttachment.js.map +0 -1
  89. package/dist/attachments/PointAttachment.js.map +0 -1
  90. package/dist/attachments/RegionAttachment.js.map +0 -1
  91. package/dist/attachments/index.js.map +0 -1
  92. package/dist/index.js.map +0 -1
  93. package/dist/polyfills.js.map +0 -1
  94. package/dist/vertexeffects/JitterEffect.js.map +0 -1
  95. package/dist/vertexeffects/SwirlEffect.js.map +0 -1
@@ -83,12 +83,10 @@ export declare class SkeletonData {
83
83
  * multiple times.
84
84
  * @returns May be null. */
85
85
  findBone(boneName: string): BoneData;
86
- findBoneIndex(boneName: string): number;
87
86
  /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it
88
87
  * multiple times.
89
88
  * @returns May be null. */
90
89
  findSlot(slotName: string): SlotData;
91
- findSlotIndex(slotName: string): number;
92
90
  /** Finds a skin by comparing each skin's name. It is more efficient to cache the results of this method than to call it
93
91
  * multiple times.
94
92
  * @returns May be null. */
@@ -30,8 +30,8 @@
30
30
  *
31
31
  * See [Data objects](http://esotericsoftware.com/spine-runtime-architecture#Data-objects) in the Spine Runtimes
32
32
  * Guide. */
33
- var SkeletonData = /** @class */ (function () {
34
- function SkeletonData() {
33
+ export class SkeletonData {
34
+ constructor() {
35
35
  /** The skeleton's bones, sorted parent first. The root bone is always the first bone. */
36
36
  this.bones = new Array(); // Ordered parents first.
37
37
  /** The skeleton's slots. */
@@ -54,134 +54,114 @@ var SkeletonData = /** @class */ (function () {
54
54
  /** Finds a bone by comparing each bone's name. It is more efficient to cache the results of this method than to call it
55
55
  * multiple times.
56
56
  * @returns May be null. */
57
- SkeletonData.prototype.findBone = function (boneName) {
57
+ findBone(boneName) {
58
58
  if (!boneName)
59
59
  throw new Error("boneName cannot be null.");
60
- var bones = this.bones;
61
- for (var i = 0, n = bones.length; i < n; i++) {
62
- var bone = bones[i];
60
+ let bones = this.bones;
61
+ for (let i = 0, n = bones.length; i < n; i++) {
62
+ let bone = bones[i];
63
63
  if (bone.name == boneName)
64
64
  return bone;
65
65
  }
66
66
  return null;
67
- };
68
- SkeletonData.prototype.findBoneIndex = function (boneName) {
69
- if (!boneName)
70
- throw new Error("boneName cannot be null.");
71
- var bones = this.bones;
72
- for (var i = 0, n = bones.length; i < n; i++)
73
- if (bones[i].name == boneName)
74
- return i;
75
- return -1;
76
- };
67
+ }
77
68
  /** Finds a slot by comparing each slot's name. It is more efficient to cache the results of this method than to call it
78
69
  * multiple times.
79
70
  * @returns May be null. */
80
- SkeletonData.prototype.findSlot = function (slotName) {
71
+ findSlot(slotName) {
81
72
  if (!slotName)
82
73
  throw new Error("slotName cannot be null.");
83
- var slots = this.slots;
84
- for (var i = 0, n = slots.length; i < n; i++) {
85
- var slot = slots[i];
74
+ let slots = this.slots;
75
+ for (let i = 0, n = slots.length; i < n; i++) {
76
+ let slot = slots[i];
86
77
  if (slot.name == slotName)
87
78
  return slot;
88
79
  }
89
80
  return null;
90
- };
91
- SkeletonData.prototype.findSlotIndex = function (slotName) {
92
- if (!slotName)
93
- throw new Error("slotName cannot be null.");
94
- var slots = this.slots;
95
- for (var i = 0, n = slots.length; i < n; i++)
96
- if (slots[i].name == slotName)
97
- return i;
98
- return -1;
99
- };
81
+ }
100
82
  /** Finds a skin by comparing each skin's name. It is more efficient to cache the results of this method than to call it
101
83
  * multiple times.
102
84
  * @returns May be null. */
103
- SkeletonData.prototype.findSkin = function (skinName) {
85
+ findSkin(skinName) {
104
86
  if (!skinName)
105
87
  throw new Error("skinName cannot be null.");
106
- var skins = this.skins;
107
- for (var i = 0, n = skins.length; i < n; i++) {
108
- var skin = skins[i];
88
+ let skins = this.skins;
89
+ for (let i = 0, n = skins.length; i < n; i++) {
90
+ let skin = skins[i];
109
91
  if (skin.name == skinName)
110
92
  return skin;
111
93
  }
112
94
  return null;
113
- };
95
+ }
114
96
  /** Finds an event by comparing each events's name. It is more efficient to cache the results of this method than to call it
115
97
  * multiple times.
116
98
  * @returns May be null. */
117
- SkeletonData.prototype.findEvent = function (eventDataName) {
99
+ findEvent(eventDataName) {
118
100
  if (!eventDataName)
119
101
  throw new Error("eventDataName cannot be null.");
120
- var events = this.events;
121
- for (var i = 0, n = events.length; i < n; i++) {
122
- var event_1 = events[i];
123
- if (event_1.name == eventDataName)
124
- return event_1;
102
+ let events = this.events;
103
+ for (let i = 0, n = events.length; i < n; i++) {
104
+ let event = events[i];
105
+ if (event.name == eventDataName)
106
+ return event;
125
107
  }
126
108
  return null;
127
- };
109
+ }
128
110
  /** Finds an animation by comparing each animation's name. It is more efficient to cache the results of this method than to
129
111
  * call it multiple times.
130
112
  * @returns May be null. */
131
- SkeletonData.prototype.findAnimation = function (animationName) {
113
+ findAnimation(animationName) {
132
114
  if (!animationName)
133
115
  throw new Error("animationName cannot be null.");
134
- var animations = this.animations;
135
- for (var i = 0, n = animations.length; i < n; i++) {
136
- var animation = animations[i];
116
+ let animations = this.animations;
117
+ for (let i = 0, n = animations.length; i < n; i++) {
118
+ let animation = animations[i];
137
119
  if (animation.name == animationName)
138
120
  return animation;
139
121
  }
140
122
  return null;
141
- };
123
+ }
142
124
  /** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method
143
125
  * than to call it multiple times.
144
126
  * @return May be null. */
145
- SkeletonData.prototype.findIkConstraint = function (constraintName) {
127
+ findIkConstraint(constraintName) {
146
128
  if (!constraintName)
147
129
  throw new Error("constraintName cannot be null.");
148
- var ikConstraints = this.ikConstraints;
149
- for (var i = 0, n = ikConstraints.length; i < n; i++) {
150
- var constraint = ikConstraints[i];
130
+ let ikConstraints = this.ikConstraints;
131
+ for (let i = 0, n = ikConstraints.length; i < n; i++) {
132
+ let constraint = ikConstraints[i];
151
133
  if (constraint.name == constraintName)
152
134
  return constraint;
153
135
  }
154
136
  return null;
155
- };
137
+ }
156
138
  /** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of
157
139
  * this method than to call it multiple times.
158
140
  * @return May be null. */
159
- SkeletonData.prototype.findTransformConstraint = function (constraintName) {
141
+ findTransformConstraint(constraintName) {
160
142
  if (!constraintName)
161
143
  throw new Error("constraintName cannot be null.");
162
- var transformConstraints = this.transformConstraints;
163
- for (var i = 0, n = transformConstraints.length; i < n; i++) {
164
- var constraint = transformConstraints[i];
144
+ let transformConstraints = this.transformConstraints;
145
+ for (let i = 0, n = transformConstraints.length; i < n; i++) {
146
+ let constraint = transformConstraints[i];
165
147
  if (constraint.name == constraintName)
166
148
  return constraint;
167
149
  }
168
150
  return null;
169
- };
151
+ }
170
152
  /** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method
171
153
  * than to call it multiple times.
172
154
  * @return May be null. */
173
- SkeletonData.prototype.findPathConstraint = function (constraintName) {
155
+ findPathConstraint(constraintName) {
174
156
  if (!constraintName)
175
157
  throw new Error("constraintName cannot be null.");
176
- var pathConstraints = this.pathConstraints;
177
- for (var i = 0, n = pathConstraints.length; i < n; i++) {
178
- var constraint = pathConstraints[i];
158
+ let pathConstraints = this.pathConstraints;
159
+ for (let i = 0, n = pathConstraints.length; i < n; i++) {
160
+ let constraint = pathConstraints[i];
179
161
  if (constraint.name == constraintName)
180
162
  return constraint;
181
163
  }
182
164
  return null;
183
- };
184
- return SkeletonData;
185
- }());
186
- export { SkeletonData };
187
- //# sourceMappingURL=SkeletonData.js.map
165
+ }
166
+ }
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NrZWxldG9uRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFXL0U7OztZQUdZO0FBQ1osTUFBTSxPQUFPLFlBQVk7SUFBekI7UUFLQyx5RkFBeUY7UUFDekYsVUFBSyxHQUFHLElBQUksS0FBSyxFQUFZLENBQUMsQ0FBQyx5QkFBeUI7UUFFeEQsNEJBQTRCO1FBQzVCLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBWSxDQUFDLENBQUMseUJBQXlCO1FBQ3hELFVBQUssR0FBRyxJQUFJLEtBQUssRUFBUSxDQUFDO1FBUTFCLDZCQUE2QjtRQUM3QixXQUFNLEdBQUcsSUFBSSxLQUFLLEVBQWEsQ0FBQztRQUVoQyxpQ0FBaUM7UUFDakMsZUFBVSxHQUFHLElBQUksS0FBSyxFQUFhLENBQUM7UUFFcEMscUNBQXFDO1FBQ3JDLGtCQUFhLEdBQUcsSUFBSSxLQUFLLEVBQW9CLENBQUM7UUFFOUMsNENBQTRDO1FBQzVDLHlCQUFvQixHQUFHLElBQUksS0FBSyxFQUEyQixDQUFDO1FBRTVELHVDQUF1QztRQUN2QyxvQkFBZSxHQUFHLElBQUksS0FBSyxFQUFzQixDQUFDO1FBb0JsRCxlQUFlO1FBQ2Ysc0ZBQXNGO1FBQ3RGLFFBQUcsR0FBRyxDQUFDLENBQUM7SUErR1QsQ0FBQztJQXZHQTs7K0JBRTJCO0lBQzNCLFFBQVEsQ0FBRSxRQUFnQjtRQUN6QixJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUMzRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVB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
@@ -42,8 +42,8 @@ import { Utils, Color } from "./Utils";
42
42
  * See [Spine JSON format](http://esotericsoftware.com/spine-json-format) and
43
43
  * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine
44
44
  * Runtimes Guide. */
45
- var SkeletonJson = /** @class */ (function () {
46
- function SkeletonJson(attachmentLoader) {
45
+ export class SkeletonJson {
46
+ constructor(attachmentLoader) {
47
47
  /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at
48
48
  * runtime than were used in Spine.
49
49
  *
@@ -52,12 +52,12 @@ var SkeletonJson = /** @class */ (function () {
52
52
  this.linkedMeshes = new Array();
53
53
  this.attachmentLoader = attachmentLoader;
54
54
  }
55
- SkeletonJson.prototype.readSkeletonData = function (json) {
56
- var scale = this.scale;
57
- var skeletonData = new SkeletonData();
58
- var root = typeof (json) === "string" ? JSON.parse(json) : json;
55
+ readSkeletonData(json) {
56
+ let scale = this.scale;
57
+ let skeletonData = new SkeletonData();
58
+ let root = typeof (json) === "string" ? JSON.parse(json) : json;
59
59
  // Skeleton
60
- var skeletonMap = root.skeleton;
60
+ let skeletonMap = root.skeleton;
61
61
  if (skeletonMap) {
62
62
  skeletonData.hash = skeletonMap.hash;
63
63
  skeletonData.version = skeletonMap.spine;
@@ -70,13 +70,13 @@ var SkeletonJson = /** @class */ (function () {
70
70
  }
71
71
  // Bones
72
72
  if (root.bones) {
73
- for (var i = 0; i < root.bones.length; i++) {
74
- var boneMap = root.bones[i];
75
- var parent_1 = null;
76
- var parentName = getValue(boneMap, "parent", null);
73
+ for (let i = 0; i < root.bones.length; i++) {
74
+ let boneMap = root.bones[i];
75
+ let parent = null;
76
+ let parentName = getValue(boneMap, "parent", null);
77
77
  if (parentName)
78
- parent_1 = skeletonData.findBone(parentName);
79
- var data = new BoneData(skeletonData.bones.length, boneMap.name, parent_1);
78
+ parent = skeletonData.findBone(parentName);
79
+ let data = new BoneData(skeletonData.bones.length, boneMap.name, parent);
80
80
  data.length = getValue(boneMap, "length", 0) * scale;
81
81
  data.x = getValue(boneMap, "x", 0) * scale;
82
82
  data.y = getValue(boneMap, "y", 0) * scale;
@@ -87,7 +87,7 @@ var SkeletonJson = /** @class */ (function () {
87
87
  data.shearY = getValue(boneMap, "shearY", 0);
88
88
  data.transformMode = Utils.enumValue(TransformMode, getValue(boneMap, "transform", "Normal"));
89
89
  data.skinRequired = getValue(boneMap, "skin", false);
90
- var color = getValue(boneMap, "color", null);
90
+ let color = getValue(boneMap, "color", null);
91
91
  if (color)
92
92
  data.color.setFromString(color);
93
93
  skeletonData.bones.push(data);
@@ -95,14 +95,14 @@ var SkeletonJson = /** @class */ (function () {
95
95
  }
96
96
  // Slots.
97
97
  if (root.slots) {
98
- for (var i = 0; i < root.slots.length; i++) {
99
- var slotMap = root.slots[i];
100
- var boneData = skeletonData.findBone(slotMap.bone);
101
- var data = new SlotData(skeletonData.slots.length, slotMap.name, boneData);
102
- var color = getValue(slotMap, "color", null);
98
+ for (let i = 0; i < root.slots.length; i++) {
99
+ let slotMap = root.slots[i];
100
+ let boneData = skeletonData.findBone(slotMap.bone);
101
+ let data = new SlotData(skeletonData.slots.length, slotMap.name, boneData);
102
+ let color = getValue(slotMap, "color", null);
103
103
  if (color)
104
104
  data.color.setFromString(color);
105
- var dark = getValue(slotMap, "dark", null);
105
+ let dark = getValue(slotMap, "dark", null);
106
106
  if (dark)
107
107
  data.darkColor = Color.fromString(dark);
108
108
  data.attachmentName = getValue(slotMap, "attachment", null);
@@ -112,12 +112,12 @@ var SkeletonJson = /** @class */ (function () {
112
112
  }
113
113
  // IK constraints
114
114
  if (root.ik) {
115
- for (var i = 0; i < root.ik.length; i++) {
116
- var constraintMap = root.ik[i];
117
- var data = new IkConstraintData(constraintMap.name);
115
+ for (let i = 0; i < root.ik.length; i++) {
116
+ let constraintMap = root.ik[i];
117
+ let data = new IkConstraintData(constraintMap.name);
118
118
  data.order = getValue(constraintMap, "order", 0);
119
119
  data.skinRequired = getValue(constraintMap, "skin", false);
120
- for (var ii = 0; ii < constraintMap.bones.length; ii++)
120
+ for (let ii = 0; ii < constraintMap.bones.length; ii++)
121
121
  data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));
122
122
  data.target = skeletonData.findBone(constraintMap.target);
123
123
  data.mix = getValue(constraintMap, "mix", 1);
@@ -131,14 +131,14 @@ var SkeletonJson = /** @class */ (function () {
131
131
  }
132
132
  // Transform constraints.
133
133
  if (root.transform) {
134
- for (var i = 0; i < root.transform.length; i++) {
135
- var constraintMap = root.transform[i];
136
- var data = new TransformConstraintData(constraintMap.name);
134
+ for (let i = 0; i < root.transform.length; i++) {
135
+ let constraintMap = root.transform[i];
136
+ let data = new TransformConstraintData(constraintMap.name);
137
137
  data.order = getValue(constraintMap, "order", 0);
138
138
  data.skinRequired = getValue(constraintMap, "skin", false);
139
- for (var ii = 0; ii < constraintMap.bones.length; ii++)
139
+ for (let ii = 0; ii < constraintMap.bones.length; ii++)
140
140
  data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));
141
- var targetName = constraintMap.target;
141
+ let targetName = constraintMap.target;
142
142
  data.target = skeletonData.findBone(targetName);
143
143
  data.local = getValue(constraintMap, "local", false);
144
144
  data.relative = getValue(constraintMap, "relative", false);
@@ -159,14 +159,14 @@ var SkeletonJson = /** @class */ (function () {
159
159
  }
160
160
  // Path constraints.
161
161
  if (root.path) {
162
- for (var i = 0; i < root.path.length; i++) {
163
- var constraintMap = root.path[i];
164
- var data = new PathConstraintData(constraintMap.name);
162
+ for (let i = 0; i < root.path.length; i++) {
163
+ let constraintMap = root.path[i];
164
+ let data = new PathConstraintData(constraintMap.name);
165
165
  data.order = getValue(constraintMap, "order", 0);
166
166
  data.skinRequired = getValue(constraintMap, "skin", false);
167
- for (var ii = 0; ii < constraintMap.bones.length; ii++)
167
+ for (let ii = 0; ii < constraintMap.bones.length; ii++)
168
168
  data.bones.push(skeletonData.findBone(constraintMap.bones[ii]));
169
- var targetName = constraintMap.target;
169
+ let targetName = constraintMap.target;
170
170
  data.target = skeletonData.findSlot(targetName);
171
171
  data.positionMode = Utils.enumValue(PositionMode, getValue(constraintMap, "positionMode", "Percent"));
172
172
  data.spacingMode = Utils.enumValue(SpacingMode, getValue(constraintMap, "spacingMode", "Length"));
@@ -186,30 +186,30 @@ var SkeletonJson = /** @class */ (function () {
186
186
  }
187
187
  // Skins.
188
188
  if (root.skins) {
189
- for (var i = 0; i < root.skins.length; i++) {
190
- var skinMap = root.skins[i];
191
- var skin = new Skin(skinMap.name);
189
+ for (let i = 0; i < root.skins.length; i++) {
190
+ let skinMap = root.skins[i];
191
+ let skin = new Skin(skinMap.name);
192
192
  if (skinMap.bones) {
193
- for (var ii = 0; ii < skinMap.bones.length; ii++)
193
+ for (let ii = 0; ii < skinMap.bones.length; ii++)
194
194
  skin.bones.push(skeletonData.findBone(skinMap.bones[ii]));
195
195
  }
196
196
  if (skinMap.ik) {
197
- for (var ii = 0; ii < skinMap.ik.length; ii++)
197
+ for (let ii = 0; ii < skinMap.ik.length; ii++)
198
198
  skin.constraints.push(skeletonData.findIkConstraint(skinMap.ik[ii]));
199
199
  }
200
200
  if (skinMap.transform) {
201
- for (var ii = 0; ii < skinMap.transform.length; ii++)
201
+ for (let ii = 0; ii < skinMap.transform.length; ii++)
202
202
  skin.constraints.push(skeletonData.findTransformConstraint(skinMap.transform[ii]));
203
203
  }
204
204
  if (skinMap.path) {
205
- for (var ii = 0; ii < skinMap.path.length; ii++)
205
+ for (let ii = 0; ii < skinMap.path.length; ii++)
206
206
  skin.constraints.push(skeletonData.findPathConstraint(skinMap.path[ii]));
207
207
  }
208
- for (var slotName in skinMap.attachments) {
209
- var slot = skeletonData.findSlot(slotName);
210
- var slotMap = skinMap.attachments[slotName];
211
- for (var entryName in slotMap) {
212
- var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData);
208
+ for (let slotName in skinMap.attachments) {
209
+ let slot = skeletonData.findSlot(slotName);
210
+ let slotMap = skinMap.attachments[slotName];
211
+ for (let entryName in slotMap) {
212
+ let attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData);
213
213
  if (attachment)
214
214
  skin.setAttachment(slot.index, entryName, attachment);
215
215
  }
@@ -220,20 +220,20 @@ var SkeletonJson = /** @class */ (function () {
220
220
  }
221
221
  }
222
222
  // Linked meshes.
223
- for (var i = 0, n = this.linkedMeshes.length; i < n; i++) {
224
- var linkedMesh = this.linkedMeshes[i];
225
- var skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);
226
- var parent_2 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);
227
- linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_2 : linkedMesh.mesh;
228
- linkedMesh.mesh.setParentMesh(parent_2);
223
+ for (let i = 0, n = this.linkedMeshes.length; i < n; i++) {
224
+ let linkedMesh = this.linkedMeshes[i];
225
+ let skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);
226
+ let parent = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);
227
+ linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent : linkedMesh.mesh;
228
+ linkedMesh.mesh.setParentMesh(parent);
229
229
  linkedMesh.mesh.updateUVs();
230
230
  }
231
231
  this.linkedMeshes.length = 0;
232
232
  // Events.
233
233
  if (root.events) {
234
- for (var eventName in root.events) {
235
- var eventMap = root.events[eventName];
236
- var data = new EventData(eventName);
234
+ for (let eventName in root.events) {
235
+ let eventMap = root.events[eventName];
236
+ let data = new EventData(eventName);
237
237
  data.intValue = getValue(eventMap, "int", 0);
238
238
  data.floatValue = getValue(eventMap, "float", 0);
239
239
  data.stringValue = getValue(eventMap, "string", "");
@@ -247,20 +247,20 @@ var SkeletonJson = /** @class */ (function () {
247
247
  }
248
248
  // Animations.
249
249
  if (root.animations) {
250
- for (var animationName in root.animations) {
251
- var animationMap = root.animations[animationName];
250
+ for (let animationName in root.animations) {
251
+ let animationMap = root.animations[animationName];
252
252
  this.readAnimation(animationMap, animationName, skeletonData);
253
253
  }
254
254
  }
255
255
  return skeletonData;
256
- };
257
- SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) {
258
- var scale = this.scale;
256
+ }
257
+ readAttachment(map, skin, slotIndex, name, skeletonData) {
258
+ let scale = this.scale;
259
259
  name = getValue(map, "name", name);
260
260
  switch (getValue(map, "type", "region")) {
261
261
  case "region": {
262
- var path = getValue(map, "path", name);
263
- var region = this.attachmentLoader.newRegionAttachment(skin, name, path);
262
+ let path = getValue(map, "path", name);
263
+ let region = this.attachmentLoader.newRegionAttachment(skin, name, path);
264
264
  if (!region)
265
265
  return null;
266
266
  region.path = path;
@@ -271,40 +271,40 @@ var SkeletonJson = /** @class */ (function () {
271
271
  region.rotation = getValue(map, "rotation", 0);
272
272
  region.width = map.width * scale;
273
273
  region.height = map.height * scale;
274
- var color = getValue(map, "color", null);
274
+ let color = getValue(map, "color", null);
275
275
  if (color)
276
276
  region.color.setFromString(color);
277
277
  region.updateOffset();
278
278
  return region;
279
279
  }
280
280
  case "boundingbox": {
281
- var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);
281
+ let box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);
282
282
  if (!box)
283
283
  return null;
284
284
  this.readVertices(map, box, map.vertexCount << 1);
285
- var color = getValue(map, "color", null);
285
+ let color = getValue(map, "color", null);
286
286
  if (color)
287
287
  box.color.setFromString(color);
288
288
  return box;
289
289
  }
290
290
  case "mesh":
291
291
  case "linkedmesh": {
292
- var path = getValue(map, "path", name);
293
- var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);
292
+ let path = getValue(map, "path", name);
293
+ let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);
294
294
  if (!mesh)
295
295
  return null;
296
296
  mesh.path = path;
297
- var color = getValue(map, "color", null);
297
+ let color = getValue(map, "color", null);
298
298
  if (color)
299
299
  mesh.color.setFromString(color);
300
300
  mesh.width = getValue(map, "width", 0) * scale;
301
301
  mesh.height = getValue(map, "height", 0) * scale;
302
- var parent_3 = getValue(map, "parent", null);
303
- if (parent_3) {
304
- this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, "skin", null), slotIndex, parent_3, getValue(map, "deform", true)));
302
+ let parent = getValue(map, "parent", null);
303
+ if (parent) {
304
+ this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, "skin", null), slotIndex, parent, getValue(map, "deform", true)));
305
305
  return mesh;
306
306
  }
307
- var uvs = map.uvs;
307
+ let uvs = map.uvs;
308
308
  this.readVertices(map, mesh, uvs.length);
309
309
  mesh.triangles = map.triangles;
310
310
  mesh.regionUVs = uvs;
@@ -314,70 +314,70 @@ var SkeletonJson = /** @class */ (function () {
314
314
  return mesh;
315
315
  }
316
316
  case "path": {
317
- var path = this.attachmentLoader.newPathAttachment(skin, name);
317
+ let path = this.attachmentLoader.newPathAttachment(skin, name);
318
318
  if (!path)
319
319
  return null;
320
320
  path.closed = getValue(map, "closed", false);
321
321
  path.constantSpeed = getValue(map, "constantSpeed", true);
322
- var vertexCount = map.vertexCount;
322
+ let vertexCount = map.vertexCount;
323
323
  this.readVertices(map, path, vertexCount << 1);
324
- var lengths = Utils.newArray(vertexCount / 3, 0);
325
- for (var i = 0; i < map.lengths.length; i++)
324
+ let lengths = Utils.newArray(vertexCount / 3, 0);
325
+ for (let i = 0; i < map.lengths.length; i++)
326
326
  lengths[i] = map.lengths[i] * scale;
327
327
  path.lengths = lengths;
328
- var color = getValue(map, "color", null);
328
+ let color = getValue(map, "color", null);
329
329
  if (color)
330
330
  path.color.setFromString(color);
331
331
  return path;
332
332
  }
333
333
  case "point": {
334
- var point = this.attachmentLoader.newPointAttachment(skin, name);
334
+ let point = this.attachmentLoader.newPointAttachment(skin, name);
335
335
  if (!point)
336
336
  return null;
337
337
  point.x = getValue(map, "x", 0) * scale;
338
338
  point.y = getValue(map, "y", 0) * scale;
339
339
  point.rotation = getValue(map, "rotation", 0);
340
- var color = getValue(map, "color", null);
340
+ let color = getValue(map, "color", null);
341
341
  if (color)
342
342
  point.color.setFromString(color);
343
343
  return point;
344
344
  }
345
345
  case "clipping": {
346
- var clip = this.attachmentLoader.newClippingAttachment(skin, name);
346
+ let clip = this.attachmentLoader.newClippingAttachment(skin, name);
347
347
  if (!clip)
348
348
  return null;
349
- var end = getValue(map, "end", null);
349
+ let end = getValue(map, "end", null);
350
350
  if (end)
351
351
  clip.endSlot = skeletonData.findSlot(end);
352
- var vertexCount = map.vertexCount;
352
+ let vertexCount = map.vertexCount;
353
353
  this.readVertices(map, clip, vertexCount << 1);
354
- var color = getValue(map, "color", null);
354
+ let color = getValue(map, "color", null);
355
355
  if (color)
356
356
  clip.color.setFromString(color);
357
357
  return clip;
358
358
  }
359
359
  }
360
360
  return null;
361
- };
362
- SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) {
363
- var scale = this.scale;
361
+ }
362
+ readVertices(map, attachment, verticesLength) {
363
+ let scale = this.scale;
364
364
  attachment.worldVerticesLength = verticesLength;
365
- var vertices = map.vertices;
365
+ let vertices = map.vertices;
366
366
  if (verticesLength == vertices.length) {
367
- var scaledVertices = Utils.toFloatArray(vertices);
367
+ let scaledVertices = Utils.toFloatArray(vertices);
368
368
  if (scale != 1) {
369
- for (var i = 0, n = vertices.length; i < n; i++)
369
+ for (let i = 0, n = vertices.length; i < n; i++)
370
370
  scaledVertices[i] *= scale;
371
371
  }
372
372
  attachment.vertices = scaledVertices;
373
373
  return;
374
374
  }
375
- var weights = new Array();
376
- var bones = new Array();
377
- for (var i = 0, n = vertices.length; i < n;) {
378
- var boneCount = vertices[i++];
375
+ let weights = new Array();
376
+ let bones = new Array();
377
+ for (let i = 0, n = vertices.length; i < n;) {
378
+ let boneCount = vertices[i++];
379
379
  bones.push(boneCount);
380
- for (var nn = i + boneCount * 4; i < nn; i += 4) {
380
+ for (let nn = i + boneCount * 4; i < nn; i += 4) {
381
381
  bones.push(vertices[i]);
382
382
  weights.push(vertices[i + 1] * scale);
383
383
  weights.push(vertices[i + 2] * scale);
@@ -386,42 +386,43 @@ var SkeletonJson = /** @class */ (function () {
386
386
  }
387
387
  attachment.bones = bones;
388
388
  attachment.vertices = Utils.toFloatArray(weights);
389
- };
390
- SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) {
391
- var scale = this.scale;
392
- var timelines = new Array();
389
+ }
390
+ readAnimation(map, name, skeletonData) {
391
+ let scale = this.scale;
392
+ let timelines = new Array();
393
393
  // Slot timelines.
394
394
  if (map.slots) {
395
- for (var slotName in map.slots) {
396
- var slotMap = map.slots[slotName];
397
- var slotIndex = skeletonData.findSlotIndex(slotName);
398
- for (var timelineName in slotMap) {
399
- var timelineMap = slotMap[timelineName];
395
+ for (let slotName in map.slots) {
396
+ let slotMap = map.slots[slotName];
397
+ let slotIndex = skeletonData.findSlot(slotName).index;
398
+ for (let timelineName in slotMap) {
399
+ let timelineMap = slotMap[timelineName];
400
400
  if (!timelineMap)
401
401
  continue;
402
+ let frames = timelineMap.length;
402
403
  if (timelineName == "attachment") {
403
- var timeline = new AttachmentTimeline(timelineMap.length, slotIndex);
404
- for (var frame = 0; frame < timelineMap.length; frame++) {
405
- var keyMap = timelineMap[frame];
404
+ let timeline = new AttachmentTimeline(frames, slotIndex);
405
+ for (let frame = 0; frame < frames; frame++) {
406
+ let keyMap = timelineMap[frame];
406
407
  timeline.setFrame(frame, getValue(keyMap, "time", 0), keyMap.name);
407
408
  }
408
409
  timelines.push(timeline);
409
410
  }
410
411
  else if (timelineName == "rgba") {
411
- var timeline = new RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex);
412
- var keyMap = timelineMap[0];
413
- var time = getValue(keyMap, "time", 0);
414
- var color = Color.fromString(keyMap.color);
415
- for (var frame = 0, bezier = 0;; frame++) {
412
+ let timeline = new RGBATimeline(frames, frames << 2, slotIndex);
413
+ let keyMap = timelineMap[0];
414
+ let time = getValue(keyMap, "time", 0);
415
+ let color = Color.fromString(keyMap.color);
416
+ for (let frame = 0, bezier = 0;; frame++) {
416
417
  timeline.setFrame(frame, time, color.r, color.g, color.b, color.a);
417
- var nextMap = timelineMap[frame + 1];
418
+ let nextMap = timelineMap[frame + 1];
418
419
  if (!nextMap) {
419
420
  timeline.shrink(bezier);
420
421
  break;
421
422
  }
422
- var time2 = getValue(nextMap, "time", 0);
423
- var newColor = Color.fromString(nextMap.color);
424
- var curve = keyMap.curve;
423
+ let time2 = getValue(nextMap, "time", 0);
424
+ let newColor = Color.fromString(nextMap.color);
425
+ let curve = keyMap.curve;
425
426
  if (curve) {
426
427
  bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);
427
428
  bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);
@@ -435,20 +436,20 @@ var SkeletonJson = /** @class */ (function () {
435
436
  timelines.push(timeline);
436
437
  }
437
438
  else if (timelineName == "rgb") {
438
- var timeline = new RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex);
439
- var keyMap = timelineMap[0];
440
- var time = getValue(keyMap, "time", 0);
441
- var color = Color.fromString(keyMap.color);
442
- for (var frame = 0, bezier = 0;; frame++) {
439
+ let timeline = new RGBTimeline(frames, frames * 3, slotIndex);
440
+ let keyMap = timelineMap[0];
441
+ let time = getValue(keyMap, "time", 0);
442
+ let color = Color.fromString(keyMap.color);
443
+ for (let frame = 0, bezier = 0;; frame++) {
443
444
  timeline.setFrame(frame, time, color.r, color.g, color.b);
444
- var nextMap = timelineMap[frame + 1];
445
+ let nextMap = timelineMap[frame + 1];
445
446
  if (!nextMap) {
446
447
  timeline.shrink(bezier);
447
448
  break;
448
449
  }
449
- var time2 = getValue(nextMap, "time", 0);
450
- var newColor = Color.fromString(nextMap.color);
451
- var curve = keyMap.curve;
450
+ let time2 = getValue(nextMap, "time", 0);
451
+ let newColor = Color.fromString(nextMap.color);
452
+ let curve = keyMap.curve;
452
453
  if (curve) {
453
454
  bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);
454
455
  bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);
@@ -461,25 +462,25 @@ var SkeletonJson = /** @class */ (function () {
461
462
  timelines.push(timeline);
462
463
  }
463
464
  else if (timelineName == "alpha") {
464
- timelines.push(readTimeline1(timelineMap, new AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1));
465
+ timelines.push(readTimeline1(timelineMap, new AlphaTimeline(frames, frames, slotIndex), 0, 1));
465
466
  }
466
467
  else if (timelineName == "rgba2") {
467
- var timeline = new RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex);
468
- var keyMap = timelineMap[0];
469
- var time = getValue(keyMap, "time", 0);
470
- var color = Color.fromString(keyMap.light);
471
- var color2 = Color.fromString(keyMap.dark);
472
- for (var frame = 0, bezier = 0;; frame++) {
468
+ let timeline = new RGBA2Timeline(frames, frames * 7, slotIndex);
469
+ let keyMap = timelineMap[0];
470
+ let time = getValue(keyMap, "time", 0);
471
+ let color = Color.fromString(keyMap.light);
472
+ let color2 = Color.fromString(keyMap.dark);
473
+ for (let frame = 0, bezier = 0;; frame++) {
473
474
  timeline.setFrame(frame, time, color.r, color.g, color.b, color.a, color2.r, color2.g, color2.b);
474
- var nextMap = timelineMap[frame + 1];
475
+ let nextMap = timelineMap[frame + 1];
475
476
  if (!nextMap) {
476
477
  timeline.shrink(bezier);
477
478
  break;
478
479
  }
479
- var time2 = getValue(nextMap, "time", 0);
480
- var newColor = Color.fromString(nextMap.light);
481
- var newColor2 = Color.fromString(nextMap.dark);
482
- var curve = keyMap.curve;
480
+ let time2 = getValue(nextMap, "time", 0);
481
+ let newColor = Color.fromString(nextMap.light);
482
+ let newColor2 = Color.fromString(nextMap.dark);
483
+ let curve = keyMap.curve;
483
484
  if (curve) {
484
485
  bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);
485
486
  bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);
@@ -497,22 +498,22 @@ var SkeletonJson = /** @class */ (function () {
497
498
  timelines.push(timeline);
498
499
  }
499
500
  else if (timelineName == "rgb2") {
500
- var timeline = new RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex);
501
- var keyMap = timelineMap[0];
502
- var time = getValue(keyMap, "time", 0);
503
- var color = Color.fromString(keyMap.light);
504
- var color2 = Color.fromString(keyMap.dark);
505
- for (var frame = 0, bezier = 0;; frame++) {
501
+ let timeline = new RGB2Timeline(frames, frames * 6, slotIndex);
502
+ let keyMap = timelineMap[0];
503
+ let time = getValue(keyMap, "time", 0);
504
+ let color = Color.fromString(keyMap.light);
505
+ let color2 = Color.fromString(keyMap.dark);
506
+ for (let frame = 0, bezier = 0;; frame++) {
506
507
  timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b);
507
- var nextMap = timelineMap[frame + 1];
508
+ let nextMap = timelineMap[frame + 1];
508
509
  if (!nextMap) {
509
510
  timeline.shrink(bezier);
510
511
  break;
511
512
  }
512
- var time2 = getValue(nextMap, "time", 0);
513
- var newColor = Color.fromString(nextMap.light);
514
- var newColor2 = Color.fromString(nextMap.dark);
515
- var curve = keyMap.curve;
513
+ let time2 = getValue(nextMap, "time", 0);
514
+ let newColor = Color.fromString(nextMap.light);
515
+ let newColor2 = Color.fromString(nextMap.dark);
516
+ let curve = keyMap.curve;
516
517
  if (curve) {
517
518
  bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);
518
519
  bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);
@@ -533,50 +534,51 @@ var SkeletonJson = /** @class */ (function () {
533
534
  }
534
535
  // Bone timelines.
535
536
  if (map.bones) {
536
- for (var boneName in map.bones) {
537
- var boneMap = map.bones[boneName];
538
- var boneIndex = skeletonData.findBoneIndex(boneName);
539
- for (var timelineName in boneMap) {
540
- var timelineMap = boneMap[timelineName];
541
- if (timelineMap.length == 0)
537
+ for (let boneName in map.bones) {
538
+ let boneMap = map.bones[boneName];
539
+ let boneIndex = skeletonData.findBone(boneName).index;
540
+ for (let timelineName in boneMap) {
541
+ let timelineMap = boneMap[timelineName];
542
+ let frames = timelineMap.length;
543
+ if (frames == 0)
542
544
  continue;
543
545
  if (timelineName === "rotate") {
544
- timelines.push(readTimeline1(timelineMap, new RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1));
546
+ timelines.push(readTimeline1(timelineMap, new RotateTimeline(frames, frames, boneIndex), 0, 1));
545
547
  }
546
548
  else if (timelineName === "translate") {
547
- var timeline = new TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);
549
+ let timeline = new TranslateTimeline(frames, frames << 1, boneIndex);
548
550
  timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, scale));
549
551
  }
550
552
  else if (timelineName === "translatex") {
551
- var timeline = new TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex);
553
+ let timeline = new TranslateXTimeline(frames, frames, boneIndex);
552
554
  timelines.push(readTimeline1(timelineMap, timeline, 0, scale));
553
555
  }
554
556
  else if (timelineName === "translatey") {
555
- var timeline = new TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex);
557
+ let timeline = new TranslateYTimeline(frames, frames, boneIndex);
556
558
  timelines.push(readTimeline1(timelineMap, timeline, 0, scale));
557
559
  }
558
560
  else if (timelineName === "scale") {
559
- var timeline = new ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);
561
+ let timeline = new ScaleTimeline(frames, frames << 1, boneIndex);
560
562
  timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 1, 1));
561
563
  }
562
564
  else if (timelineName === "scalex") {
563
- var timeline = new ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex);
565
+ let timeline = new ScaleXTimeline(frames, frames, boneIndex);
564
566
  timelines.push(readTimeline1(timelineMap, timeline, 1, 1));
565
567
  }
566
568
  else if (timelineName === "scaley") {
567
- var timeline = new ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex);
569
+ let timeline = new ScaleYTimeline(frames, frames, boneIndex);
568
570
  timelines.push(readTimeline1(timelineMap, timeline, 1, 1));
569
571
  }
570
572
  else if (timelineName === "shear") {
571
- var timeline = new ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);
573
+ let timeline = new ShearTimeline(frames, frames << 1, boneIndex);
572
574
  timelines.push(readTimeline2(timelineMap, timeline, "x", "y", 0, 1));
573
575
  }
574
576
  else if (timelineName === "shearx") {
575
- var timeline = new ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex);
577
+ let timeline = new ShearXTimeline(frames, frames, boneIndex);
576
578
  timelines.push(readTimeline1(timelineMap, timeline, 0, 1));
577
579
  }
578
580
  else if (timelineName === "sheary") {
579
- var timeline = new ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex);
581
+ let timeline = new ShearYTimeline(frames, frames, boneIndex);
580
582
  timelines.push(readTimeline1(timelineMap, timeline, 0, 1));
581
583
  }
582
584
  }
@@ -584,28 +586,28 @@ var SkeletonJson = /** @class */ (function () {
584
586
  }
585
587
  // IK constraint timelines.
586
588
  if (map.ik) {
587
- for (var constraintName in map.ik) {
588
- var constraintMap = map.ik[constraintName];
589
- var keyMap = constraintMap[0];
589
+ for (let constraintName in map.ik) {
590
+ let constraintMap = map.ik[constraintName];
591
+ let keyMap = constraintMap[0];
590
592
  if (!keyMap)
591
593
  continue;
592
- var constraint = skeletonData.findIkConstraint(constraintName);
593
- var constraintIndex = skeletonData.ikConstraints.indexOf(constraint);
594
- var timeline = new IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex);
595
- var time = getValue(keyMap, "time", 0);
596
- var mix = getValue(keyMap, "mix", 1);
597
- var softness = getValue(keyMap, "softness", 0) * scale;
598
- for (var frame = 0, bezier = 0;; frame++) {
594
+ let constraint = skeletonData.findIkConstraint(constraintName);
595
+ let constraintIndex = skeletonData.ikConstraints.indexOf(constraint);
596
+ let timeline = new IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex);
597
+ let time = getValue(keyMap, "time", 0);
598
+ let mix = getValue(keyMap, "mix", 1);
599
+ let softness = getValue(keyMap, "softness", 0) * scale;
600
+ for (let frame = 0, bezier = 0;; frame++) {
599
601
  timeline.setFrame(frame, time, mix, softness, getValue(keyMap, "bendPositive", true) ? 1 : -1, getValue(keyMap, "compress", false), getValue(keyMap, "stretch", false));
600
- var nextMap = constraintMap[frame + 1];
602
+ let nextMap = constraintMap[frame + 1];
601
603
  if (!nextMap) {
602
604
  timeline.shrink(bezier);
603
605
  break;
604
606
  }
605
- var time2 = getValue(nextMap, "time", 0);
606
- var mix2 = getValue(nextMap, "mix", 1);
607
- var softness2 = getValue(nextMap, "softness", 0) * scale;
608
- var curve = keyMap.curve;
607
+ let time2 = getValue(nextMap, "time", 0);
608
+ let mix2 = getValue(nextMap, "mix", 1);
609
+ let softness2 = getValue(nextMap, "softness", 0) * scale;
610
+ let curve = keyMap.curve;
609
611
  if (curve) {
610
612
  bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1);
611
613
  bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale);
@@ -620,36 +622,36 @@ var SkeletonJson = /** @class */ (function () {
620
622
  }
621
623
  // Transform constraint timelines.
622
624
  if (map.transform) {
623
- for (var constraintName in map.transform) {
624
- var timelineMap = map.transform[constraintName];
625
- var keyMap = timelineMap[0];
625
+ for (let constraintName in map.transform) {
626
+ let timelineMap = map.transform[constraintName];
627
+ let keyMap = timelineMap[0];
626
628
  if (!keyMap)
627
629
  continue;
628
- var constraint = skeletonData.findTransformConstraint(constraintName);
629
- var constraintIndex = skeletonData.transformConstraints.indexOf(constraint);
630
- var timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex);
631
- var time = getValue(keyMap, "time", 0);
632
- var mixRotate = getValue(keyMap, "mixRotate", 1);
633
- var mixX = getValue(keyMap, "mixX", 1);
634
- var mixY = getValue(keyMap, "mixY", mixX);
635
- var mixScaleX = getValue(keyMap, "mixScaleX", 1);
636
- var mixScaleY = getValue(keyMap, "mixScaleY", mixScaleX);
637
- var mixShearY = getValue(keyMap, "mixShearY", 1);
638
- for (var frame = 0, bezier = 0;; frame++) {
630
+ let constraint = skeletonData.findTransformConstraint(constraintName);
631
+ let constraintIndex = skeletonData.transformConstraints.indexOf(constraint);
632
+ let timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length * 6, constraintIndex);
633
+ let time = getValue(keyMap, "time", 0);
634
+ let mixRotate = getValue(keyMap, "mixRotate", 1);
635
+ let mixX = getValue(keyMap, "mixX", 1);
636
+ let mixY = getValue(keyMap, "mixY", mixX);
637
+ let mixScaleX = getValue(keyMap, "mixScaleX", 1);
638
+ let mixScaleY = getValue(keyMap, "mixScaleY", mixScaleX);
639
+ let mixShearY = getValue(keyMap, "mixShearY", 1);
640
+ for (let frame = 0, bezier = 0;; frame++) {
639
641
  timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY);
640
- var nextMap = timelineMap[frame + 1];
642
+ let nextMap = timelineMap[frame + 1];
641
643
  if (!nextMap) {
642
644
  timeline.shrink(bezier);
643
645
  break;
644
646
  }
645
- var time2 = getValue(nextMap, "time", 0);
646
- var mixRotate2 = getValue(nextMap, "mixRotate", 1);
647
- var mixX2 = getValue(nextMap, "mixX", 1);
648
- var mixY2 = getValue(nextMap, "mixY", mixX2);
649
- var mixScaleX2 = getValue(nextMap, "mixScaleX", 1);
650
- var mixScaleY2 = getValue(nextMap, "mixScaleY", mixScaleX2);
651
- var mixShearY2 = getValue(nextMap, "mixShearY", 1);
652
- var curve = keyMap.curve;
647
+ let time2 = getValue(nextMap, "time", 0);
648
+ let mixRotate2 = getValue(nextMap, "mixRotate", 1);
649
+ let mixX2 = getValue(nextMap, "mixX", 1);
650
+ let mixY2 = getValue(nextMap, "mixY", mixX2);
651
+ let mixScaleX2 = getValue(nextMap, "mixScaleX", 1);
652
+ let mixScaleY2 = getValue(nextMap, "mixScaleY", mixScaleX2);
653
+ let mixShearY2 = getValue(nextMap, "mixShearY", 1);
654
+ let curve = keyMap.curve;
653
655
  if (curve) {
654
656
  bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);
655
657
  bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);
@@ -672,41 +674,42 @@ var SkeletonJson = /** @class */ (function () {
672
674
  }
673
675
  // Path constraint timelines.
674
676
  if (map.path) {
675
- for (var constraintName in map.path) {
676
- var constraintMap = map.path[constraintName];
677
- var constraint = skeletonData.findPathConstraint(constraintName);
678
- var constraintIndex = skeletonData.pathConstraints.indexOf(constraint);
679
- for (var timelineName in constraintMap) {
680
- var timelineMap = constraintMap[timelineName];
681
- var keyMap = timelineMap[0];
677
+ for (let constraintName in map.path) {
678
+ let constraintMap = map.path[constraintName];
679
+ let constraint = skeletonData.findPathConstraint(constraintName);
680
+ let constraintIndex = skeletonData.pathConstraints.indexOf(constraint);
681
+ for (let timelineName in constraintMap) {
682
+ let timelineMap = constraintMap[timelineName];
683
+ let keyMap = timelineMap[0];
682
684
  if (!keyMap)
683
685
  continue;
686
+ let frames = timelineMap.length;
684
687
  if (timelineName === "position") {
685
- var timeline = new PathConstraintPositionTimeline(timelineMap.length, timelineMap.length, constraintIndex);
688
+ let timeline = new PathConstraintPositionTimeline(frames, frames, constraintIndex);
686
689
  timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.positionMode == PositionMode.Fixed ? scale : 1));
687
690
  }
688
691
  else if (timelineName === "spacing") {
689
- var timeline = new PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, constraintIndex);
692
+ let timeline = new PathConstraintSpacingTimeline(frames, frames, constraintIndex);
690
693
  timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.spacingMode == SpacingMode.Length || constraint.spacingMode == SpacingMode.Fixed ? scale : 1));
691
694
  }
692
695
  else if (timelineName === "mix") {
693
- var timeline = new PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, constraintIndex);
694
- var time = getValue(keyMap, "time", 0);
695
- var mixRotate = getValue(keyMap, "mixRotate", 1);
696
- var mixX = getValue(keyMap, "mixX", 1);
697
- var mixY = getValue(keyMap, "mixY", mixX);
698
- for (var frame = 0, bezier = 0;; frame++) {
696
+ let timeline = new PathConstraintMixTimeline(frames, frames * 3, constraintIndex);
697
+ let time = getValue(keyMap, "time", 0);
698
+ let mixRotate = getValue(keyMap, "mixRotate", 1);
699
+ let mixX = getValue(keyMap, "mixX", 1);
700
+ let mixY = getValue(keyMap, "mixY", mixX);
701
+ for (let frame = 0, bezier = 0;; frame++) {
699
702
  timeline.setFrame(frame, time, mixRotate, mixX, mixY);
700
- var nextMap = timelineMap[frame + 1];
703
+ let nextMap = timelineMap[frame + 1];
701
704
  if (!nextMap) {
702
705
  timeline.shrink(bezier);
703
706
  break;
704
707
  }
705
- var time2 = getValue(nextMap, "time", 0);
706
- var mixRotate2 = getValue(nextMap, "mixRotate", 1);
707
- var mixX2 = getValue(nextMap, "mixX", 1);
708
- var mixY2 = getValue(nextMap, "mixY", mixX2);
709
- var curve = keyMap.curve;
708
+ let time2 = getValue(nextMap, "time", 0);
709
+ let mixRotate2 = getValue(nextMap, "mixRotate", 1);
710
+ let mixX2 = getValue(nextMap, "mixX", 1);
711
+ let mixY2 = getValue(nextMap, "mixY", mixX2);
712
+ let curve = keyMap.curve;
710
713
  if (curve) {
711
714
  bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);
712
715
  bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);
@@ -725,49 +728,49 @@ var SkeletonJson = /** @class */ (function () {
725
728
  }
726
729
  // Deform timelines.
727
730
  if (map.deform) {
728
- for (var deformName in map.deform) {
729
- var deformMap = map.deform[deformName];
730
- var skin = skeletonData.findSkin(deformName);
731
- for (var slotName in deformMap) {
732
- var slotMap = deformMap[slotName];
733
- var slotIndex = skeletonData.findSlotIndex(slotName);
734
- for (var timelineName in slotMap) {
735
- var timelineMap = slotMap[timelineName];
736
- var keyMap = timelineMap[0];
731
+ for (let deformName in map.deform) {
732
+ let deformMap = map.deform[deformName];
733
+ let skin = skeletonData.findSkin(deformName);
734
+ for (let slotName in deformMap) {
735
+ let slotMap = deformMap[slotName];
736
+ let slotIndex = skeletonData.findSlot(slotName).index;
737
+ for (let timelineName in slotMap) {
738
+ let timelineMap = slotMap[timelineName];
739
+ let keyMap = timelineMap[0];
737
740
  if (!keyMap)
738
741
  continue;
739
- var attachment = skin.getAttachment(slotIndex, timelineName);
740
- var weighted = attachment.bones;
741
- var vertices = attachment.vertices;
742
- var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;
743
- var timeline = new DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment);
744
- var time = getValue(keyMap, "time", 0);
745
- for (var frame = 0, bezier = 0;; frame++) {
746
- var deform = void 0;
747
- var verticesValue = getValue(keyMap, "vertices", null);
742
+ let attachment = skin.getAttachment(slotIndex, timelineName);
743
+ let weighted = attachment.bones;
744
+ let vertices = attachment.vertices;
745
+ let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;
746
+ let timeline = new DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment);
747
+ let time = getValue(keyMap, "time", 0);
748
+ for (let frame = 0, bezier = 0;; frame++) {
749
+ let deform;
750
+ let verticesValue = getValue(keyMap, "vertices", null);
748
751
  if (!verticesValue)
749
752
  deform = weighted ? Utils.newFloatArray(deformLength) : vertices;
750
753
  else {
751
754
  deform = Utils.newFloatArray(deformLength);
752
- var start = getValue(keyMap, "offset", 0);
755
+ let start = getValue(keyMap, "offset", 0);
753
756
  Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length);
754
757
  if (scale != 1) {
755
- for (var i = start, n = i + verticesValue.length; i < n; i++)
758
+ for (let i = start, n = i + verticesValue.length; i < n; i++)
756
759
  deform[i] *= scale;
757
760
  }
758
761
  if (!weighted) {
759
- for (var i = 0; i < deformLength; i++)
762
+ for (let i = 0; i < deformLength; i++)
760
763
  deform[i] += vertices[i];
761
764
  }
762
765
  }
763
766
  timeline.setFrame(frame, time, deform);
764
- var nextMap = timelineMap[frame + 1];
767
+ let nextMap = timelineMap[frame + 1];
765
768
  if (!nextMap) {
766
769
  timeline.shrink(bezier);
767
770
  break;
768
771
  }
769
- var time2 = getValue(nextMap, "time", 0);
770
- var curve = keyMap.curve;
772
+ let time2 = getValue(nextMap, "time", 0);
773
+ let curve = keyMap.curve;
771
774
  if (curve)
772
775
  bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1);
773
776
  time = time2;
@@ -780,20 +783,20 @@ var SkeletonJson = /** @class */ (function () {
780
783
  }
781
784
  // Draw order timelines.
782
785
  if (map.drawOrder) {
783
- var timeline = new DrawOrderTimeline(map.drawOrder.length);
784
- var slotCount = skeletonData.slots.length;
785
- var frame = 0;
786
- for (var i = 0; i < map.drawOrder.length; i++, frame++) {
787
- var drawOrderMap = map.drawOrder[i];
788
- var drawOrder = null;
789
- var offsets = getValue(drawOrderMap, "offsets", null);
786
+ let timeline = new DrawOrderTimeline(map.drawOrder.length);
787
+ let slotCount = skeletonData.slots.length;
788
+ let frame = 0;
789
+ for (let i = 0; i < map.drawOrder.length; i++, frame++) {
790
+ let drawOrderMap = map.drawOrder[i];
791
+ let drawOrder = null;
792
+ let offsets = getValue(drawOrderMap, "offsets", null);
790
793
  if (offsets) {
791
794
  drawOrder = Utils.newArray(slotCount, -1);
792
- var unchanged = Utils.newArray(slotCount - offsets.length, 0);
793
- var originalIndex = 0, unchangedIndex = 0;
794
- for (var ii = 0; ii < offsets.length; ii++) {
795
- var offsetMap = offsets[ii];
796
- var slotIndex = skeletonData.findSlotIndex(offsetMap.slot);
795
+ let unchanged = Utils.newArray(slotCount - offsets.length, 0);
796
+ let originalIndex = 0, unchangedIndex = 0;
797
+ for (let ii = 0; ii < offsets.length; ii++) {
798
+ let offsetMap = offsets[ii];
799
+ let slotIndex = skeletonData.findSlot(offsetMap.slot).index;
797
800
  // Collect unchanged items.
798
801
  while (originalIndex != slotIndex)
799
802
  unchanged[unchangedIndex++] = originalIndex++;
@@ -804,7 +807,7 @@ var SkeletonJson = /** @class */ (function () {
804
807
  while (originalIndex < slotCount)
805
808
  unchanged[unchangedIndex++] = originalIndex++;
806
809
  // Fill in unchanged items.
807
- for (var ii = slotCount - 1; ii >= 0; ii--)
810
+ for (let ii = slotCount - 1; ii >= 0; ii--)
808
811
  if (drawOrder[ii] == -1)
809
812
  drawOrder[ii] = unchanged[--unchangedIndex];
810
813
  }
@@ -814,55 +817,52 @@ var SkeletonJson = /** @class */ (function () {
814
817
  }
815
818
  // Event timelines.
816
819
  if (map.events) {
817
- var timeline = new EventTimeline(map.events.length);
818
- var frame = 0;
819
- for (var i = 0; i < map.events.length; i++, frame++) {
820
- var eventMap = map.events[i];
821
- var eventData = skeletonData.findEvent(eventMap.name);
822
- var event_1 = new Event(Utils.toSinglePrecision(getValue(eventMap, "time", 0)), eventData);
823
- event_1.intValue = getValue(eventMap, "int", eventData.intValue);
824
- event_1.floatValue = getValue(eventMap, "float", eventData.floatValue);
825
- event_1.stringValue = getValue(eventMap, "string", eventData.stringValue);
826
- if (event_1.data.audioPath) {
827
- event_1.volume = getValue(eventMap, "volume", 1);
828
- event_1.balance = getValue(eventMap, "balance", 0);
820
+ let timeline = new EventTimeline(map.events.length);
821
+ let frame = 0;
822
+ for (let i = 0; i < map.events.length; i++, frame++) {
823
+ let eventMap = map.events[i];
824
+ let eventData = skeletonData.findEvent(eventMap.name);
825
+ let event = new Event(Utils.toSinglePrecision(getValue(eventMap, "time", 0)), eventData);
826
+ event.intValue = getValue(eventMap, "int", eventData.intValue);
827
+ event.floatValue = getValue(eventMap, "float", eventData.floatValue);
828
+ event.stringValue = getValue(eventMap, "string", eventData.stringValue);
829
+ if (event.data.audioPath) {
830
+ event.volume = getValue(eventMap, "volume", 1);
831
+ event.balance = getValue(eventMap, "balance", 0);
829
832
  }
830
- timeline.setFrame(frame, event_1);
833
+ timeline.setFrame(frame, event);
831
834
  }
832
835
  timelines.push(timeline);
833
836
  }
834
- var duration = 0;
835
- for (var i = 0, n = timelines.length; i < n; i++)
837
+ let duration = 0;
838
+ for (let i = 0, n = timelines.length; i < n; i++)
836
839
  duration = Math.max(duration, timelines[i].getDuration());
837
840
  skeletonData.animations.push(new Animation(name, timelines, duration));
838
- };
839
- return SkeletonJson;
840
- }());
841
- export { SkeletonJson };
842
- var LinkedMesh = /** @class */ (function () {
843
- function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) {
841
+ }
842
+ }
843
+ class LinkedMesh {
844
+ constructor(mesh, skin, slotIndex, parent, inheritDeform) {
844
845
  this.mesh = mesh;
845
846
  this.skin = skin;
846
847
  this.slotIndex = slotIndex;
847
848
  this.parent = parent;
848
849
  this.inheritDeform = inheritDeform;
849
850
  }
850
- return LinkedMesh;
851
- }());
851
+ }
852
852
  function readTimeline1(keys, timeline, defaultValue, scale) {
853
- var keyMap = keys[0];
854
- var time = getValue(keyMap, "time", 0);
855
- var value = getValue(keyMap, "value", defaultValue) * scale;
856
- var bezier = 0;
857
- for (var frame = 0;; frame++) {
853
+ let keyMap = keys[0];
854
+ let time = getValue(keyMap, "time", 0);
855
+ let value = getValue(keyMap, "value", defaultValue) * scale;
856
+ let bezier = 0;
857
+ for (let frame = 0;; frame++) {
858
858
  timeline.setFrame(frame, time, value);
859
- var nextMap = keys[frame + 1];
859
+ let nextMap = keys[frame + 1];
860
860
  if (!nextMap) {
861
861
  timeline.shrink(bezier);
862
862
  return timeline;
863
863
  }
864
- var time2 = getValue(nextMap, "time", 0);
865
- var value2 = getValue(nextMap, "value", defaultValue) * scale;
864
+ let time2 = getValue(nextMap, "time", 0);
865
+ let value2 = getValue(nextMap, "value", defaultValue) * scale;
866
866
  if (keyMap.curve)
867
867
  bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale);
868
868
  time = time2;
@@ -871,22 +871,22 @@ function readTimeline1(keys, timeline, defaultValue, scale) {
871
871
  }
872
872
  }
873
873
  function readTimeline2(keys, timeline, name1, name2, defaultValue, scale) {
874
- var keyMap = keys[0];
875
- var time = getValue(keyMap, "time", 0);
876
- var value1 = getValue(keyMap, name1, defaultValue) * scale;
877
- var value2 = getValue(keyMap, name2, defaultValue) * scale;
878
- var bezier = 0;
879
- for (var frame = 0;; frame++) {
874
+ let keyMap = keys[0];
875
+ let time = getValue(keyMap, "time", 0);
876
+ let value1 = getValue(keyMap, name1, defaultValue) * scale;
877
+ let value2 = getValue(keyMap, name2, defaultValue) * scale;
878
+ let bezier = 0;
879
+ for (let frame = 0;; frame++) {
880
880
  timeline.setFrame(frame, time, value1, value2);
881
- var nextMap = keys[frame + 1];
881
+ let nextMap = keys[frame + 1];
882
882
  if (!nextMap) {
883
883
  timeline.shrink(bezier);
884
884
  return timeline;
885
885
  }
886
- var time2 = getValue(nextMap, "time", 0);
887
- var nvalue1 = getValue(nextMap, name1, defaultValue) * scale;
888
- var nvalue2 = getValue(nextMap, name2, defaultValue) * scale;
889
- var curve = keyMap.curve;
886
+ let time2 = getValue(nextMap, "time", 0);
887
+ let nvalue1 = getValue(nextMap, name1, defaultValue) * scale;
888
+ let nvalue2 = getValue(nextMap, name2, defaultValue) * scale;
889
+ let curve = keyMap.curve;
890
890
  if (curve) {
891
891
  bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale);
892
892
  bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale);
@@ -902,15 +902,15 @@ function readCurve(curve, timeline, bezier, frame, value, time1, time2, value1,
902
902
  timeline.setStepped(frame);
903
903
  return bezier;
904
904
  }
905
- var i = value << 2;
906
- var cx1 = curve[i];
907
- var cy1 = curve[i + 1] * scale;
908
- var cx2 = curve[i + 2];
909
- var cy2 = curve[i + 3] * scale;
905
+ let i = value << 2;
906
+ let cx1 = curve[i];
907
+ let cy1 = curve[i + 1] * scale;
908
+ let cx2 = curve[i + 2];
909
+ let cy2 = curve[i + 3] * scale;
910
910
  timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2);
911
911
  return bezier + 1;
912
912
  }
913
913
  function getValue(map, property, defaultValue) {
914
914
  return map[property] !== undefined ? map[property] : defaultValue;
915
915
  }
916
- //# sourceMappingURL=SkeletonJson.js.map
916
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25Kc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NrZWxldG9uSnNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBWSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSwyQkFBMkIsRUFBRSw4QkFBOEIsRUFBRSw2QkFBNkIsRUFBRSx5QkFBeUIsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFpRCxNQUFNLGFBQWEsQ0FBQztBQUlwaUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8s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QUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDM0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUMzRixNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBQzNGLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDM0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUM3RixNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBQzdGLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFF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