diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-04-24 16:36:49 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-04-24 16:36:49 -0400 |
| commit | 0e4bc72fe453797743d63f57db47ef3e0468fc65 (patch) | |
| tree | 31c8983117d7043ff2af5bc315691900ae80a592 /assets/javascripts/rectangles/engine/mover.js | |
| parent | 796e1194d13bfa16f41676d81f7d9cdb4b9fc96f (diff) | |
collide based on a radius
Diffstat (limited to 'assets/javascripts/rectangles/engine/mover.js')
| -rw-r--r-- | assets/javascripts/rectangles/engine/mover.js | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/assets/javascripts/rectangles/engine/mover.js b/assets/javascripts/rectangles/engine/mover.js index 311ed83..66c1813 100644 --- a/assets/javascripts/rectangles/engine/mover.js +++ b/assets/javascripts/rectangles/engine/mover.js @@ -13,26 +13,29 @@ var mover = new function(){ } base.update = function(pos){ + var radius = scene.camera.radius + cam.y = pos.y // if we were in a room already.. if (base.room) { // check if we're still in the room - if (base.room.rect.contains(pos.x, pos.z)) { + if (base.room.rect.containsDisc(pos.x, pos.z, radius)) { cam.x = pos.x cam.z = pos.z return } - + // check if we've breached one of the walls.. clamp position if so - var collision = base.room.collides(pos.x, pos.z) + var collision = base.room.collides(pos.x, pos.z, radius) + if (collision) { - if (! (collision & LEFT || collision & RIGHT)) { - cam.x = pos.x + if (! (collision & LEFT_RIGHT)) { + cam.x = base.room.rect.x.clampDisc(pos.x, radius) } - if (! (collision & FRONT || collision & BACK)) { - cam.z = pos.z + if (! (collision & FRONT_BACK)) { + cam.z = base.room.rect.y.clampDisc(pos.z, radius) } return } |
