|
@@ -14,13 +14,12 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
var gl = renderer.context;
|
|
|
|
|
|
- var device = null;
|
|
|
var session = null;
|
|
|
|
|
|
var framebufferScaleFactor = 1.0;
|
|
|
|
|
|
- var frameOfReference = null;
|
|
|
- var frameOfReferenceType = 'stage';
|
|
|
+ var referenceSpace = null;
|
|
|
+ var referenceSpaceType = 'local-floor';
|
|
|
|
|
|
var pose = null;
|
|
|
|
|
@@ -29,7 +28,7 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
function isPresenting() {
|
|
|
|
|
|
- return session !== null && frameOfReference !== null;
|
|
|
+ return session !== null && referenceSpace !== null;
|
|
|
|
|
|
}
|
|
|
|
|
@@ -69,24 +68,19 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
};
|
|
|
|
|
|
- this.getDevice = function () {
|
|
|
-
|
|
|
- return device;
|
|
|
-
|
|
|
- };
|
|
|
+ //
|
|
|
|
|
|
- this.setDevice = function ( value ) {
|
|
|
+ function onSessionEvent( event ) {
|
|
|
|
|
|
- if ( value !== undefined ) device = value;
|
|
|
+ for ( var i = 0; i < controllers.length; i ++ ) {
|
|
|
|
|
|
- };
|
|
|
+ if ( inputSources[ i ] === event.inputSource ) {
|
|
|
|
|
|
- //
|
|
|
+ controllers[ i ].dispatchEvent( { type: event.type } );
|
|
|
|
|
|
- function onSessionEvent( event ) {
|
|
|
+ }
|
|
|
|
|
|
- var controller = controllers[ inputSources.indexOf( event.inputSource ) ];
|
|
|
- if ( controller ) controller.dispatchEvent( { type: event.type } );
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
@@ -98,9 +92,9 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- function onRequestFrameOfReference( value ) {
|
|
|
+ function onRequestReferenceSpace( value ) {
|
|
|
|
|
|
- frameOfReference = value;
|
|
|
+ referenceSpace = value;
|
|
|
|
|
|
animation.setContext( session );
|
|
|
animation.start();
|
|
@@ -113,9 +107,9 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
};
|
|
|
|
|
|
- this.setFrameOfReferenceType = function ( value ) {
|
|
|
+ this.setReferenceSpaceType = function ( value ) {
|
|
|
|
|
|
- frameOfReferenceType = value;
|
|
|
+ referenceSpaceType = value;
|
|
|
|
|
|
};
|
|
|
|
|
@@ -132,15 +126,15 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
session.updateRenderState( { baseLayer: new XRWebGLLayer( session, gl ) } );
|
|
|
|
|
|
- session.requestReferenceSpace( { type: 'stationary', subtype: 'eye-level' } ).then( onRequestFrameOfReference );
|
|
|
+ session.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );
|
|
|
|
|
|
//
|
|
|
|
|
|
- inputSources = session.getInputSources();
|
|
|
+ inputSources = session.inputSources;
|
|
|
|
|
|
session.addEventListener( 'inputsourceschange', function () {
|
|
|
|
|
|
- inputSources = session.getInputSources();
|
|
|
+ inputSources = session.inputSources;
|
|
|
console.log( inputSources );
|
|
|
|
|
|
for ( var i = 0; i < controllers.length; i ++ ) {
|
|
@@ -217,7 +211,7 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
function onAnimationFrame( time, frame ) {
|
|
|
|
|
|
- pose = frame.getViewerPose( frameOfReference );
|
|
|
+ pose = frame.getViewerPose( referenceSpace );
|
|
|
|
|
|
if ( pose !== null ) {
|
|
|
|
|
@@ -230,7 +224,7 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
var view = views[ i ];
|
|
|
var viewport = layer.getViewport( view );
|
|
|
- var viewMatrix = view.transform.inverse().matrix;
|
|
|
+ var viewMatrix = view.transform.inverse.matrix;
|
|
|
|
|
|
var camera = cameraVR.cameras[ i ];
|
|
|
camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
|
|
@@ -257,13 +251,11 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
if ( inputSource ) {
|
|
|
|
|
|
- var inputPose = frame.getPose( inputSource.targetRaySpace, frameOfReference );
|
|
|
+ var inputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );
|
|
|
|
|
|
if ( inputPose !== null ) {
|
|
|
|
|
|
- var targetRay = new XRRay( inputPose.transform );
|
|
|
- controller.matrix.elements = targetRay.matrix;
|
|
|
-
|
|
|
+ controller.matrix.fromArray( inputPose.transform.matrix );
|
|
|
controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
|
|
|
controller.visible = true;
|
|
|
|
|
@@ -301,6 +293,18 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
};
|
|
|
|
|
|
+ this.getDevice = function () {
|
|
|
+
|
|
|
+ console.warn( 'THREE.WebXRManager: getDevice() has been deprecated.' );
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ this.setDevice = function () {
|
|
|
+
|
|
|
+ console.warn( 'THREE.WebXRManager: setDevice() has been deprecated.' );
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
this.submitFrame = function () {};
|
|
|
|
|
|
}
|