var vec = require("../../../public/assets/javascripts/rectangles/models/vec2.js") var Rect = require("../../../public/assets/javascripts/rectangles/models/rect.js") var Room = require("../../../public/assets/javascripts/rectangles/models/room.js") var Rooms = require("../../../public/assets/javascripts/rectangles/engine/rooms/_rooms.js") var Clipper = require("../../../public/assets/javascripts/rectangles/engine/rooms/clipper.js") var Builder = require("../../../public/assets/javascripts/rectangles/engine/rooms/builder.js") var Grouper = require("../../../public/assets/javascripts/rectangles/engine/rooms/grouper.js") var Walls = require("../../../public/assets/javascripts/rectangles/engine/rooms/_walls.js") /* jshint node: true */ var _ = require('lodash'), util = require('../util'), upload = require('../upload'), config = require('../../../config.json'), Project = require('../schemas/Project'); var rooms = module.exports = { show: function(req, res){ Project.findOne({ slug: req.params.slug }, function(err, doc){ if (! doc) { res.json({ status: 404 }); return } doc = doc.toObject() doc.rooms.forEach(function(data){ var rect = new Rect(data.rect.x[0], data.rect.y[0], data.rect.x[1], data.rect.y[1]) var room = new Room({ id: data.id, rect: rect, height: data.height }) Rooms.add(room) }) Rooms.clipper.solve_rects() Rooms.builder.build() var walls = [], mx_walls = [], mx_floor = [], mx_ceiling = [] var collections = Rooms.grouper.collect() Rooms.grouper.cull(collections) Rooms.grouper.group(walls, collections, FRONT) Rooms.grouper.group(walls, collections, BACK) Rooms.grouper.group(walls, collections, LEFT) Rooms.grouper.group(walls, collections, RIGHT) walls.forEach(function(wall){ wall.mx.forEach(function(mx){ var data = mx.report() data.id = wall.id mx_walls.push(data) }) }) doc.mx_walls = mx_walls doc.mx_floor = mx_floor doc.mx_ceiling = mx_ceiling Rooms.forEach(function(room){ room.mx_floor.forEach(function(mx){ mx_floor.push( mx.report() ) }) room.mx_ceiling.forEach(function(mx){ mx_ceiling.push( mx.report() ) }) }) // Walls.deserialize(doc.walls) // data.media && Scenery.deserialize(data.media) res.json(doc) return }) } }