@needle-tools/engine 4.5.0 → 4.5.2

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 (48) hide show
  1. package/dist/{needle-engine.bundle-8e64768b.js → needle-engine.bundle-99bb72c3.js} +7 -7
  2. package/dist/{needle-engine.bundle-4e21a0eb.min.js → needle-engine.bundle-ac883b5a.min.js} +2 -2
  3. package/dist/{needle-engine.bundle-0293e87a.light.js → needle-engine.bundle-adcbea18.light.js} +7 -7
  4. package/dist/{needle-engine.bundle-1679a09a.light.min.js → needle-engine.bundle-b57b2055.light.min.js} +2 -2
  5. package/dist/{needle-engine.bundle-2f187b48.light.umd.cjs → needle-engine.bundle-bcb5a31b.light.umd.cjs} +4 -4
  6. package/dist/{needle-engine.bundle-4366d297.umd.cjs → needle-engine.bundle-caf79082.umd.cjs} +4 -4
  7. package/dist/needle-engine.js +2 -2
  8. package/dist/needle-engine.light.js +2 -2
  9. package/dist/needle-engine.light.min.js +1 -1
  10. package/dist/needle-engine.light.umd.cjs +1 -1
  11. package/dist/needle-engine.min.js +1 -1
  12. package/dist/needle-engine.umd.cjs +1 -1
  13. package/lib/engine/engine_loaders.callbacks.d.ts +1 -0
  14. package/lib/engine/engine_loaders.callbacks.js +1 -0
  15. package/lib/engine/engine_loaders.callbacks.js.map +1 -1
  16. package/lib/engine/engine_utils_format.js +2 -2
  17. package/lib/engine/engine_utils_format.js.map +1 -1
  18. package/package.json +1 -1
  19. package/plugins/vite/build-pipeline.js +22 -6
  20. package/src/engine/engine_loaders.callbacks.ts +1 -0
  21. package/src/engine/engine_utils_format.ts +2 -2
  22. package/lib/engine/engine.d.ts +0 -4
  23. package/lib/engine/engine.js +0 -12
  24. package/lib/engine/engine.js.map +0 -1
  25. package/lib/engine/engine_element.d.ts +0 -113
  26. package/lib/engine/engine_element.js +0 -833
  27. package/lib/engine/engine_element.js.map +0 -1
  28. package/lib/engine/engine_element_attributes.d.ts +0 -72
  29. package/lib/engine/engine_element_attributes.js +0 -2
  30. package/lib/engine/engine_element_attributes.js.map +0 -1
  31. package/lib/engine/engine_element_extras.d.ts +0 -6
  32. package/lib/engine/engine_element_extras.js +0 -14
  33. package/lib/engine/engine_element_extras.js.map +0 -1
  34. package/lib/engine/engine_element_loading.d.ts +0 -44
  35. package/lib/engine/engine_element_loading.js +0 -350
  36. package/lib/engine/engine_element_loading.js.map +0 -1
  37. package/lib/engine/engine_element_overlay.d.ts +0 -21
  38. package/lib/engine/engine_element_overlay.js +0 -167
  39. package/lib/engine/engine_element_overlay.js.map +0 -1
  40. package/lib/engine/engine_scenetools.d.ts +0 -50
  41. package/lib/engine/engine_scenetools.js +0 -322
  42. package/lib/engine/engine_scenetools.js.map +0 -1
  43. package/lib/engine/engine_web_api.d.ts +0 -12
  44. package/lib/engine/engine_web_api.js +0 -113
  45. package/lib/engine/engine_web_api.js.map +0 -1
  46. package/lib/engine-components/FlyControls.d.ts +0 -10
  47. package/lib/engine-components/FlyControls.js +0 -29
  48. package/lib/engine-components/FlyControls.js.map +0 -1
