浏览代码

dispose all resources

Raanan Weber 5 年之前
父节点
当前提交
0ac685c4e3
共有 3 个文件被更改,包括 7 次插入1 次删除
  1. 1 0
      src/Cameras/XR/webXRExperienceHelper.ts
  2. 4 1
      src/Cameras/XR/webXRFeaturesManager.ts
  3. 2 0
      src/Cameras/XR/webXRInput.ts

+ 1 - 0
src/Cameras/XR/webXRExperienceHelper.ts

@@ -162,6 +162,7 @@ export class WebXRExperienceHelper implements IDisposable {
         this.onStateChangedObservable.clear();
         this.onInitialXRPoseSetObservable.clear();
         this.sessionManager.dispose();
+        this.scene.activeCamera = this._nonVRCamera;
     }
 
     private _nonXRToXRCamera() {

+ 4 - 1
src/Cameras/XR/webXRFeaturesManager.ts

@@ -270,7 +270,10 @@ export class WebXRFeaturesManager implements IDisposable {
      * dispose this features manager
      */
     dispose(): void {
-        this.getEnabledFeatures().forEach((feature) => this._features[feature].featureImplementation.dispose());
+        this.getEnabledFeatures().forEach((feature) => {
+            this.disableFeature(feature);
+            this._features[feature].featureImplementation.dispose();
+        });
     }
 
 }

+ 2 - 0
src/Cameras/XR/webXRInput.ts

@@ -121,5 +121,7 @@ export class WebXRInput implements IDisposable {
         this.xrSessionManager.onXRFrameObservable.remove(this._frameObserver);
         this.xrSessionManager.onXRSessionInit.remove(this._sessionInitObserver);
         this.xrSessionManager.onXRSessionEnded.remove(this._sessionEndedObserver);
+        this.onControllerAddedObservable.clear();
+        this.onControllerRemovedObservable.clear();
     }
 }