@esotericsoftware/spine-canvas 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.
- package/dist/AssetManager.js +5 -25
- package/dist/CanvasTexture.js +8 -26
- package/dist/SkeletonRenderer.js +72 -74
- package/dist/iife/spine-canvas.js +89 -85
- package/dist/iife/spine-canvas.js.map +2 -2
- package/dist/iife/spine-canvas.min.js +2 -2
- package/dist/index.js +1 -1
- package/package.json +3 -3
- package/dist/AssetManager.js.map +0 -1
- package/dist/CanvasTexture.js.map +0 -1
- package/dist/SkeletonRenderer.js.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/AssetManager.js
CHANGED
|
@@ -26,31 +26,11 @@
|
|
|
26
26
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
27
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
*****************************************************************************/
|
|
29
|
-
var __extends = (this && this.__extends) || (function () {
|
|
30
|
-
var extendStatics = function (d, b) {
|
|
31
|
-
extendStatics = Object.setPrototypeOf ||
|
|
32
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
33
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
34
|
-
return extendStatics(d, b);
|
|
35
|
-
};
|
|
36
|
-
return function (d, b) {
|
|
37
|
-
if (typeof b !== "function" && b !== null)
|
|
38
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
39
|
-
extendStatics(d, b);
|
|
40
|
-
function __() { this.constructor = d; }
|
|
41
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
42
|
-
};
|
|
43
|
-
})();
|
|
44
29
|
import { AssetManagerBase } from "@esotericsoftware/spine-core";
|
|
45
30
|
import { CanvasTexture } from "./CanvasTexture";
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (pathPrefix === void 0) { pathPrefix = ""; }
|
|
50
|
-
if (downloader === void 0) { downloader = null; }
|
|
51
|
-
return _super.call(this, function (image) { return new CanvasTexture(image); }, pathPrefix, downloader) || this;
|
|
31
|
+
export class AssetManager extends AssetManagerBase {
|
|
32
|
+
constructor(pathPrefix = "", downloader = null) {
|
|
33
|
+
super((image) => { return new CanvasTexture(image); }, pathPrefix, downloader);
|
|
52
34
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
export { AssetManager };
|
|
56
|
-
//# sourceMappingURL=AssetManager.js.map
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNzZXRNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Fzc2V0TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFjLE1BQU0sOEJBQThCLENBQUE7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE1BQU0sT0FBTyxZQUFhLFNBQVEsZ0JBQWdCO0lBQ2pELFlBQWEsYUFBcUIsRUFBRSxFQUFFLGFBQXlCLElBQUk7UUFDbEUsS0FBSyxDQUFDLENBQUMsS0FBdUIsRUFBRSxFQUFFLEdBQUcsT0FBTyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEcsQ0FBQztDQUNEIn0=
|
package/dist/CanvasTexture.js
CHANGED
|
@@ -26,31 +26,13 @@
|
|
|
26
26
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
27
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
*****************************************************************************/
|
|
29
|
-
var __extends = (this && this.__extends) || (function () {
|
|
30
|
-
var extendStatics = function (d, b) {
|
|
31
|
-
extendStatics = Object.setPrototypeOf ||
|
|
32
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
33
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
34
|
-
return extendStatics(d, b);
|
|
35
|
-
};
|
|
36
|
-
return function (d, b) {
|
|
37
|
-
if (typeof b !== "function" && b !== null)
|
|
38
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
39
|
-
extendStatics(d, b);
|
|
40
|
-
function __() { this.constructor = d; }
|
|
41
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
42
|
-
};
|
|
43
|
-
})();
|
|
44
29
|
import { Texture } from "@esotericsoftware/spine-core";
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return _super.call(this, image) || this;
|
|
30
|
+
export class CanvasTexture extends Texture {
|
|
31
|
+
constructor(image) {
|
|
32
|
+
super(image);
|
|
49
33
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
export { CanvasTexture };
|
|
56
|
-
//# sourceMappingURL=CanvasTexture.js.map
|
|
34
|
+
setFilters(minFilter, magFilter) { }
|
|
35
|
+
setWraps(uWrap, vWrap) { }
|
|
36
|
+
dispose() { }
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzVGV4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DYW52YXNUZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxPQUFPLEVBQUUsT0FBTyxFQUE4QixNQUFNLDhCQUE4QixDQUFDO0FBRW5GLE1BQU0sT0FBTyxhQUFjLFNBQVEsT0FBTztJQUN6QyxZQUFhLEtBQXVCO1FBQ25DLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVLENBQUUsU0FBd0IsRUFBRSxTQUF3QixJQUFJLENBQUM7SUFDbkUsUUFBUSxDQUFFLEtBQWtCLEVBQUUsS0FBa0IsSUFBSSxDQUFDO0lBQ3JELE9BQU8sS0FBTSxDQUFDO0NBQ2QifQ==
|
package/dist/SkeletonRenderer.js
CHANGED
|
@@ -27,50 +27,50 @@
|
|
|
27
27
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
*****************************************************************************/
|
|
29
29
|
import { Utils, Color, RegionAttachment, MeshAttachment } from "@esotericsoftware/spine-core";
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
export class SkeletonRenderer {
|
|
31
|
+
constructor(context) {
|
|
32
32
|
this.triangleRendering = false;
|
|
33
33
|
this.debugRendering = false;
|
|
34
34
|
this.vertices = Utils.newFloatArray(8 * 1024);
|
|
35
35
|
this.tempColor = new Color();
|
|
36
36
|
this.ctx = context;
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
draw(skeleton) {
|
|
39
39
|
if (this.triangleRendering)
|
|
40
40
|
this.drawTriangles(skeleton);
|
|
41
41
|
else
|
|
42
42
|
this.drawImages(skeleton);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
}
|
|
44
|
+
drawImages(skeleton) {
|
|
45
|
+
let ctx = this.ctx;
|
|
46
|
+
let color = this.tempColor;
|
|
47
|
+
let skeletonColor = skeleton.color;
|
|
48
|
+
let drawOrder = skeleton.drawOrder;
|
|
49
49
|
if (this.debugRendering)
|
|
50
50
|
ctx.strokeStyle = "green";
|
|
51
|
-
for (
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
for (let i = 0, n = drawOrder.length; i < n; i++) {
|
|
52
|
+
let slot = drawOrder[i];
|
|
53
|
+
let bone = slot.bone;
|
|
54
54
|
if (!bone.active)
|
|
55
55
|
continue;
|
|
56
|
-
|
|
56
|
+
let attachment = slot.getAttachment();
|
|
57
57
|
if (!(attachment instanceof RegionAttachment))
|
|
58
58
|
continue;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
let region = attachment.region;
|
|
60
|
+
let image = region.page.texture.getImage();
|
|
61
|
+
let slotColor = slot.color;
|
|
62
|
+
let regionColor = attachment.color;
|
|
63
63
|
color.set(skeletonColor.r * slotColor.r * regionColor.r, skeletonColor.g * slotColor.g * regionColor.g, skeletonColor.b * slotColor.b * regionColor.b, skeletonColor.a * slotColor.a * regionColor.a);
|
|
64
64
|
ctx.save();
|
|
65
65
|
ctx.transform(bone.a, bone.c, bone.b, bone.d, bone.worldX, bone.worldY);
|
|
66
66
|
ctx.translate(attachment.offset[0], attachment.offset[1]);
|
|
67
67
|
ctx.rotate(attachment.rotation * Math.PI / 180);
|
|
68
|
-
|
|
68
|
+
let atlasScale = attachment.width / region.originalWidth;
|
|
69
69
|
ctx.scale(atlasScale * attachment.scaleX, atlasScale * attachment.scaleY);
|
|
70
|
-
|
|
70
|
+
let w = region.width, h = region.height;
|
|
71
71
|
ctx.translate(w / 2, h / 2);
|
|
72
72
|
if (attachment.region.degrees == 90) {
|
|
73
|
-
|
|
73
|
+
let t = w;
|
|
74
74
|
w = h;
|
|
75
75
|
h = t;
|
|
76
76
|
ctx.rotate(-Math.PI / 2);
|
|
@@ -89,29 +89,29 @@ var SkeletonRenderer = /** @class */ (function () {
|
|
|
89
89
|
ctx.strokeRect(0, 0, w, h);
|
|
90
90
|
ctx.restore();
|
|
91
91
|
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
for (
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
92
|
+
}
|
|
93
|
+
drawTriangles(skeleton) {
|
|
94
|
+
let ctx = this.ctx;
|
|
95
|
+
let color = this.tempColor;
|
|
96
|
+
let skeletonColor = skeleton.color;
|
|
97
|
+
let drawOrder = skeleton.drawOrder;
|
|
98
|
+
let blendMode = null;
|
|
99
|
+
let vertices = this.vertices;
|
|
100
|
+
let triangles = null;
|
|
101
|
+
for (let i = 0, n = drawOrder.length; i < n; i++) {
|
|
102
|
+
let slot = drawOrder[i];
|
|
103
|
+
let attachment = slot.getAttachment();
|
|
104
|
+
let texture;
|
|
105
|
+
let region;
|
|
106
106
|
if (attachment instanceof RegionAttachment) {
|
|
107
|
-
|
|
107
|
+
let regionAttachment = attachment;
|
|
108
108
|
vertices = this.computeRegionVertices(slot, regionAttachment, false);
|
|
109
109
|
triangles = SkeletonRenderer.QUAD_TRIANGLES;
|
|
110
110
|
region = regionAttachment.region;
|
|
111
111
|
texture = region.page.texture.getImage();
|
|
112
112
|
}
|
|
113
113
|
else if (attachment instanceof MeshAttachment) {
|
|
114
|
-
|
|
114
|
+
let mesh = attachment;
|
|
115
115
|
vertices = this.computeMeshVertices(slot, mesh, false);
|
|
116
116
|
triangles = mesh.triangles;
|
|
117
117
|
texture = mesh.region.renderObject.page.texture.getImage();
|
|
@@ -121,8 +121,8 @@ var SkeletonRenderer = /** @class */ (function () {
|
|
|
121
121
|
if (texture) {
|
|
122
122
|
if (slot.data.blendMode != blendMode)
|
|
123
123
|
blendMode = slot.data.blendMode;
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
let slotColor = slot.color;
|
|
125
|
+
let attachmentColor = attachment.color;
|
|
126
126
|
color.set(skeletonColor.r * slotColor.r * attachmentColor.r, skeletonColor.g * slotColor.g * attachmentColor.g, skeletonColor.b * slotColor.b * attachmentColor.b, skeletonColor.a * slotColor.a * attachmentColor.a);
|
|
127
127
|
if (color.r != 1 || color.g != 1 || color.b != 1 || color.a != 1) {
|
|
128
128
|
ctx.globalAlpha = color.a;
|
|
@@ -132,10 +132,10 @@ var SkeletonRenderer = /** @class */ (function () {
|
|
|
132
132
|
// ctx.fillRect(0, 0, w, h);
|
|
133
133
|
}
|
|
134
134
|
for (var j = 0; j < triangles.length; j += 3) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
135
|
+
let t1 = triangles[j] * 8, t2 = triangles[j + 1] * 8, t3 = triangles[j + 2] * 8;
|
|
136
|
+
let x0 = vertices[t1], y0 = vertices[t1 + 1], u0 = vertices[t1 + 6], v0 = vertices[t1 + 7];
|
|
137
|
+
let x1 = vertices[t2], y1 = vertices[t2 + 1], u1 = vertices[t2 + 6], v1 = vertices[t2 + 7];
|
|
138
|
+
let x2 = vertices[t3], y2 = vertices[t3 + 1], u2 = vertices[t3 + 6], v2 = vertices[t3 + 7];
|
|
139
139
|
this.drawTriangle(texture, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2);
|
|
140
140
|
if (this.debugRendering) {
|
|
141
141
|
ctx.strokeStyle = "green";
|
|
@@ -150,11 +150,11 @@ var SkeletonRenderer = /** @class */ (function () {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
this.ctx.globalAlpha = 1;
|
|
153
|
-
}
|
|
153
|
+
}
|
|
154
154
|
// Adapted from http://extremelysatisfactorytotalitarianism.com/blog/?p=2120
|
|
155
155
|
// Apache 2 licensed
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
drawTriangle(img, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2) {
|
|
157
|
+
let ctx = this.ctx;
|
|
158
158
|
u0 *= img.width;
|
|
159
159
|
v0 *= img.height;
|
|
160
160
|
u1 *= img.width;
|
|
@@ -184,18 +184,18 @@ var SkeletonRenderer = /** @class */ (function () {
|
|
|
184
184
|
ctx.clip();
|
|
185
185
|
ctx.drawImage(img, 0, 0);
|
|
186
186
|
ctx.restore();
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
187
|
+
}
|
|
188
|
+
computeRegionVertices(slot, region, pma) {
|
|
189
|
+
let skeletonColor = slot.bone.skeleton.color;
|
|
190
|
+
let slotColor = slot.color;
|
|
191
|
+
let regionColor = region.color;
|
|
192
|
+
let alpha = skeletonColor.a * slotColor.a * regionColor.a;
|
|
193
|
+
let multiplier = pma ? alpha : 1;
|
|
194
|
+
let color = this.tempColor;
|
|
195
195
|
color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha);
|
|
196
196
|
region.computeWorldVertices(slot.bone, this.vertices, 0, SkeletonRenderer.VERTEX_SIZE);
|
|
197
|
-
|
|
198
|
-
|
|
197
|
+
let vertices = this.vertices;
|
|
198
|
+
let uvs = region.uvs;
|
|
199
199
|
vertices[RegionAttachment.C1R] = color.r;
|
|
200
200
|
vertices[RegionAttachment.C1G] = color.g;
|
|
201
201
|
vertices[RegionAttachment.C1B] = color.b;
|
|
@@ -221,22 +221,22 @@ var SkeletonRenderer = /** @class */ (function () {
|
|
|
221
221
|
vertices[RegionAttachment.U4] = uvs[6];
|
|
222
222
|
vertices[RegionAttachment.V4] = uvs[7];
|
|
223
223
|
return vertices;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
224
|
+
}
|
|
225
|
+
computeMeshVertices(slot, mesh, pma) {
|
|
226
|
+
let skeletonColor = slot.bone.skeleton.color;
|
|
227
|
+
let slotColor = slot.color;
|
|
228
|
+
let regionColor = mesh.color;
|
|
229
|
+
let alpha = skeletonColor.a * slotColor.a * regionColor.a;
|
|
230
|
+
let multiplier = pma ? alpha : 1;
|
|
231
|
+
let color = this.tempColor;
|
|
232
232
|
color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha);
|
|
233
|
-
|
|
234
|
-
|
|
233
|
+
let vertexCount = mesh.worldVerticesLength / 2;
|
|
234
|
+
let vertices = this.vertices;
|
|
235
235
|
if (vertices.length < mesh.worldVerticesLength)
|
|
236
236
|
this.vertices = vertices = Utils.newFloatArray(mesh.worldVerticesLength);
|
|
237
237
|
mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, SkeletonRenderer.VERTEX_SIZE);
|
|
238
|
-
|
|
239
|
-
for (
|
|
238
|
+
let uvs = mesh.uvs;
|
|
239
|
+
for (let i = 0, u = 0, v = 2; i < vertexCount; i++) {
|
|
240
240
|
vertices[v++] = color.r;
|
|
241
241
|
vertices[v++] = color.g;
|
|
242
242
|
vertices[v++] = color.b;
|
|
@@ -246,10 +246,8 @@ var SkeletonRenderer = /** @class */ (function () {
|
|
|
246
246
|
v += 2;
|
|
247
247
|
}
|
|
248
248
|
return vertices;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
}());
|
|
254
|
-
export { SkeletonRenderer };
|
|
255
|
-
//# sourceMappingURL=SkeletonRenderer.js.map
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0];
|
|
252
|
+
SkeletonRenderer.VERTEX_SIZE = 2 + 2 + 4;
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25SZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta2VsZXRvblJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBWSxnQkFBZ0IsRUFBaUMsY0FBYyxFQUFRLE1BQU0sOEJBQThCLENBQUM7QUFHN0ksTUFBTSxPQUFPLGdCQUFnQjtJQVc1QixZQUFhLE9BQWlDO1FBTHZDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN0QixhQUFRLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDekMsY0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFHL0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksQ0FBRSxRQUFrQjtRQUN2QixJQUFJLElBQUksQ0FBQyxpQkFBaUI7WUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztZQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxVQUFVLENBQUUsUUFBa0I7UUFDckMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNuQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzNCLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUVuQyxJQUFJLElBQUksQ0FBQyxjQUFjO1lBQUUsR0FBRyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7UUFFbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUs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Z0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6QyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsUUFB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
|
|
@@ -1031,10 +1031,8 @@ var spine = (() => {
|
|
|
1031
1031
|
bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;
|
|
1032
1032
|
break;
|
|
1033
1033
|
case 3:
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bone.data.scaleX) * alpha;
|
|
1037
|
-
bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - bone.data.scaleY) * alpha;
|
|
1034
|
+
bone.scaleX = (x - bone.data.scaleX) * alpha;
|
|
1035
|
+
bone.scaleY = (y - bone.data.scaleY) * alpha;
|
|
1038
1036
|
}
|
|
1039
1037
|
} else {
|
|
1040
1038
|
switch (blend) {
|
|
@@ -1052,10 +1050,8 @@ var spine = (() => {
|
|
|
1052
1050
|
bone.scaleY = by + (y - by) * alpha;
|
|
1053
1051
|
break;
|
|
1054
1052
|
case 3:
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha;
|
|
1058
|
-
bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha;
|
|
1053
|
+
bone.scaleX += (x - bone.data.scaleX) * alpha;
|
|
1054
|
+
bone.scaleY += (y - bone.data.scaleY) * alpha;
|
|
1059
1055
|
}
|
|
1060
1056
|
}
|
|
1061
1057
|
}
|
|
@@ -1102,8 +1098,7 @@ var spine = (() => {
|
|
|
1102
1098
|
bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha;
|
|
1103
1099
|
break;
|
|
1104
1100
|
case 3:
|
|
1105
|
-
|
|
1106
|
-
bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bone.data.scaleX) * alpha;
|
|
1101
|
+
bone.scaleX = (x - bone.data.scaleX) * alpha;
|
|
1107
1102
|
}
|
|
1108
1103
|
} else {
|
|
1109
1104
|
switch (blend) {
|
|
@@ -1117,8 +1112,7 @@ var spine = (() => {
|
|
|
1117
1112
|
bone.scaleX = bx + (x - bx) * alpha;
|
|
1118
1113
|
break;
|
|
1119
1114
|
case 3:
|
|
1120
|
-
|
|
1121
|
-
bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha;
|
|
1115
|
+
bone.scaleX += (x - bone.data.scaleX) * alpha;
|
|
1122
1116
|
}
|
|
1123
1117
|
}
|
|
1124
1118
|
}
|
|
@@ -1165,8 +1159,7 @@ var spine = (() => {
|
|
|
1165
1159
|
bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha;
|
|
1166
1160
|
break;
|
|
1167
1161
|
case 3:
|
|
1168
|
-
|
|
1169
|
-
bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - bone.data.scaleY) * alpha;
|
|
1162
|
+
bone.scaleY = (y - bone.data.scaleY) * alpha;
|
|
1170
1163
|
}
|
|
1171
1164
|
} else {
|
|
1172
1165
|
switch (blend) {
|
|
@@ -1180,8 +1173,7 @@ var spine = (() => {
|
|
|
1180
1173
|
bone.scaleY = by + (y - by) * alpha;
|
|
1181
1174
|
break;
|
|
1182
1175
|
case 3:
|
|
1183
|
-
|
|
1184
|
-
bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha;
|
|
1176
|
+
bone.scaleY += (y - bone.data.scaleY) * alpha;
|
|
1185
1177
|
}
|
|
1186
1178
|
}
|
|
1187
1179
|
}
|
|
@@ -4005,8 +3997,8 @@ var spine = (() => {
|
|
|
4005
3997
|
updateAppliedTransform() {
|
|
4006
3998
|
let parent = this.parent;
|
|
4007
3999
|
if (!parent) {
|
|
4008
|
-
this.ax = this.worldX;
|
|
4009
|
-
this.ay = this.worldY;
|
|
4000
|
+
this.ax = this.worldX - this.skeleton.x;
|
|
4001
|
+
this.ay = this.worldY - this.skeleton.y;
|
|
4010
4002
|
this.arotation = Math.atan2(this.c, this.a) * MathUtils.radDeg;
|
|
4011
4003
|
this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c);
|
|
4012
4004
|
this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d);
|
|
@@ -4247,11 +4239,49 @@ var spine = (() => {
|
|
|
4247
4239
|
this.callbacks = {};
|
|
4248
4240
|
this.rawDataUris = {};
|
|
4249
4241
|
}
|
|
4242
|
+
dataUriToString(dataUri) {
|
|
4243
|
+
if (!dataUri.startsWith("data:")) {
|
|
4244
|
+
throw new Error("Not a data URI.");
|
|
4245
|
+
}
|
|
4246
|
+
let base64Idx = dataUri.indexOf("base64,");
|
|
4247
|
+
if (base64Idx != -1) {
|
|
4248
|
+
base64Idx += "base64,".length;
|
|
4249
|
+
return atob(dataUri.substr(base64Idx));
|
|
4250
|
+
} else {
|
|
4251
|
+
return dataUri.substr(dataUri.indexOf(",") + 1);
|
|
4252
|
+
}
|
|
4253
|
+
}
|
|
4254
|
+
base64ToArrayBuffer(base64) {
|
|
4255
|
+
var binary_string = window.atob(base64);
|
|
4256
|
+
var len = binary_string.length;
|
|
4257
|
+
var bytes = new Uint8Array(len);
|
|
4258
|
+
for (var i = 0; i < len; i++) {
|
|
4259
|
+
bytes[i] = binary_string.charCodeAt(i);
|
|
4260
|
+
}
|
|
4261
|
+
return bytes.buffer;
|
|
4262
|
+
}
|
|
4263
|
+
dataUriToUint8Array(dataUri) {
|
|
4264
|
+
if (!dataUri.startsWith("data:")) {
|
|
4265
|
+
throw new Error("Not a data URI.");
|
|
4266
|
+
}
|
|
4267
|
+
let base64Idx = dataUri.indexOf("base64,");
|
|
4268
|
+
if (base64Idx == -1)
|
|
4269
|
+
throw new Error("Not a binary data URI.");
|
|
4270
|
+
base64Idx += "base64,".length;
|
|
4271
|
+
return this.base64ToArrayBuffer(dataUri.substr(base64Idx));
|
|
4272
|
+
}
|
|
4250
4273
|
downloadText(url, success, error) {
|
|
4251
|
-
if (this.rawDataUris[url])
|
|
4252
|
-
url = this.rawDataUris[url];
|
|
4253
4274
|
if (this.start(url, success, error))
|
|
4254
4275
|
return;
|
|
4276
|
+
if (this.rawDataUris[url]) {
|
|
4277
|
+
try {
|
|
4278
|
+
let dataUri = this.rawDataUris[url];
|
|
4279
|
+
this.finish(url, 200, this.dataUriToString(dataUri));
|
|
4280
|
+
} catch (e) {
|
|
4281
|
+
this.finish(url, 400, JSON.stringify(e));
|
|
4282
|
+
}
|
|
4283
|
+
return;
|
|
4284
|
+
}
|
|
4255
4285
|
let request = new XMLHttpRequest();
|
|
4256
4286
|
request.overrideMimeType("text/html");
|
|
4257
4287
|
request.open("GET", url, true);
|
|
@@ -4268,10 +4298,17 @@ var spine = (() => {
|
|
|
4268
4298
|
}, error);
|
|
4269
4299
|
}
|
|
4270
4300
|
downloadBinary(url, success, error) {
|
|
4271
|
-
if (this.rawDataUris[url])
|
|
4272
|
-
url = this.rawDataUris[url];
|
|
4273
4301
|
if (this.start(url, success, error))
|
|
4274
4302
|
return;
|
|
4303
|
+
if (this.rawDataUris[url]) {
|
|
4304
|
+
try {
|
|
4305
|
+
let dataUri = this.rawDataUris[url];
|
|
4306
|
+
this.finish(url, 200, this.dataUriToUint8Array(dataUri));
|
|
4307
|
+
} catch (e) {
|
|
4308
|
+
this.finish(url, 400, JSON.stringify(e));
|
|
4309
|
+
}
|
|
4310
|
+
return;
|
|
4311
|
+
}
|
|
4275
4312
|
let request = new XMLHttpRequest();
|
|
4276
4313
|
request.open("GET", url, true);
|
|
4277
4314
|
request.responseType = "arraybuffer";
|
|
@@ -5591,15 +5628,6 @@ var spine = (() => {
|
|
|
5591
5628
|
}
|
|
5592
5629
|
return null;
|
|
5593
5630
|
}
|
|
5594
|
-
findBoneIndex(boneName) {
|
|
5595
|
-
if (!boneName)
|
|
5596
|
-
throw new Error("boneName cannot be null.");
|
|
5597
|
-
let bones = this.bones;
|
|
5598
|
-
for (let i = 0, n = bones.length; i < n; i++)
|
|
5599
|
-
if (bones[i].data.name == boneName)
|
|
5600
|
-
return i;
|
|
5601
|
-
return -1;
|
|
5602
|
-
}
|
|
5603
5631
|
findSlot(slotName) {
|
|
5604
5632
|
if (!slotName)
|
|
5605
5633
|
throw new Error("slotName cannot be null.");
|
|
@@ -5611,15 +5639,6 @@ var spine = (() => {
|
|
|
5611
5639
|
}
|
|
5612
5640
|
return null;
|
|
5613
5641
|
}
|
|
5614
|
-
findSlotIndex(slotName) {
|
|
5615
|
-
if (!slotName)
|
|
5616
|
-
throw new Error("slotName cannot be null.");
|
|
5617
|
-
let slots = this.slots;
|
|
5618
|
-
for (let i = 0, n = slots.length; i < n; i++)
|
|
5619
|
-
if (slots[i].data.name == slotName)
|
|
5620
|
-
return i;
|
|
5621
|
-
return -1;
|
|
5622
|
-
}
|
|
5623
5642
|
setSkinByName(skinName) {
|
|
5624
5643
|
let skin = this.data.findSkin(skinName);
|
|
5625
5644
|
if (!skin)
|
|
@@ -5649,7 +5668,7 @@ var spine = (() => {
|
|
|
5649
5668
|
this.updateCache();
|
|
5650
5669
|
}
|
|
5651
5670
|
getAttachmentByName(slotName, attachmentName) {
|
|
5652
|
-
return this.getAttachment(this.data.
|
|
5671
|
+
return this.getAttachment(this.data.findSlot(slotName).index, attachmentName);
|
|
5653
5672
|
}
|
|
5654
5673
|
getAttachment(slotIndex, attachmentName) {
|
|
5655
5674
|
if (!attachmentName)
|
|
@@ -5781,15 +5800,6 @@ var spine = (() => {
|
|
|
5781
5800
|
}
|
|
5782
5801
|
return null;
|
|
5783
5802
|
}
|
|
5784
|
-
findBoneIndex(boneName) {
|
|
5785
|
-
if (!boneName)
|
|
5786
|
-
throw new Error("boneName cannot be null.");
|
|
5787
|
-
let bones = this.bones;
|
|
5788
|
-
for (let i = 0, n = bones.length; i < n; i++)
|
|
5789
|
-
if (bones[i].name == boneName)
|
|
5790
|
-
return i;
|
|
5791
|
-
return -1;
|
|
5792
|
-
}
|
|
5793
5803
|
findSlot(slotName) {
|
|
5794
5804
|
if (!slotName)
|
|
5795
5805
|
throw new Error("slotName cannot be null.");
|
|
@@ -5801,15 +5811,6 @@ var spine = (() => {
|
|
|
5801
5811
|
}
|
|
5802
5812
|
return null;
|
|
5803
5813
|
}
|
|
5804
|
-
findSlotIndex(slotName) {
|
|
5805
|
-
if (!slotName)
|
|
5806
|
-
throw new Error("slotName cannot be null.");
|
|
5807
|
-
let slots = this.slots;
|
|
5808
|
-
for (let i = 0, n = slots.length; i < n; i++)
|
|
5809
|
-
if (slots[i].name == slotName)
|
|
5810
|
-
return i;
|
|
5811
|
-
return -1;
|
|
5812
|
-
}
|
|
5813
5814
|
findSkin(skinName) {
|
|
5814
5815
|
if (!skinName)
|
|
5815
5816
|
throw new Error("skinName cannot be null.");
|
|
@@ -8094,20 +8095,21 @@ var spine = (() => {
|
|
|
8094
8095
|
if (map.slots) {
|
|
8095
8096
|
for (let slotName in map.slots) {
|
|
8096
8097
|
let slotMap = map.slots[slotName];
|
|
8097
|
-
let slotIndex = skeletonData.
|
|
8098
|
+
let slotIndex = skeletonData.findSlot(slotName).index;
|
|
8098
8099
|
for (let timelineName in slotMap) {
|
|
8099
8100
|
let timelineMap = slotMap[timelineName];
|
|
8100
8101
|
if (!timelineMap)
|
|
8101
8102
|
continue;
|
|
8103
|
+
let frames = timelineMap.length;
|
|
8102
8104
|
if (timelineName == "attachment") {
|
|
8103
|
-
let timeline = new AttachmentTimeline(
|
|
8104
|
-
for (let frame = 0; frame <
|
|
8105
|
+
let timeline = new AttachmentTimeline(frames, slotIndex);
|
|
8106
|
+
for (let frame = 0; frame < frames; frame++) {
|
|
8105
8107
|
let keyMap = timelineMap[frame];
|
|
8106
8108
|
timeline.setFrame(frame, getValue(keyMap, "time", 0), keyMap.name);
|
|
8107
8109
|
}
|
|
8108
8110
|
timelines.push(timeline);
|
|
8109
8111
|
} else if (timelineName == "rgba") {
|
|
8110
|
-
let timeline = new RGBATimeline(
|
|
8112
|
+
let timeline = new RGBATimeline(frames, frames << 2, slotIndex);
|
|
8111
8113
|
let keyMap = timelineMap[0];
|
|
8112
8114
|
let time = getValue(keyMap, "time", 0);
|
|
8113
8115
|
let color = Color.fromString(keyMap.color);
|
|
@@ -8133,7 +8135,7 @@ var spine = (() => {
|
|
|
8133
8135
|
}
|
|
8134
8136
|
timelines.push(timeline);
|
|
8135
8137
|
} else if (timelineName == "rgb") {
|
|
8136
|
-
let timeline = new RGBTimeline(
|
|
8138
|
+
let timeline = new RGBTimeline(frames, frames * 3, slotIndex);
|
|
8137
8139
|
let keyMap = timelineMap[0];
|
|
8138
8140
|
let time = getValue(keyMap, "time", 0);
|
|
8139
8141
|
let color = Color.fromString(keyMap.color);
|
|
@@ -8158,9 +8160,9 @@ var spine = (() => {
|
|
|
8158
8160
|
}
|
|
8159
8161
|
timelines.push(timeline);
|
|
8160
8162
|
} else if (timelineName == "alpha") {
|
|
8161
|
-
timelines.push(readTimeline12(timelineMap, new AlphaTimeline(
|
|
8163
|
+
timelines.push(readTimeline12(timelineMap, new AlphaTimeline(frames, frames, slotIndex), 0, 1));
|
|
8162
8164
|
} else if (timelineName == "rgba2") {
|
|
8163
|
-
let timeline = new RGBA2Timeline(
|
|
8165
|
+
let timeline = new RGBA2Timeline(frames, frames * 7, slotIndex);
|
|
8164
8166
|
let keyMap = timelineMap[0];
|
|
8165
8167
|
let time = getValue(keyMap, "time", 0);
|
|
8166
8168
|
let color = Color.fromString(keyMap.light);
|
|
@@ -8192,7 +8194,7 @@ var spine = (() => {
|
|
|
8192
8194
|
}
|
|
8193
8195
|
timelines.push(timeline);
|
|
8194
8196
|
} else if (timelineName == "rgb2") {
|
|
8195
|
-
let timeline = new RGB2Timeline(
|
|
8197
|
+
let timeline = new RGB2Timeline(frames, frames * 6, slotIndex);
|
|
8196
8198
|
let keyMap = timelineMap[0];
|
|
8197
8199
|
let time = getValue(keyMap, "time", 0);
|
|
8198
8200
|
let color = Color.fromString(keyMap.light);
|
|
@@ -8229,39 +8231,40 @@ var spine = (() => {
|
|
|
8229
8231
|
if (map.bones) {
|
|
8230
8232
|
for (let boneName in map.bones) {
|
|
8231
8233
|
let boneMap = map.bones[boneName];
|
|
8232
|
-
let boneIndex = skeletonData.
|
|
8234
|
+
let boneIndex = skeletonData.findBone(boneName).index;
|
|
8233
8235
|
for (let timelineName in boneMap) {
|
|
8234
8236
|
let timelineMap = boneMap[timelineName];
|
|
8235
|
-
|
|
8237
|
+
let frames = timelineMap.length;
|
|
8238
|
+
if (frames == 0)
|
|
8236
8239
|
continue;
|
|
8237
8240
|
if (timelineName === "rotate") {
|
|
8238
|
-
timelines.push(readTimeline12(timelineMap, new RotateTimeline(
|
|
8241
|
+
timelines.push(readTimeline12(timelineMap, new RotateTimeline(frames, frames, boneIndex), 0, 1));
|
|
8239
8242
|
} else if (timelineName === "translate") {
|
|
8240
|
-
let timeline = new TranslateTimeline(
|
|
8243
|
+
let timeline = new TranslateTimeline(frames, frames << 1, boneIndex);
|
|
8241
8244
|
timelines.push(readTimeline22(timelineMap, timeline, "x", "y", 0, scale));
|
|
8242
8245
|
} else if (timelineName === "translatex") {
|
|
8243
|
-
let timeline = new TranslateXTimeline(
|
|
8246
|
+
let timeline = new TranslateXTimeline(frames, frames, boneIndex);
|
|
8244
8247
|
timelines.push(readTimeline12(timelineMap, timeline, 0, scale));
|
|
8245
8248
|
} else if (timelineName === "translatey") {
|
|
8246
|
-
let timeline = new TranslateYTimeline(
|
|
8249
|
+
let timeline = new TranslateYTimeline(frames, frames, boneIndex);
|
|
8247
8250
|
timelines.push(readTimeline12(timelineMap, timeline, 0, scale));
|
|
8248
8251
|
} else if (timelineName === "scale") {
|
|
8249
|
-
let timeline = new ScaleTimeline(
|
|
8252
|
+
let timeline = new ScaleTimeline(frames, frames << 1, boneIndex);
|
|
8250
8253
|
timelines.push(readTimeline22(timelineMap, timeline, "x", "y", 1, 1));
|
|
8251
8254
|
} else if (timelineName === "scalex") {
|
|
8252
|
-
let timeline = new ScaleXTimeline(
|
|
8255
|
+
let timeline = new ScaleXTimeline(frames, frames, boneIndex);
|
|
8253
8256
|
timelines.push(readTimeline12(timelineMap, timeline, 1, 1));
|
|
8254
8257
|
} else if (timelineName === "scaley") {
|
|
8255
|
-
let timeline = new ScaleYTimeline(
|
|
8258
|
+
let timeline = new ScaleYTimeline(frames, frames, boneIndex);
|
|
8256
8259
|
timelines.push(readTimeline12(timelineMap, timeline, 1, 1));
|
|
8257
8260
|
} else if (timelineName === "shear") {
|
|
8258
|
-
let timeline = new ShearTimeline(
|
|
8261
|
+
let timeline = new ShearTimeline(frames, frames << 1, boneIndex);
|
|
8259
8262
|
timelines.push(readTimeline22(timelineMap, timeline, "x", "y", 0, 1));
|
|
8260
8263
|
} else if (timelineName === "shearx") {
|
|
8261
|
-
let timeline = new ShearXTimeline(
|
|
8264
|
+
let timeline = new ShearXTimeline(frames, frames, boneIndex);
|
|
8262
8265
|
timelines.push(readTimeline12(timelineMap, timeline, 0, 1));
|
|
8263
8266
|
} else if (timelineName === "sheary") {
|
|
8264
|
-
let timeline = new ShearYTimeline(
|
|
8267
|
+
let timeline = new ShearYTimeline(frames, frames, boneIndex);
|
|
8265
8268
|
timelines.push(readTimeline12(timelineMap, timeline, 0, 1));
|
|
8266
8269
|
}
|
|
8267
8270
|
}
|
|
@@ -8310,7 +8313,7 @@ var spine = (() => {
|
|
|
8310
8313
|
continue;
|
|
8311
8314
|
let constraint = skeletonData.findTransformConstraint(constraintName);
|
|
8312
8315
|
let constraintIndex = skeletonData.transformConstraints.indexOf(constraint);
|
|
8313
|
-
let timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length
|
|
8316
|
+
let timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length * 6, constraintIndex);
|
|
8314
8317
|
let time = getValue(keyMap, "time", 0);
|
|
8315
8318
|
let mixRotate = getValue(keyMap, "mixRotate", 1);
|
|
8316
8319
|
let mixX = getValue(keyMap, "mixX", 1);
|
|
@@ -8363,14 +8366,15 @@ var spine = (() => {
|
|
|
8363
8366
|
let keyMap = timelineMap[0];
|
|
8364
8367
|
if (!keyMap)
|
|
8365
8368
|
continue;
|
|
8369
|
+
let frames = timelineMap.length;
|
|
8366
8370
|
if (timelineName === "position") {
|
|
8367
|
-
let timeline = new PathConstraintPositionTimeline(
|
|
8371
|
+
let timeline = new PathConstraintPositionTimeline(frames, frames, constraintIndex);
|
|
8368
8372
|
timelines.push(readTimeline12(timelineMap, timeline, 0, constraint.positionMode == PositionMode.Fixed ? scale : 1));
|
|
8369
8373
|
} else if (timelineName === "spacing") {
|
|
8370
|
-
let timeline = new PathConstraintSpacingTimeline(
|
|
8374
|
+
let timeline = new PathConstraintSpacingTimeline(frames, frames, constraintIndex);
|
|
8371
8375
|
timelines.push(readTimeline12(timelineMap, timeline, 0, constraint.spacingMode == SpacingMode.Length || constraint.spacingMode == SpacingMode.Fixed ? scale : 1));
|
|
8372
8376
|
} else if (timelineName === "mix") {
|
|
8373
|
-
let timeline = new PathConstraintMixTimeline(
|
|
8377
|
+
let timeline = new PathConstraintMixTimeline(frames, frames * 3, constraintIndex);
|
|
8374
8378
|
let time = getValue(keyMap, "time", 0);
|
|
8375
8379
|
let mixRotate = getValue(keyMap, "mixRotate", 1);
|
|
8376
8380
|
let mixX = getValue(keyMap, "mixX", 1);
|
|
@@ -8409,7 +8413,7 @@ var spine = (() => {
|
|
|
8409
8413
|
let skin = skeletonData.findSkin(deformName);
|
|
8410
8414
|
for (let slotName in deformMap) {
|
|
8411
8415
|
let slotMap = deformMap[slotName];
|
|
8412
|
-
let slotIndex = skeletonData.
|
|
8416
|
+
let slotIndex = skeletonData.findSlot(slotName).index;
|
|
8413
8417
|
for (let timelineName in slotMap) {
|
|
8414
8418
|
let timelineMap = slotMap[timelineName];
|
|
8415
8419
|
let keyMap = timelineMap[0];
|
|
@@ -8471,7 +8475,7 @@ var spine = (() => {
|
|
|
8471
8475
|
let originalIndex = 0, unchangedIndex = 0;
|
|
8472
8476
|
for (let ii = 0; ii < offsets.length; ii++) {
|
|
8473
8477
|
let offsetMap = offsets[ii];
|
|
8474
|
-
let slotIndex = skeletonData.
|
|
8478
|
+
let slotIndex = skeletonData.findSlot(offsetMap.slot).index;
|
|
8475
8479
|
while (originalIndex != slotIndex)
|
|
8476
8480
|
unchanged[unchangedIndex++] = originalIndex++;
|
|
8477
8481
|
drawOrder[originalIndex + offsetMap.offset] = originalIndex++;
|