if (is_mobile) { $("html").addClass("mobile") } else { $("html").addClass("desktop") } var scene, cam, map; var app = new function(){} app.mode = { editor: false, builder: false } app.init = function () { app.tube = new Tube () app.router = new SiteRouter () } app.launch = function () { if ($.browser.msie || ! has3d()) { return app.fallback() } var movements scene = new MX.Scene().addTo('#scene') scene.width = window.innerWidth scene.height = window.innerHeight scene.perspective = window.innerHeight window.onresize = function () { scene.width = window.innerWidth scene.height = window.innerHeight scene.perspective = window.innerHeight scene.update() } cam = scene.camera cam.y = viewHeight if (MX.Map) map = app.map = new MX.Map() if (is_mobile) { app.movements = new MX.MobileMovements(cam, viewHeight) } else { app.movements = new MX.Movements(cam, viewHeight) } app.movements.init() var last_t = 0 function animate (t) { var dt = t - last_t last_t = t requestAnimationFrame(animate) environment.update(t) window.path && path.update(t) app.movements.update(dt || 0) scene.update() } var loader = new Loader(function(){ $("#loader").hide() window.environment && window.environment.init() // window.editor && window.editor.init() // window.path && window.path.init() animate() }) // loader.preloadImages([]) loader.ready() window.scrollTo(0,0) } app.fallback = function(){ app.unsupported = true var msg = "Sorry, your browser is not supported.

" + "Please use Chrome or Safari or Firefox." var $fallback = $("
") $fallback.attr('id', 'fallback') $fallback.html(msg) $('body').append($fallback) $("#keyhint").hide() $("#editorView").hide() } app.on = function(){ app.tube.on.apply(app.tube, arguments) } app.off = function(){ app.tube.off.apply(app.tube, arguments) } app.position = function(obj){ var pos = { x: obj.x, y: obj.y, z: obj.z, rotationX: obj.rotationX, rotationY: obj.rotationY } if (obj.scale !== 1) { pos.scale = obj.scale } return pos } document.addEventListener('DOMContentLoaded', app.init)