2
0
Эх сурвалжийг харах

Editor: Hacky/temporal VR implementation.

Mr.doob 10 жил өмнө
parent
commit
b3cdf8bf79

+ 3 - 0
editor/index.html

@@ -51,6 +51,9 @@
 		<script src="js/Player.js"></script>
 		<script src="js/Player.js"></script>
 		<script src="js/Script.js"></script>
 		<script src="js/Script.js"></script>
 
 
+		<script src="../examples/js/effects/VREffect.js"></script>
+		<script src="../examples/js/controls/VRControls.js"></script>
+
 		<script src="js/Storage.js"></script>
 		<script src="js/Storage.js"></script>
 
 
 		<script src="js/Editor.js"></script>
 		<script src="js/Editor.js"></script>

+ 1 - 0
editor/js/Player.js

@@ -27,6 +27,7 @@ var Player = function ( editor ) {
 
 
 		container.setDisplay( '' );
 		container.setDisplay( '' );
 
 
+		player.setVR( editor.config.getKey( 'project/vr' ) );
 		player.load( editor.toJSON() );
 		player.load( editor.toJSON() );
 		player.setSize( container.dom.offsetWidth, container.dom.offsetHeight );
 		player.setSize( container.dom.offsetWidth, container.dom.offsetHeight );
 		player.play();
 		player.play();

+ 29 - 0
editor/js/libs/app.js

@@ -6,9 +6,13 @@ var APP = {
 
 
 	Player: function () {
 	Player: function () {
 
 
+		var scope = this;
+
 		var loader = new THREE.ObjectLoader();
 		var loader = new THREE.ObjectLoader();
 		var camera, scene, renderer;
 		var camera, scene, renderer;
 
 
+		var vr, controls;
+
 		var events = {};
 		var events = {};
 
 
 		this.dom = undefined;
 		this.dom = undefined;
@@ -70,6 +74,18 @@ var APP = {
 
 
 			this.dom = renderer.domElement;
 			this.dom = renderer.domElement;
 
 
+			if ( vr === true ) {
+
+				controls = new THREE.VRControls( camera );
+				renderer = new THREE.VREffect( renderer );
+
+				this.dom.addEventListener( 'dblclick', function () {
+
+					renderer.setFullScreen( true );
+
+				} );
+			}
+
 		};
 		};
 
 
 		this.setCamera = function ( value ) {
 		this.setCamera = function ( value ) {
@@ -80,8 +96,19 @@ var APP = {
 
 
 		};
 		};
 
 
+		this.setVR = function ( value ) {
+
+			vr = value;
+
+		};
+
 		this.setSize = function ( width, height ) {
 		this.setSize = function ( width, height ) {
 
 
+			if ( vr ) {
+				width = 1280;
+				height = 800;
+			}
+
 			this.width = width;
 			this.width = width;
 			this.height = height;
 			this.height = height;
 
 
@@ -110,6 +137,8 @@ var APP = {
 
 
 			dispatch( events.update, { time: time, delta: time - prevTime } );
 			dispatch( events.update, { time: time, delta: time - prevTime } );
 
 
+			if ( vr ) controls.update();
+
 			renderer.render( scene, camera );
 			renderer.render( scene, camera );
 
 
 			prevTime = time;
 			prevTime = time;