import { SerializationContext } from "./engine_serialization_core.js"; import { Context } from "./engine_setup.js"; import type { ConstructorConcrete, GLTF, Model, SourceIdentifier, UIDProvider } from "./engine_types.js"; import { NEEDLE_components } from "./extensions/NEEDLE_components.js"; export interface INeedleGltfLoader { createBuiltinComponents(context: Context, gltfId: SourceIdentifier, gltf: GLTF, seed: number | null | UIDProvider, extension?: NEEDLE_components): Promise writeBuiltinComponentData(comp: object, context: SerializationContext); parseSync(context: Context, data: string | ArrayBuffer, path: string, seed: number | UIDProvider | null): Promise; loadSync(context: Context, url: string, sourceId: string, seed: number | UIDProvider | null, prog?: (prog: ProgressEvent) => void): Promise } let gltfLoader: INeedleGltfLoader; let gltfLoaderType: ConstructorConcrete | null = null; export function getLoader(): INeedleGltfLoader { return gltfLoader; } export function registerLoader(loader: ConstructorConcrete) { if (loader === null || loader === undefined) { console.warn("Oh no: someone tried registering a non-existend gltf-loader. When you see this log it might mean that needle-engine is being imported multiple times. Please check your project setup."); return; } if (gltfLoaderType !== loader) { gltfLoaderType = loader; gltfLoader = new loader(); } }