|
@@ -4,7 +4,8 @@
|
|
|
|
|
|
if ( /(Helio)/g.test( navigator.userAgent ) && "xr" in navigator ) {
|
|
|
|
|
|
- console.log( "Helio WebXR Polyfill (Lumin 0.96.0)" );
|
|
|
+ console.log( "Helio WebXR Polyfill (Lumin 0.97.0)" );
|
|
|
+ const isHelio96 = navigator.userAgent.includes("Chrome/73");
|
|
|
|
|
|
// WebXRManager - XR.supportSession() Polyfill - WebVR.js line 147
|
|
|
|
|
@@ -29,10 +30,11 @@ if ( /(Helio)/g.test( navigator.userAgent ) && "xr" in navigator ) {
|
|
|
navigator.xr.requestSession = function ( sessionType ) {
|
|
|
|
|
|
return new Promise( function ( resolve, reject ) {
|
|
|
-
|
|
|
- tempRequestSession( {
|
|
|
+ const sessionType = (isHelio96 ? {
|
|
|
mode: 'immersive-ar' // Force using immersive-ar
|
|
|
- } )
|
|
|
+ } : 'immersive-ar');
|
|
|
+
|
|
|
+ tempRequestSession( sessionType )
|
|
|
.then( function ( session ) {
|
|
|
|
|
|
// WebXRManager - xrFrame.getPose() Polyfill - line 279
|
|
@@ -70,18 +72,26 @@ if ( /(Helio)/g.test( navigator.userAgent ) && "xr" in navigator ) {
|
|
|
|
|
|
// WebXRManager - xrFrame.getPose() Polyfill - line 259
|
|
|
|
|
|
+ const tempGetPose = frame.getPose.bind( frame );
|
|
|
+
|
|
|
frame.getPose = function ( targetRaySpace, referenceSpace ) {
|
|
|
|
|
|
- const inputPose = frame.getInputPose(
|
|
|
- targetRaySpace,
|
|
|
- referenceSpace
|
|
|
- );
|
|
|
+ if (isHelio96) {
|
|
|
|
|
|
- inputPose.transform = {
|
|
|
- matrix: inputPose.targetRay.transformMatrix
|
|
|
- };
|
|
|
+ const inputPose = frame.getInputPose(
|
|
|
+ targetRaySpace,
|
|
|
+ referenceSpace
|
|
|
+ );
|
|
|
|
|
|
- return inputPose;
|
|
|
+ inputPose.transform = {
|
|
|
+ matrix: inputPose.targetRay.transformMatrix
|
|
|
+ };
|
|
|
+
|
|
|
+ return inputPose;
|
|
|
+
|
|
|
+ } else {
|
|
|
+ return tempGetPose(targetRaySpace.gripSpace, referenceSpace);
|
|
|
+ }
|
|
|
|
|
|
};
|
|
|
|
|
@@ -127,17 +137,21 @@ if ( /(Helio)/g.test( navigator.userAgent ) && "xr" in navigator ) {
|
|
|
|
|
|
// WebXRManager - xrSession.updateRenderState() Polyfill Line 129
|
|
|
|
|
|
- session.updateRenderState = function ( { baseLayer } ) {
|
|
|
+ if (isHelio96) {
|
|
|
+
|
|
|
+ session.updateRenderState = function ( { baseLayer } ) {
|
|
|
|
|
|
- session.baseLayer = baseLayer;
|
|
|
+ session.baseLayer = baseLayer;
|
|
|
|
|
|
- // WebXRManager - xrSession.renderState.baseLayer Polyfill Line 219
|
|
|
+ // WebXRManager - xrSession.renderState.baseLayer Polyfill Line 219
|
|
|
+
|
|
|
+ session.renderState = {
|
|
|
+ baseLayer: baseLayer
|
|
|
+ };
|
|
|
|
|
|
- session.renderState = {
|
|
|
- baseLayer: baseLayer
|
|
|
};
|
|
|
|
|
|
- };
|
|
|
+ }
|
|
|
|
|
|
// WebXRManager - xrSession.requestReferenceSpace() Polyfill Line 130
|
|
|
|