Просмотр исходного кода

VRControls/VREffect: Clean up.

Mr.doob 9 лет назад
Родитель
Сommit
81c05ef695
2 измененных файлов с 66 добавлено и 63 удалено
  1. 26 24
      examples/js/controls/VRControls.js
  2. 40 39
      examples/js/effects/VREffect.js

+ 26 - 24
examples/js/controls/VRControls.js

@@ -7,25 +7,27 @@ THREE.VRControls = function ( object, onError ) {
 
 	var scope = this;
 
-	var vrInput;
+	var vrDisplay;
 
 	var standingMatrix = new THREE.Matrix4();
 
-	function gotVRDevices( devices ) {
+	function gotVRDisplays( displays ) {
 
-		for ( var i = 0; i < devices.length; i ++ ) {
+		vrDisplays = displays;
 
-			if ( ( 'VRDisplay' in window && devices[ i ] instanceof VRDisplay ) ||
-				 ( 'PositionSensorVRDevice' in window && devices[ i ] instanceof PositionSensorVRDevice ) ) {
+		for ( var i = 0; i < displays.length; i ++ ) {
 
-				vrInput = devices[ i ];
+			if ( ( 'VRDisplay' in window && displays[ i ] instanceof VRDisplay ) ||
+				 ( 'PositionSensorVRDevice' in window && displays[ i ] instanceof PositionSensorVRDevice ) ) {
+
+				vrDisplay = displays[ i ];
 				break;  // We keep the first we encounter
 
 			}
 
 		}
 
-		if ( !vrInput ) {
+		if ( vrDisplay === undefined ) {
 
 			if ( onError ) onError( 'VR input not available.' );
 
@@ -35,12 +37,12 @@ THREE.VRControls = function ( object, onError ) {
 
 	if ( navigator.getVRDisplays ) {
 
-		navigator.getVRDisplays().then( gotVRDevices );
+		navigator.getVRDisplays().then( gotVRDisplays );
 
 	} else if ( navigator.getVRDevices ) {
 
 		// Deprecated API.
-		navigator.getVRDevices().then( gotVRDevices );
+		navigator.getVRDevices().then( gotVRDisplays );
 
 	}
 
@@ -60,7 +62,7 @@ THREE.VRControls = function ( object, onError ) {
 
 	this.getVRDisplay = function () {
 
-		return vrInput;
+		return vrDisplay;
 
 	};
 
@@ -72,11 +74,11 @@ THREE.VRControls = function ( object, onError ) {
 
 	this.update = function () {
 
-		if ( vrInput ) {
+		if ( vrDisplay ) {
 
-			if ( vrInput.getPose ) {
+			if ( vrDisplay.getPose ) {
 
-				var pose = vrInput.getPose();
+				var pose = vrDisplay.getPose();
 
 				if ( pose.orientation !== null ) {
 
@@ -97,7 +99,7 @@ THREE.VRControls = function ( object, onError ) {
 			} else {
 
 				// Deprecated API.
-				var state = vrInput.getState();
+				var state = vrDisplay.getState();
 
 				if ( state.orientation !== null ) {
 
@@ -119,11 +121,11 @@ THREE.VRControls = function ( object, onError ) {
 
 			if ( this.standing ) {
 
-				if ( vrInput.stageParameters ) {
+				if ( vrDisplay.stageParameters ) {
 
 					object.updateMatrix();
 
-					standingMatrix.fromArray(vrInput.stageParameters.sittingToStandingTransform);
+					standingMatrix.fromArray( vrDisplay.stageParameters.sittingToStandingTransform );
 					object.applyMatrix( standingMatrix );
 
 				} else {
@@ -142,21 +144,21 @@ THREE.VRControls = function ( object, onError ) {
 
 	this.resetPose = function () {
 
-		if ( vrInput ) {
+		if ( vrDisplay ) {
 
-			if ( vrInput.resetPose !== undefined ) {
+			if ( vrDisplay.resetPose !== undefined ) {
 
-				vrInput.resetPose();
+				vrDisplay.resetPose();
 
-			} else if ( vrInput.resetSensor !== undefined ) {
+			} else if ( vrDisplay.resetSensor !== undefined ) {
 
 				// Deprecated API.
-				vrInput.resetSensor();
+				vrDisplay.resetSensor();
 
-			} else if ( vrInput.zeroSensor !== undefined ) {
+			} else if ( vrDisplay.zeroSensor !== undefined ) {
 
 				// Really deprecated API.
-				vrInput.zeroSensor();
+				vrDisplay.zeroSensor();
 
 			}
 
@@ -180,7 +182,7 @@ THREE.VRControls = function ( object, onError ) {
 
 	this.dispose = function () {
 
-		vrInput = null;
+		vrDisplay = null;
 
 	};
 

+ 40 - 39
examples/js/effects/VREffect.js

@@ -11,34 +11,35 @@
 
 THREE.VREffect = function ( renderer, onError ) {
 
-	var vrHMD;
-	var isDeprecatedAPI = false;
+	var isWebVR1 = true;
+
+	var vrDisplay;
 	var eyeTranslationL = new THREE.Vector3();
 	var eyeTranslationR = new THREE.Vector3();
 	var renderRectL, renderRectR;
 	var eyeFOVL, eyeFOVR;
 
-	function gotVRDevices( devices ) {
+	function gotVRDisplays( displays ) {
 
-		for ( var i = 0; i < devices.length; i ++ ) {
+		for ( var i = 0; i < displays.length; i ++ ) {
 
-			if ( 'VRDisplay' in window && devices[ i ] instanceof VRDisplay ) {
+			if ( 'VRDisplay' in window && displays[ i ] instanceof VRDisplay ) {
 
-				vrHMD = devices[ i ];
-				isDeprecatedAPI = false;
+				vrDisplay = displays[ i ];
+				isWebVR1 = true;
 				break; // We keep the first we encounter
 
-			} else if ( 'HMDVRDevice' in window && devices[ i ] instanceof HMDVRDevice ) {
+			} else if ( 'HMDVRDevice' in window && displays[ i ] instanceof HMDVRDevice ) {
 
-				vrHMD = devices[ i ];
-				isDeprecatedAPI = true;
+				vrDisplay = displays[ i ];
+				isWebVR1 = false;
 				break; // We keep the first we encounter
 
 			}
 
 		}
 
-		if ( vrHMD === undefined ) {
+		if ( vrDisplay === undefined ) {
 
 			if ( onError ) onError( 'HMD not available' );
 
@@ -48,12 +49,12 @@ THREE.VREffect = function ( renderer, onError ) {
 
 	if ( navigator.getVRDisplays ) {
 
-		navigator.getVRDisplays().then( gotVRDevices );
+		navigator.getVRDisplays().then( gotVRDisplays );
 
 	} else if ( navigator.getVRDevices ) {
 
 		// Deprecated API.
-		navigator.getVRDevices().then( gotVRDevices );
+		navigator.getVRDevices().then( gotVRDisplays );
 
 	}
 
@@ -69,7 +70,7 @@ THREE.VREffect = function ( renderer, onError ) {
 
 	this.getVRDisplay = function () {
 
-		return vrHMD;
+		return vrDisplay;
 
 	};
 
@@ -79,20 +80,19 @@ THREE.VREffect = function ( renderer, onError ) {
 
 		if ( scope.isPresenting ) {
 
-			var eyeParamsL = vrHMD.getEyeParameters( 'left' );
+			var eyeParamsL = vrDisplay.getEyeParameters( 'left' );
 			renderer.setPixelRatio( 1 );
 
-			if ( isDeprecatedAPI ) {
+			if ( isWebVR1 ) {
 
-				renderer.setSize( eyeParamsL.renderRect.width * 2, eyeParamsL.renderRect.height, false );
+				renderer.setSize( eyeParamsL.renderWidth * 2, eyeParamsL.renderHeight, false );
 
 			} else {
 
-				renderer.setSize( eyeParamsL.renderWidth * 2, eyeParamsL.renderHeight, false );
+				renderer.setSize( eyeParamsL.renderRect.width * 2, eyeParamsL.renderRect.height, false );
 
 			}
 
-
 		} else {
 
 			renderer.setPixelRatio( rendererPixelRatio );
@@ -112,7 +112,7 @@ THREE.VREffect = function ( renderer, onError ) {
 	function onFullscreenChange () {
 
 		var wasPresenting = scope.isPresenting;
-		scope.isPresenting = vrHMD !== undefined && ( vrHMD.isPresenting || ( isDeprecatedAPI && document[ fullscreenElement ] instanceof window.HTMLElement ) );
+		scope.isPresenting = vrDisplay !== undefined && ( vrDisplay.isPresenting || ( ! isWebVR1 && document[ fullscreenElement ] instanceof window.HTMLElement ) );
 
 		if ( wasPresenting === scope.isPresenting ) {
 
@@ -125,18 +125,18 @@ THREE.VREffect = function ( renderer, onError ) {
 			rendererPixelRatio = renderer.getPixelRatio();
 			rendererSize = renderer.getSize();
 
-			var eyeParamsL = vrHMD.getEyeParameters( 'left' );
+			var eyeParamsL = vrDisplay.getEyeParameters( 'left' );
 			var eyeWidth, eyeHeight;
 
-			if ( isDeprecatedAPI ) {
+			if ( isWebVR1 ) {
 
-				eyeWidth = eyeParamsL.renderRect.width;
-				eyeHeight = eyeParamsL.renderRect.height;
+				eyeWidth = eyeParamsL.renderWidth;
+				eyeHeight = eyeParamsL.renderHeight;
 
 			} else {
 
-				eyeWidth = eyeParamsL.renderWidth;
-				eyeHeight = eyeParamsL.renderHeight;
+				eyeWidth = eyeParamsL.renderRect.width;
+				eyeHeight = eyeParamsL.renderRect.height;
 
 			}
 
@@ -181,7 +181,7 @@ THREE.VREffect = function ( renderer, onError ) {
 
 		return new Promise( function ( resolve, reject ) {
 
-			if ( vrHMD === undefined ) {
+			if ( vrDisplay === undefined ) {
 
 				reject( new Error( 'No VR hardware found.' ) );
 				return;
@@ -195,15 +195,15 @@ THREE.VREffect = function ( renderer, onError ) {
 
 			}
 
-			if ( ! isDeprecatedAPI ) {
+			if ( isWebVR1 ) {
 
 				if ( boolean ) {
 
-					resolve( vrHMD.requestPresent( [ { source: canvas } ] ) );
+					resolve( vrDisplay.requestPresent( [ { source: canvas } ] ) );
 
 				} else {
 
-					resolve( vrHMD.exitPresent() );
+					resolve( vrDisplay.exitPresent() );
 
 				}
 
@@ -211,7 +211,7 @@ THREE.VREffect = function ( renderer, onError ) {
 
 				if ( canvas[ requestFullscreen ] ) {
 
-					canvas[ boolean ? requestFullscreen : exitFullscreen ]( { vrDisplay: vrHMD } );
+					canvas[ boolean ? requestFullscreen : exitFullscreen ]( { vrDisplay: vrDisplay } );
 					resolve();
 
 				} else {
@@ -241,9 +241,9 @@ THREE.VREffect = function ( renderer, onError ) {
 
 	this.requestAnimationFrame = function ( f ) {
 
-		if ( ! isDeprecatedAPI && vrHMD !== undefined ) {
+		if ( isWebVR1 && vrDisplay !== undefined ) {
 
-			vrHMD.requestAnimationFrame( f );
+			vrDisplay.requestAnimationFrame( f );
 
 		} else {
 
@@ -263,7 +263,7 @@ THREE.VREffect = function ( renderer, onError ) {
 
 	this.render = function ( scene, camera, renderTarget, forceClear ) {
 
-		if ( vrHMD && scope.isPresenting ) {
+		if ( vrDisplay && scope.isPresenting ) {
 
 			var autoUpdate = scene.autoUpdate;
 
@@ -274,10 +274,10 @@ THREE.VREffect = function ( renderer, onError ) {
 
 			}
 
-			var eyeParamsL = vrHMD.getEyeParameters( 'left' );
-			var eyeParamsR = vrHMD.getEyeParameters( 'right' );
+			var eyeParamsL = vrDisplay.getEyeParameters( 'left' );
+			var eyeParamsR = vrDisplay.getEyeParameters( 'right' );
 
-			if ( ! isDeprecatedAPI ) {
+			if ( isWebVR1 ) {
 
 				eyeTranslationL.fromArray( eyeParamsL.offset );
 				eyeTranslationR.fromArray( eyeParamsR.offset );
@@ -307,6 +307,7 @@ THREE.VREffect = function ( renderer, onError ) {
 			renderRectR = { x: size.width / 2, y: 0, width: size.width / 2, height: size.height };
 
 			renderer.setScissorTest( true );
+
 			if ( renderer.autoClear ) renderer.clear();
 
 			if ( camera.parent === null ) camera.updateMatrixWorld();
@@ -340,9 +341,9 @@ THREE.VREffect = function ( renderer, onError ) {
 
 			}
 
-			if ( ! isDeprecatedAPI ) {
+			if ( isWebVR1 ) {
 
-				vrHMD.submitFrame();
+				vrDisplay.submitFrame();
 
 			}