diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-04-23 17:43:09 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-04-23 17:43:09 -0400 |
| commit | 7c82721449b09496ad4e33c04513e4253482f457 (patch) | |
| tree | 24b783981dcc0d1b188227d079ea13042895440e /assets/javascripts/rectangles/models | |
| parent | 1282559bffc1acbc99a22ecfef44227eefbc9817 (diff) | |
basic collision detection
Diffstat (limited to 'assets/javascripts/rectangles/models')
| -rw-r--r-- | assets/javascripts/rectangles/models/room.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/assets/javascripts/rectangles/models/room.js b/assets/javascripts/rectangles/models/room.js index 3ccf1fb..c760174 100644 --- a/assets/javascripts/rectangles/models/room.js +++ b/assets/javascripts/rectangles/models/room.js @@ -40,7 +40,35 @@ window.room = (function(){ } this.regions = regions } + + room.prototype.collides = function(x,y){ + var collision = 0 + this.regions.forEach(function(r){ + if (! r.sides) return + + if ((r.sides & FRONT) && y < r.y.a && r.x.contains(x)) { + collision |= FRONT + } + if ((r.sides & BACK) && r.y.b < y && r.x.contains(x)) { + collision |= BACK + } + if ((r.sides & LEFT) && x < r.x.a && r.y.contains(y)) { + collision |= LEFT + } + if ((r.sides & RIGHT) && r.x.b < x && r.y.contains(y)) { + collision |= RIGHT + } + }) + return collision + } return room })() + +function bitcount(v) { + v = v - ((v >>> 1) & 0x55555555); + v = (v & 0x33333333) + ((v >>> 2) & 0x33333333); + return ((v + (v >>> 4) & 0xF0F0F0F) * 0x1010101) >>> 24; +} + |
