1import{T as N}from"./tools-D01N7ptR.js";import{E as C,O as tt}from"./math.vector-C1xyPDEl.js";import{S as et}from"./scene-gn_hoGMy.js";import{L as v,R as M,E as U}from"./bufferUtils-DTRdUD8L.js";import{S}from"./sceneLoaderFlags-wywyb9ml.js";import{W as nt,R as at,I as st,A as W}from"./decorators.serialization-C7d7ykGG.js";import"./math.scalar.functions-DkeaWAWz.js";import"./smartArray-CO6iJ0u5.js";import"./math.color-CzLaKyb6.js";import"./lightConstants-B1TSTh-k.js";import"./sceneComponent-Dflhczui.js";import"./math.plane-Ce_75-g5.js";import"./buffer-DqKlo1ts.js";import"./dataBuffer-CgoqiUzT.js";import"./renderingManager-CiY2OUrf.js";import"./deviceInputEvents-BTza-zoR.js";import"./perfCounter-DusmGz8t.js";async function it(e,n){const t=n.method||"GET";return await new Promise((a,i)=>{const r=new nt;r.addEventListener("readystatechange",()=>{if(r.readyState==4)if(r.status==200){const s={};if(n.responseHeaders)for(const l of n.responseHeaders)s[l]=r.getResponseHeader(l)||"";a({response:r.response,headerValues:s})}else i(`Unable to fetch data from ${e}. Error code: ${r.status}`)}),r.open(t,e),r.send()})}var V;(function(e){e[e.Clean=0]="Clean",e[e.Stop=1]="Stop",e[e.Sync=2]="Sync",e[e.NoSync=3]="NoSync"})(V||(V={}));function ot(e){return!!e.createPlugin}function rt(e){return!!e.name}const $=new tt,L={};let T=!1;function O(){return L[".babylon"]}function lt(e){for(const n in L){const t=L[n];if(t.mimeType===e)return t}}function E(e,n){const t=L[e];return t||(v.Warn("Unable to find a plugin to load "+e+" files. Trying to use .babylon default plugin. To load from a specific filetype (eg. gltf) see: https://doc.babylonjs.com/features/featuresDeepDive/importers/loadingFileTypes"),n?O():void 0)}function ct(e){return!!L[e]}function ut(e){for(const n in L){const t=L[n].plugin;if(t.canDirectLoad&&t.canDirectLoad(e))return L[n]}return O()}function dt(e){const n=e.indexOf("?");n!==-1&&(e=e.substring(0,n));const t=e.lastIndexOf(".");return e.substring(t,e.length).toLowerCase()}function ft(e){return e.substring(0,5)==="data:"?e.substring(5):null}function x(e,n,t){let i="Unable to load from "+(e.rawData?"binary data":e.url);return n?i+=`: ${n}`:t&&(i+=`: ${t}`),i}async function I(e,n,t,a,i,r,s,l,f){var w;const o=ft(e.url);if(e.rawData&&!s)throw"When using ArrayBufferView to load data the file extension must be provided.";const m=!o&&!s?dt(e.url):"";let c=s?E(s,!0):o?ut(e.url):E(m,!1);if(!c&&m){if(e.url&&!e.url.startsWith("blob:")){const g=await it(e.url,{method:"HEAD",responseHeaders:["Content-Type"]}),d=g.headerValues?g.headerValues["Content-Type"]:"";d&&(c=lt(d))}c||(c=O())}if(!c)throw new Error(`No plugin or fallback for ${s??e.url}`);if(((w=f==null?void 0:f[c.plugin.name])==null?void 0:w.enabled)===!1)throw new Error(`The '${c.plugin.name}' plugin is disabled via the loader options passed to the loading operation.`);if(e.rawData&&!c.isBinary)throw"Loading from ArrayBufferView can not be used with plugins that don't support binary loading.";return(g=>{if(ot(c.plugin)){const u=c.plugin.createPlugin(f??{});return u instanceof Promise?(u.then(g).catch(p=>{i("Error instantiating plugin.",p)}),null):(g(u),u)}else return g(c.plugin),c.plugin})(g=>{var G;if(!g)throw`The loader plugin corresponding to the '${s}' file type has not been found. If using es6, please import the plugin you wish to use before.`;if($.notifyObservers(g),o&&(g.canDirectLoad&&g.canDirectLoad(e.url)||!st(e.url))){if(g.directLoad){const b=g.directLoad(n,o);b instanceof Promise?b.then(P=>{t(g,P)}).catch(P=>{i("Error in directLoad of _loadData: "+P,P)}):t(g,b)}else t(g,o);return}const d=c.isBinary,u=(b,P)=>{if(n.isDisposed){i("Scene has been disposed");return}t(g,b,P)};let p=null,h=!1;(G=g.onDisposeObservable)==null||G.add(()=>{h=!0,p&&(p.abort(),p=null),r()});const D=()=>{if(h)return;const b=(P,j)=>{i(P==null?void 0:P.statusText,j)};if(!g.loadFile&&e.rawData)throw"Plugin does not support loading ArrayBufferView.";p=g.loadFile?g.loadFile(n,e.rawData||e.file||e.url,e.rootUrl,u,a,d,b,l):n._loadFile(e.file||e.url,u,a,!0,d,b)},A=n.getEngine();let F=A.enableOfflineSupport;if(F){let b=!1;for(const P of n.disableOfflineSupportExceptionRules)if(P.test(e.url)){b=!0;break}F=!b}F&&W.OfflineProviderFactory?n.offlineProvider=W.OfflineProviderFactory(e.url,D,A.disableManifestCheck):D()})}function B(e,n){let t,a,i=null,r=null;if(!n)t=e,a=N.GetFilename(e),e=N.GetFolderPath(e);else if(rt(n))t=`file:${n.name}`,a=n.name,i=n;else if(ArrayBuffer.isView(n))t="",a=at(),r=n;else if(n.startsWith("data:"))t=n,a="";else if(e){const s=n;
1if(s.substring(0,1)==="/")return N.Error("Wrong sceneFilename parameter"),null;t=e+s,a=s}else t=n,a=N.GetFilename(n),e=N.GetFolderPath(n);return{url:t,rootUrl:e,name:a,file:i,rawData:r}}function _(e){if(typeof e.extensions=="string"){const n=e.extensions;L[n.toLowerCase()]={plugin:e,isBinary:!1}}else{const n=e.extensions,t=Object.keys(n);for(const a of t)L[a.toLowerCase()]={plugin:e,isBinary:n[a].isBinary,mimeType:n[a].mimeType}}}function Mt(e){_(e)}function Ut(){return Array.from(Object.entries(L).reduce((e,[n,t])=>{let a=e.get(t.plugin.name);return a||e.set(t.plugin.name,a=[]),a.push({extension:n,isBinary:t.isBinary,mimeType:t.mimeType}),e},new Map)).map(([e,n])=>({name:e,extensions:n}))}async function xt(e,n,t){const{meshNames:a,rootUrl:i="",onProgress:r,pluginExtension:s,name:l,pluginOptions:f}=t??{};return await Y(a,i,e,n,r,s,l,f)}async function K(e,n,t="",a=C.LastCreatedScene,i=null,r=null,s=null,l=null,f="",o={}){if(!a)return v.Error("No scene available to import mesh to"),null;const m=B(n,t);if(!m)return null;const c={};a.addPendingData(c);const y=()=>{a.removePendingData(c)},w=(u,p)=>{const h=x(m,u,p);s?s(a,h,new M(h,U.SceneLoaderError,p)):v.Error(h),y()},g=r?u=>{try{r(u)}catch(p){w("Error in onProgress callback: "+p,p)}}:void 0,d=(u,p,h,D,A,F,G,b)=>{if(a.importedMeshesFiles.push(m.url),i)try{i(u,p,h,D,A,F,G,b)}catch(P){w("Error in onSuccess callback: "+P,P)}a.removePendingData(c)};return await I(m,a,(u,p,h)=>{if(u.rewriteRootURL&&(m.rootUrl=u.rewriteRootURL(m.rootUrl,h)),u.importMesh){const D=u,A=[],F=[],G=[];if(!D.importMesh(e,a,p,m.rootUrl,A,F,G,w))return;a.loadingPluginName=u.name,d(A,F,G,[],[],[],[],[])}else u.importMeshAsync(e,a,p,m.rootUrl,g,m.name).then(A=>{a.loadingPluginName=u.name,d(A.meshes,A.particleSystems,A.skeletons,A.animationGroups,A.transformNodes,A.geometries,A.lights,A.spriteManagers)}).catch(A=>{w(A.message,A)})},g,w,y,l,f,o)}async function Y(e,n,t,a,i,r,s,l){return await new Promise((f,o)=>
1{try{K(e,n,t,a,(m,c,y,w,g,d,u,p)=>{f({meshes:m,particleSystems:c,skeletons:y,animationGroups:w,transformNodes:g,geometries:d,lights:u,spriteManagers:p})},i,(m,c,y)=>{o(y||new Error(c))},r,s,l).catch(o)}catch(m){o(m)}})}async function q(e,n="",t=C.LastCreatedEngine,a=null,i=null,r=null,s=null,l="",f={}){if(!t){N.Error("No engine available");return}await H(e,n,new et(t),a,i,r,s,l,f)}async function mt(e,n,t){const{rootUrl:a="",onProgress:i,pluginExtension:r,name:s,pluginOptions:l}=t??{};return await z(a,e,n,i,r,s,l)}async function It(e,n,t){return await mt(e,n,t)}async function z(e,n,t,a,i,r,s){return await new Promise((l,f)=>{q(e,n,t,o=>{l(o)},a,(o,m,c)=>{f(c||new Error(m))},i,r,s)})}async function H(e,n="",t=C.LastCreatedScene,a=null,i=null,r=null,s=null,l="",f={}){if(!t)return v.Error("No scene available to append to"),null;const o=B(e,n);if(!o)return null;const m={};t.addPendingData(m);const c=()=>{t.removePendingData(m)};S.ShowLoadingScreen&&!T&&(T=!0,t.getEngine().displayLoadingUI(),t.executeWhenReady(()=>{t.getEngine().hideLoadingUI(),T=!1}));const y=(d,u)=>{const p=x(o,d,u);r?r(t,p,new M(p,U.SceneLoaderError,u)):v.Error(p),c()},w=i?d=>{try{i(d)}catch(u){y("Error in onProgress callback",u)}}:void 0,g=()=>{if(a)try{a(t)}catch(d){y("Error in onSuccess callback",d)}t.removePendingData(m)};return await I(o,t,(d,u)=>{if(d.load){if(!d.load(t,u,o.rootUrl,y))return;t.loadingPluginName=d.name,g()}else d.loadAsync(t,u,o.rootUrl,w,o.name).then(()=>{t.loadingPluginName=d.name,g()}).catch(h=>{y(h.message,h)})},w,y,c,s,l,f)}async function gt(e,n,t){const{rootUrl:a="",onProgress:i,pluginExtension:r,name:s,pluginOptions:l}=t??{};await J(a,e,n,i,r,s,l)}async function Bt(e,n,t){return await gt(e,n,t)}async function J(e,n,t,a,i,r,s){return await new Promise((l,f)=>{try{H(e,n,t,o=>{l(o)},a,(o,m,c)=>{f(c||new Error(m))},i,r,s).catch(f)}catch(o){f(o)}})}async function R(e,n="",t=C.LastCreatedScene,a=null,i=null,r=null,s=null,l="",f={}){if(!t)return v.Error("No scene available to load asset container to"),null;const o=B(e,n);if(!o)return null;const m={};t.addPendingData(m);const c=()=>{t.removePendingData(m)},y=(d,u)=>{const p=x(o,d,u);r?r(t,p,new M(p,U.SceneLoaderError,u)):v.Error(p),c()},w=i?d=>{try{i(d)}catch(u){y("Error in onProgress callback",u)}}:void 0,g=d=>{if(a)try{a(d)}catch(u){y("Error in onSuccess callback",u)}t.removePendingData(m)};return await I(o,t,(d,u)=>{if(d.loadAssetContainer){const h=d.loadAssetContainer(t,u,o.rootUrl,y);if(!h)return;h.populateRootNodes(),t.loadingPluginName=d.name,g(h)}else d.loadAssetContainerAsync?d.loadAssetContainerAsync(t,u,o.rootUrl,w,o.name).then(h=>{h.populateRootNodes(),t.loadingPluginName=d.name,g(h)}).catch(h=>{y(h.message,h)}):y("LoadAssetContainer is not supported by this plugin. Plugin did not provide a loadAssetContainer or loadAssetContainerAsync method.")},w,y,c,s,l,f)}async function yt(e,n,t){const{rootUrl:a="",onProgress:i,pluginExtension:r,name:s,pluginOptions:l}=t??{};return await Q(a,e,n,i,r,s,l)}async function Ht(e,n,t){return await yt(e,n,t)}async function Q(e,n,t,a,i,r,s){return await new Promise((l,f)=>{try{R(e,n,t,o=>{l(o)},a,(o,m,c)=>{f(c||new Error(m))},i,r,s).catch(f)}catch(o){f(o)}})}async function X(e,n="",t=C.LastCreatedScene,a=!0,i=0,r=null,s=null,l=null,f=null,o=null,m="",c={}){if(!t){v.Error("No scene available to load animations to");return}if(a){for(const u of t.animatables)u.reset();t.stopAllAnimations();const g=t.animationGroups.slice();for(const u of g)u.dispose();const d=t.getNodes();for(const u of d)u.animations&&(u.animations=[])}else switch(i){case 0:const g=t.animationGroups.slice();for(const d of g)d.dispose();break;case 1:for(const d of t.animationGroups)d.stop();break;case 2:for(const d of t.animationGroups)d.reset(),d.restart();break;case 3:break;default:v.Error("Unknown animation group loading mode value '"+i+"'");return}const y=t.animatables.length;await R(e,n,t,g=>{g.mergeAnimationsTo(t,t.animatables.slice(y),r),g.dispose(),t.onAnimationFileImportedObservable.notifyObservers(t),s&&s(t)},l,f,o,m,c)}async function pt(e,n,t){const{rootUrl:a="",overwriteAnimations:i,animationGroupLoadingMode:r,targetConverter:s,onProgress:l,pluginExtension:f,name:o,pluginOptions:m}=t??{};await Z(a,e,n,i,r,s,l,f,o,m)}async function Rt(e,n,t){return await pt(e,n,t)}async function Z(e,n,t,a,i,r,s,l,f,o){return await new Promise((m,c)=>{try{X(e,n,t,a,i,r,y=>{m(y)},s,(y,w,g)=>{c(g||new Error(w))},l,f,o).catch(c)}catch(y){c(y)}})}class k{static get ForceFullSceneLoadingForIncremental(){return S.ForceFullSceneLoadingForIncremental}static set ForceFullSceneLoadingForIncremental(n){S.ForceFullSceneLoadingForIncremental=n}static get ShowLoadingScreen(){return S.ShowLoadingScreen}static set ShowLoadingScreen(n){S.ShowLoadingScreen=n}static get loggingLevel(){return S.loggingLevel}static set loggingLevel(n){S.loggingLevel=n}static get CleanBoneMatrixWeights(){return S.CleanBoneMatrixWeights}static set CleanBoneMatrixWeights(n){S.CleanBoneMatrixWeights=n}static GetDefaultPlugin(){return O()}static GetPluginForExtension(n){var t;return(t=E(n,!0))==null?void 0:t.plugin}static IsPluginForExtensionAvailable(n){return ct(n)}static RegisterPlugin(n){_(n)}static ImportMesh(n,t,a,i,r,s,l,f,o,m){K(n,t,a,i,r,s,l,f,o,m).catch(c=>l==null?void 0:l(C.LastCreatedScene,c==null?void 0:c.message,c))}static async ImportMeshAsync(n,t,a,i,r,s,l){return await Y(n,t,a,i,r,s,l)}static Load(n,t,a,i,r,s,l,f){q(n,t,a,i,r,s,l,f).catch(o=>s==null?void 0:s(C.LastCreatedScene,o==null?void 0:o.message,o))}static async LoadAsync(n,t,a,i,r,s){return await z(n,t,a,i,r,s)}static Append(n,t,a,i,r,s,l,f){H(n,t,a,i,r,s,l,f).catch(o=>s==null?void 0:s(a??C.LastCreatedScene,o==null?void 0:o.message,o))}static async AppendAsync(n,t,a,i,r,s){return await J(n,t,a,i,r,s)}static LoadAssetContainer(n,t,a,i,r,s,l,f){R(n,t,a,i,r,s,l,f).catch(o=>s==null?void 0:s(a??C.LastCreatedScene,o==null?void 0:o.message,o))}static async LoadAssetContainerAsync(n,t,a,i,r,s){return await Q(n,t,a,i,r,s)}static ImportAnimations(n,t,a,i,r,s,l,f,o,m,c){X(n,t,a,i,r,s,l,f,o,m,c).catch(y=>
1o==null?void 0:o(a??C.LastCreatedScene,y==null?void 0:y.message,y))}static async ImportAnimationsAsync(n,t,a,i,r,s,l,f,o,m,c){return await Z(n,t,a,i,r,s,f,m,c)}}k.NO_LOGGING=0;k.MINIMAL_LOGGING=1;k.SUMMARY_LOGGING=2;k.DETAILED_LOGGING=3;k.OnPluginActivatedObservable=$;export{gt as AppendSceneAsync,Ut as GetRegisteredSceneLoaderPluginMetadata,pt as ImportAnimationsAsync,xt as ImportMeshAsync,yt as LoadAssetContainerAsync,mt as LoadSceneAsync,_ as RegisterSceneLoaderPlugin,k as SceneLoader,V as SceneLoaderAnimationGroupLoadingMode,Bt as appendSceneAsync,Rt as importAnimationsAsync,Ht as loadAssetContainerAsync,It as loadSceneAsync,Mt as registerSceneLoaderPlugin};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.