fix: harden merged map resource cleanup

This commit is contained in:
Tom Boullay
2026-05-24 23:51:28 +02:00
parent f035195b56
commit 1f6335092a
3 changed files with 47 additions and 34 deletions
@@ -89,25 +89,32 @@ function createMergedMeshes(scene: THREE.Group): MergedMeshData[] {
});
});
return [...groups.values()].map((group) => {
if (group.geometries.length === 1) {
return [...groups.values()]
.map((group) => {
if (group.geometries.length === 1) {
return {
geometry: group.geometries[0] as THREE.BufferGeometry,
material: group.material,
};
}
const geometry = mergeGeometries(group.geometries, false);
for (const sourceGeometry of group.geometries) {
sourceGeometry.dispose();
}
if (!geometry) {
disposeMaterial(group.material);
return null;
}
return {
geometry: group.geometries[0] as THREE.BufferGeometry,
geometry,
material: group.material,
};
}
const geometry = mergeGeometries(group.geometries, false);
for (const sourceGeometry of group.geometries) {
sourceGeometry.dispose();
}
return {
geometry,
material: group.material,
};
});
})
.filter((meshData): meshData is MergedMeshData => meshData !== null);
}
export function EcoleModel({