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