Browse Source

OnAfterEnteringVRObservable

Trevor Baron 6 years ago
parent
commit
dfa038ad65
2 changed files with 17 additions and 1 deletions
  1. 1 0
      dist/preview release/what's new.md
  2. 16 1
      src/Cameras/VR/vrExperienceHelper.ts

+ 1 - 0
dist/preview release/what's new.md

@@ -104,6 +104,7 @@
 - Added option `multiMultiMaterials` to mesh.mergeMeshes ([danjpar](https://github.com/danjpar))
 - Expose fallback camera distortion metrics option in vrExperienceHelper ([TrevorDev](https://github.com/TrevorDev))
 - Add setColor method to boundingBoxGizmo ([TrevorDev](https://github.com/TrevorDev))
+- Add OnAfterEnteringVRObservable to webVRHelper ([TrevorDev](https://github.com/TrevorDev))
 
 ### OBJ Loader
 - Add color vertex support (not part of standard) ([brianzinn](https://github.com/brianzinn))

+ 16 - 1
src/Cameras/VR/vrExperienceHelper.ts

@@ -279,6 +279,10 @@ class VRExperienceHelperCameraGazer extends VRExperienceHelperGazer {
     }
 }
 
+class OnAfterEnteringVRObservableEvent {
+    success: boolean;
+}
+
 /**
  * Helps to quickly add VR support to an existing scene.
  * See http://doc.babylonjs.com/how_to/webvr_helper
@@ -316,11 +320,16 @@ export class VRExperienceHelper {
     private _onVRRequestPresentComplete: (success: boolean) => void;
 
     /**
-     * Observable raised when entering VR.
+     * Observable raised right before entering VR.
      */
     public onEnteringVRObservable = new Observable<VRExperienceHelper>();
 
     /**
+     * Observable raised when entering VR has completed.
+     */
+    public onAfterEnteringVRObservable = new Observable<OnAfterEnteringVRObservableEvent>();
+
+    /**
      * Observable raised when exiting VR.
      */
     public onExitingVRObservable = new Observable<VRExperienceHelper>();
@@ -966,6 +975,9 @@ export class VRExperienceHelper {
         // If WebVR is supported and a headset is connected
         if (this._webVRready) {
             if (!this._webVRpresenting) {
+                this._scene.getEngine().onVRRequestPresentComplete.addOnce((result)=>{
+                    this.onAfterEnteringVRObservable.notifyObservers({success: result});
+                })
                 this._webVRCamera.position = this._position;
                 this._scene.activeCamera = this._webVRCamera;
             }
@@ -978,6 +990,9 @@ export class VRExperienceHelper {
             this._scene.activeCamera = this._vrDeviceOrientationCamera;
             this._scene.getEngine().enterFullscreen(this.requestPointerLockOnFullScreen);
             this.updateButtonVisibility();
+            this._scene.onAfterRenderObservable.addOnce(()=>{
+                this.onAfterEnteringVRObservable.notifyObservers({success: true});
+            })
         }
 
         if (this._scene.activeCamera && this._canvas) {