summaryrefslogtreecommitdiff
path: root/assets/javascripts/rectangles/engine
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-04-22 18:39:14 -0400
committerJules Laplace <jules@okfoc.us>2014-04-22 18:39:14 -0400
commitf94cf0d133a5d426a20cb5ac7eeb60f72b690119 (patch)
treeb605578151d9d1118dc8921845d9bc205a6f1f3b /assets/javascripts/rectangles/engine
parentd08f365e4deb3206fd3361c7395268983510d831 (diff)
turn on gravity
Diffstat (limited to 'assets/javascripts/rectangles/engine')
-rw-r--r--assets/javascripts/rectangles/engine/builder.js10
-rw-r--r--assets/javascripts/rectangles/engine/clipper.js2
-rw-r--r--assets/javascripts/rectangles/engine/mover.js31
3 files changed, 40 insertions, 3 deletions
diff --git a/assets/javascripts/rectangles/engine/builder.js b/assets/javascripts/rectangles/engine/builder.js
index 2b8734a..8e1508a 100644
--- a/assets/javascripts/rectangles/engine/builder.js
+++ b/assets/javascripts/rectangles/engine/builder.js
@@ -1,6 +1,5 @@
var builder = new function(){
var base = this
- base.tube = new Tube ()
var els = []
@@ -9,7 +8,7 @@ var builder = new function(){
}
base.bind = function(){
- base.tube.on("clip", rebuild)
+ app.on("clip", rebuild)
}
function rebuild(){
@@ -20,6 +19,10 @@ var builder = new function(){
}
function build (){
clipper.rooms = sort_rooms_by_id(clipper.rooms)
+ clipper.rooms.forEach(function(r){
+ r.walls = []
+ r.floors = []
+ })
clipper.regions.forEach(function(r){
walls(r).forEach(function(el){
els.push(el)
@@ -203,6 +206,9 @@ var builder = new function(){
el.z = r.y.a + depth/2
el.rotationX = PI/2
el.el.style.backgroundColor = "#f00"
+
+ rm.floors.push(el)
+
return el
}
function ceiling(rm, r){
diff --git a/assets/javascripts/rectangles/engine/clipper.js b/assets/javascripts/rectangles/engine/clipper.js
index 79e44e5..bcd0586 100644
--- a/assets/javascripts/rectangles/engine/clipper.js
+++ b/assets/javascripts/rectangles/engine/clipper.js
@@ -18,7 +18,7 @@ var clipper = new function(){
base.update = function(){
clipper.solve_rects()
- builder.tube("clip")
+ app.tube("clip")
}
base.add_room = function(r){
diff --git a/assets/javascripts/rectangles/engine/mover.js b/assets/javascripts/rectangles/engine/mover.js
new file mode 100644
index 0000000..ebe4447
--- /dev/null
+++ b/assets/javascripts/rectangles/engine/mover.js
@@ -0,0 +1,31 @@
+var mover = new function(){
+
+ var base = this
+ var last_room = null
+
+ base.init = function(){
+ last_room = clipper.rooms[0]
+ base.bind()
+ }
+
+ base.bind = function(){
+ app.on("move", base.update)
+ }
+
+ base.update = function(pos){
+ if (last_room && last_room.rect.contains(pos.x, pos.z)) return;
+
+ var intersects = []
+ clipper.rooms.forEach(function(r){
+ if (r.rect.contains(pos.x, pos.z)) {
+ intersects.push(r)
+ }
+ })
+
+ if (intersects.length) {
+ $(".face.active").removeClass("active")
+ last_room = intersects[0]
+ }
+ }
+
+}