fix: add disposal on unmount in SkyModel and SimpleModel

This commit is contained in:
Tom Boullay
2026-05-14 00:15:52 +02:00
parent b3a3f3557c
commit 260bfea716
2 changed files with 17 additions and 3 deletions
+9 -2
View File
@@ -1,8 +1,9 @@
import { useFrame, useThree } from "@react-three/fiber";
import { useGLTF } from "@react-three/drei";
import { Component, useMemo, useRef, type ReactNode } from "react";
import { Component, useEffect, useMemo, useRef, type ReactNode } from "react";
import * as THREE from "three";
import { useLoggedGLTF } from "@/hooks/three/useLoggedGLTF";
import { disposeObject3D } from "@/utils/three/dispose";
interface SkyModelProps {
modelPath: string;
@@ -80,6 +81,12 @@ function SkyModelContent({
});
const model = useMemo(() => createSkyModel(scene), [scene]);
useEffect(() => {
return () => {
disposeObject3D(model);
};
}, [model]);
useFrame(() => {
groupRef.current?.position.copy(camera.position);
});
@@ -122,5 +129,5 @@ function createSkyMaterial<T extends THREE.Material>(material: T): T {
return skyMaterial as T;
}
useGLTF.preload("/models/skybox/skybox.gltf");
useGLTF.preload("/models/skybox/model.gltf");
useGLTF.preload(LEGACY_SKY_MODEL_PATH);