diff --git a/src/controllers/rigplatform.ts b/src/controllers/rigplatform.ts index d11d716..93f20d9 100644 --- a/src/controllers/rigplatform.ts +++ b/src/controllers/rigplatform.ts @@ -112,6 +112,11 @@ export class Rigplatform { } private registerObserver() { + if (this.registered) { + this.logger.warn('observer already registered, clearing and re registering'); + this.controllers.controllerObservable.clear(); + this.registered = false; + } if (!this.registered) { this.registered = true; this.controllers.controllerObservable.add((event: ControllerEvent) => { @@ -150,11 +155,14 @@ export class Rigplatform { break; } }); + } else { + this.logger.warn('observer already registered'); } } private initializeControllers() { + this.xr.input.onControllerAddedObservable.add((source) => { this.registerObserver(); let controller; @@ -175,6 +183,9 @@ export class Rigplatform { controller.setRig(this); } }); + this.xr.input.onControllerRemovedObservable.add((source) => { + this.logger.debug('controller removed', source); + }); } private fixRotation() { diff --git a/src/util/functions/groundMeshObserver.ts b/src/util/functions/groundMeshObserver.ts index 54328f5..f8af814 100644 --- a/src/util/functions/groundMeshObserver.ts +++ b/src/util/functions/groundMeshObserver.ts @@ -35,10 +35,13 @@ export async function groundMeshObserver(ground: AbstractMesh, const vrSupported = await xr.baseExperience.sessionManager.isSessionSupportedAsync('immersive-vr'); if (vrSupported) { enterButton.classList.remove('inactive'); - enterButton.addEventListener('click', (evt) => { + enterButton.addEventListener('click', async (evt) => { evt.preventDefault(); //const voice = new VoiceRecognizer(); - xr.baseExperience.enterXRAsync('immersive-vr', 'local-floor'); + logger.debug('entering XR'); + + const enter = await xr.baseExperience.enterXRAsync('immersive-vr', 'local-floor'); + logger.debug(enter); }); } @@ -65,6 +68,13 @@ export async function groundMeshObserver(ground: AbstractMesh, } }); break; + case WebXRState.EXITING_XR: + setTimeout(() => { + logger.debug('reloading'); + window.location.reload(); + + }, 500); + } }); diff --git a/src/vrApp.ts b/src/vrApp.ts index f188f48..bc956cc 100644 --- a/src/vrApp.ts +++ b/src/vrApp.ts @@ -15,7 +15,7 @@ import {Introduction} from "./tutorial/introduction"; const webGpu = false; -log.setLevel('debug', false); +log.setLevel('error', false); export class VrApp { private engine: WebGPUEngine | Engine;