@esotericsoftware/spine-core 4.1.25 → 4.1.26
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 +382 -0
- package/dist/Animation.js +2052 -0
- package/dist/AnimationState.d.ts +398 -0
- package/dist/AnimationState.js +1096 -0
- package/dist/AnimationStateData.d.ts +51 -0
- package/dist/AnimationStateData.js +70 -0
- package/dist/AssetManagerBase.d.ts +75 -0
- package/dist/AssetManagerBase.js +320 -0
- package/dist/AtlasAttachmentLoader.d.ts +53 -0
- package/dist/AtlasAttachmentLoader.js +95 -0
- package/dist/Bone.d.ts +138 -0
- package/dist/Bone.js +336 -0
- package/dist/BoneData.d.ts +72 -0
- package/dist/BoneData.js +80 -0
- package/dist/ConstraintData.d.ts +35 -0
- package/dist/ConstraintData.js +37 -0
- package/dist/Event.d.ts +44 -0
- package/dist/Event.js +48 -0
- package/dist/EventData.d.ts +41 -0
- package/dist/EventData.js +43 -0
- package/dist/IkConstraint.d.ts +64 -0
- package/dist/IkConstraint.js +296 -0
- package/dist/IkConstraintData.d.ts +56 -0
- package/dist/IkConstraintData.js +63 -0
- package/dist/PathConstraint.d.ts +71 -0
- package/dist/PathConstraint.js +476 -0
- package/dist/PathConstraintData.d.ts +82 -0
- package/dist/PathConstraintData.js +91 -0
- package/dist/Skeleton.d.ts +163 -0
- package/dist/Skeleton.js +588 -0
- package/dist/SkeletonBinary.d.ts +68 -0
- package/dist/SkeletonBinary.js +1172 -0
- package/dist/SkeletonBounds.d.ts +77 -0
- package/dist/SkeletonBounds.js +219 -0
- package/dist/SkeletonClipping.d.ts +50 -0
- package/dist/SkeletonClipping.js +326 -0
- package/dist/SkeletonData.d.ts +114 -0
- package/dist/SkeletonData.js +190 -0
- package/dist/SkeletonJson.d.ts +53 -0
- package/dist/SkeletonJson.js +1027 -0
- package/dist/Skin.d.ts +71 -0
- package/dist/Skin.js +201 -0
- package/dist/Slot.d.ts +69 -0
- package/dist/Slot.js +93 -0
- package/dist/SlotData.d.ts +57 -0
- package/dist/SlotData.js +64 -0
- package/dist/Texture.d.ts +69 -0
- package/dist/Texture.js +73 -0
- package/dist/TextureAtlas.d.ts +67 -0
- package/dist/TextureAtlas.js +263 -0
- package/dist/TransformConstraint.d.ts +60 -0
- package/dist/TransformConstraint.js +247 -0
- package/dist/TransformConstraintData.d.ts +62 -0
- package/dist/TransformConstraintData.js +69 -0
- package/dist/Triangulator.d.ts +43 -0
- package/dist/Triangulator.js +244 -0
- package/dist/Updatable.d.ts +37 -0
- package/dist/Updatable.js +30 -0
- package/dist/Utils.d.ts +168 -0
- package/dist/Utils.js +404 -0
- package/dist/attachments/Attachment.d.ts +72 -0
- package/dist/attachments/Attachment.js +147 -0
- package/dist/attachments/AttachmentLoader.d.ts +54 -0
- package/dist/attachments/AttachmentLoader.js +30 -0
- package/dist/attachments/BoundingBoxAttachment.d.ts +40 -0
- package/dist/attachments/BoundingBoxAttachment.js +48 -0
- package/dist/attachments/ClippingAttachment.d.ts +42 -0
- package/dist/attachments/ClippingAttachment.js +51 -0
- package/dist/attachments/HasTextureRegion.d.ts +44 -0
- package/dist/attachments/HasTextureRegion.js +30 -0
- package/dist/attachments/MeshAttachment.d.ts +79 -0
- package/dist/attachments/MeshAttachment.js +188 -0
- package/dist/attachments/PathAttachment.d.ts +47 -0
- package/dist/attachments/PathAttachment.js +59 -0
- package/dist/attachments/PointAttachment.d.ts +48 -0
- package/dist/attachments/PointAttachment.js +66 -0
- package/dist/attachments/RegionAttachment.d.ts +111 -0
- package/dist/attachments/RegionAttachment.js +215 -0
- package/dist/attachments/Sequence.d.ts +55 -0
- package/dist/attachments/Sequence.js +91 -0
- package/dist/attachments/index.d.ts +8 -0
- package/dist/attachments/index.js +9 -0
- package/dist/iife/spine-core.js +10703 -0
- package/dist/iife/spine-core.js.map +7 -0
- package/dist/iife/spine-core.min.js +2 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +40 -0
- package/dist/polyfills.d.ts +29 -0
- package/dist/polyfills.js +39 -0
- package/package.json +1 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated September 24, 2021. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2021, Esoteric Software LLC
|
|
6
|
+
*
|
|
7
|
+
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
+
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
+
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
+
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
+
*
|
|
12
|
+
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
13
|
+
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
+
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
+
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
+
* include this license and copyright notice.
|
|
17
|
+
*
|
|
18
|
+
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
+
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
|
+
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*****************************************************************************/
|
|
29
|
+
import { BoundingBoxAttachment } from "./attachments/BoundingBoxAttachment";
|
|
30
|
+
import { Skeleton } from "./Skeleton";
|
|
31
|
+
import { NumberArrayLike } from "./Utils";
|
|
32
|
+
/** Collects each visible {@link BoundingBoxAttachment} and computes the world vertices for its polygon. The polygon vertices are
|
|
33
|
+
* provided along with convenience methods for doing hit detection. */
|
|
34
|
+
export declare class SkeletonBounds {
|
|
35
|
+
/** The left edge of the axis aligned bounding box. */
|
|
36
|
+
minX: number;
|
|
37
|
+
/** The bottom edge of the axis aligned bounding box. */
|
|
38
|
+
minY: number;
|
|
39
|
+
/** The right edge of the axis aligned bounding box. */
|
|
40
|
+
maxX: number;
|
|
41
|
+
/** The top edge of the axis aligned bounding box. */
|
|
42
|
+
maxY: number;
|
|
43
|
+
/** The visible bounding boxes. */
|
|
44
|
+
boundingBoxes: BoundingBoxAttachment[];
|
|
45
|
+
/** The world vertices for the bounding box polygons. */
|
|
46
|
+
polygons: NumberArrayLike[];
|
|
47
|
+
private polygonPool;
|
|
48
|
+
/** Clears any previous polygons, finds all visible bounding box attachments, and computes the world vertices for each bounding
|
|
49
|
+
* box's polygon.
|
|
50
|
+
* @param updateAabb If true, the axis aligned bounding box containing all the polygons is computed. If false, the
|
|
51
|
+
* SkeletonBounds AABB methods will always return true. */
|
|
52
|
+
update(skeleton: Skeleton, updateAabb: boolean): void;
|
|
53
|
+
aabbCompute(): void;
|
|
54
|
+
/** Returns true if the axis aligned bounding box contains the point. */
|
|
55
|
+
aabbContainsPoint(x: number, y: number): boolean;
|
|
56
|
+
/** Returns true if the axis aligned bounding box intersects the line segment. */
|
|
57
|
+
aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean;
|
|
58
|
+
/** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */
|
|
59
|
+
aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean;
|
|
60
|
+
/** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more
|
|
61
|
+
* efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. */
|
|
62
|
+
containsPoint(x: number, y: number): BoundingBoxAttachment | null;
|
|
63
|
+
/** Returns true if the polygon contains the point. */
|
|
64
|
+
containsPointPolygon(polygon: NumberArrayLike, x: number, y: number): boolean;
|
|
65
|
+
/** Returns the first bounding box attachment that contains any part of the line segment, or null. When doing many checks, it
|
|
66
|
+
* is usually more efficient to only call this method if {@link #aabbIntersectsSegment()} returns
|
|
67
|
+
* true. */
|
|
68
|
+
intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment | null;
|
|
69
|
+
/** Returns true if the polygon contains any part of the line segment. */
|
|
70
|
+
intersectsSegmentPolygon(polygon: NumberArrayLike, x1: number, y1: number, x2: number, y2: number): boolean;
|
|
71
|
+
/** Returns the polygon for the specified bounding box, or null. */
|
|
72
|
+
getPolygon(boundingBox: BoundingBoxAttachment): NumberArrayLike | null;
|
|
73
|
+
/** The width of the axis aligned bounding box. */
|
|
74
|
+
getWidth(): number;
|
|
75
|
+
/** The height of the axis aligned bounding box. */
|
|
76
|
+
getHeight(): number;
|
|
77
|
+
}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated September 24, 2021. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2021, Esoteric Software LLC
|
|
6
|
+
*
|
|
7
|
+
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
+
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
+
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
+
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
+
*
|
|
12
|
+
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
13
|
+
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
+
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
+
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
+
* include this license and copyright notice.
|
|
17
|
+
*
|
|
18
|
+
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
+
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
|
+
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*****************************************************************************/
|
|
29
|
+
import { BoundingBoxAttachment } from "./attachments/BoundingBoxAttachment";
|
|
30
|
+
import { Pool, Utils } from "./Utils";
|
|
31
|
+
/** Collects each visible {@link BoundingBoxAttachment} and computes the world vertices for its polygon. The polygon vertices are
|
|
32
|
+
* provided along with convenience methods for doing hit detection. */
|
|
33
|
+
export class SkeletonBounds {
|
|
34
|
+
constructor() {
|
|
35
|
+
/** The left edge of the axis aligned bounding box. */
|
|
36
|
+
this.minX = 0;
|
|
37
|
+
/** The bottom edge of the axis aligned bounding box. */
|
|
38
|
+
this.minY = 0;
|
|
39
|
+
/** The right edge of the axis aligned bounding box. */
|
|
40
|
+
this.maxX = 0;
|
|
41
|
+
/** The top edge of the axis aligned bounding box. */
|
|
42
|
+
this.maxY = 0;
|
|
43
|
+
/** The visible bounding boxes. */
|
|
44
|
+
this.boundingBoxes = new Array();
|
|
45
|
+
/** The world vertices for the bounding box polygons. */
|
|
46
|
+
this.polygons = new Array();
|
|
47
|
+
this.polygonPool = new Pool(() => {
|
|
48
|
+
return Utils.newFloatArray(16);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/** Clears any previous polygons, finds all visible bounding box attachments, and computes the world vertices for each bounding
|
|
52
|
+
* box's polygon.
|
|
53
|
+
* @param updateAabb If true, the axis aligned bounding box containing all the polygons is computed. If false, the
|
|
54
|
+
* SkeletonBounds AABB methods will always return true. */
|
|
55
|
+
update(skeleton, updateAabb) {
|
|
56
|
+
if (!skeleton)
|
|
57
|
+
throw new Error("skeleton cannot be null.");
|
|
58
|
+
let boundingBoxes = this.boundingBoxes;
|
|
59
|
+
let polygons = this.polygons;
|
|
60
|
+
let polygonPool = this.polygonPool;
|
|
61
|
+
let slots = skeleton.slots;
|
|
62
|
+
let slotCount = slots.length;
|
|
63
|
+
boundingBoxes.length = 0;
|
|
64
|
+
polygonPool.freeAll(polygons);
|
|
65
|
+
polygons.length = 0;
|
|
66
|
+
for (let i = 0; i < slotCount; i++) {
|
|
67
|
+
let slot = slots[i];
|
|
68
|
+
if (!slot.bone.active)
|
|
69
|
+
continue;
|
|
70
|
+
let attachment = slot.getAttachment();
|
|
71
|
+
if (attachment instanceof BoundingBoxAttachment) {
|
|
72
|
+
let boundingBox = attachment;
|
|
73
|
+
boundingBoxes.push(boundingBox);
|
|
74
|
+
let polygon = polygonPool.obtain();
|
|
75
|
+
if (polygon.length != boundingBox.worldVerticesLength) {
|
|
76
|
+
polygon = Utils.newFloatArray(boundingBox.worldVerticesLength);
|
|
77
|
+
}
|
|
78
|
+
polygons.push(polygon);
|
|
79
|
+
boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (updateAabb) {
|
|
83
|
+
this.aabbCompute();
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.minX = Number.POSITIVE_INFINITY;
|
|
87
|
+
this.minY = Number.POSITIVE_INFINITY;
|
|
88
|
+
this.maxX = Number.NEGATIVE_INFINITY;
|
|
89
|
+
this.maxY = Number.NEGATIVE_INFINITY;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
aabbCompute() {
|
|
93
|
+
let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;
|
|
94
|
+
let polygons = this.polygons;
|
|
95
|
+
for (let i = 0, n = polygons.length; i < n; i++) {
|
|
96
|
+
let polygon = polygons[i];
|
|
97
|
+
let vertices = polygon;
|
|
98
|
+
for (let ii = 0, nn = polygon.length; ii < nn; ii += 2) {
|
|
99
|
+
let x = vertices[ii];
|
|
100
|
+
let y = vertices[ii + 1];
|
|
101
|
+
minX = Math.min(minX, x);
|
|
102
|
+
minY = Math.min(minY, y);
|
|
103
|
+
maxX = Math.max(maxX, x);
|
|
104
|
+
maxY = Math.max(maxY, y);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
this.minX = minX;
|
|
108
|
+
this.minY = minY;
|
|
109
|
+
this.maxX = maxX;
|
|
110
|
+
this.maxY = maxY;
|
|
111
|
+
}
|
|
112
|
+
/** Returns true if the axis aligned bounding box contains the point. */
|
|
113
|
+
aabbContainsPoint(x, y) {
|
|
114
|
+
return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;
|
|
115
|
+
}
|
|
116
|
+
/** Returns true if the axis aligned bounding box intersects the line segment. */
|
|
117
|
+
aabbIntersectsSegment(x1, y1, x2, y2) {
|
|
118
|
+
let minX = this.minX;
|
|
119
|
+
let minY = this.minY;
|
|
120
|
+
let maxX = this.maxX;
|
|
121
|
+
let maxY = this.maxY;
|
|
122
|
+
if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY))
|
|
123
|
+
return false;
|
|
124
|
+
let m = (y2 - y1) / (x2 - x1);
|
|
125
|
+
let y = m * (minX - x1) + y1;
|
|
126
|
+
if (y > minY && y < maxY)
|
|
127
|
+
return true;
|
|
128
|
+
y = m * (maxX - x1) + y1;
|
|
129
|
+
if (y > minY && y < maxY)
|
|
130
|
+
return true;
|
|
131
|
+
let x = (minY - y1) / m + x1;
|
|
132
|
+
if (x > minX && x < maxX)
|
|
133
|
+
return true;
|
|
134
|
+
x = (maxY - y1) / m + x1;
|
|
135
|
+
if (x > minX && x < maxX)
|
|
136
|
+
return true;
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
/** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */
|
|
140
|
+
aabbIntersectsSkeleton(bounds) {
|
|
141
|
+
return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY;
|
|
142
|
+
}
|
|
143
|
+
/** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more
|
|
144
|
+
* efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. */
|
|
145
|
+
containsPoint(x, y) {
|
|
146
|
+
let polygons = this.polygons;
|
|
147
|
+
for (let i = 0, n = polygons.length; i < n; i++)
|
|
148
|
+
if (this.containsPointPolygon(polygons[i], x, y))
|
|
149
|
+
return this.boundingBoxes[i];
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
/** Returns true if the polygon contains the point. */
|
|
153
|
+
containsPointPolygon(polygon, x, y) {
|
|
154
|
+
let vertices = polygon;
|
|
155
|
+
let nn = polygon.length;
|
|
156
|
+
let prevIndex = nn - 2;
|
|
157
|
+
let inside = false;
|
|
158
|
+
for (let ii = 0; ii < nn; ii += 2) {
|
|
159
|
+
let vertexY = vertices[ii + 1];
|
|
160
|
+
let prevY = vertices[prevIndex + 1];
|
|
161
|
+
if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) {
|
|
162
|
+
let vertexX = vertices[ii];
|
|
163
|
+
if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x)
|
|
164
|
+
inside = !inside;
|
|
165
|
+
}
|
|
166
|
+
prevIndex = ii;
|
|
167
|
+
}
|
|
168
|
+
return inside;
|
|
169
|
+
}
|
|
170
|
+
/** Returns the first bounding box attachment that contains any part of the line segment, or null. When doing many checks, it
|
|
171
|
+
* is usually more efficient to only call this method if {@link #aabbIntersectsSegment()} returns
|
|
172
|
+
* true. */
|
|
173
|
+
intersectsSegment(x1, y1, x2, y2) {
|
|
174
|
+
let polygons = this.polygons;
|
|
175
|
+
for (let i = 0, n = polygons.length; i < n; i++)
|
|
176
|
+
if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2))
|
|
177
|
+
return this.boundingBoxes[i];
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
/** Returns true if the polygon contains any part of the line segment. */
|
|
181
|
+
intersectsSegmentPolygon(polygon, x1, y1, x2, y2) {
|
|
182
|
+
let vertices = polygon;
|
|
183
|
+
let nn = polygon.length;
|
|
184
|
+
let width12 = x1 - x2, height12 = y1 - y2;
|
|
185
|
+
let det1 = x1 * y2 - y1 * x2;
|
|
186
|
+
let x3 = vertices[nn - 2], y3 = vertices[nn - 1];
|
|
187
|
+
for (let ii = 0; ii < nn; ii += 2) {
|
|
188
|
+
let x4 = vertices[ii], y4 = vertices[ii + 1];
|
|
189
|
+
let det2 = x3 * y4 - y3 * x4;
|
|
190
|
+
let width34 = x3 - x4, height34 = y3 - y4;
|
|
191
|
+
let det3 = width12 * height34 - height12 * width34;
|
|
192
|
+
let x = (det1 * width34 - width12 * det2) / det3;
|
|
193
|
+
if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) {
|
|
194
|
+
let y = (det1 * height34 - height12 * det2) / det3;
|
|
195
|
+
if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1)))
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
x3 = x4;
|
|
199
|
+
y3 = y4;
|
|
200
|
+
}
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
/** Returns the polygon for the specified bounding box, or null. */
|
|
204
|
+
getPolygon(boundingBox) {
|
|
205
|
+
if (!boundingBox)
|
|
206
|
+
throw new Error("boundingBox cannot be null.");
|
|
207
|
+
let index = this.boundingBoxes.indexOf(boundingBox);
|
|
208
|
+
return index == -1 ? null : this.polygons[index];
|
|
209
|
+
}
|
|
210
|
+
/** The width of the axis aligned bounding box. */
|
|
211
|
+
getWidth() {
|
|
212
|
+
return this.maxX - this.minX;
|
|
213
|
+
}
|
|
214
|
+
/** The height of the axis aligned bounding box. */
|
|
215
|
+
getHeight() {
|
|
216
|
+
return this.maxY - this.minY;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25Cb3VuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2tlbGV0b25Cb3VuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTVFLE9BQU8sRUFBbUIsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV2RDtzRUFDc0U7QUFDdEUsTUFBTSxPQUFPLGNBQWM7SUFBM0I7UUFFQyxzREFBc0Q7UUFDdEQsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUVULHdEQUF3RDtRQUN4RCxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRVQsdURBQXVEO1FBQ3ZELFNBQUksR0FBRyxDQUFDLENBQUM7UUFFVCxxREFBcUQ7UUFDckQsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUVULGtDQUFrQztRQUNsQyxrQkFBYSxHQUFHLElBQUksS0FBSyxFQUF5QixDQUFDO1FBRW5ELHdEQUF3RDtRQUN4RCxhQUFRLEdBQUcsSUFBSSxLQUFLLEVBQW1CLENBQUM7UUFFaEMsZ0JBQVcsR0FBRyxJQUFJLElBQUksQ0FBa0IsR0FBRyxFQUFFO1lBQ3BELE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQThLSixDQUFDO0lBNUtBOzs7d0VBR29FO0lBQ3BFLE1BQU0sQ0FBRSxRQUFrQixFQUFFLFVBQW1CO1FBQzlDLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzNELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDdkMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ25DLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUU3QixhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN6QixXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsU0FBUztZQUNoQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsSUFBSSxVQUFVLFlBQVkscUJBQXFCLEVBQUU7Z0JBQ2hELElBQUksV0FBVyxHQUFHLFVBQW1DLENBQUM7Z0JBQ3RELGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBRWhDLElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRTtvQkFDdEQsT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7aUJBQy9EO2dCQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZCLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzFGO1NBQ0Q7UUFFRCxJQUFJLFVBQVUsRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQjthQUFNO1lBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7U0FDckM7SUFDRixDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixFQUFFLElBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUN2SSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUN2QixLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDekIsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDekIsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3pCO1NBQ0Q7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNsQixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLGlCQUFpQixDQUFFLENBQVMsRUFBRSxDQUFTO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDN0UsQ0FBQztJQUVELGlGQUFpRjtJQUNqRixxQkFBcUIsQ0FBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO1FBQ3BFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDckIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNyQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQztZQUN2SCxPQUFPLEtBQUssQ0FBQztRQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdEMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN0QyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRCxzSEFBc0g7SUFDdEgsc0JBQXNCLENBQUUsTUFBc0I7UUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDakgsQ0FBQztJQUVEO3NHQUNrRztJQUNsRyxhQUFhLENBQUUsQ0FBUyxFQUFFLENBQVM7UUFDbEMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM5QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEYsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsc0RBQXNEO0lBQ3RELG9CQUFvQixDQUFFLE9BQXdCLEVBQUUsQ0FBUyxFQUFFLENBQVM7UUFDbkUsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFeEIsSUFBSSxTQUFTLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2xDLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDL0QsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO29CQUFFLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQzthQUN4RztZQUNELFNBQVMsR0FBRyxFQUFFLENBQUM7U0FDZjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVEOztlQUVXO0lBQ1gsaUJBQWlCLENBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVTtRQUNoRSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzlDLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlGLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELHlFQUF5RTtJQUN6RSx3QkFBd0IsQ0FBRSxPQUF3QixFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVU7UUFDakcsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFeEIsSUFBSSxPQUFPLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUMxQyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRCxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdDLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUM3QixJQUFJLE9BQU8sR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQzFDLElBQUksSUFBSSxHQUFHLE9BQU8sR0FBRyxRQUFRLEdBQUcsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxPQUFPLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNqRCxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDckcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFBRSxPQUFPLElBQUksQ0FBQzthQUNsSDtZQUNELEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDUixFQUFFLEdBQUcsRUFBRSxDQUFDO1NBQ1I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsVUFBVSxDQUFFLFdBQWtDO1FBQzdDLElBQUksQ0FBQyxXQUFXO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ2pFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxRQUFRO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxTQUFTO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztDQUNEIn0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated September 24, 2021. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2021, Esoteric Software LLC
|
|
6
|
+
*
|
|
7
|
+
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
+
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
+
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
+
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
+
*
|
|
12
|
+
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
13
|
+
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
+
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
+
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
+
* include this license and copyright notice.
|
|
17
|
+
*
|
|
18
|
+
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
+
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
|
+
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*****************************************************************************/
|
|
29
|
+
import { ClippingAttachment } from "./attachments/ClippingAttachment";
|
|
30
|
+
import { Slot } from "./Slot";
|
|
31
|
+
import { Color, NumberArrayLike } from "./Utils";
|
|
32
|
+
export declare class SkeletonClipping {
|
|
33
|
+
private triangulator;
|
|
34
|
+
private clippingPolygon;
|
|
35
|
+
private clipOutput;
|
|
36
|
+
clippedVertices: number[];
|
|
37
|
+
clippedTriangles: number[];
|
|
38
|
+
private scratch;
|
|
39
|
+
private clipAttachment;
|
|
40
|
+
private clippingPolygons;
|
|
41
|
+
clipStart(slot: Slot, clip: ClippingAttachment): number;
|
|
42
|
+
clipEndWithSlot(slot: Slot): void;
|
|
43
|
+
clipEnd(): void;
|
|
44
|
+
isClipping(): boolean;
|
|
45
|
+
clipTriangles(vertices: NumberArrayLike, verticesLength: number, triangles: NumberArrayLike, trianglesLength: number, uvs: NumberArrayLike, light: Color, dark: Color, twoColor: boolean): void;
|
|
46
|
+
/** Clips the input triangle against the convex, clockwise clipping area. If the triangle lies entirely within the clipping
|
|
47
|
+
* area, false is returned. The clipping area must duplicate the first vertex at the end of the vertices list. */
|
|
48
|
+
clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array<number>, output: Array<number>): boolean;
|
|
49
|
+
static makeClockwise(polygon: NumberArrayLike): void;
|
|
50
|
+
}
|