Refactor entity marker cleanup to properly dispose resources
This commit is contained in:
@@ -8678,28 +8678,31 @@ export class ViewportHost {
|
||||
private clearEntityMarkers() {
|
||||
for (const renderObjects of this.entityRenderObjects.values()) {
|
||||
this.entityGroup.remove(renderObjects.group);
|
||||
|
||||
if (renderObjects.dispose !== undefined) {
|
||||
renderObjects.dispose();
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const mesh of renderObjects.meshes) {
|
||||
mesh.geometry.dispose();
|
||||
|
||||
if (Array.isArray(mesh.material)) {
|
||||
for (const material of mesh.material) {
|
||||
material.dispose();
|
||||
}
|
||||
} else {
|
||||
mesh.material.dispose();
|
||||
}
|
||||
}
|
||||
this.disposeEntityRenderObjects(renderObjects);
|
||||
}
|
||||
|
||||
this.entityRenderObjects.clear();
|
||||
}
|
||||
|
||||
private disposeEntityRenderObjects(renderObjects: EntityRenderObjects) {
|
||||
if (renderObjects.dispose !== undefined) {
|
||||
renderObjects.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
for (const mesh of renderObjects.meshes) {
|
||||
mesh.geometry.dispose();
|
||||
|
||||
if (Array.isArray(mesh.material)) {
|
||||
for (const material of mesh.material) {
|
||||
material.dispose();
|
||||
}
|
||||
} else {
|
||||
mesh.material.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private clearModelInstances() {
|
||||
for (const renderGroup of this.modelRenderObjects.values()) {
|
||||
this.modelGroup.remove(renderGroup);
|
||||
|
||||
Reference in New Issue
Block a user