auto-git:
[add] src/foliage/bundled-foliage-model-loader.ts
This commit is contained in:
34
src/foliage/bundled-foliage-model-loader.ts
Normal file
34
src/foliage/bundled-foliage-model-loader.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { Group } from "three";
|
||||
|
||||
import { createConfiguredGltfLoader } from "../assets/gltf-model-import";
|
||||
|
||||
const bundledFoliageTemplatePromises = new Map<string, Promise<Group>>();
|
||||
|
||||
function getErrorDetail(error: unknown): string {
|
||||
return error instanceof Error && error.message.trim().length > 0
|
||||
? error.message.trim()
|
||||
: "Unknown error.";
|
||||
}
|
||||
|
||||
export function loadBundledFoliageModelTemplate(
|
||||
bundledPath: string
|
||||
): Promise<Group> {
|
||||
const cachedTemplatePromise = bundledFoliageTemplatePromises.get(bundledPath);
|
||||
|
||||
if (cachedTemplatePromise !== undefined) {
|
||||
return cachedTemplatePromise;
|
||||
}
|
||||
|
||||
const templatePromise = createConfiguredGltfLoader()
|
||||
.loadAsync(bundledPath)
|
||||
.then((gltf) => gltf.scene)
|
||||
.catch((error: unknown) => {
|
||||
bundledFoliageTemplatePromises.delete(bundledPath);
|
||||
throw new Error(
|
||||
`Bundled foliage model failed to load from ${bundledPath}: ${getErrorDetail(error)}`
|
||||
);
|
||||
});
|
||||
|
||||
bundledFoliageTemplatePromises.set(bundledPath, templatePromise);
|
||||
return templatePromise;
|
||||
}
|
||||
Reference in New Issue
Block a user