فهرست منبع

babylon.js cleanup

Chris Barth 4 سال پیش
والد
کامیت
9250e5aad0
3فایلهای تغییر یافته به همراه18 افزوده شده و 20 حذف شده
  1. 1 1
      src/LibDeclarations/webxr.nativeextensions.d.ts
  2. 8 9
      src/XR/features/WebXRMeshDetector.ts
  3. 9 10
      src/XR/features/WebXRPlaneDetector.ts

+ 1 - 1
src/LibDeclarations/webxr.nativeextensions.d.ts

@@ -1,4 +1,4 @@
-// This file contains native only extensions for WebXR  These APIs are not supported in the browser yet.
+// This file contains native only extensions for WebXR. These APIs are not supported in the browser yet.
 // They are intended for use with either Babylon Native https://github.com/BabylonJS/BabylonNative or
 // Babylon React Native: https://github.com/BabylonJS/BabylonReactNative
 

+ 8 - 9
src/XR/features/WebXRMeshDetector.ts

@@ -93,12 +93,11 @@ export class WebXRMeshDetector extends WebXRAbstractFeature {
     constructor(_xrSessionManager: WebXRSessionManager, private _options: IWebXRMeshDetectorOptions = {}) {
         super(_xrSessionManager);
         this.xrNativeFeatureName = "mesh-detection";
+        this._initMeshDetector = this._initMeshDetector.bind(this);
         if (this._xrSessionManager.session) {
-            this._init();
+            this._initMeshDetector(this._xrSessionManager.session);
         } else {
-            this._xrSessionManager.onXRSessionInit.addOnce(() => {
-                this._init();
-            });
+            this._xrSessionManager.onXRSessionInit.addOnce(this._initMeshDetector);
         }
     }
 
@@ -172,14 +171,14 @@ export class WebXRMeshDetector extends WebXRAbstractFeature {
         }
     }
 
-    private _init() {
-        if (!!this._xrSessionManager.session.trySetMeshDetectorEnabled) {
-            this._xrSessionManager.session.trySetMeshDetectorEnabled(true);
+    private _initMeshDetector(session: XRSession) {
+        if (!!session.trySetMeshDetectorEnabled) {
+            session.trySetMeshDetectorEnabled(true);
         }
 
         if (!!this._options.preferredDetectorOptions &&
-            !!this._xrSessionManager.session.trySetPreferredMeshDetectorOptions) {
-            this._xrSessionManager.session.trySetPreferredMeshDetectorOptions(this._options.preferredDetectorOptions);
+            !!session.trySetPreferredMeshDetectorOptions) {
+            session.trySetPreferredMeshDetectorOptions(this._options.preferredDetectorOptions);
         }
     }
 

+ 9 - 10
src/XR/features/WebXRPlaneDetector.ts

@@ -96,12 +96,11 @@ export class WebXRPlaneDetector extends WebXRAbstractFeature {
     constructor(_xrSessionManager: WebXRSessionManager, private _options: IWebXRPlaneDetectorOptions = {}) {
         super(_xrSessionManager);
         this.xrNativeFeatureName = "plane-detection";
+        this._initPlaneDetector = this._initPlaneDetector.bind(this);
         if (this._xrSessionManager.session) {
-            this._init();
+            this._initPlaneDetector(this._xrSessionManager.session);
         } else {
-            this._xrSessionManager.onXRSessionInit.addOnce(() => {
-                this._init();
-            });
+            this._xrSessionManager.onXRSessionInit.addOnce(this._initPlaneDetector);
         }
     }
 
@@ -190,7 +189,7 @@ export class WebXRPlaneDetector extends WebXRAbstractFeature {
         }
     }
 
-    private _init() {
+    private _initPlaneDetector(session: XRSession) {
         const internalInit = () => {
             this._enabled = true;
             if (this._detectedPlanes.length) {
@@ -199,20 +198,20 @@ export class WebXRPlaneDetector extends WebXRAbstractFeature {
         };
 
         if (!!this._options.preferredDetectorOptions &&
-            !!this._xrSessionManager.session.trySetPreferredPlaneDetectorOptions) {
-            this._xrSessionManager.session.trySetPreferredPlaneDetectorOptions(this._options.preferredDetectorOptions);
+            !!session.trySetPreferredPlaneDetectorOptions) {
+                session.trySetPreferredPlaneDetectorOptions(this._options.preferredDetectorOptions);
         }
 
-        if (!this._xrSessionManager.session.updateWorldTrackingState) {
+        if (!session.updateWorldTrackingState) {
             // check if this was enabled by a flag
-            const alreadyEnabled = (this._xrSessionManager.session as any).worldTrackingState?.planeDetectionState?.enabled;
+            const alreadyEnabled = (session as any).worldTrackingState?.planeDetectionState?.enabled;
             if (alreadyEnabled) {
                 internalInit();
             }
             // fail silently
             return;
         }
-        this._xrSessionManager.session.updateWorldTrackingState({ planeDetectionState: { enabled: true } });
+        session.updateWorldTrackingState({ planeDetectionState: { enabled: true } });
         internalInit();
     }