瀏覽代碼

Merge pull request #6976 from syntheticmagus/edgeBetaWebXRFallback

XR "viewer" reference space fallback
David Catuhe 5 年之前
父節點
當前提交
3a4d309a45
共有 1 個文件被更改,包括 12 次插入1 次删除
  1. 12 1
      src/Cameras/XR/webXRSessionManager.ts

+ 12 - 1
src/Cameras/XR/webXRSessionManager.ts

@@ -6,7 +6,7 @@ import { InternalTexture, InternalTextureSource } from "../../Materials/Textures
 import { RenderTargetTexture } from "../../Materials/Textures/renderTargetTexture";
 import { WebXRRenderTarget } from './webXRTypes';
 import { WebXRManagedOutputCanvas } from './webXRManagedOutputCanvas';
-import { WebXRState } from '../../Legacy/legacy';
+import { WebXRState, Tools } from '../../Legacy/legacy';
 
 interface IRenderTargetProvider {
     getRenderTargetForEye(eye: XREye): RenderTargetTexture;
@@ -117,6 +117,17 @@ export class WebXRSessionManager implements IDisposable {
     public setReferenceSpaceAsync(referenceSpace: XRReferenceSpaceType) {
         return this.session.requestReferenceSpace(referenceSpace).then((referenceSpace: XRReferenceSpace) => {
             this.referenceSpace = referenceSpace;
+        }, rejectionReason => {
+            Tools.Error("XR.requestReferenceSpace failed for the following reason: ");
+            Tools.Error(rejectionReason);
+            Tools.Log("Defaulting to universally-supported \"viewer\" reference space type.");
+
+            return this.session.requestReferenceSpace("viewer").then((referenceSpace: XRReferenceSpace) => {
+                this.referenceSpace = referenceSpace;
+            }, rejectionReason => {
+                Tools.Error(rejectionReason);
+                throw "XR initialization failed: required \"viewer\" reference space type not supported.";
+            });
         });
     }