@needle-tools/engine 4.5.0-alpha.3 → 4.5.0-alpha.4
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.
- package/CHANGELOG.md +22 -2
- package/dist/{needle-engine.bundle-ef2b8438.umd.cjs → needle-engine.bundle-1ea82d1b.umd.cjs} +74 -73
- package/dist/{needle-engine.bundle-9fe9a394.light.umd.cjs → needle-engine.bundle-5799046c.light.umd.cjs} +74 -73
- package/dist/{needle-engine.bundle-1b8f44f4.js → needle-engine.bundle-613ac05e.js} +923 -936
- package/dist/{needle-engine.bundle-d710d96f.light.js → needle-engine.bundle-82027067.light.js} +923 -936
- package/dist/{needle-engine.bundle-56f095f1.light.min.js → needle-engine.bundle-cb8d3ee9.light.min.js} +74 -73
- package/dist/{needle-engine.bundle-baacde19.min.js → needle-engine.bundle-e8936122.min.js} +74 -73
- package/dist/needle-engine.js +24 -24
- package/dist/needle-engine.light.js +24 -24
- package/dist/needle-engine.light.min.js +1 -1
- package/dist/needle-engine.light.umd.cjs +1 -1
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine/engine_components.js +6 -14
- package/lib/engine/engine_components.js.map +1 -1
- package/lib/engine/engine_loaders.callbacks.d.ts +43 -9
- package/lib/engine/engine_loaders.callbacks.js +42 -12
- package/lib/engine/engine_loaders.callbacks.js.map +1 -1
- package/lib/engine/engine_loaders.js +18 -15
- package/lib/engine/engine_loaders.js.map +1 -1
- package/lib/engine/engine_utils_format.d.ts +5 -5
- package/lib/engine/engine_utils_format.js +31 -31
- package/lib/engine/engine_utils_format.js.map +1 -1
- package/package.json +1 -1
- package/plugins/vite/dependencies.js +1 -1
- package/src/engine/engine_components.ts +4 -12
- package/src/engine/engine_loaders.callbacks.ts +63 -17
- package/src/engine/engine_loaders.ts +17 -15
- package/src/engine/engine_utils_format.ts +45 -34
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"engine_loaders.js","sourceRoot":"","sources":["../../src/engine/engine_loaders.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The supported file types that can be determined by the engine. Used in {@link
|
|
2
|
+
* The supported file types that can be determined by the engine. Used in {@link tryDetermineMimetypeFromURL} and {@link tryDetermineMimetypeFromBinary}
|
|
3
3
|
*/
|
|
4
|
-
export
|
|
4
|
+
export type NeedleMimetype = "unknown" | "model/gltf+json" | "model/gltf-binary" | "model/vrm" | "model/vnd.usdz+zip" | "model/vnd.usd+zip" | "model/vnd.usda+zip" | "model/fbx" | "model/vnd.autodesk.fbx" | "model/obj" | `model/${string}` | (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,10 +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
|
|
17
|
+
export declare function tryDetermineMimetypeFromURL(url: string, opts: {
|
|
18
18
|
useExtension: boolean;
|
|
19
|
-
}): Promise<
|
|
19
|
+
}): Promise<NeedleMimetype>;
|
|
20
20
|
/** Attempts to determine the file type of a binary file by looking at the first few bytes of the file.
|
|
21
21
|
* @hidden
|
|
22
22
|
*/
|
|
23
|
-
export declare function
|
|
23
|
+
export declare function tryDetermineMimetypeFromBinary(url: string, data: ArrayBuffer, response: Response): NeedleMimetype;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isDevEnvironment } from "./debug/index.js";
|
|
2
|
-
import {
|
|
2
|
+
import { registeredMimetypeCallbacks } from "./engine_loaders.callbacks.js";
|
|
3
3
|
import { getParam } from "./engine_utils.js";
|
|
4
4
|
const debug = getParam("debugfileformat");
|
|
5
5
|
/**
|
|
@@ -14,7 +14,7 @@ const debug = getParam("debugfileformat");
|
|
|
14
14
|
* const fileType = await tryDetermineFileTypeFromURL(url);
|
|
15
15
|
* console.log(fileType); // "glb"
|
|
16
16
|
*/
|
|
17
|
-
export async function
|
|
17
|
+
export async function tryDetermineMimetypeFromURL(url, opts) {
|
|
18
18
|
const { useExtension = true } = opts;
|
|
19
19
|
if (useExtension) {
|
|
20
20
|
// We want to save on requests so we first check the file extension if there's any
|
|
@@ -36,21 +36,21 @@ export async function tryDetermineFileTypeFromURL(url, opts) {
|
|
|
36
36
|
console.debug("Use file extension to determine type: " + ext);
|
|
37
37
|
switch (ext) {
|
|
38
38
|
case "GLTF":
|
|
39
|
-
return "gltf";
|
|
39
|
+
return "model/gltf+json";
|
|
40
40
|
case "VRM":
|
|
41
|
-
return "vrm";
|
|
41
|
+
return "model/vrm";
|
|
42
42
|
case "GLB":
|
|
43
|
-
return "
|
|
43
|
+
return "model/gltf-binary";
|
|
44
44
|
case "FBX":
|
|
45
|
-
return "fbx";
|
|
45
|
+
return "model/fbx";
|
|
46
46
|
case "USD":
|
|
47
|
-
return "usd";
|
|
47
|
+
return "model/vnd.usd+zip";
|
|
48
48
|
case "USDA":
|
|
49
|
-
return "usda";
|
|
49
|
+
return "model/vnd.usda+zip";
|
|
50
50
|
case "USDZ":
|
|
51
|
-
return "usdz";
|
|
51
|
+
return "model/vnd.usdz+zip";
|
|
52
52
|
case "OBJ":
|
|
53
|
-
return "obj";
|
|
53
|
+
return "model/obj";
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
// If the URL doesnt contain a filetype we need to check the header
|
|
@@ -76,7 +76,7 @@ export async function tryDetermineFileTypeFromURL(url, opts) {
|
|
|
76
76
|
});
|
|
77
77
|
if (header?.ok) {
|
|
78
78
|
const data = await header.arrayBuffer();
|
|
79
|
-
const res =
|
|
79
|
+
const res = tryDetermineMimetypeFromBinary(originalUrl, data, header);
|
|
80
80
|
if (debug)
|
|
81
81
|
console.log("Determined file type from header: " + res);
|
|
82
82
|
return res;
|
|
@@ -86,7 +86,7 @@ export async function tryDetermineFileTypeFromURL(url, opts) {
|
|
|
86
86
|
/** Attempts to determine the file type of a binary file by looking at the first few bytes of the file.
|
|
87
87
|
* @hidden
|
|
88
88
|
*/
|
|
89
|
-
export function
|
|
89
|
+
export function tryDetermineMimetypeFromBinary(url, data, response) {
|
|
90
90
|
if (data.byteLength < 4) {
|
|
91
91
|
return "unknown";
|
|
92
92
|
}
|
|
@@ -94,67 +94,67 @@ export function tryDetermineFileTypeFromBinary(url, data, response) {
|
|
|
94
94
|
if (debug) {
|
|
95
95
|
console.warn("Trying to determine file type from binary data\n", "\"" + new TextDecoder().decode(data) + "\"\n", bytes);
|
|
96
96
|
}
|
|
97
|
-
// GLTF
|
|
98
|
-
if (bytes[0] == 103 && bytes[1] == 108 && bytes[2] == 84 && bytes[3] == 70) {
|
|
97
|
+
// GLTF
|
|
98
|
+
if (bytes[0] == 103 && bytes[1] == 108 && bytes[2] == 84 && bytes[3] == 70 && bytes[4] == 10) {
|
|
99
|
+
// GLTF
|
|
99
100
|
console.debug("GLTF detected");
|
|
100
|
-
return "
|
|
101
|
+
return "model/gltf+json";
|
|
102
|
+
}
|
|
103
|
+
// GLB
|
|
104
|
+
else if (bytes[0] == 103 && bytes[1] == 108 && bytes[2] == 84 && bytes[3] == 70 && bytes[4] == 98) {
|
|
105
|
+
// GLB
|
|
106
|
+
console.debug("GLB detected");
|
|
107
|
+
return "model/gltf-binary";
|
|
101
108
|
}
|
|
102
109
|
// USDZ
|
|
103
110
|
if (bytes[0] == 80 && bytes[1] == 75 && bytes[2] == 3 && bytes[3] == 4) {
|
|
104
111
|
console.debug("USDZ detected");
|
|
105
|
-
return "usdz";
|
|
112
|
+
return "model/vnd.usdz+zip";
|
|
106
113
|
}
|
|
107
114
|
// USD
|
|
108
115
|
if (bytes[0] == 80 && bytes[1] == 88 && bytes[2] == 82 && bytes[3] == 45 && bytes[4] == 85 && bytes[5] == 83 && bytes[6] == 68 && bytes[7] == 67) {
|
|
109
116
|
console.debug("Binary USD detected");
|
|
110
|
-
return "usd";
|
|
117
|
+
return "model/vnd.usd+zip";
|
|
111
118
|
}
|
|
112
119
|
// USDA: check if the file starts with #usda
|
|
113
120
|
else if (bytes[0] == 35 && bytes[1] == 117 && bytes[2] == 115 && bytes[3] == 100 && bytes[4] == 97) {
|
|
114
121
|
console.debug("ASCII USD detected");
|
|
115
|
-
return "usda";
|
|
122
|
+
return "model/vnd.usda+zip";
|
|
116
123
|
}
|
|
117
124
|
// FBX
|
|
118
125
|
if (bytes[0] == 75 && bytes[1] == 97 && bytes[2] == 121 && bytes[3] == 100 && bytes[4] == 97 && bytes[5] == 114 && bytes[6] == 97 && bytes[7] == 32) {
|
|
119
126
|
console.debug("Binary FBX detected");
|
|
120
|
-
return "fbx";
|
|
127
|
+
return "model/fbx";
|
|
121
128
|
}
|
|
122
129
|
// ASCII FBX
|
|
123
130
|
else if (bytes[0] == 59 && bytes[1] == 32 && bytes[2] == 70 && bytes[3] == 66 && bytes[4] == 88 && bytes[5] == 32) {
|
|
124
131
|
console.debug("ASCII FBX detected");
|
|
125
|
-
return "fbx";
|
|
132
|
+
return "model/fbx";
|
|
126
133
|
}
|
|
127
134
|
// OBJ - in this case exported from blender it starts with "# Blender" - we only check the first 10 bytes, technically it could still be a different file so we should do this check at the end
|
|
128
135
|
else if (bytes[0] == 35 && bytes[1] == 32 && bytes[2] == 66 && bytes[3] == 108 && bytes[4] == 101 && bytes[5] == 110 && bytes[6] == 100 && bytes[7] == 101 && bytes[8] == 114 && bytes[9] == 32) {
|
|
129
136
|
console.debug("OBJ detected");
|
|
130
|
-
return "obj";
|
|
137
|
+
return "model/obj";
|
|
131
138
|
}
|
|
132
139
|
// Check if it starts "# Alias OBJ"
|
|
133
140
|
else if (bytes[0] == 35 && bytes[1] == 32 && bytes[2] == 65 && bytes[3] == 108 && bytes[4] == 105 && bytes[5] == 97 && bytes[6] == 115 && bytes[7] == 32 && bytes[8] == 79 && bytes[9] == 66 && bytes[10] == 74) {
|
|
134
141
|
console.debug("OBJ detected");
|
|
135
|
-
return "obj";
|
|
142
|
+
return "model/obj";
|
|
136
143
|
}
|
|
137
144
|
else if (response.headers.has("content-type")) {
|
|
138
145
|
const content_type = response.headers.get("content-type");
|
|
139
146
|
console.debug("Content-Type: " + content_type);
|
|
140
147
|
switch (content_type) {
|
|
141
148
|
case "model/gltf+json":
|
|
142
|
-
return "gltf";
|
|
143
149
|
case "model/gltf-binary":
|
|
144
|
-
return "glb";
|
|
145
150
|
case "model/vrm":
|
|
146
|
-
return "vrm";
|
|
147
151
|
case "model/vnd.usdz+zip":
|
|
148
|
-
return "usdz";
|
|
149
152
|
case "model/vnd.usd+zip":
|
|
150
|
-
return "usd";
|
|
151
153
|
case "model/vnd.usda+zip":
|
|
152
|
-
return "usda";
|
|
153
154
|
case "model/fbx":
|
|
154
155
|
case "model/vnd.autodesk.fbx":
|
|
155
|
-
return "fbx";
|
|
156
156
|
case "model/obj":
|
|
157
|
-
return
|
|
157
|
+
return content_type;
|
|
158
158
|
// case "model/stl":
|
|
159
159
|
// return "stl";
|
|
160
160
|
case "text/plain":
|
|
@@ -185,7 +185,7 @@ export function tryDetermineFileTypeFromBinary(url, data, response) {
|
|
|
185
185
|
// else if (text.startsWith("glTF")) {
|
|
186
186
|
// return "gltf";
|
|
187
187
|
// }
|
|
188
|
-
for (const callback of
|
|
188
|
+
for (const callback of registeredMimetypeCallbacks) {
|
|
189
189
|
const mimetype = callback({
|
|
190
190
|
url: url,
|
|
191
191
|
response: response,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine_utils_format.js","sourceRoot":"","sources":["../../src/engine/engine_utils_format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"engine_utils_format.js","sourceRoot":"","sources":["../../src/engine/engine_utils_format.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "4.5.0-alpha.
|
|
3
|
+
"version": "4.5.0-alpha.4",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.",
|
|
5
5
|
"main": "dist/needle-engine.min.js",
|
|
6
6
|
"exports": {
|
|
@@ -129,7 +129,7 @@ function handleManualChunks(config) {
|
|
|
129
129
|
// "assets/..." is the default
|
|
130
130
|
|
|
131
131
|
// this happens if e.g. a glTF or GLB file is link preloaded
|
|
132
|
-
if (chunkInfo.name
|
|
132
|
+
if (chunkInfo.name?.toLowerCase().includes(".glb") || chunkInfo.name?.toLowerCase().includes(".gltf")) {
|
|
133
133
|
return `assets/[name][extname]`;
|
|
134
134
|
}
|
|
135
135
|
return `assets/[name].[hash][extname]`;
|
|
@@ -219,6 +219,7 @@ export function getComponents<T extends IComponent>(obj: Object3D, componentType
|
|
|
219
219
|
* ```
|
|
220
220
|
*/
|
|
221
221
|
export function getComponentInChildren<T extends IComponent>(obj: Object3D, componentType: Constructor<T>, includeInactive?: boolean): T | null {
|
|
222
|
+
if(includeInactive === false && obj[activeInHierarchyFieldName] === false) return null;
|
|
222
223
|
const res = getComponent(obj, componentType) as IComponent | null;
|
|
223
224
|
if (includeInactive === false && res?.enabled === false) return null;
|
|
224
225
|
if (res) return res as T;
|
|
@@ -329,14 +330,8 @@ export function findObjectOfType<T extends IComponent>(type: Constructor<T>, con
|
|
|
329
330
|
if (!scene.isScene) scene = (contextOrScene as { scene: Scene })?.scene;
|
|
330
331
|
if (!scene) return null;
|
|
331
332
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
const child = scene.children[i];
|
|
335
|
-
if (includeInactive === false && child[activeInHierarchyFieldName] === false) continue;
|
|
336
|
-
// if (child.constructor == type) return child as T;
|
|
337
|
-
const res = getComponentInChildren(child, type);
|
|
338
|
-
if (res) return res;
|
|
339
|
-
}
|
|
333
|
+
const res = getComponentInChildren(scene, type, includeInactive);
|
|
334
|
+
if(res) return res;
|
|
340
335
|
return null;
|
|
341
336
|
}
|
|
342
337
|
|
|
@@ -367,9 +362,6 @@ export function findObjectsOfType<T extends IComponent>(type: Constructor<T>, ar
|
|
|
367
362
|
|
|
368
363
|
const scene = contextOrScene;
|
|
369
364
|
if (!scene) return array;
|
|
370
|
-
|
|
371
|
-
const child = scene.children[i];
|
|
372
|
-
getComponentsInChildren(child, type, array, false);
|
|
373
|
-
}
|
|
365
|
+
getComponentsInChildren(scene, type, array, false);
|
|
374
366
|
return array;
|
|
375
367
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { BufferGeometry, Object3D } from "three";
|
|
2
2
|
import { Context } from "./engine_setup.js";
|
|
3
3
|
import { CustomModel } from "./engine_types.js";
|
|
4
|
-
import { type
|
|
4
|
+
import { type NeedleMimetype } from "./engine_utils_format.js";
|
|
5
5
|
|
|
6
6
|
export type ValidLoaderReturnType = CustomModel | Object3D | BufferGeometry;
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
|
|
9
10
|
/** @internal */
|
|
10
11
|
export type CustomLoader = {
|
|
11
12
|
/** The name of the loader. This is used for debugging purposes. */
|
|
@@ -16,12 +17,12 @@ export type CustomLoader = {
|
|
|
16
17
|
parse: (buffer: ArrayBuffer | string, path: string) => ValidLoaderReturnType,
|
|
17
18
|
};
|
|
18
19
|
|
|
19
|
-
type CustomLoaderCallback = (args: { context: Context, url: string,
|
|
20
|
+
type CustomLoaderCallback = (args: { context: Context, url: string, mimetype: NeedleMimetype }) => CustomLoader | Promise<CustomLoader> | null | undefined | void;
|
|
20
21
|
/** @internal */
|
|
21
|
-
export const registeredModelLoaderCallbacks: Array<CustomLoaderCallback> = [];
|
|
22
|
+
export const registeredModelLoaderCallbacks: Array<{ name?: string, priority: number, callback: CustomLoaderCallback }> = [];
|
|
22
23
|
|
|
23
24
|
|
|
24
|
-
type
|
|
25
|
+
type MimetypeCallback = (args: {
|
|
25
26
|
/** The URL of the file to load */
|
|
26
27
|
url: string,
|
|
27
28
|
/** The response of the range request with the first few bytes of the file (bytes are available in the 'args.bytes' property of this callback) */
|
|
@@ -30,22 +31,58 @@ type FileTypeCallback = (args: {
|
|
|
30
31
|
contentType: string | null,
|
|
31
32
|
/** The first few bytes of the file as a Uint8Array */
|
|
32
33
|
bytes: Uint8Array
|
|
33
|
-
}) =>
|
|
34
|
+
}) => NeedleMimetype | null;
|
|
34
35
|
/** @internal */
|
|
35
|
-
export const
|
|
36
|
+
export const registeredMimetypeCallbacks: Array<MimetypeCallback> = [];
|
|
36
37
|
|
|
37
38
|
|
|
38
39
|
/**
|
|
39
40
|
* NeedleEngineModelLoader is a namespace that provides functions to register custom model loaders and mimetype callbacks.
|
|
40
41
|
* It allows you to create custom loaders for specific file types and determine the mimetype of files based on their content.
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* import { NeedleEngineModelLoader } from "@needle-tools/engine";
|
|
45
|
+
* import { STLLoader } from "three/examples/jsm/loaders/STLLoader";
|
|
46
|
+
*
|
|
47
|
+
* NeedleEngineModelLoader.onCreateCustomModelLoader(args => {
|
|
48
|
+
* if (args.mimetype === "model/stl") {
|
|
49
|
+
* return new STLLoader();
|
|
50
|
+
* }
|
|
51
|
+
* });
|
|
52
|
+
*
|
|
53
|
+
* NeedleEngineModelLoader.onDetermineModelMimetype((args) => {
|
|
54
|
+
* // detect stl mimetype
|
|
55
|
+
* const bytes = args.bytes;
|
|
56
|
+
* if (bytes[0] === 0x73 && bytes[1] === 0x74 && bytes[2] === 0x6c) {
|
|
57
|
+
* return "model/stl";
|
|
58
|
+
* }
|
|
59
|
+
* return null;
|
|
60
|
+
* });
|
|
61
|
+
* ```
|
|
41
62
|
*/
|
|
42
63
|
export namespace NeedleEngineModelLoader {
|
|
43
64
|
|
|
44
|
-
// export type
|
|
45
|
-
// name: string
|
|
46
|
-
// canLoad: (
|
|
65
|
+
// export type Plugin = {
|
|
66
|
+
// readonly name: string;
|
|
67
|
+
// canLoad: (mimetype: string, url: string) => boolean,
|
|
68
|
+
// createLoader: (url: string, mimetype: string) => Promise<CustomLoader>,
|
|
69
|
+
// }
|
|
70
|
+
|
|
71
|
+
// export function registerLoaderPlugin(plugin: Plugin) {
|
|
47
72
|
// }
|
|
48
|
-
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
type CustomLoaderOptions = {
|
|
77
|
+
/** The name of the loader. This is used for debugging purposes. */
|
|
78
|
+
name?: string,
|
|
79
|
+
/**
|
|
80
|
+
* The priority of the loader. Higher priority loaders will be called first.
|
|
81
|
+
* @default 0
|
|
82
|
+
*/
|
|
83
|
+
priority?: number,
|
|
84
|
+
}
|
|
85
|
+
|
|
49
86
|
/**
|
|
50
87
|
* Register a custom loader callback. For every file that is requested this callback is called with the url and mimetype. It should return a custom loader or null if it does not want to handle the file.
|
|
51
88
|
* @param callback The callback to register
|
|
@@ -60,10 +97,19 @@ export namespace NeedleEngineModelLoader {
|
|
|
60
97
|
* return null;
|
|
61
98
|
* });
|
|
62
99
|
*/
|
|
63
|
-
export function onCreateCustomModelLoader(callback: CustomLoaderCallback) {
|
|
64
|
-
|
|
100
|
+
export function onCreateCustomModelLoader(callback: CustomLoaderCallback, opts?: CustomLoaderOptions) {
|
|
101
|
+
const entry = { name: opts?.name, priority: opts?.priority ?? 0, callback };
|
|
102
|
+
registeredModelLoaderCallbacks.push(entry);
|
|
103
|
+
|
|
104
|
+
// sort plugins by priority. Higher priority first
|
|
105
|
+
registeredModelLoaderCallbacks.sort((a, b) => {
|
|
106
|
+
if (a.priority === b.priority) return 0;
|
|
107
|
+
if (a.priority > b.priority) return -1;
|
|
108
|
+
return 1;
|
|
109
|
+
});
|
|
110
|
+
|
|
65
111
|
return () => {
|
|
66
|
-
const index = registeredModelLoaderCallbacks.indexOf(
|
|
112
|
+
const index = registeredModelLoaderCallbacks.indexOf(entry);
|
|
67
113
|
if (index >= 0) {
|
|
68
114
|
registeredModelLoaderCallbacks.splice(index, 1);
|
|
69
115
|
}
|
|
@@ -76,12 +122,12 @@ export namespace NeedleEngineModelLoader {
|
|
|
76
122
|
* @returns A function to unregister the callback
|
|
77
123
|
*
|
|
78
124
|
*/
|
|
79
|
-
export function
|
|
80
|
-
|
|
125
|
+
export function onDetermineModelMimetype(callback: MimetypeCallback): (() => void) {
|
|
126
|
+
registeredMimetypeCallbacks.push(callback);
|
|
81
127
|
return () => {
|
|
82
|
-
const index =
|
|
128
|
+
const index = registeredMimetypeCallbacks.indexOf(callback);
|
|
83
129
|
if (index >= 0) {
|
|
84
|
-
|
|
130
|
+
registeredMimetypeCallbacks.splice(index, 1);
|
|
85
131
|
}
|
|
86
132
|
}
|
|
87
133
|
}
|
|
@@ -15,7 +15,7 @@ import { Context } from "./engine_setup.js"
|
|
|
15
15
|
import { postprocessFBXMaterials } from "./engine_three_utils.js";
|
|
16
16
|
import { CustomModel, isGLTFModel, Model, type UIDProvider } from "./engine_types.js";
|
|
17
17
|
import * as utils from "./engine_utils.js";
|
|
18
|
-
import {
|
|
18
|
+
import { tryDetermineMimetypeFromURL } from "./engine_utils_format.js"
|
|
19
19
|
import { invokeLoadedImportPluginHooks, registerComponentExtension, registerExtensions } from "./extensions/extensions.js";
|
|
20
20
|
import { NEEDLE_components } from "./extensions/NEEDLE_components.js";
|
|
21
21
|
|
|
@@ -45,42 +45,44 @@ const debugFileTypes = utils.getParam("debugfileformat");
|
|
|
45
45
|
|
|
46
46
|
export async function onCreateLoader(url: string, context: Context): Promise<CustomLoader | GLTFLoader | FBXLoader | USDZLoader | OBJLoader | null> {
|
|
47
47
|
|
|
48
|
-
const type = await
|
|
48
|
+
const type = await tryDetermineMimetypeFromURL(url, { useExtension: true }) || "unknown";
|
|
49
49
|
if (debugFileTypes) console.debug(`Determined file type: '${type}' for url '${url}'`);
|
|
50
50
|
|
|
51
|
-
for (const
|
|
52
|
-
const
|
|
51
|
+
for (const entry of registeredModelLoaderCallbacks) {
|
|
52
|
+
const { callback } = entry;
|
|
53
|
+
let loader = callback({ context, url, mimetype: type });
|
|
54
|
+
if (loader instanceof Promise) await loader;
|
|
53
55
|
if (loader) {
|
|
54
|
-
console.debug(
|
|
56
|
+
console.debug(`Using custom loader (${entry.name}) for url '${url}'`);
|
|
55
57
|
return loader;
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
switch (type) {
|
|
60
62
|
default:
|
|
61
|
-
console.warn(`Unknown file type: ${type}`);
|
|
62
63
|
case "unknown":
|
|
63
64
|
{
|
|
64
|
-
console.warn(
|
|
65
|
+
console.warn(`Unknown file type (${type}). Needle Engine will fallback to the GLTFLoader - To support more model formats please create a Needle loader plugin.\nUse import { NeedleEngineModelLoader } from \"@needle-tools/engine\" namespace to register your loader.`, url);
|
|
65
66
|
const loader = new GLTFLoader();
|
|
66
67
|
await registerExtensions(loader, context, url);
|
|
67
68
|
return loader;
|
|
68
69
|
}
|
|
69
|
-
case "fbx":
|
|
70
|
+
case "model/fbx":
|
|
71
|
+
case "model/vnd.autodesk.fbx":
|
|
70
72
|
return new FBXLoader();
|
|
71
|
-
case "obj":
|
|
73
|
+
case "model/obj":
|
|
72
74
|
return new OBJLoader();
|
|
73
|
-
case "
|
|
74
|
-
case "
|
|
75
|
-
case "
|
|
75
|
+
case "model/vnd.usdz+zip":
|
|
76
|
+
case "model/vnd.usd+zip":
|
|
77
|
+
case "model/vnd.usda+zip":
|
|
76
78
|
{
|
|
77
79
|
console.warn(type.toUpperCase() + " files are not supported.");
|
|
78
80
|
// return new USDZLoader();
|
|
79
81
|
return null;
|
|
80
82
|
}
|
|
81
|
-
case "gltf":
|
|
82
|
-
case "
|
|
83
|
-
case "vrm":
|
|
83
|
+
case "model/gltf+json":
|
|
84
|
+
case "model/gltf-binary":
|
|
85
|
+
case "model/vrm":
|
|
84
86
|
{
|
|
85
87
|
const loader = new GLTFLoader();
|
|
86
88
|
await registerExtensions(loader, context, url);
|