diff options
| author | Julie Lala <jules@okfoc.us> | 2014-04-27 00:45:27 -0400 |
|---|---|---|
| committer | Julie Lala <jules@okfoc.us> | 2014-04-27 00:45:27 -0400 |
| commit | fb7405f016f9f26b0fc81fb8a26dacd2b2350fa0 (patch) | |
| tree | a11f4a8b5a70ec226498e809405f8a6749438073 | |
| parent | 1b06bfa4b67747229c3283a9466047b1daece035 (diff) | |
a little easing
| -rw-r--r-- | assets/javascripts/rectangles/engine/builder.js | 11 | ||||
| -rw-r--r-- | assets/javascripts/rectangles/models/rect.js | 2 | ||||
| -rw-r--r-- | assets/javascripts/rectangles/models/room.js | 25 | ||||
| -rw-r--r-- | assets/javascripts/rectangles/models/wall.js | 13 | ||||
| -rw-r--r-- | assets/javascripts/rectangles/util/sort.js | 19 | ||||
| -rw-r--r-- | assets/javascripts/util.js | 10 | ||||
| -rw-r--r-- | rectangles.html | 1 |
7 files changed, 70 insertions, 11 deletions
diff --git a/assets/javascripts/rectangles/engine/builder.js b/assets/javascripts/rectangles/engine/builder.js index 3452ecc..d5caeee 100644 --- a/assets/javascripts/rectangles/engine/builder.js +++ b/assets/javascripts/rectangles/engine/builder.js @@ -1,3 +1,4 @@ + var builder = new function(){ var base = this @@ -69,6 +70,7 @@ var builder = new function(){ el.x = region.x.a + width/2 el.y = height/2 el.z = region.y.a + el.side = FRONT room.walls.push(el) list.push(el) } @@ -80,6 +82,7 @@ var builder = new function(){ el.x = region.x.b - width/2 el.y = height/2 el.z = region.y.b + el.side = BACK room.walls.push(el) list.push(el) } @@ -91,6 +94,7 @@ var builder = new function(){ el.x = region.x.a el.y = height/2 el.z = region.y.a + depth/2 + el.side = LEFT room.walls.push(el) list.push(el) } @@ -102,6 +106,7 @@ var builder = new function(){ el.x = region.x.b el.y = height/2 el.z = region.y.b - depth/2 + el.side = RIGHT room.walls.push(el) list.push(el) } @@ -232,6 +237,7 @@ var builder = new function(){ el.y = 0 el.z = region.y.a + depth/2 el.rotationX = PI/2 + el.side = FLOOR return el } function make_ceiling(room, region){ @@ -246,15 +252,18 @@ var builder = new function(){ el.y = height el.z = region.y.a + depth/2 el.rotationX = -PI/2 + el.side = CEILING return el } - function make_wall(klass){ + function make_wall(room, klass){ var el = new MX.Object3D(".face" + (klass || "")) el.width = el.height = el.scaleX = el.scaleY = el.scaleZ = 1 el.z = el.y = el.x = 0 + el.side = 0 el.type = "Face" el.el.style.opacity = 1.0 + el.side = 0 return el } diff --git a/assets/javascripts/rectangles/models/rect.js b/assets/javascripts/rectangles/models/rect.js index 2d48e13..a5ae9bf 100644 --- a/assets/javascripts/rectangles/models/rect.js +++ b/assets/javascripts/rectangles/models/rect.js @@ -1,5 +1,3 @@ -var FRONT = 0x1, BACK = 0x2, LEFT = 0x4, RIGHT = 0x8, - FRONT_BACK = FRONT | BACK, LEFT_RIGHT = LEFT | RIGHT function sidesToString(sides){ var s = "" diff --git a/assets/javascripts/rectangles/models/room.js b/assets/javascripts/rectangles/models/room.js index c26efa9..34eed6a 100644 --- a/assets/javascripts/rectangles/models/room.js +++ b/assets/javascripts/rectangles/models/room.js @@ -1,3 +1,6 @@ +var FRONT = 0x1, BACK = 0x2, LEFT = 0x4, RIGHT = 0x8, FLOOR = 0x10, CEILING = 0x20 + FRONT_BACK = FRONT | BACK, LEFT_RIGHT = LEFT | RIGHT, FLOOR_CEILING = FLOOR | CEILING + window.Room = (function(){ var Room = function(opt){ @@ -48,9 +51,27 @@ window.Room = (function(){ }) } - Room.prototype.add_wall = function(){ - } + Room.prototype.group_walls = function(){ + var base = this + var array_groups = {}, rect_groups = [] + + sort_wall_els_by_x_then_z(base.walls) + + base.walls.forEach(function(wall){ + var w = array_groups[ wall.side ] + if (w) { + w.forEach(function(ww){ + + }) + } + else { + array_groups[ wall.side ] = [[wall]] + } + }) + return groups + } + Room.prototype.clipTo = function(r){ // for each of this rect's regions split the region if necessary var regions = this.regions diff --git a/assets/javascripts/rectangles/models/wall.js b/assets/javascripts/rectangles/models/wall.js index e25d2dd..b9705a2 100644 --- a/assets/javascripts/rectangles/models/wall.js +++ b/assets/javascripts/rectangles/models/wall.js @@ -1,20 +1,21 @@ -window.wall = (function(){ +window.Wall = (function(){ - var wall = function(opt){ + var Wall = function(opt){ this.id = opt.id this.room = opt.room this.rect = opt.rect this.mx = [] + this.els = [] } - wall.prototype.toString = function(){ + Wall.prototype.toString = function(){ return this.rect.toString() } - wall.prototype.reset = function(){ + Wall.prototype.reset = function(){ } - wall.prototype.bind = function(){ + Wall.prototype.bind = function(){ this.$walls.bind({ mouseover: function(){ }, @@ -26,6 +27,6 @@ window.wall = (function(){ }) } - return wall + return Wall })() diff --git a/assets/javascripts/rectangles/util/sort.js b/assets/javascripts/rectangles/util/sort.js index e53a09c..008e20a 100644 --- a/assets/javascripts/rectangles/util/sort.js +++ b/assets/javascripts/rectangles/util/sort.js @@ -57,3 +57,22 @@ function sort_rects_by_area(list){ .sort(compare_rect_area) .map(function(r){ return r[1] }) } + + +function sort_wall_els_by_x_then_z(list){ + return list.sort(function(a,b){ + return sort_wall_els_by_x(a,b) || sort_wall_els_by_z(a,b) + }) +} + +function sort_wall_els_by_z(list){ + return list.sort(function(a,b){ + return a.z < b.z ? -1 : a.z == b.z ? 0 : 1 + }) +} +function sort_wall_els_by_x(a){ + return list.sort(function(a,b){ + return a.x < b.x ? -1 : a.x == b.x ? 0 : 1 + }) +} + diff --git a/assets/javascripts/util.js b/assets/javascripts/util.js index 89889c4..64bda4d 100644 --- a/assets/javascripts/util.js +++ b/assets/javascripts/util.js @@ -149,6 +149,16 @@ function smarten(a) { return a }; + +function pairs(h){ + var a = [] + for (var i in h) { + if(h.hasOwnProperty(i)) { + a.push([i, h[i]]) + } + } + return a +} function invert_hash (h) { var k = {} for (var i in h) { if (h.hasOwnProperty(i)) k[h[i]] = i } diff --git a/rectangles.html b/rectangles.html index d2b1330..ab36bf2 100644 --- a/rectangles.html +++ b/rectangles.html @@ -17,6 +17,7 @@ body > div { } .face { background-color: #fff; + transition: 0.1s ease; } .front { background-color: #ddd; } .back { background-color: #bbb; } |
