var ReaderView = View.extend({ el: "#readerView", projectAction: "/api/project/", events: { }, initialize: function(){ this.mediaPlayer = new MediaPlayer ({ parent: this }) this.shareView = new shareView ({ parent: this }) }, load: function(name){ if (window.location.search.indexOf("noui") !== -1) { $(".logo,.topLinks,#editorView").hide() } else { this.tracker = new Tracker () } if (window.location.search.indexOf("mute") !== -1) { app.muted = true } name = sanitize(name) $.get(this.projectAction + name, this.ready.bind(this)) }, ready: function(data){ $("#map").hide() data.rooms && Rooms.deserialize(data.rooms) data.walls && Walls.deserialize(data.walls) data.media && Scenery.deserialize(data.media) data.startPosition && scene.camera.move(data.startPosition) cam.y = window.viewHeight = data.viewHeight || app.defaults.viewHeight var colors = data.colors || app.defaults.colors var modes = [ "wall", "outline", "floor", "ceiling" ] modes.forEach(function(mode){ Walls.setColor[mode](colors[mode]) }) editor.permissions.clear() this.listen() }, listen: function(){ var base = this $(window).on('message', function(event){ if (event.originalEvent.origin !== window.location.origin) { return } var message = event.originalEvent.data switch (message) { case "spin-on": base.spinning = true break case "spin-off": base.spinning = false break } }) requestAnimationFrame(this.spin.bind(this)) }, spinning: false, spin: function(){ requestAnimationFrame(this.spin.bind(this)) if (this.spinning) { scene.camera.rotationY -= 1/180 } }, pick: function(scenery){ this.mediaPlayer.pick(scenery) app.tube("pick-scenery", { scenery: scenery }) }, pickWall: function(wall, pos){ this.hideExtras() }, hideExtras: function(){ this.mediaPlayer.hide() app.tube("close-scenery") } })