@@ -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 | |||
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 | |||
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"; | |||
}; | |||
} | |||
}; | |||
} | |||
); | |||