diff --git a/src/pages/Editor.tsx b/src/pages/Editor.tsx index 651e1f9..5e14443 100644 --- a/src/pages/Editor.tsx +++ b/src/pages/Editor.tsx @@ -296,21 +296,21 @@ export default function Editor() { }, [blobURLs]); // Dispose old model when new one is loaded + const prevLoadedModelRef = useRef(null); useEffect(() => { - return () => { - if (loadedModel) { - loadedModel.traverse((child) => { - if (child instanceof THREE.Mesh) { - child.geometry.dispose(); - if (Array.isArray(child.material)) { - child.material.forEach(m => m.dispose()); - } else { - child.material.dispose(); - } + if (prevLoadedModelRef.current && prevLoadedModelRef.current !== loadedModel) { + prevLoadedModelRef.current.traverse((child) => { + if (child instanceof THREE.Mesh) { + child.geometry.dispose(); + if (Array.isArray(child.material)) { + child.material.forEach(m => m.dispose()); + } else { + child.material.dispose(); } - }); - } - }; + } + }); + } + prevLoadedModelRef.current = loadedModel; }, [loadedModel]); const [isLoading, setIsLoading] = useState(false); const [importProgress, setImportProgress] = useState(0);