فهرست منبع

Merge pull request #3505 from CarlosLanderas/lande/vrhelper-pickinginfo-observable

VRHelper - Add onNewMeshPicked observable
David Catuhe 7 سال پیش
والد
کامیت
3f89bc3690
2فایلهای تغییر یافته به همراه12 افزوده شده و 3 حذف شده
  1. 3 1
      dist/preview release/what's new.md
  2. 9 2
      src/Cameras/VR/babylon.vrExperienceHelper.ts

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

@@ -14,6 +14,8 @@
   ([carloslanderas](https://github.com/carloslanderas))
 - VRHelper now has the public property teleportationEnabled to enable / disable camera teleportation. 
    ([carloslanderas](https://github.com/carloslanderas))
+- VRHelper now exposes onNewMeshPicked observable that will notify a PickingInfo object after meshSelectionPredicate evaluation
+   ([carloslanderas](https://github.com/carloslanderas))
   
   
 
@@ -21,4 +23,4 @@
 
 ## Breaking changes
 
-- VRHelper onNewMeshSelected now notifies a PickingInfo to subscribers instead of an AbstractMesh ([carloslanderas](https://github.com/carloslanderas))
+

+ 9 - 2
src/Cameras/VR/babylon.vrExperienceHelper.ts

@@ -113,7 +113,13 @@ module BABYLON {
         /**
          * Observable raised when a new mesh is selected based on meshSelectionPredicate
          */        
-        public onNewMeshSelected = new Observable<PickingInfo>();
+        public onNewMeshSelected = new Observable<AbstractMesh>();
+
+        /**
+         * Observable raised when a new mesh is picked based on meshSelectionPredicate
+         */        
+        public onNewMeshPicked = new Observable<PickingInfo>();
+
         private _circleEase: CircleEase;
 
         /**
@@ -1409,6 +1415,7 @@ module BABYLON {
                 this._teleportationAllowed = false;
                 if (hit.pickedMesh !== this._currentMeshSelected) {
                     if (this.meshSelectionPredicate(hit.pickedMesh)) {
+                        this.onNewMeshPicked.notifyObservers(hit);
                         this._currentMeshSelected = hit.pickedMesh;
                         if (hit.pickedMesh.isPickable && hit.pickedMesh.actionManager) {
                             this.changeGazeColor(new Color3(0, 0, 1));
@@ -1421,7 +1428,7 @@ module BABYLON {
                             this._isActionableMesh = false;
                         }
                         try {
-                            this.onNewMeshSelected.notifyObservers(hit);
+                            this.onNewMeshSelected.notifyObservers(this._currentMeshSelected);                            
                         }
                         catch (err) {
                             Tools.Warn("Error in your custom logic onNewMeshSelected: " + err);