import { useGLTF } from "@react-three/drei"; import { resolveContentUrl } from "../content/contentManager"; import { dungeonGltfUrls } from "./dungeonAssets"; import type { DungeonDefinition } from "./dungeonTypes"; export type DungeonGltfCacheRelease = (url: string) => void; /** * Removes every environment, collision, navigation, and creature GLB owned by * a regular dungeon from Drei's global suspend-react loader cache. */ export function releaseDungeonGltfCache( definition: DungeonDefinition, release: DungeonGltfCacheRelease = (url) => useGLTF.clear(resolveContentUrl(url)), ): readonly string[] { const urls = dungeonGltfUrls(definition); for (const url of urls) release(url); return urls; }