@esotericsoftware/spine-core 4.1.25 → 4.1.28
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/README.md +1 -1
- package/dist/Animation.d.ts +382 -0
- package/dist/Animation.js +2052 -0
- package/dist/AnimationState.d.ts +398 -0
- package/dist/AnimationState.js +1096 -0
- package/dist/AnimationStateData.d.ts +51 -0
- package/dist/AnimationStateData.js +70 -0
- package/dist/AssetManagerBase.d.ts +75 -0
- package/dist/AssetManagerBase.js +320 -0
- package/dist/AtlasAttachmentLoader.d.ts +53 -0
- package/dist/AtlasAttachmentLoader.js +92 -0
- package/dist/Bone.d.ts +138 -0
- package/dist/Bone.js +336 -0
- package/dist/BoneData.d.ts +72 -0
- package/dist/BoneData.js +80 -0
- package/dist/ConstraintData.d.ts +35 -0
- package/dist/ConstraintData.js +37 -0
- package/dist/Event.d.ts +44 -0
- package/dist/Event.js +48 -0
- package/dist/EventData.d.ts +41 -0
- package/dist/EventData.js +43 -0
- package/dist/IkConstraint.d.ts +64 -0
- package/dist/IkConstraint.js +303 -0
- package/dist/IkConstraintData.d.ts +56 -0
- package/dist/IkConstraintData.js +63 -0
- package/dist/PathConstraint.d.ts +71 -0
- package/dist/PathConstraint.js +476 -0
- package/dist/PathConstraintData.d.ts +82 -0
- package/dist/PathConstraintData.js +91 -0
- package/dist/Skeleton.d.ts +163 -0
- package/dist/Skeleton.js +588 -0
- package/dist/SkeletonBinary.d.ts +68 -0
- package/dist/SkeletonBinary.js +1172 -0
- package/dist/SkeletonBounds.d.ts +77 -0
- package/dist/SkeletonBounds.js +219 -0
- package/dist/SkeletonClipping.d.ts +50 -0
- package/dist/SkeletonClipping.js +326 -0
- package/dist/SkeletonData.d.ts +114 -0
- package/dist/SkeletonData.js +190 -0
- package/dist/SkeletonJson.d.ts +53 -0
- package/dist/SkeletonJson.js +1027 -0
- package/dist/Skin.d.ts +71 -0
- package/dist/Skin.js +201 -0
- package/dist/Slot.d.ts +69 -0
- package/dist/Slot.js +93 -0
- package/dist/SlotData.d.ts +57 -0
- package/dist/SlotData.js +64 -0
- package/dist/Texture.d.ts +69 -0
- package/dist/Texture.js +73 -0
- package/dist/TextureAtlas.d.ts +68 -0
- package/dist/TextureAtlas.js +267 -0
- package/dist/TransformConstraint.d.ts +60 -0
- package/dist/TransformConstraint.js +247 -0
- package/dist/TransformConstraintData.d.ts +62 -0
- package/dist/TransformConstraintData.js +69 -0
- package/dist/Triangulator.d.ts +43 -0
- package/dist/Triangulator.js +244 -0
- package/dist/Updatable.d.ts +37 -0
- package/dist/Updatable.js +30 -0
- package/dist/Utils.d.ts +168 -0
- package/dist/Utils.js +404 -0
- package/dist/attachments/Attachment.d.ts +72 -0
- package/dist/attachments/Attachment.js +147 -0
- package/dist/attachments/AttachmentLoader.d.ts +54 -0
- package/dist/attachments/AttachmentLoader.js +30 -0
- package/dist/attachments/BoundingBoxAttachment.d.ts +40 -0
- package/dist/attachments/BoundingBoxAttachment.js +48 -0
- package/dist/attachments/ClippingAttachment.d.ts +42 -0
- package/dist/attachments/ClippingAttachment.js +51 -0
- package/dist/attachments/HasTextureRegion.d.ts +44 -0
- package/dist/attachments/HasTextureRegion.js +30 -0
- package/dist/attachments/MeshAttachment.d.ts +79 -0
- package/dist/attachments/MeshAttachment.js +188 -0
- package/dist/attachments/PathAttachment.d.ts +47 -0
- package/dist/attachments/PathAttachment.js +59 -0
- package/dist/attachments/PointAttachment.d.ts +48 -0
- package/dist/attachments/PointAttachment.js +66 -0
- package/dist/attachments/RegionAttachment.d.ts +110 -0
- package/dist/attachments/RegionAttachment.js +213 -0
- package/dist/attachments/Sequence.d.ts +55 -0
- package/dist/attachments/Sequence.js +91 -0
- package/dist/attachments/index.d.ts +8 -0
- package/dist/attachments/index.js +9 -0
- package/dist/iife/spine-core.js +10708 -0
- package/dist/iife/spine-core.js.map +7 -0
- package/dist/iife/spine-core.min.js +2 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +40 -0
- package/dist/polyfills.d.ts +29 -0
- package/dist/polyfills.js +39 -0
- package/package.json +1 -1
|
@@ -0,0 +1,303 @@
|
|
|
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 { TransformMode } from "./BoneData";
|
|
30
|
+
import { MathUtils } from "./Utils";
|
|
31
|
+
/** Stores the current pose for an IK constraint. An IK constraint adjusts the rotation of 1 or 2 constrained bones so the tip of
|
|
32
|
+
* the last bone is as close to the target bone as possible.
|
|
33
|
+
*
|
|
34
|
+
* See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */
|
|
35
|
+
export class IkConstraint {
|
|
36
|
+
constructor(data, skeleton) {
|
|
37
|
+
/** Controls the bend direction of the IK bones, either 1 or -1. */
|
|
38
|
+
this.bendDirection = 0;
|
|
39
|
+
/** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */
|
|
40
|
+
this.compress = false;
|
|
41
|
+
/** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained
|
|
42
|
+
* and the parent bone has local nonuniform scale, stretch is not applied. */
|
|
43
|
+
this.stretch = false;
|
|
44
|
+
/** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */
|
|
45
|
+
this.mix = 1;
|
|
46
|
+
/** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */
|
|
47
|
+
this.softness = 0;
|
|
48
|
+
this.active = false;
|
|
49
|
+
if (!data)
|
|
50
|
+
throw new Error("data cannot be null.");
|
|
51
|
+
if (!skeleton)
|
|
52
|
+
throw new Error("skeleton cannot be null.");
|
|
53
|
+
this.data = data;
|
|
54
|
+
this.mix = data.mix;
|
|
55
|
+
this.softness = data.softness;
|
|
56
|
+
this.bendDirection = data.bendDirection;
|
|
57
|
+
this.compress = data.compress;
|
|
58
|
+
this.stretch = data.stretch;
|
|
59
|
+
this.bones = new Array();
|
|
60
|
+
for (let i = 0; i < data.bones.length; i++) {
|
|
61
|
+
let bone = skeleton.findBone(data.bones[i].name);
|
|
62
|
+
if (!bone)
|
|
63
|
+
throw new Error(`Couldn't find bone ${data.bones[i].name}`);
|
|
64
|
+
this.bones.push(bone);
|
|
65
|
+
}
|
|
66
|
+
let target = skeleton.findBone(data.target.name);
|
|
67
|
+
if (!target)
|
|
68
|
+
throw new Error(`Couldn't find bone ${data.target.name}`);
|
|
69
|
+
this.target = target;
|
|
70
|
+
}
|
|
71
|
+
isActive() {
|
|
72
|
+
return this.active;
|
|
73
|
+
}
|
|
74
|
+
update() {
|
|
75
|
+
if (this.mix == 0)
|
|
76
|
+
return;
|
|
77
|
+
let target = this.target;
|
|
78
|
+
let bones = this.bones;
|
|
79
|
+
switch (bones.length) {
|
|
80
|
+
case 1:
|
|
81
|
+
this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix);
|
|
82
|
+
break;
|
|
83
|
+
case 2:
|
|
84
|
+
this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.data.uniform, this.softness, this.mix);
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/** Applies 1 bone IK. The target is specified in the world coordinate system. */
|
|
89
|
+
apply1(bone, targetX, targetY, compress, stretch, uniform, alpha) {
|
|
90
|
+
let p = bone.parent;
|
|
91
|
+
if (!p)
|
|
92
|
+
throw new Error("IK bone must have parent.");
|
|
93
|
+
let pa = p.a, pb = p.b, pc = p.c, pd = p.d;
|
|
94
|
+
let rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0;
|
|
95
|
+
switch (bone.data.transformMode) {
|
|
96
|
+
case TransformMode.OnlyTranslation:
|
|
97
|
+
tx = targetX - bone.worldX;
|
|
98
|
+
ty = targetY - bone.worldY;
|
|
99
|
+
break;
|
|
100
|
+
case TransformMode.NoRotationOrReflection:
|
|
101
|
+
let s = Math.abs(pa * pd - pb * pc) / Math.max(0.0001, pa * pa + pc * pc);
|
|
102
|
+
let sa = pa / bone.skeleton.scaleX;
|
|
103
|
+
let sc = pc / bone.skeleton.scaleY;
|
|
104
|
+
pb = -sc * s * bone.skeleton.scaleX;
|
|
105
|
+
pd = sa * s * bone.skeleton.scaleY;
|
|
106
|
+
rotationIK += Math.atan2(sc, sa) * MathUtils.radDeg;
|
|
107
|
+
// Fall through
|
|
108
|
+
default:
|
|
109
|
+
let x = targetX - p.worldX, y = targetY - p.worldY;
|
|
110
|
+
let d = pa * pd - pb * pc;
|
|
111
|
+
if (Math.abs(d) <= 0.0001) {
|
|
112
|
+
tx = 0;
|
|
113
|
+
ty = 0;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
tx = (x * pd - y * pb) / d - bone.ax;
|
|
117
|
+
ty = (y * pa - x * pc) / d - bone.ay;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
rotationIK += Math.atan2(ty, tx) * MathUtils.radDeg;
|
|
121
|
+
if (bone.ascaleX < 0)
|
|
122
|
+
rotationIK += 180;
|
|
123
|
+
if (rotationIK > 180)
|
|
124
|
+
rotationIK -= 360;
|
|
125
|
+
else if (rotationIK < -180)
|
|
126
|
+
rotationIK += 360;
|
|
127
|
+
let sx = bone.ascaleX, sy = bone.ascaleY;
|
|
128
|
+
if (compress || stretch) {
|
|
129
|
+
switch (bone.data.transformMode) {
|
|
130
|
+
case TransformMode.NoScale:
|
|
131
|
+
case TransformMode.NoScaleOrReflection:
|
|
132
|
+
tx = targetX - bone.worldX;
|
|
133
|
+
ty = targetY - bone.worldY;
|
|
134
|
+
}
|
|
135
|
+
let b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty);
|
|
136
|
+
if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) {
|
|
137
|
+
let s = (dd / b - 1) * alpha + 1;
|
|
138
|
+
sx *= s;
|
|
139
|
+
if (uniform)
|
|
140
|
+
sy *= s;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY);
|
|
144
|
+
}
|
|
145
|
+
/** Applies 2 bone IK. The target is specified in the world coordinate system.
|
|
146
|
+
* @param child A direct descendant of the parent bone. */
|
|
147
|
+
apply2(parent, child, targetX, targetY, bendDir, stretch, uniform, softness, alpha) {
|
|
148
|
+
let px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, sx = psx, sy = psy, csx = child.ascaleX;
|
|
149
|
+
let os1 = 0, os2 = 0, s2 = 0;
|
|
150
|
+
if (psx < 0) {
|
|
151
|
+
psx = -psx;
|
|
152
|
+
os1 = 180;
|
|
153
|
+
s2 = -1;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
os1 = 0;
|
|
157
|
+
s2 = 1;
|
|
158
|
+
}
|
|
159
|
+
if (psy < 0) {
|
|
160
|
+
psy = -psy;
|
|
161
|
+
s2 = -s2;
|
|
162
|
+
}
|
|
163
|
+
if (csx < 0) {
|
|
164
|
+
csx = -csx;
|
|
165
|
+
os2 = 180;
|
|
166
|
+
}
|
|
167
|
+
else
|
|
168
|
+
os2 = 0;
|
|
169
|
+
let cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d;
|
|
170
|
+
let u = Math.abs(psx - psy) <= 0.0001;
|
|
171
|
+
if (!u || stretch) {
|
|
172
|
+
cy = 0;
|
|
173
|
+
cwx = a * cx + parent.worldX;
|
|
174
|
+
cwy = c * cx + parent.worldY;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
cy = child.ay;
|
|
178
|
+
cwx = a * cx + b * cy + parent.worldX;
|
|
179
|
+
cwy = c * cx + d * cy + parent.worldY;
|
|
180
|
+
}
|
|
181
|
+
let pp = parent.parent;
|
|
182
|
+
if (!pp)
|
|
183
|
+
throw new Error("IK parent must itself have a parent.");
|
|
184
|
+
a = pp.a;
|
|
185
|
+
b = pp.b;
|
|
186
|
+
c = pp.c;
|
|
187
|
+
d = pp.d;
|
|
188
|
+
let id = a * d - b * c, x = cwx - pp.worldX, y = cwy - pp.worldY;
|
|
189
|
+
id = Math.abs(id) <= 0.0001 ? 0 : 1 / id;
|
|
190
|
+
let dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py;
|
|
191
|
+
let l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2;
|
|
192
|
+
if (l1 < 0.0001) {
|
|
193
|
+
this.apply1(parent, targetX, targetY, false, stretch, false, alpha);
|
|
194
|
+
child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
x = targetX - pp.worldX;
|
|
198
|
+
y = targetY - pp.worldY;
|
|
199
|
+
let tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py;
|
|
200
|
+
let dd = tx * tx + ty * ty;
|
|
201
|
+
if (softness != 0) {
|
|
202
|
+
softness *= psx * (csx + 1) * 0.5;
|
|
203
|
+
let td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness;
|
|
204
|
+
if (sd > 0) {
|
|
205
|
+
let p = Math.min(1, sd / (softness * 2)) - 1;
|
|
206
|
+
p = (sd - softness * (1 - p * p)) / td;
|
|
207
|
+
tx -= p * tx;
|
|
208
|
+
ty -= p * ty;
|
|
209
|
+
dd = tx * tx + ty * ty;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
outer: if (u) {
|
|
213
|
+
l2 *= psx;
|
|
214
|
+
let cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2);
|
|
215
|
+
if (cos < -1) {
|
|
216
|
+
cos = -1;
|
|
217
|
+
a2 = Math.PI * bendDir;
|
|
218
|
+
}
|
|
219
|
+
else if (cos > 1) {
|
|
220
|
+
cos = 1;
|
|
221
|
+
a2 = 0;
|
|
222
|
+
if (stretch) {
|
|
223
|
+
a = (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1;
|
|
224
|
+
sx *= a;
|
|
225
|
+
if (uniform)
|
|
226
|
+
sy *= a;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else
|
|
230
|
+
a2 = Math.acos(cos) * bendDir;
|
|
231
|
+
a = l1 + l2 * cos;
|
|
232
|
+
b = l2 * Math.sin(a2);
|
|
233
|
+
a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
a = psx * l2;
|
|
237
|
+
b = psy * l2;
|
|
238
|
+
let aa = a * a, bb = b * b, ta = Math.atan2(ty, tx);
|
|
239
|
+
c = bb * l1 * l1 + aa * dd - aa * bb;
|
|
240
|
+
let c1 = -2 * bb * l1, c2 = bb - aa;
|
|
241
|
+
d = c1 * c1 - 4 * c2 * c;
|
|
242
|
+
if (d >= 0) {
|
|
243
|
+
let q = Math.sqrt(d);
|
|
244
|
+
if (c1 < 0)
|
|
245
|
+
q = -q;
|
|
246
|
+
q = -(c1 + q) * 0.5;
|
|
247
|
+
let r0 = q / c2, r1 = c / q;
|
|
248
|
+
let r = Math.abs(r0) < Math.abs(r1) ? r0 : r1;
|
|
249
|
+
if (r * r <= dd) {
|
|
250
|
+
y = Math.sqrt(dd - r * r) * bendDir;
|
|
251
|
+
a1 = ta - Math.atan2(y, r);
|
|
252
|
+
a2 = Math.atan2(y / psy, (r - l1) / psx);
|
|
253
|
+
break outer;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
let minAngle = MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
|
|
257
|
+
let maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
|
|
258
|
+
c = -a * l1 / (aa - bb);
|
|
259
|
+
if (c >= -1 && c <= 1) {
|
|
260
|
+
c = Math.acos(c);
|
|
261
|
+
x = a * Math.cos(c) + l1;
|
|
262
|
+
y = b * Math.sin(c);
|
|
263
|
+
d = x * x + y * y;
|
|
264
|
+
if (d < minDist) {
|
|
265
|
+
minAngle = c;
|
|
266
|
+
minDist = d;
|
|
267
|
+
minX = x;
|
|
268
|
+
minY = y;
|
|
269
|
+
}
|
|
270
|
+
if (d > maxDist) {
|
|
271
|
+
maxAngle = c;
|
|
272
|
+
maxDist = d;
|
|
273
|
+
maxX = x;
|
|
274
|
+
maxY = y;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
if (dd <= (minDist + maxDist) * 0.5) {
|
|
278
|
+
a1 = ta - Math.atan2(minY * bendDir, minX);
|
|
279
|
+
a2 = minAngle * bendDir;
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
a1 = ta - Math.atan2(maxY * bendDir, maxX);
|
|
283
|
+
a2 = maxAngle * bendDir;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
let os = Math.atan2(cy, cx) * s2;
|
|
287
|
+
let rotation = parent.arotation;
|
|
288
|
+
a1 = (a1 - os) * MathUtils.radDeg + os1 - rotation;
|
|
289
|
+
if (a1 > 180)
|
|
290
|
+
a1 -= 360;
|
|
291
|
+
else if (a1 < -180) //
|
|
292
|
+
a1 += 360;
|
|
293
|
+
parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, sy, 0, 0);
|
|
294
|
+
rotation = child.arotation;
|
|
295
|
+
a2 = ((a2 + os) * MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation;
|
|
296
|
+
if (a2 > 180)
|
|
297
|
+
a2 -= 360;
|
|
298
|
+
else if (a2 < -180) //
|
|
299
|
+
a2 += 360;
|
|
300
|
+
child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSWtDb25zdHJhaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0lrQ29uc3RyYWludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFHL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUkzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXBDOzs7cUdBR3FHO0FBQ3JHLE1BQU0sT0FBTyxZQUFZO0lBMkJ4QixZQUFhLElBQXNCLEVBQUUsUUFBa0I7UUFqQnZELG1FQUFtRTtRQUNuRSxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVsQix5SEFBeUg7UUFDekgsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQjtxRkFDNkU7UUFDN0UsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixvR0FBb0c7UUFDcEcsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUVSLGlHQUFpRztRQUNqRyxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUdkLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FB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UUFDN0IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO1lBQ1osR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ1gsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNWLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNSO2FBQU07WUFDTixHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ1IsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNQO1FBQ0QsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO1lBQ1osR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ1gsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1NBQ1Q7UUFDRCxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDWixHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDWCxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQ1Y7O1lBQ0EsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNULElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxFQUFFO1lBQ2xCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDUCxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzdCLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDN0I7YUFBTTtZQUNOLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2QsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3RDLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUN0QztRQUNELElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLEVBQUU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDakUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDVCxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNULENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ1QsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDVCxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNqRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNuRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFH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
|
|
@@ -0,0 +1,56 @@
|
|
|
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 { BoneData } from "./BoneData";
|
|
30
|
+
import { ConstraintData } from "./ConstraintData";
|
|
31
|
+
/** Stores the setup pose for an {@link IkConstraint}.
|
|
32
|
+
* <p>
|
|
33
|
+
* See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */
|
|
34
|
+
export declare class IkConstraintData extends ConstraintData {
|
|
35
|
+
/** The bones that are constrained by this IK constraint. */
|
|
36
|
+
bones: BoneData[];
|
|
37
|
+
/** The bone that is the IK target. */
|
|
38
|
+
private _target;
|
|
39
|
+
set target(boneData: BoneData);
|
|
40
|
+
get target(): BoneData;
|
|
41
|
+
/** Controls the bend direction of the IK bones, either 1 or -1. */
|
|
42
|
+
bendDirection: number;
|
|
43
|
+
/** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */
|
|
44
|
+
compress: boolean;
|
|
45
|
+
/** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained
|
|
46
|
+
* and the parent bone has local nonuniform scale, stretch is not applied. */
|
|
47
|
+
stretch: boolean;
|
|
48
|
+
/** When true, only a single bone is being constrained, and {@link #getCompress()} or {@link #getStretch()} is used, the bone
|
|
49
|
+
* is scaled on both the X and Y axes. */
|
|
50
|
+
uniform: boolean;
|
|
51
|
+
/** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */
|
|
52
|
+
mix: number;
|
|
53
|
+
/** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */
|
|
54
|
+
softness: number;
|
|
55
|
+
constructor(name: string);
|
|
56
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
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 { ConstraintData } from "./ConstraintData";
|
|
30
|
+
/** Stores the setup pose for an {@link IkConstraint}.
|
|
31
|
+
* <p>
|
|
32
|
+
* See [IK constraints](http://esotericsoftware.com/spine-ik-constraints) in the Spine User Guide. */
|
|
33
|
+
export class IkConstraintData extends ConstraintData {
|
|
34
|
+
set target(boneData) { this._target = boneData; }
|
|
35
|
+
get target() {
|
|
36
|
+
if (!this._target)
|
|
37
|
+
throw new Error("BoneData not set.");
|
|
38
|
+
else
|
|
39
|
+
return this._target;
|
|
40
|
+
}
|
|
41
|
+
constructor(name) {
|
|
42
|
+
super(name, 0, false);
|
|
43
|
+
/** The bones that are constrained by this IK constraint. */
|
|
44
|
+
this.bones = new Array();
|
|
45
|
+
/** The bone that is the IK target. */
|
|
46
|
+
this._target = null;
|
|
47
|
+
/** Controls the bend direction of the IK bones, either 1 or -1. */
|
|
48
|
+
this.bendDirection = 1;
|
|
49
|
+
/** When true and only a single bone is being constrained, if the target is too close, the bone is scaled to reach it. */
|
|
50
|
+
this.compress = false;
|
|
51
|
+
/** When true, if the target is out of range, the parent bone is scaled to reach it. If more than one bone is being constrained
|
|
52
|
+
* and the parent bone has local nonuniform scale, stretch is not applied. */
|
|
53
|
+
this.stretch = false;
|
|
54
|
+
/** When true, only a single bone is being constrained, and {@link #getCompress()} or {@link #getStretch()} is used, the bone
|
|
55
|
+
* is scaled on both the X and Y axes. */
|
|
56
|
+
this.uniform = false;
|
|
57
|
+
/** A percentage (0-1) that controls the mix between the constrained and unconstrained rotations. */
|
|
58
|
+
this.mix = 1;
|
|
59
|
+
/** For two bone IK, the distance from the maximum reach of the bones that rotation will slow. */
|
|
60
|
+
this.softness = 0;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSWtDb25zdHJhaW50RGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ja0NvbnN0cmFpbnREYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUcvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHbEQ7O3FHQUVxRztBQUNyRyxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsY0FBYztJQU1uRCxJQUFXLE1BQU0sQ0FBRSxRQUFrQixJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRSxJQUFXLE1BQU07UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBOztZQUNsRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQXNCRCxZQUFhLElBQVk7UUFDeEIsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFoQ3ZCLDREQUE0RDtRQUM1RCxVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQztRQUU5QixzQ0FBc0M7UUFDOUIsWUFBTyxHQUFvQixJQUFJLENBQUM7UUFPeEMsbUVBQW1FO1FBQ25FLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLHlIQUF5SDtRQUN6SCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCO3FGQUM2RTtRQUM3RSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCO2lEQUN5QztRQUN6QyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLG9HQUFvRztRQUNwRyxRQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRVIsaUdBQWlHO1FBQ2pHLGFBQVEsR0FBRyxDQUFDLENBQUM7SUFJYixDQUFDO0NBQ0QifQ==
|
|
@@ -0,0 +1,71 @@
|
|
|
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 { PathAttachment } from "./attachments/PathAttachment";
|
|
30
|
+
import { Bone } from "./Bone";
|
|
31
|
+
import { PathConstraintData } from "./PathConstraintData";
|
|
32
|
+
import { Skeleton } from "./Skeleton";
|
|
33
|
+
import { Slot } from "./Slot";
|
|
34
|
+
import { Updatable } from "./Updatable";
|
|
35
|
+
/** Stores the current pose for a path constraint. A path constraint adjusts the rotation, translation, and scale of the
|
|
36
|
+
* constrained bones so they follow a {@link PathAttachment}.
|
|
37
|
+
*
|
|
38
|
+
* See [Path constraints](http://esotericsoftware.com/spine-path-constraints) in the Spine User Guide. */
|
|
39
|
+
export declare class PathConstraint implements Updatable {
|
|
40
|
+
static NONE: number;
|
|
41
|
+
static BEFORE: number;
|
|
42
|
+
static AFTER: number;
|
|
43
|
+
static epsilon: number;
|
|
44
|
+
/** The path constraint's setup pose data. */
|
|
45
|
+
data: PathConstraintData;
|
|
46
|
+
/** The bones that will be modified by this path constraint. */
|
|
47
|
+
bones: Array<Bone>;
|
|
48
|
+
/** The slot whose path attachment will be used to constrained the bones. */
|
|
49
|
+
target: Slot;
|
|
50
|
+
/** The position along the path. */
|
|
51
|
+
position: number;
|
|
52
|
+
/** The spacing between bones. */
|
|
53
|
+
spacing: number;
|
|
54
|
+
mixRotate: number;
|
|
55
|
+
mixX: number;
|
|
56
|
+
mixY: number;
|
|
57
|
+
spaces: number[];
|
|
58
|
+
positions: number[];
|
|
59
|
+
world: number[];
|
|
60
|
+
curves: number[];
|
|
61
|
+
lengths: number[];
|
|
62
|
+
segments: number[];
|
|
63
|
+
active: boolean;
|
|
64
|
+
constructor(data: PathConstraintData, skeleton: Skeleton);
|
|
65
|
+
isActive(): boolean;
|
|
66
|
+
update(): void;
|
|
67
|
+
computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[];
|
|
68
|
+
addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
|
|
69
|
+
addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
|
|
70
|
+
addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
|
|
71
|
+
}
|