@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.
- package/dist/{needle-engine.bundle-8e64768b.js → needle-engine.bundle-99bb72c3.js} +7 -7
- package/dist/{needle-engine.bundle-4e21a0eb.min.js → needle-engine.bundle-ac883b5a.min.js} +2 -2
- package/dist/{needle-engine.bundle-0293e87a.light.js → needle-engine.bundle-adcbea18.light.js} +7 -7
- package/dist/{needle-engine.bundle-1679a09a.light.min.js → needle-engine.bundle-b57b2055.light.min.js} +2 -2
- package/dist/{needle-engine.bundle-2f187b48.light.umd.cjs → needle-engine.bundle-bcb5a31b.light.umd.cjs} +4 -4
- package/dist/{needle-engine.bundle-4366d297.umd.cjs → needle-engine.bundle-caf79082.umd.cjs} +4 -4
- package/dist/needle-engine.js +2 -2
- package/dist/needle-engine.light.js +2 -2
- 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_loaders.callbacks.d.ts +1 -0
- package/lib/engine/engine_loaders.callbacks.js +1 -0
- package/lib/engine/engine_loaders.callbacks.js.map +1 -1
- package/lib/engine/engine_utils_format.js +2 -2
- package/lib/engine/engine_utils_format.js.map +1 -1
- package/package.json +1 -1
- package/plugins/vite/build-pipeline.js +22 -6
- package/src/engine/engine_loaders.callbacks.ts +1 -0
- package/src/engine/engine_utils_format.ts +2 -2
- package/lib/engine/engine.d.ts +0 -4
- package/lib/engine/engine.js +0 -12
- package/lib/engine/engine.js.map +0 -1
- package/lib/engine/engine_element.d.ts +0 -113
- package/lib/engine/engine_element.js +0 -833
- package/lib/engine/engine_element.js.map +0 -1
- package/lib/engine/engine_element_attributes.d.ts +0 -72
- package/lib/engine/engine_element_attributes.js +0 -2
- package/lib/engine/engine_element_attributes.js.map +0 -1
- package/lib/engine/engine_element_extras.d.ts +0 -6
- package/lib/engine/engine_element_extras.js +0 -14
- package/lib/engine/engine_element_extras.js.map +0 -1
- package/lib/engine/engine_element_loading.d.ts +0 -44
- package/lib/engine/engine_element_loading.js +0 -350
- package/lib/engine/engine_element_loading.js.map +0 -1
- package/lib/engine/engine_element_overlay.d.ts +0 -21
- package/lib/engine/engine_element_overlay.js +0 -167
- package/lib/engine/engine_element_overlay.js.map +0 -1
- package/lib/engine/engine_scenetools.d.ts +0 -50
- package/lib/engine/engine_scenetools.js +0 -322
- package/lib/engine/engine_scenetools.js.map +0 -1
- package/lib/engine/engine_web_api.d.ts +0 -12
- package/lib/engine/engine_web_api.js +0 -113
- package/lib/engine/engine_web_api.js.map +0 -1
- package/lib/engine-components/FlyControls.d.ts +0 -10
- package/lib/engine-components/FlyControls.js +0 -29
- 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>;
|