@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
|
@@ -30,53 +30,99 @@ import { TextureAtlasRegion } from "../TextureAtlas.js";
|
|
|
30
30
|
import { Color, Utils } from "../Utils.js";
|
|
31
31
|
import { VertexAttachment } from "./Attachment.js";
|
|
32
32
|
/** An attachment that displays a textured mesh. A mesh has hull vertices and internal vertices within the hull. Holes are not
|
|
33
|
-
* supported. Each vertex has UVs (texture coordinates) and triangles are used to map an image on to the mesh.
|
|
33
|
+
* supported. Each vertex has UVs (texture coordinates) and triangles that are used to map an image on to the mesh.
|
|
34
34
|
*
|
|
35
35
|
* See [Mesh attachments](http://esotericsoftware.com/spine-meshes) in the Spine User Guide. */
|
|
36
36
|
export class MeshAttachment extends VertexAttachment {
|
|
37
|
-
|
|
38
|
-
/** The name of the texture region for this attachment. */
|
|
39
|
-
path;
|
|
37
|
+
sequence;
|
|
40
38
|
/** The UV pair for each vertex, normalized within the texture region. */
|
|
41
39
|
regionUVs = [];
|
|
42
|
-
/** The UV pair for each vertex, normalized within the entire texture.
|
|
43
|
-
*
|
|
44
|
-
* See {@link #updateUVs}. */
|
|
45
|
-
uvs = [];
|
|
46
40
|
/** Triplets of vertex indices which describe the mesh's triangulation. */
|
|
47
41
|
triangles = [];
|
|
42
|
+
/** The number of entries at the beginning of {@link vertices} that make up the mesh hull. */
|
|
43
|
+
hullLength = 0;
|
|
44
|
+
/** The name of the texture region for this attachment. */
|
|
45
|
+
path;
|
|
48
46
|
/** The color to tint the mesh. */
|
|
49
47
|
color = new Color(1, 1, 1, 1);
|
|
48
|
+
sourceMesh = null;
|
|
49
|
+
/** Vertex index pairs describing edges for controlling triangulation, or null if nonessential data was not exported. Mesh
|
|
50
|
+
* triangles do not never cross edges. Triangulation is not performed at runtime. */
|
|
51
|
+
edges = [];
|
|
50
52
|
/** The width of the mesh's image. Available only when nonessential data was exported. */
|
|
51
53
|
width = 0;
|
|
52
54
|
/** The height of the mesh's image. Available only when nonessential data was exported. */
|
|
53
55
|
height = 0;
|
|
54
|
-
/** The number of entries at the beginning of {@link #vertices} that make up the mesh hull. */
|
|
55
|
-
hullLength = 0;
|
|
56
|
-
/** Vertex index pairs describing edges for controling triangulation. Mesh triangles will never cross edges. Only available if
|
|
57
|
-
* nonessential data was exported. Triangulation is not performed at runtime. */
|
|
58
|
-
edges = [];
|
|
59
|
-
parentMesh = null;
|
|
60
|
-
sequence = null;
|
|
61
56
|
tempColor = new Color(0, 0, 0, 0);
|
|
62
|
-
constructor(name,
|
|
57
|
+
constructor(name, sequence) {
|
|
63
58
|
super(name);
|
|
64
|
-
this.
|
|
59
|
+
this.sequence = sequence;
|
|
60
|
+
}
|
|
61
|
+
copy() {
|
|
62
|
+
if (this.sourceMesh)
|
|
63
|
+
return this.newLinkedMesh();
|
|
64
|
+
const copy = new MeshAttachment(this.name, this.sequence.copy());
|
|
65
|
+
copy.path = this.path;
|
|
66
|
+
copy.color.setFromColor(this.color);
|
|
67
|
+
this.copyTo(copy);
|
|
68
|
+
copy.regionUVs = [];
|
|
69
|
+
Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length);
|
|
70
|
+
copy.triangles = [];
|
|
71
|
+
Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length);
|
|
72
|
+
copy.hullLength = this.hullLength;
|
|
73
|
+
// Nonessential.
|
|
74
|
+
if (this.edges) {
|
|
75
|
+
copy.edges = [];
|
|
76
|
+
Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length);
|
|
77
|
+
}
|
|
78
|
+
copy.width = this.width;
|
|
79
|
+
copy.height = this.height;
|
|
80
|
+
return copy;
|
|
81
|
+
}
|
|
82
|
+
updateSequence() {
|
|
83
|
+
this.sequence.update(this);
|
|
84
|
+
}
|
|
85
|
+
/** The source mesh if this is a linked mesh, else null. A linked mesh shares the {@link bones}, {@link vertices},
|
|
86
|
+
* {@link regionUVs}, {@link triangles}, {@link hullLength}, {@link edges}, {@link width}, and {@link height} with the
|
|
87
|
+
* source mesh, but may have a different {@link name} or {@link path}, and therefore a different texture region. */
|
|
88
|
+
getSourceMesh() {
|
|
89
|
+
return this.sourceMesh;
|
|
90
|
+
}
|
|
91
|
+
setSourceMesh(sourceMesh) {
|
|
92
|
+
this.sourceMesh = sourceMesh;
|
|
93
|
+
if (sourceMesh) {
|
|
94
|
+
this.bones = sourceMesh.bones;
|
|
95
|
+
this.vertices = sourceMesh.vertices;
|
|
96
|
+
this.worldVerticesLength = sourceMesh.worldVerticesLength;
|
|
97
|
+
this.regionUVs = sourceMesh.regionUVs;
|
|
98
|
+
this.triangles = sourceMesh.triangles;
|
|
99
|
+
this.hullLength = sourceMesh.hullLength;
|
|
100
|
+
this.worldVerticesLength = sourceMesh.worldVerticesLength;
|
|
101
|
+
this.edges = sourceMesh.edges;
|
|
102
|
+
this.width = sourceMesh.width;
|
|
103
|
+
this.height = sourceMesh.height;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/** Returns a new mesh with the {@link sourceMesh} set to this mesh's source mesh, if any, else to this mesh. **/
|
|
107
|
+
newLinkedMesh() {
|
|
108
|
+
const copy = new MeshAttachment(this.name, this.sequence.copy());
|
|
109
|
+
copy.timelineAttachment = this.timelineAttachment;
|
|
110
|
+
copy.path = this.path;
|
|
111
|
+
copy.color.setFromColor(this.color);
|
|
112
|
+
copy.setSourceMesh(this.sourceMesh ? this.sourceMesh : this);
|
|
113
|
+
copy.updateSequence();
|
|
114
|
+
return copy;
|
|
65
115
|
}
|
|
66
|
-
/**
|
|
67
|
-
* the
|
|
68
|
-
|
|
69
|
-
if (!
|
|
116
|
+
/** Computes {@link Sequence.getUVs | UVs} for a mesh attachment.
|
|
117
|
+
* @param uvs Output array for the computed UVs, same length as regionUVs. */
|
|
118
|
+
static computeUVs(region, regionUVs, uvs) {
|
|
119
|
+
if (!region)
|
|
70
120
|
throw new Error("Region not set.");
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
let u = this.region.u, v = this.region.v, width = 0, height = 0;
|
|
77
|
-
if (this.region instanceof TextureAtlasRegion) {
|
|
78
|
-
let region = this.region, page = region.page;
|
|
79
|
-
let textureWidth = page.width, textureHeight = page.height;
|
|
121
|
+
const n = uvs.length;
|
|
122
|
+
let u = region.u, v = region.v, width = 0, height = 0;
|
|
123
|
+
if (region instanceof TextureAtlasRegion) {
|
|
124
|
+
const page = region.page;
|
|
125
|
+
const textureWidth = page.width, textureHeight = page.height;
|
|
80
126
|
switch (region.degrees) {
|
|
81
127
|
case 90:
|
|
82
128
|
u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
|
@@ -108,83 +154,25 @@ export class MeshAttachment extends VertexAttachment {
|
|
|
108
154
|
uvs[i + 1] = v + regionUVs[i] * height;
|
|
109
155
|
}
|
|
110
156
|
return;
|
|
157
|
+
default:
|
|
158
|
+
u -= region.offsetX / textureWidth;
|
|
159
|
+
v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
|
160
|
+
width = region.originalWidth / textureWidth;
|
|
161
|
+
height = region.originalHeight / textureHeight;
|
|
111
162
|
}
|
|
112
|
-
u -= region.offsetX / textureWidth;
|
|
113
|
-
v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
|
114
|
-
width = region.originalWidth / textureWidth;
|
|
115
|
-
height = region.originalHeight / textureHeight;
|
|
116
163
|
}
|
|
117
|
-
else if (!
|
|
164
|
+
else if (!region) {
|
|
118
165
|
u = v = 0;
|
|
119
166
|
width = height = 1;
|
|
120
167
|
}
|
|
121
168
|
else {
|
|
122
|
-
width =
|
|
123
|
-
height =
|
|
169
|
+
width = region.u2 - u;
|
|
170
|
+
height = region.v2 - v;
|
|
124
171
|
}
|
|
125
172
|
for (let i = 0; i < n; i += 2) {
|
|
126
173
|
uvs[i] = u + regionUVs[i] * width;
|
|
127
174
|
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
|
128
175
|
}
|
|
129
176
|
}
|
|
130
|
-
/** The parent mesh if this is a linked mesh, else null. A linked mesh shares the {@link #bones}, {@link #vertices},
|
|
131
|
-
* {@link #regionUVs}, {@link #triangles}, {@link #hullLength}, {@link #edges}, {@link #width}, and {@link #height} with the
|
|
132
|
-
* parent mesh, but may have a different {@link #name} or {@link #path} (and therefore a different texture). */
|
|
133
|
-
getParentMesh() {
|
|
134
|
-
return this.parentMesh;
|
|
135
|
-
}
|
|
136
|
-
/** @param parentMesh May be null. */
|
|
137
|
-
setParentMesh(parentMesh) {
|
|
138
|
-
this.parentMesh = parentMesh;
|
|
139
|
-
if (parentMesh) {
|
|
140
|
-
this.bones = parentMesh.bones;
|
|
141
|
-
this.vertices = parentMesh.vertices;
|
|
142
|
-
this.worldVerticesLength = parentMesh.worldVerticesLength;
|
|
143
|
-
this.regionUVs = parentMesh.regionUVs;
|
|
144
|
-
this.triangles = parentMesh.triangles;
|
|
145
|
-
this.hullLength = parentMesh.hullLength;
|
|
146
|
-
this.worldVerticesLength = parentMesh.worldVerticesLength;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
copy() {
|
|
150
|
-
if (this.parentMesh)
|
|
151
|
-
return this.newLinkedMesh();
|
|
152
|
-
let copy = new MeshAttachment(this.name, this.path);
|
|
153
|
-
copy.region = this.region;
|
|
154
|
-
copy.color.setFromColor(this.color);
|
|
155
|
-
this.copyTo(copy);
|
|
156
|
-
copy.regionUVs = new Array(this.regionUVs.length);
|
|
157
|
-
Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length);
|
|
158
|
-
copy.uvs = this.uvs instanceof Float32Array ? Utils.newFloatArray(this.uvs.length) : new Array(this.uvs.length);
|
|
159
|
-
Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length);
|
|
160
|
-
copy.triangles = new Array(this.triangles.length);
|
|
161
|
-
Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length);
|
|
162
|
-
copy.hullLength = this.hullLength;
|
|
163
|
-
copy.sequence = this.sequence != null ? this.sequence.copy() : null;
|
|
164
|
-
// Nonessential.
|
|
165
|
-
if (this.edges) {
|
|
166
|
-
copy.edges = new Array(this.edges.length);
|
|
167
|
-
Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length);
|
|
168
|
-
}
|
|
169
|
-
copy.width = this.width;
|
|
170
|
-
copy.height = this.height;
|
|
171
|
-
return copy;
|
|
172
|
-
}
|
|
173
|
-
computeWorldVertices(slot, start, count, worldVertices, offset, stride) {
|
|
174
|
-
if (this.sequence != null)
|
|
175
|
-
this.sequence.apply(slot, this);
|
|
176
|
-
super.computeWorldVertices(slot, start, count, worldVertices, offset, stride);
|
|
177
|
-
}
|
|
178
|
-
/** Returns a new mesh with the {@link #parentMesh} set to this mesh's parent mesh, if any, else to this mesh. **/
|
|
179
|
-
newLinkedMesh() {
|
|
180
|
-
let copy = new MeshAttachment(this.name, this.path);
|
|
181
|
-
copy.region = this.region;
|
|
182
|
-
copy.color.setFromColor(this.color);
|
|
183
|
-
copy.timelineAttachment = this.timelineAttachment;
|
|
184
|
-
copy.setParentMesh(this.parentMesh ? this.parentMesh : this);
|
|
185
|
-
if (copy.region != null)
|
|
186
|
-
copy.updateRegion();
|
|
187
|
-
return copy;
|
|
188
|
-
}
|
|
189
177
|
}
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzaEF0dGFjaG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXR0YWNobWVudHMvTWVzaEF0dGFjaG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQW1CLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWMsTUFBTSxpQkFBaUIsQ0FBQztBQUsvRDs7OytGQUcrRjtBQUMvRixNQUFNLE9BQU8sY0FBZSxTQUFRLGdCQUFnQjtJQUNuRCxNQUFNLEdBQXlCLElBQUksQ0FBQztJQUVwQywwREFBMEQ7SUFDMUQsSUFBSSxDQUFTO0lBRWIseUVBQXlFO0lBQ3pFLFNBQVMsR0FBb0IsRUFBRSxDQUFDO0lBRWhDOztpQ0FFNkI7SUFDN0IsR0FBRyxHQUFvQixFQUFFLENBQUM7SUFFMUIsMEVBQTBFO0lBQzFFLFNBQVMsR0FBa0IsRUFBRSxDQUFDO0lBRTlCLGtDQUFrQztJQUNsQyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFOUIseUZBQXlGO0lBQ3pGLEtBQUssR0FBVyxDQUFDLENBQUM7SUFFbEIsMEZBQTBGO0lBQzFGLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFFbkIsOEZBQThGO0lBQzlGLFVBQVUsR0FBVyxDQUFDLENBQUM7SUFFdkI7b0ZBQ2dGO0lBQ2hGLEtBQUssR0FBa0IsRUFBRSxDQUFDO0lBRWxCLFVBQVUsR0FBMEIsSUFBSSxDQUFDO0lBRWpELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBRWpDLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxD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LEtBQWEsRUFBRSxhQUE4QixFQUFFLE1BQWMsRUFBRSxNQUFjO1FBQzdILElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxrSEFBa0g7SUFDbEgsYUFBYTtRQUNaLElBQUksSUFBSSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBUZXh0dXJlUmVnaW9uIH0gZnJvbSBcIi4uL1RleHR1cmUuanNcIjtcbmltcG9ydCB7IFRleHR1cmVBdGxhc1JlZ2lvbiB9IGZyb20gXCIuLi9UZXh0dXJlQXRsYXMuanNcIjtcbmltcG9ydCB7IENvbG9yLCBOdW1iZXJBcnJheUxpa2UsIFV0aWxzIH0gZnJvbSBcIi4uL1V0aWxzLmpzXCI7XG5pbXBvcnQgeyBWZXJ0ZXhBdHRhY2htZW50LCBBdHRhY2htZW50IH0gZnJvbSBcIi4vQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgSGFzVGV4dHVyZVJlZ2lvbiB9IGZyb20gXCIuL0hhc1RleHR1cmVSZWdpb24uanNcIjtcbmltcG9ydCB7IFNlcXVlbmNlIH0gZnJvbSBcIi4vU2VxdWVuY2UuanNcIjtcbmltcG9ydCB7IFNsb3QgfSBmcm9tIFwiLi4vU2xvdC5qc1wiO1xuXG4vKiogQW4gYXR0YWNobWVudCB0aGF0IGRpc3BsYXlzIGEgdGV4dHVyZWQgbWVzaC4gQSBtZXNoIGhhcyBodWxsIHZlcnRpY2VzIGFuZCBpbnRlcm5hbCB2ZXJ0aWNlcyB3aXRoaW4gdGhlIGh1bGwuIEhvbGVzIGFyZSBub3RcbiAqIHN1cHBvcnRlZC4gRWFjaCB2ZXJ0ZXggaGFzIFVWcyAodGV4dHVyZSBjb29yZGluYXRlcykgYW5kIHRyaWFuZ2xlcyBhcmUgdXNlZCB0byBtYXAgYW4gaW1hZ2Ugb24gdG8gdGhlIG1lc2guXG4gKlxuICogU2VlIFtNZXNoIGF0dGFjaG1lbnRzXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtbWVzaGVzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBNZXNoQXR0YWNobWVudCBleHRlbmRzIFZlcnRleEF0dGFjaG1lbnQgaW1wbGVtZW50cyBIYXNUZXh0dXJlUmVnaW9uIHtcblx0cmVnaW9uOiBUZXh0dXJlUmVnaW9uIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIFRoZSBuYW1lIG9mIHRoZSB0ZXh0dXJlIHJlZ2lvbiBmb3IgdGhpcyBhdHRhY2htZW50LiAqL1xuXHRwYXRoOiBzdHJpbmc7XG5cblx0LyoqIFRoZSBVViBwYWlyIGZvciBlYWNoIHZlcnRleCwgbm9ybWFsaXplZCB3aXRoaW4gdGhlIHRleHR1cmUgcmVnaW9uLiAqL1xuXHRyZWdpb25VVnM6IE51bWJlckFycmF5TGlrZSA9IFtdO1xuXG5cdC8qKiBUaGUgVVYgcGFpciBmb3IgZWFjaCB2ZXJ0ZXgsIG5vcm1hbGl6ZWQgd2l0aGluIHRoZSBlbnRpcmUgdGV4dHVyZS5cblx0ICpcblx0ICogU2VlIHtAbGluayAjdXBkYXRlVVZzfS4gKi9cblx0dXZzOiBOdW1iZXJBcnJheUxpa2UgPSBbXTtcblxuXHQvKiogVHJpcGxldHMgb2YgdmVydGV4IGluZGljZXMgd2hpY2ggZGVzY3JpYmUgdGhlIG1lc2gncyB0cmlhbmd1bGF0aW9uLiAqL1xuXHR0cmlhbmdsZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcblxuXHQvKiogVGhlIGNvbG9yIHRvIHRpbnQgdGhlIG1lc2guICovXG5cdGNvbG9yID0gbmV3IENvbG9yKDEsIDEsIDEsIDEpO1xuXG5cdC8qKiBUaGUgd2lkdGggb2YgdGhlIG1lc2gncyBpbWFnZS4gQXZhaWxhYmxlIG9ubHkgd2hlbiBub25lc3NlbnRpYWwgZGF0YSB3YXMgZXhwb3J0ZWQuICovXG5cdHdpZHRoOiBudW1iZXIgPSAwO1xuXG5cdC8qKiBUaGUgaGVpZ2h0IG9mIHRoZSBtZXNoJ3MgaW1hZ2UuIEF2YWlsYWJsZSBvbmx5IHdoZW4gbm9uZXNzZW50aWFsIGRhdGEgd2FzIGV4cG9ydGVkLiAqL1xuXHRoZWlnaHQ6IG51bWJlciA9IDA7XG5cblx0LyoqIFRoZSBudW1iZXIgb2YgZW50cmllcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHtAbGluayAjdmVydGljZXN9IHRoYXQgbWFrZSB1cCB0aGUgbWVzaCBodWxsLiAqL1xuXHRodWxsTGVuZ3RoOiBudW1iZXIgPSAwO1xuXG5cdC8qKiBWZXJ0ZXggaW5kZXggcGFpcnMgZGVzY3JpYmluZyBlZGdlcyBmb3IgY29udHJvbGluZyB0cmlhbmd1bGF0aW9uLiBNZXNoIHRyaWFuZ2xlcyB3aWxsIG5ldmVyIGNyb3NzIGVkZ2VzLiBPbmx5IGF2YWlsYWJsZSBpZlxuXHQgKiBub25lc3NlbnRpYWwgZGF0YSB3YXMgZXhwb3J0ZWQuIFRyaWFuZ3VsYXRpb24gaXMgbm90IHBlcmZvcm1lZCBhdCBydW50aW1lLiAqL1xuXHRlZGdlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG5cdHByaXZhdGUgcGFyZW50TWVzaDogTWVzaEF0dGFjaG1lbnQgfCBudWxsID0gbnVsbDtcblxuXHRzZXF1ZW5jZTogU2VxdWVuY2UgfCBudWxsID0gbnVsbDtcblxuXHR0ZW1wQ29sb3IgPSBuZXcgQ29sb3IoMCwgMCwgMCwgMCk7XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0dGhpcy5wYXRoID0gcGF0aDtcblx0fVxuXG5cdC8qKiBDYWxjdWxhdGVzIHtAbGluayAjdXZzfSB1c2luZyB0aGUge0BsaW5rICNyZWdpb25VVnN9IGFuZCByZWdpb24uIE11c3QgYmUgY2FsbGVkIGlmIHRoZSByZWdpb24sIHRoZSByZWdpb24ncyBwcm9wZXJ0aWVzLCBvclxuXHQgKiB0aGUge0BsaW5rICNyZWdpb25VVnN9IGFyZSBjaGFuZ2VkLiAqL1xuXHR1cGRhdGVSZWdpb24gKCkge1xuXHRcdGlmICghdGhpcy5yZWdpb24pIHRocm93IG5ldyBFcnJvcihcIlJlZ2lvbiBub3Qgc2V0LlwiKTtcblx0XHRsZXQgcmVnaW9uVVZzID0gdGhpcy5yZWdpb25VVnM7XG5cdFx0aWYgKCF0aGlzLnV2cyB8fCB0aGlzLnV2cy5sZW5ndGggIT0gcmVnaW9uVVZzLmxlbmd0aCkgdGhpcy51dnMgPSBVdGlscy5uZXdGbG9hdEFycmF5KHJlZ2lvblVWcy5sZW5ndGgpO1xuXHRcdGxldCB1dnMgPSB0aGlzLnV2cztcblx0XHRsZXQgbiA9IHRoaXMudXZzLmxlbmd0aDtcblx0XHRsZXQgdSA9IHRoaXMucmVnaW9uLnUsIHYgPSB0aGlzLnJlZ2lvbi52LCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7XG5cdFx0aWYgKHRoaXMucmVnaW9uIGluc3RhbmNlb2YgVGV4dHVyZUF0bGFzUmVnaW9uKSB7XG5cdFx0XHRsZXQgcmVnaW9uID0gdGhpcy5yZWdpb24sIHBhZ2UgPSByZWdpb24ucGFnZTtcblx0XHRcdGxldCB0ZXh0dXJlV2lkdGggPSBwYWdlLndpZHRoLCB0ZXh0dXJlSGVpZ2h0ID0gcGFnZS5oZWlnaHQ7XG5cdFx0XHRzd2l0Y2ggKHJlZ2lvbi5kZWdyZWVzKSB7XG5cdFx0XHRcdGNhc2UgOTA6XG5cdFx0XHRcdFx0dSAtPSAocmVnaW9uLm9yaWdpbmFsSGVpZ2h0IC0gcmVnaW9uLm9mZnNldFkgLSByZWdpb24uaGVpZ2h0KSAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHR2IC09IChyZWdpb24ub3JpZ2luYWxXaWR0aCAtIHJlZ2lvbi5vZmZzZXRYIC0gcmVnaW9uLndpZHRoKSAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHRcdFx0d2lkdGggPSByZWdpb24ub3JpZ2luYWxIZWlnaHQgLyB0ZXh0dXJlV2lkdGg7XG5cdFx0XHRcdFx0aGVpZ2h0ID0gcmVnaW9uLm9yaWdpbmFsV2lkdGggLyB0ZXh0dXJlSGVpZ2h0O1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRcdFx0XHR1dnNbaV0gPSB1ICsgcmVnaW9uVVZzW2kgKyAxXSAqIHdpZHRoO1xuXHRcdFx0XHRcdFx0dXZzW2kgKyAxXSA9IHYgKyAoMSAtIHJlZ2lvblVWc1tpXSkgKiBoZWlnaHQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSAxODA6XG5cdFx0XHRcdFx0dSAtPSAocmVnaW9uLm9yaWdpbmFsV2lkdGggLSByZWdpb24ub2Zmc2V0WCAtIHJlZ2lvbi53aWR0aCkgLyB0ZXh0dXJlV2lkdGg7XG5cdFx0XHRcdFx0diAtPSByZWdpb24ub2Zmc2V0WSAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHRcdFx0d2lkdGggPSByZWdpb24ub3JpZ2luYWxXaWR0aCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHRoZWlnaHQgPSByZWdpb24ub3JpZ2luYWxIZWlnaHQgLyB0ZXh0dXJlSGVpZ2h0O1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRcdFx0XHR1dnNbaV0gPSB1ICsgKDEgLSByZWdpb25VVnNbaV0pICogd2lkdGg7XG5cdFx0XHRcdFx0XHR1dnNbaSArIDFdID0gdiArICgxIC0gcmVnaW9uVVZzW2kgKyAxXSkgKiBoZWlnaHQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSAyNzA6XG5cdFx0XHRcdFx0dSAtPSByZWdpb24ub2Zmc2V0WSAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHR2IC09IHJlZ2lvbi5vZmZzZXRYIC8gdGV4dHVyZUhlaWdodDtcblx0XHRcdFx0XHR3aWR0aCA9IHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHRoZWlnaHQgPSByZWdpb24ub3JpZ2luYWxXaWR0aCAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdFx0XHRcdHV2c1tpXSA9IHUgKyAoMSAtIHJlZ2lvblVWc1tpICsgMV0pICogd2lkdGg7XG5cdFx0XHRcdFx0XHR1dnNbaSArIDFdID0gdiArIHJlZ2lvblVWc1tpXSAqIGhlaWdodDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dSAtPSByZWdpb24ub2Zmc2V0WCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdHYgLT0gKHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAtIHJlZ2lvbi5vZmZzZXRZIC0gcmVnaW9uLmhlaWdodCkgLyB0ZXh0dXJlSGVpZ2h0O1xuXHRcdFx0d2lkdGggPSByZWdpb24ub3JpZ2luYWxXaWR0aCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdGhlaWdodCA9IHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0fSBlbHNlIGlmICghdGhpcy5yZWdpb24pIHtcblx0XHRcdHUgPSB2ID0gMDtcblx0XHRcdHdpZHRoID0gaGVpZ2h0ID0gMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0d2lkdGggPSB0aGlzLnJlZ2lvbi51MiAtIHU7XG5cdFx0XHRoZWlnaHQgPSB0aGlzLnJlZ2lvbi52MiAtIHY7XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdHV2c1tpXSA9IHUgKyByZWdpb25VVnNbaV0gKiB3aWR0aDtcblx0XHRcdHV2c1tpICsgMV0gPSB2ICsgcmVnaW9uVVZzW2kgKyAxXSAqIGhlaWdodDtcblx0XHR9XG5cdH1cblxuXHQvKiogVGhlIHBhcmVudCBtZXNoIGlmIHRoaXMgaXMgYSBsaW5rZWQgbWVzaCwgZWxzZSBudWxsLiBBIGxpbmtlZCBtZXNoIHNoYXJlcyB0aGUge0BsaW5rICNib25lc30sIHtAbGluayAjdmVydGljZXN9LFxuXHQgKiB7QGxpbmsgI3JlZ2lvblVWc30sIHtAbGluayAjdHJpYW5nbGVzfSwge0BsaW5rICNodWxsTGVuZ3RofSwge0BsaW5rICNlZGdlc30sIHtAbGluayAjd2lkdGh9LCBhbmQge0BsaW5rICNoZWlnaHR9IHdpdGggdGhlXG5cdCAqIHBhcmVudCBtZXNoLCBidXQgbWF5IGhhdmUgYSBkaWZmZXJlbnQge0BsaW5rICNuYW1lfSBvciB7QGxpbmsgI3BhdGh9IChhbmQgdGhlcmVmb3JlIGEgZGlmZmVyZW50IHRleHR1cmUpLiAqL1xuXHRnZXRQYXJlbnRNZXNoICgpIHtcblx0XHRyZXR1cm4gdGhpcy5wYXJlbnRNZXNoO1xuXHR9XG5cblx0LyoqIEBwYXJhbSBwYXJlbnRNZXNoIE1heSBiZSBudWxsLiAqL1xuXHRzZXRQYXJlbnRNZXNoIChwYXJlbnRNZXNoOiBNZXNoQXR0YWNobWVudCkge1xuXHRcdHRoaXMucGFyZW50TWVzaCA9IHBhcmVudE1lc2g7XG5cdFx0aWYgKHBhcmVudE1lc2gpIHtcblx0XHRcdHRoaXMuYm9uZXMgPSBwYXJlbnRNZXNoLmJvbmVzO1xuXHRcdFx0dGhpcy52ZXJ0aWNlcyA9IHBhcmVudE1lc2gudmVydGljZXM7XG5cdFx0XHR0aGlzLndvcmxkVmVydGljZXNMZW5ndGggPSBwYXJlbnRNZXNoLndvcmxkVmVydGljZXNMZW5ndGg7XG5cdFx0XHR0aGlzLnJlZ2lvblVWcyA9IHBhcmVudE1lc2gucmVnaW9uVVZzO1xuXHRcdFx0dGhpcy50cmlhbmdsZXMgPSBwYXJlbnRNZXNoLnRyaWFuZ2xlcztcblx0XHRcdHRoaXMuaHVsbExlbmd0aCA9IHBhcmVudE1lc2guaHVsbExlbmd0aDtcblx0XHRcdHRoaXMud29ybGRWZXJ0aWNlc0xlbmd0aCA9IHBhcmVudE1lc2gud29ybGRWZXJ0aWNlc0xlbmd0aFxuXHRcdH1cblx0fVxuXG5cdGNvcHkgKCk6IEF0dGFjaG1lbnQge1xuXHRcdGlmICh0aGlzLnBhcmVudE1lc2gpIHJldHVybiB0aGlzLm5ld0xpbmtlZE1lc2goKTtcblxuXHRcdGxldCBjb3B5ID0gbmV3IE1lc2hBdHRhY2htZW50KHRoaXMubmFtZSwgdGhpcy5wYXRoKTtcblx0XHRjb3B5LnJlZ2lvbiA9IHRoaXMucmVnaW9uO1xuXHRcdGNvcHkuY29sb3Iuc2V0RnJvbUNvbG9yKHRoaXMuY29sb3IpO1xuXG5cdFx0dGhpcy5jb3B5VG8oY29weSk7XG5cdFx0Y29weS5yZWdpb25VVnMgPSBuZXcgQXJyYXk8bnVtYmVyPih0aGlzLnJlZ2lvblVWcy5sZW5ndGgpO1xuXHRcdFV0aWxzLmFycmF5Q29weSh0aGlzLnJlZ2lvblVWcywgMCwgY29weS5yZWdpb25VVnMsIDAsIHRoaXMucmVnaW9uVVZzLmxlbmd0aCk7XG5cdFx0Y29weS51dnMgPSB0aGlzLnV2cyBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSA/IFV0aWxzLm5ld0Zsb2F0QXJyYXkodGhpcy51dnMubGVuZ3RoKSA6IG5ldyBBcnJheTxudW1iZXI+KHRoaXMudXZzLmxlbmd0aCk7XG5cdFx0VXRpbHMuYXJyYXlDb3B5KHRoaXMudXZzLCAwLCBjb3B5LnV2cywgMCwgdGhpcy51dnMubGVuZ3RoKTtcblx0XHRjb3B5LnRyaWFuZ2xlcyA9IG5ldyBBcnJheTxudW1iZXI+KHRoaXMudHJpYW5nbGVzLmxlbmd0aCk7XG5cdFx0VXRpbHMuYXJyYXlDb3B5KHRoaXMudHJpYW5nbGVzLCAwLCBjb3B5LnRyaWFuZ2xlcywgMCwgdGhpcy50cmlhbmdsZXMubGVuZ3RoKTtcblx0XHRjb3B5Lmh1bGxMZW5ndGggPSB0aGlzLmh1bGxMZW5ndGg7XG5cblx0XHRjb3B5LnNlcXVlbmNlID0gdGhpcy5zZXF1ZW5jZSAhPSBudWxsID8gdGhpcy5zZXF1ZW5jZS5jb3B5KCkgOiBudWxsO1xuXG5cdFx0Ly8gTm9uZXNzZW50aWFsLlxuXHRcdGlmICh0aGlzLmVkZ2VzKSB7XG5cdFx0XHRjb3B5LmVkZ2VzID0gbmV3IEFycmF5PG51bWJlcj4odGhpcy5lZGdlcy5sZW5ndGgpO1xuXHRcdFx0VXRpbHMuYXJyYXlDb3B5KHRoaXMuZWRnZXMsIDAsIGNvcHkuZWRnZXMsIDAsIHRoaXMuZWRnZXMubGVuZ3RoKTtcblx0XHR9XG5cdFx0Y29weS53aWR0aCA9IHRoaXMud2lkdGg7XG5cdFx0Y29weS5oZWlnaHQgPSB0aGlzLmhlaWdodDtcblxuXHRcdHJldHVybiBjb3B5O1xuXHR9XG5cblx0Y29tcHV0ZVdvcmxkVmVydGljZXMgKHNsb3Q6IFNsb3QsIHN0YXJ0OiBudW1iZXIsIGNvdW50OiBudW1iZXIsIHdvcmxkVmVydGljZXM6IE51bWJlckFycmF5TGlrZSwgb2Zmc2V0OiBudW1iZXIsIHN0cmlkZTogbnVtYmVyKSB7XG5cdFx0aWYgKHRoaXMuc2VxdWVuY2UgIT0gbnVsbCkgdGhpcy5zZXF1ZW5jZS5hcHBseShzbG90LCB0aGlzKTtcblx0XHRzdXBlci5jb21wdXRlV29ybGRWZXJ0aWNlcyhzbG90LCBzdGFydCwgY291bnQsIHdvcmxkVmVydGljZXMsIG9mZnNldCwgc3RyaWRlKTtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIGEgbmV3IG1lc2ggd2l0aCB0aGUge0BsaW5rICNwYXJlbnRNZXNofSBzZXQgdG8gdGhpcyBtZXNoJ3MgcGFyZW50IG1lc2gsIGlmIGFueSwgZWxzZSB0byB0aGlzIG1lc2guICoqL1xuXHRuZXdMaW5rZWRNZXNoICgpOiBNZXNoQXR0YWNobWVudCB7XG5cdFx0bGV0IGNvcHkgPSBuZXcgTWVzaEF0dGFjaG1lbnQodGhpcy5uYW1lLCB0aGlzLnBhdGgpO1xuXHRcdGNvcHkucmVnaW9uID0gdGhpcy5yZWdpb247XG5cdFx0Y29weS5jb2xvci5zZXRGcm9tQ29sb3IodGhpcy5jb2xvcik7XG5cdFx0Y29weS50aW1lbGluZUF0dGFjaG1lbnQgPSB0aGlzLnRpbWVsaW5lQXR0YWNobWVudDtcblx0XHRjb3B5LnNldFBhcmVudE1lc2godGhpcy5wYXJlbnRNZXNoID8gdGhpcy5wYXJlbnRNZXNoIDogdGhpcyk7XG5cdFx0aWYgKGNvcHkucmVnaW9uICE9IG51bGwpIGNvcHkudXBkYXRlUmVnaW9uKCk7XG5cdFx0cmV0dXJuIGNvcHk7XG5cdH1cbn1cbiJdfQ==
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzaEF0dGFjaG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXR0YWNobWVudHMvTWVzaEF0dGFjaG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQXdCLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUluRDs7OytGQUcrRjtBQUMvRixNQUFNLE9BQU8sY0FBZSxTQUFRLGdCQUFnQjtJQUMxQyxRQUFRLENBQVc7SUFFNUIseUVBQXlFO0lBQ3pFLFNBQVMsR0FBb0IsRUFBRSxDQUFDO0lBRWhDLDBFQUEwRTtJQUMxRSxTQUFTLEdBQWtCLEVBQUUsQ0FBQztJQUU5Qiw2RkFBNkY7SUFDN0YsVUFBVSxHQUFXLENBQUMsQ0FBQztJQUV2QiwwREFBMEQ7SUFDMUQsSUFBSSxDQUFVO0lBRWQsa0NBQWtDO0lBQ2xDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0QixVQUFVLEdBQTBCLElBQUksQ0FBQztJQUVqRDt3RkFDb0Y7SUFDcEYsS0FBSyxHQUFrQixFQUFFLENBQUM7SUFFMUIseUZBQXlGO0lBQ3pGLEtBQUssR0FBVyxDQUFDLENBQUM7SUFFbEIsMEZBQTBGO0lBQzFGLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFFbkIsU0FBUyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWxDLFlBQWEsSUFBWSxFQUFFLFFBQWtCO1FBQzVDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElB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QUssR0FBRyxNQUFNLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztvQkFDNUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1lBQ2pELENBQUM7UUFDRixDQUFDO2FBQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDUCxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDbEMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDNUMsQ0FBQztJQUNGLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBUZXh0dXJlUmVnaW9uIH0gZnJvbSBcIi4uL1RleHR1cmUuanNcIjtcbmltcG9ydCB7IFRleHR1cmVBdGxhc1JlZ2lvbiB9IGZyb20gXCIuLi9UZXh0dXJlQXRsYXMuanNcIjtcbmltcG9ydCB7IENvbG9yLCB0eXBlIE51bWJlckFycmF5TGlrZSwgVXRpbHMgfSBmcm9tIFwiLi4vVXRpbHMuanNcIjtcbmltcG9ydCB7IFZlcnRleEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9BdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEhhc1NlcXVlbmNlIH0gZnJvbSBcIi4vSGFzU2VxdWVuY2UuanNcIjtcbmltcG9ydCB0eXBlIHsgU2VxdWVuY2UgfSBmcm9tIFwiLi9TZXF1ZW5jZS5qc1wiO1xuXG4vKiogQW4gYXR0YWNobWVudCB0aGF0IGRpc3BsYXlzIGEgdGV4dHVyZWQgbWVzaC4gQSBtZXNoIGhhcyBodWxsIHZlcnRpY2VzIGFuZCBpbnRlcm5hbCB2ZXJ0aWNlcyB3aXRoaW4gdGhlIGh1bGwuIEhvbGVzIGFyZSBub3RcbiAqIHN1cHBvcnRlZC4gRWFjaCB2ZXJ0ZXggaGFzIFVWcyAodGV4dHVyZSBjb29yZGluYXRlcykgYW5kIHRyaWFuZ2xlcyB0aGF0IGFyZSB1c2VkIHRvIG1hcCBhbiBpbWFnZSBvbiB0byB0aGUgbWVzaC5cbiAqXG4gKiBTZWUgW01lc2ggYXR0YWNobWVudHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1tZXNoZXMpIGluIHRoZSBTcGluZSBVc2VyIEd1aWRlLiAqL1xuZXhwb3J0IGNsYXNzIE1lc2hBdHRhY2htZW50IGV4dGVuZHMgVmVydGV4QXR0YWNobWVudCBpbXBsZW1lbnRzIEhhc1NlcXVlbmNlIHtcblx0cmVhZG9ubHkgc2VxdWVuY2U6IFNlcXVlbmNlO1xuXG5cdC8qKiBUaGUgVVYgcGFpciBmb3IgZWFjaCB2ZXJ0ZXgsIG5vcm1hbGl6ZWQgd2l0aGluIHRoZSB0ZXh0dXJlIHJlZ2lvbi4gKi9cblx0cmVnaW9uVVZzOiBOdW1iZXJBcnJheUxpa2UgPSBbXTtcblxuXHQvKiogVHJpcGxldHMgb2YgdmVydGV4IGluZGljZXMgd2hpY2ggZGVzY3JpYmUgdGhlIG1lc2gncyB0cmlhbmd1bGF0aW9uLiAqL1xuXHR0cmlhbmdsZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcblxuXHQvKiogVGhlIG51bWJlciBvZiBlbnRyaWVzIGF0IHRoZSBiZWdpbm5pbmcgb2Yge0BsaW5rIHZlcnRpY2VzfSB0aGF0IG1ha2UgdXAgdGhlIG1lc2ggaHVsbC4gKi9cblx0aHVsbExlbmd0aDogbnVtYmVyID0gMDtcblxuXHQvKiogVGhlIG5hbWUgb2YgdGhlIHRleHR1cmUgcmVnaW9uIGZvciB0aGlzIGF0dGFjaG1lbnQuICovXG5cdHBhdGg/OiBzdHJpbmc7XG5cblx0LyoqIFRoZSBjb2xvciB0byB0aW50IHRoZSBtZXNoLiAqL1xuXHRjb2xvciA9IG5ldyBDb2xvcigxLCAxLCAxLCAxKTtcblxuXHRwcml2YXRlIHNvdXJjZU1lc2g6IE1lc2hBdHRhY2htZW50IHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIFZlcnRleCBpbmRleCBwYWlycyBkZXNjcmliaW5nIGVkZ2VzIGZvciBjb250cm9sbGluZyB0cmlhbmd1bGF0aW9uLCBvciBudWxsIGlmIG5vbmVzc2VudGlhbCBkYXRhIHdhcyBub3QgZXhwb3J0ZWQuIE1lc2hcblx0ICogdHJpYW5nbGVzIGRvIG5vdCBuZXZlciBjcm9zcyBlZGdlcy4gVHJpYW5ndWxhdGlvbiBpcyBub3QgcGVyZm9ybWVkIGF0IHJ1bnRpbWUuICovXG5cdGVkZ2VzOiBBcnJheTxudW1iZXI+ID0gW107XG5cblx0LyoqIFRoZSB3aWR0aCBvZiB0aGUgbWVzaCdzIGltYWdlLiBBdmFpbGFibGUgb25seSB3aGVuIG5vbmVzc2VudGlhbCBkYXRhIHdhcyBleHBvcnRlZC4gKi9cblx0d2lkdGg6IG51bWJlciA9IDA7XG5cblx0LyoqIFRoZSBoZWlnaHQgb2YgdGhlIG1lc2gncyBpbWFnZS4gQXZhaWxhYmxlIG9ubHkgd2hlbiBub25lc3NlbnRpYWwgZGF0YSB3YXMgZXhwb3J0ZWQuICovXG5cdGhlaWdodDogbnVtYmVyID0gMDtcblxuXHR0ZW1wQ29sb3IgPSBuZXcgQ29sb3IoMCwgMCwgMCwgMCk7XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZywgc2VxdWVuY2U6IFNlcXVlbmNlKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0dGhpcy5zZXF1ZW5jZSA9IHNlcXVlbmNlO1xuXHR9XG5cblx0Y29weSAoKTogTWVzaEF0dGFjaG1lbnQge1xuXHRcdGlmICh0aGlzLnNvdXJjZU1lc2gpIHJldHVybiB0aGlzLm5ld0xpbmtlZE1lc2goKTtcblxuXHRcdGNvbnN0IGNvcHkgPSBuZXcgTWVzaEF0dGFjaG1lbnQodGhpcy5uYW1lLCB0aGlzLnNlcXVlbmNlLmNvcHkoKSk7XG5cdFx0Y29weS5wYXRoID0gdGhpcy5wYXRoO1xuXHRcdGNvcHkuY29sb3Iuc2V0RnJvbUNvbG9yKHRoaXMuY29sb3IpO1xuXG5cdFx0dGhpcy5jb3B5VG8oY29weSk7XG5cdFx0Y29weS5yZWdpb25VVnMgPSBbXTtcblx0XHRVdGlscy5hcnJheUNvcHkodGhpcy5yZWdpb25VVnMsIDAsIGNvcHkucmVnaW9uVVZzLCAwLCB0aGlzLnJlZ2lvblVWcy5sZW5ndGgpO1xuXHRcdGNvcHkudHJpYW5nbGVzID0gW107XG5cdFx0VXRpbHMuYXJyYXlDb3B5KHRoaXMudHJpYW5nbGVzLCAwLCBjb3B5LnRyaWFuZ2xlcywgMCwgdGhpcy50cmlhbmdsZXMubGVuZ3RoKTtcblx0XHRjb3B5Lmh1bGxMZW5ndGggPSB0aGlzLmh1bGxMZW5ndGg7XG5cblx0XHQvLyBOb25lc3NlbnRpYWwuXG5cdFx0aWYgKHRoaXMuZWRnZXMpIHtcblx0XHRcdGNvcHkuZWRnZXMgPSBbXTtcblx0XHRcdFV0aWxzLmFycmF5Q29weSh0aGlzLmVkZ2VzLCAwLCBjb3B5LmVkZ2VzLCAwLCB0aGlzLmVkZ2VzLmxlbmd0aCk7XG5cdFx0fVxuXHRcdGNvcHkud2lkdGggPSB0aGlzLndpZHRoO1xuXHRcdGNvcHkuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG5cblx0XHRyZXR1cm4gY29weTtcblx0fVxuXG5cdHVwZGF0ZVNlcXVlbmNlICgpIHtcblx0XHR0aGlzLnNlcXVlbmNlLnVwZGF0ZSh0aGlzKTtcblx0fVxuXG5cdC8qKiBUaGUgc291cmNlIG1lc2ggaWYgdGhpcyBpcyBhIGxpbmtlZCBtZXNoLCBlbHNlIG51bGwuIEEgbGlua2VkIG1lc2ggc2hhcmVzIHRoZSB7QGxpbmsgYm9uZXN9LCB7QGxpbmsgdmVydGljZXN9LFxuXHQgKiB7QGxpbmsgcmVnaW9uVVZzfSwge0BsaW5rIHRyaWFuZ2xlc30sIHtAbGluayBodWxsTGVuZ3RofSwge0BsaW5rIGVkZ2VzfSwge0BsaW5rIHdpZHRofSwgYW5kIHtAbGluayBoZWlnaHR9IHdpdGggdGhlXG5cdCAqIHNvdXJjZSBtZXNoLCBidXQgbWF5IGhhdmUgYSBkaWZmZXJlbnQge0BsaW5rIG5hbWV9IG9yIHtAbGluayBwYXRofSwgYW5kIHRoZXJlZm9yZSBhIGRpZmZlcmVudCB0ZXh0dXJlIHJlZ2lvbi4gKi9cblx0Z2V0U291cmNlTWVzaCAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc291cmNlTWVzaDtcblx0fVxuXG5cdHNldFNvdXJjZU1lc2ggKHNvdXJjZU1lc2g6IE1lc2hBdHRhY2htZW50IHwgbnVsbCkge1xuXHRcdHRoaXMuc291cmNlTWVzaCA9IHNvdXJjZU1lc2g7XG5cdFx0aWYgKHNvdXJjZU1lc2gpIHtcblx0XHRcdHRoaXMuYm9uZXMgPSBzb3VyY2VNZXNoLmJvbmVzO1xuXHRcdFx0dGhpcy52ZXJ0aWNlcyA9IHNvdXJjZU1lc2gudmVydGljZXM7XG5cdFx0XHR0aGlzLndvcmxkVmVydGljZXNMZW5ndGggPSBzb3VyY2VNZXNoLndvcmxkVmVydGljZXNMZW5ndGg7XG5cdFx0XHR0aGlzLnJlZ2lvblVWcyA9IHNvdXJjZU1lc2gucmVnaW9uVVZzO1xuXHRcdFx0dGhpcy50cmlhbmdsZXMgPSBzb3VyY2VNZXNoLnRyaWFuZ2xlcztcblx0XHRcdHRoaXMuaHVsbExlbmd0aCA9IHNvdXJjZU1lc2guaHVsbExlbmd0aDtcblx0XHRcdHRoaXMud29ybGRWZXJ0aWNlc0xlbmd0aCA9IHNvdXJjZU1lc2gud29ybGRWZXJ0aWNlc0xlbmd0aFxuXHRcdFx0dGhpcy5lZGdlcyA9IHNvdXJjZU1lc2guZWRnZXM7XG5cdFx0XHR0aGlzLndpZHRoID0gc291cmNlTWVzaC53aWR0aDtcblx0XHRcdHRoaXMuaGVpZ2h0ID0gc291cmNlTWVzaC5oZWlnaHQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFJldHVybnMgYSBuZXcgbWVzaCB3aXRoIHRoZSB7QGxpbmsgc291cmNlTWVzaH0gc2V0IHRvIHRoaXMgbWVzaCdzIHNvdXJjZSBtZXNoLCBpZiBhbnksIGVsc2UgdG8gdGhpcyBtZXNoLiAqKi9cblx0bmV3TGlua2VkTWVzaCAoKTogTWVzaEF0dGFjaG1lbnQge1xuXHRcdGNvbnN0IGNvcHkgPSBuZXcgTWVzaEF0dGFjaG1lbnQodGhpcy5uYW1lLCB0aGlzLnNlcXVlbmNlLmNvcHkoKSk7XG5cdFx0Y29weS50aW1lbGluZUF0dGFjaG1lbnQgPSB0aGlzLnRpbWVsaW5lQXR0YWNobWVudDtcblx0XHRjb3B5LnBhdGggPSB0aGlzLnBhdGg7XG5cdFx0Y29weS5jb2xvci5zZXRGcm9tQ29sb3IodGhpcy5jb2xvcik7XG5cdFx0Y29weS5zZXRTb3VyY2VNZXNoKHRoaXMuc291cmNlTWVzaCA/IHRoaXMuc291cmNlTWVzaCA6IHRoaXMpO1xuXHRcdGNvcHkudXBkYXRlU2VxdWVuY2UoKTtcblx0XHRyZXR1cm4gY29weTtcblx0fVxuXG5cdC8qKiBDb21wdXRlcyB7QGxpbmsgU2VxdWVuY2UuZ2V0VVZzIHwgVVZzfSBmb3IgYSBtZXNoIGF0dGFjaG1lbnQuXG5cdCAqIEBwYXJhbSB1dnMgT3V0cHV0IGFycmF5IGZvciB0aGUgY29tcHV0ZWQgVVZzLCBzYW1lIGxlbmd0aCBhcyByZWdpb25VVnMuICovXG5cdHN0YXRpYyBjb21wdXRlVVZzIChyZWdpb246IFRleHR1cmVSZWdpb24gfCBudWxsLCByZWdpb25VVnM6IE51bWJlckFycmF5TGlrZSwgdXZzOiBOdW1iZXJBcnJheUxpa2UpOiB2b2lkIHtcblx0XHRpZiAoIXJlZ2lvbikgdGhyb3cgbmV3IEVycm9yKFwiUmVnaW9uIG5vdCBzZXQuXCIpO1xuXHRcdGNvbnN0IG4gPSB1dnMubGVuZ3RoO1xuXHRcdGxldCB1ID0gcmVnaW9uLnUsIHYgPSByZWdpb24udiwgd2lkdGggPSAwLCBoZWlnaHQgPSAwO1xuXHRcdGlmIChyZWdpb24gaW5zdGFuY2VvZiBUZXh0dXJlQXRsYXNSZWdpb24pIHtcblx0XHRcdGNvbnN0IHBhZ2UgPSByZWdpb24ucGFnZTtcblx0XHRcdGNvbnN0IHRleHR1cmVXaWR0aCA9IHBhZ2Uud2lkdGgsIHRleHR1cmVIZWlnaHQgPSBwYWdlLmhlaWdodDtcblx0XHRcdHN3aXRjaCAocmVnaW9uLmRlZ3JlZXMpIHtcblx0XHRcdFx0Y2FzZSA5MDpcblx0XHRcdFx0XHR1IC09IChyZWdpb24ub3JpZ2luYWxIZWlnaHQgLSByZWdpb24ub2Zmc2V0WSAtIHJlZ2lvbi5oZWlnaHQpIC8gdGV4dHVyZVdpZHRoO1xuXHRcdFx0XHRcdHYgLT0gKHJlZ2lvbi5vcmlnaW5hbFdpZHRoIC0gcmVnaW9uLm9mZnNldFggLSByZWdpb24ud2lkdGgpIC8gdGV4dHVyZUhlaWdodDtcblx0XHRcdFx0XHR3aWR0aCA9IHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHRoZWlnaHQgPSByZWdpb24ub3JpZ2luYWxXaWR0aCAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdFx0XHRcdHV2c1tpXSA9IHUgKyByZWdpb25VVnNbaSArIDFdICogd2lkdGg7XG5cdFx0XHRcdFx0XHR1dnNbaSArIDFdID0gdiArICgxIC0gcmVnaW9uVVZzW2ldKSAqIGhlaWdodDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIDE4MDpcblx0XHRcdFx0XHR1IC09IChyZWdpb24ub3JpZ2luYWxXaWR0aCAtIHJlZ2lvbi5vZmZzZXRYIC0gcmVnaW9uLndpZHRoKSAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHR2IC09IHJlZ2lvbi5vZmZzZXRZIC8gdGV4dHVyZUhlaWdodDtcblx0XHRcdFx0XHR3aWR0aCA9IHJlZ2lvbi5vcmlnaW5hbFdpZHRoIC8gdGV4dHVyZVdpZHRoO1xuXHRcdFx0XHRcdGhlaWdodCA9IHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdFx0XHRcdHV2c1tpXSA9IHUgKyAoMSAtIHJlZ2lvblVWc1tpXSkgKiB3aWR0aDtcblx0XHRcdFx0XHRcdHV2c1tpICsgMV0gPSB2ICsgKDEgLSByZWdpb25VVnNbaSArIDFdKSAqIGhlaWdodDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIDI3MDpcblx0XHRcdFx0XHR1IC09IHJlZ2lvbi5vZmZzZXRZIC8gdGV4dHVyZVdpZHRoO1xuXHRcdFx0XHRcdHYgLT0gcmVnaW9uLm9mZnNldFggLyB0ZXh0dXJlSGVpZ2h0O1xuXHRcdFx0XHRcdHdpZHRoID0gcmVnaW9uLm9yaWdpbmFsSGVpZ2h0IC8gdGV4dHVyZVdpZHRoO1xuXHRcdFx0XHRcdGhlaWdodCA9IHJlZ2lvbi5vcmlnaW5hbFdpZHRoIC8gdGV4dHVyZUhlaWdodDtcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG47IGkgKz0gMikge1xuXHRcdFx0XHRcdFx0dXZzW2ldID0gdSArICgxIC0gcmVnaW9uVVZzW2kgKyAxXSkgKiB3aWR0aDtcblx0XHRcdFx0XHRcdHV2c1tpICsgMV0gPSB2ICsgcmVnaW9uVVZzW2ldICogaGVpZ2h0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0dSAtPSByZWdpb24ub2Zmc2V0WCAvIHRleHR1cmVXaWR0aDtcblx0XHRcdFx0XHR2IC09IChyZWdpb24ub3JpZ2luYWxIZWlnaHQgLSByZWdpb24ub2Zmc2V0WSAtIHJlZ2lvbi5oZWlnaHQpIC8gdGV4dHVyZUhlaWdodDtcblx0XHRcdFx0XHR3aWR0aCA9IHJlZ2lvbi5vcmlnaW5hbFdpZHRoIC8gdGV4dHVyZVdpZHRoO1xuXHRcdFx0XHRcdGhlaWdodCA9IHJlZ2lvbi5vcmlnaW5hbEhlaWdodCAvIHRleHR1cmVIZWlnaHQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICghcmVnaW9uKSB7XG5cdFx0XHR1ID0gdiA9IDA7XG5cdFx0XHR3aWR0aCA9IGhlaWdodCA9IDE7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdpZHRoID0gcmVnaW9uLnUyIC0gdTtcblx0XHRcdGhlaWdodCA9IHJlZ2lvbi52MiAtIHY7XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdHV2c1tpXSA9IHUgKyByZWdpb25VVnNbaV0gKiB3aWR0aDtcblx0XHRcdHV2c1tpICsgMV0gPSB2ICsgcmVnaW9uVVZzW2kgKyAxXSAqIGhlaWdodDtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
*****************************************************************************/
|
|
29
29
|
import { Color } from "../Utils.js";
|
|
30
|
-
import {
|
|
30
|
+
import { type Attachment, VertexAttachment } from "./Attachment.js";
|
|
31
31
|
/** An attachment whose vertices make up a composite Bezier curve.
|
|
32
32
|
*
|
|
33
33
|
* See {@link PathConstraint} and [Paths](http://esotericsoftware.com/spine-paths) in the Spine User Guide. */
|
|
@@ -36,8 +36,8 @@ export declare class PathAttachment extends VertexAttachment {
|
|
|
36
36
|
lengths: Array<number>;
|
|
37
37
|
/** If true, the start and end knots are connected. */
|
|
38
38
|
closed: boolean;
|
|
39
|
-
/** If true, additional calculations are performed to make
|
|
40
|
-
*
|
|
39
|
+
/** If true, additional calculations are performed to make computing positions along the path more accurate so movement along
|
|
40
|
+
* the path has a constant speed. */
|
|
41
41
|
constantSpeed: boolean;
|
|
42
42
|
/** The color of the path as it was in Spine. Available only when nonessential data was exported. Paths are not usually
|
|
43
43
|
* rendered at runtime. */
|
|
@@ -36,8 +36,8 @@ export class PathAttachment extends VertexAttachment {
|
|
|
36
36
|
lengths = [];
|
|
37
37
|
/** If true, the start and end knots are connected. */
|
|
38
38
|
closed = false;
|
|
39
|
-
/** If true, additional calculations are performed to make
|
|
40
|
-
*
|
|
39
|
+
/** If true, additional calculations are performed to make computing positions along the path more accurate so movement along
|
|
40
|
+
* the path has a constant speed. */
|
|
41
41
|
constantSpeed = false;
|
|
42
42
|
/** The color of the path as it was in Spine. Available only when nonessential data was exported. Paths are not usually
|
|
43
43
|
* rendered at runtime. */
|
|
@@ -46,14 +46,14 @@ export class PathAttachment extends VertexAttachment {
|
|
|
46
46
|
super(name);
|
|
47
47
|
}
|
|
48
48
|
copy() {
|
|
49
|
-
|
|
49
|
+
const copy = new PathAttachment(this.name);
|
|
50
50
|
this.copyTo(copy);
|
|
51
|
-
copy.lengths =
|
|
51
|
+
copy.lengths = [];
|
|
52
52
|
Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length);
|
|
53
|
-
copy.closed = closed;
|
|
53
|
+
copy.closed = this.closed;
|
|
54
54
|
copy.constantSpeed = this.constantSpeed;
|
|
55
55
|
copy.color.setFromColor(this.color);
|
|
56
56
|
return copy;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0aEF0dGFjaG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXR0YWNobWVudHMvUGF0aEF0dGFjaG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRTs7OEdBRThHO0FBQzlHLE1BQU0sT0FBTyxjQUFlLFNBQVEsZ0JBQWdCO0lBRW5ELCtHQUErRztJQUMvRyxPQUFPLEdBQWtCLEVBQUUsQ0FBQztJQUU1QixzREFBc0Q7SUFDdEQsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVmO3dDQUNvQztJQUNwQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXRCOzhCQUMwQjtJQUMxQixLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFOUIsWUFBYSxJQUFZO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJO1FBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhDb25zdHJhaW50IH0gZnJvbSBcIi4uL1BhdGhDb25zdHJhaW50LmpzXCI7XG5pbXBvcnQgeyBDb2xvciwgVXRpbHMgfSBmcm9tIFwiLi4vVXRpbHMuanNcIjtcbmltcG9ydCB7IHR5cGUgQXR0YWNobWVudCwgVmVydGV4QXR0YWNobWVudCB9IGZyb20gXCIuL0F0dGFjaG1lbnQuanNcIjtcblxuLyoqIEFuIGF0dGFjaG1lbnQgd2hvc2UgdmVydGljZXMgbWFrZSB1cCBhIGNvbXBvc2l0ZSBCZXppZXIgY3VydmUuXG4gKlxuICogU2VlIHtAbGluayBQYXRoQ29uc3RyYWludH0gYW5kIFtQYXRoc10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXBhdGhzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQYXRoQXR0YWNobWVudCBleHRlbmRzIFZlcnRleEF0dGFjaG1lbnQge1xuXG5cdC8qKiBUaGUgbGVuZ3RocyBhbG9uZyB0aGUgcGF0aCBpbiB0aGUgc2V0dXAgcG9zZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcGF0aCB0byB0aGUgZW5kIG9mIGVhY2ggQmV6aWVyIGN1cnZlLiAqL1xuXHRsZW5ndGhzOiBBcnJheTxudW1iZXI+ID0gW107XG5cblx0LyoqIElmIHRydWUsIHRoZSBzdGFydCBhbmQgZW5kIGtub3RzIGFyZSBjb25uZWN0ZWQuICovXG5cdGNsb3NlZCA9IGZhbHNlO1xuXG5cdC8qKiBJZiB0cnVlLCBhZGRpdGlvbmFsIGNhbGN1bGF0aW9ucyBhcmUgcGVyZm9ybWVkIHRvIG1ha2UgY29tcHV0aW5nIHBvc2l0aW9ucyBhbG9uZyB0aGUgcGF0aCBtb3JlIGFjY3VyYXRlIHNvIG1vdmVtZW50IGFsb25nXG5cdCAqIHRoZSBwYXRoIGhhcyBhIGNvbnN0YW50IHNwZWVkLiAqL1xuXHRjb25zdGFudFNwZWVkID0gZmFsc2U7XG5cblx0LyoqIFRoZSBjb2xvciBvZiB0aGUgcGF0aCBhcyBpdCB3YXMgaW4gU3BpbmUuIEF2YWlsYWJsZSBvbmx5IHdoZW4gbm9uZXNzZW50aWFsIGRhdGEgd2FzIGV4cG9ydGVkLiBQYXRocyBhcmUgbm90IHVzdWFsbHlcblx0ICogcmVuZGVyZWQgYXQgcnVudGltZS4gKi9cblx0Y29sb3IgPSBuZXcgQ29sb3IoMSwgMSwgMSwgMSk7XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHR9XG5cblx0Y29weSAoKTogQXR0YWNobWVudCB7XG5cdFx0Y29uc3QgY29weSA9IG5ldyBQYXRoQXR0YWNobWVudCh0aGlzLm5hbWUpO1xuXHRcdHRoaXMuY29weVRvKGNvcHkpO1xuXHRcdGNvcHkubGVuZ3RocyA9IFtdO1xuXHRcdFV0aWxzLmFycmF5Q29weSh0aGlzLmxlbmd0aHMsIDAsIGNvcHkubGVuZ3RocywgMCwgdGhpcy5sZW5ndGhzLmxlbmd0aCk7XG5cdFx0Y29weS5jbG9zZWQgPSB0aGlzLmNsb3NlZDtcblx0XHRjb3B5LmNvbnN0YW50U3BlZWQgPSB0aGlzLmNvbnN0YW50U3BlZWQ7XG5cdFx0Y29weS5jb2xvci5zZXRGcm9tQ29sb3IodGhpcy5jb2xvcik7XG5cdFx0cmV0dXJuIGNvcHk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -26,23 +26,28 @@
|
|
|
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 {
|
|
30
|
-
import { Color, Vector2 } from "../Utils.js";
|
|
31
|
-
import {
|
|
29
|
+
import type { BonePose } from "../BonePose.js";
|
|
30
|
+
import { Color, type Vector2 } from "../Utils.js";
|
|
31
|
+
import { type Attachment, VertexAttachment } from "./Attachment.js";
|
|
32
32
|
/** An attachment which is a single point and a rotation. This can be used to spawn projectiles, particles, etc. A bone can be
|
|
33
33
|
* used in similar ways, but a PointAttachment is slightly less expensive to compute and can be hidden, shown, and placed in a
|
|
34
34
|
* skin.
|
|
35
35
|
*
|
|
36
|
-
* See [Point Attachments](
|
|
36
|
+
* See [Point Attachments](https://esotericsoftware.com/spine-points) in the Spine User Guide. */
|
|
37
37
|
export declare class PointAttachment extends VertexAttachment {
|
|
38
|
+
/** The local x position. */
|
|
38
39
|
x: number;
|
|
40
|
+
/** The local y position. */
|
|
39
41
|
y: number;
|
|
42
|
+
/** The local rotation in degrees, counter clockwise. */
|
|
40
43
|
rotation: number;
|
|
41
44
|
/** The color of the point attachment as it was in Spine. Available only when nonessential data was exported. Point attachments
|
|
42
45
|
* are not usually rendered at runtime. */
|
|
43
46
|
color: Color;
|
|
44
47
|
constructor(name: string);
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
/** Computes the world position from the local position. */
|
|
49
|
+
computeWorldPosition(bone: BonePose, point: Vector2): Vector2;
|
|
50
|
+
/** Computes the world rotation from the local rotation. */
|
|
51
|
+
computeWorldRotation(bone: BonePose): number;
|
|
47
52
|
copy(): Attachment;
|
|
48
53
|
}
|
|
@@ -32,10 +32,13 @@ import { VertexAttachment } from "./Attachment.js";
|
|
|
32
32
|
* used in similar ways, but a PointAttachment is slightly less expensive to compute and can be hidden, shown, and placed in a
|
|
33
33
|
* skin.
|
|
34
34
|
*
|
|
35
|
-
* See [Point Attachments](
|
|
35
|
+
* See [Point Attachments](https://esotericsoftware.com/spine-points) in the Spine User Guide. */
|
|
36
36
|
export class PointAttachment extends VertexAttachment {
|
|
37
|
+
/** The local x position. */
|
|
37
38
|
x = 0;
|
|
39
|
+
/** The local y position. */
|
|
38
40
|
y = 0;
|
|
41
|
+
/** The local rotation in degrees, counter clockwise. */
|
|
39
42
|
rotation = 0;
|
|
40
43
|
/** The color of the point attachment as it was in Spine. Available only when nonessential data was exported. Point attachments
|
|
41
44
|
* are not usually rendered at runtime. */
|
|
@@ -43,11 +46,13 @@ export class PointAttachment extends VertexAttachment {
|
|
|
43
46
|
constructor(name) {
|
|
44
47
|
super(name);
|
|
45
48
|
}
|
|
49
|
+
/** Computes the world position from the local position. */
|
|
46
50
|
computeWorldPosition(bone, point) {
|
|
47
51
|
point.x = this.x * bone.a + this.y * bone.b + bone.worldX;
|
|
48
52
|
point.y = this.x * bone.c + this.y * bone.d + bone.worldY;
|
|
49
53
|
return point;
|
|
50
54
|
}
|
|
55
|
+
/** Computes the world rotation from the local rotation. */
|
|
51
56
|
computeWorldRotation(bone) {
|
|
52
57
|
const r = this.rotation * MathUtils.degRad, cos = Math.cos(r), sin = Math.sin(r);
|
|
53
58
|
const x = cos * bone.a + sin * bone.b;
|
|
@@ -55,7 +60,7 @@ export class PointAttachment extends VertexAttachment {
|
|
|
55
60
|
return MathUtils.atan2Deg(y, x);
|
|
56
61
|
}
|
|
57
62
|
copy() {
|
|
58
|
-
|
|
63
|
+
const copy = new PointAttachment(this.name);
|
|
59
64
|
copy.x = this.x;
|
|
60
65
|
copy.y = this.y;
|
|
61
66
|
copy.rotation = this.rotation;
|
|
@@ -63,4 +68,4 @@ export class PointAttachment extends VertexAttachment {
|
|
|
63
68
|
return copy;
|
|
64
69
|
}
|
|
65
70
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9pbnRBdHRhY2htZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F0dGFjaG1lbnRzL1BvaW50QXR0YWNobWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFHL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRTs7OztpR0FJaUc7QUFDakcsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZ0JBQWdCO0lBRXBELDRCQUE0QjtJQUM1QixDQUFDLEdBQVcsQ0FBQyxDQUFDO0lBRWQsNEJBQTRCO0lBQzVCLENBQUMsR0FBVyxDQUFDLENBQUM7SUFFZCx3REFBd0Q7SUFDeEQsUUFBUSxHQUFXLENBQUMsQ0FBQztJQUVyQjs4Q0FDMEM7SUFDMUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXBDLFlBQWEsSUFBWTtRQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsMkRBQTJEO0lBQzNELG9CQUFvQixDQUFFLElBQWMsRUFBRSxLQUFjO1FBQ25ELEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFELEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxvQkFBb0IsQ0FBRSxJQUFjO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRixNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJO1FBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBCb25lUG9zZSB9IGZyb20gXCIuLi9Cb25lUG9zZS5qc1wiO1xuaW1wb3J0IHsgQ29sb3IsIE1hdGhVdGlscywgdHlwZSBWZWN0b3IyIH0gZnJvbSBcIi4uL1V0aWxzLmpzXCI7XG5pbXBvcnQgeyB0eXBlIEF0dGFjaG1lbnQsIFZlcnRleEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9BdHRhY2htZW50LmpzXCI7XG5cbi8qKiBBbiBhdHRhY2htZW50IHdoaWNoIGlzIGEgc2luZ2xlIHBvaW50IGFuZCBhIHJvdGF0aW9uLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNwYXduIHByb2plY3RpbGVzLCBwYXJ0aWNsZXMsIGV0Yy4gQSBib25lIGNhbiBiZVxuICogdXNlZCBpbiBzaW1pbGFyIHdheXMsIGJ1dCBhIFBvaW50QXR0YWNobWVudCBpcyBzbGlnaHRseSBsZXNzIGV4cGVuc2l2ZSB0byBjb21wdXRlIGFuZCBjYW4gYmUgaGlkZGVuLCBzaG93biwgYW5kIHBsYWNlZCBpbiBhXG4gKiBza2luLlxuICpcbiAqIFNlZSBbUG9pbnQgQXR0YWNobWVudHNdKGh0dHBzOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtcG9pbnRzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQb2ludEF0dGFjaG1lbnQgZXh0ZW5kcyBWZXJ0ZXhBdHRhY2htZW50IHtcblxuXHQvKiogVGhlIGxvY2FsIHggcG9zaXRpb24uICovXG5cdHg6IG51bWJlciA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCB5IHBvc2l0aW9uLiAqL1xuXHR5OiBudW1iZXIgPSAwO1xuXG5cdC8qKiBUaGUgbG9jYWwgcm90YXRpb24gaW4gZGVncmVlcywgY291bnRlciBjbG9ja3dpc2UuICovXG5cdHJvdGF0aW9uOiBudW1iZXIgPSAwO1xuXG5cdC8qKiBUaGUgY29sb3Igb2YgdGhlIHBvaW50IGF0dGFjaG1lbnQgYXMgaXQgd2FzIGluIFNwaW5lLiBBdmFpbGFibGUgb25seSB3aGVuIG5vbmVzc2VudGlhbCBkYXRhIHdhcyBleHBvcnRlZC4gUG9pbnQgYXR0YWNobWVudHNcblx0ICogYXJlIG5vdCB1c3VhbGx5IHJlbmRlcmVkIGF0IHJ1bnRpbWUuICovXG5cdGNvbG9yID0gbmV3IENvbG9yKDAuMzgsIDAuOTQsIDAsIDEpO1xuXG5cdGNvbnN0cnVjdG9yIChuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lKTtcblx0fVxuXG5cdC8qKiBDb21wdXRlcyB0aGUgd29ybGQgcG9zaXRpb24gZnJvbSB0aGUgbG9jYWwgcG9zaXRpb24uICovXG5cdGNvbXB1dGVXb3JsZFBvc2l0aW9uIChib25lOiBCb25lUG9zZSwgcG9pbnQ6IFZlY3RvcjIpIHtcblx0XHRwb2ludC54ID0gdGhpcy54ICogYm9uZS5hICsgdGhpcy55ICogYm9uZS5iICsgYm9uZS53b3JsZFg7XG5cdFx0cG9pbnQueSA9IHRoaXMueCAqIGJvbmUuYyArIHRoaXMueSAqIGJvbmUuZCArIGJvbmUud29ybGRZO1xuXHRcdHJldHVybiBwb2ludDtcblx0fVxuXG5cdC8qKiBDb21wdXRlcyB0aGUgd29ybGQgcm90YXRpb24gZnJvbSB0aGUgbG9jYWwgcm90YXRpb24uICovXG5cdGNvbXB1dGVXb3JsZFJvdGF0aW9uIChib25lOiBCb25lUG9zZSkge1xuXHRcdGNvbnN0IHIgPSB0aGlzLnJvdGF0aW9uICogTWF0aFV0aWxzLmRlZ1JhZCwgY29zID0gTWF0aC5jb3MociksIHNpbiA9IE1hdGguc2luKHIpO1xuXHRcdGNvbnN0IHggPSBjb3MgKiBib25lLmEgKyBzaW4gKiBib25lLmI7XG5cdFx0Y29uc3QgeSA9IGNvcyAqIGJvbmUuYyArIHNpbiAqIGJvbmUuZDtcblx0XHRyZXR1cm4gTWF0aFV0aWxzLmF0YW4yRGVnKHksIHgpO1xuXHR9XG5cblx0Y29weSAoKTogQXR0YWNobWVudCB7XG5cdFx0Y29uc3QgY29weSA9IG5ldyBQb2ludEF0dGFjaG1lbnQodGhpcy5uYW1lKTtcblx0XHRjb3B5LnggPSB0aGlzLng7XG5cdFx0Y29weS55ID0gdGhpcy55O1xuXHRcdGNvcHkucm90YXRpb24gPSB0aGlzLnJvdGF0aW9uO1xuXHRcdGNvcHkuY29sb3Iuc2V0RnJvbUNvbG9yKHRoaXMuY29sb3IpO1xuXHRcdHJldHVybiBjb3B5O1xuXHR9XG59XG4iXX0=
|
|
@@ -26,16 +26,18 @@
|
|
|
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 {
|
|
30
|
-
import {
|
|
29
|
+
import type { SlotPose } from "../SlotPose.js";
|
|
30
|
+
import type { Slot } from "../Slot.js";
|
|
31
|
+
import type { TextureRegion } from "../Texture.js";
|
|
32
|
+
import { Color, type NumberArrayLike } from "../Utils.js";
|
|
31
33
|
import { Attachment } from "./Attachment.js";
|
|
32
|
-
import {
|
|
33
|
-
import { Sequence } from "./Sequence.js";
|
|
34
|
-
import { Slot } from "../Slot.js";
|
|
34
|
+
import type { HasSequence } from "./HasSequence.js";
|
|
35
|
+
import type { Sequence } from "./Sequence.js";
|
|
35
36
|
/** An attachment that displays a textured quadrilateral.
|
|
36
37
|
*
|
|
37
38
|
* See [Region attachments](http://esotericsoftware.com/spine-regions) in the Spine User Guide. */
|
|
38
|
-
export declare class RegionAttachment extends Attachment implements
|
|
39
|
+
export declare class RegionAttachment extends Attachment implements HasSequence {
|
|
40
|
+
readonly sequence: Sequence;
|
|
39
41
|
/** The local x translation. */
|
|
40
42
|
x: number;
|
|
41
43
|
/** The local y translation. */
|
|
@@ -44,37 +46,33 @@ export declare class RegionAttachment extends Attachment implements HasTextureRe
|
|
|
44
46
|
scaleX: number;
|
|
45
47
|
/** The local scaleY. */
|
|
46
48
|
scaleY: number;
|
|
47
|
-
/** The local rotation. */
|
|
49
|
+
/** The local rotation in degrees, counter clockwise. */
|
|
48
50
|
rotation: number;
|
|
49
51
|
/** The width of the region attachment in Spine. */
|
|
50
52
|
width: number;
|
|
51
53
|
/** The height of the region attachment in Spine. */
|
|
52
54
|
height: number;
|
|
55
|
+
/** The name of the texture region for this attachment. */
|
|
56
|
+
path?: string;
|
|
53
57
|
/** The color to tint the region attachment. */
|
|
54
58
|
color: Color;
|
|
55
|
-
/** The name of the texture region for this attachment. */
|
|
56
|
-
path: string;
|
|
57
|
-
region: TextureRegion | null;
|
|
58
|
-
sequence: Sequence | null;
|
|
59
|
-
/** For each of the 4 vertices, a pair of <code>x,y</code> values that is the local position of the vertex.
|
|
60
|
-
*
|
|
61
|
-
* See {@link #updateOffset()}. */
|
|
62
|
-
offset: NumberArrayLike;
|
|
63
|
-
uvs: NumberArrayLike;
|
|
64
59
|
tempColor: Color;
|
|
65
|
-
constructor(name: string,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
* be changed.
|
|
70
|
-
* <p>
|
|
60
|
+
constructor(name: string, sequence: Sequence);
|
|
61
|
+
copy(): Attachment;
|
|
62
|
+
/** Transforms the attachment's four vertices to world coordinates.
|
|
63
|
+
*
|
|
71
64
|
* See <a href="http://esotericsoftware.com/spine-runtime-skeletons#World-transforms">World transforms</a> in the Spine
|
|
72
65
|
* Runtimes Guide.
|
|
73
|
-
* @param worldVertices The output world vertices. Must have a length >=
|
|
74
|
-
* @param offset The
|
|
75
|
-
* @param stride The number of
|
|
76
|
-
computeWorldVertices(slot: Slot, worldVertices: NumberArrayLike, offset: number, stride: number): void;
|
|
77
|
-
|
|
66
|
+
* @param worldVertices The output world vertices. Must have a length >= `offset` + 8.
|
|
67
|
+
* @param offset The `worldVertices` index to begin writing values.
|
|
68
|
+
* @param stride The number of `worldVertices` entries between the value pairs written. */
|
|
69
|
+
computeWorldVertices(slot: Slot, vertexOffsets: NumberArrayLike, worldVertices: NumberArrayLike, offset: number, stride: number): void;
|
|
70
|
+
getOffsets(pose: SlotPose): number[];
|
|
71
|
+
updateSequence(): void;
|
|
72
|
+
/** Computes {@link Sequence.getUVs | UVs} and {@link Sequence.getOffsets | offsets} for a region attachment.
|
|
73
|
+
* @param uvs Output array for the computed UVs, length of 8.
|
|
74
|
+
* @param offset Output array for the computed vertex offsets, length of 8. */
|
|
75
|
+
static computeUVs(region: TextureRegion | null, x: number, y: number, scaleX: number, scaleY: number, rotation: number, width: number, height: number, offset: number[], uvs: NumberArrayLike): void;
|
|
78
76
|
static X1: number;
|
|
79
77
|
static Y1: number;
|
|
80
78
|
static C1R: number;
|