@@ -0,0 +1,44 @@ | |||||
define(["three", "orbitcontrols", "message"], function() { | |||||
return { | |||||
construct: function() { | |||||
this.renderer = new THREE.WebGLRenderer(); | |||||
this.renderer.setSize(window.innerWidth, window.innerHeight); | |||||
this.renderer.setClearColor(0xffffff, 1); | |||||
document.querySelector("body").appendChild(this.renderer.domElement); | |||||
window.addEventListener("resize", this.onWindowResize, false); | |||||
this.makeScene(); | |||||
this.camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.3, 1000); | |||||
this.controls = new THREE.OrbitControls(this.camera); | |||||
this.controls.center.set(0, 0, 0); | |||||
this.controls.rotateSpeed = 0.2; | |||||
this.camera.position.set(0, 0, 20); | |||||
this.controls.addEventListener("change", this.render); | |||||
}, | |||||
// Someone resized the window | |||||
onWindowResize: function(evt) { | |||||
this.camera.aspect = window.innerWidth / window.innerHeight; | |||||
this.camera.updateProjectionMatrix(); | |||||
this.renderer.setSize(window.innerWidth, window.innerHeight); | |||||
this.render(); | |||||
}, | |||||
// Render the current frame to the screen | |||||
render: function() { | |||||
this.renderer.render(this.scene, this.camera); | |||||
}, | |||||
// Make the extra bits of gui | |||||
makeScene: function() { | |||||
this.scene = new THREE.Scene(); | |||||
var grid = new THREE.GridHelper(10, 1); | |||||
grid.rotation.x = Math.PI / 2; | |||||
grid.setColors(0xdddddd, 0xeeeeee); | |||||
this.scene.add(grid); | |||||
} | |||||
}; | |||||
}); |
@@ -1,55 +1,10 @@ | |||||
// Import modules | // Import modules | ||||
requirejs(["anders_briegel", "three", "orbitcontrols", "graph"], init); | |||||
var controls, renderer, raycaster, scene, selection, camera; | |||||
// Clear the whole scene | |||||
function makeScene() { | |||||
var myScene = new THREE.Scene(); | |||||
var grid = new THREE.GridHelper(10, 1); | |||||
grid.rotation.x = Math.PI / 2; | |||||
grid.setColors(0xdddddd, 0xeeeeee); | |||||
myScene.add(grid); | |||||
return myScene; | |||||
} | |||||
// Render the current frame to the screen | |||||
function render() { | |||||
requestAnimationFrame(function() { | |||||
renderer.render(scene, camera); | |||||
}); | |||||
} | |||||
// Someone resized the window | |||||
function onWindowResize(evt) { | |||||
camera.aspect = window.innerWidth / window.innerHeight; | |||||
camera.updateProjectionMatrix(); | |||||
renderer.setSize(window.innerWidth, window.innerHeight); | |||||
render(); | |||||
} | |||||
function constructDisplay(){ | |||||
// Renderer | |||||
renderer = new THREE.WebGLRenderer(); | |||||
renderer.setSize(window.innerWidth, window.innerHeight); | |||||
renderer.setClearColor(0xffffff, 1); | |||||
document.querySelector("body").appendChild(renderer.domElement); | |||||
window.addEventListener("resize", onWindowResize, false); | |||||
// Camera, controls, raycaster | |||||
camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.3, 1000); | |||||
controls = new THREE.OrbitControls(camera); | |||||
controls.center.set(0, 0, 0); | |||||
controls.rotateSpeed = 0.2; | |||||
camera.position.set(0, 0, 20); | |||||
controls.addEventListener("change", render); | |||||
} | |||||
requirejs(["anders_briegel", "gui"], init); | |||||
var ab; | |||||
// Called on startup | // Called on startup | ||||
function init() { | |||||
constructDisplay(); | |||||
scene = makeScene(); | |||||
connectToServer(); | |||||
render(); | |||||
function init(anders_briegel, gui) { | |||||
ab = anders_briegel; | |||||
gui.construct(); | |||||
gui.render(); | |||||
} | } |
@@ -0,0 +1 @@ | |||||
define({}); |
@@ -0,0 +1,33 @@ | |||||
define(["message"], function(message){ | |||||
return { | |||||
bindEvents: function(update){ | |||||
var ws = new WebSocket("ws://localhost:5000"); | |||||
ws.onopen = function(evt) | |||||
{ | |||||
message.innerHTML = "Connected to server."; | |||||
message.className = "visible"; | |||||
}; | |||||
ws.onerror = function(err) | |||||
{ | |||||
message.innerHTML = "Could not connect to server."; | |||||
message.className = "visible"; | |||||
}; | |||||
ws.onmessage = function (evt) | |||||
{ | |||||
console.log("Received update"); | |||||
update(JSON.parse(evt.data)); | |||||
}; | |||||
ws.onclose = function(evt) | |||||
{ | |||||
message.innerHTML = "Connection to server lost. <a href='#' onclick='javascript:connect_to_server()'>Reconnect</a>."; | |||||
message.className = "visible"; | |||||
}; | |||||
} | |||||
}; | |||||
} | |||||
); | |||||