Refactor entity marker cleanup to properly dispose resources

This commit is contained in:
2026-04-27 00:12:43 +02:00
parent 2df82a9a91
commit 28294a4a20

View File

@@ -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);