@@ -1,167 +0,0 @@
1
- import { DeviceUtilities, getParam } from "./engine_utils.js";
2
- const debug = getParam("debugoverlay");
3
- export const arContainerClassName = "ar";
4
- export const quitARClassName = "quit-ar";
5
- // https://developers.google.com/web/fundamentals/web-components/customelements
6
- /** @internal */
7
- export class AROverlayHandler {
8
- get ARContainer() { return this.arContainer; }
9
- arContainer = null;
10
- currentSession = null;
11
- _createdAROnlyElements = [];
12
- _reparentedObjects = [];
13
- contentElement = null;
14
- originalDomOverlayParent = null;
15
- requestEndAR = () => {
16
- this.onRequestedEndAR();
17
- };
18
- onBegin(context, overlayContainer, session) {
19
- this.currentSession = session;
20
- this.arContainer = overlayContainer;
21
- if (DeviceUtilities.isMozillaXR()) {
22
- const arElements = context.domElement.children;
23
- for (let i = 0; i < arElements?.length; i++) {
24
- const el = arElements[i];
25
- if (!el)
26
- return;
27
- if (el === this.arContainer)
28
- return;
29
- this._reparentedObjects.push({ el: el, previousParent: el.parentElement });
30
- this.arContainer?.appendChild(el);
31
- }
32
- if (overlayContainer) {
33
- this.originalDomOverlayParent = overlayContainer.parentNode;
34
- if (this.originalDomOverlayParent) {
35
- console.log("Reparent DOM Overlay to body", overlayContainer, overlayContainer.style.display);
36
- // mozilla webxr does hide elements on session start
37
- // this is only necessary if we generated the overlay element
38
- overlayContainer.style.display = "";
39
- overlayContainer.style.visibility = "";
40
- document.body.appendChild(overlayContainer);
41
- }
42
- }
43
- else {
44
- console.warn("WebXRViewer: No DOM Overlay found");
45
- }
46
- }
47
- this.ensureQuitARButton(this.arContainer);
48
- }
49
- onEnd(_context) {
50
- // if (this.arContainer)
51
- // this.arContainer.classList.remove("ar-session-active");
52
- for (const created of this._createdAROnlyElements) {
53
- if (created.remove) {
54
- created.remove();
55
- }
56
- }
57
- for (const prev of this._reparentedObjects) {
58
- const el = prev.el;
59
- prev.previousParent?.appendChild(el);
60
- }
61
- this._reparentedObjects.length = 0;
62
- // mozilla XR exit AR fixes
63
- if (DeviceUtilities.isMozillaXR()) {
64
- // without the timeout we get errors in mozillas code and can not enter XR again
65
- // not sure why we have to wait
66
- setTimeout(() => {
67
- // Canvas is not in DOM anymore after AR using Mozilla XR
68
- const canvas = _context.renderer.domElement;
69
- if (canvas) {
70
- _context.domElement.shadowRoot?.prepend(canvas);
71
- }
72
- // Fix visibility
73
- const elements = document.querySelectorAll("*");
74
- for (var i = 0; i < elements.length; i++) {
75
- const child = elements[i];
76
- if (child && child._displayChanged !== undefined && child._displayWas !== undefined) {
77
- child.style.display = child._displayWas;
78
- }
79
- }
80
- }, 10);
81
- }
82
- }
83
- createOverlayContainer(needleEngineElement) {
84
- if (this.contentElement)
85
- return this.contentElement;
86
- if (debug)
87
- console.log("Setup overlay container");
88
- const contentElement = needleEngineElement.shadowRoot.querySelector(".content");
89
- this.contentElement = contentElement;
90
- const overlaySlot = needleEngineElement.shadowRoot.querySelector(".overlay-content");
91
- if (overlaySlot)
92
- contentElement.appendChild(overlaySlot);
93
- if (debug && !DeviceUtilities.isMobileDevice())
94
- this.ensureQuitARButton(contentElement);
95
- return contentElement;
96
- }
97
- onRequestedEndAR() {
98
- if (!this.currentSession)
99
- return;
100
- this.currentSession.end();
101
- this.currentSession = null;
102
- }
103
- ensureQuitARButton(element) {
104
- const quitARSlot = document.createElement("slot");
105
- quitARSlot.setAttribute("name", "quit-ar");
106
- this.appendElement(quitARSlot, element);
107
- this._createdAROnlyElements.push(quitARSlot);
108
- // for mozilla XR reparenting we have to make sure the close button is clickable so we set it on the element directly
109
- // it's in general perhaps more safe to set it on the element to ensure it's clickable
110
- quitARSlot.style.pointerEvents = "auto";
111
- // We want to search the document if there's a quit-ar button
112
- // In which case we don't want to populate the default button (slot) with any content
113
- const quitARElement = document.querySelector(`.${quitARClassName}`);
114
- if (quitARElement) {
115
- quitARElement.addEventListener('click', this.requestEndAR);
116
- if (debug)
117
- quitARElement.addEventListener('click', () => console.log("Clicked quit-ar button"));
118
- // We found a explicit quit-ar element
119
- return;
120
- }
121
- quitARSlot.addEventListener('click', this.requestEndAR);
122
- if (debug)
123
- quitARSlot.addEventListener('click', () => console.log("Clicked fallback close button"));
124
- // we need another container to make sure the button is always on top
125
- const fixedButtonContainer = document.createElement("div");
126
- fixedButtonContainer.style.cssText = `
127
- position: fixed;
128
- top: 0;
129
- right: 0;
130
- z-index: 600;
131
- pointer-events: all;
132
- `;
133
- this.appendElement(fixedButtonContainer, quitARSlot);
134
- var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
135
- svg.classList.add("quit-ar-button");
136
- svg.setAttribute('width', "40px");
137
- svg.setAttribute('height', "40px");
138
- svg.style.cssText = `
139
- background: rgba(255, 255, 255, .4);
140
- -webkit-backdrop-filter: blur(8px);
141
- backdrop-filter: blur(8px);
142
- border-radius: 50%;
143
- box-shadow: 0 0 5px rgba(0,0,0,.3);
144
- outline: 1px solid rgba(255, 255, 255, .6);
145
- display: flex;
146
- justify-content: center;
147
- align-items: center;
148
- `;
149
- fixedButtonContainer.appendChild(svg);
150
- var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
151
- path.setAttribute('d', 'M 12,12 L 28,28 M 28,12 12,28');
152
- path.setAttribute('stroke', '#000000');
153
- path.setAttribute('stroke-width', "2px");
154
- path.style.cssText = `
155
- /**filter: drop-shadow(0 0px 1.2px rgba(0,0,0,.7));**/
156
- `;
157
- svg.appendChild(path);
158
- if (debug)
159
- console.log("Created fallback close button", svg, element);
160
- }
161
- appendElement(element, parent) {
162
- if (parent.shadowRoot)
163
- return parent.shadowRoot.appendChild(element);
164
- return parent.appendChild(element);
165
- }
166
- }
167
- //# sourceMappingURL=engine_element_overlay.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine_element_overlay.js","sourceRoot":"","sources":["../../src/engine/engine_element_overlay.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader.js';
2
- import { type GLTF, GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
3
- import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';
4
- import { USDZLoader } from 'three/examples/jsm/loaders/USDZLoader.js';
5
- import { type INeedleGltfLoader } from "./engine_gltf.js";
6
- import { SerializationContext } from "./engine_serialization_core.js";
7
- import { Context } from "./engine_setup.js";
8
- import { Model, type UIDProvider } from "./engine_types.js";
9
- import { NEEDLE_components } from "./extensions/NEEDLE_components.js";
10
- /** @internal */
11
- export declare class NeedleLoader implements INeedleGltfLoader {
12
- createBuiltinComponents(context: Context, gltfId: string, gltf: any, seed: number | UIDProvider | null, extension?: NEEDLE_components | undefined): Promise<void>;
13
- writeBuiltinComponentData(comp: any, context: SerializationContext): object | null;
14
- parseSync(context: Context, data: string | ArrayBuffer, path: string, seed: number | UIDProvider | null): Promise<Model | undefined>;
15
- loadSync(context: Context, url: string, sourceId: string, seed: number | UIDProvider | null, prog?: ((ProgressEvent: any) => void) | undefined): Promise<Model | undefined>;
16
- }
17
- export declare enum GltfLoadEventType {
18
- BeforeLoad = 0,
19
- AfterLoaded = 1,
20
- FinishedSetup = 10
21
- }
22
- export declare class GltfLoadEvent {
23
- context: Context;
24
- loader: GLTFLoader;
25
- path: string;
26
- gltf?: GLTF;
27
- constructor(context: Context, path: string, loader: GLTFLoader, gltf?: GLTF);
28
- }
29
- export type GltfLoadEventCallback = (event: GltfLoadEvent) => void;
30
- export declare function addGltfLoadEventListener(type: GltfLoadEventType, listener: GltfLoadEventCallback): void;
31
- export declare function removeGltfLoadEventListener(type: GltfLoadEventType, listener: GltfLoadEventCallback): void;
32
- export declare function createLoader(url: string, context: Context): Promise<GLTFLoader | FBXLoader | USDZLoader | OBJLoader | null>;
33
- /** 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.
34
- * @param context The current context
35
- * @param data The gltf data as string or ArrayBuffer
36
- * @param path The path to the gltf file
37
- * @param seed The seed for generating unique ids
38
- * @returns The loaded gltf object
39
- */
40
- export declare function parseSync(context: Context, data: string | ArrayBuffer, path: string, seed: number | UIDProvider | null): Promise<Model | undefined>;
41
- /**
42
- * 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.
43
- * @param context The current context
44
- * @param url The url to the gltf file
45
- * @param sourceId The source id of the gltf file - this is usually the url
46
- * @param seed The seed for generating unique ids
47
- * @param prog A progress callback
48
- * @returns The loaded gltf object
49
- */
50
- export declare function loadSync(context: Context, url: string, sourceId: string, seed: number | UIDProvider | null, prog?: (ProgressEvent: any) => void): Promise<Model | undefined>;
@@ -1,322 +0,0 @@
1
- import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader.js';
2
- import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
3
- import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';
4
- import { showBalloonMessage } from "./debug/index.js";
5
- import { getLoader, registerLoader } from "./engine_gltf.js";
6
- import { createBuiltinComponents, writeBuiltinComponentData } from "./engine_gltf_builtin_components.js";
7
- // import * as object from "./engine_gltf_builtin_components.js";
8
- import * as loaders from "./engine_loaders.js";
9
- import { registerPrewarmObject } from "./engine_mainloop_utils.js";
10
- import { postprocessFBXMaterials } from "./engine_three_utils.js";
11
- import * as utils from "./engine_utils.js";
12
- import { tryDetermineFileTypeFromURL } from "./engine_utils_format.js";
13
- import { invokeAfterImportPluginHooks, registerComponentExtension, registerExtensions } from "./extensions/extensions.js";
14
- /** @internal */
15
- export class NeedleLoader {
16
- createBuiltinComponents(context, gltfId, gltf, seed, extension) {
17
- return createBuiltinComponents(context, gltfId, gltf, seed, extension);
18
- }
19
- writeBuiltinComponentData(comp, context) {
20
- return writeBuiltinComponentData(comp, context);
21
- }
22
- parseSync(context, data, path, seed) {
23
- return parseSync(context, data, path, seed);
24
- }
25
- loadSync(context, url, sourceId, seed, prog) {
26
- return loadSync(context, url, sourceId, seed, prog);
27
- }
28
- }
29
- registerLoader(NeedleLoader); // Register the loader
30
- const printGltf = utils.getParam("printGltf") || utils.getParam("printgltf");
31
- const downloadGltf = utils.getParam("downloadgltf");
32
- const debugFileTypes = utils.getParam("debugfileformat");
33
- // const loader = new GLTFLoader();
34
- // registerExtensions(loader);
35
- export var GltfLoadEventType;
36
- (function (GltfLoadEventType) {
37
- GltfLoadEventType[GltfLoadEventType["BeforeLoad"] = 0] = "BeforeLoad";
38
- GltfLoadEventType[GltfLoadEventType["AfterLoaded"] = 1] = "AfterLoaded";
39
- GltfLoadEventType[GltfLoadEventType["FinishedSetup"] = 10] = "FinishedSetup";
40
- })(GltfLoadEventType || (GltfLoadEventType = {}));
41
- export class GltfLoadEvent {
42
- context;
43
- loader;
44
- path;
45
- gltf;
46
- constructor(context, path, loader, gltf) {
47
- this.context = context;
48
- this.path = path;
49
- this.loader = loader;
50
- this.gltf = gltf;
51
- }
52
- }
53
- const eventListeners = {};
54
- export function addGltfLoadEventListener(type, listener) {
55
- eventListeners[type] = eventListeners[type] || [];
56
- eventListeners[type].push(listener);
57
- }
58
- export function removeGltfLoadEventListener(type, listener) {
59
- if (eventListeners[type]) {
60
- const index = eventListeners[type].indexOf(listener);
61
- if (index >= 0) {
62
- eventListeners[type].splice(index, 1);
63
- }
64
- }
65
- }
66
- function invokeEvents(type, event) {
67
- if (eventListeners[type]) {
68
- for (const listener of eventListeners[type]) {
69
- listener(event);
70
- }
71
- }
72
- }
73
- async function handleLoadedGltf(context, gltfId, gltf, seed, componentsExtension) {
74
- if (printGltf)
75
- console.warn("glTF", gltfId, gltf);
76
- // Remove query parameters from gltfId
77
- if (gltfId.includes("?")) {
78
- gltfId = gltfId.split("?")[0];
79
- }
80
- await getLoader().createBuiltinComponents(context, gltfId, gltf, seed, componentsExtension);
81
- }
82
- export async function createLoader(url, context) {
83
- const type = await tryDetermineFileTypeFromURL(url) || "unknown";
84
- if (debugFileTypes)
85
- console.debug("Determined file type: " + type + " for url", url);
86
- switch (type) {
87
- case "unknown":
88
- {
89
- console.warn("Unknown file type. Assuming glTF:", url);
90
- const loader = new GLTFLoader();
91
- await registerExtensions(loader, context, url);
92
- return loader;
93
- }
94
- case "fbx":
95
- return new FBXLoader();
96
- case "obj":
97
- return new OBJLoader();
98
- case "usd":
99
- case "usda":
100
- case "usdz":
101
- console.warn(type.toUpperCase() + " files are not supported.");
102
- return null;
103
- // return new USDZLoader();
104
- default:
105
- console.warn("Unknown file type:", type);
106
- case "gltf":
107
- case "glb":
108
- case "vrm":
109
- {
110
- const loader = new GLTFLoader();
111
- await registerExtensions(loader, context, url);
112
- return loader;
113
- }
114
- }
115
- }
116
- /** 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.
117
- * @param context The current context
118
- * @param data The gltf data as string or ArrayBuffer
119
- * @param path The path to the gltf file
120
- * @param seed The seed for generating unique ids
121
- * @returns The loaded gltf object
122
- */
123
- export async function parseSync(context, data, path, seed) {
124
- if (typeof path !== "string") {
125
- 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);
126
- path = "";
127
- }
128
- if (printGltf)
129
- console.log("Parse glTF", path);
130
- const loader = await createLoader(path, context);
131
- if (!loader) {
132
- return undefined;
133
- }
134
- // Handle OBJ Loader
135
- if (loader instanceof OBJLoader) {
136
- if (typeof data !== "string") {
137
- data = new TextDecoder().decode(data);
138
- }
139
- const res = loader.parse(data);
140
- return {
141
- animations: res.animations,
142
- scene: res,
143
- scenes: [res]
144
- };
145
- }
146
- // Handle any other loader that is not a GLTFLoader
147
- const isNotGLTF = !(loader instanceof GLTFLoader);
148
- if (isNotGLTF) {
149
- const res = loader.parse(data, path);
150
- postprocessLoadedFile(loader, res);
151
- return {
152
- animations: res.animations,
153
- scene: res,
154
- scenes: [res]
155
- };
156
- }
157
- const componentsExtension = registerComponentExtension(loader);
158
- return new Promise((resolve, reject) => {
159
- try {
160
- // GltfLoader expects a base path for resolving referenced assets
161
- // https://threejs.org/docs/#examples/en/loaders/GLTFLoader.parse
162
- // so we make sure that "path" is never a file path
163
- let gltfLoaderPath = path.split("?")[0].trimEnd();
164
- // This assumes that the path is a FILE path and not already a directory
165
- // (it does not end with "/") – see https://linear.app/needle/issue/NE-6075
166
- {
167
- // strip file from path
168
- const parts = gltfLoaderPath.split("/");
169
- // check if the last part is a /, otherwise remove it
170
- if (parts.length > 0 && parts[parts.length - 1] !== "")
171
- parts.pop();
172
- gltfLoaderPath = parts.join("/");
173
- if (!gltfLoaderPath.endsWith("/"))
174
- gltfLoaderPath += "/";
175
- }
176
- loader.resourcePath = gltfLoaderPath;
177
- loaders.addDracoAndKTX2Loaders(loader, context);
178
- invokeEvents(GltfLoadEventType.BeforeLoad, new GltfLoadEvent(context, path, loader));
179
- const camera = context.mainCamera;
180
- loader.parse(data, "", async (res) => {
181
- invokeAfterImportPluginHooks(path, res, context);
182
- invokeEvents(GltfLoadEventType.AfterLoaded, new GltfLoadEvent(context, path, loader, res));
183
- await handleLoadedGltf(context, path, res, seed, componentsExtension);
184
- await compileAsync(res.scene, context, camera);
185
- invokeEvents(GltfLoadEventType.FinishedSetup, new GltfLoadEvent(context, path, loader, res));
186
- resolve(res);
187
- if (downloadGltf) {
188
- _downloadGltf(data);
189
- }
190
- }, err => {
191
- console.error("Loading asset at \"" + path + "\" failed\n", err);
192
- resolve(undefined);
193
- });
194
- }
195
- catch (err) {
196
- console.error(err);
197
- reject(err);
198
- }
199
- });
200
- }
201
- /**
202
- * 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.
203
- * @param context The current context
204
- * @param url The url to the gltf file
205
- * @param sourceId The source id of the gltf file - this is usually the url
206
- * @param seed The seed for generating unique ids
207
- * @param prog A progress callback
208
- * @returns The loaded gltf object
209
- */
210
- export async function loadSync(context, url, sourceId, seed, prog) {
211
- // better to create new loaders every time
212
- // (maybe we can cache them...)
213
- // but due to the async nature and potentially triggering multiple loads at the same time
214
- // we need to make sure the extensions dont override each other
215
- // creating new loaders should not be expensive as well
216
- checkIfUserAttemptedToLoadALocalFile(url);
217
- const loader = await createLoader(url, context);
218
- if (!loader) {
219
- return undefined;
220
- }
221
- // Handle any loader that is not a GLTFLoader
222
- if (!(loader instanceof GLTFLoader)) {
223
- const res = await loader.loadAsync(url, prog);
224
- postprocessLoadedFile(loader, res);
225
- return {
226
- animations: res.animations,
227
- scene: res,
228
- scenes: [res]
229
- };
230
- }
231
- const componentsExtension = registerComponentExtension(loader);
232
- return new Promise((resolve, reject) => {
233
- try {
234
- loaders.addDracoAndKTX2Loaders(loader, context);
235
- invokeEvents(GltfLoadEventType.BeforeLoad, new GltfLoadEvent(context, url, loader));
236
- const camera = context.mainCamera;
237
- loader.load(url, async (res) => {
238
- invokeAfterImportPluginHooks(url, res, context);
239
- invokeEvents(GltfLoadEventType.AfterLoaded, new GltfLoadEvent(context, url, loader, res));
240
- await handleLoadedGltf(context, sourceId, res, seed, componentsExtension);
241
- await compileAsync(res.scene, context, camera);
242
- invokeEvents(GltfLoadEventType.FinishedSetup, new GltfLoadEvent(context, url, loader, res));
243
- resolve(res);
244
- if (downloadGltf) {
245
- _downloadGltf(url);
246
- }
247
- }, evt => {
248
- prog?.call(loader, evt);
249
- }, err => {
250
- console.error("Loading asset at \"" + url + "\" failed\n", err);
251
- resolve(undefined);
252
- });
253
- }
254
- catch (err) {
255
- console.error(err);
256
- reject(err);
257
- }
258
- });
259
- }
260
- async function compileAsync(scene, context, camera) {
261
- if (!camera)
262
- camera = context.mainCamera;
263
- try {
264
- if (camera) {
265
- await context.renderer.compileAsync(scene, camera, context.scene)
266
- .catch(err => {
267
- console.warn(err.message);
268
- });
269
- }
270
- else
271
- registerPrewarmObject(scene, context);
272
- }
273
- catch (err) {
274
- console.warn(err?.message || err);
275
- }
276
- }
277
- function checkIfUserAttemptedToLoadALocalFile(url) {
278
- const fullurl = new URL(url, window.location.href).href;
279
- if (fullurl.startsWith("file://")) {
280
- 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>";
281
- showBalloonMessage(msg);
282
- console.warn(msg);
283
- }
284
- }
285
- function _downloadGltf(data) {
286
- if (typeof data === "string") {
287
- const a = document.createElement("a");
288
- a.href = data;
289
- a.download = data.split("/").pop();
290
- a.click();
291
- }
292
- else {
293
- const blob = new Blob([data], { type: "application/octet-stream" });
294
- const url = window.URL.createObjectURL(blob);
295
- const a = document.createElement("a");
296
- a.href = url;
297
- a.download = "download.glb";
298
- a.click();
299
- }
300
- }
301
- function postprocessLoadedFile(loader, result) {
302
- if (result?.isObject3D) {
303
- const obj = result;
304
- if (loader instanceof FBXLoader || loader instanceof OBJLoader) {
305
- obj.traverse((child) => {
306
- const mesh = child;
307
- // See https://github.com/needle-tools/three.js/blob/b8df3843ff123ac9dc0ed0d3ccc5b568f840c804/examples/webgl_loader_multiple.html#L377
308
- if (mesh?.isMesh) {
309
- postprocessFBXMaterials(mesh, mesh.material);
310
- }
311
- });
312
- }
313
- // else if (loader instanceof OBJLoader) {
314
- // obj.traverse(_child => {
315
- // // TODO: Needs testing
316
- // // if (!(child instanceof Mesh)) return;
317
- // // child.material = new MeshStandardMaterial();
318
- // });
319
- // }
320
- }
321
- }
322
- //# sourceMappingURL=engine_scenetools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine_scenetools.js","sourceRoot":"","sources":["../../src/engine/engine_scenetools.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- export declare class Upload_Result {
2
- success: boolean;
3
- filename: string | null;
4
- hash: string | null;
5
- size: number | null;
6
- url?: string | null;
7
- constructor(success: boolean, filename: string | null, hash: string | null, size: number | null);
8
- }
9
- export declare function upload_file(file: File, url: string): Promise<Upload_Result | null>;
10
- export declare function hash(buffer: ArrayBuffer): string;
11
- export declare function download_file(filename: string, expectedHash: string, expectedSize: number, serverUrl: string, skipChecks?: boolean): Promise<ArrayBuffer | null>;
12
- export declare function download(url: string, progressCallback: (prog: ProgressEvent) => void): Promise<Uint8Array | null>;