var is_iphone = (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)); var is_ipad = (navigator.userAgent.match(/iPad/i)); var is_android = (navigator.userAgent.match(/Android/i)) var is_mobile = is_iphone || is_ipad || is_android; if (is_mobile) { // window.location.href = "mobile.html" $("html").addClass("mobile"); } else if ($.browser.msie || ! has3d()) { // window.location.href = "error.html" } else { $("html").addClass("desktop"); } var scene, cam, map; var viewHeight = window.viewHeight || 150 var app = new function(){} app.mode = { editor: false, builder: false } app.init = function () { app.tube = new Tube () app.router = new SiteRouter () } app.launch = function () { var mainbox, coords, box, size, floor, 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() movements = app.movements = new MX.Movements(cam, viewHeight) movements.init() function animate (t) { requestAnimationFrame(animate) environment.update(t) window.path && path.update(t) movements.update() scene.update() } window.inAnimation = true 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() } app.on = function(){ app.tube.on.apply(app.tube, arguments) } app.off = function(){ app.tube.off.apply(app.tube, arguments) } app.position = function(obj){ return { x: obj.x, y: obj.y, z: obj.z, rotationX: obj.rotationX, rotationY: obj.rotationY } } document.addEventListener('DOMContentLoaded', app.init)