Skip to content

Commit

Permalink
Fix MBR narrow-phase collision logic
Browse files Browse the repository at this point in the history
The narrow phase collision check was always returning true for 'MBR' type collisions.
  • Loading branch information
starwed committed Jan 15, 2018
1 parent 7027c53 commit 0df60ac
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/spatial/collision.js
Original file line number Diff line number Diff line change
Expand Up @@ -532,7 +532,7 @@ Crafty.c("Collision", {
SAT.obj = obj;
SAT.type = "SAT";
}
} else if (Crafty.rectManager.overlap(area, this._cbr || this._mbr || this)){
} else if (Crafty.rectManager.overlap(area, obj._cbr || obj._mbr || obj)){
results.push({
obj: obj,
type: "MBR"
Expand Down
16 changes: 16 additions & 0 deletions tests/unit/spatial/collision.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,22 @@
_.ok('overlap' in results[0], "expected overlap value");
});

test("hit -- collision vs. non collision tests", function(_){
var e1 = Crafty.e("2D, Collision")
.attr({x: 0, y: 0, w: 2, h: 2});
var e2 = Crafty.e("2D")
.attr({x: 0, y: 0, w: 2, h: 2});
var results = e1.hit('2D');
_.strictEqual(results.length, 1, "exactly one collision");
_.strictEqual(results[0].type, "MBR", "expecdted MBR collision type");
_.strictEqual(results[0].obj[0], e2[0], "Expected collision with e2");

// Move e2 such that it should be returned by the broadphase search, but should not be considered a hit
e2.x=3;
var newResults = e1.hit('2D');
_.ok(!newResults, 0, "No collisions");
});

test("onHit", function(_) {
var e = Crafty.e("2D, Collision")
.attr({x: 0, y: 0, w: 25, h: 25});
Expand Down

0 comments on commit 0df60ac

Please sign in to comment.