@needle-tools/engine 4.5.0-alpha.1 → 4.5.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/dist/{needle-engine.bundle-3d05185b.js → needle-engine.bundle-1b8f44f4.js} +4945 -4907
  3. package/dist/{needle-engine.bundle-b2e17f0e.light.min.js → needle-engine.bundle-56f095f1.light.min.js} +125 -119
  4. package/dist/{needle-engine.bundle-d7d53476.light.umd.cjs → needle-engine.bundle-9fe9a394.light.umd.cjs} +137 -131
  5. package/dist/{needle-engine.bundle-e4ae93a2.min.js → needle-engine.bundle-baacde19.min.js} +125 -119
  6. package/dist/{needle-engine.bundle-c44e02c7.light.js → needle-engine.bundle-d710d96f.light.js} +4947 -4909
  7. package/dist/{needle-engine.bundle-f496c70e.umd.cjs → needle-engine.bundle-ef2b8438.umd.cjs} +135 -129
  8. package/dist/needle-engine.js +467 -471
  9. package/dist/needle-engine.light.js +467 -471
  10. package/dist/needle-engine.light.min.js +1 -1
  11. package/dist/needle-engine.light.umd.cjs +1 -1
  12. package/dist/needle-engine.min.js +1 -1
  13. package/dist/needle-engine.umd.cjs +1 -1
  14. package/lib/engine/api.d.ts +2 -1
  15. package/lib/engine/api.js +2 -1
  16. package/lib/engine/api.js.map +1 -1
  17. package/lib/engine/engine_context_registry.d.ts +2 -2
  18. package/lib/engine/engine_context_registry.js +2 -2
  19. package/lib/engine/engine_context_registry.js.map +1 -1
  20. package/lib/engine/engine_gltf.d.ts +2 -2
  21. package/lib/engine/engine_gltf_builtin_components.d.ts +5 -1
  22. package/lib/engine/engine_gltf_builtin_components.js +2 -2
  23. package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
  24. package/lib/engine/engine_loaders.callbacks.d.ts +62 -0
  25. package/lib/engine/engine_loaders.callbacks.js +56 -0
  26. package/lib/engine/engine_loaders.callbacks.js.map +1 -0
  27. package/lib/engine/engine_loaders.d.ts +44 -9
  28. package/lib/engine/engine_loaders.gltf.d.ts +13 -0
  29. package/lib/engine/engine_loaders.gltf.js +63 -0
  30. package/lib/engine/engine_loaders.gltf.js.map +1 -0
  31. package/lib/engine/engine_loaders.js +305 -48
  32. package/lib/engine/engine_loaders.js.map +1 -1
  33. package/lib/engine/engine_types.d.ts +7 -1
  34. package/lib/engine/engine_types.js +7 -0
  35. package/lib/engine/engine_types.js.map +1 -1
  36. package/lib/engine/engine_utils_format.d.ts +5 -3
  37. package/lib/engine/engine_utils_format.js +26 -10
  38. package/lib/engine/engine_utils_format.js.map +1 -1
  39. package/lib/engine/extensions/extensions.d.ts +3 -2
  40. package/lib/engine/extensions/extensions.js +10 -6
  41. package/lib/engine/extensions/extensions.js.map +1 -1
  42. package/lib/engine/webcomponents/needle-engine.attributes.d.ts +3 -6
  43. package/lib/engine/webcomponents/needle-engine.js +2 -2
  44. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  45. package/lib/engine/webcomponents/needle-engine.loading.js +26 -34
  46. package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
  47. package/lib/engine-components/AvatarLoader.js +1 -1
  48. package/lib/engine-components/AvatarLoader.js.map +1 -1
  49. package/lib/engine-components/ContactShadows.d.ts +12 -0
  50. package/lib/engine-components/ContactShadows.js +23 -0
  51. package/lib/engine-components/ContactShadows.js.map +1 -1
  52. package/lib/engine-components/webxr/controllers/XRControllerModel.js +4 -3
  53. package/lib/engine-components/webxr/controllers/XRControllerModel.js.map +1 -1
  54. package/package.json +1 -1
  55. package/src/engine/api.ts +2 -1
  56. package/src/engine/engine_context_registry.ts +2 -2
  57. package/src/engine/engine_gltf.ts +2 -2
  58. package/src/engine/engine_gltf_builtin_components.ts +7 -7
  59. package/src/engine/engine_loaders.callbacks.ts +88 -0
  60. package/src/engine/engine_loaders.gltf.ts +82 -0
  61. package/src/engine/engine_loaders.ts +332 -54
  62. package/src/engine/engine_types.ts +34 -18
  63. package/src/engine/engine_utils_format.ts +32 -14
  64. package/src/engine/extensions/extensions.ts +12 -7
  65. package/src/engine/webcomponents/needle-engine.attributes.ts +3 -6
  66. package/src/engine/webcomponents/needle-engine.loading.ts +28 -36
  67. package/src/engine/webcomponents/needle-engine.ts +2 -2
  68. package/src/engine-components/AvatarLoader.ts +1 -1
  69. package/src/engine-components/ContactShadows.ts +24 -0
  70. package/src/engine-components/webxr/controllers/XRControllerModel.ts +4 -5
  71. package/src/engine/engine_scenetools.ts +0 -379
