@esotericsoftware/spine-core 4.1.23 → 4.1.25
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/package.json +1 -1
- package/dist/Animation.d.ts +0 -382
- package/dist/Animation.js +0 -2052
- package/dist/AnimationState.d.ts +0 -398
- package/dist/AnimationState.js +0 -1096
- package/dist/AnimationStateData.d.ts +0 -51
- package/dist/AnimationStateData.js +0 -70
- package/dist/AssetManagerBase.d.ts +0 -75
- package/dist/AssetManagerBase.js +0 -320
- package/dist/AtlasAttachmentLoader.d.ts +0 -53
- package/dist/AtlasAttachmentLoader.js +0 -95
- package/dist/Bone.d.ts +0 -138
- package/dist/Bone.js +0 -336
- package/dist/BoneData.d.ts +0 -72
- package/dist/BoneData.js +0 -80
- package/dist/ConstraintData.d.ts +0 -35
- package/dist/ConstraintData.js +0 -37
- package/dist/Event.d.ts +0 -44
- package/dist/Event.js +0 -48
- package/dist/EventData.d.ts +0 -41
- package/dist/EventData.js +0 -43
- package/dist/IkConstraint.d.ts +0 -64
- package/dist/IkConstraint.js +0 -296
- package/dist/IkConstraintData.d.ts +0 -56
- package/dist/IkConstraintData.js +0 -63
- package/dist/PathConstraint.d.ts +0 -71
- package/dist/PathConstraint.js +0 -476
- package/dist/PathConstraintData.d.ts +0 -82
- package/dist/PathConstraintData.js +0 -91
- package/dist/Skeleton.d.ts +0 -160
- package/dist/Skeleton.js +0 -580
- package/dist/SkeletonBinary.d.ts +0 -68
- package/dist/SkeletonBinary.js +0 -1172
- package/dist/SkeletonBounds.d.ts +0 -77
- package/dist/SkeletonBounds.js +0 -219
- package/dist/SkeletonClipping.d.ts +0 -50
- package/dist/SkeletonClipping.js +0 -326
- package/dist/SkeletonData.d.ts +0 -114
- package/dist/SkeletonData.js +0 -190
- package/dist/SkeletonJson.d.ts +0 -53
- package/dist/SkeletonJson.js +0 -1027
- package/dist/Skin.d.ts +0 -71
- package/dist/Skin.js +0 -201
- package/dist/Slot.d.ts +0 -69
- package/dist/Slot.js +0 -93
- package/dist/SlotData.d.ts +0 -57
- package/dist/SlotData.js +0 -64
- package/dist/Texture.d.ts +0 -69
- package/dist/Texture.js +0 -73
- package/dist/TextureAtlas.d.ts +0 -67
- package/dist/TextureAtlas.js +0 -263
- package/dist/TransformConstraint.d.ts +0 -60
- package/dist/TransformConstraint.js +0 -247
- package/dist/TransformConstraintData.d.ts +0 -62
- package/dist/TransformConstraintData.js +0 -69
- package/dist/Triangulator.d.ts +0 -43
- package/dist/Triangulator.js +0 -244
- package/dist/Updatable.d.ts +0 -37
- package/dist/Updatable.js +0 -30
- package/dist/Utils.d.ts +0 -168
- package/dist/Utils.js +0 -404
- package/dist/attachments/Attachment.d.ts +0 -72
- package/dist/attachments/Attachment.js +0 -147
- package/dist/attachments/AttachmentLoader.d.ts +0 -54
- package/dist/attachments/AttachmentLoader.js +0 -30
- package/dist/attachments/BoundingBoxAttachment.d.ts +0 -40
- package/dist/attachments/BoundingBoxAttachment.js +0 -48
- package/dist/attachments/ClippingAttachment.d.ts +0 -42
- package/dist/attachments/ClippingAttachment.js +0 -51
- package/dist/attachments/HasTextureRegion.d.ts +0 -44
- package/dist/attachments/HasTextureRegion.js +0 -30
- package/dist/attachments/MeshAttachment.d.ts +0 -79
- package/dist/attachments/MeshAttachment.js +0 -188
- package/dist/attachments/PathAttachment.d.ts +0 -47
- package/dist/attachments/PathAttachment.js +0 -59
- package/dist/attachments/PointAttachment.d.ts +0 -48
- package/dist/attachments/PointAttachment.js +0 -66
- package/dist/attachments/RegionAttachment.d.ts +0 -111
- package/dist/attachments/RegionAttachment.js +0 -215
- package/dist/attachments/Sequence.d.ts +0 -55
- package/dist/attachments/Sequence.js +0 -91
- package/dist/attachments/index.d.ts +0 -8
- package/dist/attachments/index.js +0 -9
- package/dist/iife/spine-core.js +0 -9192
- package/dist/iife/spine-core.js.map +0 -7
- package/dist/iife/spine-core.min.js +0 -2
- package/dist/index.d.ts +0 -39
- package/dist/index.js +0 -40
- package/dist/polyfills.d.ts +0 -29
- package/dist/polyfills.js +0 -39
package/dist/SkeletonClipping.js
DELETED
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
/******************************************************************************
|
|
2
|
-
* Spine Runtimes License Agreement
|
|
3
|
-
* Last updated September 24, 2021. Replaces all prior versions.
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) 2013-2021, Esoteric Software LLC
|
|
6
|
-
*
|
|
7
|
-
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
-
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
-
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
-
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
-
*
|
|
12
|
-
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
13
|
-
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
-
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
-
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
-
* include this license and copyright notice.
|
|
17
|
-
*
|
|
18
|
-
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
-
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
-
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
-
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
-
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
-
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
-
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
-
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
|
-
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
-
*****************************************************************************/
|
|
29
|
-
import { Triangulator } from "./Triangulator";
|
|
30
|
-
import { Utils } from "./Utils";
|
|
31
|
-
export class SkeletonClipping {
|
|
32
|
-
constructor() {
|
|
33
|
-
this.triangulator = new Triangulator();
|
|
34
|
-
this.clippingPolygon = new Array();
|
|
35
|
-
this.clipOutput = new Array();
|
|
36
|
-
this.clippedVertices = new Array();
|
|
37
|
-
this.clippedTriangles = new Array();
|
|
38
|
-
this.scratch = new Array();
|
|
39
|
-
this.clipAttachment = null;
|
|
40
|
-
this.clippingPolygons = null;
|
|
41
|
-
}
|
|
42
|
-
clipStart(slot, clip) {
|
|
43
|
-
if (this.clipAttachment)
|
|
44
|
-
return 0;
|
|
45
|
-
this.clipAttachment = clip;
|
|
46
|
-
let n = clip.worldVerticesLength;
|
|
47
|
-
let vertices = Utils.setArraySize(this.clippingPolygon, n);
|
|
48
|
-
clip.computeWorldVertices(slot, 0, n, vertices, 0, 2);
|
|
49
|
-
let clippingPolygon = this.clippingPolygon;
|
|
50
|
-
SkeletonClipping.makeClockwise(clippingPolygon);
|
|
51
|
-
let clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon));
|
|
52
|
-
for (let i = 0, n = clippingPolygons.length; i < n; i++) {
|
|
53
|
-
let polygon = clippingPolygons[i];
|
|
54
|
-
SkeletonClipping.makeClockwise(polygon);
|
|
55
|
-
polygon.push(polygon[0]);
|
|
56
|
-
polygon.push(polygon[1]);
|
|
57
|
-
}
|
|
58
|
-
return clippingPolygons.length;
|
|
59
|
-
}
|
|
60
|
-
clipEndWithSlot(slot) {
|
|
61
|
-
if (this.clipAttachment && this.clipAttachment.endSlot == slot.data)
|
|
62
|
-
this.clipEnd();
|
|
63
|
-
}
|
|
64
|
-
clipEnd() {
|
|
65
|
-
if (!this.clipAttachment)
|
|
66
|
-
return;
|
|
67
|
-
this.clipAttachment = null;
|
|
68
|
-
this.clippingPolygons = null;
|
|
69
|
-
this.clippedVertices.length = 0;
|
|
70
|
-
this.clippedTriangles.length = 0;
|
|
71
|
-
this.clippingPolygon.length = 0;
|
|
72
|
-
}
|
|
73
|
-
isClipping() {
|
|
74
|
-
return this.clipAttachment != null;
|
|
75
|
-
}
|
|
76
|
-
clipTriangles(vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) {
|
|
77
|
-
let clipOutput = this.clipOutput, clippedVertices = this.clippedVertices;
|
|
78
|
-
let clippedTriangles = this.clippedTriangles;
|
|
79
|
-
let polygons = this.clippingPolygons;
|
|
80
|
-
let polygonsCount = polygons.length;
|
|
81
|
-
let vertexSize = twoColor ? 12 : 8;
|
|
82
|
-
let index = 0;
|
|
83
|
-
clippedVertices.length = 0;
|
|
84
|
-
clippedTriangles.length = 0;
|
|
85
|
-
outer: for (let i = 0; i < trianglesLength; i += 3) {
|
|
86
|
-
let vertexOffset = triangles[i] << 1;
|
|
87
|
-
let x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1];
|
|
88
|
-
let u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1];
|
|
89
|
-
vertexOffset = triangles[i + 1] << 1;
|
|
90
|
-
let x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1];
|
|
91
|
-
let u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1];
|
|
92
|
-
vertexOffset = triangles[i + 2] << 1;
|
|
93
|
-
let x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1];
|
|
94
|
-
let u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1];
|
|
95
|
-
for (let p = 0; p < polygonsCount; p++) {
|
|
96
|
-
let s = clippedVertices.length;
|
|
97
|
-
if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) {
|
|
98
|
-
let clipOutputLength = clipOutput.length;
|
|
99
|
-
if (clipOutputLength == 0)
|
|
100
|
-
continue;
|
|
101
|
-
let d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1;
|
|
102
|
-
let d = 1 / (d0 * d2 + d1 * (y1 - y3));
|
|
103
|
-
let clipOutputCount = clipOutputLength >> 1;
|
|
104
|
-
let clipOutputItems = this.clipOutput;
|
|
105
|
-
let clippedVerticesItems = Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize);
|
|
106
|
-
for (let ii = 0; ii < clipOutputLength; ii += 2) {
|
|
107
|
-
let x = clipOutputItems[ii], y = clipOutputItems[ii + 1];
|
|
108
|
-
clippedVerticesItems[s] = x;
|
|
109
|
-
clippedVerticesItems[s + 1] = y;
|
|
110
|
-
clippedVerticesItems[s + 2] = light.r;
|
|
111
|
-
clippedVerticesItems[s + 3] = light.g;
|
|
112
|
-
clippedVerticesItems[s + 4] = light.b;
|
|
113
|
-
clippedVerticesItems[s + 5] = light.a;
|
|
114
|
-
let c0 = x - x3, c1 = y - y3;
|
|
115
|
-
let a = (d0 * c0 + d1 * c1) * d;
|
|
116
|
-
let b = (d4 * c0 + d2 * c1) * d;
|
|
117
|
-
let c = 1 - a - b;
|
|
118
|
-
clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c;
|
|
119
|
-
clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c;
|
|
120
|
-
if (twoColor) {
|
|
121
|
-
clippedVerticesItems[s + 8] = dark.r;
|
|
122
|
-
clippedVerticesItems[s + 9] = dark.g;
|
|
123
|
-
clippedVerticesItems[s + 10] = dark.b;
|
|
124
|
-
clippedVerticesItems[s + 11] = dark.a;
|
|
125
|
-
}
|
|
126
|
-
s += vertexSize;
|
|
127
|
-
}
|
|
128
|
-
s = clippedTriangles.length;
|
|
129
|
-
let clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2));
|
|
130
|
-
clipOutputCount--;
|
|
131
|
-
for (let ii = 1; ii < clipOutputCount; ii++) {
|
|
132
|
-
clippedTrianglesItems[s] = index;
|
|
133
|
-
clippedTrianglesItems[s + 1] = (index + ii);
|
|
134
|
-
clippedTrianglesItems[s + 2] = (index + ii + 1);
|
|
135
|
-
s += 3;
|
|
136
|
-
}
|
|
137
|
-
index += clipOutputCount + 1;
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
let clippedVerticesItems = Utils.setArraySize(clippedVertices, s + 3 * vertexSize);
|
|
141
|
-
clippedVerticesItems[s] = x1;
|
|
142
|
-
clippedVerticesItems[s + 1] = y1;
|
|
143
|
-
clippedVerticesItems[s + 2] = light.r;
|
|
144
|
-
clippedVerticesItems[s + 3] = light.g;
|
|
145
|
-
clippedVerticesItems[s + 4] = light.b;
|
|
146
|
-
clippedVerticesItems[s + 5] = light.a;
|
|
147
|
-
if (!twoColor) {
|
|
148
|
-
clippedVerticesItems[s + 6] = u1;
|
|
149
|
-
clippedVerticesItems[s + 7] = v1;
|
|
150
|
-
clippedVerticesItems[s + 8] = x2;
|
|
151
|
-
clippedVerticesItems[s + 9] = y2;
|
|
152
|
-
clippedVerticesItems[s + 10] = light.r;
|
|
153
|
-
clippedVerticesItems[s + 11] = light.g;
|
|
154
|
-
clippedVerticesItems[s + 12] = light.b;
|
|
155
|
-
clippedVerticesItems[s + 13] = light.a;
|
|
156
|
-
clippedVerticesItems[s + 14] = u2;
|
|
157
|
-
clippedVerticesItems[s + 15] = v2;
|
|
158
|
-
clippedVerticesItems[s + 16] = x3;
|
|
159
|
-
clippedVerticesItems[s + 17] = y3;
|
|
160
|
-
clippedVerticesItems[s + 18] = light.r;
|
|
161
|
-
clippedVerticesItems[s + 19] = light.g;
|
|
162
|
-
clippedVerticesItems[s + 20] = light.b;
|
|
163
|
-
clippedVerticesItems[s + 21] = light.a;
|
|
164
|
-
clippedVerticesItems[s + 22] = u3;
|
|
165
|
-
clippedVerticesItems[s + 23] = v3;
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
clippedVerticesItems[s + 6] = u1;
|
|
169
|
-
clippedVerticesItems[s + 7] = v1;
|
|
170
|
-
clippedVerticesItems[s + 8] = dark.r;
|
|
171
|
-
clippedVerticesItems[s + 9] = dark.g;
|
|
172
|
-
clippedVerticesItems[s + 10] = dark.b;
|
|
173
|
-
clippedVerticesItems[s + 11] = dark.a;
|
|
174
|
-
clippedVerticesItems[s + 12] = x2;
|
|
175
|
-
clippedVerticesItems[s + 13] = y2;
|
|
176
|
-
clippedVerticesItems[s + 14] = light.r;
|
|
177
|
-
clippedVerticesItems[s + 15] = light.g;
|
|
178
|
-
clippedVerticesItems[s + 16] = light.b;
|
|
179
|
-
clippedVerticesItems[s + 17] = light.a;
|
|
180
|
-
clippedVerticesItems[s + 18] = u2;
|
|
181
|
-
clippedVerticesItems[s + 19] = v2;
|
|
182
|
-
clippedVerticesItems[s + 20] = dark.r;
|
|
183
|
-
clippedVerticesItems[s + 21] = dark.g;
|
|
184
|
-
clippedVerticesItems[s + 22] = dark.b;
|
|
185
|
-
clippedVerticesItems[s + 23] = dark.a;
|
|
186
|
-
clippedVerticesItems[s + 24] = x3;
|
|
187
|
-
clippedVerticesItems[s + 25] = y3;
|
|
188
|
-
clippedVerticesItems[s + 26] = light.r;
|
|
189
|
-
clippedVerticesItems[s + 27] = light.g;
|
|
190
|
-
clippedVerticesItems[s + 28] = light.b;
|
|
191
|
-
clippedVerticesItems[s + 29] = light.a;
|
|
192
|
-
clippedVerticesItems[s + 30] = u3;
|
|
193
|
-
clippedVerticesItems[s + 31] = v3;
|
|
194
|
-
clippedVerticesItems[s + 32] = dark.r;
|
|
195
|
-
clippedVerticesItems[s + 33] = dark.g;
|
|
196
|
-
clippedVerticesItems[s + 34] = dark.b;
|
|
197
|
-
clippedVerticesItems[s + 35] = dark.a;
|
|
198
|
-
}
|
|
199
|
-
s = clippedTriangles.length;
|
|
200
|
-
let clippedTrianglesItems = Utils.setArraySize(clippedTriangles, s + 3);
|
|
201
|
-
clippedTrianglesItems[s] = index;
|
|
202
|
-
clippedTrianglesItems[s + 1] = (index + 1);
|
|
203
|
-
clippedTrianglesItems[s + 2] = (index + 2);
|
|
204
|
-
index += 3;
|
|
205
|
-
continue outer;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
/** Clips the input triangle against the convex, clockwise clipping area. If the triangle lies entirely within the clipping
|
|
211
|
-
* area, false is returned. The clipping area must duplicate the first vertex at the end of the vertices list. */
|
|
212
|
-
clip(x1, y1, x2, y2, x3, y3, clippingArea, output) {
|
|
213
|
-
let originalOutput = output;
|
|
214
|
-
let clipped = false;
|
|
215
|
-
// Avoid copy at the end.
|
|
216
|
-
let input;
|
|
217
|
-
if (clippingArea.length % 4 >= 2) {
|
|
218
|
-
input = output;
|
|
219
|
-
output = this.scratch;
|
|
220
|
-
}
|
|
221
|
-
else
|
|
222
|
-
input = this.scratch;
|
|
223
|
-
input.length = 0;
|
|
224
|
-
input.push(x1);
|
|
225
|
-
input.push(y1);
|
|
226
|
-
input.push(x2);
|
|
227
|
-
input.push(y2);
|
|
228
|
-
input.push(x3);
|
|
229
|
-
input.push(y3);
|
|
230
|
-
input.push(x1);
|
|
231
|
-
input.push(y1);
|
|
232
|
-
output.length = 0;
|
|
233
|
-
let clippingVertices = clippingArea;
|
|
234
|
-
let clippingVerticesLast = clippingArea.length - 4;
|
|
235
|
-
for (let i = 0;; i += 2) {
|
|
236
|
-
let edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1];
|
|
237
|
-
let edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3];
|
|
238
|
-
let deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2;
|
|
239
|
-
let inputVertices = input;
|
|
240
|
-
let inputVerticesLength = input.length - 2, outputStart = output.length;
|
|
241
|
-
for (let ii = 0; ii < inputVerticesLength; ii += 2) {
|
|
242
|
-
let inputX = inputVertices[ii], inputY = inputVertices[ii + 1];
|
|
243
|
-
let inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3];
|
|
244
|
-
let side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0;
|
|
245
|
-
if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) {
|
|
246
|
-
if (side2) { // v1 inside, v2 inside
|
|
247
|
-
output.push(inputX2);
|
|
248
|
-
output.push(inputY2);
|
|
249
|
-
continue;
|
|
250
|
-
}
|
|
251
|
-
// v1 inside, v2 outside
|
|
252
|
-
let c0 = inputY2 - inputY, c2 = inputX2 - inputX;
|
|
253
|
-
let s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY);
|
|
254
|
-
if (Math.abs(s) > 0.000001) {
|
|
255
|
-
let ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s;
|
|
256
|
-
output.push(edgeX + (edgeX2 - edgeX) * ua);
|
|
257
|
-
output.push(edgeY + (edgeY2 - edgeY) * ua);
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
output.push(edgeX);
|
|
261
|
-
output.push(edgeY);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
else if (side2) { // v1 outside, v2 inside
|
|
265
|
-
let c0 = inputY2 - inputY, c2 = inputX2 - inputX;
|
|
266
|
-
let s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY);
|
|
267
|
-
if (Math.abs(s) > 0.000001) {
|
|
268
|
-
let ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s;
|
|
269
|
-
output.push(edgeX + (edgeX2 - edgeX) * ua);
|
|
270
|
-
output.push(edgeY + (edgeY2 - edgeY) * ua);
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
output.push(edgeX);
|
|
274
|
-
output.push(edgeY);
|
|
275
|
-
}
|
|
276
|
-
output.push(inputX2);
|
|
277
|
-
output.push(inputY2);
|
|
278
|
-
}
|
|
279
|
-
clipped = true;
|
|
280
|
-
}
|
|
281
|
-
if (outputStart == output.length) { // All edges outside.
|
|
282
|
-
originalOutput.length = 0;
|
|
283
|
-
return true;
|
|
284
|
-
}
|
|
285
|
-
output.push(output[0]);
|
|
286
|
-
output.push(output[1]);
|
|
287
|
-
if (i == clippingVerticesLast)
|
|
288
|
-
break;
|
|
289
|
-
let temp = output;
|
|
290
|
-
output = input;
|
|
291
|
-
output.length = 0;
|
|
292
|
-
input = temp;
|
|
293
|
-
}
|
|
294
|
-
if (originalOutput != output) {
|
|
295
|
-
originalOutput.length = 0;
|
|
296
|
-
for (let i = 0, n = output.length - 2; i < n; i++)
|
|
297
|
-
originalOutput[i] = output[i];
|
|
298
|
-
}
|
|
299
|
-
else
|
|
300
|
-
originalOutput.length = originalOutput.length - 2;
|
|
301
|
-
return clipped;
|
|
302
|
-
}
|
|
303
|
-
static makeClockwise(polygon) {
|
|
304
|
-
let vertices = polygon;
|
|
305
|
-
let verticeslength = polygon.length;
|
|
306
|
-
let area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0;
|
|
307
|
-
for (let i = 0, n = verticeslength - 3; i < n; i += 2) {
|
|
308
|
-
p1x = vertices[i];
|
|
309
|
-
p1y = vertices[i + 1];
|
|
310
|
-
p2x = vertices[i + 2];
|
|
311
|
-
p2y = vertices[i + 3];
|
|
312
|
-
area += p1x * p2y - p2x * p1y;
|
|
313
|
-
}
|
|
314
|
-
if (area < 0)
|
|
315
|
-
return;
|
|
316
|
-
for (let i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) {
|
|
317
|
-
let x = vertices[i], y = vertices[i + 1];
|
|
318
|
-
let other = lastX - i;
|
|
319
|
-
vertices[i] = vertices[other];
|
|
320
|
-
vertices[i + 1] = vertices[other + 1];
|
|
321
|
-
vertices[other] = x;
|
|
322
|
-
vertices[other + 1] = y;
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25DbGlwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta2VsZXRvbkNsaXBwaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUkvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBMEIsTUFBTSxTQUFTLENBQUM7QUFFeEQsTUFBTSxPQUFPLGdCQUFnQjtJQUE3QjtRQUNTLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxvQkFBZSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDdEMsZUFBVSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDekMsb0JBQWUsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ3RDLHFCQUFnQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDL0IsWUFBTyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFFOUIsbUJBQWMsR0FBOEIsSUFBSSxDQUFDO1FBQ2pELHFCQUFnQixHQUFnQyxJQUFJLENBQUM7SUFrVDlELENBQUM7SUFoVEEsU0FBUyxDQUFFLElBQVUsRUFBRSxJQUF3QjtRQUM5QyxJQUFJLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFM0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ2pDLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJ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QW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDakMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFFakMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDakMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDakMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3ZDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUN2QyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDdkMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3ZDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2xDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBRWxDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2xDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2xDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUN2QyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDdkMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3ZDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUN2QyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNsQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3FCQUNsQzt5QkFBTTt3QkFDTixvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNqQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNqQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDckMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3JDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUN0QyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFFdEMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDbEMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDbEMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3ZDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUN2QyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDdkMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3ZDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2xDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2xDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUN0QyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDdEMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3RDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUV0QyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNsQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNsQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDdkMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3ZDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUN2QyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDdkMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDbEMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDbEMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3RDLG9CQUFvQixDQUFD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
|
package/dist/SkeletonData.d.ts
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/******************************************************************************
|
|
2
|
-
* Spine Runtimes License Agreement
|
|
3
|
-
* Last updated September 24, 2021. Replaces all prior versions.
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) 2013-2021, Esoteric Software LLC
|
|
6
|
-
*
|
|
7
|
-
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
-
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
-
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
-
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
-
*
|
|
12
|
-
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
13
|
-
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
-
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
-
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
-
* include this license and copyright notice.
|
|
17
|
-
*
|
|
18
|
-
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
-
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
-
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
-
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
-
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
-
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
-
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
-
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
|
-
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
-
*****************************************************************************/
|
|
29
|
-
import { Animation } from "./Animation";
|
|
30
|
-
import { BoneData } from "./BoneData";
|
|
31
|
-
import { EventData } from "./EventData";
|
|
32
|
-
import { IkConstraintData } from "./IkConstraintData";
|
|
33
|
-
import { PathConstraintData } from "./PathConstraintData";
|
|
34
|
-
import { Skin } from "./Skin";
|
|
35
|
-
import { SlotData } from "./SlotData";
|
|
36
|
-
import { TransformConstraintData } from "./TransformConstraintData";
|
|
37
|
-
/** Stores the setup pose and all of the stateless data for a skeleton.
|
|
38
|
-
*
|
|
39
|
-
* See [Data objects](http://esotericsoftware.com/spine-runtime-architecture#Data-objects) in the Spine Runtimes
|
|
40
|
-
* Guide. */
|
|
41
|
-
export declare class SkeletonData {
|
|
42
|
-
/** The skeleton's name, which by default is the name of the skeleton data file, if possible. May be null. */
|
|
43
|
-
name: string | null;
|
|
44
|
-
/** The skeleton's bones, sorted parent first. The root bone is always the first bone. */
|
|
45
|
-
bones: BoneData[];
|
|
46
|
-
/** The skeleton's slots. */
|
|
47
|
-
slots: SlotData[];
|
|
48
|
-
skins: Skin[];
|
|
49
|
-
/** The skeleton's default skin. By default this skin contains all attachments that were not in a skin in Spine.
|
|
50
|
-
*
|
|
51
|
-
* See {@link Skeleton#getAttachmentByName()}.
|
|
52
|
-
* May be null. */
|
|
53
|
-
defaultSkin: Skin | null;
|
|
54
|
-
/** The skeleton's events. */
|
|
55
|
-
events: EventData[];
|
|
56
|
-
/** The skeleton's animations. */
|
|
57
|
-
animations: Animation[];
|
|
58
|
-
/** The skeleton's IK constraints. */
|
|
59
|
-
ikConstraints: IkConstraintData[];
|
|
60
|
-
/** The skeleton's transform constraints. */
|
|
61
|
-
transformConstraints: TransformConstraintData[];
|
|
62
|
-
/** The skeleton's path constraints. */
|
|
63
|
-
pathConstraints: PathConstraintData[];
|
|
64
|
-
/** The X coordinate of the skeleton's axis aligned bounding box in the setup pose. */
|
|
65
|
-
x: number;
|
|
66
|
-
/** The Y coordinate of the skeleton's axis aligned bounding box in the setup pose. */
|
|
67
|
-
y: number;
|
|
68
|
-
/** The width of the skeleton's axis aligned bounding box in the setup pose. */
|
|
69
|
-
width: number;
|
|
70
|
-
/** The height of the skeleton's axis aligned bounding box in the setup pose. */
|
|
71
|
-
height: number;
|
|
72
|
-
/** The Spine version used to export the skeleton data, or null. */
|
|
73
|
-
version: string | null;
|
|
74
|
-
/** The skeleton data hash. This value will change if any of the skeleton data has changed. May be null. */
|
|
75
|
-
hash: string | null;
|
|
76
|
-
/** The dopesheet FPS in Spine. Available only when nonessential data was exported. */
|
|
77
|
-
fps: number;
|
|
78
|
-
/** The path to the images directory as defined in Spine. Available only when nonessential data was exported. May be null. */
|
|
79
|
-
imagesPath: string | null;
|
|
80
|
-
/** The path to the audio directory as defined in Spine. Available only when nonessential data was exported. May be null. */
|
|
81
|
-
audioPath: string | null;
|
|
82
|
-
/** Finds a bone by comparing each bone's name. It is more efficient to cache the results of this method than to call it
|
|
83
|
-
* multiple times.
|
|
84
|
-
* @returns May be null. */
|
|
85
|
-
findBone(boneName: string): BoneData | null;
|
|
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
|
|
87
|
-
* multiple times.
|
|
88
|
-
* @returns May be null. */
|
|
89
|
-
findSlot(slotName: string): SlotData | null;
|
|
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
|
|
91
|
-
* multiple times.
|
|
92
|
-
* @returns May be null. */
|
|
93
|
-
findSkin(skinName: string): Skin | null;
|
|
94
|
-
/** Finds an event by comparing each events's name. It is more efficient to cache the results of this method than to call it
|
|
95
|
-
* multiple times.
|
|
96
|
-
* @returns May be null. */
|
|
97
|
-
findEvent(eventDataName: string): EventData | null;
|
|
98
|
-
/** Finds an animation by comparing each animation's name. It is more efficient to cache the results of this method than to
|
|
99
|
-
* call it multiple times.
|
|
100
|
-
* @returns May be null. */
|
|
101
|
-
findAnimation(animationName: string): Animation | null;
|
|
102
|
-
/** Finds an IK constraint by comparing each IK constraint's name. It is more efficient to cache the results of this method
|
|
103
|
-
* than to call it multiple times.
|
|
104
|
-
* @return May be null. */
|
|
105
|
-
findIkConstraint(constraintName: string): IkConstraintData | null;
|
|
106
|
-
/** Finds a transform constraint by comparing each transform constraint's name. It is more efficient to cache the results of
|
|
107
|
-
* this method than to call it multiple times.
|
|
108
|
-
* @return May be null. */
|
|
109
|
-
findTransformConstraint(constraintName: string): TransformConstraintData | null;
|
|
110
|
-
/** Finds a path constraint by comparing each path constraint's name. It is more efficient to cache the results of this method
|
|
111
|
-
* than to call it multiple times.
|
|
112
|
-
* @return May be null. */
|
|
113
|
-
findPathConstraint(constraintName: string): PathConstraintData | null;
|
|
114
|
-
}
|