@esotericsoftware/spine-core 4.2.117 → 4.3.1
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/Animation.d.ts +426 -274
- package/dist/Animation.js +1174 -1210
- package/dist/AnimationState.d.ts +246 -201
- package/dist/AnimationState.js +508 -471
- package/dist/AnimationStateData.d.ts +12 -10
- package/dist/AnimationStateData.js +19 -20
- package/dist/AssetManagerBase.d.ts +27 -21
- package/dist/AssetManagerBase.js +67 -43
- package/dist/AtlasAttachmentLoader.d.ts +18 -12
- package/dist/AtlasAttachmentLoader.js +28 -39
- package/dist/Bone.d.ts +15 -109
- package/dist/Bone.js +22 -362
- package/dist/BoneData.d.ts +13 -28
- package/dist/BoneData.js +20 -29
- package/dist/BonePose.d.ts +132 -0
- package/dist/BonePose.js +456 -0
- package/dist/Constraint.d.ts +41 -0
- package/dist/Constraint.js +38 -0
- package/dist/ConstraintData.d.ts +16 -5
- package/dist/ConstraintData.js +15 -9
- package/dist/DrawOrder.d.ts +48 -0
- package/dist/DrawOrder.js +64 -0
- package/dist/Event.d.ts +11 -6
- package/dist/Event.js +10 -5
- package/dist/EventData.d.ts +10 -6
- package/dist/EventData.js +18 -7
- package/dist/IkConstraint.d.ts +23 -28
- package/dist/IkConstraint.js +122 -124
- package/dist/IkConstraintData.d.ts +14 -19
- package/dist/IkConstraintData.js +22 -23
- package/dist/IkConstraintPose.d.ts +49 -0
- package/dist/IkConstraintPose.js +55 -0
- package/dist/PathConstraint.d.ts +18 -23
- package/dist/PathConstraint.js +162 -139
- package/dist/PathConstraintData.d.ts +11 -14
- package/dist/PathConstraintData.js +14 -16
- package/dist/PathConstraintPose.d.ts +43 -0
- package/dist/PathConstraintPose.js +49 -0
- package/dist/Physics.d.ts +39 -0
- package/dist/Physics.js +41 -0
- package/dist/PhysicsConstraint.d.ts +26 -30
- package/dist/PhysicsConstraint.js +114 -94
- package/dist/PhysicsConstraintData.d.ts +28 -13
- package/dist/PhysicsConstraintData.js +35 -13
- package/dist/PhysicsConstraintPose.d.ts +47 -0
- package/dist/PhysicsConstraintPose.js +55 -0
- package/dist/Pose.d.ts +33 -0
- package/dist/Pose.js +30 -0
- package/dist/Posed.d.ts +58 -0
- package/dist/Posed.js +78 -0
- package/dist/PosedActive.d.ts +41 -0
- package/dist/{attachments/HasTextureRegion.js → PosedActive.js} +17 -2
- package/dist/PosedData.d.ts +40 -0
- package/dist/PosedData.js +45 -0
- package/dist/Skeleton.d.ts +110 -99
- package/dist/Skeleton.js +271 -449
- package/dist/SkeletonBinary.d.ts +1 -1
- package/dist/SkeletonBinary.js +655 -466
- package/dist/SkeletonBounds.d.ts +4 -4
- package/dist/SkeletonBounds.js +45 -46
- package/dist/SkeletonClipping.d.ts +26 -22
- package/dist/SkeletonClipping.js +654 -340
- package/dist/SkeletonData.d.ts +18 -35
- package/dist/SkeletonData.js +57 -97
- package/dist/SkeletonJson.d.ts +8 -6
- package/dist/SkeletonJson.js +895 -640
- package/dist/SkeletonRendererCore.d.ts +58 -0
- package/dist/SkeletonRendererCore.js +310 -0
- package/dist/Skin.d.ts +20 -16
- package/dist/Skin.js +58 -53
- package/dist/Slider.d.ts +46 -0
- package/dist/Slider.js +115 -0
- package/dist/SliderData.d.ts +58 -0
- package/dist/SliderData.js +59 -0
- package/dist/SliderPose.d.ts +37 -0
- package/dist/SliderPose.js +40 -0
- package/dist/Slot.d.ts +16 -38
- package/dist/Slot.js +37 -60
- package/dist/SlotData.d.ts +5 -12
- package/dist/SlotData.js +7 -15
- package/dist/SlotPose.d.ts +59 -0
- package/dist/SlotPose.js +81 -0
- package/dist/Texture.d.ts +1 -0
- package/dist/Texture.js +2 -1
- package/dist/TextureAtlas.d.ts +3 -3
- package/dist/TextureAtlas.js +49 -49
- package/dist/TransformConstraint.d.ts +16 -28
- package/dist/TransformConstraint.js +72 -209
- package/dist/TransformConstraintData.d.ts +108 -20
- package/dist/TransformConstraintData.js +274 -24
- package/dist/TransformConstraintPose.d.ts +45 -0
- package/dist/TransformConstraintPose.js +52 -0
- package/dist/Triangulator.d.ts +1 -1
- package/dist/Triangulator.js +91 -107
- package/dist/{Updatable.d.ts → Update.d.ts} +5 -12
- package/dist/Update.js +30 -0
- package/dist/Utils.d.ts +14 -3
- package/dist/Utils.js +80 -37
- package/dist/attachments/Attachment.d.ts +27 -19
- package/dist/attachments/Attachment.js +59 -35
- package/dist/attachments/AttachmentLoader.d.ts +14 -14
- package/dist/attachments/AttachmentLoader.js +1 -1
- package/dist/attachments/BoundingBoxAttachment.d.ts +1 -1
- package/dist/attachments/BoundingBoxAttachment.js +2 -2
- package/dist/attachments/ClippingAttachment.d.ts +10 -3
- package/dist/attachments/ClippingAttachment.js +12 -3
- package/dist/attachments/{HasTextureRegion.d.ts → HasSequence.d.ts} +11 -14
- package/dist/attachments/HasSequence.js +30 -0
- package/dist/attachments/MeshAttachment.d.ts +28 -35
- package/dist/attachments/MeshAttachment.js +85 -97
- package/dist/attachments/PathAttachment.d.ts +3 -3
- package/dist/attachments/PathAttachment.js +6 -6
- package/dist/attachments/PointAttachment.d.ts +11 -6
- package/dist/attachments/PointAttachment.js +8 -3
- package/dist/attachments/RegionAttachment.d.ts +25 -27
- package/dist/attachments/RegionAttachment.js +101 -113
- package/dist/attachments/Sequence.d.ts +31 -6
- package/dist/attachments/Sequence.js +79 -13
- package/dist/esm/spine-core.min.mjs +2 -2
- package/dist/esm/spine-core.mjs +7747 -6116
- package/dist/esm/spine-core.mjs.map +4 -4
- package/dist/iife/spine-core.js +7747 -6116
- package/dist/iife/spine-core.js.map +4 -4
- package/dist/iife/spine-core.min.js +2 -2
- package/dist/index.d.ts +32 -11
- package/dist/index.js +33 -12
- package/dist/polyfills.js +4 -5
- package/package.json +1 -1
- package/dist/Updatable.js +0 -30
|
@@ -27,43 +27,293 @@
|
|
|
27
27
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
*****************************************************************************/
|
|
29
29
|
import { ConstraintData } from "./ConstraintData.js";
|
|
30
|
+
import { TransformConstraint } from "./TransformConstraint.js";
|
|
31
|
+
import { TransformConstraintPose } from "./TransformConstraintPose.js";
|
|
32
|
+
import { MathUtils } from "./Utils.js";
|
|
30
33
|
/** Stores the setup pose for a {@link TransformConstraint}.
|
|
31
34
|
*
|
|
32
35
|
* See [Transform constraints](http://esotericsoftware.com/spine-transform-constraints) in the Spine User Guide. */
|
|
33
36
|
export class TransformConstraintData extends ConstraintData {
|
|
37
|
+
static ROTATION = 0;
|
|
38
|
+
static X = 1;
|
|
39
|
+
static Y = 2;
|
|
40
|
+
static SCALEX = 3;
|
|
41
|
+
static SCALEY = 4;
|
|
42
|
+
static SHEARY = 5;
|
|
34
43
|
/** The bones that will be modified by this transform constraint. */
|
|
35
|
-
bones =
|
|
36
|
-
/** The
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (!this._target)
|
|
44
|
+
bones = [];
|
|
45
|
+
/** The bone whose world transform will be copied to the constrained bones. */
|
|
46
|
+
set source(source) { this._source = source; }
|
|
47
|
+
get source() {
|
|
48
|
+
if (!this._source)
|
|
41
49
|
throw new Error("BoneData not set.");
|
|
42
50
|
else
|
|
43
|
-
return this.
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
mixY = 0;
|
|
48
|
-
mixScaleX = 0;
|
|
49
|
-
mixScaleY = 0;
|
|
50
|
-
mixShearY = 0;
|
|
51
|
-
/** An offset added to the constrained bone rotation. */
|
|
52
|
-
offsetRotation = 0;
|
|
51
|
+
return this._source;
|
|
52
|
+
}
|
|
53
|
+
_source = null;
|
|
54
|
+
offsets = [0, 0, 0, 0, 0, 0];
|
|
53
55
|
/** An offset added to the constrained bone X translation. */
|
|
54
56
|
offsetX = 0;
|
|
55
57
|
/** An offset added to the constrained bone Y translation. */
|
|
56
58
|
offsetY = 0;
|
|
59
|
+
/** Reads the source bone's local transform instead of its world transform. */
|
|
60
|
+
localSource = false;
|
|
61
|
+
/** Sets the constrained bones' local transforms instead of their world transforms. */
|
|
62
|
+
localTarget = false;
|
|
63
|
+
/** Adds the source bone transform to the constrained bones instead of setting it absolutely. */
|
|
64
|
+
additive = false;
|
|
65
|
+
/** Prevents constrained bones from exceeding the ranged defined by {@link ToProperty.offset} and {@link ToProperty.max}. */
|
|
66
|
+
clamp = false;
|
|
67
|
+
/** The mapping of transform properties to other transform properties. */
|
|
68
|
+
properties = [];
|
|
69
|
+
constructor(name) {
|
|
70
|
+
super(name, new TransformConstraintPose());
|
|
71
|
+
}
|
|
72
|
+
create(skeleton) {
|
|
73
|
+
return new TransformConstraint(this, skeleton);
|
|
74
|
+
}
|
|
75
|
+
/** An offset added to the constrained bone rotation. */
|
|
76
|
+
getOffsetRotation() {
|
|
77
|
+
return this.offsets[TransformConstraintData.ROTATION];
|
|
78
|
+
}
|
|
79
|
+
setOffsetRotation(offsetRotation) {
|
|
80
|
+
this.offsets[TransformConstraintData.ROTATION] = offsetRotation;
|
|
81
|
+
}
|
|
82
|
+
/** An offset added to the constrained bone X translation. */
|
|
83
|
+
getOffsetX() {
|
|
84
|
+
return this.offsets[TransformConstraintData.X];
|
|
85
|
+
}
|
|
86
|
+
setOffsetX(offsetX) {
|
|
87
|
+
this.offsets[TransformConstraintData.X] = offsetX;
|
|
88
|
+
}
|
|
89
|
+
/** An offset added to the constrained bone Y translation. */
|
|
90
|
+
getOffsetY() {
|
|
91
|
+
return this.offsets[TransformConstraintData.Y];
|
|
92
|
+
}
|
|
93
|
+
setOffsetY(offsetY) {
|
|
94
|
+
this.offsets[TransformConstraintData.Y] = offsetY;
|
|
95
|
+
}
|
|
57
96
|
/** An offset added to the constrained bone scaleX. */
|
|
58
|
-
|
|
97
|
+
getOffsetScaleX() {
|
|
98
|
+
return this.offsets[TransformConstraintData.SCALEX];
|
|
99
|
+
}
|
|
100
|
+
setOffsetScaleX(offsetScaleX) {
|
|
101
|
+
this.offsets[TransformConstraintData.SCALEX] = offsetScaleX;
|
|
102
|
+
}
|
|
59
103
|
/** An offset added to the constrained bone scaleY. */
|
|
60
|
-
|
|
104
|
+
getOffsetScaleY() {
|
|
105
|
+
return this.offsets[TransformConstraintData.SCALEY];
|
|
106
|
+
}
|
|
107
|
+
setOffsetScaleY(offsetScaleY) {
|
|
108
|
+
this.offsets[TransformConstraintData.SCALEY] = offsetScaleY;
|
|
109
|
+
}
|
|
61
110
|
/** An offset added to the constrained bone shearY. */
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
111
|
+
getOffsetShearY() {
|
|
112
|
+
return this.offsets[TransformConstraintData.SHEARY];
|
|
113
|
+
}
|
|
114
|
+
setOffsetShearY(offsetShearY) {
|
|
115
|
+
this.offsets[TransformConstraintData.SHEARY] = offsetShearY;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/** Source property for a {@link TransformConstraint}. */
|
|
119
|
+
export class FromProperty {
|
|
120
|
+
/** The value of this property that corresponds to {@link ToProperty.offset}. */
|
|
121
|
+
offset = 0;
|
|
122
|
+
/** Constrained properties. */
|
|
123
|
+
to = [];
|
|
124
|
+
}
|
|
125
|
+
/** Constrained property for a {@link TransformConstraint}. */
|
|
126
|
+
export class ToProperty {
|
|
127
|
+
/** The value of this property that corresponds to {@link FromProperty.offset}. */
|
|
128
|
+
offset = 0;
|
|
129
|
+
/** The maximum value of this property when {@link TransformConstraintData.clamp clamped}. */
|
|
130
|
+
max = 0;
|
|
131
|
+
/** The scale of the {@link FromProperty} value in relation to this property. */
|
|
132
|
+
scale = 0;
|
|
133
|
+
}
|
|
134
|
+
export class FromRotate extends FromProperty {
|
|
135
|
+
value(skeleton, source, local, offsets) {
|
|
136
|
+
if (local)
|
|
137
|
+
return source.rotation + offsets[TransformConstraintData.ROTATION];
|
|
138
|
+
const sx = skeleton.scaleX, sy = skeleton.scaleY;
|
|
139
|
+
let value = Math.atan2(source.c / sy, source.a / sx) * MathUtils.radDeg
|
|
140
|
+
+ ((source.a * source.d - source.b * source.c) * sx * sy > 0 ? offsets[TransformConstraintData.ROTATION] : -offsets[TransformConstraintData.ROTATION]);
|
|
141
|
+
if (value < 0)
|
|
142
|
+
value += 360;
|
|
143
|
+
return value;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
export class ToRotate extends ToProperty {
|
|
147
|
+
mix(pose) {
|
|
148
|
+
return pose.mixRotate;
|
|
149
|
+
}
|
|
150
|
+
apply(skeleton, pose, bone, value, local, additive) {
|
|
151
|
+
if (local)
|
|
152
|
+
bone.rotation += (additive ? value : value - bone.rotation) * pose.mixRotate;
|
|
153
|
+
else {
|
|
154
|
+
const sx = skeleton.scaleX, sy = skeleton.scaleY, ix = 1 / sx, iy = 1 / sy;
|
|
155
|
+
const a = bone.a * ix, b = bone.b * ix, c = bone.c * iy, d = bone.d * iy;
|
|
156
|
+
value *= MathUtils.degRad;
|
|
157
|
+
if (!additive)
|
|
158
|
+
value -= Math.atan2(c, a);
|
|
159
|
+
if (value > MathUtils.PI)
|
|
160
|
+
value -= MathUtils.PI2;
|
|
161
|
+
else if (value < -MathUtils.PI) //
|
|
162
|
+
value += MathUtils.PI2;
|
|
163
|
+
value *= pose.mixRotate;
|
|
164
|
+
const cos = Math.cos(value), sin = Math.sin(value);
|
|
165
|
+
bone.a = (cos * a - sin * c) * sx;
|
|
166
|
+
bone.b = (cos * b - sin * d) * sx;
|
|
167
|
+
bone.c = (sin * a + cos * c) * sy;
|
|
168
|
+
bone.d = (sin * b + cos * d) * sy;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
export class FromX extends FromProperty {
|
|
173
|
+
value(skeleton, source, local, offsets) {
|
|
174
|
+
return local
|
|
175
|
+
? source.x + offsets[TransformConstraintData.X]
|
|
176
|
+
: (offsets[TransformConstraintData.X] * source.a + offsets[TransformConstraintData.Y] * source.b + source.worldX) / skeleton.scaleX;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export class ToX extends ToProperty {
|
|
180
|
+
mix(pose) {
|
|
181
|
+
return pose.mixX;
|
|
182
|
+
}
|
|
183
|
+
apply(skeleton, pose, bone, value, local, additive) {
|
|
184
|
+
if (local)
|
|
185
|
+
bone.x += (additive ? value : value - bone.x) * pose.mixX;
|
|
186
|
+
else {
|
|
187
|
+
if (!additive)
|
|
188
|
+
value -= bone.worldX / skeleton.scaleX;
|
|
189
|
+
bone.worldX += value * pose.mixX * skeleton.scaleX;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
export class FromY extends FromProperty {
|
|
194
|
+
value(skeleton, source, local, offsets) {
|
|
195
|
+
return local
|
|
196
|
+
? source.y + offsets[TransformConstraintData.Y]
|
|
197
|
+
: (offsets[TransformConstraintData.X] * source.c + offsets[TransformConstraintData.Y] * source.d + source.worldY) / skeleton.scaleY;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
export class ToY extends ToProperty {
|
|
201
|
+
mix(pose) {
|
|
202
|
+
return pose.mixY;
|
|
203
|
+
}
|
|
204
|
+
apply(skeleton, pose, bone, value, local, additive) {
|
|
205
|
+
if (local)
|
|
206
|
+
bone.y += (additive ? value : value - bone.y) * pose.mixY;
|
|
207
|
+
else {
|
|
208
|
+
if (!additive)
|
|
209
|
+
value -= bone.worldY / skeleton.scaleY;
|
|
210
|
+
bone.worldY += value * pose.mixY * skeleton.scaleY;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
export class FromScaleX extends FromProperty {
|
|
215
|
+
value(skeleton, source, local, offsets) {
|
|
216
|
+
if (local)
|
|
217
|
+
return source.scaleX + offsets[TransformConstraintData.SCALEX];
|
|
218
|
+
const a = source.a / skeleton.scaleX, c = source.c / skeleton.scaleY;
|
|
219
|
+
return Math.sqrt(a * a + c * c) + offsets[TransformConstraintData.SCALEX];
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
export class ToScaleX extends ToProperty {
|
|
223
|
+
mix(pose) {
|
|
224
|
+
return pose.mixScaleX;
|
|
225
|
+
}
|
|
226
|
+
apply(skeleton, pose, bone, value, local, additive) {
|
|
227
|
+
if (local) {
|
|
228
|
+
if (additive)
|
|
229
|
+
bone.scaleX *= 1 + (value - 1) * pose.mixScaleX;
|
|
230
|
+
else if (bone.scaleX !== 0) //
|
|
231
|
+
bone.scaleX += (value - bone.scaleX) * pose.mixScaleX;
|
|
232
|
+
}
|
|
233
|
+
else if (additive) {
|
|
234
|
+
const s = 1 + (value - 1) * pose.mixScaleX;
|
|
235
|
+
bone.a *= s;
|
|
236
|
+
bone.c *= s;
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
let a = bone.a / skeleton.scaleX, c = bone.c / skeleton.scaleY, s = Math.sqrt(a * a + c * c);
|
|
240
|
+
if (s !== 0) {
|
|
241
|
+
s = 1 + (value - s) * pose.mixScaleX / s;
|
|
242
|
+
bone.a *= s;
|
|
243
|
+
bone.c *= s;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
export class FromScaleY extends FromProperty {
|
|
249
|
+
value(skeleton, source, local, offsets) {
|
|
250
|
+
if (local)
|
|
251
|
+
return source.scaleY + offsets[TransformConstraintData.SCALEY];
|
|
252
|
+
const b = source.b / skeleton.scaleX, d = source.d / skeleton.scaleY;
|
|
253
|
+
return Math.sqrt(b * b + d * d) + offsets[TransformConstraintData.SCALEY];
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
export class ToScaleY extends ToProperty {
|
|
257
|
+
mix(pose) {
|
|
258
|
+
return pose.mixScaleY;
|
|
259
|
+
}
|
|
260
|
+
apply(skeleton, pose, bone, value, local, additive) {
|
|
261
|
+
if (local) {
|
|
262
|
+
if (additive)
|
|
263
|
+
bone.scaleY *= 1 + (value - 1) * pose.mixScaleY;
|
|
264
|
+
else if (bone.scaleY !== 0) //
|
|
265
|
+
bone.scaleY += (value - bone.scaleY) * pose.mixScaleY;
|
|
266
|
+
}
|
|
267
|
+
else if (additive) {
|
|
268
|
+
const s = 1 + (value - 1) * pose.mixScaleY;
|
|
269
|
+
bone.b *= s;
|
|
270
|
+
bone.d *= s;
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
let b = bone.b / skeleton.scaleX, d = bone.d / skeleton.scaleY, s = Math.sqrt(b * b + d * d);
|
|
274
|
+
if (s !== 0) {
|
|
275
|
+
s = 1 + (value - s) * pose.mixScaleY / s;
|
|
276
|
+
bone.b *= s;
|
|
277
|
+
bone.d *= s;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
export class FromShearY extends FromProperty {
|
|
283
|
+
value(skeleton, source, local, offsets) {
|
|
284
|
+
if (local)
|
|
285
|
+
return source.shearY + offsets[TransformConstraintData.SHEARY];
|
|
286
|
+
const ix = 1 / skeleton.scaleX, iy = 1 / skeleton.scaleY;
|
|
287
|
+
return (Math.atan2(source.d * iy, source.b * ix) - Math.atan2(source.c * iy, source.a * ix)) * MathUtils.radDeg - 90 + offsets[TransformConstraintData.SHEARY];
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
export class ToShearY extends ToProperty {
|
|
291
|
+
mix(pose) {
|
|
292
|
+
return pose.mixShearY;
|
|
293
|
+
}
|
|
294
|
+
apply(skeleton, pose, bone, value, local, additive) {
|
|
295
|
+
if (local) {
|
|
296
|
+
if (!additive)
|
|
297
|
+
value -= bone.shearY;
|
|
298
|
+
bone.shearY += value * pose.mixShearY;
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
const sx = skeleton.scaleX, sy = skeleton.scaleY, b = bone.b / sx, d = bone.d / sy, by = Math.atan2(d, b);
|
|
302
|
+
value = (value + 90) * MathUtils.degRad;
|
|
303
|
+
if (additive)
|
|
304
|
+
value -= MathUtils.PI / 2;
|
|
305
|
+
else {
|
|
306
|
+
value -= by - Math.atan2(bone.c / sx, bone.a / sy);
|
|
307
|
+
if (value > MathUtils.PI)
|
|
308
|
+
value -= MathUtils.PI2;
|
|
309
|
+
else if (value < -MathUtils.PI)
|
|
310
|
+
value += MathUtils.PI2;
|
|
311
|
+
}
|
|
312
|
+
value = by + value * pose.mixShearY;
|
|
313
|
+
const s = Math.sqrt(b * b + d * d);
|
|
314
|
+
bone.b = Math.cos(value) * s * sy;
|
|
315
|
+
bone.d = Math.sin(value) * s * sx;
|
|
316
|
+
}
|
|
67
317
|
}
|
|
68
318
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNmb3JtQ29uc3RyYWludERhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVHJhbnNmb3JtQ29uc3RyYWludERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRDs7bUhBRW1IO0FBQ25ILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxjQUFjO0lBRTFELG9FQUFvRTtJQUNwRSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQztJQUU5QixxRkFBcUY7SUFDN0UsT0FBTyxHQUFvQixJQUFJLENBQUM7SUFDeEMsSUFBVyxNQUFNLENBQUUsUUFBa0IsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBVyxNQUFNO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTs7WUFDbEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNULElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFZCx3REFBd0Q7SUFDeEQsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUVuQiw2REFBNkQ7SUFDN0QsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUVaLDZEQUE2RDtJQUM3RCxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBRVosc0RBQXNEO0lBQ3RELFlBQVksR0FBRyxDQUFDLENBQUM7SUFFakIsc0RBQXNEO0lBQ3RELFlBQVksR0FBRyxDQUFDLENBQUM7SUFFakIsc0RBQXNEO0lBQ3RELFlBQVksR0FBRyxDQUFDLENBQUM7SUFFakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRWQsWUFBYSxJQUFZO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9Db25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgQm9uZURhdGEgfSBmcm9tIFwiLi9Cb25lRGF0YS5qc1wiO1xuXG4vKiogU3RvcmVzIHRoZSBzZXR1cCBwb3NlIGZvciBhIHtAbGluayBUcmFuc2Zvcm1Db25zdHJhaW50fS5cbiAqXG4gKiBTZWUgW1RyYW5zZm9ybSBjb25zdHJhaW50c10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXRyYW5zZm9ybS1jb25zdHJhaW50cykgaW4gdGhlIFNwaW5lIFVzZXIgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgVHJhbnNmb3JtQ29uc3RyYWludERhdGEgZXh0ZW5kcyBDb25zdHJhaW50RGF0YSB7XG5cblx0LyoqIFRoZSBib25lcyB0aGF0IHdpbGwgYmUgbW9kaWZpZWQgYnkgdGhpcyB0cmFuc2Zvcm0gY29uc3RyYWludC4gKi9cblx0Ym9uZXMgPSBuZXcgQXJyYXk8Qm9uZURhdGE+KCk7XG5cblx0LyoqIFRoZSB0YXJnZXQgYm9uZSB3aG9zZSB3b3JsZCB0cmFuc2Zvcm0gd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmVzLiAqL1xuXHRwcml2YXRlIF90YXJnZXQ6IEJvbmVEYXRhIHwgbnVsbCA9IG51bGw7XG5cdHB1YmxpYyBzZXQgdGFyZ2V0IChib25lRGF0YTogQm9uZURhdGEpIHsgdGhpcy5fdGFyZ2V0ID0gYm9uZURhdGE7IH1cblx0cHVibGljIGdldCB0YXJnZXQgKCkge1xuXHRcdGlmICghdGhpcy5fdGFyZ2V0KSB0aHJvdyBuZXcgRXJyb3IoXCJCb25lRGF0YSBub3Qgc2V0LlwiKVxuXHRcdGVsc2UgcmV0dXJuIHRoaXMuX3RhcmdldDtcblx0fVxuXG5cdG1peFJvdGF0ZSA9IDA7XG5cdG1peFggPSAwO1xuXHRtaXhZID0gMDtcblx0bWl4U2NhbGVYID0gMDtcblx0bWl4U2NhbGVZID0gMDtcblx0bWl4U2hlYXJZID0gMDtcblxuXHQvKiogQW4gb2Zmc2V0IGFkZGVkIHRvIHRoZSBjb25zdHJhaW5lZCBib25lIHJvdGF0aW9uLiAqL1xuXHRvZmZzZXRSb3RhdGlvbiA9IDA7XG5cblx0LyoqIEFuIG9mZnNldCBhZGRlZCB0byB0aGUgY29uc3RyYWluZWQgYm9uZSBYIHRyYW5zbGF0aW9uLiAqL1xuXHRvZmZzZXRYID0gMDtcblxuXHQvKiogQW4gb2Zmc2V0IGFkZGVkIHRvIHRoZSBjb25zdHJhaW5lZCBib25lIFkgdHJhbnNsYXRpb24uICovXG5cdG9mZnNldFkgPSAwO1xuXG5cdC8qKiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmUgc2NhbGVYLiAqL1xuXHRvZmZzZXRTY2FsZVggPSAwO1xuXG5cdC8qKiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmUgc2NhbGVZLiAqL1xuXHRvZmZzZXRTY2FsZVkgPSAwO1xuXG5cdC8qKiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmUgc2hlYXJZLiAqL1xuXHRvZmZzZXRTaGVhclkgPSAwO1xuXG5cdHJlbGF0aXZlID0gZmFsc2U7XG5cdGxvY2FsID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUsIDAsIGZhbHNlKTtcblx0fVxufVxuIl19
|
|
319
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNmb3JtQ29uc3RyYWludERhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVHJhbnNmb3JtQ29uc3RyYWludERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBSS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXZDOzttSEFFbUg7QUFDbkgsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGNBQTREO0lBQ2pHLE1BQU0sQ0FBVSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sQ0FBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sQ0FBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sQ0FBVSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sQ0FBVSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sQ0FBVSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWxDLG9FQUFvRTtJQUNwRSxLQUFLLEdBQUcsRUFBZ0IsQ0FBQztJQUV6Qiw4RUFBOEU7SUFDOUUsSUFBVyxNQUFNLENBQUUsTUFBZ0IsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBVyxNQUFNO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTs7WUFDbEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFDTyxPQUFPLEdBQW9CLElBQUksQ0FBQztJQUV4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QUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxFQUFFO29CQUN2QixLQUFLLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQztxQkFDbkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDN0IsS0FBSyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUM7WUFDekIsQ0FBQztZQUNELEtBQUssR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0lBQ0YsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgdHlwZSB7IEJvbmVEYXRhIH0gZnJvbSBcIi4vQm9uZURhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgQm9uZVBvc2UgfSBmcm9tIFwiLi9Cb25lUG9zZS5qc1wiO1xuaW1wb3J0IHsgQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9Db25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgeyBUcmFuc2Zvcm1Db25zdHJhaW50IH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgVHJhbnNmb3JtQ29uc3RyYWludFBvc2UgfSBmcm9tIFwiLi9UcmFuc2Zvcm1Db25zdHJhaW50UG9zZS5qc1wiO1xuaW1wb3J0IHsgTWF0aFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuLyoqIFN0b3JlcyB0aGUgc2V0dXAgcG9zZSBmb3IgYSB7QGxpbmsgVHJhbnNmb3JtQ29uc3RyYWludH0uXG4gKlxuICogU2VlIFtUcmFuc2Zvcm0gY29uc3RyYWludHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS10cmFuc2Zvcm0tY29uc3RyYWludHMpIGluIHRoZSBTcGluZSBVc2VyIEd1aWRlLiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhIGV4dGVuZHMgQ29uc3RyYWludERhdGE8VHJhbnNmb3JtQ29uc3RyYWludCwgVHJhbnNmb3JtQ29uc3RyYWludFBvc2U+IHtcblx0cHVibGljIHN0YXRpYyByZWFkb25seSBST1RBVElPTiA9IDA7XG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgWCA9IDE7XG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgWSA9IDI7XG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0NBTEVYID0gMztcblx0cHVibGljIHN0YXRpYyByZWFkb25seSBTQ0FMRVkgPSA0O1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNIRUFSWSA9IDU7XG5cblx0LyoqIFRoZSBib25lcyB0aGF0IHdpbGwgYmUgbW9kaWZpZWQgYnkgdGhpcyB0cmFuc2Zvcm0gY29uc3RyYWludC4gKi9cblx0Ym9uZXMgPSBbXSBhcyBCb25lRGF0YVtdO1xuXG5cdC8qKiBUaGUgYm9uZSB3aG9zZSB3b3JsZCB0cmFuc2Zvcm0gd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmVzLiAqL1xuXHRwdWJsaWMgc2V0IHNvdXJjZSAoc291cmNlOiBCb25lRGF0YSkgeyB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7IH1cblx0cHVibGljIGdldCBzb3VyY2UgKCkge1xuXHRcdGlmICghdGhpcy5fc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoXCJCb25lRGF0YSBub3Qgc2V0LlwiKVxuXHRcdGVsc2UgcmV0dXJuIHRoaXMuX3NvdXJjZTtcblx0fVxuXHRwcml2YXRlIF9zb3VyY2U6IEJvbmVEYXRhIHwgbnVsbCA9IG51bGw7XG5cblx0b2Zmc2V0cyA9IFswLCAwLCAwLCAwLCAwLCAwXTtcblxuXHQvKiogQW4gb2Zmc2V0IGFkZGVkIHRvIHRoZSBjb25zdHJhaW5lZCBib25lIFggdHJhbnNsYXRpb24uICovXG5cdG9mZnNldFggPSAwO1xuXG5cdC8qKiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmUgWSB0cmFuc2xhdGlvbi4gKi9cblx0b2Zmc2V0WSA9IDA7XG5cblx0LyoqIFJlYWRzIHRoZSBzb3VyY2UgYm9uZSdzIGxvY2FsIHRyYW5zZm9ybSBpbnN0ZWFkIG9mIGl0cyB3b3JsZCB0cmFuc2Zvcm0uICovXG5cdGxvY2FsU291cmNlID0gZmFsc2U7XG5cblx0LyoqIFNldHMgdGhlIGNvbnN0cmFpbmVkIGJvbmVzJyBsb2NhbCB0cmFuc2Zvcm1zIGluc3RlYWQgb2YgdGhlaXIgd29ybGQgdHJhbnNmb3Jtcy4gKi9cblx0bG9jYWxUYXJnZXQgPSBmYWxzZTtcblxuXHQvKiogQWRkcyB0aGUgc291cmNlIGJvbmUgdHJhbnNmb3JtIHRvIHRoZSBjb25zdHJhaW5lZCBib25lcyBpbnN0ZWFkIG9mIHNldHRpbmcgaXQgYWJzb2x1dGVseS4gKi9cblx0YWRkaXRpdmUgPSBmYWxzZTtcblxuXHQvKiogUHJldmVudHMgY29uc3RyYWluZWQgYm9uZXMgZnJvbSBleGNlZWRpbmcgdGhlIHJhbmdlZCBkZWZpbmVkIGJ5IHtAbGluayBUb1Byb3BlcnR5Lm9mZnNldH0gYW5kIHtAbGluayBUb1Byb3BlcnR5Lm1heH0uICovXG5cdGNsYW1wID0gZmFsc2U7XG5cblx0LyoqIFRoZSBtYXBwaW5nIG9mIHRyYW5zZm9ybSBwcm9wZXJ0aWVzIHRvIG90aGVyIHRyYW5zZm9ybSBwcm9wZXJ0aWVzLiAqL1xuXHRyZWFkb25seSBwcm9wZXJ0aWVzOiBBcnJheTxGcm9tUHJvcGVydHk+ID0gW107XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUsIG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZSgpKTtcblx0fVxuXG5cdHB1YmxpYyBjcmVhdGUgKHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHJldHVybiBuZXcgVHJhbnNmb3JtQ29uc3RyYWludCh0aGlzLCBza2VsZXRvbik7XG5cdH1cblxuXHQvKiogQW4gb2Zmc2V0IGFkZGVkIHRvIHRoZSBjb25zdHJhaW5lZCBib25lIHJvdGF0aW9uLiAqL1xuXHRnZXRPZmZzZXRSb3RhdGlvbiAoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ST1RBVElPTl07XG5cdH1cblxuXHRzZXRPZmZzZXRSb3RhdGlvbiAob2Zmc2V0Um90YXRpb246IG51bWJlcikge1xuXHRcdHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ST1RBVElPTl0gPSBvZmZzZXRSb3RhdGlvbjtcblx0fVxuXG5cdC8qKiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmUgWCB0cmFuc2xhdGlvbi4gKi9cblx0Z2V0T2Zmc2V0WCAoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXTtcblx0fVxuXG5cdHNldE9mZnNldFggKG9mZnNldFg6IG51bWJlcikge1xuXHRcdHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXSA9IG9mZnNldFg7XG5cdH1cblxuXHQvKiogQW4gb2Zmc2V0IGFkZGVkIHRvIHRoZSBjb25zdHJhaW5lZCBib25lIFkgdHJhbnNsYXRpb24uICovXG5cdGdldE9mZnNldFkgKCkge1xuXHRcdHJldHVybiB0aGlzLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuWV07XG5cdH1cblxuXHRzZXRPZmZzZXRZIChvZmZzZXRZOiBudW1iZXIpIHtcblx0XHR0aGlzLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuWV0gPSBvZmZzZXRZO1xuXHR9XG5cblx0LyoqIEFuIG9mZnNldCBhZGRlZCB0byB0aGUgY29uc3RyYWluZWQgYm9uZSBzY2FsZVguICovXG5cdGdldE9mZnNldFNjYWxlWCAoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVhdO1xuXHR9XG5cblx0c2V0T2Zmc2V0U2NhbGVYIChvZmZzZXRTY2FsZVg6IG51bWJlcikge1xuXHRcdHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVhdID0gb2Zmc2V0U2NhbGVYO1xuXHR9XG5cblx0LyoqIEFuIG9mZnNldCBhZGRlZCB0byB0aGUgY29uc3RyYWluZWQgYm9uZSBzY2FsZVkuICovXG5cdGdldE9mZnNldFNjYWxlWSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVldO1xuXHR9XG5cblx0c2V0T2Zmc2V0U2NhbGVZIChvZmZzZXRTY2FsZVk6IG51bWJlcikge1xuXHRcdHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVldID0gb2Zmc2V0U2NhbGVZO1xuXHR9XG5cblx0LyoqIEFuIG9mZnNldCBhZGRlZCB0byB0aGUgY29uc3RyYWluZWQgYm9uZSBzaGVhclkuICovXG5cdGdldE9mZnNldFNoZWFyWSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TSEVBUlldO1xuXHR9XG5cblx0c2V0T2Zmc2V0U2hlYXJZIChvZmZzZXRTaGVhclk6IG51bWJlcikge1xuXHRcdHRoaXMub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TSEVBUlldID0gb2Zmc2V0U2hlYXJZO1xuXHR9XG5cbn1cblxuLyoqIFNvdXJjZSBwcm9wZXJ0eSBmb3IgYSB7QGxpbmsgVHJhbnNmb3JtQ29uc3RyYWludH0uICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRnJvbVByb3BlcnR5IHtcblx0LyoqIFRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IHRoYXQgY29ycmVzcG9uZHMgdG8ge0BsaW5rIFRvUHJvcGVydHkub2Zmc2V0fS4gKi9cblx0b2Zmc2V0ID0gMDtcblxuXHQvKiogQ29uc3RyYWluZWQgcHJvcGVydGllcy4gKi9cblx0cmVhZG9ubHkgdG86IEFycmF5PFRvUHJvcGVydHk+ID0gW107XG5cblx0LyoqIFJlYWRzIHRoaXMgcHJvcGVydHkgZnJvbSB0aGUgc3BlY2lmaWVkIGJvbmUuICovXG5cdGFic3RyYWN0IHZhbHVlIChza2VsZXRvbjogU2tlbGV0b24sIHNvdXJjZTogQm9uZVBvc2UsIGxvY2FsOiBib29sZWFuLCBvZmZzZXRzOiBBcnJheTxudW1iZXI+KTogbnVtYmVyO1xufVxuXG4vKiogQ29uc3RyYWluZWQgcHJvcGVydHkgZm9yIGEge0BsaW5rIFRyYW5zZm9ybUNvbnN0cmFpbnR9LiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRvUHJvcGVydHkge1xuXHQvKiogVGhlIHZhbHVlIG9mIHRoaXMgcHJvcGVydHkgdGhhdCBjb3JyZXNwb25kcyB0byB7QGxpbmsgRnJvbVByb3BlcnR5Lm9mZnNldH0uICovXG5cdG9mZnNldCA9IDA7XG5cblx0LyoqIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoaXMgcHJvcGVydHkgd2hlbiB7QGxpbmsgVHJhbnNmb3JtQ29uc3RyYWludERhdGEuY2xhbXAgY2xhbXBlZH0uICovXG5cdG1heCA9IDA7XG5cblx0LyoqIFRoZSBzY2FsZSBvZiB0aGUge0BsaW5rIEZyb21Qcm9wZXJ0eX0gdmFsdWUgaW4gcmVsYXRpb24gdG8gdGhpcyBwcm9wZXJ0eS4gKi9cblx0c2NhbGUgPSAwO1xuXG5cdC8qKiBSZWFkcyB0aGUgbWl4IGZvciB0aGlzIHByb3BlcnR5IGZyb20gdGhlIHNwZWNpZmllZCBjb25zdHJhaW50LiAqL1xuXHRhYnN0cmFjdCBtaXggKHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlKTogbnVtYmVyO1xuXG5cdC8qKiBBcHBsaWVzIHRoZSB2YWx1ZSB0byB0aGlzIHByb3BlcnR5LiAqL1xuXHRhYnN0cmFjdCBhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBwb3NlOiBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZSwgYm9uZTogQm9uZVBvc2UsIHZhbHVlOiBudW1iZXIsIGxvY2FsOiBib29sZWFuLCBhZGRpdGl2ZTogYm9vbGVhbik6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBGcm9tUm90YXRlIGV4dGVuZHMgRnJvbVByb3BlcnR5IHtcblx0dmFsdWUgKHNrZWxldG9uOiBTa2VsZXRvbiwgc291cmNlOiBCb25lUG9zZSwgbG9jYWw6IGJvb2xlYW4sIG9mZnNldHM6IEFycmF5PG51bWJlcj4pOiBudW1iZXIge1xuXHRcdGlmIChsb2NhbCkgcmV0dXJuIHNvdXJjZS5yb3RhdGlvbiArIG9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuUk9UQVRJT05dO1xuXHRcdGNvbnN0IHN4ID0gc2tlbGV0b24uc2NhbGVYLCBzeSA9IHNrZWxldG9uLnNjYWxlWTtcblx0XHRsZXQgdmFsdWUgPSBNYXRoLmF0YW4yKHNvdXJjZS5jIC8gc3ksIHNvdXJjZS5hIC8gc3gpICogTWF0aFV0aWxzLnJhZERlZ1xuXHRcdFx0KyAoKHNvdXJjZS5hICogc291cmNlLmQgLSBzb3VyY2UuYiAqIHNvdXJjZS5jKSAqIHN4ICogc3kgPiAwID8gb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ST1RBVElPTl0gOiAtb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ST1RBVElPTl0pO1xuXHRcdGlmICh2YWx1ZSA8IDApIHZhbHVlICs9IDM2MDtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFRvUm90YXRlIGV4dGVuZHMgVG9Qcm9wZXJ0eSB7XG5cdG1peCAocG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UpOiBudW1iZXIge1xuXHRcdHJldHVybiBwb3NlLm1peFJvdGF0ZTtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlLCBib25lOiBCb25lUG9zZSwgdmFsdWU6IG51bWJlciwgbG9jYWw6IGJvb2xlYW4sIGFkZGl0aXZlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0aWYgKGxvY2FsKVxuXHRcdFx0Ym9uZS5yb3RhdGlvbiArPSAoYWRkaXRpdmUgPyB2YWx1ZSA6IHZhbHVlIC0gYm9uZS5yb3RhdGlvbikgKiBwb3NlLm1peFJvdGF0ZTtcblx0XHRlbHNlIHtcblx0XHRcdGNvbnN0IHN4ID0gc2tlbGV0b24uc2NhbGVYLCBzeSA9IHNrZWxldG9uLnNjYWxlWSwgaXggPSAxIC8gc3gsIGl5ID0gMSAvIHN5O1xuXHRcdFx0Y29uc3QgYSA9IGJvbmUuYSAqIGl4LCBiID0gYm9uZS5iICogaXgsIGMgPSBib25lLmMgKiBpeSwgZCA9IGJvbmUuZCAqIGl5O1xuXHRcdFx0dmFsdWUgKj0gTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRcdGlmICghYWRkaXRpdmUpIHZhbHVlIC09IE1hdGguYXRhbjIoYywgYSk7XG5cdFx0XHRpZiAodmFsdWUgPiBNYXRoVXRpbHMuUEkpXG5cdFx0XHRcdHZhbHVlIC09IE1hdGhVdGlscy5QSTI7XG5cdFx0XHRlbHNlIGlmICh2YWx1ZSA8IC1NYXRoVXRpbHMuUEkpIC8vXG5cdFx0XHRcdHZhbHVlICs9IE1hdGhVdGlscy5QSTI7XG5cdFx0XHR2YWx1ZSAqPSBwb3NlLm1peFJvdGF0ZTtcblx0XHRcdGNvbnN0IGNvcyA9IE1hdGguY29zKHZhbHVlKSwgc2luID0gTWF0aC5zaW4odmFsdWUpO1xuXHRcdFx0Ym9uZS5hID0gKGNvcyAqIGEgLSBzaW4gKiBjKSAqIHN4O1xuXHRcdFx0Ym9uZS5iID0gKGNvcyAqIGIgLSBzaW4gKiBkKSAqIHN4O1xuXHRcdFx0Ym9uZS5jID0gKHNpbiAqIGEgKyBjb3MgKiBjKSAqIHN5O1xuXHRcdFx0Ym9uZS5kID0gKHNpbiAqIGIgKyBjb3MgKiBkKSAqIHN5O1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRnJvbVggZXh0ZW5kcyBGcm9tUHJvcGVydHkge1xuXHR2YWx1ZSAoc2tlbGV0b246IFNrZWxldG9uLCBzb3VyY2U6IEJvbmVQb3NlLCBsb2NhbDogYm9vbGVhbiwgb2Zmc2V0czogQXJyYXk8bnVtYmVyPik6IG51bWJlciB7XG5cdFx0cmV0dXJuIGxvY2FsXG5cdFx0XHQ/IHNvdXJjZS54ICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXVxuXHRcdFx0OiAob2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXSAqIHNvdXJjZS5hICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ZXSAqIHNvdXJjZS5iICsgc291cmNlLndvcmxkWCkgLyBza2VsZXRvbi5zY2FsZVg7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFRvWCBleHRlbmRzIFRvUHJvcGVydHkge1xuXHRtaXggKHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gcG9zZS5taXhYO1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgcG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UsIGJvbmU6IEJvbmVQb3NlLCB2YWx1ZTogbnVtYmVyLCBsb2NhbDogYm9vbGVhbiwgYWRkaXRpdmU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAobG9jYWwpXG5cdFx0XHRib25lLnggKz0gKGFkZGl0aXZlID8gdmFsdWUgOiB2YWx1ZSAtIGJvbmUueCkgKiBwb3NlLm1peFg7XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZiAoIWFkZGl0aXZlKSB2YWx1ZSAtPSBib25lLndvcmxkWCAvIHNrZWxldG9uLnNjYWxlWDtcblx0XHRcdGJvbmUud29ybGRYICs9IHZhbHVlICogcG9zZS5taXhYICogc2tlbGV0b24uc2NhbGVYO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRnJvbVkgZXh0ZW5kcyBGcm9tUHJvcGVydHkge1xuXHR2YWx1ZSAoc2tlbGV0b246IFNrZWxldG9uLCBzb3VyY2U6IEJvbmVQb3NlLCBsb2NhbDogYm9vbGVhbiwgb2Zmc2V0czogQXJyYXk8bnVtYmVyPik6IG51bWJlciB7XG5cdFx0cmV0dXJuIGxvY2FsXG5cdFx0XHQ/IHNvdXJjZS55ICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ZXVxuXHRcdFx0OiAob2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXSAqIHNvdXJjZS5jICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ZXSAqIHNvdXJjZS5kICsgc291cmNlLndvcmxkWSkgLyBza2VsZXRvbi5zY2FsZVk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFRvWSBleHRlbmRzIFRvUHJvcGVydHkge1xuXHRtaXggKHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gcG9zZS5taXhZO1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgcG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UsIGJvbmU6IEJvbmVQb3NlLCB2YWx1ZTogbnVtYmVyLCBsb2NhbDogYm9vbGVhbiwgYWRkaXRpdmU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAobG9jYWwpXG5cdFx0XHRib25lLnkgKz0gKGFkZGl0aXZlID8gdmFsdWUgOiB2YWx1ZSAtIGJvbmUueSkgKiBwb3NlLm1peFk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZiAoIWFkZGl0aXZlKSB2YWx1ZSAtPSBib25lLndvcmxkWSAvIHNrZWxldG9uLnNjYWxlWTtcblx0XHRcdGJvbmUud29ybGRZICs9IHZhbHVlICogcG9zZS5taXhZICogc2tlbGV0b24uc2NhbGVZO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRnJvbVNjYWxlWCBleHRlbmRzIEZyb21Qcm9wZXJ0eSB7XG5cdHZhbHVlIChza2VsZXRvbjogU2tlbGV0b24sIHNvdXJjZTogQm9uZVBvc2UsIGxvY2FsOiBib29sZWFuLCBvZmZzZXRzOiBBcnJheTxudW1iZXI+KTogbnVtYmVyIHtcblx0XHRpZiAobG9jYWwpIHJldHVybiBzb3VyY2Uuc2NhbGVYICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVhdO1xuXHRcdGNvbnN0IGEgPSBzb3VyY2UuYSAvIHNrZWxldG9uLnNjYWxlWCwgYyA9IHNvdXJjZS5jIC8gc2tlbGV0b24uc2NhbGVZO1xuXHRcdHJldHVybiBNYXRoLnNxcnQoYSAqIGEgKyBjICogYykgKyBvZmZzZXRzW1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLlNDQUxFWF07XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFRvU2NhbGVYIGV4dGVuZHMgVG9Qcm9wZXJ0eSB7XG5cdG1peCAocG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UpOiBudW1iZXIge1xuXHRcdHJldHVybiBwb3NlLm1peFNjYWxlWDtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlLCBib25lOiBCb25lUG9zZSwgdmFsdWU6IG51bWJlciwgbG9jYWw6IGJvb2xlYW4sIGFkZGl0aXZlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0aWYgKGxvY2FsKSB7XG5cdFx0XHRpZiAoYWRkaXRpdmUpXG5cdFx0XHRcdGJvbmUuc2NhbGVYICo9IDEgKyAodmFsdWUgLSAxKSAqIHBvc2UubWl4U2NhbGVYO1xuXHRcdFx0ZWxzZSBpZiAoYm9uZS5zY2FsZVggIT09IDApIC8vXG5cdFx0XHRcdGJvbmUuc2NhbGVYICs9ICh2YWx1ZSAtIGJvbmUuc2NhbGVYKSAqIHBvc2UubWl4U2NhbGVYO1xuXHRcdH0gZWxzZSBpZiAoYWRkaXRpdmUpIHtcblx0XHRcdGNvbnN0IHMgPSAxICsgKHZhbHVlIC0gMSkgKiBwb3NlLm1peFNjYWxlWDtcblx0XHRcdGJvbmUuYSAqPSBzO1xuXHRcdFx0Ym9uZS5jICo9IHM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxldCBhID0gYm9uZS5hIC8gc2tlbGV0b24uc2NhbGVYLCBjID0gYm9uZS5jIC8gc2tlbGV0b24uc2NhbGVZLCBzID0gTWF0aC5zcXJ0KGEgKiBhICsgYyAqIGMpO1xuXHRcdFx0aWYgKHMgIT09IDApIHtcblx0XHRcdFx0cyA9IDEgKyAodmFsdWUgLSBzKSAqIHBvc2UubWl4U2NhbGVYIC8gcztcblx0XHRcdFx0Ym9uZS5hICo9IHM7XG5cdFx0XHRcdGJvbmUuYyAqPSBzO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRnJvbVNjYWxlWSBleHRlbmRzIEZyb21Qcm9wZXJ0eSB7XG5cdHZhbHVlIChza2VsZXRvbjogU2tlbGV0b24sIHNvdXJjZTogQm9uZVBvc2UsIGxvY2FsOiBib29sZWFuLCBvZmZzZXRzOiBBcnJheTxudW1iZXI+KTogbnVtYmVyIHtcblx0XHRpZiAobG9jYWwpIHJldHVybiBzb3VyY2Uuc2NhbGVZICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVldO1xuXHRcdGNvbnN0IGIgPSBzb3VyY2UuYiAvIHNrZWxldG9uLnNjYWxlWCwgZCA9IHNvdXJjZS5kIC8gc2tlbGV0b24uc2NhbGVZO1xuXHRcdHJldHVybiBNYXRoLnNxcnQoYiAqIGIgKyBkICogZCkgKyBvZmZzZXRzW1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLlNDQUxFWV07XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFRvU2NhbGVZIGV4dGVuZHMgVG9Qcm9wZXJ0eSB7XG5cdG1peCAocG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UpOiBudW1iZXIge1xuXHRcdHJldHVybiBwb3NlLm1peFNjYWxlWTtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlLCBib25lOiBCb25lUG9zZSwgdmFsdWU6IG51bWJlciwgbG9jYWw6IGJvb2xlYW4sIGFkZGl0aXZlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0aWYgKGxvY2FsKSB7XG5cdFx0XHRpZiAoYWRkaXRpdmUpXG5cdFx0XHRcdGJvbmUuc2NhbGVZICo9IDEgKyAodmFsdWUgLSAxKSAqIHBvc2UubWl4U2NhbGVZO1xuXHRcdFx0ZWxzZSBpZiAoYm9uZS5zY2FsZVkgIT09IDApIC8vXG5cdFx0XHRcdGJvbmUuc2NhbGVZICs9ICh2YWx1ZSAtIGJvbmUuc2NhbGVZKSAqIHBvc2UubWl4U2NhbGVZO1xuXHRcdH0gZWxzZSBpZiAoYWRkaXRpdmUpIHtcblx0XHRcdGNvbnN0IHMgPSAxICsgKHZhbHVlIC0gMSkgKiBwb3NlLm1peFNjYWxlWTtcblx0XHRcdGJvbmUuYiAqPSBzO1xuXHRcdFx0Ym9uZS5kICo9IHM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxldCBiID0gYm9uZS5iIC8gc2tlbGV0b24uc2NhbGVYLCBkID0gYm9uZS5kIC8gc2tlbGV0b24uc2NhbGVZLCBzID0gTWF0aC5zcXJ0KGIgKiBiICsgZCAqIGQpO1xuXHRcdFx0aWYgKHMgIT09IDApIHtcblx0XHRcdFx0cyA9IDEgKyAodmFsdWUgLSBzKSAqIHBvc2UubWl4U2NhbGVZIC8gcztcblx0XHRcdFx0Ym9uZS5iICo9IHM7XG5cdFx0XHRcdGJvbmUuZCAqPSBzO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRnJvbVNoZWFyWSBleHRlbmRzIEZyb21Qcm9wZXJ0eSB7XG5cdHZhbHVlIChza2VsZXRvbjogU2tlbGV0b24sIHNvdXJjZTogQm9uZVBvc2UsIGxvY2FsOiBib29sZWFuLCBvZmZzZXRzOiBBcnJheTxudW1iZXI+KTogbnVtYmVyIHtcblx0XHRpZiAobG9jYWwpIHJldHVybiBzb3VyY2Uuc2hlYXJZICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TSEVBUlldO1xuXHRcdGNvbnN0IGl4ID0gMSAvIHNrZWxldG9uLnNjYWxlWCwgaXkgPSAxIC8gc2tlbGV0b24uc2NhbGVZO1xuXHRcdHJldHVybiAoTWF0aC5hdGFuMihzb3VyY2UuZCAqIGl5LCBzb3VyY2UuYiAqIGl4KSAtIE1hdGguYXRhbjIoc291cmNlLmMgKiBpeSwgc291cmNlLmEgKiBpeCkpICogTWF0aFV0aWxzLnJhZERlZyAtIDkwICsgb2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TSEVBUlldO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBUb1NoZWFyWSBleHRlbmRzIFRvUHJvcGVydHkge1xuXHRtaXggKHBvc2U6IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gcG9zZS5taXhTaGVhclk7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBwb3NlOiBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZSwgYm9uZTogQm9uZVBvc2UsIHZhbHVlOiBudW1iZXIsIGxvY2FsOiBib29sZWFuLCBhZGRpdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdGlmIChsb2NhbCkge1xuXHRcdFx0aWYgKCFhZGRpdGl2ZSkgdmFsdWUgLT0gYm9uZS5zaGVhclk7XG5cdFx0XHRib25lLnNoZWFyWSArPSB2YWx1ZSAqIHBvc2UubWl4U2hlYXJZO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBzeCA9IHNrZWxldG9uLnNjYWxlWCwgc3kgPSBza2VsZXRvbi5zY2FsZVksIGIgPSBib25lLmIgLyBzeCwgZCA9IGJvbmUuZCAvIHN5LCBieSA9IE1hdGguYXRhbjIoZCwgYik7XG5cdFx0XHR2YWx1ZSA9ICh2YWx1ZSArIDkwKSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRpZiAoYWRkaXRpdmUpXG5cdFx0XHRcdHZhbHVlIC09IE1hdGhVdGlscy5QSSAvIDI7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dmFsdWUgLT0gYnkgLSBNYXRoLmF0YW4yKGJvbmUuYyAvIHN4LCBib25lLmEgLyBzeSk7XG5cdFx0XHRcdGlmICh2YWx1ZSA+IE1hdGhVdGlscy5QSSlcblx0XHRcdFx0XHR2YWx1ZSAtPSBNYXRoVXRpbHMuUEkyO1xuXHRcdFx0XHRlbHNlIGlmICh2YWx1ZSA8IC1NYXRoVXRpbHMuUEkpXG5cdFx0XHRcdFx0dmFsdWUgKz0gTWF0aFV0aWxzLlBJMjtcblx0XHRcdH1cblx0XHRcdHZhbHVlID0gYnkgKyB2YWx1ZSAqIHBvc2UubWl4U2hlYXJZO1xuXHRcdFx0Y29uc3QgcyA9IE1hdGguc3FydChiICogYiArIGQgKiBkKTtcblx0XHRcdGJvbmUuYiA9IE1hdGguY29zKHZhbHVlKSAqIHMgKiBzeTtcblx0XHRcdGJvbmUuZCA9IE1hdGguc2luKHZhbHVlKSAqIHMgKiBzeDtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated April 5, 2025. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2025, 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 type { Pose } from "./Pose.js";
|
|
30
|
+
/** Stores a pose for a transform constraint. */
|
|
31
|
+
export declare class TransformConstraintPose implements Pose<TransformConstraintPose> {
|
|
32
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained rotation. */
|
|
33
|
+
mixRotate: number;
|
|
34
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained translation X. */
|
|
35
|
+
mixX: number;
|
|
36
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained translation Y. */
|
|
37
|
+
mixY: number;
|
|
38
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained scale X. */
|
|
39
|
+
mixScaleX: number;
|
|
40
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained scale Y. */
|
|
41
|
+
mixScaleY: number;
|
|
42
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained shear Y. */
|
|
43
|
+
mixShearY: number;
|
|
44
|
+
set(pose: TransformConstraintPose): void;
|
|
45
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated April 5, 2025. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2025, 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
|
+
/** Stores a pose for a transform constraint. */
|
|
30
|
+
export class TransformConstraintPose {
|
|
31
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained rotation. */
|
|
32
|
+
mixRotate = 0;
|
|
33
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained translation X. */
|
|
34
|
+
mixX = 0;
|
|
35
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained translation Y. */
|
|
36
|
+
mixY = 0;
|
|
37
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained scale X. */
|
|
38
|
+
mixScaleX = 0;
|
|
39
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained scale Y. */
|
|
40
|
+
mixScaleY = 0;
|
|
41
|
+
/** A percentage (unbounded) that controls the mix between the constrained and unconstrained shear Y. */
|
|
42
|
+
mixShearY = 0;
|
|
43
|
+
set(pose) {
|
|
44
|
+
this.mixRotate = pose.mixRotate;
|
|
45
|
+
this.mixX = pose.mixX;
|
|
46
|
+
this.mixY = pose.mixY;
|
|
47
|
+
this.mixScaleX = pose.mixScaleX;
|
|
48
|
+
this.mixScaleY = pose.mixScaleY;
|
|
49
|
+
this.mixShearY = pose.mixShearY;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNmb3JtQ29uc3RyYWludFBvc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVHJhbnNmb3JtQ29uc3RyYWludFBvc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBSS9FLGdEQUFnRDtBQUNoRCxNQUFNLE9BQU8sdUJBQXVCO0lBQ25DLHlHQUF5RztJQUN6RyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRWQsOEdBQThHO0lBQzlHLElBQUksR0FBRyxDQUFDLENBQUM7SUFFVCw4R0FBOEc7SUFDOUcsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUVULHdHQUF3RztJQUN4RyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRWQsd0dBQXdHO0lBQ3hHLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFZCx3R0FBd0c7SUFDeEcsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUVQLEdBQUcsQ0FBRSxJQUE2QjtRQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB0eXBlIHsgUG9zZSB9IGZyb20gXCIuL1Bvc2UuanNcIlxuXG4vKiogU3RvcmVzIGEgcG9zZSBmb3IgYSB0cmFuc2Zvcm0gY29uc3RyYWludC4gKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZSBpbXBsZW1lbnRzIFBvc2U8VHJhbnNmb3JtQ29uc3RyYWludFBvc2U+IHtcblx0LyoqIEEgcGVyY2VudGFnZSAodW5ib3VuZGVkKSB0aGF0IGNvbnRyb2xzIHRoZSBtaXggYmV0d2VlbiB0aGUgY29uc3RyYWluZWQgYW5kIHVuY29uc3RyYWluZWQgcm90YXRpb24uICovXG5cdG1peFJvdGF0ZSA9IDA7XG5cblx0LyoqIEEgcGVyY2VudGFnZSAodW5ib3VuZGVkKSB0aGF0IGNvbnRyb2xzIHRoZSBtaXggYmV0d2VlbiB0aGUgY29uc3RyYWluZWQgYW5kIHVuY29uc3RyYWluZWQgdHJhbnNsYXRpb24gWC4gKi9cblx0bWl4WCA9IDA7XG5cblx0LyoqIEEgcGVyY2VudGFnZSAodW5ib3VuZGVkKSB0aGF0IGNvbnRyb2xzIHRoZSBtaXggYmV0d2VlbiB0aGUgY29uc3RyYWluZWQgYW5kIHVuY29uc3RyYWluZWQgdHJhbnNsYXRpb24gWS4gKi9cblx0bWl4WSA9IDA7XG5cblx0LyoqIEEgcGVyY2VudGFnZSAodW5ib3VuZGVkKSB0aGF0IGNvbnRyb2xzIHRoZSBtaXggYmV0d2VlbiB0aGUgY29uc3RyYWluZWQgYW5kIHVuY29uc3RyYWluZWQgc2NhbGUgWC4gKi9cblx0bWl4U2NhbGVYID0gMDtcblxuXHQvKiogQSBwZXJjZW50YWdlICh1bmJvdW5kZWQpIHRoYXQgY29udHJvbHMgdGhlIG1peCBiZXR3ZWVuIHRoZSBjb25zdHJhaW5lZCBhbmQgdW5jb25zdHJhaW5lZCBzY2FsZSBZLiAqL1xuXHRtaXhTY2FsZVkgPSAwO1xuXG5cdC8qKiBBIHBlcmNlbnRhZ2UgKHVuYm91bmRlZCkgdGhhdCBjb250cm9scyB0aGUgbWl4IGJldHdlZW4gdGhlIGNvbnN0cmFpbmVkIGFuZCB1bmNvbnN0cmFpbmVkIHNoZWFyIFkuICovXG5cdG1peFNoZWFyWSA9IDA7XG5cblx0cHVibGljIHNldCAocG9zZTogVHJhbnNmb3JtQ29uc3RyYWludFBvc2UpIHtcblx0XHR0aGlzLm1peFJvdGF0ZSA9IHBvc2UubWl4Um90YXRlO1xuXHRcdHRoaXMubWl4WCA9IHBvc2UubWl4WDtcblx0XHR0aGlzLm1peFkgPSBwb3NlLm1peFk7XG5cdFx0dGhpcy5taXhTY2FsZVggPSBwb3NlLm1peFNjYWxlWDtcblx0XHR0aGlzLm1peFNjYWxlWSA9IHBvc2UubWl4U2NhbGVZO1xuXHRcdHRoaXMubWl4U2hlYXJZID0gcG9zZS5taXhTaGVhclk7XG5cdH1cbn1cbiJdfQ==
|
package/dist/Triangulator.d.ts
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
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
|
-
import { NumberArrayLike } from "./Utils.js";
|
|
29
|
+
import { type NumberArrayLike } from "./Utils.js";
|
|
30
30
|
export declare class Triangulator {
|
|
31
31
|
private convexPolygons;
|
|
32
32
|
private convexPolygonsIndices;
|