This repository has been archived on 2026-10-23. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
indoor-map/index.js
T
2014-05-28 21:26:25 +02:00

81 lines
2.1 KiB
JavaScript

var cubes = [];
var scene = new THREE.Scene();
//var sceneWidth = 1000;
//var sceneHeight = 1000;
var smallestSize = Math.min(window.innerWidth, window.innerHeight);
var sceneWidth = smallestSize;
var sceneHeight = smallestSize;
var camera = new THREE.PerspectiveCamera( 75, sceneHeight / sceneWidth, 0.1, 2500 );
var renderer = new THREE.WebGLRenderer({ alpha: true, antialias: true});
renderer.setSize(sceneWidth, sceneHeight);
document.body.appendChild( renderer.domElement );
// material
var green_color = 0x00ff00;
var red_color = 0xff0000;
var material = new THREE.MeshBasicMaterial( { color: green_color, wireframe: true } );
var red_material = new THREE.MeshBasicMaterial( { color: red_color } );
// rooms
var room_height = 120;
function render() {
var i = 0;
requestAnimationFrame(render);
for(i=0; i<scene.children.length; i++) {
var cube = scene.children[i];
//cube.rotation.z += 0.01;
}
renderer.render(scene, camera);
}
function add_rooms(rooms, floor) {
for(i=0; i<rooms.length; i++) {
var room = rooms[i];
var cube;
// geometry
var geometry = new THREE.BoxGeometry(room.dimensions.width, room.dimensions.height, room_height);
if(typeof room.number == "object" && (room.number.indexOf("428") > -1 || room.number.indexOf("429") > -1) ) {
// KAK
cube = new THREE.Mesh( geometry, red_material );
} else {
cube = new THREE.Mesh( geometry, material );
}
cube.position.x = room.position.x + room.dimensions.width / 2;
cube.position.y = room.position.y * -1 - room.dimensions.height / 2; // FIXME why flipped?
cube.position.z = floor;
cube.name = room.number;
cubes.push(cube);
scene.add( cube );
}
}
function onRoomData(data) {
var i = 0;
var rooms = data.rooms;
add_rooms(rooms, 0);
add_rooms(rooms, room_height * 2); // FIXME: play
camera.position.z = 400;
camera.position.x = 450;
camera.position.y = -1600;
camera.rotation.x = 60 * (Math.PI / 180);
//camera.lookAt(scene.position);
render();
}
// load rooms
$.getJSON("/data/rooms.json", onRoomData);