Fix WebGL Context Lost when loading projects due to React Strict Mode unmount
Build and Deploy / build-and-push (push) Successful in 40s
Build and Deploy / build-and-push (push) Successful in 40s
This commit is contained in:
+13
-13
@@ -296,21 +296,21 @@ export default function Editor() {
|
||||
}, [blobURLs]);
|
||||
|
||||
// Dispose old model when new one is loaded
|
||||
const prevLoadedModelRef = useRef<THREE.Object3D | null>(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);
|
||||
|
||||
Reference in New Issue
Block a user