clean some THREEjs memory leaks (some still left)

This commit is contained in:
HF 2024-01-21 20:57:50 +01:00
parent e497023777
commit d0a98ee9dd
2 changed files with 19 additions and 5 deletions

View File

@ -114,7 +114,6 @@ class Renderer2D extends Renderer {
canvasId,
} = state.canvas;
if (canvasId !== this.canvasId) {
// TODO doesn't immediatelly reload when change from 3d to 2d
this.canvasId = canvasId;
if (canvasId !== null) {
const {

View File

@ -214,8 +214,6 @@ class Renderer3D extends Renderer {
window.addEventListener('resize', this.onWindowResize, false);
this.updateCanvasData(state);
// TODO REMOVE
window.renderer = this;
}
get view() {
@ -223,12 +221,29 @@ class Renderer3D extends Renderer {
}
destructor() {
// TODO is still leaking memory
window.removeEventListener('resize', this.onWindowResize, false);
this.threeRenderer.dispose();
this.controls.dispose();
this.oobGeometry.dispose();
this.oobMaterial.dispose();
delete this.controls;
delete this.scene;
delete this.camera;
delete this.target;
delete this.rollOverMesh;
delete this.plane;
delete this.oobGeometry;
delete this.oobMaterial;
delete this.mouse;
delete this.raycaster;
//
delete this.loadedChunks;
delete this.objects;
const { domElement } = this.threeRenderer;
this.threeRenderer = null;
domElement.remove();
this.threeRenderer.renderLists.dispose();
this.threeRenderer.dispose();
delete this.threeRenderer;
super.destructor();
}