excalibur 0.26.0-alpha.411 → 0.26.0-alpha.412
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/CHANGELOG.md +1 -1
- package/build/dist/Collision/ColliderComponent.js +1 -1
- package/build/dist/Collision/ColliderComponent.js.map +1 -1
- package/build/dist/Collision/Colliders/PolygonCollider.d.ts +18 -4
- package/build/dist/Collision/Colliders/PolygonCollider.js +168 -3
- package/build/dist/Collision/Colliders/PolygonCollider.js.map +1 -1
- package/build/dist/Collision/Colliders/Shape.d.ts +1 -2
- package/build/dist/Collision/Colliders/Shape.js +2 -4
- package/build/dist/Collision/Colliders/Shape.js.map +1 -1
- package/build/dist/excalibur.js +173 -10
- package/build/dist/excalibur.js.map +1 -1
- package/build/dist/excalibur.min.js +1 -1
- package/build/dist/excalibur.min.js.LICENSE.txt +1 -1
- package/build/dist/excalibur.min.js.map +1 -1
- package/build/dist/index.js +2 -2
- package/build/esm/Collision/Colliders/PolygonCollider.d.ts +18 -4
- package/build/esm/Collision/Colliders/Shape.d.ts +1 -2
- package/build/esm/excalibur.js +173 -10
- package/build/esm/excalibur.js.map +1 -1
- package/build/esm/excalibur.min.js +1 -1
- package/build/esm/excalibur.min.js.LICENSE.txt +1 -1
- package/build/esm/excalibur.min.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -15,7 +15,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
|
15
15
|
|
|
16
16
|
### Added
|
|
17
17
|
|
|
18
|
-
-
|
|
18
|
+
Added arbitrary non-convex polygon support (only non-self intersecting) with `ex.PolygonCollider(...).triangulate()` which builds a new `ex.CompositeCollider` composed of triangles.
|
|
19
19
|
|
|
20
20
|
### Fixed
|
|
21
21
|
|
|
@@ -165,7 +165,7 @@ export class ColliderComponent extends Component {
|
|
|
165
165
|
* By default, the box is center is at (0, 0) which means it is centered around the actors anchor.
|
|
166
166
|
*/
|
|
167
167
|
usePolygonCollider(points, center = Vector.Zero) {
|
|
168
|
-
const poly = Shape.Polygon(points,
|
|
168
|
+
const poly = Shape.Polygon(points, center);
|
|
169
169
|
return (this.set(poly));
|
|
170
170
|
}
|
|
171
171
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColliderComponent.js","sourceRoot":"","sources":["../../../src/engine/Collision/ColliderComponent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ColliderComponent.js","sourceRoot":"","sources":["../../../src/engine/Collision/ColliderComponent.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import { Ray } from '../../Math/ray';
|
|
|
8
8
|
import { Transform } from '../../EntityComponentSystem';
|
|
9
9
|
import { Collider } from './Collider';
|
|
10
10
|
import { ExcaliburGraphicsContext } from '../..';
|
|
11
|
+
import { CompositeCollider } from './CompositeCollider';
|
|
11
12
|
export interface PolygonColliderOptions {
|
|
12
13
|
/**
|
|
13
14
|
* Pixel offset relative to a collider's body transform position.
|
|
@@ -17,21 +18,19 @@ export interface PolygonColliderOptions {
|
|
|
17
18
|
* Points in the polygon in order around the perimeter in local coordinates. These are relative from the body transform position.
|
|
18
19
|
*/
|
|
19
20
|
points: Vector[];
|
|
20
|
-
/**
|
|
21
|
-
* Whether points are specified in clockwise or counter clockwise order, default counter-clockwise
|
|
22
|
-
*/
|
|
23
|
-
clockwiseWinding?: boolean;
|
|
24
21
|
}
|
|
25
22
|
/**
|
|
26
23
|
* Polygon collider for detecting collisions
|
|
27
24
|
*/
|
|
28
25
|
export declare class PolygonCollider extends Collider {
|
|
26
|
+
private _logger;
|
|
29
27
|
/**
|
|
30
28
|
* Pixel offset relative to a collider's body transform position.
|
|
31
29
|
*/
|
|
32
30
|
offset: Vector;
|
|
33
31
|
/**
|
|
34
32
|
* Points in the polygon in order around the perimeter in local coordinates. These are relative from the body transform position.
|
|
33
|
+
* Excalibur stores these in clockwise order
|
|
35
34
|
*/
|
|
36
35
|
points: Vector[];
|
|
37
36
|
private _transform;
|
|
@@ -40,6 +39,21 @@ export declare class PolygonCollider extends Collider {
|
|
|
40
39
|
private _sides;
|
|
41
40
|
private _localSides;
|
|
42
41
|
constructor(options: PolygonColliderOptions);
|
|
42
|
+
private _isClockwiseWinding;
|
|
43
|
+
/**
|
|
44
|
+
* Returns if the polygon collider is convex, Excalibur does not handle non-convex collision shapes.
|
|
45
|
+
* Call [[Polygon.triangulate]] to generate a [[CompositeCollider]] from this non-convex shape
|
|
46
|
+
*/
|
|
47
|
+
isConvex(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Tessellates the polygon into a triangle fan as a [[CompositeCollider]] of triangle polygons
|
|
50
|
+
*/
|
|
51
|
+
tessellate(): CompositeCollider;
|
|
52
|
+
/**
|
|
53
|
+
* Triangulate the polygon collider using the "Ear Clipping" algorithm.
|
|
54
|
+
* Returns a new [[CompositeCollider]] made up of smaller triangles.
|
|
55
|
+
*/
|
|
56
|
+
triangulate(): CompositeCollider;
|
|
43
57
|
/**
|
|
44
58
|
* Returns a clone of this ConvexPolygon, not associated with any collider
|
|
45
59
|
*/
|
|
@@ -9,23 +9,188 @@ import { Vector } from '../../Math/vector';
|
|
|
9
9
|
import { Ray } from '../../Math/ray';
|
|
10
10
|
import { ClosestLineJumpTable } from './ClosestLineJumpTable';
|
|
11
11
|
import { Collider } from './Collider';
|
|
12
|
+
import { Logger, range } from '../..';
|
|
13
|
+
import { CompositeCollider } from './CompositeCollider';
|
|
14
|
+
import { Shape } from './Shape';
|
|
12
15
|
/**
|
|
13
16
|
* Polygon collider for detecting collisions
|
|
14
17
|
*/
|
|
15
18
|
export class PolygonCollider extends Collider {
|
|
16
19
|
constructor(options) {
|
|
17
|
-
var _a;
|
|
20
|
+
var _a, _b;
|
|
18
21
|
super();
|
|
22
|
+
this._logger = Logger.getInstance();
|
|
19
23
|
this._transformedPoints = [];
|
|
20
24
|
this._axes = [];
|
|
21
25
|
this._sides = [];
|
|
22
26
|
this._localSides = [];
|
|
23
27
|
this.offset = (_a = options.offset) !== null && _a !== void 0 ? _a : Vector.Zero;
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
this.points = (_b = options.points) !== null && _b !== void 0 ? _b : [];
|
|
29
|
+
const clockwise = this._isClockwiseWinding(this.points);
|
|
30
|
+
if (!clockwise) {
|
|
31
|
+
this.points.reverse();
|
|
32
|
+
}
|
|
33
|
+
if (!this.isConvex()) {
|
|
34
|
+
this._logger.warn('Excalibur only supports convex polygon colliders and will not behave properly.' +
|
|
35
|
+
'Call PolygonCollider.triangulate() to build a new collider composed of smaller convex triangles');
|
|
36
|
+
}
|
|
26
37
|
// calculate initial transformation
|
|
27
38
|
this._calculateTransformation();
|
|
28
39
|
}
|
|
40
|
+
_isClockwiseWinding(points) {
|
|
41
|
+
// https://stackoverflow.com/a/1165943
|
|
42
|
+
let sum = 0;
|
|
43
|
+
for (let i = 0; i < points.length; i++) {
|
|
44
|
+
sum += (points[(i + 1) % points.length].x - points[i].x) * (points[(i + 1) % points.length].y + points[i].y);
|
|
45
|
+
}
|
|
46
|
+
return sum < 0;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns if the polygon collider is convex, Excalibur does not handle non-convex collision shapes.
|
|
50
|
+
* Call [[Polygon.triangulate]] to generate a [[CompositeCollider]] from this non-convex shape
|
|
51
|
+
*/
|
|
52
|
+
isConvex() {
|
|
53
|
+
// From SO: https://stackoverflow.com/a/45372025
|
|
54
|
+
if (this.points.length < 3) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
let oldPoint = this.points[this.points.length - 2];
|
|
58
|
+
let newPoint = this.points[this.points.length - 1];
|
|
59
|
+
let direction = Math.atan2(newPoint.y - oldPoint.y, newPoint.x - oldPoint.x);
|
|
60
|
+
let oldDirection = 0;
|
|
61
|
+
let orientation = 0;
|
|
62
|
+
let angleSum = 0;
|
|
63
|
+
for (const [i, point] of this.points.entries()) {
|
|
64
|
+
oldPoint = newPoint;
|
|
65
|
+
oldDirection = direction;
|
|
66
|
+
newPoint = point;
|
|
67
|
+
direction = Math.atan2(newPoint.y - oldPoint.y, newPoint.x - oldPoint.x);
|
|
68
|
+
if (oldPoint.equals(newPoint)) {
|
|
69
|
+
return false; // repeat point
|
|
70
|
+
}
|
|
71
|
+
let angle = direction - oldDirection;
|
|
72
|
+
if (angle <= -Math.PI) {
|
|
73
|
+
angle += Math.PI * 2;
|
|
74
|
+
}
|
|
75
|
+
else if (angle > Math.PI) {
|
|
76
|
+
angle -= Math.PI * 2;
|
|
77
|
+
}
|
|
78
|
+
if (i === 0) {
|
|
79
|
+
if (angle === 0.0) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
orientation = angle > 0 ? 1 : -1;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
if (orientation * angle <= 0) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
angleSum += angle;
|
|
90
|
+
}
|
|
91
|
+
return Math.abs(Math.round(angleSum / (Math.PI * 2))) === 1;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Tessellates the polygon into a triangle fan as a [[CompositeCollider]] of triangle polygons
|
|
95
|
+
*/
|
|
96
|
+
tessellate() {
|
|
97
|
+
const polygons = [];
|
|
98
|
+
for (let i = 1; i < this.points.length - 2; i++) {
|
|
99
|
+
polygons.push([this.points[0], this.points[i + 1], this.points[i + 2]]);
|
|
100
|
+
}
|
|
101
|
+
polygons.push([this.points[0], this.points[1], this.points[2]]);
|
|
102
|
+
return new CompositeCollider(polygons.map(points => Shape.Polygon(points)));
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Triangulate the polygon collider using the "Ear Clipping" algorithm.
|
|
106
|
+
* Returns a new [[CompositeCollider]] made up of smaller triangles.
|
|
107
|
+
*/
|
|
108
|
+
triangulate() {
|
|
109
|
+
// https://www.youtube.com/watch?v=hTJFcHutls8
|
|
110
|
+
if (this.points.length < 3) {
|
|
111
|
+
throw Error('Invalid polygon');
|
|
112
|
+
}
|
|
113
|
+
// Helper to get a vertex in the list
|
|
114
|
+
/**
|
|
115
|
+
*
|
|
116
|
+
*/
|
|
117
|
+
function getItem(index, list) {
|
|
118
|
+
if (index >= list.length) {
|
|
119
|
+
return list[index % list.length];
|
|
120
|
+
}
|
|
121
|
+
else if (index < 0) {
|
|
122
|
+
return list[index % list.length + list.length];
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
return list[index];
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Quick test for point in triangle
|
|
129
|
+
/**
|
|
130
|
+
*
|
|
131
|
+
*/
|
|
132
|
+
function isPointInTriangle(point, a, b, c) {
|
|
133
|
+
const ab = b.sub(a);
|
|
134
|
+
const bc = c.sub(b);
|
|
135
|
+
const ca = a.sub(c);
|
|
136
|
+
const ap = point.sub(a);
|
|
137
|
+
const bp = point.sub(b);
|
|
138
|
+
const cp = point.sub(c);
|
|
139
|
+
const cross1 = ab.cross(ap);
|
|
140
|
+
const cross2 = bc.cross(bp);
|
|
141
|
+
const cross3 = ca.cross(cp);
|
|
142
|
+
if (cross1 > 0 || cross2 > 0 || cross3 > 0) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
const triangles = [];
|
|
148
|
+
const vertices = [...this.points];
|
|
149
|
+
const indices = range(0, this.points.length - 1);
|
|
150
|
+
// 1. Loop through vertices clockwise
|
|
151
|
+
// if the vertex is convex (interior angle is < 180) (cross product positive)
|
|
152
|
+
// if the polygon formed by it's edges doesn't contain the points
|
|
153
|
+
// it's an ear add it to our list of triangles, and restart
|
|
154
|
+
while (indices.length > 3) {
|
|
155
|
+
for (let i = 0; i < indices.length; i++) {
|
|
156
|
+
const a = indices[i];
|
|
157
|
+
const b = getItem(i - 1, indices);
|
|
158
|
+
const c = getItem(i + 1, indices);
|
|
159
|
+
const va = vertices[a];
|
|
160
|
+
const vb = vertices[b];
|
|
161
|
+
const vc = vertices[c];
|
|
162
|
+
// Check convexity
|
|
163
|
+
const leftArm = vb.sub(va);
|
|
164
|
+
const rightArm = vc.sub(va);
|
|
165
|
+
const isConvex = rightArm.cross(leftArm) > 0; // positive cross means convex
|
|
166
|
+
if (!isConvex) {
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
let isEar = true;
|
|
170
|
+
// Check that if any vertices are in the triangle a, b, c
|
|
171
|
+
for (let j = 0; j < indices.length; j++) {
|
|
172
|
+
const vertIndex = indices[j];
|
|
173
|
+
// We can skip these
|
|
174
|
+
if (vertIndex === a || vertIndex === b || vertIndex === c) {
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const point = vertices[vertIndex];
|
|
178
|
+
if (isPointInTriangle(point, vb, va, vc)) {
|
|
179
|
+
isEar = false;
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Add ear to polygon list and remove from list
|
|
184
|
+
if (isEar) {
|
|
185
|
+
triangles.push([vb, va, vc]);
|
|
186
|
+
indices.splice(i, 1);
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
triangles.push([vertices[indices[0]], vertices[indices[1]], vertices[indices[2]]]);
|
|
192
|
+
return new CompositeCollider(triangles.map(points => Shape.Polygon(points)));
|
|
193
|
+
}
|
|
29
194
|
/**
|
|
30
195
|
* Returns a clone of this ConvexPolygon, not associated with any collider
|
|
31
196
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolygonCollider.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Colliders/PolygonCollider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkBtC;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAkB3C,YAAY,OAA+B;;QACzC,KAAK,EAAE,CAAC;QANF,uBAAkB,GAAa,EAAE,CAAC;QAClC,UAAK,GAAa,EAAE,CAAC;QACrB,WAAM,GAAW,EAAE,CAAC;QACpB,gBAAW,GAAW,EAAE,CAAC;QAI/B,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,MAAM,CAAC,IAAI,CAAC;QAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAE1E,mCAAmC;QACnC,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,KAAK;QACV,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACjB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7C;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,wBAAwB;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAgC,CAAC;QAExD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3E,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAE7D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,0BAA0B;QAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACjF;IACH,CAAC;IAED;;OAEG;IACI,oBAAoB;QACzB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACtB,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QACD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,4BAA4B;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAC3B,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;QACD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,4BAA4B;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,SAAiB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,WAAW,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACpC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,aAAa,GAAG,WAAW,EAAE;gBAC/B,QAAQ,GAAG,WAAW,CAAC;gBACvB,WAAW,GAAG,aAAa,CAAC;aAC7B;SACF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,SAAiB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,WAAW,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACpC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,aAAa,GAAG,WAAW,EAAE;gBAC/B,QAAQ,GAAG,WAAW,CAAC;gBACvB,WAAW,GAAG,aAAa,CAAC;aAC7B;SACF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,SAAoB;QAChC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,KAAa;QAC3B,kFAAkF;QAClF,eAAe;QACf,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,IAAI;YACjE,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAChC,OAAO,KAAK,GAAG,CAAC,CAAC;aAClB;YACD,OAAO,KAAK,CAAC;QACf,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,IAAI,cAAc,GAAG,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,qBAAqB,CAAC,QAAkB;QAC7C,IAAI,QAAQ,YAAY,cAAc,EAAE;YACtC,OAAO,oBAAoB,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACtE;aAAM,IAAI,QAAQ,YAAY,eAAe,EAAE;YAC9C,OAAO,oBAAoB,CAAC,yBAAyB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACvE;aAAM,IAAI,QAAQ,YAAY,YAAY,EAAE;YAC3C,OAAO,oBAAoB,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACpE;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,QAAQ,EAAE,CAAC,CAAC;SAC7F;IACH,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,QAAkB;QAC/B,IAAI,QAAQ,YAAY,cAAc,EAAE;YACtC,OAAO,kBAAkB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAChE;aAAM,IAAI,QAAQ,YAAY,eAAe,EAAE;YAC9C,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACjE;aAAM,IAAI,QAAQ,YAAY,YAAY,EAAE;YAC3C,OAAO,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC9D;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,QAAQ,EAAE,CAAC,CAAC;SAC7F;IACH,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,SAAiB;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACxC,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,WAAW,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,QAAQ,GAAG,WAAW,EAAE;gBAC1B,WAAW,GAAG,QAAQ,CAAC;gBACvB,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;OAGG;IACI,qBAAqB,CAAC,SAAiB;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,IAAI,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,WAAW,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,QAAQ,GAAG,WAAW,EAAE;gBAC1B,WAAW,GAAG,QAAQ,CAAC;gBACvB,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,KAAa;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACnC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;QACnB,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,IAAI,GAAG,GAAG,EAAE;gBACd,GAAG,GAAG,IAAI,CAAC;gBACX,SAAS,GAAG,CAAC,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;aACjB;SACF;QAED,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;YACpB,OAAO;gBACL,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACnD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;aACvB,CAAC;SACH;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,UAAgC,CAAC;QACjD,MAAM,KAAK,GAAG,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,WAAW,mCAAI,MAAM,CAAC,GAAG,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,cAAc,mCAAI,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,CAAC,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,SAAS,mCAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QACpB,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,IAAY;QAC5B,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,SAAS;gBACP,SAAS;oBACT,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtI,WAAW,IAAI,SAAS,CAAC;SAC1B;QACD,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,GAAQ,EAAE,MAAc,QAAQ;QAC7C,+CAA+C;QAC/C,uEAAuE;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;QACtC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,cAAc,IAAI,WAAW,IAAI,GAAG,EAAE;gBAC1E,cAAc,GAAG,WAAW,CAAC;gBAC7B,YAAY,GAAG,CAAC,CAAC;aAClB;SACF;QAED,oBAAoB;QACpB,IAAI,YAAY,IAAI,CAAC,EAAE;YACrB,OAAO,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;SACrC;QAED,mBAAmB;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,IAAY;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;QAC3B,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC5B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SAC7B;QAED,OAAO,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,IAAI,CAAC,GAA6B,EAAE,QAAe,KAAK,CAAC,KAAK,EAAE,MAAc,MAAM,CAAC,IAAI;QAC9F,MAAM,eAAe,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACvD,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QAEvC,sBAAsB;QACtB,IAAI,CAAC,MAAM;aACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;aAClC,OAAO,CAAC,UAAU,KAAK;YACtB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACL,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IACM,KAAK,CAAC,EAA4B,EAAE,KAAY;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE,UAAU,CAAC,CAAC;QACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1C,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAChD,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACnC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SACxC;IACH,CAAC;IAED,0BAA0B;IACnB,SAAS,CAAC,GAA6B,EAAE,QAAe,KAAK,CAAC,GAAG;QACtE,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,gEAAgE;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK;YACjD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"PolygonCollider.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Colliders/PolygonCollider.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,10 +20,9 @@ export declare class Shape {
|
|
|
20
20
|
*
|
|
21
21
|
* PolygonColliders are useful for creating convex polygon shapes
|
|
22
22
|
* @param points Points specified in counter clockwise
|
|
23
|
-
* @param clockwiseWinding Optionally changed the winding of points, by default false meaning counter-clockwise winding.
|
|
24
23
|
* @param offset Optional offset relative to the collider in local coordinates
|
|
25
24
|
*/
|
|
26
|
-
static Polygon(points: Vector[],
|
|
25
|
+
static Polygon(points: Vector[], offset?: Vector): PolygonCollider;
|
|
27
26
|
/**
|
|
28
27
|
* Creates a new [[CircleCollider|circle]] collider
|
|
29
28
|
*
|
|
@@ -27,14 +27,12 @@ export class Shape {
|
|
|
27
27
|
*
|
|
28
28
|
* PolygonColliders are useful for creating convex polygon shapes
|
|
29
29
|
* @param points Points specified in counter clockwise
|
|
30
|
-
* @param clockwiseWinding Optionally changed the winding of points, by default false meaning counter-clockwise winding.
|
|
31
30
|
* @param offset Optional offset relative to the collider in local coordinates
|
|
32
31
|
*/
|
|
33
|
-
static Polygon(points,
|
|
32
|
+
static Polygon(points, offset = Vector.Zero) {
|
|
34
33
|
return new PolygonCollider({
|
|
35
34
|
points: points,
|
|
36
|
-
offset: offset
|
|
37
|
-
clockwiseWinding: clockwiseWinding
|
|
35
|
+
offset: offset
|
|
38
36
|
});
|
|
39
37
|
}
|
|
40
38
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shape.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Colliders/Shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B;;GAEG;AACH,MAAM,OAAO,KAAK;IAChB;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,KAAa,EAAE,MAAc,EAAE,SAAiB,MAAM,CAAC,IAAI,EAAE,SAAiB,MAAM,CAAC,IAAI;QAClG,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,IAAI,WAAW,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;YAChI,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"Shape.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Colliders/Shape.ts"],"names":[],"mappings":"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"}
|
package/build/dist/excalibur.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* excalibur - 0.26.0-alpha.
|
|
2
|
+
* excalibur - 0.26.0-alpha.412+2441285 - 2022-2-12
|
|
3
3
|
* https://github.com/excaliburjs/Excalibur
|
|
4
4
|
* Copyright (c) 2022 Excalibur.js <https://github.com/excaliburjs/Excalibur/graphs/contributors>
|
|
5
5
|
* Licensed BSD-2-Clause
|
|
@@ -15047,23 +15047,188 @@ class EdgeCollider extends Collider {
|
|
|
15047
15047
|
|
|
15048
15048
|
|
|
15049
15049
|
|
|
15050
|
+
|
|
15051
|
+
|
|
15052
|
+
|
|
15050
15053
|
/**
|
|
15051
15054
|
* Polygon collider for detecting collisions
|
|
15052
15055
|
*/
|
|
15053
15056
|
class PolygonCollider extends Collider {
|
|
15054
15057
|
constructor(options) {
|
|
15055
|
-
var _a;
|
|
15058
|
+
var _a, _b;
|
|
15056
15059
|
super();
|
|
15060
|
+
this._logger = Logger.getInstance();
|
|
15057
15061
|
this._transformedPoints = [];
|
|
15058
15062
|
this._axes = [];
|
|
15059
15063
|
this._sides = [];
|
|
15060
15064
|
this._localSides = [];
|
|
15061
15065
|
this.offset = (_a = options.offset) !== null && _a !== void 0 ? _a : Vector.Zero;
|
|
15062
|
-
|
|
15063
|
-
|
|
15066
|
+
this.points = (_b = options.points) !== null && _b !== void 0 ? _b : [];
|
|
15067
|
+
const clockwise = this._isClockwiseWinding(this.points);
|
|
15068
|
+
if (!clockwise) {
|
|
15069
|
+
this.points.reverse();
|
|
15070
|
+
}
|
|
15071
|
+
if (!this.isConvex()) {
|
|
15072
|
+
this._logger.warn('Excalibur only supports convex polygon colliders and will not behave properly.' +
|
|
15073
|
+
'Call PolygonCollider.triangulate() to build a new collider composed of smaller convex triangles');
|
|
15074
|
+
}
|
|
15064
15075
|
// calculate initial transformation
|
|
15065
15076
|
this._calculateTransformation();
|
|
15066
15077
|
}
|
|
15078
|
+
_isClockwiseWinding(points) {
|
|
15079
|
+
// https://stackoverflow.com/a/1165943
|
|
15080
|
+
let sum = 0;
|
|
15081
|
+
for (let i = 0; i < points.length; i++) {
|
|
15082
|
+
sum += (points[(i + 1) % points.length].x - points[i].x) * (points[(i + 1) % points.length].y + points[i].y);
|
|
15083
|
+
}
|
|
15084
|
+
return sum < 0;
|
|
15085
|
+
}
|
|
15086
|
+
/**
|
|
15087
|
+
* Returns if the polygon collider is convex, Excalibur does not handle non-convex collision shapes.
|
|
15088
|
+
* Call [[Polygon.triangulate]] to generate a [[CompositeCollider]] from this non-convex shape
|
|
15089
|
+
*/
|
|
15090
|
+
isConvex() {
|
|
15091
|
+
// From SO: https://stackoverflow.com/a/45372025
|
|
15092
|
+
if (this.points.length < 3) {
|
|
15093
|
+
return false;
|
|
15094
|
+
}
|
|
15095
|
+
let oldPoint = this.points[this.points.length - 2];
|
|
15096
|
+
let newPoint = this.points[this.points.length - 1];
|
|
15097
|
+
let direction = Math.atan2(newPoint.y - oldPoint.y, newPoint.x - oldPoint.x);
|
|
15098
|
+
let oldDirection = 0;
|
|
15099
|
+
let orientation = 0;
|
|
15100
|
+
let angleSum = 0;
|
|
15101
|
+
for (const [i, point] of this.points.entries()) {
|
|
15102
|
+
oldPoint = newPoint;
|
|
15103
|
+
oldDirection = direction;
|
|
15104
|
+
newPoint = point;
|
|
15105
|
+
direction = Math.atan2(newPoint.y - oldPoint.y, newPoint.x - oldPoint.x);
|
|
15106
|
+
if (oldPoint.equals(newPoint)) {
|
|
15107
|
+
return false; // repeat point
|
|
15108
|
+
}
|
|
15109
|
+
let angle = direction - oldDirection;
|
|
15110
|
+
if (angle <= -Math.PI) {
|
|
15111
|
+
angle += Math.PI * 2;
|
|
15112
|
+
}
|
|
15113
|
+
else if (angle > Math.PI) {
|
|
15114
|
+
angle -= Math.PI * 2;
|
|
15115
|
+
}
|
|
15116
|
+
if (i === 0) {
|
|
15117
|
+
if (angle === 0.0) {
|
|
15118
|
+
return false;
|
|
15119
|
+
}
|
|
15120
|
+
orientation = angle > 0 ? 1 : -1;
|
|
15121
|
+
}
|
|
15122
|
+
else {
|
|
15123
|
+
if (orientation * angle <= 0) {
|
|
15124
|
+
return false;
|
|
15125
|
+
}
|
|
15126
|
+
}
|
|
15127
|
+
angleSum += angle;
|
|
15128
|
+
}
|
|
15129
|
+
return Math.abs(Math.round(angleSum / (Math.PI * 2))) === 1;
|
|
15130
|
+
}
|
|
15131
|
+
/**
|
|
15132
|
+
* Tessellates the polygon into a triangle fan as a [[CompositeCollider]] of triangle polygons
|
|
15133
|
+
*/
|
|
15134
|
+
tessellate() {
|
|
15135
|
+
const polygons = [];
|
|
15136
|
+
for (let i = 1; i < this.points.length - 2; i++) {
|
|
15137
|
+
polygons.push([this.points[0], this.points[i + 1], this.points[i + 2]]);
|
|
15138
|
+
}
|
|
15139
|
+
polygons.push([this.points[0], this.points[1], this.points[2]]);
|
|
15140
|
+
return new CompositeCollider(polygons.map(points => Shape.Polygon(points)));
|
|
15141
|
+
}
|
|
15142
|
+
/**
|
|
15143
|
+
* Triangulate the polygon collider using the "Ear Clipping" algorithm.
|
|
15144
|
+
* Returns a new [[CompositeCollider]] made up of smaller triangles.
|
|
15145
|
+
*/
|
|
15146
|
+
triangulate() {
|
|
15147
|
+
// https://www.youtube.com/watch?v=hTJFcHutls8
|
|
15148
|
+
if (this.points.length < 3) {
|
|
15149
|
+
throw Error('Invalid polygon');
|
|
15150
|
+
}
|
|
15151
|
+
// Helper to get a vertex in the list
|
|
15152
|
+
/**
|
|
15153
|
+
*
|
|
15154
|
+
*/
|
|
15155
|
+
function getItem(index, list) {
|
|
15156
|
+
if (index >= list.length) {
|
|
15157
|
+
return list[index % list.length];
|
|
15158
|
+
}
|
|
15159
|
+
else if (index < 0) {
|
|
15160
|
+
return list[index % list.length + list.length];
|
|
15161
|
+
}
|
|
15162
|
+
else {
|
|
15163
|
+
return list[index];
|
|
15164
|
+
}
|
|
15165
|
+
}
|
|
15166
|
+
// Quick test for point in triangle
|
|
15167
|
+
/**
|
|
15168
|
+
*
|
|
15169
|
+
*/
|
|
15170
|
+
function isPointInTriangle(point, a, b, c) {
|
|
15171
|
+
const ab = b.sub(a);
|
|
15172
|
+
const bc = c.sub(b);
|
|
15173
|
+
const ca = a.sub(c);
|
|
15174
|
+
const ap = point.sub(a);
|
|
15175
|
+
const bp = point.sub(b);
|
|
15176
|
+
const cp = point.sub(c);
|
|
15177
|
+
const cross1 = ab.cross(ap);
|
|
15178
|
+
const cross2 = bc.cross(bp);
|
|
15179
|
+
const cross3 = ca.cross(cp);
|
|
15180
|
+
if (cross1 > 0 || cross2 > 0 || cross3 > 0) {
|
|
15181
|
+
return false;
|
|
15182
|
+
}
|
|
15183
|
+
return true;
|
|
15184
|
+
}
|
|
15185
|
+
const triangles = [];
|
|
15186
|
+
const vertices = [...this.points];
|
|
15187
|
+
const indices = range(0, this.points.length - 1);
|
|
15188
|
+
// 1. Loop through vertices clockwise
|
|
15189
|
+
// if the vertex is convex (interior angle is < 180) (cross product positive)
|
|
15190
|
+
// if the polygon formed by it's edges doesn't contain the points
|
|
15191
|
+
// it's an ear add it to our list of triangles, and restart
|
|
15192
|
+
while (indices.length > 3) {
|
|
15193
|
+
for (let i = 0; i < indices.length; i++) {
|
|
15194
|
+
const a = indices[i];
|
|
15195
|
+
const b = getItem(i - 1, indices);
|
|
15196
|
+
const c = getItem(i + 1, indices);
|
|
15197
|
+
const va = vertices[a];
|
|
15198
|
+
const vb = vertices[b];
|
|
15199
|
+
const vc = vertices[c];
|
|
15200
|
+
// Check convexity
|
|
15201
|
+
const leftArm = vb.sub(va);
|
|
15202
|
+
const rightArm = vc.sub(va);
|
|
15203
|
+
const isConvex = rightArm.cross(leftArm) > 0; // positive cross means convex
|
|
15204
|
+
if (!isConvex) {
|
|
15205
|
+
continue;
|
|
15206
|
+
}
|
|
15207
|
+
let isEar = true;
|
|
15208
|
+
// Check that if any vertices are in the triangle a, b, c
|
|
15209
|
+
for (let j = 0; j < indices.length; j++) {
|
|
15210
|
+
const vertIndex = indices[j];
|
|
15211
|
+
// We can skip these
|
|
15212
|
+
if (vertIndex === a || vertIndex === b || vertIndex === c) {
|
|
15213
|
+
continue;
|
|
15214
|
+
}
|
|
15215
|
+
const point = vertices[vertIndex];
|
|
15216
|
+
if (isPointInTriangle(point, vb, va, vc)) {
|
|
15217
|
+
isEar = false;
|
|
15218
|
+
break;
|
|
15219
|
+
}
|
|
15220
|
+
}
|
|
15221
|
+
// Add ear to polygon list and remove from list
|
|
15222
|
+
if (isEar) {
|
|
15223
|
+
triangles.push([vb, va, vc]);
|
|
15224
|
+
indices.splice(i, 1);
|
|
15225
|
+
break;
|
|
15226
|
+
}
|
|
15227
|
+
}
|
|
15228
|
+
}
|
|
15229
|
+
triangles.push([vertices[indices[0]], vertices[indices[1]], vertices[indices[2]]]);
|
|
15230
|
+
return new CompositeCollider(triangles.map(points => Shape.Polygon(points)));
|
|
15231
|
+
}
|
|
15067
15232
|
/**
|
|
15068
15233
|
* Returns a clone of this ConvexPolygon, not associated with any collider
|
|
15069
15234
|
*/
|
|
@@ -15455,14 +15620,12 @@ class Shape {
|
|
|
15455
15620
|
*
|
|
15456
15621
|
* PolygonColliders are useful for creating convex polygon shapes
|
|
15457
15622
|
* @param points Points specified in counter clockwise
|
|
15458
|
-
* @param clockwiseWinding Optionally changed the winding of points, by default false meaning counter-clockwise winding.
|
|
15459
15623
|
* @param offset Optional offset relative to the collider in local coordinates
|
|
15460
15624
|
*/
|
|
15461
|
-
static Polygon(points,
|
|
15625
|
+
static Polygon(points, offset = Vector.Zero) {
|
|
15462
15626
|
return new PolygonCollider({
|
|
15463
15627
|
points: points,
|
|
15464
|
-
offset: offset
|
|
15465
|
-
clockwiseWinding: clockwiseWinding
|
|
15628
|
+
offset: offset
|
|
15466
15629
|
});
|
|
15467
15630
|
}
|
|
15468
15631
|
/**
|
|
@@ -15696,7 +15859,7 @@ class ColliderComponent extends Component {
|
|
|
15696
15859
|
* By default, the box is center is at (0, 0) which means it is centered around the actors anchor.
|
|
15697
15860
|
*/
|
|
15698
15861
|
usePolygonCollider(points, center = Vector.Zero) {
|
|
15699
|
-
const poly = Shape.Polygon(points,
|
|
15862
|
+
const poly = Shape.Polygon(points, center);
|
|
15700
15863
|
return (this.set(poly));
|
|
15701
15864
|
}
|
|
15702
15865
|
/**
|
|
@@ -30200,7 +30363,7 @@ Promises_Promise = Promise_1 = Promises_decorate([
|
|
|
30200
30363
|
* The current Excalibur version string
|
|
30201
30364
|
* @description `process.env.__EX_VERSION` gets replaced by Webpack on build
|
|
30202
30365
|
*/
|
|
30203
|
-
const EX_VERSION = "0.26.0-alpha.
|
|
30366
|
+
const EX_VERSION = "0.26.0-alpha.412+2441285";
|
|
30204
30367
|
|
|
30205
30368
|
polyfill();
|
|
30206
30369
|
// This file is used as the bundle entry point and exports everything
|