var builder = new function(){ var base = this base.tube = new Tube () var els = [] base.init = function(){ base.bind() } base.bind = function(){ base.tube.on("clip", rebuild) } base.wheel = new wheel({ el: document.querySelector("#map"), update: function(e, val, delta){ console.log(e.clientX, e.clientY, delta) } }) function rebuild(){ if (window.scene) { clear() build() } } function build (){ clipper.regions.forEach(function(r){ walls(r).forEach(function(el){ els.push(el) scene.add(el) }) }) } function clear (){ els.forEach(function(el){ scene.remove(el) }) els = [] } function walls (r){ var list = [], el = null var width = r.x.length() var depth = r.y.length() var height = clipper.rooms[r.id].height if (r.sides & FRONT) { el = wall('.front') el.width = width el.height = height el.rotationY = PI el.x = r.x.a + width/2 el.z = r.y.a list.push(el) } if (r.sides & BACK) { var el = wall('.back') el.width = width el.height = height el.rotationY = 0 el.x = r.x.b - width/2 el.z = r.y.b list.push(el) } if (r.sides & LEFT) { el = wall('.left') el.rotationY = HALF_PI el.height = height el.width = depth el.x = r.x.a el.z = r.y.a + depth/2 list.push(el) } if (r.sides & RIGHT) { el = wall('.right') el.rotationY = -HALF_PI el.height = height el.width = depth el.x = r.x.b el.z = r.y.b - depth/2 list.push(el) } el = wall('.bottom') el.height = depth el.width = width el.x = r.x.a + width/2 el.y = 0 el.z = r.y.a + depth/2 el.rotationX = PI/2 el.el.style.backgroundColor = "#f00" list.push(el) if (r.sides != 0) { el = wall('.top') el.height = depth el.width = width el.x = r.x.a + width/2 el.y = height el.z = r.y.a + depth/2 el.rotationX = -PI/2 el.el.style.backgroundColor = "#00f" list.push(el) } function wall(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.y = height/2 el.type = "Face" el.el.style.opacity = 1.0 return el } return list } }