forked from phenom/healer-man
updated the dungeon loading so it doesnt fail first try
This commit is contained in:
1 parent
e39aebf3a1
commit
7e60864e70
11 files changed
+383
-69
No files matched your search
@@ -1,6 +1,6 @@
|
||||
import { useGLTF } from "@react-three/drei";
|
||||
import { useThree } from "@react-three/fiber";
|
||||
import { useCallback } from "react";
|
||||
import { useCallback, useEffect, type ReactNode } from "react";
|
||||
import type { WebGLRenderer } from "three";
|
||||
import { KTX2Loader, type GLTFLoader } from "three-stdlib";
|
||||
import { resolveContentUrl } from "../content/contentManager";
|
||||
@@ -20,6 +20,18 @@ function ktx2LoaderFor(renderer: WebGLRenderer): KTX2Loader {
|
||||
return loader;
|
||||
}
|
||||
|
||||
/** Owns the decoder worker pool for one Canvas and releases it on renderer teardown. */
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads shipped world and creature GLBs with Meshopt and KTX2 support.
|
||||
* Keeping one KTX2Loader per renderer also keeps Three from creating a worker
|
||||
|
||||
Reference in new issue
Block a user