|
@@ -208,21 +208,7 @@ export class WebXRSessionManager implements IDisposable {
|
|
|
* @returns true if supported
|
|
|
*/
|
|
|
public supportsSessionAsync(sessionMode: XRSessionMode) {
|
|
|
- if (!(navigator as any).xr) {
|
|
|
- return Promise.resolve(false);
|
|
|
- }
|
|
|
- // When the specs are final, remove supportsSession!
|
|
|
- const functionToUse = (navigator as any).xr.isSessionSupported || (navigator as any).xr.supportsSession;
|
|
|
- if (!functionToUse) {
|
|
|
- return Promise.resolve(false);
|
|
|
- } else {
|
|
|
- return functionToUse.call((navigator as any).xr, sessionMode).then(() => {
|
|
|
- return Promise.resolve(true);
|
|
|
- }).catch((e: any) => {
|
|
|
- Logger.Warn(e);
|
|
|
- return Promise.resolve(false);
|
|
|
- });
|
|
|
- }
|
|
|
+ return WebXRSessionManager.IsSessionSupported(sessionMode);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -270,4 +256,22 @@ export class WebXRSessionManager implements IDisposable {
|
|
|
this.onXRFrameObservable.clear();
|
|
|
this.onXRSessionEnded.clear();
|
|
|
}
|
|
|
+
|
|
|
+ public static IsSessionSupported(sessionMode: XRSessionMode): Promise<boolean> {
|
|
|
+ if (!(navigator as any).xr) {
|
|
|
+ return Promise.resolve(false);
|
|
|
+ }
|
|
|
+ // When the specs are final, remove supportsSession!
|
|
|
+ const functionToUse = (navigator as any).xr.isSessionSupported || (navigator as any).xr.supportsSession;
|
|
|
+ if (!functionToUse) {
|
|
|
+ return Promise.resolve(false);
|
|
|
+ } else {
|
|
|
+ return functionToUse.call((navigator as any).xr, sessionMode).then(() => {
|
|
|
+ return Promise.resolve(true);
|
|
|
+ }).catch((e: any) => {
|
|
|
+ Logger.Warn(e);
|
|
|
+ return Promise.resolve(false);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|