From 893933c1d136ecfe44b2237683b051c7a01d05df Mon Sep 17 00:00:00 2001 From: lostfictions Date: Sat, 16 May 2020 22:13:27 -0400 Subject: [PATCH] minimal "kinematic bodies" support - support collision events when static bodies overlap static sensors - support collision events when static bodies overlap sleeping bodies --- src/collision/Detector.js | 2 +- src/collision/Grid.js | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/collision/Detector.js b/src/collision/Detector.js index dfbf5dd2..54ea3c3b 100644 --- a/src/collision/Detector.js +++ b/src/collision/Detector.js @@ -35,7 +35,7 @@ var Bounds = require('../geometry/Bounds'); var bodyA = broadphasePairs[i][0], bodyB = broadphasePairs[i][1]; - if ((bodyA.isStatic || bodyA.isSleeping) && (bodyB.isStatic || bodyB.isSleeping)) + if (bodyA.isSleeping && bodyB.isSleeping) continue; if (!Detector.canCollide(bodyA.collisionFilter, bodyB.collisionFilter)) diff --git a/src/collision/Grid.js b/src/collision/Grid.js index 4acff1ef..3133a632 100644 --- a/src/collision/Grid.js +++ b/src/collision/Grid.js @@ -243,7 +243,10 @@ var Common = require('../core/Common'); for (var i = 0; i < bucket.length; i++) { var bodyB = bucket[i]; - if (body.id === bodyB.id || (body.isStatic && bodyB.isStatic)) + if (body.id === bodyB.id) + continue; + + if (body.isStatic && bodyB.isStatic && !(body.isSensor || bodyB.isSensor)) continue; // keep track of the number of buckets the pair exists in