@needle-tools/engine 2.65.0-pre → 2.65.0-pre.1
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 +3 -0
- package/dist/needle-engine.js +9 -4
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine/engine_element.d.ts +2 -0
- package/lib/engine/engine_element.js +26 -4
- package/lib/engine/engine_element.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/engine_element.ts +31 -5
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,9 @@ All notable changes to this package will be documented in this file.
|
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [2.65.0-pre.1] - 2023-03-10
|
|
8
|
+
- Fix: issue where `<needle-engine>` element was added not yet in the DOM when queried which caused the paths to not be assigned and the engine to not load
|
|
9
|
+
|
|
7
10
|
## [2.65.0-pre] - 2023-03-09
|
|
8
11
|
- Add: runtime checks for recursive loading to prevent it from breaking
|
|
9
12
|
- Change: internal duplicate active state on `Object3D` has been removed, instead `visible` is used. This was previously a workaround for the `Renderer` setting the visible state when being enabled or disabled but this has been changed in a previous version and it now only sets a flag in the object's Layers instead (which allows for a single object in the hierarchy to not being rendered by setting `Renderer.enabled = false` while objects in the child hierarchy stay visible)
|
package/dist/needle-engine.js
CHANGED
|
@@ -65070,6 +65070,8 @@ class hZ extends HTMLElement {
|
|
|
65070
65070
|
r(this, "_overlay_ar");
|
|
65071
65071
|
r(this, "_loadingProgress01", 0);
|
|
65072
65072
|
r(this, "_loadingView");
|
|
65073
|
+
r(this, "_previousSrc", null);
|
|
65074
|
+
r(this, "_isCurrentlySettingsSourceAttribute", !1);
|
|
65073
65075
|
this._overlay_ar = new YO(), this._context = new Ng({ domElement: this });
|
|
65074
65076
|
}
|
|
65075
65077
|
get loadingProgress01() {
|
|
@@ -65103,7 +65105,7 @@ class hZ extends HTMLElement {
|
|
|
65103
65105
|
}
|
|
65104
65106
|
async connectedCallback() {
|
|
65105
65107
|
We && (console.log("<needle-engine> connected"), console.dir(this)), this.onSetupDesktop();
|
|
65106
|
-
const g = this.getAttribute("src");
|
|
65108
|
+
const g = this.getAttribute("src") ?? globalThis["needle:codegen_files"];
|
|
65107
65109
|
g && g.length > 0 && await this.onLoad(g, !0), this.onSetupDesktop();
|
|
65108
65110
|
}
|
|
65109
65111
|
disconnectedCallback() {
|
|
@@ -65149,6 +65151,8 @@ class hZ extends HTMLElement {
|
|
|
65149
65151
|
}
|
|
65150
65152
|
async onLoad(g, I) {
|
|
65151
65153
|
var n, a;
|
|
65154
|
+
if (this._isCurrentlySettingsSourceAttribute || g === this._previousSrc)
|
|
65155
|
+
return;
|
|
65152
65156
|
if (!g || !g.length) {
|
|
65153
65157
|
console.error("Needle Engine: No source specified", g);
|
|
65154
65158
|
return;
|
|
@@ -65157,6 +65161,7 @@ class hZ extends HTMLElement {
|
|
|
65157
65161
|
console.error("Needle Engine: Context not initialized");
|
|
65158
65162
|
return;
|
|
65159
65163
|
}
|
|
65164
|
+
this._previousSrc = g, this._isCurrentlySettingsSourceAttribute = !0, this.setAttribute("src", g == null ? void 0 : g.toString()), this._isCurrentlySettingsSourceAttribute = !1;
|
|
65160
65165
|
const i = this.getAttribute("alias");
|
|
65161
65166
|
this.classList.add("loading"), We && console.log("Needle Engine: Begin loading", i ?? "");
|
|
65162
65167
|
const e = !0, C = this.dispatchEvent(new CustomEvent("loadstart", {
|
|
@@ -65168,9 +65173,9 @@ class hZ extends HTMLElement {
|
|
|
65168
65173
|
}));
|
|
65169
65174
|
!this._loadingView && C && (this._loadingView = new Fh(this)), C && ((n = this._loadingView) == null || n.onLoadingBegin("begin load")), this.onBeforeBeginLoading(), We && console.log(g);
|
|
65170
65175
|
let o;
|
|
65171
|
-
g.startsWith("[") && g.endsWith("]") ? o = JSON.parse(g) : o = [g];
|
|
65176
|
+
Array.isArray(g) ? o = g : g.startsWith("[") && g.endsWith("]") ? o = JSON.parse(g) : g.includes(",") ? o = g.split(",") : o = [g];
|
|
65172
65177
|
let B = null;
|
|
65173
|
-
if (
|
|
65178
|
+
if ((o == null ? void 0 : o.length) > 0 && (B = async (Q) => {
|
|
65174
65179
|
let E = 0;
|
|
65175
65180
|
Q.hash && (E = Number.parseInt(Q.hash) ?? 0);
|
|
65176
65181
|
const c = hC();
|
|
@@ -65197,7 +65202,7 @@ class hZ extends HTMLElement {
|
|
|
65197
65202
|
}
|
|
65198
65203
|
I || Er(Q);
|
|
65199
65204
|
}), !B) {
|
|
65200
|
-
console.error("Needle Engine: No
|
|
65205
|
+
console.error("Needle Engine: No files to load", g);
|
|
65201
65206
|
return;
|
|
65202
65207
|
}
|
|
65203
65208
|
const s = this.getAttribute("hash");
|
|
@@ -4272,7 +4272,7 @@ void main() {
|
|
|
4272
4272
|
${C}
|
|
4273
4273
|
|
|
4274
4274
|
This could mean you forgot to add a npmdef to your ExportInfo
|
|
4275
|
-
<a href="https://engine.needle.tools/docs/project_structure.html#creating-and-installing-a-npmdef" target="_blank">documentation</a>`,JC.Warn)}}if(A.children)for(const e of A.children)await B0(t,e,g)}function Mj(t,A){const{instance:g,compData:I,obj:i}=t;A.object=i,A.target=g,fp(g,I,A),hJ&&console.debug("add "+I.name,I,g)}class s0{createBuiltinComponents(A,g,I,i,e){return kj(A,g,I,i,e)}writeBuiltinComponentData(A,g){return fj(A,g)}parseSync(A,g,I,i){return dJ(A,g,I,i)}loadSync(A,g,I,i,e){return wJ(A,g,I,i,e)}}PR(s0);const Uj=wA("printGltf");var lJ=(t=>(t[t.BeforeLoad=0]="BeforeLoad",t[t.AfterLoaded=1]="AfterLoaded",t[t.FinishedSetup=10]="FinishedSetup",t))(lJ||{});class on{constructor(A,g,I,i){r(this,"context");r(this,"loader");r(this,"path");r(this,"gltf");this.context=A,this.path=g,this.loader=I,this.gltf=i}}const KB={};function Rj(t,A){KB[t]=KB[t]||[],KB[t].push(A)}function Fj(t,A){if(KB[t]){const g=KB[t].indexOf(A);g>=0&&KB[t].splice(g,1)}}function ga(t,A){if(KB[t])for(const g of KB[t])g(A)}async function DJ(t,A,g,I,i){Uj&&console.log(g),await t.assets.registerGltf(g),await aC().createBuiltinComponents(t,A,g,I,i)}function n0(t,A){const g=new nQ;return Y_(g,A,t),g}function dJ(t,A,g,I){typeof g!="string"&&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",g,typeof g);const i=n0(g,t),e=um(i);return new Promise((C,o)=>{try{Jr(i,t),ga(0,new on(t,g,i)),i.parse(A,g,async B=>{ga(1,new on(t,g,i,B)),await DJ(t,g,B,I,e),ga(10,new on(t,g,i,B)),cU(B.scene,t),C(B)},B=>{console.error("failed loading "+g,B),C(void 0)})}catch(B){console.error(B),o(B)}})}function wJ(t,A,g,I=!1,i){const e=n0(A,t),C=um(e);return new Promise((o,B)=>{try{Jr(e,t),ga(0,new on(t,A,e)),e.load(A,async s=>{ga(1,new on(t,A,e,s)),await DJ(t,A,s,g,C),ga(10,new on(t,A,e,s)),cU(s.scene,t),o(s)},s=>{i==null||i.call(e,s)},s=>{console.error("failed loading "+A,s),o(void 0)})}catch(s){console.error(s),B(s)}})}function mj(t,A,g,I=!1){A&&A.animations&&A.animations.length>0&&g.push(()=>{uJ(A,I)})}function uJ(t,A=!1){if(!t||!t.animations||!t.scene||!A&&!AQ(t.scene,Kt))return;for(let I=0;I<t.animations.length;I++){const i=t.animations[I];if(!(!i.tracks||i.tracks.length<=0))for(const e in i.tracks){const C=i.tracks[e],o=C.__objectName??C.name.substring(0,C.name.indexOf(".")),B=t.scene.getObjectByName(o);if(!B)continue;let s=g(B);if(!s)if(A)s=Vo(t.scene,new Kt);else{console.warn("Failed finding animator for",C.name,o);continue}const n=s.animations=s.animations||[];i.name_animator=s.name,n.indexOf(i)<0&&n.push(i)}}function g(I){var e;if(!I)return;const i=(e=I.userData)==null?void 0:e.components;if(i&&i.length>0)for(let C=0;C<i.length;C++){const o=i[C];if(o instanceof xe||o instanceof Kt)return I}return g(I.parent)}}function pJ(t,A,g=!0){if(A.userData&&A.userData.name===t)return A;if(A.children&&A.children.length>0)for(let I=0;I<A.children.length;I++){const i=A.children[I],e=pJ(t,i,g);if(e)return e}}function Nj(t,A,g=!0){return nn(t,A,g)}function Kj(t,A=null){const g=A??Ng.Current.scripts;for(const I in g){const i=g[I];if(i&&i.guid===t)return i}return null}Object.defineProperty(zg.prototype,"fov",{get:function(){return this._fov},set:function(t){const A=t!==this._fov;this._fov=t,A&&this.view!==void 0&&this.updateProjectionMatrix()}}),Object.defineProperty(zg.prototype,"near",{get:function(){return this._near},set:function(t){const A=t!==this._near;this._near=t,A&&this.view!==void 0&&this.updateProjectionMatrix()}}),Object.defineProperty(zg.prototype,"far",{get:function(){return this._far},set:function(t){const A=t!==this._far;this._far=t,A&&this.view!==void 0&&this.updateProjectionMatrix()}});const yJ="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJFYmVuZV8zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTYwIDE4Ny43NCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOnVybCgjVW5iZW5hbm50ZXJfVmVybGF1Zl8xMjIpO30uY2xzLTJ7ZmlsbDojZjNlNjAwO30uY2xzLTN7ZmlsbDp1cmwoI1VuYmVuYW5udGVyX1ZlcmxhdWZfMTEzKTt9LmNscy00e2ZpbGw6dXJsKCNncmFkaWVudC02KTt9LmNscy01e2ZpbGw6dXJsKCNVbmJlbmFubnRlcl9WZXJsYXVmXzExMCk7fS5jbHMtNntmaWxsOnVybCgjVW5iZW5hbm50ZXJfVmVybGF1Zl8xMDEpO30uY2xzLTd7ZmlsbDojOWMzO30uY2xzLTh7ZmlsbDojZmZlMTEzO30uY2xzLTl7ZmlsbDp1cmwoI2dyYWRpZW50LTUpO308L3N0eWxlPjxsaW5lYXJHcmFkaWVudCBpZD0iVW5iZW5hbm50ZXJfVmVybGF1Zl8xMTMiIHgxPSI4OS42NCIgeTE9IjE4NC44MSIgeDI9IjkwLjQ4IiB5Mj0iMjEuODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM2MmQzOTkiLz48c3RvcCBvZmZzZXQ9Ii41MSIgc3RvcC1jb2xvcj0iI2FjZDg0MiIvPjxzdG9wIG9mZnNldD0iLjkiIHN0b3AtY29sb3I9IiNkN2RiMGEiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iVW5iZW5hbm50ZXJfVmVybGF1Zl8xMTAiIHgxPSI2OS42OCIgeTE9IjE3OC45IiB4Mj0iNjguMDgiIHkyPSIxNi43NyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzBiYTM5OCIvPjxzdG9wIG9mZnNldD0iLjUiIHN0b3AtY29sb3I9IiM0Y2EzNTIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM3NmEzMGEiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iVW5iZW5hbm50ZXJfVmVybGF1Zl8xMDEiIHgxPSIzNi42IiB5MT0iMTUyLjE3IiB4Mj0iMzQuNyIgeTI9Ijg0LjE5IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDAsIDApIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIuMTkiIHN0b3AtY29sb3I9IiMzNmEzODIiLz48c3RvcCBvZmZzZXQ9Ii41NCIgc3RvcC1jb2xvcj0iIzQ5YTQ1OSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzc2YTMwYiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJVbmJlbmFubnRlcl9WZXJsYXVmXzEyMiIgeDE9IjE1LjgyIiB5MT0iMTUzLjI0IiB4Mj0iMTgiIHkyPSI5MC44NiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzI2Nzg4MCIvPjxzdG9wIG9mZnNldD0iLjUxIiBzdG9wLWNvbG9yPSIjNDU3YTVjIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNzE3NTE2Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImdyYWRpZW50LTYiIHgxPSIxMzUuMDgiIHkxPSIxMzUuNDMiIHgyPSIxNDguOTMiIHkyPSI2My40NyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2IwZDkzOSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2VhZGIwNCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkaWVudC01IiB4MT0iLTQxNjMuMjUiIHkxPSIyMjg1LjEyIiB4Mj0iLTQxNjAuODEiIHkyPSIyMjE1LjM0IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MDEuMTUgLTU5NS4yNSkgcm90YXRlKDIwKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iLjE3IiBzdG9wLWNvbG9yPSIjNzRhZjUyIi8+PHN0b3Agb2Zmc2V0PSIuNDgiIHN0b3AtY29sb3I9IiM5OWJlMzIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNjMGM0MGEiLz48L2xpbmVhckdyYWRpZW50PjxzeW1ib2wgaWQ9Im5lZWRsZS1pY29uIiB2aWV3Qm94PSIwIDAgMTYwIDE4Ny43NCI+PGc+PHBvbHlnb24gY2xhc3M9ImNscy0zIiBwb2ludHM9Ijc5LjMyIDM2Ljk4IDc5LjMyIDE4Ny43NCA5NSAxNzQuNTQgMTAxLjU5IDE4LjIzIDc5LjMyIDM2Ljk4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy01IiBwb2ludHM9Ijc5LjMyIDM2Ljk4IDU3LjA1IDE4LjIzIDYzLjY0IDE3NC41NCA3OS4zMiAxODcuNzQgNzkuMzIgMzYuOTgiLz48cG9seWdvbiBjbGFzcz0iY2xzLTYiIHBvaW50cz0iMjUuMTkgMTA0LjgzIDMzLjgyIDE1My44NyA0Ni4zMiAxMzguOTIgNDMuODYgODIuNSAyNS4xOSAxMDQuODMiLz48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iMjUuMTkgMTA0LjgzIDAgOTAuMjQgMTYuOTcgMTQ0LjEgMzMuODIgMTUzLjg3IDI1LjE5IDEwNC44MyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtNyIgcG9pbnRzPSI0My44NiA4Mi41IDE4LjY5IDY3Ljk4IDAgOTAuMjQgMjUuMTggMTA0LjgzIDQzLjg2IDgyLjUiLz48cG9seWdvbiBjbGFzcz0iY2xzLTQiIHBvaW50cz0iMTM0LjgyIDc4LjY5IDEyNC44NSAxMzUuMTkgMTQwLjQzIDEyNi4xNSAxNjAgNjQuMSAxMzQuODIgNzguNjkiLz48cG9seWdvbiBjbGFzcz0iY2xzLTkiIHBvaW50cz0iMTM0LjgyIDc4LjY5IDExNi4xNCA1Ni4zNiAxMTMuMjggMTIxLjM2IDEyNC44NSAxMzUuMTkgMTM0LjgyIDc4LjY5Ii8+PHBvbHlnb24gY2xhc3M9ImNscy04IiBwb2ludHM9IjE2MCA2NC4xIDE0MS4zMSA0MS44NCAxMTYuMTQgNTYuMzYgMTM0LjgxIDc4LjY5IDE2MCA2NC4xIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEwMS41OSAxOC4yMyA3OS4zMiAwIDU3LjA1IDE4LjIzIDc5LjMyIDM2Ljk4IDEwMS41OSAxOC4yMyIvPjwvZz48L3N5bWJvbD48L2RlZnM+PHVzZSB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE4Ny43NCIgeGxpbms6aHJlZj0iI25lZWRsZS1pY29uIi8+PC9zdmc+",Ia=wA("debugloadingbar"),Q0=wA("debugloadingbarrendering");let zE=0,SJ;function fJ(t){Ia&&console.log(t.progress.loaded.toFixed(0)+"/"+t.progress.total.toFixed(0),t);const A=t.count,g=t.progress.total;g===0||g===void 0?(SJ!==t.name&&(zE=0),SJ=t.name,zE+=(1-zE)*.001,Ia&&Qs("Loading "+t.name+" did not report total size")):zE=t.progress.loaded/g;const I=t.index/A+zE/A;return gg.clamp01(I)}const Od=class{constructor(A,g){r(this,"loadingProgress",0);r(this,"container");r(this,"_progress",0);r(this,"_allowCustomLoadingElement",!0);r(this,"_loadingElement");r(this,"_loadingTextContainer",null);r(this,"_loadingBar",null);r(this,"_messageContainer",null);r(this,"_loadingElementOptions");r(this,"_progressLoop");this.container=A,this._loadingElementOptions=g}onLoadingBegin(A){if(Ia&&console.log("Begin Loading"),!this._loadingElement){for(let g=0;g<this.container.children.length;g++){const I=this.container.children[g];if(I.classList.contains(Od.LoadingContainerClassName)){if(!this._allowCustomLoadingElement){Ia&&console.warn("Remove custom loading container"),this.container.removeChild(I);continue}this._loadingElement=this.createLoadingElement(I)}}this._loadingElement||(this._loadingElement=this.createLoadingElement())}this._progress=0,this.loadingProgress=0,this._loadingElement.style.display="flex",this.container.appendChild(this._loadingElement),this.smoothProgressLoop(),this.setMessage(A??"")}onLoadingUpdate(A,g){var i;(i=this._loadingElement)!=null&&i.parentElement||this.onLoadingBegin(g);let I=0;typeof A=="number"?I=A:("index"in A&&(I=fJ(A)),!g&&"name"in A&&this.setMessage("loading "+A.name)),this.loadingProgress=I,g&&this.setMessage(g),this.updateDisplay()}onLoadingFinished(A){this.loadingProgress=1,this.setMessage(A??"")}setMessage(A){this._messageContainer&&(this._messageContainer.innerText=A)}smoothProgressLoop(){if(this._progressLoop)return;let A=1/12;const g=1-.05;Q0&&(A=1/500,typeof Q0=="number"&&(A*=Q0)),this._progressLoop=setInterval(()=>{if(this.loadingProgress>=1&&this._progress>=g){this._loadingElement&&(Ia&&console.log("Hiding loading element"),this._loadingElement.style.display="none",this._loadingElement.remove()),clearInterval(this._progressLoop),this._progressLoop=null;return}this._progress=gg.lerp(this._progress,this.loadingProgress,A*this.loadingProgress),this.updateDisplay()},A)}updateDisplay(){const A=this._progress,g=(A*100).toFixed(0)+"%";this._loadingBar&&(this._loadingBar.style.width=A*100+"%"),this._loadingTextContainer&&(this._loadingTextContainer.textContent=g)}createLoadingElement(A){var s,n;Ia&&!A&&console.log("Creating loading element"),this._loadingElement=A||document.createElement("div"),A||(this._loadingElement.style.position="fixed",this._loadingElement.style.width="100%",this._loadingElement.style.height="100%",this._loadingElement.style.left="0",this._loadingElement.style.top="0",this._loadingElement.style.backgroundColor="#000000",this._loadingElement.style.display="flex",this._loadingElement.style.alignItems="center",this._loadingElement.style.justifyContent="center",this._loadingElement.style.zIndex="1000",this._loadingElement.style.flexDirection="column",this._loadingElement.style.pointerEvents="none",this._loadingElement.style.color="white");const g=((s=this._loadingElementOptions)==null?void 0:s.className)??Od.LoadingContainerClassName;if(this._loadingElement.classList.add(g),(n=this._loadingElementOptions)!=null&&n.additionalClasses)for(const a of this._loadingElementOptions.additionalClasses)this._loadingElement.classList.add(a);const I=document.createElement("div"),i=30;I.style.display="flex",I.style.width=i+"%",I.style.height="2px",I.style.background="rgba(255,255,255,.2)",this._loadingElement.appendChild(I);const e=document.createElement("img"),C=64;e.style.width=`${C}px`,e.style.height=`${C}px`,e.style.position="absolute",e.style.left="50%",e.style.transform=`translate(-${C*.5}px, -${C+32}px)`,e.addEventListener("click",()=>window.open("https://needle.tools","_blank")),e.style.cursor="pointer",e.style.pointerEvents="all",e.src=yJ,I.appendChild(e),this._loadingBar=document.createElement("div"),I.appendChild(this._loadingBar);const o=function(a){return gg.lerp(i*.5,100-i*.5,a)+"%"};this._loadingBar.style.background=`linear-gradient(90deg, #02022B ${o(0)}, #0BA398 ${o(.4)}, #99CC33 ${o(.5)}, #D7DB0A ${o(1)})`,this._loadingBar.style.backgroundAttachment="fixed",this._loadingBar.style.width="0%",this._loadingBar.style.height="100%",this._loadingTextContainer=document.createElement("div"),this._loadingTextContainer.style.display="flex",this._loadingTextContainer.style.justifyContent="center",this._loadingTextContainer.style.marginTop="1.2em",this._loadingElement.appendChild(this._loadingTextContainer);const B=document.createElement("div");return this._messageContainer=B,B.style.display="flex",B.style.fontSize=".8em",B.style.paddingTop=".5em",B.style.color="rgba(255,255,255,.5)",B.style.fontWeight="200",B.style.fontFamily="Roboto, sans-serif",B.style.justifyContent="center",this._loadingElement.appendChild(B),this._loadingElement}};let md=Od;r(md,"LoadingContainerClassName","loading"),PR(s0);const Et=wA("debugwebcomponent"),GJ="needle-engine",kJ="vr",MJ="desktop",Jj=[fs,kJ,MJ],XE="ar-session-active",$E="desktop-session-active";class qj extends HTMLElement{constructor(){super();r(this,"gameObject",sA);r(this,"GameObject",sA);r(this,"_context");r(this,"_overlay_ar");r(this,"_loadingProgress01",0);r(this,"_loadingView");this._overlay_ar=new BO,this._context=new Ng({domElement:this})}get loadingProgress01(){return this._loadingProgress01}get loadingFinished(){return this.loadingProgress01>.999}get cameraControls(){const g=this.getAttribute("camera-controls");return!(g===null||g==="False"||g==="false"||g==="0")}getContext(){return new Promise((g,I)=>{if(this._context&&this.loadingFinished)g(this._context);else{const i=()=>{this.removeEventListener("loadfinished",i),this._context&&this.loadingFinished&&g(this._context)};this.addEventListener("loadfinished",i)}})}get context(){return this._context}get Context(){return this._context}async connectedCallback(){Et&&(console.log("<needle-engine> connected"),console.dir(this)),this.onSetupDesktop();const g=this.getAttribute("src");g&&g.length>0&&await this.onLoad(g,!0),this.onSetupDesktop()}disconnectedCallback(){var g;(g=this._context)==null||g.onDestroy()}static get observedAttributes(){return["hash","src","camera-controls","loadstart","progress","loadfinished","dracoDecoderPath","dracoDecoderType","ktx2DecoderPath"]}attributeChangedCallback(g,I,i){switch(g){case"src":Et&&console.log("src changed to type:",typeof i,', from "',I,'" to "',i),this.onLoad(i,!1);break;case"hash":this._context&&(this._context.hash=i);break;case"loadstart":case"progress":case"loadfinished":typeof i=="string"&&i.length>0&&(Et&&console.log(g+" attribute changed",i),this.registerEventFromAttribute(g,i));break;case"dracoDecoderPath":Et&&console.log("dracoDecoderPath",i),GF(i);break;case"dracoDecoderType":i==="wasm"||i==="js"?(Et&&console.log("dracoDecoderType",i),kF(i)):console.error("Invalid dracoDecoderType",i,"expected js or wasm");break;case"ktx2DecoderPath":Et&&console.log("ktx2DecoderPath",i),MF(i);break}}async onLoad(g,I){var n,a;if(!g||!g.length){console.error("Needle Engine: No source specified",g);return}if(!this._context){console.error("Needle Engine: Context not initialized");return}const i=this.getAttribute("alias");this.classList.add("loading"),Et&&console.log("Needle Engine: Begin loading",i??"");const e=!0,C=this.dispatchEvent(new CustomEvent("loadstart",{detail:{context:this._context,alias:i},cancelable:e}));!this._loadingView&&C&&(this._loadingView=new md(this)),C&&((n=this._loadingView)==null||n.onLoadingBegin("begin load")),this.onBeforeBeginLoading(),Et&&console.log(g);let o;g.startsWith("[")&&g.endsWith("]")?o=JSON.parse(g):o=[g];let B=null;if(typeof g=="string"&&(B=async Q=>{let E=0;Q.hash&&(E=Number.parseInt(Q.hash)??0);const c=aC();for(let h=0;h<o.length;h++){const l=o[h],w=Lj(l),p={name:w,progress:null,index:h,count:o.length},D={detail:{context:Q,name:w,progress:p.progress,index:h,count:o.length,totalProgress01:this._loadingProgress01}},d=await c.loadSync(Q,l,E,!1,y=>{var f;p.progress=y,this._loadingProgress01=fJ(p),C&&((f=this._loadingView)==null||f.onLoadingUpdate(p)),D.detail.progress=y,D.detail.totalProgress01=this._loadingProgress01,this.dispatchEvent(new CustomEvent("progress",D))}),u=d==null?void 0:d.scene;u&&sA.add(u,Q.scene,Q)}I||tr(Q)}),!B){console.error("Needle Engine: No load function found",g);return}const s=this.getAttribute("hash");s!=null&&(this._context.hash=s),this._context.alias=i,this._context.isCreated?await B(this._context):await this._context.onCreate(B),this._loadingProgress01=1,C&&((a=this._loadingView)==null||a.onLoadingFinished("creating scene")),this.classList.remove("loading"),this.classList.add("loading-finished"),Et&&console.log("Needle Engine: finished loading",i??""),this.dispatchEvent(new CustomEvent("loadfinished",{detail:{context:this._context,src:i??g}}))}registerEventFromAttribute(g,I){if(typeof I=="string"&&I.length>0){const i=(0,eval)(I);typeof i=="function"&&this.addEventListener(g,e=>i==null?void 0:i.call(globalThis,this._context,e))}}getAROverlayContainer(){return this._overlay_ar.findOrCreateARContainer(this)}getVROverlayContainer(){for(let g=0;g<this.children.length;g++){const I=this.children[g];if(I.classList.contains("vr"))return I}return null}onEnterAR(g,I){var i;this.onSetupAR(),this._overlay_ar.onBegin(this._context,I,g),this.dispatchEvent(new CustomEvent("enter-ar",{detail:{session:g,context:this._context,htmlContainer:(i=this._overlay_ar)==null?void 0:i.ARContainer}}))}onExitAR(g){var I;this._overlay_ar.onEnd(this._context),this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-ar",{detail:{session:g,context:this._context,htmlContainer:(I=this._overlay_ar)==null?void 0:I.ARContainer}}))}onEnterVR(g){this.onSetupVR(),this.dispatchEvent(new CustomEvent("enter-vr",{detail:{session:g,context:this._context}}))}onExitVR(g){this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-vr",{detail:{session:g,context:this._context}}))}onSetupAR(){this.classList.add(XE),this.classList.remove($E);const g=this.getAROverlayContainer();g&&(g.classList.add(XE),g.classList.remove($E)),this.foreachHtmlElement(I=>this.setupElementsForMode(I,fs))}onSetupVR(){this.classList.remove(XE),this.classList.remove($E),this.foreachHtmlElement(g=>this.setupElementsForMode(g,kJ))}onSetupDesktop(){this.classList.remove(XE),this.classList.add($E);const g=this.getAROverlayContainer();g&&(g.classList.remove(XE),g.classList.add($E)),this.foreachHtmlElement(I=>this.setupElementsForMode(I,MJ))}setupElementsForMode(g,I,i=null){var C;if(g===((C=this._context)==null?void 0:C.renderer.domElement)||g.id==="VRButton"||g.id==="ARButton")return;if(g.style.position="absolute",g.classList.contains(I))g.style.visibility="visible",g.style.display==="none"&&(g.style.display="block");else for(const o of Jj)g.classList.contains(o)&&(g.style.visibility="hidden",g.style.display="none")}foreachHtmlElement(g){for(let I=0;I<this.children.length;I++){const i=this.children[I];i.style&&g(i)}}onBeforeBeginLoading(){const g=this.getAttribute("dracoDecoderPath");g&&(Et&&console.log("using custom draco decoder path",g),GF(g));const I=this.getAttribute("dracoDecoderType");I&&(Et&&console.log("using custom draco decoder type",I),kF(I));const i=this.getAttribute("ktx2DecoderPath");i&&(Et&&console.log("using custom ktx2 decoder path",i),MF(i))}}window.customElements.get(GJ)||window.customElements.define(GJ,qj);function Lj(t){const A=t.split("/");let g=A[A.length-1],I=g.indexOf("?");return I>0&&(g=g.substring(0,I)),g}mi.registerCallback(KC.MissingCamera,t=>{const A=t.context.scene,g="unknown",I=new LA;A.add(I);const i=new UI,e=Vo(I,i,!0);return e.sourceId=g,e.clearFlags=2,e.backgroundColor=new rI(.5,.5,.5,1),I.position.x=-2,I.position.y=2,I.position.z=2,e}),mi.registerCallback(KC.ContextCreated,t=>{if(!t.context.mainCamera)return;const A=t.context.domElement;if((A==null?void 0:A.cameraControls)===!0){const g=x1(t.context.mainCamera);if((g==null?void 0:g.isCameraController)===!0)return;const I=t.context.mainCameraComponent,i=I==null?void 0:I.gameObject;if(i){const e=Vo(i,new uB,!1);e.sourceId="unknown"}else console.warn("Missing camera object, can not add orbit controls")}});const RC=wA("debuglicense");let Nd=null,a0=null;try{a0=Promise.resolve().then(()=>_j),a0.then(t=>{Nd=t.default,a0=null,RC&&console.log("License imported via dynamic import",Nd)}).catch(t=>{RC&&console.error("Error on dynamic license import",t)})}catch(t){RC&&console.log("Importing license failed",t)}mi.registerCallback(KC.ContextCreated,t=>{bj(t.context)});async function bj(t){try{if(!Nd||Nd.hasLicense!==!0||RC)return r0(t)}catch(A){return RC&&console.log("License check failed",A),r0(t)}RC&&r0(t)}const Yj='🌵 <span class="text">Made with <a href="https://needle.tools" target="_blank">Needle</a></span>',UJ="needle-license-element",RJ=3e4,FJ=600;function r0(t){xj(t),Oj()}function xj(t){let A=Yj;const g=vj();g.innerHTML=A;const I=Tj(),i=setInterval(()=>{g&&g.parentElement!==t.domElement&&(t.domElement.appendChild(g),I&&t.domElement.appendChild(I))},100);Hj();let e=`<img class="logo" src="${yJ}" style="width: 40px; height: 40px; margin-right: 2px; vertical-align: middle; margin-bottom: 2px;"/>`;e='<a href="https://needle.tools" target="_blank">'+e+"</a>",A=e,g.innerHTML=A;const C=RJ+FJ;setTimeout(()=>{clearInterval(i),g==null||g.remove(),I==null||I.remove()},C)}async function Hj(t){const g=`
|
|
4275
|
+
<a href="https://engine.needle.tools/docs/project_structure.html#creating-and-installing-a-npmdef" target="_blank">documentation</a>`,JC.Warn)}}if(A.children)for(const e of A.children)await B0(t,e,g)}function Mj(t,A){const{instance:g,compData:I,obj:i}=t;A.object=i,A.target=g,fp(g,I,A),hJ&&console.debug("add "+I.name,I,g)}class s0{createBuiltinComponents(A,g,I,i,e){return kj(A,g,I,i,e)}writeBuiltinComponentData(A,g){return fj(A,g)}parseSync(A,g,I,i){return dJ(A,g,I,i)}loadSync(A,g,I,i,e){return wJ(A,g,I,i,e)}}PR(s0);const Uj=wA("printGltf");var lJ=(t=>(t[t.BeforeLoad=0]="BeforeLoad",t[t.AfterLoaded=1]="AfterLoaded",t[t.FinishedSetup=10]="FinishedSetup",t))(lJ||{});class on{constructor(A,g,I,i){r(this,"context");r(this,"loader");r(this,"path");r(this,"gltf");this.context=A,this.path=g,this.loader=I,this.gltf=i}}const KB={};function Rj(t,A){KB[t]=KB[t]||[],KB[t].push(A)}function Fj(t,A){if(KB[t]){const g=KB[t].indexOf(A);g>=0&&KB[t].splice(g,1)}}function ga(t,A){if(KB[t])for(const g of KB[t])g(A)}async function DJ(t,A,g,I,i){Uj&&console.log(g),await t.assets.registerGltf(g),await aC().createBuiltinComponents(t,A,g,I,i)}function n0(t,A){const g=new nQ;return Y_(g,A,t),g}function dJ(t,A,g,I){typeof g!="string"&&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",g,typeof g);const i=n0(g,t),e=um(i);return new Promise((C,o)=>{try{Jr(i,t),ga(0,new on(t,g,i)),i.parse(A,g,async B=>{ga(1,new on(t,g,i,B)),await DJ(t,g,B,I,e),ga(10,new on(t,g,i,B)),cU(B.scene,t),C(B)},B=>{console.error("failed loading "+g,B),C(void 0)})}catch(B){console.error(B),o(B)}})}function wJ(t,A,g,I=!1,i){const e=n0(A,t),C=um(e);return new Promise((o,B)=>{try{Jr(e,t),ga(0,new on(t,A,e)),e.load(A,async s=>{ga(1,new on(t,A,e,s)),await DJ(t,A,s,g,C),ga(10,new on(t,A,e,s)),cU(s.scene,t),o(s)},s=>{i==null||i.call(e,s)},s=>{console.error("failed loading "+A,s),o(void 0)})}catch(s){console.error(s),B(s)}})}function mj(t,A,g,I=!1){A&&A.animations&&A.animations.length>0&&g.push(()=>{uJ(A,I)})}function uJ(t,A=!1){if(!t||!t.animations||!t.scene||!A&&!AQ(t.scene,Kt))return;for(let I=0;I<t.animations.length;I++){const i=t.animations[I];if(!(!i.tracks||i.tracks.length<=0))for(const e in i.tracks){const C=i.tracks[e],o=C.__objectName??C.name.substring(0,C.name.indexOf(".")),B=t.scene.getObjectByName(o);if(!B)continue;let s=g(B);if(!s)if(A)s=Vo(t.scene,new Kt);else{console.warn("Failed finding animator for",C.name,o);continue}const n=s.animations=s.animations||[];i.name_animator=s.name,n.indexOf(i)<0&&n.push(i)}}function g(I){var e;if(!I)return;const i=(e=I.userData)==null?void 0:e.components;if(i&&i.length>0)for(let C=0;C<i.length;C++){const o=i[C];if(o instanceof xe||o instanceof Kt)return I}return g(I.parent)}}function pJ(t,A,g=!0){if(A.userData&&A.userData.name===t)return A;if(A.children&&A.children.length>0)for(let I=0;I<A.children.length;I++){const i=A.children[I],e=pJ(t,i,g);if(e)return e}}function Nj(t,A,g=!0){return nn(t,A,g)}function Kj(t,A=null){const g=A??Ng.Current.scripts;for(const I in g){const i=g[I];if(i&&i.guid===t)return i}return null}Object.defineProperty(zg.prototype,"fov",{get:function(){return this._fov},set:function(t){const A=t!==this._fov;this._fov=t,A&&this.view!==void 0&&this.updateProjectionMatrix()}}),Object.defineProperty(zg.prototype,"near",{get:function(){return this._near},set:function(t){const A=t!==this._near;this._near=t,A&&this.view!==void 0&&this.updateProjectionMatrix()}}),Object.defineProperty(zg.prototype,"far",{get:function(){return this._far},set:function(t){const A=t!==this._far;this._far=t,A&&this.view!==void 0&&this.updateProjectionMatrix()}});const yJ="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJFYmVuZV8zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTYwIDE4Ny43NCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOnVybCgjVW5iZW5hbm50ZXJfVmVybGF1Zl8xMjIpO30uY2xzLTJ7ZmlsbDojZjNlNjAwO30uY2xzLTN7ZmlsbDp1cmwoI1VuYmVuYW5udGVyX1ZlcmxhdWZfMTEzKTt9LmNscy00e2ZpbGw6dXJsKCNncmFkaWVudC02KTt9LmNscy01e2ZpbGw6dXJsKCNVbmJlbmFubnRlcl9WZXJsYXVmXzExMCk7fS5jbHMtNntmaWxsOnVybCgjVW5iZW5hbm50ZXJfVmVybGF1Zl8xMDEpO30uY2xzLTd7ZmlsbDojOWMzO30uY2xzLTh7ZmlsbDojZmZlMTEzO30uY2xzLTl7ZmlsbDp1cmwoI2dyYWRpZW50LTUpO308L3N0eWxlPjxsaW5lYXJHcmFkaWVudCBpZD0iVW5iZW5hbm50ZXJfVmVybGF1Zl8xMTMiIHgxPSI4OS42NCIgeTE9IjE4NC44MSIgeDI9IjkwLjQ4IiB5Mj0iMjEuODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM2MmQzOTkiLz48c3RvcCBvZmZzZXQ9Ii41MSIgc3RvcC1jb2xvcj0iI2FjZDg0MiIvPjxzdG9wIG9mZnNldD0iLjkiIHN0b3AtY29sb3I9IiNkN2RiMGEiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iVW5iZW5hbm50ZXJfVmVybGF1Zl8xMTAiIHgxPSI2OS42OCIgeTE9IjE3OC45IiB4Mj0iNjguMDgiIHkyPSIxNi43NyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzBiYTM5OCIvPjxzdG9wIG9mZnNldD0iLjUiIHN0b3AtY29sb3I9IiM0Y2EzNTIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM3NmEzMGEiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iVW5iZW5hbm50ZXJfVmVybGF1Zl8xMDEiIHgxPSIzNi42IiB5MT0iMTUyLjE3IiB4Mj0iMzQuNyIgeTI9Ijg0LjE5IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDAsIDApIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIuMTkiIHN0b3AtY29sb3I9IiMzNmEzODIiLz48c3RvcCBvZmZzZXQ9Ii41NCIgc3RvcC1jb2xvcj0iIzQ5YTQ1OSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzc2YTMwYiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJVbmJlbmFubnRlcl9WZXJsYXVmXzEyMiIgeDE9IjE1LjgyIiB5MT0iMTUzLjI0IiB4Mj0iMTgiIHkyPSI5MC44NiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzI2Nzg4MCIvPjxzdG9wIG9mZnNldD0iLjUxIiBzdG9wLWNvbG9yPSIjNDU3YTVjIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNzE3NTE2Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImdyYWRpZW50LTYiIHgxPSIxMzUuMDgiIHkxPSIxMzUuNDMiIHgyPSIxNDguOTMiIHkyPSI2My40NyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2IwZDkzOSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2VhZGIwNCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkaWVudC01IiB4MT0iLTQxNjMuMjUiIHkxPSIyMjg1LjEyIiB4Mj0iLTQxNjAuODEiIHkyPSIyMjE1LjM0IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MDEuMTUgLTU5NS4yNSkgcm90YXRlKDIwKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iLjE3IiBzdG9wLWNvbG9yPSIjNzRhZjUyIi8+PHN0b3Agb2Zmc2V0PSIuNDgiIHN0b3AtY29sb3I9IiM5OWJlMzIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNjMGM0MGEiLz48L2xpbmVhckdyYWRpZW50PjxzeW1ib2wgaWQ9Im5lZWRsZS1pY29uIiB2aWV3Qm94PSIwIDAgMTYwIDE4Ny43NCI+PGc+PHBvbHlnb24gY2xhc3M9ImNscy0zIiBwb2ludHM9Ijc5LjMyIDM2Ljk4IDc5LjMyIDE4Ny43NCA5NSAxNzQuNTQgMTAxLjU5IDE4LjIzIDc5LjMyIDM2Ljk4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy01IiBwb2ludHM9Ijc5LjMyIDM2Ljk4IDU3LjA1IDE4LjIzIDYzLjY0IDE3NC41NCA3OS4zMiAxODcuNzQgNzkuMzIgMzYuOTgiLz48cG9seWdvbiBjbGFzcz0iY2xzLTYiIHBvaW50cz0iMjUuMTkgMTA0LjgzIDMzLjgyIDE1My44NyA0Ni4zMiAxMzguOTIgNDMuODYgODIuNSAyNS4xOSAxMDQuODMiLz48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iMjUuMTkgMTA0LjgzIDAgOTAuMjQgMTYuOTcgMTQ0LjEgMzMuODIgMTUzLjg3IDI1LjE5IDEwNC44MyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtNyIgcG9pbnRzPSI0My44NiA4Mi41IDE4LjY5IDY3Ljk4IDAgOTAuMjQgMjUuMTggMTA0LjgzIDQzLjg2IDgyLjUiLz48cG9seWdvbiBjbGFzcz0iY2xzLTQiIHBvaW50cz0iMTM0LjgyIDc4LjY5IDEyNC44NSAxMzUuMTkgMTQwLjQzIDEyNi4xNSAxNjAgNjQuMSAxMzQuODIgNzguNjkiLz48cG9seWdvbiBjbGFzcz0iY2xzLTkiIHBvaW50cz0iMTM0LjgyIDc4LjY5IDExNi4xNCA1Ni4zNiAxMTMuMjggMTIxLjM2IDEyNC44NSAxMzUuMTkgMTM0LjgyIDc4LjY5Ii8+PHBvbHlnb24gY2xhc3M9ImNscy04IiBwb2ludHM9IjE2MCA2NC4xIDE0MS4zMSA0MS44NCAxMTYuMTQgNTYuMzYgMTM0LjgxIDc4LjY5IDE2MCA2NC4xIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEwMS41OSAxOC4yMyA3OS4zMiAwIDU3LjA1IDE4LjIzIDc5LjMyIDM2Ljk4IDEwMS41OSAxOC4yMyIvPjwvZz48L3N5bWJvbD48L2RlZnM+PHVzZSB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE4Ny43NCIgeGxpbms6aHJlZj0iI25lZWRsZS1pY29uIi8+PC9zdmc+",Ia=wA("debugloadingbar"),Q0=wA("debugloadingbarrendering");let zE=0,SJ;function fJ(t){Ia&&console.log(t.progress.loaded.toFixed(0)+"/"+t.progress.total.toFixed(0),t);const A=t.count,g=t.progress.total;g===0||g===void 0?(SJ!==t.name&&(zE=0),SJ=t.name,zE+=(1-zE)*.001,Ia&&Qs("Loading "+t.name+" did not report total size")):zE=t.progress.loaded/g;const I=t.index/A+zE/A;return gg.clamp01(I)}const Od=class{constructor(A,g){r(this,"loadingProgress",0);r(this,"container");r(this,"_progress",0);r(this,"_allowCustomLoadingElement",!0);r(this,"_loadingElement");r(this,"_loadingTextContainer",null);r(this,"_loadingBar",null);r(this,"_messageContainer",null);r(this,"_loadingElementOptions");r(this,"_progressLoop");this.container=A,this._loadingElementOptions=g}onLoadingBegin(A){if(Ia&&console.log("Begin Loading"),!this._loadingElement){for(let g=0;g<this.container.children.length;g++){const I=this.container.children[g];if(I.classList.contains(Od.LoadingContainerClassName)){if(!this._allowCustomLoadingElement){Ia&&console.warn("Remove custom loading container"),this.container.removeChild(I);continue}this._loadingElement=this.createLoadingElement(I)}}this._loadingElement||(this._loadingElement=this.createLoadingElement())}this._progress=0,this.loadingProgress=0,this._loadingElement.style.display="flex",this.container.appendChild(this._loadingElement),this.smoothProgressLoop(),this.setMessage(A??"")}onLoadingUpdate(A,g){var i;(i=this._loadingElement)!=null&&i.parentElement||this.onLoadingBegin(g);let I=0;typeof A=="number"?I=A:("index"in A&&(I=fJ(A)),!g&&"name"in A&&this.setMessage("loading "+A.name)),this.loadingProgress=I,g&&this.setMessage(g),this.updateDisplay()}onLoadingFinished(A){this.loadingProgress=1,this.setMessage(A??"")}setMessage(A){this._messageContainer&&(this._messageContainer.innerText=A)}smoothProgressLoop(){if(this._progressLoop)return;let A=1/12;const g=1-.05;Q0&&(A=1/500,typeof Q0=="number"&&(A*=Q0)),this._progressLoop=setInterval(()=>{if(this.loadingProgress>=1&&this._progress>=g){this._loadingElement&&(Ia&&console.log("Hiding loading element"),this._loadingElement.style.display="none",this._loadingElement.remove()),clearInterval(this._progressLoop),this._progressLoop=null;return}this._progress=gg.lerp(this._progress,this.loadingProgress,A*this.loadingProgress),this.updateDisplay()},A)}updateDisplay(){const A=this._progress,g=(A*100).toFixed(0)+"%";this._loadingBar&&(this._loadingBar.style.width=A*100+"%"),this._loadingTextContainer&&(this._loadingTextContainer.textContent=g)}createLoadingElement(A){var s,n;Ia&&!A&&console.log("Creating loading element"),this._loadingElement=A||document.createElement("div"),A||(this._loadingElement.style.position="fixed",this._loadingElement.style.width="100%",this._loadingElement.style.height="100%",this._loadingElement.style.left="0",this._loadingElement.style.top="0",this._loadingElement.style.backgroundColor="#000000",this._loadingElement.style.display="flex",this._loadingElement.style.alignItems="center",this._loadingElement.style.justifyContent="center",this._loadingElement.style.zIndex="1000",this._loadingElement.style.flexDirection="column",this._loadingElement.style.pointerEvents="none",this._loadingElement.style.color="white");const g=((s=this._loadingElementOptions)==null?void 0:s.className)??Od.LoadingContainerClassName;if(this._loadingElement.classList.add(g),(n=this._loadingElementOptions)!=null&&n.additionalClasses)for(const a of this._loadingElementOptions.additionalClasses)this._loadingElement.classList.add(a);const I=document.createElement("div"),i=30;I.style.display="flex",I.style.width=i+"%",I.style.height="2px",I.style.background="rgba(255,255,255,.2)",this._loadingElement.appendChild(I);const e=document.createElement("img"),C=64;e.style.width=`${C}px`,e.style.height=`${C}px`,e.style.position="absolute",e.style.left="50%",e.style.transform=`translate(-${C*.5}px, -${C+32}px)`,e.addEventListener("click",()=>window.open("https://needle.tools","_blank")),e.style.cursor="pointer",e.style.pointerEvents="all",e.src=yJ,I.appendChild(e),this._loadingBar=document.createElement("div"),I.appendChild(this._loadingBar);const o=function(a){return gg.lerp(i*.5,100-i*.5,a)+"%"};this._loadingBar.style.background=`linear-gradient(90deg, #02022B ${o(0)}, #0BA398 ${o(.4)}, #99CC33 ${o(.5)}, #D7DB0A ${o(1)})`,this._loadingBar.style.backgroundAttachment="fixed",this._loadingBar.style.width="0%",this._loadingBar.style.height="100%",this._loadingTextContainer=document.createElement("div"),this._loadingTextContainer.style.display="flex",this._loadingTextContainer.style.justifyContent="center",this._loadingTextContainer.style.marginTop="1.2em",this._loadingElement.appendChild(this._loadingTextContainer);const B=document.createElement("div");return this._messageContainer=B,B.style.display="flex",B.style.fontSize=".8em",B.style.paddingTop=".5em",B.style.color="rgba(255,255,255,.5)",B.style.fontWeight="200",B.style.fontFamily="Roboto, sans-serif",B.style.justifyContent="center",this._loadingElement.appendChild(B),this._loadingElement}};let md=Od;r(md,"LoadingContainerClassName","loading"),PR(s0);const Et=wA("debugwebcomponent"),GJ="needle-engine",kJ="vr",MJ="desktop",Jj=[fs,kJ,MJ],XE="ar-session-active",$E="desktop-session-active";class qj extends HTMLElement{constructor(){super();r(this,"gameObject",sA);r(this,"GameObject",sA);r(this,"_context");r(this,"_overlay_ar");r(this,"_loadingProgress01",0);r(this,"_loadingView");r(this,"_previousSrc",null);r(this,"_isCurrentlySettingsSourceAttribute",!1);this._overlay_ar=new BO,this._context=new Ng({domElement:this})}get loadingProgress01(){return this._loadingProgress01}get loadingFinished(){return this.loadingProgress01>.999}get cameraControls(){const g=this.getAttribute("camera-controls");return!(g===null||g==="False"||g==="false"||g==="0")}getContext(){return new Promise((g,I)=>{if(this._context&&this.loadingFinished)g(this._context);else{const i=()=>{this.removeEventListener("loadfinished",i),this._context&&this.loadingFinished&&g(this._context)};this.addEventListener("loadfinished",i)}})}get context(){return this._context}get Context(){return this._context}async connectedCallback(){Et&&(console.log("<needle-engine> connected"),console.dir(this)),this.onSetupDesktop();const g=this.getAttribute("src")??globalThis["needle:codegen_files"];g&&g.length>0&&await this.onLoad(g,!0),this.onSetupDesktop()}disconnectedCallback(){var g;(g=this._context)==null||g.onDestroy()}static get observedAttributes(){return["hash","src","camera-controls","loadstart","progress","loadfinished","dracoDecoderPath","dracoDecoderType","ktx2DecoderPath"]}attributeChangedCallback(g,I,i){switch(g){case"src":Et&&console.log("src changed to type:",typeof i,', from "',I,'" to "',i),this.onLoad(i,!1);break;case"hash":this._context&&(this._context.hash=i);break;case"loadstart":case"progress":case"loadfinished":typeof i=="string"&&i.length>0&&(Et&&console.log(g+" attribute changed",i),this.registerEventFromAttribute(g,i));break;case"dracoDecoderPath":Et&&console.log("dracoDecoderPath",i),GF(i);break;case"dracoDecoderType":i==="wasm"||i==="js"?(Et&&console.log("dracoDecoderType",i),kF(i)):console.error("Invalid dracoDecoderType",i,"expected js or wasm");break;case"ktx2DecoderPath":Et&&console.log("ktx2DecoderPath",i),MF(i);break}}async onLoad(g,I){var n,a;if(this._isCurrentlySettingsSourceAttribute||g===this._previousSrc)return;if(!g||!g.length){console.error("Needle Engine: No source specified",g);return}if(!this._context){console.error("Needle Engine: Context not initialized");return}this._previousSrc=g,this._isCurrentlySettingsSourceAttribute=!0,this.setAttribute("src",g==null?void 0:g.toString()),this._isCurrentlySettingsSourceAttribute=!1;const i=this.getAttribute("alias");this.classList.add("loading"),Et&&console.log("Needle Engine: Begin loading",i??"");const e=!0,C=this.dispatchEvent(new CustomEvent("loadstart",{detail:{context:this._context,alias:i},cancelable:e}));!this._loadingView&&C&&(this._loadingView=new md(this)),C&&((n=this._loadingView)==null||n.onLoadingBegin("begin load")),this.onBeforeBeginLoading(),Et&&console.log(g);let o;Array.isArray(g)?o=g:g.startsWith("[")&&g.endsWith("]")?o=JSON.parse(g):g.includes(",")?o=g.split(","):o=[g];let B=null;if((o==null?void 0:o.length)>0&&(B=async Q=>{let E=0;Q.hash&&(E=Number.parseInt(Q.hash)??0);const c=aC();for(let h=0;h<o.length;h++){const l=o[h],w=Lj(l),p={name:w,progress:null,index:h,count:o.length},D={detail:{context:Q,name:w,progress:p.progress,index:h,count:o.length,totalProgress01:this._loadingProgress01}},d=await c.loadSync(Q,l,E,!1,y=>{var f;p.progress=y,this._loadingProgress01=fJ(p),C&&((f=this._loadingView)==null||f.onLoadingUpdate(p)),D.detail.progress=y,D.detail.totalProgress01=this._loadingProgress01,this.dispatchEvent(new CustomEvent("progress",D))}),u=d==null?void 0:d.scene;u&&sA.add(u,Q.scene,Q)}I||tr(Q)}),!B){console.error("Needle Engine: No files to load",g);return}const s=this.getAttribute("hash");s!=null&&(this._context.hash=s),this._context.alias=i,this._context.isCreated?await B(this._context):await this._context.onCreate(B),this._loadingProgress01=1,C&&((a=this._loadingView)==null||a.onLoadingFinished("creating scene")),this.classList.remove("loading"),this.classList.add("loading-finished"),Et&&console.log("Needle Engine: finished loading",i??""),this.dispatchEvent(new CustomEvent("loadfinished",{detail:{context:this._context,src:i??g}}))}registerEventFromAttribute(g,I){if(typeof I=="string"&&I.length>0){const i=(0,eval)(I);typeof i=="function"&&this.addEventListener(g,e=>i==null?void 0:i.call(globalThis,this._context,e))}}getAROverlayContainer(){return this._overlay_ar.findOrCreateARContainer(this)}getVROverlayContainer(){for(let g=0;g<this.children.length;g++){const I=this.children[g];if(I.classList.contains("vr"))return I}return null}onEnterAR(g,I){var i;this.onSetupAR(),this._overlay_ar.onBegin(this._context,I,g),this.dispatchEvent(new CustomEvent("enter-ar",{detail:{session:g,context:this._context,htmlContainer:(i=this._overlay_ar)==null?void 0:i.ARContainer}}))}onExitAR(g){var I;this._overlay_ar.onEnd(this._context),this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-ar",{detail:{session:g,context:this._context,htmlContainer:(I=this._overlay_ar)==null?void 0:I.ARContainer}}))}onEnterVR(g){this.onSetupVR(),this.dispatchEvent(new CustomEvent("enter-vr",{detail:{session:g,context:this._context}}))}onExitVR(g){this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-vr",{detail:{session:g,context:this._context}}))}onSetupAR(){this.classList.add(XE),this.classList.remove($E);const g=this.getAROverlayContainer();g&&(g.classList.add(XE),g.classList.remove($E)),this.foreachHtmlElement(I=>this.setupElementsForMode(I,fs))}onSetupVR(){this.classList.remove(XE),this.classList.remove($E),this.foreachHtmlElement(g=>this.setupElementsForMode(g,kJ))}onSetupDesktop(){this.classList.remove(XE),this.classList.add($E);const g=this.getAROverlayContainer();g&&(g.classList.remove(XE),g.classList.add($E)),this.foreachHtmlElement(I=>this.setupElementsForMode(I,MJ))}setupElementsForMode(g,I,i=null){var C;if(g===((C=this._context)==null?void 0:C.renderer.domElement)||g.id==="VRButton"||g.id==="ARButton")return;if(g.style.position="absolute",g.classList.contains(I))g.style.visibility="visible",g.style.display==="none"&&(g.style.display="block");else for(const o of Jj)g.classList.contains(o)&&(g.style.visibility="hidden",g.style.display="none")}foreachHtmlElement(g){for(let I=0;I<this.children.length;I++){const i=this.children[I];i.style&&g(i)}}onBeforeBeginLoading(){const g=this.getAttribute("dracoDecoderPath");g&&(Et&&console.log("using custom draco decoder path",g),GF(g));const I=this.getAttribute("dracoDecoderType");I&&(Et&&console.log("using custom draco decoder type",I),kF(I));const i=this.getAttribute("ktx2DecoderPath");i&&(Et&&console.log("using custom ktx2 decoder path",i),MF(i))}}window.customElements.get(GJ)||window.customElements.define(GJ,qj);function Lj(t){const A=t.split("/");let g=A[A.length-1],I=g.indexOf("?");return I>0&&(g=g.substring(0,I)),g}mi.registerCallback(KC.MissingCamera,t=>{const A=t.context.scene,g="unknown",I=new LA;A.add(I);const i=new UI,e=Vo(I,i,!0);return e.sourceId=g,e.clearFlags=2,e.backgroundColor=new rI(.5,.5,.5,1),I.position.x=-2,I.position.y=2,I.position.z=2,e}),mi.registerCallback(KC.ContextCreated,t=>{if(!t.context.mainCamera)return;const A=t.context.domElement;if((A==null?void 0:A.cameraControls)===!0){const g=x1(t.context.mainCamera);if((g==null?void 0:g.isCameraController)===!0)return;const I=t.context.mainCameraComponent,i=I==null?void 0:I.gameObject;if(i){const e=Vo(i,new uB,!1);e.sourceId="unknown"}else console.warn("Missing camera object, can not add orbit controls")}});const RC=wA("debuglicense");let Nd=null,a0=null;try{a0=Promise.resolve().then(()=>_j),a0.then(t=>{Nd=t.default,a0=null,RC&&console.log("License imported via dynamic import",Nd)}).catch(t=>{RC&&console.error("Error on dynamic license import",t)})}catch(t){RC&&console.log("Importing license failed",t)}mi.registerCallback(KC.ContextCreated,t=>{bj(t.context)});async function bj(t){try{if(!Nd||Nd.hasLicense!==!0||RC)return r0(t)}catch(A){return RC&&console.log("License check failed",A),r0(t)}RC&&r0(t)}const Yj='🌵 <span class="text">Made with <a href="https://needle.tools" target="_blank">Needle</a></span>',UJ="needle-license-element",RJ=3e4,FJ=600;function r0(t){xj(t),Oj()}function xj(t){let A=Yj;const g=vj();g.innerHTML=A;const I=Tj(),i=setInterval(()=>{g&&g.parentElement!==t.domElement&&(t.domElement.appendChild(g),I&&t.domElement.appendChild(I))},100);Hj();let e=`<img class="logo" src="${yJ}" style="width: 40px; height: 40px; margin-right: 2px; vertical-align: middle; margin-bottom: 2px;"/>`;e='<a href="https://needle.tools" target="_blank">'+e+"</a>",A=e,g.innerHTML=A;const C=RJ+FJ;setTimeout(()=>{clearInterval(i),g==null||g.remove(),I==null||I.remove()},C)}async function Hj(t){const g=`
|
|
4276
4276
|
font-size:18px;
|
|
4277
4277
|
background-size: contain;
|
|
4278
4278
|
background-position: left center;
|
|
@@ -17,11 +17,13 @@ export declare class EngineElement extends HTMLElement implements INeedleEngineC
|
|
|
17
17
|
private _overlay_ar;
|
|
18
18
|
private _loadingProgress01;
|
|
19
19
|
private _loadingView?;
|
|
20
|
+
private _previousSrc;
|
|
20
21
|
constructor();
|
|
21
22
|
connectedCallback(): Promise<void>;
|
|
22
23
|
disconnectedCallback(): void;
|
|
23
24
|
static get observedAttributes(): string[];
|
|
24
25
|
attributeChangedCallback(name: string, _oldValue: string, newValue: string): void;
|
|
26
|
+
private _isCurrentlySettingsSourceAttribute;
|
|
25
27
|
private onLoad;
|
|
26
28
|
private registerEventFromAttribute;
|
|
27
29
|
getAROverlayContainer(): HTMLElement;
|
|
@@ -54,6 +54,7 @@ export class EngineElement extends HTMLElement {
|
|
|
54
54
|
_overlay_ar;
|
|
55
55
|
_loadingProgress01 = 0;
|
|
56
56
|
_loadingView;
|
|
57
|
+
_previousSrc = null;
|
|
57
58
|
constructor() {
|
|
58
59
|
super();
|
|
59
60
|
this._overlay_ar = new AROverlayHandler();
|
|
@@ -65,7 +66,7 @@ export class EngineElement extends HTMLElement {
|
|
|
65
66
|
console.dir(this);
|
|
66
67
|
}
|
|
67
68
|
this.onSetupDesktop();
|
|
68
|
-
const src = this.getAttribute("src");
|
|
69
|
+
const src = this.getAttribute("src") ?? globalThis["needle:codegen_files"];
|
|
69
70
|
if (src && src.length > 0) {
|
|
70
71
|
await this.onLoad(src, true);
|
|
71
72
|
}
|
|
@@ -131,7 +132,14 @@ export class EngineElement extends HTMLElement {
|
|
|
131
132
|
break;
|
|
132
133
|
}
|
|
133
134
|
}
|
|
135
|
+
_isCurrentlySettingsSourceAttribute = false;
|
|
134
136
|
async onLoad(src, isStartup) {
|
|
137
|
+
if (this._isCurrentlySettingsSourceAttribute) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (src === this._previousSrc) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
135
143
|
if (!src || !src.length) {
|
|
136
144
|
console.error("Needle Engine: No source specified", src);
|
|
137
145
|
return;
|
|
@@ -140,6 +148,11 @@ export class EngineElement extends HTMLElement {
|
|
|
140
148
|
console.error("Needle Engine: Context not initialized");
|
|
141
149
|
return;
|
|
142
150
|
}
|
|
151
|
+
this._previousSrc = src;
|
|
152
|
+
// Set the source attribute so codegen doesnt try to re-assign it again and we communicate to the outside which root files are being loaded
|
|
153
|
+
this._isCurrentlySettingsSourceAttribute = true;
|
|
154
|
+
this.setAttribute("src", src?.toString());
|
|
155
|
+
this._isCurrentlySettingsSourceAttribute = false;
|
|
143
156
|
const alias = this.getAttribute("alias");
|
|
144
157
|
this.classList.add("loading");
|
|
145
158
|
if (debug)
|
|
@@ -162,13 +175,22 @@ export class EngineElement extends HTMLElement {
|
|
|
162
175
|
if (debug)
|
|
163
176
|
console.log(src);
|
|
164
177
|
let filesToLoad;
|
|
165
|
-
|
|
178
|
+
// When using globalThis the src is an array already
|
|
179
|
+
if (Array.isArray(src)) {
|
|
180
|
+
filesToLoad = src;
|
|
181
|
+
}
|
|
182
|
+
// When assigned from codegen the src is a stringified array
|
|
183
|
+
else if (src.startsWith("[") && src.endsWith("]")) {
|
|
166
184
|
filesToLoad = JSON.parse(src);
|
|
167
185
|
}
|
|
186
|
+
// src.toString for an array produces a comma separated list
|
|
187
|
+
else if (src.includes(",")) {
|
|
188
|
+
filesToLoad = src.split(",");
|
|
189
|
+
}
|
|
168
190
|
else
|
|
169
191
|
filesToLoad = [src];
|
|
170
192
|
let loadFunction = null;
|
|
171
|
-
if (
|
|
193
|
+
if (filesToLoad?.length > 0) {
|
|
172
194
|
loadFunction = async (ctx) => {
|
|
173
195
|
let hash = 0;
|
|
174
196
|
if (ctx.hash)
|
|
@@ -214,7 +236,7 @@ export class EngineElement extends HTMLElement {
|
|
|
214
236
|
};
|
|
215
237
|
}
|
|
216
238
|
if (!loadFunction) {
|
|
217
|
-
console.error("Needle Engine: No
|
|
239
|
+
console.error("Needle Engine: No files to load", src);
|
|
218
240
|
return;
|
|
219
241
|
}
|
|
220
242
|
const currentHash = this.getAttribute("hash");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine_element.js","sourceRoot":"","sources":["../../../src/engine/engine_element.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine_element.js","sourceRoot":"","sources":["../../../src/engine/engine_element.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": "2.65.0-pre",
|
|
3
|
+
"version": "2.65.0-pre.1",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development, and can be deployed anywhere. It is flexible, extensible, and collaboration and XR come naturally.",
|
|
5
5
|
"main": "dist/needle-engine.umd.cjs",
|
|
6
6
|
"module": "lib/needle-engine.js",
|
|
@@ -63,6 +63,7 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
|
|
|
63
63
|
private _overlay_ar: AROverlayHandler;
|
|
64
64
|
private _loadingProgress01: number = 0;
|
|
65
65
|
private _loadingView?: ILoadingViewHandler;
|
|
66
|
+
private _previousSrc: string | null | string[] = null;
|
|
66
67
|
|
|
67
68
|
constructor() {
|
|
68
69
|
super();
|
|
@@ -77,7 +78,7 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
|
|
|
77
78
|
}
|
|
78
79
|
|
|
79
80
|
this.onSetupDesktop();
|
|
80
|
-
const src = this.getAttribute("src");
|
|
81
|
+
const src = this.getAttribute("src") ?? globalThis["needle:codegen_files"];
|
|
81
82
|
if (src && src.length > 0) {
|
|
82
83
|
await this.onLoad(src, true);
|
|
83
84
|
}
|
|
@@ -141,7 +142,15 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
|
|
|
141
142
|
}
|
|
142
143
|
}
|
|
143
144
|
|
|
144
|
-
private
|
|
145
|
+
private _isCurrentlySettingsSourceAttribute = false;
|
|
146
|
+
|
|
147
|
+
private async onLoad(src: string | null | string[], isStartup: boolean) {
|
|
148
|
+
if (this._isCurrentlySettingsSourceAttribute) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (src === this._previousSrc) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
145
154
|
if (!src || !src.length) {
|
|
146
155
|
console.error("Needle Engine: No source specified", src);
|
|
147
156
|
return;
|
|
@@ -150,6 +159,14 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
|
|
|
150
159
|
console.error("Needle Engine: Context not initialized");
|
|
151
160
|
return;
|
|
152
161
|
}
|
|
162
|
+
|
|
163
|
+
this._previousSrc = src;
|
|
164
|
+
|
|
165
|
+
// Set the source attribute so codegen doesnt try to re-assign it again and we communicate to the outside which root files are being loaded
|
|
166
|
+
this._isCurrentlySettingsSourceAttribute = true;
|
|
167
|
+
this.setAttribute("src", src?.toString());
|
|
168
|
+
this._isCurrentlySettingsSourceAttribute = false;
|
|
169
|
+
|
|
153
170
|
const alias = this.getAttribute("alias");
|
|
154
171
|
this.classList.add("loading");
|
|
155
172
|
if (debug) console.log("Needle Engine: Begin loading", alias ?? "");
|
|
@@ -173,14 +190,23 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
|
|
|
173
190
|
|
|
174
191
|
if (debug) console.log(src);
|
|
175
192
|
let filesToLoad: Array<string>;
|
|
176
|
-
|
|
193
|
+
// When using globalThis the src is an array already
|
|
194
|
+
if (Array.isArray(src)) {
|
|
195
|
+
filesToLoad = src;
|
|
196
|
+
}
|
|
197
|
+
// When assigned from codegen the src is a stringified array
|
|
198
|
+
else if (src.startsWith("[") && src.endsWith("]")) {
|
|
177
199
|
filesToLoad = JSON.parse(src);
|
|
178
200
|
}
|
|
201
|
+
// src.toString for an array produces a comma separated list
|
|
202
|
+
else if (src.includes(",")) {
|
|
203
|
+
filesToLoad = src.split(",");
|
|
204
|
+
}
|
|
179
205
|
else filesToLoad = [src];
|
|
180
206
|
|
|
181
207
|
let loadFunction: any = null;
|
|
182
208
|
|
|
183
|
-
if (
|
|
209
|
+
if (filesToLoad?.length > 0) {
|
|
184
210
|
loadFunction = async (ctx: Context) => {
|
|
185
211
|
let hash = 0;
|
|
186
212
|
if (ctx.hash) hash = Number.parseInt(ctx.hash) ?? 0;
|
|
@@ -223,7 +249,7 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
|
|
|
223
249
|
};
|
|
224
250
|
}
|
|
225
251
|
if (!loadFunction) {
|
|
226
|
-
console.error("Needle Engine: No
|
|
252
|
+
console.error("Needle Engine: No files to load", src);
|
|
227
253
|
return;
|
|
228
254
|
}
|
|
229
255
|
const currentHash = this.getAttribute("hash");
|