Skip to content

Commit c7cec16

Browse files
committed
optimise Detector.collisions
1 parent 49fbfba commit c7cec16

1 file changed

Lines changed: 7 additions & 11 deletions

File tree

src/collision/Detector.js

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,22 @@ var Bounds = require('../geometry/Bounds');
3939

4040
// mid phase
4141
if (Bounds.overlaps(bodyA.bounds, bodyB.bounds)) {
42-
for (var j = bodyA.parts.length > 1 ? 1 : 0; j < bodyA.parts.length; j++) {
42+
var partsALength = bodyA.parts.length,
43+
partsBLength = bodyB.parts.length;
44+
45+
for (var j = partsALength > 1 ? 1 : 0; j < partsALength; j++) {
4346
var partA = bodyA.parts[j];
4447

45-
for (var k = bodyB.parts.length > 1 ? 1 : 0; k < bodyB.parts.length; k++) {
48+
for (var k = partsBLength > 1 ? 1 : 0; k < partsBLength; k++) {
4649
var partB = bodyB.parts[k];
4750

4851
if ((partA === bodyA && partB === bodyB) || Bounds.overlaps(partA.bounds, partB.bounds)) {
4952
// find a previous collision we could reuse
5053
var pairId = Pair.id(partA, partB),
51-
pair = pairsTable[pairId],
52-
previousCollision;
53-
54-
if (pair && pair.isActive) {
55-
previousCollision = pair.collision;
56-
} else {
57-
previousCollision = null;
58-
}
54+
pair = pairsTable[pairId];
5955

6056
// narrow phase
61-
var collision = SAT.collides(partA, partB, previousCollision);
57+
var collision = SAT.collides(partA, partB, pair && pair.isActive ? pair.collision : null);
6258

6359
if (collision.collided) {
6460
collisions.push(collision);

0 commit comments

Comments
 (0)