diff --git a/third_party/app.js b/third_party/app.js index 111bc801..1ed7e08d 100644 --- a/third_party/app.js +++ b/third_party/app.js @@ -11,30 +11,30 @@ var APP = { var events = {}; - var dom = document.createElement( 'div' ); + var dom = document.createElement('div'); this.dom = dom; this.width = 500; this.height = 500; - this.load = function ( json ) { + this.load = function (json) { - renderer = new THREE.WebGLRenderer( { antialias: true } ); - renderer.setClearColor( 0x000000 ); - renderer.setPixelRatio( window.devicePixelRatio ); + renderer = new THREE.WebGLRenderer({ antialias: true }); + renderer.setClearColor(0x000000); + renderer.setPixelRatio(window.devicePixelRatio); var project = json.project; - if ( project.gammaInput ) renderer.gammaInput = true; - if ( project.gammaOutput ) renderer.gammaOutput = true; - if ( project.shadows ) renderer.shadowMap.enabled = true; - if ( project.vr ) renderer.vr.enabled = true; + if (project.gammaInput) renderer.gammaInput = true; + if (project.gammaOutput) renderer.gammaOutput = true; + if (project.shadows) renderer.shadowMap.enabled = true; + if (project.vr) renderer.vr.enabled = true; - dom.appendChild( renderer.domElement ); + dom.appendChild(renderer.domElement); - this.setScene( loader.parse( json.scene ) ); - this.setCamera( loader.parse( json.camera ) ); + this.setScene(loader.parse(json.scene)); + this.setCamera(loader.parse(json.camera)); events = { init: [], @@ -54,46 +54,46 @@ var APP = { var scriptWrapParams = 'player,renderer,scene,camera'; var scriptWrapResultObj = {}; - for ( var eventKey in events ) { + for (var eventKey in events) { scriptWrapParams += ',' + eventKey; - scriptWrapResultObj[ eventKey ] = eventKey; + scriptWrapResultObj[eventKey] = eventKey; } - var scriptWrapResult = JSON.stringify( scriptWrapResultObj ).replace( /\"/g, '' ); + var scriptWrapResult = JSON.stringify(scriptWrapResultObj).replace(/\"/g, ''); - for ( var uuid in json.scripts ) { + for (var uuid in json.scripts) { - var object = scene.getObjectByProperty( 'uuid', uuid, true ); + var object = scene.getObjectByProperty('uuid', uuid, true); - if ( object === undefined ) { + if (object === undefined) { - console.warn( 'APP.Player: Script without object.', uuid ); + console.warn('APP.Player: Script without object.', uuid); continue; } - var scripts = json.scripts[ uuid ]; + var scripts = json.scripts[uuid]; - for ( var i = 0; i < scripts.length; i ++ ) { + for (var i = 0; i < scripts.length; i++) { - var script = scripts[ i ]; + var script = scripts[i]; - var functions = ( new Function( scriptWrapParams, script.source + '\nreturn ' + scriptWrapResult + ';' ).bind( object ) )( this, renderer, scene, camera ); + var functions = (new Function(scriptWrapParams, script.source + '\nreturn ' + scriptWrapResult + ';').bind(object))(this, renderer, scene, camera); - for ( var name in functions ) { + for (var name in functions) { - if ( functions[ name ] === undefined ) continue; + if (functions[name] === undefined) continue; - if ( events[ name ] === undefined ) { + if (events[name] === undefined) { - console.warn( 'APP.Player: Event type not supported (', name, ')' ); + console.warn('APP.Player: Event type not supported (', name, ')'); continue; } - events[ name ].push( functions[ name ].bind( object ) ); + events[name].push(functions[name].bind(object)); } @@ -101,55 +101,55 @@ var APP = { } - dispatch( events.init, arguments ); + dispatch(events.init, arguments); }; - this.setCamera = function ( value ) { + this.setCamera = function (value) { camera = value; camera.aspect = this.width / this.height; camera.updateProjectionMatrix(); - if ( renderer.vr.enabled ) { + if (renderer.vr.enabled) { - dom.appendChild( WEBVR.createButton( renderer ) ); + dom.appendChild(WEBVR.createButton(renderer)); } }; - this.setScene = function ( value ) { + this.setScene = function (value) { scene = value; }; - this.setSize = function ( width, height ) { + this.setSize = function (width, height) { this.width = width; this.height = height; - if ( camera ) { + if (camera) { camera.aspect = this.width / this.height; camera.updateProjectionMatrix(); } - if ( renderer ) { + if (renderer) { - renderer.setSize( width, height ); + renderer.setSize(width, height); } }; - function dispatch( array, event ) { + function dispatch(array, event) { - for ( var i = 0, l = array.length; i < l; i ++ ) { + for (var i = 0, l = array.length; i < l; i++) { - array[ i ]( event ); + array[i](event); } @@ -157,19 +157,21 @@ var APP = { var prevTime; - function animate( time ) { + function animate() { + + var time = performance.now(); try { - dispatch( events.update, { time: time, delta: time - prevTime } ); + dispatch(events.update, { time: time, delta: time - prevTime }); - } catch ( e ) { + } catch (e) { - console.error( ( e.message || e ), ( e.stack || "" ) ); + console.error((e.message || e), (e.stack || "")); } - renderer.render( scene, camera ); + renderer.render(scene, camera); prevTime = time; @@ -179,43 +181,43 @@ var APP = { prevTime = performance.now(); - document.addEventListener( 'keydown', onDocumentKeyDown ); - document.addEventListener( 'keyup', onDocumentKeyUp ); - document.addEventListener( 'mousedown', onDocumentMouseDown ); - document.addEventListener( 'mouseup', onDocumentMouseUp ); - document.addEventListener( 'mousemove', onDocumentMouseMove ); - document.addEventListener( 'touchstart', onDocumentTouchStart ); - document.addEventListener( 'touchend', onDocumentTouchEnd ); - document.addEventListener( 'touchmove', onDocumentTouchMove ); + document.addEventListener('keydown', onDocumentKeyDown); + document.addEventListener('keyup', onDocumentKeyUp); + document.addEventListener('mousedown', onDocumentMouseDown); + document.addEventListener('mouseup', onDocumentMouseUp); + document.addEventListener('mousemove', onDocumentMouseMove); + document.addEventListener('touchstart', onDocumentTouchStart); + document.addEventListener('touchend', onDocumentTouchEnd); + document.addEventListener('touchmove', onDocumentTouchMove); - dispatch( events.start, arguments ); + dispatch(events.start, arguments); - renderer.setAnimationLoop( animate ); + renderer.setAnimationLoop(animate); }; this.stop = function () { - document.removeEventListener( 'keydown', onDocumentKeyDown ); - document.removeEventListener( 'keyup', onDocumentKeyUp ); - document.removeEventListener( 'mousedown', onDocumentMouseDown ); - document.removeEventListener( 'mouseup', onDocumentMouseUp ); - document.removeEventListener( 'mousemove', onDocumentMouseMove ); - document.removeEventListener( 'touchstart', onDocumentTouchStart ); - document.removeEventListener( 'touchend', onDocumentTouchEnd ); - document.removeEventListener( 'touchmove', onDocumentTouchMove ); + document.removeEventListener('keydown', onDocumentKeyDown); + document.removeEventListener('keyup', onDocumentKeyUp); + document.removeEventListener('mousedown', onDocumentMouseDown); + document.removeEventListener('mouseup', onDocumentMouseUp); + document.removeEventListener('mousemove', onDocumentMouseMove); + document.removeEventListener('touchstart', onDocumentTouchStart); + document.removeEventListener('touchend', onDocumentTouchEnd); + document.removeEventListener('touchmove', onDocumentTouchMove); - dispatch( events.stop, arguments ); + dispatch(events.stop, arguments); - renderer.setAnimationLoop( null ); + renderer.setAnimationLoop(null); }; this.dispose = function () { - while ( dom.children.length ) { + while (dom.children.length) { - dom.removeChild( dom.firstChild ); + dom.removeChild(dom.firstChild); } @@ -229,51 +231,51 @@ var APP = { // - function onDocumentKeyDown( event ) { + function onDocumentKeyDown(event) { - dispatch( events.keydown, event ); + dispatch(events.keydown, event); } - function onDocumentKeyUp( event ) { + function onDocumentKeyUp(event) { - dispatch( events.keyup, event ); + dispatch(events.keyup, event); } - function onDocumentMouseDown( event ) { + function onDocumentMouseDown(event) { - dispatch( events.mousedown, event ); + dispatch(events.mousedown, event); } - function onDocumentMouseUp( event ) { + function onDocumentMouseUp(event) { - dispatch( events.mouseup, event ); + dispatch(events.mouseup, event); } - function onDocumentMouseMove( event ) { + function onDocumentMouseMove(event) { - dispatch( events.mousemove, event ); + dispatch(events.mousemove, event); } - function onDocumentTouchStart( event ) { + function onDocumentTouchStart(event) { - dispatch( events.touchstart, event ); + dispatch(events.touchstart, event); } - function onDocumentTouchEnd( event ) { + function onDocumentTouchEnd(event) { - dispatch( events.touchend, event ); + dispatch(events.touchend, event); } - function onDocumentTouchMove( event ) { + function onDocumentTouchMove(event) { - dispatch( events.touchmove, event ); + dispatch(events.touchmove, event); }