melonjs 20.0.0 → 20.1.0
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/build/camera/effects/fade_effect.d.ts.map +1 -1
- package/build/camera/effects/mask_effect.d.ts.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +364 -36
- package/build/index.js.map +3 -3
- package/build/physics/adapter.d.ts +74 -0
- package/build/physics/adapter.d.ts.map +1 -1
- package/build/physics/builtin/body.d.ts +0 -9
- package/build/physics/builtin/body.d.ts.map +1 -1
- package/build/physics/builtin/detector.d.ts +174 -1
- package/build/physics/builtin/detector.d.ts.map +1 -1
- package/build/utils/utils.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fade_effect.d.ts","sourceRoot":"","sources":["../../../src/camera/effects/fade_effect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAC;AAE/C,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IACnD;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC;IAExB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;;;;;OAOG;gBAEF,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE;QACR,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;QACrC,UAAU,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;KACtC;IA4BO,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAY7D,MAAM,IAAI,IAAI;IASd,OAAO,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"fade_effect.d.ts","sourceRoot":"","sources":["../../../src/camera/effects/fade_effect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAC;AAE/C,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IACnD;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC;IAExB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;;;;;OAOG;gBAEF,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE;QACR,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;QACrC,UAAU,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;KACtC;IA4BO,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAY7D,MAAM,IAAI,IAAI;IASd,OAAO,IAAI,IAAI;CAiBxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mask_effect.d.ts","sourceRoot":"","sources":["../../../src/camera/effects/mask_effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,OAAO,EAAe,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAC;AAE/C,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IACnD;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE7B;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAErC;;;OAGG;IACH,UAAU,EAAE,SAAS,CAAC;IAEtB;;;;;;;;OAQG;gBAEF,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE;QACR,KAAK,EAAE,SAAS,CAAC;QACjB,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;QAC1C,UAAU,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;KACtC;IA+BO,MAAM,IAAI,IAAI;IAmCd,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAwB7D,OAAO,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"mask_effect.d.ts","sourceRoot":"","sources":["../../../src/camera/effects/mask_effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,OAAO,EAAe,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAC;AAE/C,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IACnD;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE7B;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAErC;;;OAGG;IACH,UAAU,EAAE,SAAS,CAAC;IAEtB;;;;;;;;OAQG;gBAEF,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE;QACR,KAAK,EAAE,SAAS,CAAC;QACjB,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;QAC1C,UAAU,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;KACtC;IA+BO,MAAM,IAAI,IAAI;IAmCd,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAwB7D,OAAO,IAAI,IAAI;CAqBxB"}
|
package/build/index.d.ts
CHANGED
|
@@ -125,7 +125,7 @@ export { ObservableVector2d } from "./math/observableVector2d.ts";
|
|
|
125
125
|
export { ObservableVector3d } from "./math/observableVector3d.ts";
|
|
126
126
|
export { Vector2d } from "./math/vector2d.ts";
|
|
127
127
|
export { Vector3d } from "./math/vector3d.ts";
|
|
128
|
-
export type { AdapterCapabilities, AdapterOptions, BodyDefinition, BodyShape, BodyType, CollisionResponse, PhysicsAdapter, PhysicsBody, RaycastHit, RaycastHit3d, } from "./physics/adapter.ts";
|
|
128
|
+
export type { AdapterCapabilities, AdapterOptions, BodyDefinition, BodyShape, BodyType, CollisionResponse, PhysicsAdapter, PhysicsBody, RaycastHit, RaycastHit3d, ShapeCollisionContact, } from "./physics/adapter.ts";
|
|
129
129
|
export { Bounds } from "./physics/bounds.ts";
|
|
130
130
|
export { AABB3d } from "./physics/broadphase/aabb3d.ts";
|
|
131
131
|
export { default as BuiltinAdapter } from "./physics/builtin/builtin-adapter.ts";
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - 20.
|
|
2
|
+
* melonJS Game Engine - 20.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -6665,8 +6665,8 @@ function resetGUID(base, index = 0) {
|
|
|
6665
6665
|
GUID_base = toHex(base.toUpperCase());
|
|
6666
6666
|
GUID_index = index;
|
|
6667
6667
|
}
|
|
6668
|
-
function createGUID(index
|
|
6669
|
-
GUID_index
|
|
6668
|
+
function createGUID(index) {
|
|
6669
|
+
GUID_index++;
|
|
6670
6670
|
return `${GUID_base}-${index || GUID_index}`;
|
|
6671
6671
|
}
|
|
6672
6672
|
var isStringArray = (value) => {
|
|
@@ -13193,9 +13193,15 @@ var FadeEffect = class extends CameraEffect {
|
|
|
13193
13193
|
}
|
|
13194
13194
|
}
|
|
13195
13195
|
destroy() {
|
|
13196
|
-
this.tween
|
|
13197
|
-
|
|
13198
|
-
|
|
13196
|
+
if (this.tween !== void 0) {
|
|
13197
|
+
this.tween.stop();
|
|
13198
|
+
tweenPool.release(this.tween);
|
|
13199
|
+
this.tween = void 0;
|
|
13200
|
+
}
|
|
13201
|
+
if (this.color !== void 0) {
|
|
13202
|
+
colorPool.release(this.color);
|
|
13203
|
+
this.color = void 0;
|
|
13204
|
+
}
|
|
13199
13205
|
}
|
|
13200
13206
|
};
|
|
13201
13207
|
|
|
@@ -13594,13 +13600,22 @@ var MaskEffect = class extends CameraEffect {
|
|
|
13594
13600
|
r.restore();
|
|
13595
13601
|
}
|
|
13596
13602
|
destroy() {
|
|
13597
|
-
this.tween
|
|
13598
|
-
|
|
13599
|
-
|
|
13600
|
-
|
|
13601
|
-
|
|
13602
|
-
|
|
13603
|
-
|
|
13603
|
+
if (this.tween !== void 0) {
|
|
13604
|
+
this.tween.stop();
|
|
13605
|
+
tweenPool.release(this.tween);
|
|
13606
|
+
this.tween = void 0;
|
|
13607
|
+
}
|
|
13608
|
+
if (this.color !== void 0) {
|
|
13609
|
+
colorPool.release(this.color);
|
|
13610
|
+
this.color = void 0;
|
|
13611
|
+
}
|
|
13612
|
+
if (this._maskShape !== void 0) {
|
|
13613
|
+
if (this._maskShape.type === "Ellipse") {
|
|
13614
|
+
ellipsePool.release(this._maskShape);
|
|
13615
|
+
} else {
|
|
13616
|
+
polygonPool.release(this._maskShape);
|
|
13617
|
+
}
|
|
13618
|
+
this._maskShape = void 0;
|
|
13604
13619
|
}
|
|
13605
13620
|
}
|
|
13606
13621
|
};
|
|
@@ -16678,6 +16693,7 @@ var collision = {
|
|
|
16678
16693
|
};
|
|
16679
16694
|
|
|
16680
16695
|
// src/physics/builtin/body.js
|
|
16696
|
+
var shapeContactIdCounter = 0;
|
|
16681
16697
|
var Body = class {
|
|
16682
16698
|
/**
|
|
16683
16699
|
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} ancestor - the parent object this body is attached to
|
|
@@ -17046,6 +17062,9 @@ var Body = class {
|
|
|
17046
17062
|
* @private
|
|
17047
17063
|
*/
|
|
17048
17064
|
_initShapeCollision(stored, source) {
|
|
17065
|
+
if (stored._contactId === void 0) {
|
|
17066
|
+
stored._contactId = ++shapeContactIdCounter;
|
|
17067
|
+
}
|
|
17049
17068
|
if (source === void 0) {
|
|
17050
17069
|
stored.collisionType = void 0;
|
|
17051
17070
|
stored.collisionMask = void 0;
|
|
@@ -17502,6 +17521,7 @@ var Body = class {
|
|
|
17502
17521
|
shape.collisionMask = void 0;
|
|
17503
17522
|
shape.isTrigger = false;
|
|
17504
17523
|
shape.isActive = true;
|
|
17524
|
+
shape._contactId = void 0;
|
|
17505
17525
|
if (shape instanceof Point) {
|
|
17506
17526
|
pointPool.release(shape);
|
|
17507
17527
|
} else if (shape instanceof Line) {
|
|
@@ -47811,6 +47831,56 @@ var Detector = class {
|
|
|
47811
47831
|
isTriggerContact: false
|
|
47812
47832
|
}
|
|
47813
47833
|
];
|
|
47834
|
+
this._activeShapePairs = /* @__PURE__ */ new Map();
|
|
47835
|
+
this._frameShapeSeen = /* @__PURE__ */ new Map();
|
|
47836
|
+
this._shapeViews = [
|
|
47837
|
+
{
|
|
47838
|
+
a: null,
|
|
47839
|
+
b: null,
|
|
47840
|
+
shapeA: null,
|
|
47841
|
+
shapeB: null,
|
|
47842
|
+
overlap: 0,
|
|
47843
|
+
overlapN: { x: 0, y: 0 },
|
|
47844
|
+
overlapV: { x: 0, y: 0 },
|
|
47845
|
+
normal: { x: 0, y: 0 },
|
|
47846
|
+
depth: 0,
|
|
47847
|
+
overlapNZ: 0,
|
|
47848
|
+
overlapZ: 0,
|
|
47849
|
+
normalZ: 0,
|
|
47850
|
+
indexShapeA: -1,
|
|
47851
|
+
indexShapeB: -1,
|
|
47852
|
+
isTrigger: false
|
|
47853
|
+
},
|
|
47854
|
+
{
|
|
47855
|
+
a: null,
|
|
47856
|
+
b: null,
|
|
47857
|
+
shapeA: null,
|
|
47858
|
+
shapeB: null,
|
|
47859
|
+
overlap: 0,
|
|
47860
|
+
overlapN: { x: 0, y: 0 },
|
|
47861
|
+
overlapV: { x: 0, y: 0 },
|
|
47862
|
+
normal: { x: 0, y: 0 },
|
|
47863
|
+
depth: 0,
|
|
47864
|
+
overlapNZ: 0,
|
|
47865
|
+
overlapZ: 0,
|
|
47866
|
+
normalZ: 0,
|
|
47867
|
+
indexShapeA: -1,
|
|
47868
|
+
indexShapeB: -1,
|
|
47869
|
+
isTrigger: false
|
|
47870
|
+
}
|
|
47871
|
+
];
|
|
47872
|
+
this._contactObjA = null;
|
|
47873
|
+
this._contactObjB = null;
|
|
47874
|
+
this._onShapeContact = (shapeA, indexA, shapeB, indexB, isTrigger, res) => {
|
|
47875
|
+
this._dispatchShapeContact(
|
|
47876
|
+
shapeA,
|
|
47877
|
+
indexA,
|
|
47878
|
+
shapeB,
|
|
47879
|
+
indexB,
|
|
47880
|
+
isTrigger,
|
|
47881
|
+
res
|
|
47882
|
+
);
|
|
47883
|
+
};
|
|
47814
47884
|
}
|
|
47815
47885
|
/**
|
|
47816
47886
|
* Populate one of the pooled symmetric views from a SAT response.
|
|
@@ -47869,6 +47939,7 @@ var Detector = class {
|
|
|
47869
47939
|
*/
|
|
47870
47940
|
beginFrame() {
|
|
47871
47941
|
this._frameSeen.clear();
|
|
47942
|
+
this._frameShapeSeen.clear();
|
|
47872
47943
|
}
|
|
47873
47944
|
/**
|
|
47874
47945
|
* Called by the adapter at the end of a physics step. Diffs the
|
|
@@ -47895,9 +47966,58 @@ var Detector = class {
|
|
|
47895
47966
|
b.onCollisionEnd(void 0, a);
|
|
47896
47967
|
}
|
|
47897
47968
|
}
|
|
47969
|
+
for (const [key, entry2] of this._activeShapePairs) {
|
|
47970
|
+
if (this._frameShapeSeen.has(key)) {
|
|
47971
|
+
continue;
|
|
47972
|
+
}
|
|
47973
|
+
const [a, b, shapeA, shapeB] = entry2;
|
|
47974
|
+
const aAttached = a.ancestor != null;
|
|
47975
|
+
const bAttached = b.ancestor != null;
|
|
47976
|
+
if (!aAttached && !bAttached) {
|
|
47977
|
+
continue;
|
|
47978
|
+
}
|
|
47979
|
+
if (aAttached && typeof a.onShapeCollisionEnd === "function") {
|
|
47980
|
+
a.onShapeCollisionEnd(this._fillEndedView(0, a, b, shapeA, shapeB), b);
|
|
47981
|
+
}
|
|
47982
|
+
if (bAttached && typeof b.onShapeCollisionEnd === "function") {
|
|
47983
|
+
b.onShapeCollisionEnd(this._fillEndedView(1, b, a, shapeB, shapeA), a);
|
|
47984
|
+
}
|
|
47985
|
+
}
|
|
47898
47986
|
const prev = this._activePairs;
|
|
47899
47987
|
this._activePairs = this._frameSeen;
|
|
47900
47988
|
this._frameSeen = prev;
|
|
47989
|
+
const prevShapes = this._activeShapePairs;
|
|
47990
|
+
this._activeShapePairs = this._frameShapeSeen;
|
|
47991
|
+
this._frameShapeSeen = prevShapes;
|
|
47992
|
+
this._frameShapeSeen.clear();
|
|
47993
|
+
}
|
|
47994
|
+
/**
|
|
47995
|
+
* Identity-only shape-contact view for `onShapeCollisionEnd`: the shapes
|
|
47996
|
+
* have separated, so every geometric field is zeroed rather than left
|
|
47997
|
+
* holding the last overlap, which would read as a live contact.
|
|
47998
|
+
* @ignore
|
|
47999
|
+
*/
|
|
48000
|
+
_fillEndedView(slot, receiver, partner, ownShape, otherShape) {
|
|
48001
|
+
const view = this._shapeViews[slot];
|
|
48002
|
+
view.a = receiver;
|
|
48003
|
+
view.b = partner;
|
|
48004
|
+
view.shapeA = ownShape;
|
|
48005
|
+
view.shapeB = otherShape;
|
|
48006
|
+
view.indexShapeA = receiver.body?.shapes.indexOf(ownShape) ?? -1;
|
|
48007
|
+
view.indexShapeB = partner.body?.shapes.indexOf(otherShape) ?? -1;
|
|
48008
|
+
view.isTrigger = ownShape?.isTrigger === true || otherShape?.isTrigger === true;
|
|
48009
|
+
view.overlap = 0;
|
|
48010
|
+
view.depth = 0;
|
|
48011
|
+
view.overlapN.x = 0;
|
|
48012
|
+
view.overlapN.y = 0;
|
|
48013
|
+
view.overlapV.x = 0;
|
|
48014
|
+
view.overlapV.y = 0;
|
|
48015
|
+
view.normal.x = 0;
|
|
48016
|
+
view.normal.y = 0;
|
|
48017
|
+
view.overlapNZ = 0;
|
|
48018
|
+
view.overlapZ = 0;
|
|
48019
|
+
view.normalZ = 0;
|
|
48020
|
+
return view;
|
|
47901
48021
|
}
|
|
47902
48022
|
/**
|
|
47903
48023
|
* Build a stable order-independent key for a pair of renderables,
|
|
@@ -47913,6 +48033,188 @@ var Detector = class {
|
|
|
47913
48033
|
}
|
|
47914
48034
|
return ga < gb ? `${ga}|${gb}` : `${gb}|${ga}`;
|
|
47915
48035
|
}
|
|
48036
|
+
/**
|
|
48037
|
+
* Re-run the narrowphase for a remembered shape pair and repopulate
|
|
48038
|
+
* `response` from it.
|
|
48039
|
+
*
|
|
48040
|
+
* The scan clears `response` on every test, so whichever pair won has to be
|
|
48041
|
+
* measured again before handlers and the solver read it. Indices are looked
|
|
48042
|
+
* up here rather than carried from the scan because an enumeration handler
|
|
48043
|
+
* may have mutated either body in between: `removeShape()` re-indexes, and
|
|
48044
|
+
* `destroy()` empties the array outright. A shape that is no longer on its
|
|
48045
|
+
* body has no contact left to resolve, so this reports failure and the
|
|
48046
|
+
* caller falls through instead of throwing.
|
|
48047
|
+
* @ignore
|
|
48048
|
+
* @returns {boolean} true when the pair was re-measured
|
|
48049
|
+
*/
|
|
48050
|
+
_retest(bodyA, bodyB, shapeA, shapeB, response) {
|
|
48051
|
+
const indexA = bodyA.shapes.indexOf(shapeA);
|
|
48052
|
+
const indexB = bodyB.shapes.indexOf(shapeB);
|
|
48053
|
+
if (indexA < 0 || indexB < 0) {
|
|
48054
|
+
return false;
|
|
48055
|
+
}
|
|
48056
|
+
const test = SAT_LOOKUP[shapeA.type + shapeB.type];
|
|
48057
|
+
if (test === void 0) {
|
|
48058
|
+
return false;
|
|
48059
|
+
}
|
|
48060
|
+
test.call(
|
|
48061
|
+
this,
|
|
48062
|
+
bodyA.ancestor,
|
|
48063
|
+
shapeA,
|
|
48064
|
+
bodyB.ancestor,
|
|
48065
|
+
shapeB,
|
|
48066
|
+
response.clear()
|
|
48067
|
+
);
|
|
48068
|
+
response.indexShapeA = indexA;
|
|
48069
|
+
response.indexShapeB = indexB;
|
|
48070
|
+
return true;
|
|
48071
|
+
}
|
|
48072
|
+
/**
|
|
48073
|
+
* Stable, order-independent key for one SHAPE pair (#1596).
|
|
48074
|
+
*
|
|
48075
|
+
* The renderable GUIDs order the pair, exactly as `_pairKey` does, and the
|
|
48076
|
+
* two shape ids MUST swap alongside them: keying `guidA|guidB|idA|idB`
|
|
48077
|
+
* without that swap gives the same physical contact two different keys
|
|
48078
|
+
* depending on which object the outer loop visited first, and the contact
|
|
48079
|
+
* would then End and Start every step.
|
|
48080
|
+
*
|
|
48081
|
+
* Shape identity is `_contactId`, stamped once in `Body#addShape` and never
|
|
48082
|
+
* derived from array position, because `removeShape()` re-indexes every
|
|
48083
|
+
* surviving shape.
|
|
48084
|
+
* @ignore
|
|
48085
|
+
*/
|
|
48086
|
+
_shapePairKey(a, b, shapeA, shapeB) {
|
|
48087
|
+
const ga = a.GUID;
|
|
48088
|
+
const gb = b.GUID;
|
|
48089
|
+
const sa = shapeA?._contactId;
|
|
48090
|
+
const sb = shapeB?._contactId;
|
|
48091
|
+
if (ga === void 0 || gb === void 0 || sa === void 0 || sb === void 0) {
|
|
48092
|
+
return void 0;
|
|
48093
|
+
}
|
|
48094
|
+
const left = `${ga}#${sa}`;
|
|
48095
|
+
const right = `${gb}#${sb}`;
|
|
48096
|
+
return left < right ? `${left}|${right}` : `${right}|${left}`;
|
|
48097
|
+
}
|
|
48098
|
+
/**
|
|
48099
|
+
* True when an object subscribes to any shape-contact event.
|
|
48100
|
+
*
|
|
48101
|
+
* This is the opt-in gate: `collides()` only runs the full M x N scan when
|
|
48102
|
+
* this returns true for one of the two objects, so an application that
|
|
48103
|
+
* never declares these handlers performs exactly the narrowphase work it
|
|
48104
|
+
* did before the feature existed.
|
|
48105
|
+
* @ignore
|
|
48106
|
+
*/
|
|
48107
|
+
_wantsShapeContacts(obj) {
|
|
48108
|
+
return typeof obj.onShapeCollisionStart === "function" || typeof obj.onShapeCollisionActive === "function" || typeof obj.onShapeCollisionEnd === "function";
|
|
48109
|
+
}
|
|
48110
|
+
/**
|
|
48111
|
+
* Populate a pooled shape-contact view, same flip convention as
|
|
48112
|
+
* `_fillSymView`: `flip=false` builds the view for `response.a`'s side,
|
|
48113
|
+
* `flip=true` for `response.b`'s, so `shapeA` is always the receiver's.
|
|
48114
|
+
* @ignore
|
|
48115
|
+
*/
|
|
48116
|
+
_fillShapeView(slot, satResponse, flip, shapeA, shapeB, isTrigger) {
|
|
48117
|
+
const view = this._shapeViews[slot];
|
|
48118
|
+
const oN = satResponse.overlapN;
|
|
48119
|
+
const oV = satResponse.overlapV;
|
|
48120
|
+
const oNZ = satResponse.overlapNZ;
|
|
48121
|
+
const oZ = satResponse.overlapZ;
|
|
48122
|
+
view.overlap = satResponse.overlap;
|
|
48123
|
+
view.depth = satResponse.overlap;
|
|
48124
|
+
view.isTrigger = isTrigger === true;
|
|
48125
|
+
if (flip) {
|
|
48126
|
+
view.a = satResponse.b;
|
|
48127
|
+
view.b = satResponse.a;
|
|
48128
|
+
view.shapeA = shapeB;
|
|
48129
|
+
view.shapeB = shapeA;
|
|
48130
|
+
view.indexShapeA = satResponse.indexShapeB;
|
|
48131
|
+
view.indexShapeB = satResponse.indexShapeA;
|
|
48132
|
+
view.overlapN.x = -oN.x;
|
|
48133
|
+
view.overlapN.y = -oN.y;
|
|
48134
|
+
view.overlapV.x = -oV.x;
|
|
48135
|
+
view.overlapV.y = -oV.y;
|
|
48136
|
+
view.overlapNZ = -oNZ;
|
|
48137
|
+
view.overlapZ = -oZ;
|
|
48138
|
+
view.normal.x = oN.x;
|
|
48139
|
+
view.normal.y = oN.y;
|
|
48140
|
+
view.normalZ = oNZ;
|
|
48141
|
+
} else {
|
|
48142
|
+
view.a = satResponse.a;
|
|
48143
|
+
view.b = satResponse.b;
|
|
48144
|
+
view.shapeA = shapeA;
|
|
48145
|
+
view.shapeB = shapeB;
|
|
48146
|
+
view.indexShapeA = satResponse.indexShapeA;
|
|
48147
|
+
view.indexShapeB = satResponse.indexShapeB;
|
|
48148
|
+
view.overlapN.x = oN.x;
|
|
48149
|
+
view.overlapN.y = oN.y;
|
|
48150
|
+
view.overlapV.x = oV.x;
|
|
48151
|
+
view.overlapV.y = oV.y;
|
|
48152
|
+
view.overlapNZ = oNZ;
|
|
48153
|
+
view.overlapZ = oZ;
|
|
48154
|
+
view.normal.x = -oN.x;
|
|
48155
|
+
view.normal.y = -oN.y;
|
|
48156
|
+
view.normalZ = -oNZ;
|
|
48157
|
+
}
|
|
48158
|
+
return view;
|
|
48159
|
+
}
|
|
48160
|
+
/**
|
|
48161
|
+
* Fire Start / Active for one overlapping shape pair. Called back from
|
|
48162
|
+
* `collides()` once per pair, in scan order.
|
|
48163
|
+
* @ignore
|
|
48164
|
+
*/
|
|
48165
|
+
_dispatchShapeContact(shapeA, shapeB, isTrigger, response) {
|
|
48166
|
+
const objA = this._contactObjA;
|
|
48167
|
+
const objB = this._contactObjB;
|
|
48168
|
+
const key = this._shapePairKey(objA, objB, shapeA, shapeB);
|
|
48169
|
+
if (key === void 0 || this._frameShapeSeen.has(key)) {
|
|
48170
|
+
return;
|
|
48171
|
+
}
|
|
48172
|
+
this._frameShapeSeen.set(key, [objA, objB, shapeA, shapeB]);
|
|
48173
|
+
const isEntry = !this._activeShapePairs.has(key);
|
|
48174
|
+
const viewA = this._fillShapeView(
|
|
48175
|
+
0,
|
|
48176
|
+
response,
|
|
48177
|
+
false,
|
|
48178
|
+
shapeA,
|
|
48179
|
+
shapeB,
|
|
48180
|
+
isTrigger
|
|
48181
|
+
);
|
|
48182
|
+
const viewB = this._fillShapeView(
|
|
48183
|
+
1,
|
|
48184
|
+
response,
|
|
48185
|
+
true,
|
|
48186
|
+
shapeA,
|
|
48187
|
+
shapeB,
|
|
48188
|
+
isTrigger
|
|
48189
|
+
);
|
|
48190
|
+
if (isEntry) {
|
|
48191
|
+
if (typeof objA.onShapeCollisionStart === "function") {
|
|
48192
|
+
objA.onShapeCollisionStart(viewA, objB);
|
|
48193
|
+
}
|
|
48194
|
+
if (typeof objB.onShapeCollisionStart === "function") {
|
|
48195
|
+
objB.onShapeCollisionStart(viewB, objA);
|
|
48196
|
+
}
|
|
48197
|
+
}
|
|
48198
|
+
if (typeof objA.onShapeCollisionActive === "function") {
|
|
48199
|
+
objA.onShapeCollisionActive(viewA, objB);
|
|
48200
|
+
}
|
|
48201
|
+
if (typeof objB.onShapeCollisionActive === "function") {
|
|
48202
|
+
objB.onShapeCollisionActive(viewB, objA);
|
|
48203
|
+
}
|
|
48204
|
+
}
|
|
48205
|
+
/**
|
|
48206
|
+
* Drop the references the enumeration callback reads.
|
|
48207
|
+
*
|
|
48208
|
+
* They are plain fields rather than a per-pair closure so the hot path
|
|
48209
|
+
* allocates nothing, which means they outlive the pair unless cleared, and
|
|
48210
|
+
* would hold two renderables (and everything they reach) against garbage
|
|
48211
|
+
* collection until the next subscribed pair happened to overwrite them.
|
|
48212
|
+
* @ignore
|
|
48213
|
+
*/
|
|
48214
|
+
_clearContactPair() {
|
|
48215
|
+
this._contactObjA = null;
|
|
48216
|
+
this._contactObjB = null;
|
|
48217
|
+
}
|
|
47916
48218
|
/**
|
|
47917
48219
|
* determine if two objects should collide (based on both respective objects body collision mask and type).<br>
|
|
47918
48220
|
* you can redefine this function if you need any specific rules over what should collide with what.
|
|
@@ -47931,9 +48233,12 @@ var Detector = class {
|
|
|
47931
48233
|
* @param {Body} bodyB - a reference to body B.
|
|
47932
48234
|
* @returns {boolean} true if colliding
|
|
47933
48235
|
*/
|
|
47934
|
-
collides(bodyA, bodyB, response = this.response) {
|
|
47935
|
-
|
|
47936
|
-
let
|
|
48236
|
+
collides(bodyA, bodyB, response = this.response, onContact = void 0) {
|
|
48237
|
+
const enumerate = onContact !== void 0;
|
|
48238
|
+
let solidShapeA = null;
|
|
48239
|
+
let solidShapeB = null;
|
|
48240
|
+
let triggerShapeA = null;
|
|
48241
|
+
let triggerShapeB = null;
|
|
47937
48242
|
for (let indexA = bodyA.shapes.length, shapeA; indexA--, shapeA = bodyA.shapes[indexA]; ) {
|
|
47938
48243
|
for (let indexB = bodyB.shapes.length, shapeB; indexB--, shapeB = bodyB.shapes[indexB]; ) {
|
|
47939
48244
|
if (shapeA.isActive === false || shapeB.isActive === false) {
|
|
@@ -47968,10 +48273,24 @@ var Detector = class {
|
|
|
47968
48273
|
// clear response object before reusing
|
|
47969
48274
|
response.clear()
|
|
47970
48275
|
) === true) {
|
|
47971
|
-
|
|
47972
|
-
|
|
47973
|
-
|
|
47974
|
-
|
|
48276
|
+
const pairIsTrigger = shapeA.isTrigger === true || shapeB.isTrigger === true;
|
|
48277
|
+
if (enumerate === true) {
|
|
48278
|
+
response.indexShapeA = indexA;
|
|
48279
|
+
response.indexShapeB = indexB;
|
|
48280
|
+
response.isTriggerContact = pairIsTrigger;
|
|
48281
|
+
onContact(shapeA, shapeB, pairIsTrigger, response);
|
|
48282
|
+
}
|
|
48283
|
+
if (pairIsTrigger) {
|
|
48284
|
+
if (triggerShapeA === null) {
|
|
48285
|
+
triggerShapeA = shapeA;
|
|
48286
|
+
triggerShapeB = shapeB;
|
|
48287
|
+
}
|
|
48288
|
+
continue;
|
|
48289
|
+
}
|
|
48290
|
+
if (enumerate === true) {
|
|
48291
|
+
if (solidShapeA === null) {
|
|
48292
|
+
solidShapeA = shapeA;
|
|
48293
|
+
solidShapeB = shapeB;
|
|
47975
48294
|
}
|
|
47976
48295
|
continue;
|
|
47977
48296
|
}
|
|
@@ -47981,22 +48300,15 @@ var Detector = class {
|
|
|
47981
48300
|
}
|
|
47982
48301
|
}
|
|
47983
48302
|
}
|
|
47984
|
-
if (
|
|
47985
|
-
const shapeA = bodyA.shapes[triggerIndexA];
|
|
47986
|
-
const shapeB = bodyB.shapes[triggerIndexB];
|
|
47987
|
-
SAT_LOOKUP[shapeA.type + shapeB.type].call(
|
|
47988
|
-
this,
|
|
47989
|
-
bodyA.ancestor,
|
|
47990
|
-
shapeA,
|
|
47991
|
-
bodyB.ancestor,
|
|
47992
|
-
shapeB,
|
|
47993
|
-
response.clear()
|
|
47994
|
-
);
|
|
47995
|
-
response.indexShapeA = triggerIndexA;
|
|
47996
|
-
response.indexShapeB = triggerIndexB;
|
|
47997
|
-
response.isTriggerContact = true;
|
|
48303
|
+
if (solidShapeA !== null && this._retest(bodyA, bodyB, solidShapeA, solidShapeB, response)) {
|
|
47998
48304
|
return true;
|
|
47999
48305
|
}
|
|
48306
|
+
if (triggerShapeA !== null) {
|
|
48307
|
+
if (this._retest(bodyA, bodyB, triggerShapeA, triggerShapeB, response)) {
|
|
48308
|
+
response.isTriggerContact = true;
|
|
48309
|
+
return true;
|
|
48310
|
+
}
|
|
48311
|
+
}
|
|
48000
48312
|
return false;
|
|
48001
48313
|
}
|
|
48002
48314
|
/**
|
|
@@ -48016,7 +48328,23 @@ var Detector = class {
|
|
|
48016
48328
|
boundsB.addBounds(objB.getBounds(), true);
|
|
48017
48329
|
boundsB.addBounds(objB.body.getBounds());
|
|
48018
48330
|
if (boundsA.overlaps(boundsB)) {
|
|
48019
|
-
|
|
48331
|
+
const wantsContacts = this._wantsShapeContacts(objA) || this._wantsShapeContacts(objB);
|
|
48332
|
+
let onContact;
|
|
48333
|
+
if (wantsContacts === true) {
|
|
48334
|
+
this._contactObjA = objA;
|
|
48335
|
+
this._contactObjB = objB;
|
|
48336
|
+
onContact = this._onShapeContact;
|
|
48337
|
+
}
|
|
48338
|
+
const didCollide = this.collides(
|
|
48339
|
+
objA.body,
|
|
48340
|
+
objB.body,
|
|
48341
|
+
this.response,
|
|
48342
|
+
onContact
|
|
48343
|
+
);
|
|
48344
|
+
if (wantsContacts === true) {
|
|
48345
|
+
this._clearContactPair();
|
|
48346
|
+
}
|
|
48347
|
+
if (didCollide) {
|
|
48020
48348
|
collisionCounter++;
|
|
48021
48349
|
const pairKey = this._pairKey(objA, objB);
|
|
48022
48350
|
const firstVisitThisFrame = pairKey !== void 0 && !this._frameSeen.has(pairKey);
|
|
@@ -50064,7 +50392,7 @@ var Trigger = class extends Renderable {
|
|
|
50064
50392
|
};
|
|
50065
50393
|
|
|
50066
50394
|
// src/version.ts
|
|
50067
|
-
var version = "20.
|
|
50395
|
+
var version = "20.1.0";
|
|
50068
50396
|
|
|
50069
50397
|
// src/system/bootstrap.ts
|
|
50070
50398
|
var initialized = false;
|