@@ -1,63 +1,320 @@
1
- import { addDracoAndKTX2Loaders as addDracoAndKTX2LoadersGLTFProgressive, configureLoader, createLoaders, setDracoDecoderLocation, setKTX2TranscoderLocation } from '@needle-tools/gltf-progressive';
2
- import { getParam } from "./engine_utils.js";
3
- const debug = getParam("debugdecoders");
4
- let loaders = null;
5
- function ensureLoaders() {
6
- if (!loaders) {
7
- const res = createLoaders(null);
8
- loaders = { dracoLoader: res.dracoLoader, ktx2Loader: res.ktx2Loader, meshoptDecoder: res.meshoptDecoder };
1
+ import { BufferGeometry, Color, Mesh, MeshStandardMaterial, Object3D } from "three";
2
+ import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader.js';
3
+ import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
4
+ import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';
5
+ import { showBalloonMessage } from "./debug/index.js";
6
+ import { getLoader, registerLoader } from "./engine_gltf.js";
7
+ import { createBuiltinComponents, writeBuiltinComponentData } from "./engine_gltf_builtin_components.js";
8
+ import { registeredModelLoaderCallbacks } from "./engine_loaders.callbacks.js";
9
+ import * as loaders from "./engine_loaders.gltf.js";
10
+ import { registerPrewarmObject } from "./engine_mainloop_utils.js";
11
+ import { Context } from "./engine_setup.js";
12
+ import { postprocessFBXMaterials } from "./engine_three_utils.js";
13
+ import { isGLTFModel } from "./engine_types.js";
14
+ import * as utils from "./engine_utils.js";
15
+ import { tryDetermineFileTypeFromURL } from "./engine_utils_format.js";
16
+ import { invokeLoadedImportPluginHooks, registerComponentExtension, registerExtensions } from "./extensions/extensions.js";
17
+ /** @internal */
18
+ export class NeedleLoader {
19
+ createBuiltinComponents(context, gltfId, gltf, seed, extension) {
20
+ return createBuiltinComponents(context, gltfId, gltf, seed, extension);
21
+ }
22
+ writeBuiltinComponentData(comp, context) {
23
+ return writeBuiltinComponentData(comp, context);
24
+ }
25
+ parseSync(context, data, path, seed) {
26
+ return parseSync(context, data, path, seed);
27
+ }
28
+ loadSync(context, url, sourceId, seed, prog) {
29
+ return loadSync(context, url, sourceId, seed, prog);
9
30
  }
10
- return loaders;
11
31
  }
12
- export function setDracoDecoderPath(path) {
13
- if (path !== undefined && typeof path === "string") {
14
- setDracoDecoderLocation(path);
32
+ registerLoader(NeedleLoader); // Register the loader
33
+ const printGltf = utils.getParam("printGltf") || utils.getParam("printgltf");
34
+ const debugFileTypes = utils.getParam("debugfileformat");
35
+ export async function onCreateLoader(url, context) {
36
+ const type = await tryDetermineFileTypeFromURL(url, { useExtension: true }) || "unknown";
37
+ if (debugFileTypes)
38
+ console.debug(`Determined file type: '${type}' for url '${url}'`);
39
+ for (const callback of registeredModelLoaderCallbacks) {
40
+ const loader = callback({ context, url, filetype: type });
41
+ if (loader) {
42
+ console.debug("Using custom loader");
43
+ return loader;
44
+ }
45
+ }
46
+ switch (type) {
47
+ default:
48
+ console.warn(`Unknown file type: ${type}`);
49
+ case "unknown":
50
+ {
51
+ console.warn("Unknown file type. Assuming glTF:", url);
52
+ const loader = new GLTFLoader();
53
+ await registerExtensions(loader, context, url);
54
+ return loader;
55
+ }
56
+ case "fbx":
57
+ return new FBXLoader();
58
+ case "obj":
59
+ return new OBJLoader();
60
+ case "usd":
61
+ case "usda":
62
+ case "usdz":
63
+ {
64
+ console.warn(type.toUpperCase() + " files are not supported.");
65
+ // return new USDZLoader();
66
+ return null;
67
+ }
68
+ case "gltf":
69
+ case "glb":
70
+ case "vrm":
71
+ {
72
+ const loader = new GLTFLoader();
73
+ await registerExtensions(loader, context, url);
74
+ return loader;
75
+ }
15
76
  }
16
77
  }
17
- export function setDracoDecoderType(type) {
18
- if (type !== undefined && typeof type === "string") {
19
- if (type !== "js") {
20
- const loaders = ensureLoaders();
21
- if (debug)
22
- console.log("Setting draco decoder type to", type);
23
- loaders.dracoLoader.setDecoderConfig({ type: type });
78
+ /**
79
+ * Load a 3D model file from a remote URL
80
+ * @param url URL to glTF, FBX or OBJ file
81
+ * @param options
82
+ * @returns A promise that resolves to the loaded model or undefined if the loading failed
83
+ */
84
+ export function loadAsset(url, options) {
85
+ return loadSync(options?.context || Context.Current, url, url, options?.seed || null, options?.onprogress);
86
+ }
87
+ /** Load a gltf file from a url. This is the core method used by Needle Engine to load gltf files. All known extensions are registered here.
88
+ * @param context The current context
89
+ * @param data The gltf data as string or ArrayBuffer
90
+ * @param path The path to the gltf file
91
+ * @param seed The seed for generating unique ids
92
+ * @returns The loaded gltf object
93
+ */
94
+ export async function parseSync(context, data, path, seed) {
95
+ if (typeof path !== "string") {
96
+ console.warn("Parse gltf binary without path, this might lead to errors in resolving extensions. Please provide the source path of the gltf/glb file", path, typeof path);
97
+ path = "";
98
+ }
99
+ if (printGltf)
100
+ console.log("Parse glTF", path);
101
+ const loader = await onCreateLoader(path, context);
102
+ if (!loader) {
103
+ return undefined;
104
+ }
105
+ const { componentsExtension } = onBeforeLoad(loader, context);
106
+ // Handle OBJ Loader
107
+ if (loader instanceof OBJLoader) {
108
+ if (typeof data !== "string") {
109
+ data = new TextDecoder().decode(data);
110
+ }
111
+ const res = loader.parse(data);
112
+ return await onAfterLoaded(loader, context, path, res, seed, componentsExtension);
113
+ }
114
+ // Handle any other loader that is not a GLTFLoader
115
+ const isNotGLTF = !(loader instanceof GLTFLoader);
116
+ if (isNotGLTF) {
117
+ if (loader.parse === undefined) {
118
+ console.error("Loader does not support parse");
119
+ return undefined;
24
120
  }
121
+ const res = loader.parse(data, path);
122
+ return await onAfterLoaded(loader, context, path, res, seed, componentsExtension);
25
123
  }
124
+ return new Promise((resolve, reject) => {
125
+ try {
126
+ // GltfLoader expects a base path for resolving referenced assets
127
+ // https://threejs.org/docs/#examples/en/loaders/GLTFLoader.parse
128
+ // so we make sure that "path" is never a file path
129
+ let gltfLoaderPath = path.split("?")[0].trimEnd();
130
+ // This assumes that the path is a FILE path and not already a directory
131
+ // (it does not end with "/") – see https://linear.app/needle/issue/NE-6075
132
+ // strip file from path
133
+ const parts = gltfLoaderPath.split("/");
134
+ // check if the last part is a /, otherwise remove it
135
+ if (parts.length > 0 && parts[parts.length - 1] !== "")
136
+ parts.pop();
137
+ gltfLoaderPath = parts.join("/");
138
+ if (!gltfLoaderPath.endsWith("/"))
139
+ gltfLoaderPath += "/";
140
+ loader.resourcePath = gltfLoaderPath;
141
+ loader.parse(data, "", async (res) => {
142
+ const model = await onAfterLoaded(loader, context, path, res, seed, componentsExtension);
143
+ resolve(model);
144
+ }, err => {
145
+ console.error("Loading asset at \"" + path + "\" failed\n", err);
146
+ resolve(undefined);
147
+ });
148
+ }
149
+ catch (err) {
150
+ console.error(err);
151
+ reject(err);
152
+ }
153
+ });
26
154
  }
27
- export function setKtx2TranscoderPath(path) {
28
- if (path !== undefined && typeof path === "string") {
29
- setKTX2TranscoderLocation(path);
155
+ /**
156
+ * Load a gltf file from a url. This is the core method used by Needle Engine to load gltf files. All known extensions are registered here.
157
+ * @param context The current context
158
+ * @param url The url to the gltf file
159
+ * @param sourceId The source id of the gltf file - this is usually the url
160
+ * @param seed The seed for generating unique ids
161
+ * @param prog A progress callback
162
+ * @returns The loaded gltf object
163
+ */
164
+ export async function loadSync(context, url, sourceId, seed, prog) {
165
+ checkIfUserAttemptedToLoadALocalFile(url);
166
+ // better to create new loaders every time
167
+ // (maybe we can cache them...)
168
+ // but due to the async nature and potentially triggering multiple loads at the same time
169
+ // we need to make sure the extensions dont override each other
170
+ // creating new loaders should not be expensive as well
171
+ const loader = await onCreateLoader(url, context);
172
+ if (!loader) {
173
+ return undefined;
30
174
  }
175
+ const { componentsExtension } = onBeforeLoad(loader, context);
176
+ // Handle any loader that is not a GLTFLoader
177
+ if (!(loader instanceof GLTFLoader)) {
178
+ const res = await loader.loadAsync(url, prog);
179
+ return await onAfterLoaded(loader, context, url, res, seed, componentsExtension);
180
+ }
181
+ return new Promise((resolve, reject) => {
182
+ try {
183
+ loader.load(url, async (res) => {
184
+ const model = await onAfterLoaded(loader, context, sourceId, res, seed, componentsExtension);
185
+ resolve(model);
186
+ }, evt => {
187
+ prog?.call(loader, evt);
188
+ }, err => {
189
+ console.error("Loading asset at \"" + url + "\" failed\n", err);
190
+ resolve(undefined);
191
+ });
192
+ }
193
+ catch (err) {
194
+ console.error(err);
195
+ reject(err);
196
+ }
197
+ });
31
198
  }
32
- export function setMeshoptDecoder(_meshoptDecoder) {
33
- if (_meshoptDecoder !== undefined) {
34
- const loaders = ensureLoaders();
35
- loaders.meshoptDecoder = _meshoptDecoder;
199
+ /** Call before loading a model */
200
+ function onBeforeLoad(loader, context) {
201
+ const componentsExtension = registerComponentExtension(loader);
202
+ if (loader instanceof GLTFLoader) {
203
+ loaders.addDracoAndKTX2Loaders(loader, context);
204
+ }
205
+ return { componentsExtension };
206
+ }
207
+ /** Call after a 3d model has been loaded to compile shaders and construct the needle engine model structure with relevant metadata (if necessary) */
208
+ async function onAfterLoaded(loader, context, gltfId, model, seed, componentsExtension) {
209
+ if (printGltf)
210
+ console.warn("Loaded", gltfId, model);
211
+ // Handle loader was registered but no model was returned - should not completely break the engine
212
+ if (model == null) {
213
+ console.error(`Loaded model is null '${gltfId}' - please make sure the loader is registered correctly`);
214
+ return {
215
+ scene: new Object3D(),
216
+ animations: [],
217
+ scenes: []
218
+ };
219
+ }
220
+ // Handle OBJ or FBX loader results
221
+ if (model instanceof Object3D) {
222
+ model = {
223
+ scene: model,
224
+ animations: model.animations,
225
+ scenes: [model]
226
+ };
227
+ }
228
+ // Handle STL loader results
229
+ else if (model instanceof BufferGeometry) {
230
+ const mat = new MeshStandardMaterial({
231
+ color: new Color(0xdddddd)
232
+ });
233
+ const mesh = new Mesh(model, mat);
234
+ model = {
235
+ scene: mesh,
236
+ animations: [],
237
+ scenes: [mesh]
238
+ };
239
+ }
240
+ // Remove query parameters from gltfId
241
+ if (gltfId.includes("?")) {
242
+ gltfId = gltfId.split("?")[0];
243
+ }
244
+ // assign animations of loaded glTF to all scenes
245
+ for (const scene of model.scenes) {
246
+ if (scene && !scene.animations?.length) {
247
+ scene.animations = [...model.animations];
248
+ }
249
+ }
250
+ // E.g. fbx material cleanup
251
+ postprocessLoadedFile(loader, model);
252
+ // load components
253
+ if (isGLTFModel(model)) {
254
+ invokeLoadedImportPluginHooks(gltfId, model, context);
255
+ await getLoader().createBuiltinComponents(context, gltfId, model, seed, componentsExtension || undefined);
36
256
  }
257
+ // Warmup the scene
258
+ await compileAsync(model.scene, context, context.mainCamera);
259
+ return model;
37
260
  }
261
+ async function compileAsync(scene, context, camera) {
262
+ if (!camera)
263
+ camera = context.mainCamera;
264
+ try {
265
+ if (camera) {
266
+ await context.renderer.compileAsync(scene, camera, context.scene)
267
+ .catch(err => {
268
+ console.warn(err.message);
269
+ });
270
+ }
271
+ else
272
+ registerPrewarmObject(scene, context);
273
+ }
274
+ catch (err) {
275
+ console.warn(err?.message || err);
276
+ }
277
+ }
278
+ function checkIfUserAttemptedToLoadALocalFile(url) {
279
+ const fullurl = new URL(url, window.location.href).href;
280
+ if (fullurl.startsWith("file://")) {
281
+ const msg = "Hi - it looks like you are trying to load a local file which will not work. You need to use a webserver to serve your files.\nPlease refer to the documentation on <a href=\"https://fwd.needle.tools/needle-engine/docs/local-server\">https://docs.needle.tools</a> or ask for help in our <a href=\"https://discord.needle.tools\">discord community</a>";
282
+ showBalloonMessage(msg);
283
+ console.warn(msg);
284
+ }
285
+ }
286
+ // function _downloadGltf(data: string | ArrayBuffer) {
287
+ // if (typeof data === "string") {
288
+ // const a = document.createElement("a") as HTMLAnchorElement;
289
+ // a.href = data;
290
+ // a.download = data.split("/").pop()!;
291
+ // a.click();
292
+ // }
293
+ // else {
294
+ // const blob = new Blob([data], { type: "application/octet-stream" });
295
+ // const url = window.URL.createObjectURL(blob);
296
+ // const a = document.createElement("a") as HTMLAnchorElement;
297
+ // a.href = url;
298
+ // a.download = "download.glb";
299
+ // a.click();
300
+ // }
301
+ // }
38
302
  /**
39
- * Add Draco, Meshopt and KTX2 loaders to a GLTFLoader instance.
40
- * @param loader The GLTFLoader instance to add the loaders to.
41
- * @param context The context object containing the renderer.
42
- * @returns The GLTFLoader instance with the loaders added.
303
+ * Postprocess the loaded file. This is used to apply any custom postprocessing to the loaded file.
43
304
  */
44
- export function addDracoAndKTX2Loaders(loader, context) {
45
- const loaders = ensureLoaders();
46
- if (context.renderer) {
47
- loaders.ktx2Loader.detectSupport(context.renderer);
48
- }
49
- else
50
- console.warn("No renderer provided to detect ktx2 support - loading KTX2 textures will probably fail");
51
- addDracoAndKTX2LoadersGLTFProgressive(loader);
52
- if (!loader.dracoLoader)
53
- loader.setDRACOLoader(loaders.dracoLoader);
54
- if (!loader.ktx2Loader)
55
- loader.setKTX2Loader(loaders.ktx2Loader);
56
- if (!loader.meshoptDecoder)
57
- loader.setMeshoptDecoder(loaders.meshoptDecoder);
58
- configureLoader(loader, {
59
- progressive: true,
60
- });
61
- return loader;
305
+ function postprocessLoadedFile(loader, result) {
306
+ if (loader instanceof FBXLoader || loader instanceof OBJLoader) {
307
+ let obj = result;
308
+ if (!(obj instanceof Object3D)) {
309
+ obj = result.scene;
310
+ }
311
+ obj.traverse((child) => {
312
+ const mesh = child;
313
+ // See https://github.com/needle-tools/three.js/blob/b8df3843ff123ac9dc0ed0d3ccc5b568f840c804/examples/webgl_loader_multiple.html#L377
314
+ if (mesh?.isMesh) {
315
+ postprocessFBXMaterials(mesh, mesh.material);
316
+ }
317
+ });
318
+ }
62
319
  }
63
320
  //# sourceMappingURL=engine_loaders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine_loaders.js","sourceRoot":"","sources":["../../src/engine/engine_loaders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,IAAI,qCAAqC,EAAE,eAAe,EAAE,aAAa,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAOrM,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;AAExC,IAAI,OAAO,GAAuG,IAAI,CAAC;AAEvH,SAAS,aAAa;IAClB,IAAI,CAAC,OAAO,EAAE;QACV,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;KAC9G;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAwB;IACxD,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAChD,uBAAuB,CAAC,IAAI,CAAC,CAAC;KACjC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAwB;IACxD,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAChD,IAAI,IAAI,KAAK,IAAI,EAAE;YACf,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;YAChC,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;YAC9D,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;SACxD;KACJ;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAChD,yBAAyB,CAAC,IAAI,CAAC,CAAC;KACnC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,eAAoB;IAClD,IAAI,eAAe,KAAK,SAAS,EAAE;QAC/B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,OAAO,CAAC,cAAc,GAAG,eAAe,CAAC;KAC5C;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAkB,EAAE,OAAkC;IAEzF,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAEhC,IAAI,OAAO,CAAC,QAAQ,EAAE;QAClB,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACtD;;QAEG,OAAO,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;IAE3G,qCAAqC,CAAC,MAAM,CAAC,CAAC;IAE9C,IAAI,CAAC,MAAM,CAAC,WAAW;QACnB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAE,MAAc,CAAC,UAAU;QAC3B,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAE,MAAc,CAAC,cAAc;QAC/B,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAErD,eAAe,CAAC,MAAM,EAAE;QACpB,WAAW,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"engine_loaders.js","sourceRoot":"","sources":["../../src/engine/engine_loaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,KAAK,EAAoB,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAa,UAAU,EAAE,MAAM,0CAA0C,CAAA;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,SAAS,EAA0B,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AACzG,OAAO,EAAgB,8BAA8B,EAAyB,MAAM,+BAA+B,CAAC;AACpH,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAe,WAAW,EAA2B,MAAM,mBAAmB,CAAC;AACtF,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAG3H,gBAAgB;AAChB,MAAM,OAAO,YAAY;IACrB,uBAAuB,CAAC,OAAgB,EAAE,MAAc,EAAE,IAAS,EAAE,IAAiC,EAAE,SAAyC;QAC7I,OAAO,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC;IACD,yBAAyB,CAAC,IAAS,EAAE,OAA6B;QAC9D,OAAO,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IACD,SAAS,CAAC,OAAgB,EAAE,IAA0B,EAAE,IAAY,EAAE,IAAiC;QACnG,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,QAAQ,CAAC,OAAgB,EAAE,GAAW,EAAE,QAAgB,EAAE,IAAiC,EAAE,IAAiD;QAC1I,OAAO,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;CACJ;AACD,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,sBAAsB;AAGpD,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC7E,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAKzD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,OAAgB;IAE9D,MAAM,IAAI,GAAG,MAAM,2BAA2B,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC;IACzF,IAAI,cAAc;QAAE,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,cAAc,GAAG,GAAG,CAAC,CAAC;IAEtF,KAAK,MAAM,QAAQ,IAAI,8BAA8B,EAAE;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,EAAE;YACR,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACrC,OAAO,MAAM,CAAC;SACjB;KACJ;IAED,QAAQ,IAAI,EAAE;QACV;YACI,OAAO,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAC/C,KAAK,SAAS;YACV;gBACI,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC/C,OAAO,MAAM,CAAC;aACjB;QACL,KAAK,KAAK;YACN,OAAO,IAAI,SAAS,EAAE,CAAC;QAC3B,KAAK,KAAK;YACN,OAAO,IAAI,SAAS,EAAE,CAAC;QAC3B,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACP;gBACI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,2BAA2B,CAAC,CAAC;gBAC/D,2BAA2B;gBAC3B,OAAO,IAAI,CAAC;aACf;QACL,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACN;gBACI,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC/C,OAAO,MAAM,CAAC;aACjB;KACR;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,OAAwG;IAC3I,OAAO,QAAQ,CAAC,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/G,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB,EAAE,IAA0B,EAAE,IAAY,EAAE,IAAiC;IACzH,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC1B,OAAO,CAAC,IAAI,CAAC,wIAAwI,EAAE,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC;QAC1K,IAAI,GAAG,EAAE,CAAC;KACb;IACD,IAAI,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,EAAE;QACT,OAAO,SAAS,CAAC;KACpB;IAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9D,oBAAoB;IACpB,IAAI,MAAM,YAAY,SAAS,EAAE;QAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAAE,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAAE;QACxE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;KACrF;IACD,mDAAmD;IACnD,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,YAAY,UAAU,CAAC,CAAC;IAClD,IAAI,SAAS,EAAE;QACX,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,OAAO,SAAS,CAAC;SACpB;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;KACrF;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI;YAEA,iEAAiE;YACjE,iEAAiE;YACjE,mDAAmD;YACnD,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAClD,wEAAwE;YACxE,2EAA2E;YAC3E,uBAAuB;YACvB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,qDAAqD;YACrD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;gBAClD,KAAK,CAAC,GAAG,EAAE,CAAC;YAChB,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,cAAc,IAAI,GAAG,CAAC;YAEzD,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;gBAC/B,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;gBACzF,OAAO,CAAC,KAAK,CAAC,CAAC;YAEnB,CAAC,EAAE,GAAG,CAAC,EAAE;gBACL,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,IAAI,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC;gBACjE,OAAO,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;SACN;QACD,OAAO,GAAG,EAAE;YACR,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC;SACf;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAgB,EAAE,GAAW,EAAE,QAAgB,EAAE,IAAiC,EAAE,IAA8B;IAE7I,oCAAoC,CAAC,GAAG,CAAC,CAAC;IAE1C,0CAA0C;IAC1C,+BAA+B;IAC/B,yFAAyF;IACzF,+DAA+D;IAC/D,uDAAuD;IACvD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,EAAE;QACT,OAAO,SAAS,CAAC;KACpB;IAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9D,6CAA6C;IAC7C,IAAI,CAAC,CAAC,MAAM,YAAY,UAAU,CAAC,EAAE;QACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;KACpF;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI;YACA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;gBACzB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;gBAC7F,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,EAAE,GAAG,CAAC,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC5B,CAAC,EAAE,GAAG,CAAC,EAAE;gBACL,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,GAAG,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC;gBAChE,OAAO,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;SACN;QACD,OAAO,GAAG,EAAE;YACR,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC;SACf;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,kCAAkC;AAClC,SAAS,YAAY,CAAC,MAA6B,EAAE,OAAgB;IACjE,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC/D,IAAI,MAAM,YAAY,UAAU,EAAE;QAC9B,OAAO,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnD;IACD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AACnC,CAAC;AAGD,qJAAqJ;AACrJ,KAAK,UAAU,aAAa,CAAC,MAA6B,EAAE,OAAgB,EAAE,MAAc,EAAE,KAA4B,EAAE,IAAiC,EAAE,mBAA6C;IACxM,IAAI,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAErD,kGAAkG;IAClG,IAAI,KAAK,IAAI,IAAI,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,MAAM,yDAAyD,CAAC,CAAC;QACxG,OAAO;YACH,KAAK,EAAE,IAAI,QAAQ,EAAE;YACrB,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;SACb,CAAC;KACL;IAED,mCAAmC;IACnC,IAAI,KAAK,YAAY,QAAQ,EAAE;QAC3B,KAAK,GAAG;YACJ,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,CAAC,KAAK,CAAC;SAClB,CAAA;KACJ;IACD,4BAA4B;SACvB,IAAI,KAAK,YAAY,cAAc,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC;YACjC,KAAK,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC;SAC7B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,KAAK,GAAG;YACJ,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,CAAC,IAAI,CAAC;SACjB,CAAA;KACJ;IAGD,sCAAsC;IACtC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACjC;IAED,iDAAiD;IACjD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;QAC9B,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE;YACpC,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;SAC5C;KACJ;IAED,4BAA4B;IAC5B,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAErC,kBAAkB;IAClB,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;QACpB,6BAA6B,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,SAAS,EAAE,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,IAAI,SAAS,CAAC,CAAC;KAC7G;IAED,mBAAmB;IACnB,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAE7D,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAAe,EAAE,OAAgB,EAAE,MAAsB;IACjF,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IACzC,IAAI;QACA,IAAI,MAAM,EAAE;YACR,MAAM,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;iBAC5D,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;SACV;;YAEG,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAC7C;IACD,OAAO,GAAgB,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;KACrC;AACL,CAAC;AAED,SAAS,oCAAoC,CAAC,GAAW;IACrD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IACxD,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC/B,MAAM,GAAG,GAAG,6VAA6V,CAAC;QAC1W,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACpB;AACL,CAAC;AAED,uDAAuD;AACvD,sCAAsC;AACtC,sEAAsE;AACtE,yBAAyB;AACzB,+CAA+C;AAC/C,qBAAqB;AACrB,QAAQ;AACR,aAAa;AACb,+EAA+E;AAC/E,wDAAwD;AACxD,sEAAsE;AACtE,wBAAwB;AACxB,uCAAuC;AACvC,qBAAqB;AACrB,QAAQ;AACR,IAAI;AAEJ;;GAEG;AACH,SAAS,qBAAqB,CAAC,MAAc,EAAE,MAAa;IAExD,IAAI,MAAM,YAAY,SAAS,IAAI,MAAM,YAAY,SAAS,EAAE;QAE5D,IAAI,GAAG,GAAqB,MAAM,CAAC;QACnC,IAAI,CAAC,CAAC,GAAG,YAAY,QAAQ,CAAC,EAAE;YAC5B,GAAG,GAAI,MAAe,CAAC,KAAK,CAAC;SAChC;QAED,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,IAAI,GAAG,KAAa,CAAC;YAC3B,sIAAsI;YACtI,IAAI,IAAI,EAAE,MAAM,EAAE;gBACd,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAoB,CAAC,CAAC;aAC5D;QACL,CAAC,CAAC,CAAC;KACN;AACL,CAAC"}
@@ -35,8 +35,14 @@ export type OBJ = {
35
35
  scene: Object3D;
36
36
  scenes: Object3D[];
37
37
  };
38
+ export type CustomModel = {
39
+ animations: AnimationClip[];
40
+ scene: Object3D;
41
+ scenes: Object3D[];
42
+ };
38
43
  /** All possible model types that Needle Engine can load */
39
- export type Model = (GLTF | FBX | OBJ);
44
+ export type Model = (GLTF | FBX | OBJ | CustomModel);
45
+ export declare function isGLTFModel(model: Model): model is GLTF;
40
46
  /** A loaded model */
41
47
  export type LoadedModel = {
42
48
  src: string;
@@ -1,5 +1,12 @@
1
1
  import { Vector3 } from "three";
2
2
  import { CircularBuffer } from "./engine_utils.js";
3
+ export function isGLTFModel(model) {
4
+ const gltf = model;
5
+ if (gltf.parser && gltf.parser.json) {
6
+ return true;
7
+ }
8
+ return false;
9
+ }
3
10
  export var HideFlags;
4
11
  (function (HideFlags) {
5
12
  HideFlags[HideFlags["None"] = 0] = "None";
@@ -1 +1 @@
1
- {"version":3,"file":"engine_types.js","sourceRoot":"","sources":["../../src/engine/engine_types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine_types.js","sourceRoot":"","sources":["../../src/engine/engine_types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * The supported file types that can be determined by the engine. Used in {@link tryDetermineFileTypeFromURL} and {@link tryDetermineFileTypeFromBinary}
3
3
  */
4
- export declare type FileType = "gltf" | "glb" | "vrm" | "fbx" | "obj" | "usdz" | "usd" | "usda" | "unknown";
4
+ export declare type FileType = "gltf" | "glb" | "vrm" | "fbx" | "obj" | "usdz" | "usd" | "usda" | "unknown" | ({} & string);
5
5
  /**
6
6
  * Tries to determine the file type of a file from its URL
7
7
  * This method does perform a range request to the server to get the first few bytes of the file
@@ -14,8 +14,10 @@ export declare type FileType = "gltf" | "glb" | "vrm" | "fbx" | "obj" | "usdz" |
14
14
  * const fileType = await tryDetermineFileTypeFromURL(url);
15
15
  * console.log(fileType); // "glb"
16
16
  */
17
- export declare function tryDetermineFileTypeFromURL(url: string, useExtension?: boolean): Promise<FileType>;
17
+ export declare function tryDetermineFileTypeFromURL(url: string, opts: {
18
+ useExtension: boolean;
19
+ }): Promise<FileType>;
18
20
  /** Attempts to determine the file type of a binary file by looking at the first few bytes of the file.
19
21
  * @hidden
20
22
  */
21
- export declare function tryDetermineFileTypeFromBinary(data: ArrayBuffer, response: Response): FileType;
23
+ export declare function tryDetermineFileTypeFromBinary(url: string, data: ArrayBuffer, response: Response): FileType;
@@ -1,4 +1,5 @@
1
1
  import { isDevEnvironment } from "./debug/index.js";
2
+ import { registeredFileTypeCallbacks } from "./engine_loaders.callbacks.js";
2
3
  import { getParam } from "./engine_utils.js";
3
4
  const debug = getParam("debugfileformat");
4
5
  /**
@@ -13,7 +14,8 @@ const debug = getParam("debugfileformat");
13
14
  * const fileType = await tryDetermineFileTypeFromURL(url);
14
15
  * console.log(fileType); // "glb"
15
16
  */
16
- export async function tryDetermineFileTypeFromURL(url, useExtension = true) {
17
+ export async function tryDetermineFileTypeFromURL(url, opts) {
18
+ const { useExtension = true } = opts;
17
19
  if (useExtension) {
18
20
  // We want to save on requests so we first check the file extension if there's any
19
21
  // In some scenarios we might not have one (e.g. if we're dealing with blob: files or if the URL doesn't contain the filename)
@@ -53,6 +55,7 @@ export async function tryDetermineFileTypeFromURL(url, useExtension = true) {
53
55
  }
54
56
  // If the URL doesnt contain a filetype we need to check the header
55
57
  // This is the case for example if we load a file from a data url
58
+ const originalUrl = url;
56
59
  if (url.startsWith("blob:")) {
57
60
  // We can't modify the blob URL
58
61
  }
@@ -73,7 +76,7 @@ export async function tryDetermineFileTypeFromURL(url, useExtension = true) {
73
76
  });
74
77
  if (header?.ok) {
75
78
  const data = await header.arrayBuffer();
76
- const res = tryDetermineFileTypeFromBinary(data, header);
79
+ const res = tryDetermineFileTypeFromBinary(originalUrl, data, header);
77
80
  if (debug)
78
81
  console.log("Determined file type from header: " + res);
79
82
  return res;
@@ -83,7 +86,7 @@ export async function tryDetermineFileTypeFromURL(url, useExtension = true) {
83
86
  /** Attempts to determine the file type of a binary file by looking at the first few bytes of the file.
84
87
  * @hidden
85
88
  */
86
- export function tryDetermineFileTypeFromBinary(data, response) {
89
+ export function tryDetermineFileTypeFromBinary(url, data, response) {
87
90
  if (data.byteLength < 4) {
88
91
  return "unknown";
89
92
  }
@@ -175,13 +178,6 @@ export function tryDetermineFileTypeFromBinary(data, response) {
175
178
  console.debug("OBJ detected (mtllib)");
176
179
  return "obj";
177
180
  }
178
- if (isDevEnvironment() || debug) {
179
- const text = new TextDecoder().decode(data.slice(0, 16));
180
- console.debug("Could not determine file type from binary data: \"" + text + "...\"", bytes);
181
- }
182
- else {
183
- console.debug("Could not determine file type from binary data", bytes);
184
- }
185
181
  // const text = new TextDecoder().decode(data);
186
182
  // if (text.startsWith("Kaydara FBX")) {
187
183
  // return "fbx";
@@ -189,6 +185,26 @@ export function tryDetermineFileTypeFromBinary(data, response) {
189
185
  // else if (text.startsWith("glTF")) {
190
186
  // return "gltf";
191
187
  // }
188
+ for (const callback of registeredFileTypeCallbacks) {
189
+ const mimetype = callback({
190
+ url: url,
191
+ response: response,
192
+ contentType: response.headers.get("content-type"),
193
+ bytes: bytes
194
+ });
195
+ if (mimetype) {
196
+ if (debug)
197
+ console.debug(`Mimetype callback returned: ${mimetype}`);
198
+ return mimetype;
199
+ }
200
+ }
201
+ if (isDevEnvironment() || debug) {
202
+ const text = new TextDecoder().decode(data.slice(0, Math.min(data.byteLength, 32)));
203
+ console.warn(`Could not determine file type.\n\nConsider registering a custom loader via the 'onCreateCustomModelLoader' callback: 'NeedleEngineModelLoader.onCreateCustomModelLoader(args => { })'\n\nContent-Type: \"${response.headers.get("content-type")}\n\"Text: \"${text}\"\nBinary:`, bytes);
204
+ }
205
+ else {
206
+ console.debug(`Could not determine file type from binary data`);
207
+ }
192
208
  return "unknown";
193
209
  }
194
210
  //# sourceMappingURL=engine_utils_format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine_utils_format.js","sourceRoot":"","sources":["../../src/engine/engine_utils_format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine_utils_format.js","sourceRoot":"","sources":["../../src/engine/engine_utils_format.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { Loader } from "three";
1
2
  import { GLTFExporter } from "three/examples/jsm/exporters/GLTFExporter.js";
2
3
  import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
3
4
  import { Context } from "../engine_setup.js";
@@ -23,9 +24,9 @@ export declare function addCustomExtensionPlugin(ext: INeedleGLTFExtensionPlugin
23
24
  /** Unregister callbacks for registering custom gltf importer or exporter plugins */
24
25
  export declare function removeCustomImportExtensionType(ext: INeedleGLTFExtensionPlugin): void;
25
26
  /** Registers the Needle Engine components extension */
26
- export declare function registerComponentExtension(loader: GLTFLoader): NEEDLE_components;
27
+ export declare function registerComponentExtension(loader: GLTFLoader | Loader | object): NEEDLE_components | null;
27
28
  export declare function registerExtensions(loader: GLTFLoader, context: Context, url: string): Promise<void>;
28
29
  export declare function registerExportExtensions(exp: GLTFExporter, context: Context): void;
29
30
  /** @internal */
30
- export declare function invokeAfterImportPluginHooks(url: string, gltf: GLTF, context: Context): void;
31
+ export declare function invokeLoadedImportPluginHooks(url: string, gltf: GLTF, context: Context): void;
31
32
  export {};