Release Healer Man 0.1.18
This commit is contained in:
1 parent
fc8a7a722a
commit
eaddad4134
12 files changed
+107
-42
No files matched your search
@@ -1,6 +1,6 @@
|
||||
import { useGLTF } from "@react-three/drei";
|
||||
import { useThree } from "@react-three/fiber";
|
||||
import { useCallback, useEffect, type ReactNode } from "react";
|
||||
import { useCallback, type ReactNode } from "react";
|
||||
import type { WebGLRenderer } from "three";
|
||||
import { KTX2Loader, type GLTFLoader } from "three-stdlib";
|
||||
import { resolveContentUrl } from "../content/contentManager";
|
||||
@@ -20,15 +20,12 @@ function ktx2LoaderFor(renderer: WebGLRenderer): KTX2Loader {
|
||||
return loader;
|
||||
}
|
||||
|
||||
/** Owns the decoder worker pool for one Canvas and releases it on renderer teardown. */
|
||||
/**
|
||||
* Marks the part of a Canvas that shares its GLTF decoder. KTX2Loader instances
|
||||
* intentionally live with their weakly referenced renderer: disposing one from
|
||||
* React cleanup can abort a GLB that is still decoding or cached by useGLTF.
|
||||
*/
|
||||
export function GameGltfLoaderLifecycle({ children }: { readonly children: ReactNode }) {
|
||||
const renderer = useThree((state) => state.gl);
|
||||
useEffect(() => () => {
|
||||
const loader = ktx2Loaders.get(renderer);
|
||||
if (!loader) return;
|
||||
loader.dispose();
|
||||
ktx2Loaders.delete(renderer);
|
||||
}, [renderer]);
|
||||
return children;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user