excalibur 0.26.0-alpha.311 → 0.26.0-alpha.312

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 CHANGED
@@ -28,6 +28,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
28
28
 
29
29
  ### Fixed
30
30
 
31
+ - Fixed issue where fast moving `CompositeCollider`s were erroneously generating pairs for their constituent parts
31
32
  - Fixed Safari 13.1 crash when booting Excalibur because of they odd MediaQuery API in older Safari
32
33
  - Fixed issue where pointers did not work because of missing types
33
34
  - Fixed issue with `ArcadeSolver` where stacked/overlapped tiles would double solve the position of the collider for the same overlap
@@ -10,7 +10,7 @@ import { ExcaliburGraphicsContext } from '../..';
10
10
  */
11
11
  export declare class DynamicTreeCollisionProcessor implements CollisionProcessor {
12
12
  private _dynamicCollisionTree;
13
- private _collisions;
13
+ private _pairs;
14
14
  private _collisionPairCache;
15
15
  private _colliders;
16
16
  getColliders(): readonly Collider[];
@@ -22,7 +22,7 @@ export declare class DynamicTreeCollisionProcessor implements CollisionProcessor
22
22
  * Untracks a physics body
23
23
  */
24
24
  untrack(target: Collider): void;
25
- private _shouldGenerateCollisionPair;
25
+ private _pairExists;
26
26
  /**
27
27
  * Detects potential collision pairs in a broadphase approach with the dynamic aabb tree strategy
28
28
  */
@@ -14,7 +14,7 @@ import { CompositeCollider } from '../Colliders/CompositeCollider';
14
14
  export class DynamicTreeCollisionProcessor {
15
15
  constructor() {
16
16
  this._dynamicCollisionTree = new DynamicTree();
17
- this._collisions = new Set();
17
+ this._pairs = new Set();
18
18
  this._collisionPairCache = [];
19
19
  this._colliders = [];
20
20
  }
@@ -68,27 +68,10 @@ export class DynamicTreeCollisionProcessor {
68
68
  this._dynamicCollisionTree.untrackCollider(target);
69
69
  }
70
70
  }
71
- _shouldGenerateCollisionPair(colliderA, colliderB) {
72
- // if the collision pair must be 2 separate colliders
73
- // Also separate owners for composite colliders
74
- if ((colliderA.id !== null &&
75
- colliderB.id !== null &&
76
- colliderA.id === colliderB.id) ||
77
- (colliderA.owner !== null &&
78
- colliderB.owner !== null &&
79
- colliderA.owner === colliderB.owner)) {
80
- return false;
81
- }
71
+ _pairExists(colliderA, colliderB) {
82
72
  // if the collision pair has been calculated already short circuit
83
73
  const hash = Pair.calculatePairHash(colliderA.id, colliderB.id);
84
- if (this._collisions.has(hash)) {
85
- return false; // pair exists easy exit return false
86
- }
87
- // if the pair has a member with zero dimension
88
- if (colliderA.localBounds.hasZeroDimensions() || colliderB.localBounds.hasZeroDimensions()) {
89
- return false;
90
- }
91
- return Pair.canCollide(colliderA, colliderB);
74
+ return this._pairs.has(hash);
92
75
  }
93
76
  /**
94
77
  * Detects potential collision pairs in a broadphase approach with the dynamic aabb tree strategy
@@ -103,16 +86,16 @@ export class DynamicTreeCollisionProcessor {
103
86
  });
104
87
  // clear old list of collision pairs
105
88
  this._collisionPairCache = [];
106
- this._collisions.clear();
89
+ this._pairs.clear();
107
90
  // check for normal collision pairs
108
91
  let collider;
109
92
  for (let j = 0, l = potentialColliders.length; j < l; j++) {
110
93
  collider = potentialColliders[j];
111
94
  // Query the collision tree for potential colliders
112
95
  this._dynamicCollisionTree.query(collider, (other) => {
113
- if (this._shouldGenerateCollisionPair(collider, other)) {
96
+ if (!this._pairExists(collider, other) && Pair.canCollide(collider, other)) {
114
97
  const pair = new Pair(collider, other);
115
- this._collisions.add(pair.id);
98
+ this._pairs.add(pair.id);
116
99
  this._collisionPairCache.push(pair);
117
100
  }
118
101
  // Always return false, to query whole tree. Returning true in the query method stops searching
@@ -152,7 +135,7 @@ export class DynamicTreeCollisionProcessor {
152
135
  let minCollider;
153
136
  let minTranslate = new Vector(Infinity, Infinity);
154
137
  this._dynamicCollisionTree.rayCastQuery(ray, updateDistance + Physics.surfaceEpsilon * 2, (other) => {
155
- if (collider !== other && Pair.canCollide(collider, other)) {
138
+ if (!this._pairExists(collider, other) && Pair.canCollide(collider, other)) {
156
139
  const hitPoint = other.rayCast(ray, updateDistance + Physics.surfaceEpsilon * 10);
157
140
  if (hitPoint) {
158
141
  const translate = hitPoint.sub(origin);
@@ -166,8 +149,8 @@ export class DynamicTreeCollisionProcessor {
166
149
  });
167
150
  if (minCollider && Vector.isValid(minTranslate)) {
168
151
  const pair = new Pair(collider, minCollider);
169
- if (!this._collisions.has(pair.id)) {
170
- this._collisions.add(pair.id);
152
+ if (!this._pairs.has(pair.id)) {
153
+ this._pairs.add(pair.id);
171
154
  this._collisionPairCache.push(pair);
172
155
  }
173
156
  // move the fast moving object to the other body
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicTreeCollisionProcessor.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Detection/DynamicTreeCollisionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE;;;GAGG;AACH,MAAM,OAAO,6BAA6B;IAA1C;QACU,0BAAqB,GAAG,IAAI,WAAW,EAAY,CAAC;QACpD,gBAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QAEhC,wBAAmB,GAAW,EAAE,CAAC;QACjC,eAAU,GAAe,EAAE,CAAC;IAsOtC,CAAC;IApOQ,YAAY;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAgB;QAC3B,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACxD,OAAO;SACR;QACD,IAAI,MAAM,YAAY,iBAAiB,EAAE;YACvC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;gBACzB,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aAC7C;SACF;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SAClD;IACH,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,MAAgB;QAC7B,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC5D,OAAO;SACR;QAED,IAAI,MAAM,YAAY,iBAAiB,EAAE;YACvC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBAChB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAClC;gBACD,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;aAC/C;SACF;aAAM;YACL,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBAChB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAClC;YACD,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SACpD;IACH,CAAC;IAEO,4BAA4B,CAAC,SAAmB,EAAE,SAAmB;QAC3E,qDAAqD;QACrD,+CAA+C;QAC/C,IACE,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI;YACtB,SAAS,CAAC,EAAE,KAAK,IAAI;YACrB,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;YAC9B,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI;gBACxB,SAAS,CAAC,KAAK,KAAK,IAAI;gBACxB,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE;YACvC,OAAO,KAAK,CAAC;SACd;QAED,kEAAkE;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC9B,OAAO,KAAK,CAAC,CAAC,qCAAqC;SACpD;QAED,+CAA+C;QAC/C,IAAI,SAAS,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,SAAS,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE;YAC1F,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,OAAmB,EAAE,KAAa,EAAE,KAAkB;QACtE,MAAM,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;QAE7B,gFAAgF;QAChF,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;;YAClD,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,KAAK,0CAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7C,OAAO,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,MAAM,KAAI,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC,gBAAgB,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,oCAAoC;QACpC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAEzB,mCAAmC;QACnC,IAAI,QAAkB,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACzD,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACjC,mDAAmD;YACnD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAe,EAAE,EAAE;gBAC7D,IAAI,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;oBACtD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;oBACvC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrC;gBACD,+FAA+F;gBAC/F,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;SACJ;QACD,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;SACvD;QAED,6CAA6C;QAC7C,+EAA+E;QAC/E,IAAI,OAAO,CAAC,kBAAkB,EAAE;YAC9B,KAAK,MAAM,QAAQ,IAAI,kBAAkB,EAAE;gBACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC/C,wEAAwE;gBACxE,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC,MAAM,EAAE;oBAC/C,SAAS;iBACV;gBAED,qCAAqC;gBACrC,MAAM,cAAc,GAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,GAAG,gBAAgB;oBAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,WAAW;gBAEtD,6BAA6B;gBAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7E,IAAI,OAAO,CAAC,8BAA8B,IAAI,cAAc,GAAG,YAAY,GAAG,CAAC,EAAE;oBAC/E,IAAI,KAAK,EAAE;wBACT,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;qBAC5B;oBAED,gFAAgF;oBAChF,mFAAmF;oBACnF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;oBACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1D,MAAM,MAAM,GAAW,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAEpD,MAAM,GAAG,GAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;oBAE3C,mGAAmG;oBACnG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;oBAClE,IAAI,WAAqB,CAAC;oBAC1B,IAAI,YAAY,GAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAC1D,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,KAAe,EAAE,EAAE;wBAC5G,IAAI,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;4BAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;4BAClF,IAAI,QAAQ,EAAE;gCACZ,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gCACvC,IAAI,SAAS,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE;oCACtC,YAAY,GAAG,SAAS,CAAC;oCACzB,WAAW,GAAG,KAAK,CAAC;iCACrB;6BACF;yBACF;wBACD,OAAO,KAAK,CAAC;oBACf,CAAC,CAAC,CAAC;oBAEH,IAAI,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;wBAC/C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;wBAC7C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;4BAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;yBACrC;wBACD,gDAAgD;wBAChD,6DAA6D;wBAC7D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBAC7C,IAAI,CAAC,GAAG,GAAG,MAAM;6BACd,GAAG,CAAC,KAAK,CAAC;6BACV,GAAG,CAAC,YAAY,CAAC;6BACjB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,iDAAiD;wBACrG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAEhC,IAAI,KAAK,EAAE;4BACT,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;yBACpC;qBACF;iBACF;aACF;SACF;QACD,eAAe;QACf,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,KAAa,EAAE,KAAkB;QAClD,IAAI,QAAQ,GAAuB,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACvC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACxC,IAAI,KAAK,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE;oBAC3B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;iBACrC;aACF;SACF;QACD,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAC;SAC7C;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,OAAmB;QAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzD,OAAO,EAAE,CAAC;aACX;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,EAA4B;QACvC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"DynamicTreeCollisionProcessor.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Detection/DynamicTreeCollisionProcessor.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,11 @@ export declare class Pair {
9
9
  colliderB: Collider;
10
10
  id: string;
11
11
  constructor(colliderA: Collider, colliderB: Collider);
12
+ /**
13
+ * Returns whether a it is allowed for 2 colliders in a Pair to collide
14
+ * @param colliderA
15
+ * @param colliderB
16
+ */
12
17
  static canCollide(colliderA: Collider, colliderB: Collider): boolean;
13
18
  /**
14
19
  * Returns whether or not it is possible for the pairs to collide
@@ -10,10 +10,29 @@ export class Pair {
10
10
  this.id = null;
11
11
  this.id = Pair.calculatePairHash(colliderA.id, colliderB.id);
12
12
  }
13
+ /**
14
+ * Returns whether a it is allowed for 2 colliders in a Pair to collide
15
+ * @param colliderA
16
+ * @param colliderB
17
+ */
13
18
  static canCollide(colliderA, colliderB) {
14
19
  var _a, _b;
15
20
  const bodyA = (_a = colliderA === null || colliderA === void 0 ? void 0 : colliderA.owner) === null || _a === void 0 ? void 0 : _a.get(BodyComponent);
16
21
  const bodyB = (_b = colliderB === null || colliderB === void 0 ? void 0 : colliderB.owner) === null || _b === void 0 ? void 0 : _b.get(BodyComponent);
22
+ // Prevent self collision
23
+ if (colliderA.id === colliderB.id) {
24
+ return false;
25
+ }
26
+ // Colliders with the same owner do not collide (composite colliders)
27
+ if (colliderA.owner &&
28
+ colliderB.owner &&
29
+ colliderA.owner.id === colliderB.owner.id) {
30
+ return false;
31
+ }
32
+ // if the pair has a member with zero dimension don't collide
33
+ if (colliderA.localBounds.hasZeroDimensions() || colliderB.localBounds.hasZeroDimensions()) {
34
+ return false;
35
+ }
17
36
  // Body's needed for collision in the current state
18
37
  // TODO can we collide without a body?
19
38
  if (!bodyA || !bodyB) {
@@ -1 +1 @@
1
- {"version":3,"file":"Pair.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Detection/Pair.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD;;GAEG;AACH,MAAM,OAAO,IAAI;IAEf,YAAmB,SAAmB,EAAS,SAAmB;QAA/C,cAAS,GAAT,SAAS,CAAU;QAAS,cAAS,GAAT,SAAS,CAAU;QAD3D,OAAE,GAAW,IAAI,CAAC;QAEvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,SAAmB,EAAE,SAAmB;;QAC/D,MAAM,KAAK,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,0CAAE,GAAG,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,0CAAE,GAAG,CAAC,aAAa,CAAC,CAAC;QAEnD,mDAAmD;QACnD,sCAAsC;QACtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,wDAAwD;QACxD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACxC,OAAO,KAAK,CAAC;SACd;QAED,kCAAkC;QAClC,IAAI,KAAK,CAAC,aAAa,KAAK,aAAa,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa,KAAK,aAAa,CAAC,KAAK,EAAE;YAC9F,OAAO,KAAK,CAAC;SACd;QAED,mDAAmD;QACnD,IAAI,KAAK,CAAC,aAAa,KAAK,aAAa,CAAC,gBAAgB,IAAI,KAAK,CAAC,aAAa,KAAK,aAAa,CAAC,gBAAgB,EAAE;YACpH,OAAO,KAAK,CAAC;SACd;QAED,kCAAkC;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAClC,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,QAAkB;QACnC,OAAO,QAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC;IACpE,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB,CAAC,GAAmB,EAAE,GAAmB;QACtE,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE;YACzB,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;SACrC;aAAM;YACL,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;SACrC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"Pair.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Detection/Pair.ts"],"names":[],"mappings":"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"}
@@ -294,20 +294,22 @@ export class Loader extends Class {
294
294
  return this._resourceCount > 0 ? clamp(this._numLoaded, 0, this._resourceCount) / this._resourceCount : 1;
295
295
  }
296
296
  _positionPlayButton() {
297
- const screenHeight = this._engine.screen.viewport.height;
298
- const screenWidth = this._engine.screen.viewport.width;
299
- if (this._playButtonRootElement) {
300
- const left = this._engine.canvas.offsetLeft;
301
- const top = this._engine.canvas.offsetTop;
302
- const buttonWidth = this._playButton.clientWidth;
303
- const buttonHeight = this._playButton.clientHeight;
304
- if (this.playButtonPosition) {
305
- this._playButtonRootElement.style.left = `${this.playButtonPosition.x}px`;
306
- this._playButtonRootElement.style.top = `${this.playButtonPosition.y}px`;
307
- }
308
- else {
309
- this._playButtonRootElement.style.left = `${left + screenWidth / 2 - buttonWidth / 2}px`;
310
- this._playButtonRootElement.style.top = `${top + screenHeight / 2 - buttonHeight / 2 + 100}px`;
297
+ if (this._engine) {
298
+ const screenHeight = this._engine.screen.viewport.height;
299
+ const screenWidth = this._engine.screen.viewport.width;
300
+ if (this._playButtonRootElement) {
301
+ const left = this._engine.canvas.offsetLeft;
302
+ const top = this._engine.canvas.offsetTop;
303
+ const buttonWidth = this._playButton.clientWidth;
304
+ const buttonHeight = this._playButton.clientHeight;
305
+ if (this.playButtonPosition) {
306
+ this._playButtonRootElement.style.left = `${this.playButtonPosition.x}px`;
307
+ this._playButtonRootElement.style.top = `${this.playButtonPosition.y}px`;
308
+ }
309
+ else {
310
+ this._playButtonRootElement.style.left = `${left + screenWidth / 2 - buttonWidth / 2}px`;
311
+ this._playButtonRootElement.style.top = `${top + screenHeight / 2 - buttonHeight / 2 + 100}px`;
312
+ }
311
313
  }
312
314
  }
313
315
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../src/engine/Loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../src/engine/Loader.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * excalibur - 0.26.0-alpha.311+c19e8da - 2021-11-28
2
+ * excalibur - 0.26.0-alpha.312+df1acb3 - 2021-11-28
3
3
  * https://github.com/excaliburjs/Excalibur
4
4
  * Copyright (c) 2021 Excalibur.js <https://github.com/excaliburjs/Excalibur/graphs/contributors>
5
5
  * Licensed BSD-2-Clause
@@ -10678,20 +10678,22 @@ class Loader extends Class {
10678
10678
  return this._resourceCount > 0 ? clamp(this._numLoaded, 0, this._resourceCount) / this._resourceCount : 1;
10679
10679
  }
10680
10680
  _positionPlayButton() {
10681
- const screenHeight = this._engine.screen.viewport.height;
10682
- const screenWidth = this._engine.screen.viewport.width;
10683
- if (this._playButtonRootElement) {
10684
- const left = this._engine.canvas.offsetLeft;
10685
- const top = this._engine.canvas.offsetTop;
10686
- const buttonWidth = this._playButton.clientWidth;
10687
- const buttonHeight = this._playButton.clientHeight;
10688
- if (this.playButtonPosition) {
10689
- this._playButtonRootElement.style.left = `${this.playButtonPosition.x}px`;
10690
- this._playButtonRootElement.style.top = `${this.playButtonPosition.y}px`;
10691
- }
10692
- else {
10693
- this._playButtonRootElement.style.left = `${left + screenWidth / 2 - buttonWidth / 2}px`;
10694
- this._playButtonRootElement.style.top = `${top + screenHeight / 2 - buttonHeight / 2 + 100}px`;
10681
+ if (this._engine) {
10682
+ const screenHeight = this._engine.screen.viewport.height;
10683
+ const screenWidth = this._engine.screen.viewport.width;
10684
+ if (this._playButtonRootElement) {
10685
+ const left = this._engine.canvas.offsetLeft;
10686
+ const top = this._engine.canvas.offsetTop;
10687
+ const buttonWidth = this._playButton.clientWidth;
10688
+ const buttonHeight = this._playButton.clientHeight;
10689
+ if (this.playButtonPosition) {
10690
+ this._playButtonRootElement.style.left = `${this.playButtonPosition.x}px`;
10691
+ this._playButtonRootElement.style.top = `${this.playButtonPosition.y}px`;
10692
+ }
10693
+ else {
10694
+ this._playButtonRootElement.style.left = `${left + screenWidth / 2 - buttonWidth / 2}px`;
10695
+ this._playButtonRootElement.style.top = `${top + screenHeight / 2 - buttonHeight / 2 + 100}px`;
10696
+ }
10695
10697
  }
10696
10698
  }
10697
10699
  }
@@ -11676,10 +11678,29 @@ class Pair {
11676
11678
  this.id = null;
11677
11679
  this.id = Pair.calculatePairHash(colliderA.id, colliderB.id);
11678
11680
  }
11681
+ /**
11682
+ * Returns whether a it is allowed for 2 colliders in a Pair to collide
11683
+ * @param colliderA
11684
+ * @param colliderB
11685
+ */
11679
11686
  static canCollide(colliderA, colliderB) {
11680
11687
  var _a, _b;
11681
11688
  const bodyA = (_a = colliderA === null || colliderA === void 0 ? void 0 : colliderA.owner) === null || _a === void 0 ? void 0 : _a.get(BodyComponent);
11682
11689
  const bodyB = (_b = colliderB === null || colliderB === void 0 ? void 0 : colliderB.owner) === null || _b === void 0 ? void 0 : _b.get(BodyComponent);
11690
+ // Prevent self collision
11691
+ if (colliderA.id === colliderB.id) {
11692
+ return false;
11693
+ }
11694
+ // Colliders with the same owner do not collide (composite colliders)
11695
+ if (colliderA.owner &&
11696
+ colliderB.owner &&
11697
+ colliderA.owner.id === colliderB.owner.id) {
11698
+ return false;
11699
+ }
11700
+ // if the pair has a member with zero dimension don't collide
11701
+ if (colliderA.localBounds.hasZeroDimensions() || colliderB.localBounds.hasZeroDimensions()) {
11702
+ return false;
11703
+ }
11683
11704
  // Body's needed for collision in the current state
11684
11705
  // TODO can we collide without a body?
11685
11706
  if (!bodyA || !bodyB) {
@@ -12276,7 +12297,7 @@ class Ray {
12276
12297
  class DynamicTreeCollisionProcessor {
12277
12298
  constructor() {
12278
12299
  this._dynamicCollisionTree = new DynamicTree();
12279
- this._collisions = new Set();
12300
+ this._pairs = new Set();
12280
12301
  this._collisionPairCache = [];
12281
12302
  this._colliders = [];
12282
12303
  }
@@ -12330,27 +12351,10 @@ class DynamicTreeCollisionProcessor {
12330
12351
  this._dynamicCollisionTree.untrackCollider(target);
12331
12352
  }
12332
12353
  }
12333
- _shouldGenerateCollisionPair(colliderA, colliderB) {
12334
- // if the collision pair must be 2 separate colliders
12335
- // Also separate owners for composite colliders
12336
- if ((colliderA.id !== null &&
12337
- colliderB.id !== null &&
12338
- colliderA.id === colliderB.id) ||
12339
- (colliderA.owner !== null &&
12340
- colliderB.owner !== null &&
12341
- colliderA.owner === colliderB.owner)) {
12342
- return false;
12343
- }
12354
+ _pairExists(colliderA, colliderB) {
12344
12355
  // if the collision pair has been calculated already short circuit
12345
12356
  const hash = Pair.calculatePairHash(colliderA.id, colliderB.id);
12346
- if (this._collisions.has(hash)) {
12347
- return false; // pair exists easy exit return false
12348
- }
12349
- // if the pair has a member with zero dimension
12350
- if (colliderA.localBounds.hasZeroDimensions() || colliderB.localBounds.hasZeroDimensions()) {
12351
- return false;
12352
- }
12353
- return Pair.canCollide(colliderA, colliderB);
12357
+ return this._pairs.has(hash);
12354
12358
  }
12355
12359
  /**
12356
12360
  * Detects potential collision pairs in a broadphase approach with the dynamic aabb tree strategy
@@ -12365,16 +12369,16 @@ class DynamicTreeCollisionProcessor {
12365
12369
  });
12366
12370
  // clear old list of collision pairs
12367
12371
  this._collisionPairCache = [];
12368
- this._collisions.clear();
12372
+ this._pairs.clear();
12369
12373
  // check for normal collision pairs
12370
12374
  let collider;
12371
12375
  for (let j = 0, l = potentialColliders.length; j < l; j++) {
12372
12376
  collider = potentialColliders[j];
12373
12377
  // Query the collision tree for potential colliders
12374
12378
  this._dynamicCollisionTree.query(collider, (other) => {
12375
- if (this._shouldGenerateCollisionPair(collider, other)) {
12379
+ if (!this._pairExists(collider, other) && Pair.canCollide(collider, other)) {
12376
12380
  const pair = new Pair(collider, other);
12377
- this._collisions.add(pair.id);
12381
+ this._pairs.add(pair.id);
12378
12382
  this._collisionPairCache.push(pair);
12379
12383
  }
12380
12384
  // Always return false, to query whole tree. Returning true in the query method stops searching
@@ -12414,7 +12418,7 @@ class DynamicTreeCollisionProcessor {
12414
12418
  let minCollider;
12415
12419
  let minTranslate = new Vector(Infinity, Infinity);
12416
12420
  this._dynamicCollisionTree.rayCastQuery(ray, updateDistance + Physics.surfaceEpsilon * 2, (other) => {
12417
- if (collider !== other && Pair.canCollide(collider, other)) {
12421
+ if (!this._pairExists(collider, other) && Pair.canCollide(collider, other)) {
12418
12422
  const hitPoint = other.rayCast(ray, updateDistance + Physics.surfaceEpsilon * 10);
12419
12423
  if (hitPoint) {
12420
12424
  const translate = hitPoint.sub(origin);
@@ -12428,8 +12432,8 @@ class DynamicTreeCollisionProcessor {
12428
12432
  });
12429
12433
  if (minCollider && Vector.isValid(minTranslate)) {
12430
12434
  const pair = new Pair(collider, minCollider);
12431
- if (!this._collisions.has(pair.id)) {
12432
- this._collisions.add(pair.id);
12435
+ if (!this._pairs.has(pair.id)) {
12436
+ this._pairs.add(pair.id);
12433
12437
  this._collisionPairCache.push(pair);
12434
12438
  }
12435
12439
  // move the fast moving object to the other body
@@ -28836,7 +28840,7 @@ Promises_Promise = Promise_1 = Promises_decorate([
28836
28840
  * The current Excalibur version string
28837
28841
  * @description `process.env.__EX_VERSION` gets replaced by Webpack on build
28838
28842
  */
28839
- const EX_VERSION = "0.26.0-alpha.311+c19e8da";
28843
+ const EX_VERSION = "0.26.0-alpha.312+df1acb3";
28840
28844
 
28841
28845
  polyfill();
28842
28846
  // This file is used as the bundle entry point and exports everything