diff options
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/rooms/builder.js')
| -rw-r--r-- | public/assets/javascripts/rectangles/engine/rooms/builder.js | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/builder.js b/public/assets/javascripts/rectangles/engine/rooms/builder.js index 492a8c6..c1cba39 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/builder.js +++ b/public/assets/javascripts/rectangles/engine/rooms/builder.js @@ -149,22 +149,17 @@ this.build_floors = function (room){ var list = [], el = null - + var constructed = room.intersects.filter(function(room){ return room.constructed }) sort.rooms_by_height(constructed) - + if (constructed.length > 0) { // render the regions that don't intersect with anything we've already rendered // if the height is different, calculate the overlapping sides and render half-walls room.regions.forEach(function(region){ var intersected = false for (var i = 0; i < constructed.length; i++) { - if (constructed[i].rect.contains(region)) { - intersected = true - // r.sides = 0xf - // half_sides - } - else if (constructed[i].rect.intersects(region)) { + if (constructed[i].rect.overlaps(region)) { intersected = true if (room.height < constructed[i].height) { var ceiling_walls = this.make_ceiling_walls( room, constructed[i], region ) @@ -181,7 +176,7 @@ list.push( el ) room.mx_ceiling.push(el) } - }) + }.bind(this)) } else { @@ -206,7 +201,7 @@ var depth = region.y.length() var height = hi.height - lo.height - if (! (region.half_sides & LEFT) && region.x.a == hi.rect.x.a) { + if (! (region.half_sides & LEFT) && region.x.a != lo.rect.x.a && region.x.a == hi.rect.x.a) { el = this.make_wall('.left') el.rotationY = HALF_PI el.height = height @@ -221,7 +216,8 @@ el.half_side = LEFT } - if (! (region.half_sides & RIGHT) && region.x.b == hi.rect.x.b) { + if (! (region.half_sides & RIGHT) && region.x.b != lo.rect.x.b && region.x.b == hi.rect.x.b) { +console.log("right") el = this.make_wall('.right') el.rotationY = -HALF_PI el.height = height @@ -236,7 +232,8 @@ el.half_side = RIGHT } - if (! (region.half_sides & FRONT) && region.y.a == hi.rect.y.a) { + if (! (region.half_sides & FRONT) && region.y.a != lo.rect.y.a && region.y.a == hi.rect.y.a) { +console.log("front") el = this.make_wall('.front') el.width = width el.height = height @@ -251,7 +248,8 @@ el.half_side = FRONT } - if (! (region.half_sides & BACK) && region.y.b == hi.rect.y.b) { + if (! (region.half_sides & BACK) && region.y.b != lo.rect.y.b && region.y.b == hi.rect.y.b) { +console.log("back") el = this.make_wall('.back') el.width = width el.height = height |
