babylonjs-loaders 9.26.1 → 9.26.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.
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("babylonjs")):"function"==typeof define&&define.amd?define(["exports","babylonjs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).BABYLON=e.BABYLON||{},e.BABYLON)}(this,function(e,t){"use strict";function n(e,t,n,r){const s={externalResourceFunction:r};return n&&(s.uri="file:"===t?n:t+n),ArrayBuffer.isView(e)?GLTFValidator.validateBytes(e,s):GLTFValidator.validateString(e,s)}function r(){const e=[];onmessage=t=>{const r=t.data;switch(r.id){case"init":importScripts(r.url);break;case"validate":n(r.data,r.rootUrl,r.fileName,t=>new Promise((n,r)=>{const s=e.length;e.push({resolve:n,reject:r}),postMessage({id:"getExternalResource",index:s,uri:t})})).then(e=>{postMessage({id:"validate.resolve",value:e})},e=>{postMessage({id:"validate.reject",reason:e})});break;case"getExternalResource.resolve":e[r.index].resolve(r.value);break;case"getExternalResource.reject":e[r.index].reject(r.reason)}}}class s{static ValidateAsync(e,o,a,i){return"function"==typeof Worker?new Promise((l,u)=>{const c=`${n}(${r})()`,h=URL.createObjectURL(new Blob([c],{type:"application/javascript"})),d=new Worker(h),m=e=>{d.removeEventListener("error",m),d.removeEventListener("message",_),u(e)},_=e=>{const t=e.data;switch(t.id){case"getExternalResource":i(t.uri).then(e=>{d.postMessage({id:"getExternalResource.resolve",index:t.index,value:e},[e.buffer])},e=>{d.postMessage({id:"getExternalResource.reject",index:t.index,reason:e})});break;case"validate.resolve":d.removeEventListener("error",m),d.removeEventListener("message",_),s._LastResults=t.value,l(t.value),d.terminate();break;case"validate.reject":d.removeEventListener("error",m),d.removeEventListener("message",_),u(t.reason),d.terminate()}};if(d.addEventListener("error",m),d.addEventListener("message",_),d.postMessage({id:"init",url:t.Tools.GetBabylonScriptURL(this.Configuration.url)}),ArrayBuffer.isView(e)){const t=e.slice();d.postMessage({id:"validate",data:t,rootUrl:o,fileName:a},[t.buffer])}else d.postMessage({id:"validate",data:e,rootUrl:o,fileName:a})}):(this._LoadScriptPromise||(this._LoadScriptPromise=t.Tools.LoadBabylonScriptAsync(this.Configuration.url)),this._LoadScriptPromise.then(()=>n(e,o,a,i)))}}s.Configuration={url:`${t.Tools._DefaultCdnUrl}/gltf_validator.js`},s._LastResults=null;var o={__proto__:null,GLTFValidation:s};const a="Z2xURg",i="gltf",l={".gltf":{isBinary:!1,mimeType:"model/gltf+json"},".glb":{isBinary:!0,mimeType:"model/gltf-binary"}},u=e=>-1!==e.indexOf("asset")&&-1!==e.indexOf("version")||e.startsWith("data:base64,"+a)||e.startsWith("data:;base64,"+a)||e.startsWith("data:application/octet-stream;base64,"+a)||e.startsWith("data:model/gltf-binary;base64,"+a);function c(e,t,n){try{return Promise.resolve(new Uint8Array(e,t,n))}catch(e){return Promise.reject(e)}}var h,d,m;e.GLTFLoaderCoordinateSystemMode=void 0,(h=e.GLTFLoaderCoordinateSystemMode||(e.GLTFLoaderCoordinateSystemMode={}))[h.AUTO=0]="AUTO",h[h.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED",e.GLTFLoaderAnimationStartMode=void 0,(d=e.GLTFLoaderAnimationStartMode||(e.GLTFLoaderAnimationStartMode={}))[d.NONE=0]="NONE",d[d.FIRST=1]="FIRST",d[d.ALL=2]="ALL",e.GLTFLoaderState=void 0,(m=e.GLTFLoaderState||(e.GLTFLoaderState={}))[m.LOADING=0]="LOADING",m[m.READY=1]="READY",m[m.COMPLETE=2]="COMPLETE";const _=e=>Promise.resolve(e);class p{constructor(){this.alwaysComputeBoundingBox=!1,this.alwaysComputeSkeletonRootNode=!1,this.animationStartMode=e.GLTFLoaderAnimationStartMode.FIRST,this.compileMaterials=!1,this.compileShadowGenerators=!1,this.coordinateSystemMode=e.GLTFLoaderCoordinateSystemMode.AUTO,this.createInstances=!0,this.loadAllMaterials=!1,this.loadMorphTargets=!0,this.useMaxMorphTargetInfluencers=!0,this.loadNodeAnimations=!0,this.loadOnlyMaterials=!1,this.loadSkins=!0,this.skipMaterials=!1,this.targetFps=60,this.transparencyAsCoverage=!1,this.useClipPlane=!1,this.useGltfTextureNames=!1,this.useRangeRequests=!1,this.useSRGBBuffers=!0,this.validate=!1,this.useOpenPBR=!1,this.dontUseTransmissionHelper=!1}}const f=new p;class g extends p{constructor(){super(...arguments),this.extensionOptions={},this.preprocessUrlAsync=_}copyFrom(e){var t,n,r,s,o,a,i,l,u,c,h,d,m,_,p,f,g,b,y,T,v,x,A,C,R,w,M;e&&(this.alwaysComputeBoundingBox=null!==(t=e.alwaysComputeBoundingBox)&&void 0!==t?t:this.alwaysComputeBoundingBox,this.alwaysComputeSkeletonRootNode=null!==(n=e.alwaysComputeSkeletonRootNode)&&void 0!==n?n:this.alwaysComputeSkeletonRootNode,this.animationStartMode=null!==(r=e.animationStartMode)&&void 0!==r?r:this.animationStartMode,this.capturePerformanceCounters=null!==(s=e.capturePerformanceCounters)&&void 0!==s?s:this.capturePerformanceCounters,this.compileMaterials=null!==(o=e.compileMaterials)&&void 0!==o?o:this.compileMaterials,this.compileShadowGenerators=null!==(a=e.compileShadowGenerators)&&void 0!==a?a:this.compileShadowGenerators,this.coordinateSystemMode=null!==(i=e.coordinateSystemMode)&&void 0!==i?i:this.coordinateSystemMode,this.createInstances=null!==(l=e.createInstances)&&void 0!==l?l:this.createInstances,this.customRootNode=e.customRootNode,this.extensionOptions=null!==(u=e.extensionOptions)&&void 0!==u?u:this.extensionOptions,this.loadAllMaterials=null!==(c=e.loadAllMaterials)&&void 0!==c?c:this.loadAllMaterials,this.loadMorphTargets=null!==(h=e.loadMorphTargets)&&void 0!==h?h:this.loadMorphTargets,this.loadNodeAnimations=null!==(d=e.loadNodeAnimations)&&void 0!==d?d:this.loadNodeAnimations,this.loadOnlyMaterials=null!==(m=e.loadOnlyMaterials)&&void 0!==m?m:this.loadOnlyMaterials,this.loadSkins=null!==(_=e.loadSkins)&&void 0!==_?_:this.loadSkins,this.loggingEnabled=null!==(p=e.loggingEnabled)&&void 0!==p?p:this.loggingEnabled,this.onCameraLoaded=e.onCameraLoaded,this.onMaterialLoaded=e.onMaterialLoaded,this.onMeshLoaded=e.onMeshLoaded,this.onParsed=e.onParsed,this.onSkinLoaded=e.onSkinLoaded,this.onTextureLoaded=e.onTextureLoaded,this.onValidated=e.onValidated,this.preprocessUrlAsync=null!==(f=e.preprocessUrlAsync)&&void 0!==f?f:this.preprocessUrlAsync,this.skipMaterials=null!==(g=e.skipMaterials)&&void 0!==g?g:this.skipMaterials,this.targetFps=null!==(b=e.targetFps)&&void 0!==b?b:this.targetFps,this.transparencyAsCoverage=null!==(y=e.transparencyAsCoverage)&&void 0!==y?y:this.transparencyAsCoverage,this.useClipPlane=null!==(T=e.useClipPlane)&&void 0!==T?T:this.useClipPlane,this.useGltfTextureNames=null!==(v=e.useGltfTextureNames)&&void 0!==v?v:this.useGltfTextureNames,this.useMaxMorphTargetInfluencers=null!==(x=e.useMaxMorphTargetInfluencers)&&void 0!==x?x:this.useMaxMorphTargetInfluencers,this.useOpenPBR=null!==(A=e.useOpenPBR)&&void 0!==A?A:this.useOpenPBR,this.useRangeRequests=null!==(C=e.useRangeRequests)&&void 0!==C?C:this.useRangeRequests,this.useSRGBBuffers=null!==(R=e.useSRGBBuffers)&&void 0!==R?R:this.useSRGBBuffers,this.validate=null!==(w=e.validate)&&void 0!==w?w:this.validate,this.dontUseTransmissionHelper=null!==(M=e.dontUseTransmissionHelper)&&void 0!==M?M:this.dontUseTransmissionHelper)}}class b extends g{constructor(e){super(),this.onParsedObservable=new t.Observable,this.onMeshLoadedObservable=new t.Observable,this.onSkinLoadedObservable=new t.Observable,this.onTextureLoadedObservable=new t.Observable,this.onMaterialLoadedObservable=new t.Observable,this.onCameraLoadedObservable=new t.Observable,this.onCompleteObservable=new t.Observable,this.onErrorObservable=new t.Observable,this.onDisposeObservable=new t.Observable,this.onExtensionLoadedObservable=new t.Observable,this.onValidatedObservable=new t.Observable,this._loader=null,this._state=null,this._requests=new Array,this.name=i,this.extensions=l,this.onLoaderStateChangedObservable=new t.Observable,this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled,this.copyFrom(Object.assign(Object.assign({},f),e))}get _isPreprocessUrlAsyncSet(){return this.preprocessUrlAsync!==_}set onParsed(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),e&&(this._onParsedObserver=this.onParsedObservable.add(e))}set onMeshLoaded(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),e&&(this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e))}set onSkinLoaded(e){this._onSkinLoadedObserver&&this.onSkinLoadedObservable.remove(this._onSkinLoadedObserver),e&&(this._onSkinLoadedObserver=this.onSkinLoadedObservable.add(t=>e(t.node,t.skinnedNode)))}set onTextureLoaded(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),e&&(this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e))}set onMaterialLoaded(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),e&&(this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e))}set onCameraLoaded(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),e&&(this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e))}set onComplete(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)}set onError(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}set onExtensionLoaded(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)}get loggingEnabled(){return this._loggingEnabled}set loggingEnabled(e){this._loggingEnabled!==e&&(this._loggingEnabled=e,this._loggingEnabled?this._log=this._logEnabled:this._log=this._logDisabled)}get capturePerformanceCounters(){return this._capturePerformanceCounters}set capturePerformanceCounters(e){this._capturePerformanceCounters!==e&&(this._capturePerformanceCounters=e,this._capturePerformanceCounters?(this._startPerformanceCounter=this._startPerformanceCounterEnabled,this._endPerformanceCounter=this._endPerformanceCounterEnabled):(this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled))}set onValidated(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)}dispose(){this._loader&&(this._loader.dispose(),this._loader=null);for(const e of this._requests)e.abort();this._requests.length=0,delete this._progressCallback,this.preprocessUrlAsync=_,this.onMeshLoadedObservable.clear(),this.onSkinLoadedObservable.clear(),this.onTextureLoadedObservable.clear(),this.onMaterialLoadedObservable.clear(),this.onCameraLoadedObservable.clear(),this.onCompleteObservable.clear(),this.onExtensionLoadedObservable.clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()}loadFile(e,n,r,s,o,a,i,l){if(ArrayBuffer.isView(n))return this._loadBinary(e,n,r,s,i,l),null;this._progressCallback=o;const u=n.name||t.Tools.GetFilename(n);if(a){if(this.useRangeRequests){this.validate&&t.Logger.Warn("glTF validation is not supported when range requests are enabled");const r={abort:()=>{},onCompleteObservable:new t.Observable},o={readAsync:(t,r)=>new Promise((s,o)=>{this._loadFile(e,n,e=>{s(new Uint8Array(e))},!0,e=>{o(e)},e=>{e.setRequestHeader("Range",`bytes=${t}-${t+r-1}`)})}),byteLength:0};return this._unpackBinaryAsync(new t.DataReader(o)).then(e=>{r.onCompleteObservable.notifyObservers(r),s(e)},i?e=>i(void 0,e):void 0),r}return this._loadFile(e,n,n=>{this._validate(e,new Uint8Array(n,0,n.byteLength),r,u),this._unpackBinaryAsync(new t.DataReader({readAsync:(e,t)=>c(n,e,t),byteLength:n.byteLength})).then(e=>{s(e)},i?e=>i(void 0,e):void 0)},!0,i)}return this._loadFile(e,n,t=>{try{this._validate(e,t,r,u),s({json:this._parseJson(t)})}catch(e){i&&i()}},!1,i)}_loadBinary(e,n,r,s,o,a){this._validate(e,new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r,a),this._unpackBinaryAsync(new t.DataReader({readAsync:(e,t)=>function(e,t,n){try{if(t<0||t>=e.byteLength)throw new RangeError("Offset is out of range.");if(t+n>e.byteLength)throw new RangeError("Length is out of range.");return Promise.resolve(new Uint8Array(e.buffer,e.byteOffset+t,n))}catch(e){return Promise.reject(e)}}(n,e,t),byteLength:n.byteLength})).then(e=>{s(e)},o?e=>o(void 0,e):void 0)}importMeshAsync(e,t,n,r,s,o){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(n),this.onParsedObservable.clear(),this._log(`Loading ${o||""}`),this._loader=this._getLoader(n),this._loader.importMeshAsync(e,t,null,n,r,s,o)))}loadAsync(e,t,n,r,s){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${s||""}`),this._loader=this._getLoader(t),this._loader.loadAsync(e,t,n,r,s)))}loadAssetContainerAsync(e,n,r,s,o){return Promise.resolve().then(()=>{this.onParsedObservable.notifyObservers(n),this.onParsedObservable.clear(),this._log(`Loading ${o||""}`),this._loader=this._getLoader(n);const a=new t.AssetContainer(e),i=[];this.onMaterialLoadedObservable.add(e=>{i.push(e)});const l=[];this.onTextureLoadedObservable.add(e=>{l.push(e)});const u=[];this.onCameraLoadedObservable.add(e=>{u.push(e)});const c=[];return this.onMeshLoadedObservable.add(e=>{e.morphTargetManager&&c.push(e.morphTargetManager)}),this._loader.importMeshAsync(null,e,a,n,r,s,o).then(e=>(Array.prototype.push.apply(a.geometries,e.geometries),Array.prototype.push.apply(a.meshes,e.meshes),Array.prototype.push.apply(a.particleSystems,e.particleSystems),Array.prototype.push.apply(a.skeletons,e.skeletons),Array.prototype.push.apply(a.animationGroups,e.animationGroups),Array.prototype.push.apply(a.materials,i),Array.prototype.push.apply(a.textures,l),Array.prototype.push.apply(a.lights,e.lights),Array.prototype.push.apply(a.transformNodes,e.transformNodes),Array.prototype.push.apply(a.cameras,u),Array.prototype.push.apply(a.morphTargetManagers,c),a))})}canDirectLoad(e){return u(e)}directLoad(e,n){if(n.startsWith("base64,"+a)||n.startsWith(";base64,"+a)||n.startsWith("application/octet-stream;base64,"+a)||n.startsWith("model/gltf-binary;base64,"+a)){const r=t.DecodeBase64UrlToBinary(n);return this._validate(e,new Uint8Array(r,0,r.byteLength)),this._unpackBinaryAsync(new t.DataReader({readAsync:(e,t)=>c(r,e,t),byteLength:r.byteLength}))}return this._validate(e,n),Promise.resolve({json:this._parseJson(n)})}createPlugin(e){return new b(e[i])}get loaderState(){return this._state}whenCompleteAsync(){return new Promise((e,t)=>{this.onCompleteObservable.addOnce(()=>{e()}),this.onErrorObservable.addOnce(e=>{t(e)})})}_setState(t){this._state!==t&&(this._state=t,this.onLoaderStateChangedObservable.notifyObservers(this._state),this._log(e.GLTFLoaderState[this._state]))}_loadFile(e,t,n,r,s,o){const a=e._loadFile(t,n,e=>{this._onProgress(e,a)},!0,r,s,o);return a.onCompleteObservable.add(()=>{a._lengthComputable=!0,a._total=a._loaded}),this._requests.push(a),a}_onProgress(e,t){if(!this._progressCallback)return;t._lengthComputable=e.lengthComputable,t._loaded=e.loaded,t._total=e.total;let n=!0,r=0,s=0;for(const e of this._requests){if(void 0===e._lengthComputable||void 0===e._loaded||void 0===e._total)return;n=n&&e._lengthComputable,r+=e._loaded,s+=e._total}this._progressCallback({lengthComputable:n,loaded:r,total:n?s:0})}_validate(e,n,r="",o=""){this.validate&&(this._startPerformanceCounter("Validate JSON"),s.ValidateAsync(n,r,o,t=>this.preprocessUrlAsync(r+t,r).then(t=>e._loadFileAsync(t,void 0,!0,!0).then(e=>new Uint8Array(e,0,e.byteLength)))).then(e=>{this._endPerformanceCounter("Validate JSON"),this.onValidatedObservable.notifyObservers(e),this.onValidatedObservable.clear()},e=>{this._endPerformanceCounter("Validate JSON"),t.Tools.Warn(`Failed to validate: ${e.message}`),this.onValidatedObservable.clear()}))}_getLoader(e){const t=e.json.asset||{};this._log(`Asset version: ${t.version}`),t.minVersion&&this._log(`Asset minimum version: ${t.minVersion}`),t.generator&&this._log(`Asset generator: ${t.generator}`);const n=b._parseVersion(t.version);if(!n)throw new Error("Invalid version: "+t.version);if(void 0!==t.minVersion){const e=b._parseVersion(t.minVersion);if(!e)throw new Error("Invalid minimum version: "+t.minVersion);if(b._compareVersion(e,{major:2,minor:0})>0)throw new Error("Incompatible minimum version: "+t.minVersion)}const r={1:b._CreateGLTF1Loader,2:b._CreateGLTF2Loader}[n.major];if(!r)throw new Error("Unsupported version: "+t.version);return r(this)}_parseJson(e){this._startPerformanceCounter("Parse JSON"),this._log(`JSON length: ${e.length}`);const t=JSON.parse(e);return this._endPerformanceCounter("Parse JSON"),t}_unpackBinaryAsync(e){return this._startPerformanceCounter("Unpack Binary"),e.loadAsync(20).then(()=>{const n=e.readUint32();if(1179937895!==n)throw new t.RuntimeError("Unexpected magic: "+n,t.ErrorCodes.GLTFLoaderUnexpectedMagicError);const r=e.readUint32();this.loggingEnabled&&this._log(`Binary version: ${r}`);const s=e.readUint32();let o;switch(this.useRangeRequests||s===e.buffer.byteLength||t.Logger.Warn(`Length in header does not match actual data length: ${s} != ${e.buffer.byteLength}`),r){case 1:o=this._unpackBinaryV1Async(e,s);break;case 2:o=this._unpackBinaryV2Async(e,s);break;default:throw new Error("Unsupported version: "+r)}return this._endPerformanceCounter("Unpack Binary"),o})}_unpackBinaryV1Async(e,t){const n=e.readUint32(),r=e.readUint32();if(0!==r)throw new Error(`Unexpected content format: ${r}`);const s=t-e.byteOffset,o={json:this._parseJson(e.readString(n)),bin:null};if(0!==s){const t=e.byteOffset;o.bin={readAsync:(n,r)=>e.buffer.readAsync(t+n,r),byteLength:s}}return Promise.resolve(o)}_unpackBinaryV2Async(e,t){const n=1313821514,r=e.readUint32();if(e.readUint32()!==n)throw new Error("First chunk format is not JSON");return e.byteOffset+r===t?e.loadAsync(r).then(()=>({json:this._parseJson(e.readString(r)),bin:null})):e.loadAsync(r+8).then(()=>{const s={json:this._parseJson(e.readString(r)),bin:null},o=()=>{const r=e.readUint32();switch(e.readUint32()){case n:throw new Error("Unexpected JSON chunk");case 5130562:{const t=e.byteOffset;s.bin={readAsync:(n,r)=>e.buffer.readAsync(t+n,r),byteLength:r},e.skipBytes(r);break}default:e.skipBytes(r)}return e.byteOffset!==t?e.loadAsync(8).then(o):Promise.resolve(s)};return o()})}static _parseVersion(e){if("1.0"===e||"1.0.1"===e)return{major:1,minor:0};const t=(e+"").match(/^(\d+)\.(\d+)/);return t?{major:parseInt(t[1]),minor:parseInt(t[2])}:null}static _compareVersion(e,t){return e.major>t.major?1:e.major<t.major?-1:e.minor>t.minor?1:e.minor<t.minor?-1:0}_logOpen(e){this._log(e),this._logIndentLevel++}_logClose(){--this._logIndentLevel}_logEnabled(e){const n=b._logSpaces.substring(0,2*this._logIndentLevel);t.Logger.Log(`${n}${e}`)}_logDisabled(e){}_startPerformanceCounterEnabled(e){t.Tools.StartPerformanceCounter(e)}_startPerformanceCounterDisabled(e){}_endPerformanceCounterEnabled(e){t.Tools.EndPerformanceCounter(e)}_endPerformanceCounterDisabled(e){}}b.IncrementalLoading=!0,b.HomogeneousCoordinates=!1,b._logSpaces=" ";let y=!1;function T(){y||(y=!0,t.RegisterSceneLoaderPlugin(new b))}T();var v={__proto__:null,GLTFFileLoader:b,get GLTFLoaderAnimationStartMode(){return e.GLTFLoaderAnimationStartMode},get GLTFLoaderCoordinateSystemMode(){return e.GLTFLoaderCoordinateSystemMode},GLTFLoaderDefaultOptions:f,get GLTFLoaderState(){return e.GLTFLoaderState},RegisterGLTFFileLoader:T};const x="undefined"!=typeof global?global:"undefined"!=typeof window?window:void 0;if(void 0!==x){x.BABYLON=x.BABYLON||{};for(const e in v)x.BABYLON[e]=v[e];for(const e in o)x.BABYLON[e]=o[e]}function A(e,t,n,r){return new(n||(n=Promise))(function(s,o){function a(e){try{l(r.next(e))}catch(e){o(e)}}function i(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,i)}l((r=r.apply(e,t||[])).next())})}var C,R,w,M,O,E,L,S,F;Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError,function(e){e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.FLOAT=5126]="FLOAT"}(C||(C={})),function(e){e[e.FRAGMENT=35632]="FRAGMENT",e[e.VERTEX=35633]="VERTEX"}(R||(R={})),function(e){e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.INT=5124]="INT",e[e.UNSIGNED_INT=5125]="UNSIGNED_INT",e[e.FLOAT=5126]="FLOAT",e[e.FLOAT_VEC2=35664]="FLOAT_VEC2",e[e.FLOAT_VEC3=35665]="FLOAT_VEC3",e[e.FLOAT_VEC4=35666]="FLOAT_VEC4",e[e.INT_VEC2=35667]="INT_VEC2",e[e.INT_VEC3=35668]="INT_VEC3",e[e.INT_VEC4=35669]="INT_VEC4",e[e.BOOL=35670]="BOOL",e[e.BOOL_VEC2=35671]="BOOL_VEC2",e[e.BOOL_VEC3=35672]="BOOL_VEC3",e[e.BOOL_VEC4=35673]="BOOL_VEC4",e[e.FLOAT_MAT2=35674]="FLOAT_MAT2",e[e.FLOAT_MAT3=35675]="FLOAT_MAT3",e[e.FLOAT_MAT4=35676]="FLOAT_MAT4",e[e.SAMPLER_2D=35678]="SAMPLER_2D"}(w||(w={})),function(e){e[e.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e[e.REPEAT=10497]="REPEAT"}(M||(M={})),function(e){e[e.NEAREST=9728]="NEAREST",e[e.LINEAR=9728]="LINEAR",e[e.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",e[e.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",e[e.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",e[e.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR"}(O||(O={})),function(e){e[e.ALPHA=6406]="ALPHA",e[e.RGB=6407]="RGB",e[e.RGBA=6408]="RGBA",e[e.LUMINANCE=6409]="LUMINANCE",e[e.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA"}(E||(E={})),function(e){e[e.FRONT=1028]="FRONT",e[e.BACK=1029]="BACK",e[e.FRONT_AND_BACK=1032]="FRONT_AND_BACK"}(L||(L={})),function(e){e[e.ZERO=0]="ZERO",e[e.ONE=1]="ONE",e[e.SRC_COLOR=768]="SRC_COLOR",e[e.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",e[e.DST_COLOR=774]="DST_COLOR",e[e.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",e[e.SRC_ALPHA=770]="SRC_ALPHA",e[e.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",e[e.DST_ALPHA=772]="DST_ALPHA",e[e.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",e[e.CONSTANT_COLOR=32769]="CONSTANT_COLOR",e[e.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",e[e.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",e[e.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",e[e.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE"}(S||(S={}));class I{static SetMatrix(e,n,r,s,o){let a=null;if("MODEL"===r.semantic?a=n.getWorldMatrix():"PROJECTION"===r.semantic?a=e.getProjectionMatrix():"VIEW"===r.semantic?a=e.getViewMatrix():"MODELVIEWINVERSETRANSPOSE"===r.semantic?a=t.Matrix.Transpose(n.getWorldMatrix().multiply(e.getViewMatrix()).invert()):"MODELVIEW"===r.semantic?a=n.getWorldMatrix().multiply(e.getViewMatrix()):"MODELVIEWPROJECTION"===r.semantic?a=n.getWorldMatrix().multiply(e.getTransformMatrix()):"MODELINVERSE"===r.semantic?a=n.getWorldMatrix().invert():"VIEWINVERSE"===r.semantic?a=e.getViewMatrix().invert():"PROJECTIONINVERSE"===r.semantic?a=e.getProjectionMatrix().invert():"MODELVIEWINVERSE"===r.semantic?a=n.getWorldMatrix().multiply(e.getViewMatrix()).invert():"MODELVIEWPROJECTIONINVERSE"===r.semantic?a=n.getWorldMatrix().multiply(e.getTransformMatrix()).invert():"MODELINVERSETRANSPOSE"===r.semantic&&(a=t.Matrix.Transpose(n.getWorldMatrix().invert())),a)switch(r.type){case w.FLOAT_MAT2:o.setMatrix2x2(s,t.Matrix.GetAsMatrix2x2(a));break;case w.FLOAT_MAT3:o.setMatrix3x3(s,t.Matrix.GetAsMatrix3x3(a));break;case w.FLOAT_MAT4:o.setMatrix(s,a)}}static SetUniform(e,n,r,s){switch(s){case w.FLOAT:return e.setFloat(n,r),!0;case w.FLOAT_VEC2:return e.setVector2(n,t.Vector2.FromArray(r)),!0;case w.FLOAT_VEC3:return e.setVector3(n,t.Vector3.FromArray(r)),!0;case w.FLOAT_VEC4:return e.setVector4(n,t.Vector4.FromArray(r)),!0;default:return!1}}static GetWrapMode(e){switch(e){case M.CLAMP_TO_EDGE:return t.Texture.CLAMP_ADDRESSMODE;case M.MIRRORED_REPEAT:return t.Texture.MIRROR_ADDRESSMODE;case M.REPEAT:default:return t.Texture.WRAP_ADDRESSMODE}}static GetByteStrideFromType(e){switch(e.type){case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16;default:return 1}}static GetTextureFilterMode(e){switch(e){case O.LINEAR:case O.LINEAR_MIPMAP_NEAREST:case O.LINEAR_MIPMAP_LINEAR:return t.Texture.TRILINEAR_SAMPLINGMODE;case O.NEAREST:case O.NEAREST_MIPMAP_NEAREST:return t.Texture.NEAREST_SAMPLINGMODE;default:return t.Texture.BILINEAR_SAMPLINGMODE}}static GetBufferFromBufferView(e,t,n,r,s){n=t.byteOffset+n;const o=e.loadedBufferViews[t.buffer];if(n+r>o.byteLength)throw new Error("Buffer access is out of range");const a=o.buffer;switch(n+=o.byteOffset,s){case C.BYTE:return new Int8Array(a,n,r);case C.UNSIGNED_BYTE:return new Uint8Array(a,n,r);case C.SHORT:return new Int16Array(a,n,r);case C.UNSIGNED_SHORT:return new Uint16Array(a,n,r);default:return new Float32Array(a,n,r)}}static GetBufferFromAccessor(e,t){const n=e.bufferViews[t.bufferView],r=t.count*I.GetByteStrideFromType(t);return I.GetBufferFromBufferView(e,n,t.byteOffset,r,t.componentType)}static DecodeBufferToText(e){let t="";const n=e.byteLength;for(let r=0;r<n;++r)t+=String.fromCharCode(e[r]);return t}static GetDefaultMaterial(e){if(!I._DefaultMaterial){t.Effect.ShadersStore.GLTFDefaultMaterialVertexShader=["precision highp float;","","uniform mat4 worldView;","uniform mat4 projection;","","attribute vec3 position;","","void main(void)","{"," gl_Position = projection * worldView * vec4(position, 1.0);","}"].join("\n"),t.Effect.ShadersStore.GLTFDefaultMaterialPixelShader=["precision highp float;","","uniform vec4 u_emission;","","void main(void)","{"," gl_FragColor = u_emission;","}"].join("\n");const n={vertex:"GLTFDefaultMaterial",fragment:"GLTFDefaultMaterial"},r={attributes:["position"],uniforms:["worldView","projection","u_emission"],samplers:new Array,needAlphaBlending:!1};I._DefaultMaterial=new t.ShaderMaterial("GLTFDefaultMaterial",e,n,r),I._DefaultMaterial.setColor4("u_emission",new t.Color4(.5,.5,.5,1))}return I._DefaultMaterial}}I._DefaultMaterial=null,function(e){e[e.IDENTIFIER=1]="IDENTIFIER",e[e.UNKNOWN=2]="UNKNOWN",e[e.END_OF_INPUT=3]="END_OF_INPUT"}(F||(F={}));class N{constructor(e){this._pos=0,this.currentToken=F.UNKNOWN,this.currentIdentifier="",this.currentString="",this.isLetterOrDigitPattern=/^[a-zA-Z0-9]+$/,this._toParse=e,this._maxPos=e.length}getNextToken(){if(this.isEnd())return F.END_OF_INPUT;if(this.currentString=this.read(),this.currentToken=F.UNKNOWN,"_"===this.currentString||this.isLetterOrDigitPattern.test(this.currentString))for(this.currentToken=F.IDENTIFIER,this.currentIdentifier=this.currentString;!this.isEnd()&&(this.isLetterOrDigitPattern.test(this.currentString=this.peek())||"_"===this.currentString);)this.currentIdentifier+=this.currentString,this.forward();return this.currentToken}peek(){return this._toParse[this._pos]}read(){return this._toParse[this._pos++]}forward(){this._pos++}isEnd(){return this._pos>=this._maxPos}}const k=["MODEL","VIEW","PROJECTION","MODELVIEW","MODELVIEWPROJECTION","JOINTMATRIX"],P=["world","view","projection","worldView","worldViewProjection","mBones"],B=["translation","rotation","scale"],G=["position","rotationQuaternion","scaling"],V=(e,t,n)=>{for(const r in e){const s=e[r];n[t][r]=s}},D=e=>{if(e)for(let t=0;t<e.length/2;t++)e[2*t+1]=1-e[2*t+1]},H=e=>{if("NORMAL"===e.semantic)return"normal";if("POSITION"===e.semantic)return"position";if("JOINT"===e.semantic)return"matricesIndices";if("WEIGHT"===e.semantic)return"matricesWeights";if("COLOR"===e.semantic)return"color";if(e.semantic&&-1!==e.semantic.indexOf("TEXCOORD_")){const t=Number(e.semantic.split("_")[1]);return"uv"+(0===t?"":t+1)}return null},$=e=>{let n;if(e.translation||e.rotation||e.scale){const r=t.Vector3.FromArray(e.scale||[1,1,1]),s=t.Quaternion.FromArray(e.rotation||[0,0,0,1]),o=t.Vector3.FromArray(e.translation||[0,0,0]);n=t.Matrix.Compose(r,s,o)}else n=t.Matrix.FromArray(e.matrix);return n},K=(e,n,r,s)=>{for(let e=0;e<s.bones.length;e++)if(s.bones[e].name===r)return s.bones[e];const o=e.nodes;for(const a in o){const i=o[a];if(!i.jointName)continue;const l=i.children;for(let o=0;o<l.length;o++){const u=e.nodes[l[o]];if(u.jointName&&u.jointName===r){const r=$(i),o=new t.Bone(i.name||"",s,K(e,n,i.jointName,s),r);return o.id=a,o}}}return null},W=(e,t)=>{for(let n=0;n<e.length;n++){const r=e[n];for(let e=0;e<r.node.children.length;e++)if(r.node.children[e]===t)return r.bone}return null},U=(e,t)=>{const n=e.nodes;let r=n[t];if(r)return{node:r,id:t};for(const e in n)if(r=n[e],r.jointName===t)return{node:r,id:e};return null},z=(e,t)=>{for(let n=0;n<e.jointNames.length;n++)if(e.jointNames[n]===t)return!0;return!1},j=(e,n,r,s,o)=>{if(o||(e.scene._blockEntityCollection=!!e.assetContainer,(o=new t.Mesh(n.name||"",e.scene))._parentContainer=e.assetContainer,e.scene._blockEntityCollection=!1,o.id=s),!n.babylonNode)return o;const a=[];let i=null;const l=[],u=[],c=[],h=[];for(let n=0;n<r.length;n++){const s=r[n],o=e.meshes[s];if(o)for(let n=0;n<o.primitives.length;n++){const r=new t.VertexData,s=o.primitives[n];s.mode;const d=s.attributes;let m,_;for(const n in d)if(m=e.accessors[d[n]],_=I.GetBufferFromAccessor(e,m),"NORMAL"===n)r.normals=new Float32Array(_.length),r.normals.set(_);else if("POSITION"===n){if(b.HomogeneousCoordinates){r.positions=new Float32Array(_.length-_.length/4);for(let e=0;e<_.length;e+=4)r.positions[e]=_[e],r.positions[e+1]=_[e+1],r.positions[e+2]=_[e+2]}else r.positions=new Float32Array(_.length),r.positions.set(_);u.push(r.positions.length)}else if(-1!==n.indexOf("TEXCOORD_")){const e=Number(n.split("_")[1]),s=t.VertexBuffer.UVKind+(0===e?"":e+1),o=new Float32Array(_.length);o.set(_),D(o),r.set(o,s)}else"JOINT"===n?(r.matricesIndices=new Float32Array(_.length),r.matricesIndices.set(_)):"WEIGHT"===n?(r.matricesWeights=new Float32Array(_.length),r.matricesWeights.set(_)):"COLOR"===n&&(r.colors=new Float32Array(_.length),r.colors.set(_));if(m=e.accessors[s.indices],m)_=I.GetBufferFromAccessor(e,m),r.indices=new Int32Array(_.length),r.indices.set(_),h.push(r.indices.length);else{const e=[];for(let t=0;t<r.positions.length/3;t++)e.push(t);r.indices=new Int32Array(e),h.push(r.indices.length)}i?i.merge(r):i=r;const p=e.scene.getMaterialById(s.material);a.push(null===p?I.GetDefaultMaterial(e.scene):p),l.push(0===l.length?0:l[l.length-1]+u[u.length-2]),c.push(0===c.length?0:c[c.length-1]+h[h.length-2])}}let d;e.scene._blockEntityCollection=!!e.assetContainer,a.length>1?(d=new t.MultiMaterial("multimat"+s,e.scene),d.subMaterials=a):d=new t.StandardMaterial("multimat"+s,e.scene),1===a.length&&(d=a[0]),d._parentContainer=e.assetContainer,o.material||(o.material=d),new t.Geometry(s,e.scene,i,!1,o),o.computeWorldMatrix(!0),e.scene._blockEntityCollection=!1,o.subMeshes=[];let m=0;for(let n=0;n<r.length;n++){const s=r[n],a=e.meshes[s];if(a)for(let e=0;e<a.primitives.length;e++)a.primitives[e].mode,t.SubMesh.AddToMesh(m,l[m],u[m],c[m],h[m],o,o,!0),m++}return o},q=(e,t,n,r)=>{e.position&&(e.position=t),(e.rotationQuaternion||e.rotation)&&(e.rotationQuaternion=n),e.scaling&&(e.scaling=r)},Y=(e,n,r)=>{let s=null;if(e.importOnlyMeshes&&(n.skin||n.meshes)&&e.importMeshesNames&&e.importMeshesNames.length>0&&-1===e.importMeshesNames.indexOf(n.name||""))return null;if(n.skin){if(n.meshes){const o=e.skins[n.skin],a=j(e,n,n.meshes,r,n.babylonNode);a.skeleton=e.scene.getLastSkeletonById(n.skin),null===a.skeleton&&(a.skeleton=((e,n,r,s)=>{if(s||(s=new t.Skeleton(n.name||"","",e.scene)),!n.babylonSkeleton)return s;const o=[],a=[];((e,n,r,s)=>{for(const o in e.nodes){const a=e.nodes[o],i=o;if(!a.jointName||z(r,a.jointName))continue;const l=$(a),u=new t.Bone(a.name||"",n,null,l);u.id=i,s.push({bone:u,node:a,id:i})}for(let e=0;e<s.length;e++){const t=s[e],n=t.node.children;for(let e=0;e<n.length;e++){let r=null;for(let t=0;t<s.length;t++)if(s[t].id===n[e]){r=s[t];break}r&&(r.bone._parent=t.bone,t.bone.children.push(r.bone))}}})(e,s,n,o),s.bones=[];for(let r=0;r<n.jointNames.length;r++){const i=U(e,n.jointNames[r]);if(!i)continue;const l=i.node;if(!l){t.Tools.Warn("Joint named "+n.jointNames[r]+" does not exist");continue}const u=i.id,c=e.scene.getBoneById(u);if(c){s.bones.push(c);continue}let h,d=null;for(let o=0;o<r;o++){const r=U(e,n.jointNames[o]);if(!r)continue;const a=r.node;if(!a){t.Tools.Warn("Joint named "+n.jointNames[o]+" does not exist when looking for parent");continue}const i=a.children;if(i){h=!1;for(let t=0;t<i.length;t++)if(i[t]===u){d=K(e,n,n.jointNames[o],s),h=!0;break}if(h)break}}const m=$(l);!d&&o.length>0&&(d=W(o,u),d&&-1===a.indexOf(d)&&a.push(d)),new t.Bone(l.jointName||"",s,d,m).id=u}const i=s.bones;s.bones=[];for(let t=0;t<n.jointNames.length;t++){const r=U(e,n.jointNames[t]);if(r)for(let e=0;e<i.length;e++)if(i[e].id===r.id){s.bones.push(i[e]);break}}s.prepare();for(let e=0;e<a.length;e++)s.bones.push(a[e]);return s})(e,o,0,o.babylonSkeleton),o.babylonSkeleton||(o.babylonSkeleton=a.skeleton)),s=a}}else if(n.meshes)s=j(e,n,n.mesh?[n.mesh]:n.meshes,r,n.babylonNode);else if(!n.light||n.babylonNode||e.importOnlyMeshes){if(n.camera&&!n.babylonNode&&!e.importOnlyMeshes){const r=e.cameras[n.camera];if(r){if(e.scene._blockEntityCollection=!!e.assetContainer,"orthographic"===r.type){const r=new t.FreeCamera(n.camera,t.Vector3.Zero(),e.scene,!1);r.name=n.name||"",r.mode=t.Camera.ORTHOGRAPHIC_CAMERA,r.attachControl(),s=r,r._parentContainer=e.assetContainer}else if("perspective"===r.type){const o=r[r.type],a=new t.FreeCamera(n.camera,t.Vector3.Zero(),e.scene,!1);a.name=n.name||"",a.attachControl(),o.aspectRatio||(o.aspectRatio=e.scene.getEngine().getRenderWidth()/e.scene.getEngine().getRenderHeight()),o.znear&&o.zfar&&(a.maxZ=o.zfar,a.minZ=o.znear),s=a,a._parentContainer=e.assetContainer}e.scene._blockEntityCollection=!1}}}else{const r=e.lights[n.light];if(r)if("ambient"===r.type){const o=r[r.type],a=new t.HemisphericLight(n.light,t.Vector3.Zero(),e.scene);a.name=n.name||"",o.color&&(a.diffuse=t.Color3.FromArray(o.color)),s=a}else if("directional"===r.type){const o=r[r.type],a=new t.DirectionalLight(n.light,t.Vector3.Zero(),e.scene);a.name=n.name||"",o.color&&(a.diffuse=t.Color3.FromArray(o.color)),s=a}else if("point"===r.type){const o=r[r.type],a=new t.PointLight(n.light,t.Vector3.Zero(),e.scene);a.name=n.name||"",o.color&&(a.diffuse=t.Color3.FromArray(o.color)),s=a}else if("spot"===r.type){const o=r[r.type],a=new t.SpotLight(n.light,t.Vector3.Zero(),t.Vector3.Zero(),0,0,e.scene);a.name=n.name||"",o.color&&(a.diffuse=t.Color3.FromArray(o.color)),o.fallOfAngle&&(a.angle=o.fallOfAngle),o.fallOffExponent&&(a.exponent=o.fallOffExponent),s=a}}if(!n.jointName){if(n.babylonNode)return n.babylonNode;if(null===s){e.scene._blockEntityCollection=!!e.assetContainer;const r=new t.Mesh(n.name||"",e.scene);r._parentContainer=e.assetContainer,e.scene._blockEntityCollection=!1,n.babylonNode=r,s=r}}if(null!==s){if(n.matrix&&s instanceof t.Mesh)((e,n)=>{if(n.matrix){const r=new t.Vector3(0,0,0),s=new t.Quaternion,o=new t.Vector3(0,0,0);t.Matrix.FromArray(n.matrix).decompose(o,s,r),q(e,r,s,o)}else n.translation&&n.rotation&&n.scale&&q(e,t.Vector3.FromArray(n.translation),t.Quaternion.FromArray(n.rotation),t.Vector3.FromArray(n.scale));e.computeWorldMatrix(!0)})(s,n);else{const e=n.translation||[0,0,0],r=n.rotation||[0,0,0,1],o=n.scale||[1,1,1];q(s,t.Vector3.FromArray(e),t.Quaternion.FromArray(r),t.Vector3.FromArray(o))}s.updateCache(!0),n.babylonNode=s}return s},X=(e,t,n,r=!1)=>{const s=e.nodes[t];let o=null;if(r=!(e.importOnlyMeshes&&!r&&e.importMeshesNames)||-1!==e.importMeshesNames.indexOf(s.name||"")||0===e.importMeshesNames.length,!s.jointName&&r&&(o=Y(e,s,t),null!==o&&(o.id=t,o.parent=n)),s.children)for(let t=0;t<s.children.length;t++)X(e,s.children[t],o,r)},Q=e=>{let n=e.currentScene;if(n)for(let t=0;t<n.nodes.length;t++)X(e,n.nodes[t],null);else for(const t in e.scenes){n=e.scenes[t];for(let t=0;t<n.nodes.length;t++)X(e,n.nodes[t],null)}(e=>{for(const n in e.animations){const r=e.animations[n];if(!r.channels||!r.samplers)continue;let s=null;for(let o=0;o<r.channels.length;o++){const a=r.channels[o],i=r.samplers[a.sampler];if(!i)continue;let l,u;r.parameters?(l=r.parameters[i.input],u=r.parameters[i.output]):(l=i.input,u=i.output);const c=I.GetBufferFromAccessor(e,e.accessors[l]),h=I.GetBufferFromAccessor(e,e.accessors[u]),d=a.target.id;let m=e.scene.getNodeById(d);if(null===m&&(m=e.scene.getNodeByName(d)),null===m){t.Tools.Warn("Creating animation named "+n+". But cannot find node named "+d+" to attach to");continue}const _=m instanceof t.Bone;let p=a.target.path;const f=B.indexOf(p);-1!==f&&(p=G[f]);let g=t.Animation.ANIMATIONTYPE_MATRIX;_||("rotationQuaternion"===p?(g=t.Animation.ANIMATIONTYPE_QUATERNION,m.rotationQuaternion=new t.Quaternion):g=t.Animation.ANIMATIONTYPE_VECTOR3);let b=null;const y=[];let T=0,v=!1;_&&s&&s.getKeys().length===c.length&&(b=s,v=!0),v||(e.scene._blockEntityCollection=!!e.assetContainer,b=new t.Animation(n,_?"_matrix":p,1,g,t.Animation.ANIMATIONLOOPMODE_CYCLE),e.scene._blockEntityCollection=!1);for(let e=0;e<c.length;e++){let n;if("rotationQuaternion"===p?(n=t.Quaternion.FromArray([h[T],h[T+1],h[T+2],h[T+3]]),T+=4):(n=t.Vector3.FromArray([h[T],h[T+1],h[T+2]]),T+=3),_){const r=m;let o=t.Vector3.Zero(),a=new t.Quaternion,i=t.Vector3.Zero(),l=r.getBaseMatrix();v&&s&&(l=s.getKeys()[e].value),l.decompose(i,a,o),"position"===p?o=n:"rotationQuaternion"===p?a=n:i=n,n=t.Matrix.Compose(i,a,o)}v?s&&(s.getKeys()[e].value=n):y.push({frame:c[e],value:n})}!v&&b&&(b.setKeys(y),m.animations.push(b)),s=b,e.scene.stopAnimation(m),e.scene.beginAnimation(m,0,c[c.length-1],!0,1)}}})(e);for(let t=0;t<e.scene.skeletons.length;t++){const n=e.scene.skeletons[t];e.scene.beginAnimation(n,0,Number.MAX_VALUE,!0,1)}},Z=(e,t,n)=>{for(const r in t.uniforms){const s=t.uniforms[r],o=t.parameters[s];if(e.currentIdentifier===r&&o.semantic&&!o.source&&!o.node){const e=k.indexOf(o.semantic);if(-1!==e)return delete n[r],P[e]}}return e.currentIdentifier},J=e=>{for(const t in e.materials)ne.LoadMaterialAsync(e,t,()=>{},()=>{})};class ee{static CreateRuntime(e,t,n){const r={extensions:{},accessors:{},buffers:{},bufferViews:{},meshes:{},lights:{},cameras:{},nodes:{},images:{},textures:{},shaders:{},programs:{},samplers:{},techniques:{},materials:{},animations:{},skins:{},extensionsUsed:[],scenes:{},buffersCount:0,shaderscount:0,scene:t,rootUrl:n,loadedBufferCount:0,loadedBufferViews:{},loadedShaderCount:0,importOnlyMeshes:!1,dummyNodes:[],assetContainer:null};return e.extensions&&V(e.extensions,"extensions",r),e.extensionsUsed&&V(e.extensionsUsed,"extensionsUsed",r),e.buffers&&((e,t)=>{for(const n in e){const r=e[n];t.buffers[n]=r,t.buffersCount++}})(e.buffers,r),e.bufferViews&&V(e.bufferViews,"bufferViews",r),e.accessors&&V(e.accessors,"accessors",r),e.meshes&&V(e.meshes,"meshes",r),e.lights&&V(e.lights,"lights",r),e.cameras&&V(e.cameras,"cameras",r),e.nodes&&V(e.nodes,"nodes",r),e.images&&V(e.images,"images",r),e.textures&&V(e.textures,"textures",r),e.shaders&&((e,t)=>{for(const n in e){const r=e[n];t.shaders[n]=r,t.shaderscount++}})(e.shaders,r),e.programs&&V(e.programs,"programs",r),e.samplers&&V(e.samplers,"samplers",r),e.techniques&&V(e.techniques,"techniques",r),e.materials&&V(e.materials,"materials",r),e.animations&&V(e.animations,"animations",r),e.skins&&V(e.skins,"skins",r),e.scenes&&(r.scenes=e.scenes),e.scene&&e.scenes&&(r.currentScene=e.scenes[e.scene]),r}static LoadBufferAsync(e,n,r,s,o){const a=e.buffers[n];t.Tools.IsBase64(a.uri)?setTimeout(()=>r(new Uint8Array(t.Tools.DecodeBase64(a.uri)))):t.Tools.LoadFile(e.rootUrl+a.uri,e=>r(new Uint8Array(e)),o,void 0,!0,e=>{e&&s(e.status+" "+e.statusText)})}static LoadTextureBufferAsync(e,n,r,s){const o=e.textures[n];if(!o||!o.source)return void s("");if(o.babylonTexture)return void r(null);const a=e.images[o.source];t.Tools.IsBase64(a.uri)?setTimeout(()=>r(new Uint8Array(t.Tools.DecodeBase64(a.uri)))):t.Tools.LoadFile(e.rootUrl+a.uri,e=>r(new Uint8Array(e)),void 0,void 0,!0,e=>{e&&s(e.status+" "+e.statusText)})}static CreateTextureAsync(e,n,r,s){const o=e.textures[n];if(o.babylonTexture)return void s(o.babylonTexture);const a=e.samplers[o.sampler],i=a.minFilter===O.NEAREST_MIPMAP_NEAREST||a.minFilter===O.NEAREST_MIPMAP_LINEAR||a.minFilter===O.LINEAR_MIPMAP_NEAREST||a.minFilter===O.LINEAR_MIPMAP_LINEAR,l=t.Texture.BILINEAR_SAMPLINGMODE,u=null==r?new Blob:new Blob([t.GetBlobBufferSource(r)]),c=URL.createObjectURL(u),h=()=>URL.revokeObjectURL(c),d=new t.Texture(c,e.scene,!i,!0,l,h,h);void 0!==a.wrapS&&(d.wrapU=I.GetWrapMode(a.wrapS)),void 0!==a.wrapT&&(d.wrapV=I.GetWrapMode(a.wrapT)),d.name=n,o.babylonTexture=d,s(d)}static LoadShaderStringAsync(e,n,r,s){const o=e.shaders[n];if(t.Tools.IsBase64(o.uri)){const e=atob(o.uri.split(",")[1]);r&&r(e)}else t.Tools.LoadFile(e.rootUrl+o.uri,r,void 0,void 0,!1,e=>{e&&s&&s(e.status+" "+e.statusText)})}static LoadMaterialAsync(e,n,r,s){const o=e.materials[n];if(!o.technique)return void(s&&s("No technique found."));const a=e.techniques[o.technique];if(!a){e.scene._blockEntityCollection=!!e.assetContainer;const s=new t.StandardMaterial(n,e.scene);return s._parentContainer=e.assetContainer,e.scene._blockEntityCollection=!1,s.diffuseColor=new t.Color3(.5,.5,.5),s.sideOrientation=t.Material.CounterClockWiseSideOrientation,void r(s)}const i=e.programs[a.program],l=a.states,u=t.Effect.ShadersStore[i.vertexShader+"VertexShader"],c=t.Effect.ShadersStore[i.fragmentShader+"PixelShader"];let h="",d="";const m=new N(u),_=new N(c),p={},f=[],g=[],b=[];for(const e in a.uniforms){const t=a.uniforms[e],n=a.parameters[t];if(p[e]=n,!n.semantic||n.node||n.source)n.type===w.SAMPLER_2D?b.push(e):f.push(e);else{const t=k.indexOf(n.semantic);-1!==t?(f.push(P[t]),delete p[e]):f.push(e)}}for(const e in a.attributes){const t=a.attributes[e],n=a.parameters[t];if(n.semantic){const e=H(n);e&&g.push(e)}}for(;!m.isEnd()&&m.getNextToken();){if(m.currentToken!==F.IDENTIFIER){h+=m.currentString;continue}let e=!1;for(const t in a.attributes){const n=a.attributes[t],r=a.parameters[n];if(m.currentIdentifier===t&&r.semantic){h+=H(r),e=!0;break}}e||(h+=Z(m,a,p))}for(;!_.isEnd()&&_.getNextToken();)_.currentToken===F.IDENTIFIER?d+=Z(_,a,p):d+=_.currentString;const y={vertex:i.vertexShader+n,fragment:i.fragmentShader+n},T={attributes:g,uniforms:f,samplers:b,needAlphaBlending:l&&l.enable&&-1!==l.enable.indexOf(3042)};t.Effect.ShadersStore[i.vertexShader+n+"VertexShader"]=h,t.Effect.ShadersStore[i.fragmentShader+n+"PixelShader"]=d;const v=new t.ShaderMaterial(n,e.scene,y,T);if(v.onError=((e,t,n)=>(r,s)=>{t.dispose(!0),n("Cannot compile program named "+e.name+". Error: "+s+". Default material will be applied")})(i,v,s),v.onCompiled=((e,t,n,r,s,o)=>a=>{((e,t,n,r,s)=>{const o=r.values||n.parameters,a=n.uniforms;for(const n in s){const i=s[n],l=i.type;let u=o[a[n]];if(void 0===u&&(u=i.value),!u)continue;const c=e=>n=>{i.value&&e&&(t.setTexture(e,n),delete s[e])};l===w.SAMPLER_2D?ne.LoadTextureAsync(e,r.values?u:i.value,c(n),()=>c(null)):i.value&&I.SetUniform(t,n,r.values?u:i.value,l)&&delete s[n]}})(e,t,n,r,s),t.onBind=a=>{((e,t,n,r,s,o,a)=>{const i=o.values||s.parameters;for(const a in n){const l=n[a],u=l.type;if(u===w.FLOAT_MAT2||u===w.FLOAT_MAT3||u===w.FLOAT_MAT4)if(!l.semantic||l.source||l.node){if(l.semantic&&(l.source||l.node)){let e=t.scene.getNodeByName(l.source||l.node||"");if(null===e&&(e=t.scene.getNodeById(l.source||l.node||"")),null===e)continue;I.SetMatrix(t.scene,e,l,a,r.getEffect())}}else I.SetMatrix(t.scene,e,l,a,r.getEffect());else{const e=i[s.uniforms[a]];if(!e)continue;if(u===w.SAMPLER_2D){const n=t.textures[o.values?e:l.value].babylonTexture;if(null==n)continue;r.getEffect().setTexture(a,n)}else I.SetUniform(r.getEffect(),a,e,u)}}a(r)})(a,e,s,t,n,r,o)}})(e,v,a,o,p,r),v.sideOrientation=t.Material.CounterClockWiseSideOrientation,l&&l.functions){const e=l.functions;e.cullFace&&e.cullFace[0]!==L.BACK&&(v.backFaceCulling=!1);const n=e.blendFuncSeparate;n&&(n[0]===S.SRC_ALPHA&&n[1]===S.ONE_MINUS_SRC_ALPHA&&n[2]===S.ONE&&n[3]===S.ONE?v.alphaMode=t.Constants.ALPHA_COMBINE:n[0]===S.ONE&&n[1]===S.ONE&&n[2]===S.ZERO&&n[3]===S.ONE?v.alphaMode=t.Constants.ALPHA_ONEONE:n[0]===S.SRC_ALPHA&&n[1]===S.ONE&&n[2]===S.ZERO&&n[3]===S.ONE?v.alphaMode=t.Constants.ALPHA_ADD:n[0]===S.ZERO&&n[1]===S.ONE_MINUS_SRC_COLOR&&n[2]===S.ONE&&n[3]===S.ONE?v.alphaMode=t.Constants.ALPHA_SUBTRACT:n[0]===S.DST_COLOR&&n[1]===S.ZERO&&n[2]===S.ONE&&n[3]===S.ONE?v.alphaMode=t.Constants.ALPHA_MULTIPLY:n[0]===S.SRC_ALPHA&&n[1]===S.ONE_MINUS_SRC_COLOR&&n[2]===S.ONE&&n[3]===S.ONE&&(v.alphaMode=t.Constants.ALPHA_MAXIMIZED))}}}let te=class e{static RegisterExtension(n){e.Extensions[n.name]?t.Tools.Error('Tool with the same name "'+n.name+'" already exists'):e.Extensions[n.name]=n}dispose(){}_importMeshAsync(e,n,r,s,o,a,i,l){return n.useRightHandedSystem=!0,ne.LoadRuntimeAsync(n,r,s,n=>{n.assetContainer=o,n.importOnlyMeshes=!0,""===e?n.importMeshesNames=[]:"string"==typeof e?n.importMeshesNames=[e]:!e||e instanceof Array?(n.importMeshesNames=[],t.Tools.Warn("Argument meshesNames must be of type string or string[]")):n.importMeshesNames=[e],this._createNodes(n);const r=[],s=[];for(const e in n.nodes){const s=n.nodes[e];s.babylonNode instanceof t.AbstractMesh&&r.push(s.babylonNode)}for(const e in n.skins){const r=n.skins[e];r.babylonSkeleton instanceof t.Skeleton&&s.push(r.babylonSkeleton)}this._loadBuffersAsync(n,()=>{this._loadShadersAsync(n,()=>{J(n),Q(n),!b.IncrementalLoading&&a&&a(r,s)})}),b.IncrementalLoading&&a&&a(r,s)},l),!0}importMeshAsync(e,t,n,r,s,o){return new Promise((a,i)=>{this._importMeshAsync(e,t,r,s,n,(e,t)=>{a({meshes:e,particleSystems:[],skeletons:t,animationGroups:[],lights:[],transformNodes:[],geometries:[],spriteManagers:[]})},o,e=>{i(new Error(e))})})}_loadAsync(e,t,n,r,s,o){e.useRightHandedSystem=!0,ne.LoadRuntimeAsync(e,t,n,e=>{ne.LoadRuntimeExtensionsAsync(e,()=>{this._createNodes(e),this._loadBuffersAsync(e,()=>{this._loadShadersAsync(e,()=>{J(e),Q(e),b.IncrementalLoading||r()})}),b.IncrementalLoading&&r()},o)},o)}loadAsync(e,t,n,r){return A(this,void 0,void 0,function*(){return yield new Promise((s,o)=>{this._loadAsync(e,t,n,()=>{s()},r,e=>{o(new Error(e))})})})}_loadShadersAsync(e,n){let r=!1;const s=(r,s)=>{ne.LoadShaderStringAsync(e,r,o=>{o instanceof ArrayBuffer||(e.loadedShaderCount++,o&&(t.Effect.ShadersStore[r+(s.type===R.VERTEX?"VertexShader":"PixelShader")]=o),e.loadedShaderCount===e.shaderscount&&n())},()=>{t.Tools.Error("Error when loading shader program named "+r+" located at "+s.uri)})};for(const n in e.shaders){r=!0;const o=e.shaders[n];o?s.bind(this,n,o)():t.Tools.Error("No shader named: "+n)}r||n()}_loadBuffersAsync(e,n){let r=!1;const s=(r,s)=>{ne.LoadBufferAsync(e,r,o=>{e.loadedBufferCount++,o&&(o.byteLength!=e.buffers[r].byteLength&&t.Tools.Error("Buffer named "+r+" is length "+o.byteLength+". Expected: "+s.byteLength),e.loadedBufferViews[r]=o),e.loadedBufferCount===e.buffersCount&&n()},()=>{t.Tools.Error("Error when loading buffer named "+r+" located at "+s.uri)})};for(const n in e.buffers){r=!0;const o=e.buffers[n];o?s.bind(this,n,o)():t.Tools.Error("No buffer named: "+n)}r||n()}_createNodes(e){let t=e.currentScene;if(t)for(let n=0;n<t.nodes.length;n++)X(e,t.nodes[n],null);else for(const n in e.scenes){t=e.scenes[n];for(let n=0;n<t.nodes.length;n++)X(e,t.nodes[n],null)}}};te.Extensions={};class ne{constructor(e){this._name=e}get name(){return this._name}loadRuntimeAsync(e,t,n,r,s){return!1}loadRuntimeExtensionsAsync(e,t,n){return!1}loadBufferAsync(e,t,n,r,s){return!1}loadTextureBufferAsync(e,t,n,r){return!1}createTextureAsync(e,t,n,r,s){return!1}loadShaderStringAsync(e,t,n,r){return!1}loadMaterialAsync(e,t,n,r){return!1}static LoadRuntimeAsync(e,t,n,r,s){ne._ApplyExtensions(o=>o.loadRuntimeAsync(e,t,n,r,s),()=>{setTimeout(()=>{r&&r(ee.CreateRuntime(t.json,e,n))})})}static LoadRuntimeExtensionsAsync(e,t,n){ne._ApplyExtensions(r=>r.loadRuntimeExtensionsAsync(e,t,n),()=>{setTimeout(()=>{t()})})}static LoadBufferAsync(e,t,n,r,s){ne._ApplyExtensions(o=>o.loadBufferAsync(e,t,n,r,s),()=>{ee.LoadBufferAsync(e,t,n,r,s)})}static LoadTextureAsync(e,t,n,r){ne._LoadTextureBufferAsync(e,t,s=>{s&&ne._CreateTextureAsync(e,t,s,n,r)},r)}static LoadShaderStringAsync(e,t,n,r){ne._ApplyExtensions(s=>s.loadShaderStringAsync(e,t,n,r),()=>{ee.LoadShaderStringAsync(e,t,n,r)})}static LoadMaterialAsync(e,t,n,r){ne._ApplyExtensions(s=>s.loadMaterialAsync(e,t,n,r),()=>{ee.LoadMaterialAsync(e,t,n,r)})}static _LoadTextureBufferAsync(e,t,n,r){ne._ApplyExtensions(s=>s.loadTextureBufferAsync(e,t,n,r),()=>{ee.LoadTextureBufferAsync(e,t,n,r)})}static _CreateTextureAsync(e,t,n,r,s){ne._ApplyExtensions(o=>o.createTextureAsync(e,t,n,r,s),()=>{ee.CreateTextureAsync(e,t,n,r)})}static _ApplyExtensions(e,t){for(const t in te.Extensions)if(e(te.Extensions[t]))return;t()}}let re=!1;function se(){re||(re=!0,b._CreateGLTF1Loader=()=>new te)}class oe extends ne{constructor(){super("KHR_binary_glTF")}loadRuntimeAsync(e,t,n,r){const s=t.json.extensionsUsed;return!(!s||-1===s.indexOf(this.name)||!t.bin||(this._bin=t.bin,r(ee.CreateRuntime(t.json,e,n)),0))}loadBufferAsync(e,t,n,r){return-1!==e.extensionsUsed.indexOf(this.name)&&"binary_glTF"===t&&(this._bin.readAsync(0,this._bin.byteLength).then(n,e=>r(e.message)),!0)}loadTextureBufferAsync(e,t,n){const r=e.textures[t],s=e.images[r.source];if(!s.extensions||!(this.name in s.extensions))return!1;const o=s.extensions[this.name],a=e.bufferViews[o.bufferView];return n(I.GetBufferFromBufferView(e,a,0,a.byteLength,C.UNSIGNED_BYTE)),!0}loadShaderStringAsync(e,t,n){const r=e.shaders[t];if(!r.extensions||!(this.name in r.extensions))return!1;const s=r.extensions[this.name],o=e.bufferViews[s.bufferView],a=I.GetBufferFromBufferView(e,o,0,o.byteLength,C.UNSIGNED_BYTE);return setTimeout(()=>{const e=I.DecodeBufferToText(a);n(e)}),!0}}let ae=!1;function ie(){ae||(ae=!0,te.RegisterExtension(new oe))}se(),T(),ie();class le extends ne{constructor(){super("KHR_materials_common")}loadRuntimeExtensionsAsync(e){if(!e.extensions)return!1;const n=e.extensions[this.name];if(!n)return!1;const r=n.lights;if(r)for(const n in r){const s=r[n];switch(s.type){case"ambient":{const n=new t.HemisphericLight(s.name,new t.Vector3(0,1,0),e.scene),r=s.ambient;r&&(n.diffuse=t.Color3.FromArray(r.color||[1,1,1]));break}case"point":{const n=new t.PointLight(s.name,new t.Vector3(10,10,10),e.scene),r=s.point;r&&(n.diffuse=t.Color3.FromArray(r.color||[1,1,1]));break}case"directional":{const n=new t.DirectionalLight(s.name,new t.Vector3(0,-1,0),e.scene),r=s.directional;r&&(n.diffuse=t.Color3.FromArray(r.color||[1,1,1]));break}case"spot":{const n=s.spot;n&&(new t.SpotLight(s.name,new t.Vector3(0,10,0),new t.Vector3(0,-1,0),n.fallOffAngle||Math.PI,n.fallOffExponent||0,e.scene).diffuse=t.Color3.FromArray(n.color||[1,1,1]));break}default:t.Tools.Warn('GLTF Material Common extension: light type "'+s.type+"” not supported")}}return!1}loadMaterialAsync(e,n,r,s){const o=e.materials[n];if(!o||!o.extensions)return!1;const a=o.extensions[this.name];if(!a)return!1;const i=new t.StandardMaterial(n,e.scene);return i.sideOrientation=t.Material.CounterClockWiseSideOrientation,"CONSTANT"===a.technique&&(i.disableLighting=!0),i.backFaceCulling=void 0!==a.doubleSided&&!a.doubleSided,i.alpha=void 0===a.values.transparency?1:a.values.transparency,i.specularPower=void 0===a.values.shininess?0:a.values.shininess,"string"==typeof a.values.ambient?this._loadTexture(e,a.values.ambient,i,"ambientTexture",s):i.ambientColor=t.Color3.FromArray(a.values.ambient||[0,0,0]),"string"==typeof a.values.diffuse?this._loadTexture(e,a.values.diffuse,i,"diffuseTexture",s):i.diffuseColor=t.Color3.FromArray(a.values.diffuse||[0,0,0]),"string"==typeof a.values.emission?this._loadTexture(e,a.values.emission,i,"emissiveTexture",s):i.emissiveColor=t.Color3.FromArray(a.values.emission||[0,0,0]),"string"==typeof a.values.specular?this._loadTexture(e,a.values.specular,i,"specularTexture",s):i.specularColor=t.Color3.FromArray(a.values.specular||[0,0,0]),!0}_loadTexture(e,t,n,r,s){ee.LoadTextureBufferAsync(e,t,s=>{ee.CreateTextureAsync(e,t,s,e=>n[r]=e)},s)}}let ue=!1;function ce(){ue||(ue=!0,te.RegisterExtension(new le))}ce();var he={__proto__:null,get EBlendingFunction(){return S},get EComponentType(){return C},get ECullingType(){return L},get EParameterType(){return w},get EShaderType(){return R},get ETextureFilterType(){return O},get ETextureFormat(){return E},get ETextureWrapMode(){return M},GLTFBinaryExtension:oe,GLTFLoader:te,GLTFLoaderBase:ee,GLTFLoaderExtension:ne,GLTFMaterialsCommonExtension:le,GLTFUtils:I,RegisterGLTF1Loader:se,RegisterGLTFBinaryExtension:ie,RegisterGLTFMaterialsCommonExtension:ce};const de="undefined"!=typeof global?global:"undefined"!=typeof window?window:void 0;if(void 0!==de){de.BABYLON=de.BABYLON||{},de.BABYLON.GLTF1=de.BABYLON.GLTF1||{};for(const e in he)de.BABYLON.GLTF1[e]=he[e]}const me=[{regex:new RegExp("^/nodes/\\d+/extensions/")},{regex:new RegExp("^/animations/\\d+/extensions/")},{regex:new RegExp("^/nodes/\\d+/weights")},{regex:new RegExp("^/meshes/\\d+/weights")},{regex:new RegExp("/extensions/KHR_texture_transform/")}];class _e{constructor(e,t){this._gltf=e,this._infoTree=t}convert(e){let t,n=this._gltf,r=this._infoTree;if(!e.startsWith("/"))throw new Error("Path must start with a /");const s=e.split("/");if(s.shift(),s[s.length-1].includes(".length")){const e=s[s.length-1].split(".");s.pop(),s.push(...e)}let o=!1;for(const a of s)if("length"===a){if(!r.length)throw r.__array__?new Error(`Path ${e} is invalid - no length accessor`):new Error(`Path ${e} is invalid`);r=r.length,void 0!==n&&(t=n)}else{if(r.__ignoreObjectTree__&&(o=!0),r.__array__)r=r.__array__;else if(r=r[a],!r)throw new Error(`Path ${e} is invalid`);if(r.__passThroughTarget__)o=!0;else if(o){const e=/^\d+$/.test(a)?parseInt(a,10):NaN;if(!isNaN(e)&&"function"==typeof r.get){const t=r;r=Object.assign({},t),r.get=(n,r,...s)=>t.get(n,e,...s),"function"==typeof t.set&&(r.set=(n,r,s,...o)=>t.set(n,r,e,...o)),"function"==typeof t.getTarget&&(r.getTarget=(n,r,...s)=>t.getTarget(n,e,...s))}}else if(void 0===n){if(!me.find(t=>t.regex.test(e)))throw new Error(`Path ${e} is invalid`)}else n=null==n?void 0:n[a];r.__target__&&void 0!==n&&(t=n)}return{object:t,info:r}}}function pe(e,n){return{type:"FlowGraphInteger",get:n=>{const r=e(n);return void 0===r?void 0:t.FlowGraphInteger.FromValue(r)},getTarget:n,getPropertyName:[()=>"length"]}}const fe={length:pe(e=>e.length,e=>e.map(e=>e._babylonTransformNode)),__array__:{__target__:!0,translation:{type:"Vector3",get:e=>{var t;return null===(t=e._babylonTransformNode)||void 0===t?void 0:t.position},set:(e,t)=>{var n;return null===(n=t._babylonTransformNode)||void 0===n?void 0:n.position.copyFrom(e)},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"position"]},rotation:{type:"Quaternion",get:e=>{var t;return null===(t=e._babylonTransformNode)||void 0===t?void 0:t.rotationQuaternion},set:(e,t)=>{var n,r;return null===(r=null===(n=t._babylonTransformNode)||void 0===n?void 0:n.rotationQuaternion)||void 0===r?void 0:r.copyFrom(e)},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"rotationQuaternion"]},scale:{type:"Vector3",get:e=>{var t;return null===(t=e._babylonTransformNode)||void 0===t?void 0:t.scaling},set:(e,t)=>{var n;return null===(n=t._babylonTransformNode)||void 0===n?void 0:n.scaling.copyFrom(e)},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"scaling"]},weights:{__passThroughTarget__:!0,length:pe(e=>{const t=ve(e);return t?t.mtm.numTargets:void 0!==(null==e?void 0:e.mesh)?0:void 0},e=>null==e?void 0:e._babylonTransformNode),__array__:{__target__:!0,type:"number",get:(e,t)=>{const n=ve(e);if(n&&void 0!==t&&t>=0&&t<n.mtm.numTargets)return xe(n.mtm.getTarget(t).influence)},set:(e,t,n)=>{var r;const s="number"==typeof e?e:"number"==typeof(null==e?void 0:e.value)?e.value:e,o=ve(t);if(!(!o||void 0===n||n<0||n>=o.mtm.numTargets))for(const e of o.meshes){const t=null===(r=e.morphTargetManager)||void 0===r?void 0:r.getTarget(n);t&&(t.influence=s)}},getTarget:(e,t)=>{const n=ve(e);return n&&void 0!==t&&t>=0&&t<n.mtm.numTargets?n.mtm.getTarget(t):null==e?void 0:e._babylonTransformNode},getPropertyName:[()=>"influence"]},type:"number[]",get:e=>{const t=ve(e);if(!t)return[];const n=[];for(let e=0;e<t.mtm.numTargets;e++)n.push(xe(t.mtm.getTarget(e).influence));return n},getTarget:e=>null==e?void 0:e._babylonTransformNode,getPropertyName:[()=>"influence"]},matrix:{type:"Matrix",get:e=>{var n,r,s;return t.Matrix.Compose(null===(n=e._babylonTransformNode)||void 0===n?void 0:n.scaling,null===(r=e._babylonTransformNode)||void 0===r?void 0:r.rotationQuaternion,null===(s=e._babylonTransformNode)||void 0===s?void 0:s.position)},getTarget:e=>e._babylonTransformNode,isReadOnly:!0},globalMatrix:{type:"Matrix",get:e=>{var n,r,s,o,a,i,l;const u=t.Matrix.Identity();let c=e.parent;for(;c&&c.parent;)c=c.parent;const h=(null===(n=e._babylonTransformNode)||void 0===n?void 0:n.position._isDirty)||(null===(s=null===(r=e._babylonTransformNode)||void 0===r?void 0:r.rotationQuaternion)||void 0===s?void 0:s._isDirty)||(null===(o=e._babylonTransformNode)||void 0===o?void 0:o.scaling._isDirty);if(c){const t=null===(a=c._babylonTransformNode)||void 0===a?void 0:a.computeWorldMatrix(!0).invert();t&&(null===(l=null===(i=e._babylonTransformNode)||void 0===i?void 0:i.computeWorldMatrix(h))||void 0===l||l.multiplyToRef(t,u))}else e._babylonTransformNode&&u.copyFrom(e._babylonTransformNode.computeWorldMatrix(h));return u},getTarget:e=>e._babylonTransformNode,isReadOnly:!0},camera:{type:"string",get:e=>void 0!==e.camera?`/cameras/${e.camera}`:"",getTarget:e=>e,isReadOnly:!0},mesh:{type:"string",get:e=>void 0!==e.mesh?`/meshes/${e.mesh}`:"",getTarget:e=>e,isReadOnly:!0},skin:{type:"string",get:e=>void 0!==e.skin?`/skins/${e.skin}`:"",getTarget:e=>e,isReadOnly:!0},parent:{type:"string",get:e=>e.parent&&void 0!==e.parent.index?`/nodes/${e.parent.index}`:"",getTarget:e=>e,isReadOnly:!0},children:{length:pe(e=>{var t;return null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0},e=>null!=e?e:[]),__array__:{__target__:!0,type:"string",get:e=>"number"==typeof e?`/nodes/${e}`:"",getTarget:()=>({__nodeIndex:!0}),isReadOnly:!0}},extensions:{EXT_lights_ies:{multiplier:{type:"number",get:e=>{var n,r;return null===(r=null===(n=e._babylonTransformNode)||void 0===n?void 0:n.getChildren(e=>e instanceof t.SpotLight,!0)[0])||void 0===r?void 0:r.intensity},getTarget:e=>{var n;return null===(n=e._babylonTransformNode)||void 0===n?void 0:n.getChildren(e=>e instanceof t.SpotLight,!0)[0]},set:(e,n)=>{if(n._babylonTransformNode){const r=n._babylonTransformNode.getChildren(e=>e instanceof t.SpotLight,!0)[0];r&&(r.intensity=e)}}},color:{type:"Color3",get:e=>{var n,r;return null===(r=null===(n=e._babylonTransformNode)||void 0===n?void 0:n.getChildren(e=>e instanceof t.SpotLight,!0)[0])||void 0===r?void 0:r.diffuse},getTarget:e=>{var n;return null===(n=e._babylonTransformNode)||void 0===n?void 0:n.getChildren(e=>e instanceof t.SpotLight,!0)[0]},set:(e,n)=>{if(n._babylonTransformNode){const r=n._babylonTransformNode.getChildren(e=>e instanceof t.SpotLight,!0)[0];r&&(r.diffuse=e)}}}},KHR_node_visibility:{visible:{type:"boolean",get:e=>!!e._primitiveBabylonMeshes&&e._primitiveBabylonMeshes[0].isVisible,getTarget:()=>{},set:(e,t)=>{t._primitiveBabylonMeshes&&t._primitiveBabylonMeshes.forEach(t=>t.isVisible=e)}}}}}},ge={length:pe(e=>e.length,e=>e.map(e=>e._babylonAnimationGroup)),__array__:{__target__:!0,type:"string",get:e=>e&&"number"==typeof e.index?`/animations/${e.index}`:"",getTarget:e=>e._babylonAnimationGroup,isReadOnly:!0}},be={length:pe(e=>e.length,e=>e.map(e=>{var t;return null===(t=e.primitives[0]._instanceData)||void 0===t?void 0:t.babylonSourceMesh})),__array__:{__target__:!0,primitives:{length:pe(e=>{var t;return null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0},e=>null!=e?e:[]),__array__:{__target__:!0,material:{type:"string",get:e=>void 0!==e.material?`/materials/${e.material}`:"",getTarget:e=>e,isReadOnly:!0}}},weights:{length:pe(e=>{var t;return null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0},e=>null!=e?e:[]),__array__:{__target__:!0,type:"number",get:e=>e,getTarget:()=>({__weightValue:!0}),isReadOnly:!0}}}};function ye(e,t,n,r){const s=Te(e);return r?s[n][r]:s[n]}function Te(e,n,r){var s,o,a;return null===(a=null===(s=e._data)||void 0===s?void 0:s[null!==(o=null==r?void 0:r.fillMode)&&void 0!==o?o:t.Constants.MATERIAL_TriangleFillMode])||void 0===a?void 0:a.babylonMaterial}function ve(e){var t,n,r,s;const o=null==e?void 0:e._babylonTransformNode;if(!o)return;const a=function(e){var t;const n=null==e?void 0:e._babylonTransformNode;if(!n)return;if(n.morphTargetManager)return n.morphTargetManager;const r=e._primitiveBabylonMeshes;if(r)for(const e of r){if(null==e?void 0:e.morphTargetManager)return e.morphTargetManager;if(null===(t=null==e?void 0:e.sourceMesh)||void 0===t?void 0:t.morphTargetManager)return e.sourceMesh.morphTargetManager}}(e);if(a&&e._primitiveBabylonMeshes&&e._primitiveBabylonMeshes.length>0)return{mtm:a,meshes:e._primitiveBabylonMeshes};const i=o.getDescendants(!1);for(const e of i){const o=e,a=null!==(t=o.morphTargetManager)&&void 0!==t?t:null===(n=o.sourceMesh)||void 0===n?void 0:n.morphTargetManager;if(!a)continue;const i=[],l=o.parent;if(l)for(const e of l.getChildMeshes(!0))(null!==(r=e.morphTargetManager)&&void 0!==r?r:null===(s=e.sourceMesh)||void 0===s?void 0:s.morphTargetManager)===a&&i.push(e);return 0===i.length&&i.push(o),{mtm:a,meshes:i}}}function xe(e){return Number.isFinite(e)?parseFloat(e.toPrecision(7)):e}function Ae(e,t,n){if(!e)return;let r=e.extensions;if(!r){if(!n)return;r={},e.extensions=r}let s=r[t.extensionKey];if(!s){if(!n)return;s={},r[t.extensionKey]=s}for(const e of t.texturePath){let t=s[e];if(!t){if(!n)return;t={},s[e]=t}s=t}if(!s.extensions){if(!n)return;s.extensions={}}let o=s.extensions.KHR_texture_transform;if(!o){if(!n)return;o={},s.extensions.KHR_texture_transform=o}return o}function Ce(e,n,r){return{offset:{componentsCount:2,type:"Vector2",get:(s,o,a)=>{var i,l;const u=ye(s,0,e,n);if(u)return new t.Vector2(u.uOffset,u.vOffset);if(r){const e=Ae(s,r,!1),n=null==e?void 0:e.offset;return new t.Vector2(null!==(i=null==n?void 0:n[0])&&void 0!==i?i:0,null!==(l=null==n?void 0:n[1])&&void 0!==l?l:0)}return new t.Vector2(0,0)},getTarget:Te,set:(t,s,o,a)=>{const i=ye(s,0,e,n);if(i&&(i.uOffset=t.x,i.vOffset=t.y),r){const e=Ae(s,r,!0);e&&(e.offset=[t.x,t.y])}},getPropertyName:[()=>`${e}${n?"."+n:""}.uOffset`,()=>`${e}${n?"."+n:""}.vOffset`]},rotation:{type:"number",get:(t,s,o)=>{var a;const i=ye(t,0,e,n);if(i)return i.wAng;if(r){const e=Ae(t,r,!1);return null!==(a=null==e?void 0:e.rotation)&&void 0!==a?a:0}return 0},getTarget:Te,set:(t,s,o,a)=>{const i=ye(s,0,e,n);if(i&&(i.wAng=t),r){const e=Ae(s,r,!0);e&&(e.rotation=t)}},getPropertyName:[()=>`${e}${n?"."+n:""}.wAng`]},scale:{componentsCount:2,type:"Vector2",get:(s,o,a)=>{var i,l;const u=ye(s,0,e,n);if(u)return new t.Vector2(u.uScale,u.vScale);if(r){const e=Ae(s,r,!1),n=null==e?void 0:e.scale;return new t.Vector2(null!==(i=null==n?void 0:n[0])&&void 0!==i?i:1,null!==(l=null==n?void 0:n[1])&&void 0!==l?l:1)}return new t.Vector2(1,1)},getTarget:Te,set:(t,s,o,a)=>{const i=ye(s,0,e,n);if(i&&(i.uScale=t.x,i.vScale=t.y),r){const e=Ae(s,r,!0);e&&(e.scale=[t.x,t.y])}},getPropertyName:[()=>`${e}${n?"."+n:""}.uScale`,()=>`${e}${n?"."+n:""}.vScale`]}}}const Re={scene:{__target__:!0,type:"number",get:e=>null!=e?e:0,getTarget:()=>({__gltfRoot:!0}),isReadOnly:!0,getPropertyName:[()=>"scene"]},cameras:{length:pe(e=>e.length,e=>e.map(e=>e._babylonCamera)),__array__:{__target__:!0,orthographic:{xmag:{componentsCount:2,type:"Vector2",get:e=>{var n,r,s,o;return new t.Vector2(null!==(r=null===(n=e._babylonCamera)||void 0===n?void 0:n.orthoLeft)&&void 0!==r?r:0,null!==(o=null===(s=e._babylonCamera)||void 0===s?void 0:s.orthoRight)&&void 0!==o?o:0)},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.orthoLeft=e.x,t._babylonCamera.orthoRight=e.y)},getTarget:e=>e,getPropertyName:[()=>"orthoLeft",()=>"orthoRight"]},ymag:{componentsCount:2,type:"Vector2",get:e=>{var n,r,s,o;return new t.Vector2(null!==(r=null===(n=e._babylonCamera)||void 0===n?void 0:n.orthoBottom)&&void 0!==r?r:0,null!==(o=null===(s=e._babylonCamera)||void 0===s?void 0:s.orthoTop)&&void 0!==o?o:0)},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.orthoBottom=e.x,t._babylonCamera.orthoTop=e.y)},getTarget:e=>e,getPropertyName:[()=>"orthoBottom",()=>"orthoTop"]},zfar:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.maxZ},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.maxZ=e)},getTarget:e=>e,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.minZ},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.minZ=e)},getTarget:e=>e,getPropertyName:[()=>"minZ"]}},perspective:{aspectRatio:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.getEngine().getAspectRatio(e._babylonCamera)},getTarget:e=>e,getPropertyName:[()=>"aspectRatio"],isReadOnly:!0},yfov:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.fov},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.fov=e)},getTarget:e=>e,getPropertyName:[()=>"fov"]},zfar:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.maxZ},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.maxZ=e)},getTarget:e=>e,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.minZ},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.minZ=e)},getTarget:e=>e,getPropertyName:[()=>"minZ"]}}}},nodes:fe,materials:{length:pe(e=>e.length,e=>e.map(e=>{var n,r;return null===(r=null===(n=e._data)||void 0===n?void 0:n[t.Constants.MATERIAL_TriangleFillMode])||void 0===r?void 0:r.babylonMaterial})),__array__:{__target__:!0,doubleSided:{type:"boolean",get:(e,t,n)=>{var r;return!(null===(r=Te(e,0,n))||void 0===r?void 0:r.backFaceCulling)},set:(e,t,n,r)=>{const s=Te(t,0,r);s&&(s.backFaceCulling=!e)},getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"backFaceCulling"]},alphaCutoff:{type:"number",get:(e,t,n)=>{var r;return null===(r=Te(e,0,n))||void 0===r?void 0:r.alphaCutOff},set:(e,t,n,r)=>{const s=Te(t,0,r);s&&(s.alphaCutOff=e)},getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"alphaCutOff"]},emissiveFactor:{type:"Color3",get:(e,t,n)=>Te(e,0,n).emissiveColor,set:(e,t,n,r)=>Te(t,0,r).emissiveColor.copyFrom(e),getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"emissiveColor"]},emissiveTexture:{extensions:{KHR_texture_transform:Ce("emissiveTexture")}},normalTexture:{scale:{type:"number",get:(e,t,n)=>{var r;return null===(r=ye(e,0,"bumpTexture"))||void 0===r?void 0:r.level},set:(e,t,n,r)=>{const s=ye(t,0,"bumpTexture");s&&(s.level=e)},getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"level"]},extensions:{KHR_texture_transform:Ce("bumpTexture")}},occlusionTexture:{strength:{type:"number",get:(e,t,n)=>Te(e,0,n).ambientTextureStrength,set:(e,t,n,r)=>{const s=Te(t,0,r);s&&(s.ambientTextureStrength=e)},getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"ambientTextureStrength"]},extensions:{KHR_texture_transform:Ce("ambientTexture")}},pbrMetallicRoughness:{baseColorFactor:{type:"Color4",get:(e,n,r)=>{const s=Te(e,0,r);return t.Color4.FromColor3(s.albedoColor,s.alpha)},set:(e,t,n,r)=>{const s=Te(t,0,r);s.albedoColor.set(e.r,e.g,e.b),s.alpha=e.a},getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"albedoColor",()=>"alpha"]},baseColorTexture:{extensions:{KHR_texture_transform:Ce("albedoTexture")}},metallicFactor:{type:"number",get:(e,t,n)=>Te(e,0,n).metallic,set:(e,t,n,r)=>{const s=Te(t,0,r);s&&(s.metallic=e)},getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"metallic"]},roughnessFactor:{type:"number",get:(e,t,n)=>Te(e,0,n).roughness,set:(e,t,n,r)=>{const s=Te(t,0,r);s&&(s.roughness=e)},getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"roughness"]},metallicRoughnessTexture:{extensions:{KHR_texture_transform:Ce("metallicTexture")}}},extensions:{KHR_materials_anisotropy:{anisotropyStrength:{type:"number",get:(e,t,n)=>{var r,s;return null===(s=null===(r=Te(e,0,n))||void 0===r?void 0:r.anisotropy)||void 0===s?void 0:s.intensity},set:(e,t,n,r)=>{const s=Te(t,0,r);s&&(s.anisotropy.intensity=e)},getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"anisotropy.intensity"]},anisotropyRotation:{type:"number",get:(e,t,n)=>{var r,s;return null===(s=null===(r=Te(e,0,n))||void 0===r?void 0:r.anisotropy)||void 0===s?void 0:s.angle},set:(e,t,n,r)=>{const s=Te(t,0,r);s&&(s.anisotropy.angle=e)},getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"anisotropy.angle"]},anisotropyTexture:{extensions:{KHR_texture_transform:Ce("anisotropy","texture")}}},KHR_materials_clearcoat:{clearcoatFactor:{type:"number",get:(e,t,n)=>Te(e,0,n).clearCoat.intensity,set:(e,t,n,r)=>{Te(t,0,r).clearCoat.intensity=e},getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"clearCoat.intensity"]},clearcoatRoughnessFactor:{type:"number",get:(e,t,n)=>Te(e,0,n).clearCoat.roughness,set:(e,t,n,r)=>{Te(t,0,r).clearCoat.roughness=e},getTarget:(e,t,n)=>Te(e,0,n),getPropertyName:[()=>"clearCoat.roughness"]},clearcoatTexture:{extensions:{KHR_texture_transform:Ce("clearCoat","texture")}},clearcoatNormalTexture:{scale:{type:"number",get:(e,t,n)=>{var r;return null===(r=Te(e,0,n).clearCoat.bumpTexture)||void 0===r?void 0:r.level},getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).clearCoat.bumpTexture.level=e},extensions:{KHR_texture_transform:Ce("clearCoat","bumpTexture")}},clearcoatRoughnessTexture:{extensions:{KHR_texture_transform:Ce("clearCoat","textureRoughness")}}},KHR_materials_dispersion:{dispersion:{type:"number",get:(e,t,n)=>Te(e,0,n).subSurface.dispersion,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).subSurface.dispersion=e}},KHR_materials_emissive_strength:{emissiveStrength:{type:"number",get:(e,t,n)=>Te(e,0,n).emissiveIntensity,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).emissiveIntensity=e}},KHR_materials_ior:{ior:{type:"number",get:(e,t,n)=>Te(e,0,n).indexOfRefraction,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).indexOfRefraction=e}},KHR_materials_iridescence:{iridescenceFactor:{type:"number",get:(e,t,n)=>Te(e,0,n).iridescence.intensity,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).iridescence.intensity=e},iridescenceIor:{type:"number",get:(e,t,n)=>Te(e,0,n).iridescence.indexOfRefraction,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).iridescence.indexOfRefraction=e},iridescenceTexture:{extensions:{KHR_texture_transform:Ce("iridescence","texture")}},iridescenceThicknessMaximum:{type:"number",get:(e,t,n)=>Te(e,0,n).iridescence.maximumThickness,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).iridescence.maximumThickness=e},iridescenceThicknessMinimum:{type:"number",get:(e,t,n)=>Te(e,0,n).iridescence.minimumThickness,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).iridescence.minimumThickness=e},iridescenceThicknessTexture:{extensions:{KHR_texture_transform:Ce("iridescence","thicknessTexture")}}},KHR_materials_sheen:{sheenColorFactor:{type:"Color3",get:(e,t,n)=>Te(e,0,n).sheen.color,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).sheen.color.copyFrom(e)},sheenColorTexture:{extensions:{KHR_texture_transform:Ce("sheen","texture")}},sheenRoughnessFactor:{type:"number",get:(e,t,n)=>Te(e,0,n).sheen.intensity,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).sheen.intensity=e},sheenRoughnessTexture:{extensions:{KHR_texture_transform:Ce("sheen","textureRoughness")}}},KHR_materials_specular:{specularFactor:{type:"number",get:(e,t,n)=>Te(e,0,n).metallicF0Factor,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).metallicF0Factor=e,getPropertyName:[()=>"metallicF0Factor"]},specularColorFactor:{type:"Color3",get:(e,t,n)=>Te(e,0,n).metallicReflectanceColor,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).metallicReflectanceColor.copyFrom(e),getPropertyName:[()=>"metallicReflectanceColor"]},specularTexture:{extensions:{KHR_texture_transform:Ce("metallicReflectanceTexture")}},specularColorTexture:{extensions:{KHR_texture_transform:Ce("reflectanceTexture")}}},KHR_materials_transmission:{transmissionFactor:{type:"number",get:(e,t,n)=>Te(e,0,n).subSurface.refractionIntensity,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).subSurface.refractionIntensity=e,getPropertyName:[()=>"subSurface.refractionIntensity"]},transmissionTexture:{extensions:{KHR_texture_transform:Ce("subSurface","refractionIntensityTexture",{extensionKey:"KHR_materials_transmission",texturePath:["transmissionTexture"]})}}},KHR_materials_diffuse_transmission:{diffuseTransmissionFactor:{type:"number",get:(e,t,n)=>Te(e,0,n).subSurface.translucencyIntensity,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).subSurface.translucencyIntensity=e},diffuseTransmissionTexture:{extensions:{KHR_texture_transform:Ce("subSurface","translucencyIntensityTexture",{extensionKey:"KHR_materials_diffuse_transmission",texturePath:["diffuseTransmissionTexture"]})}},diffuseTransmissionColorFactor:{type:"Color3",get:(e,t,n)=>Te(e,0,n).subSurface.translucencyColor,getTarget:Te,set:(e,t,n,r)=>{var s;return e&&(null===(s=Te(t,0,r).subSurface.translucencyColor)||void 0===s?void 0:s.copyFrom(e))}},diffuseTransmissionColorTexture:{extensions:{KHR_texture_transform:Ce("subSurface","translucencyColorTexture",{extensionKey:"KHR_materials_diffuse_transmission",texturePath:["diffuseTransmissionColorTexture"]})}}},KHR_materials_volume:{attenuationColor:{type:"Color3",get:(e,t,n)=>Te(e,0,n).subSurface.tintColor,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).subSurface.tintColor.copyFrom(e)},attenuationDistance:{type:"number",get:(e,t,n)=>Te(e,0,n).subSurface.tintColorAtDistance,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).subSurface.tintColorAtDistance=e},thicknessFactor:{type:"number",get:(e,t,n)=>Te(e,0,n).subSurface.maximumThickness,getTarget:Te,set:(e,t,n,r)=>Te(t,0,r).subSurface.maximumThickness=e},thicknessTexture:{extensions:{KHR_texture_transform:Ce("subSurface","thicknessTexture",{extensionKey:"KHR_materials_volume",texturePath:["thicknessTexture"]})}}}}}},extensions:{KHR_lights_punctual:{lights:{length:pe(e=>e.length,e=>e.map(e=>e._babylonLight)),__array__:{__target__:!0,color:{type:"Color3",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.diffuse},set:(e,t)=>{var n;return null===(n=t._babylonLight)||void 0===n?void 0:n.diffuse.copyFrom(e)},getTarget:e=>e._babylonLight,getPropertyName:[e=>"diffuse"]},intensity:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.intensity},set:(e,t)=>t._babylonLight?t._babylonLight.intensity=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"intensity"]},range:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.range},set:(e,t)=>t._babylonLight?t._babylonLight.range=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"range"]},spot:{innerConeAngle:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.innerAngle},set:(e,t)=>t._babylonLight?t._babylonLight.innerAngle=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"innerConeAngle"]},outerConeAngle:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.angle},set:(e,t)=>t._babylonLight?t._babylonLight.angle=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"outerConeAngle"]}}}}},EXT_lights_area:{lights:{length:pe(e=>e.length,e=>e.map(e=>e._babylonLight)),__array__:{__target__:!0,color:{type:"Color3",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.diffuse},set:(e,t)=>{var n;return null===(n=t._babylonLight)||void 0===n?void 0:n.diffuse.copyFrom(e)},getTarget:e=>e._babylonLight,getPropertyName:[e=>"diffuse"]},intensity:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.intensity},set:(e,t)=>t._babylonLight?t._babylonLight.intensity=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"intensity"]},size:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.height},set:(e,t)=>t._babylonLight?t._babylonLight.height=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"size"]},rect:{aspect:{type:"number",get:e=>{var t,n;return(null===(t=e._babylonLight)||void 0===t?void 0:t.width)/(null===(n=e._babylonLight)||void 0===n?void 0:n.height)},set:(e,t)=>t._babylonLight?t._babylonLight.width=e*t._babylonLight.height:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"aspect"]}}}}},EXT_lights_ies:{lights:{length:pe(e=>e.length,e=>e.map(e=>e._babylonLight))}},EXT_lights_image_based:{lights:{length:pe(e=>e.length,e=>e.map(e=>e._babylonTexture)),__array__:{__target__:!0,intensity:{type:"number",get:e=>{var t;return null===(t=e._babylonTexture)||void 0===t?void 0:t.level},set:(e,t)=>{t._babylonTexture&&(t._babylonTexture.level=e)},getTarget:e=>e._babylonTexture},rotation:{type:"Quaternion",get:e=>{var n;return e._babylonTexture&&t.Quaternion.FromRotationMatrix(null===(n=e._babylonTexture)||void 0===n?void 0:n.getReflectionTextureMatrix())},set:(e,n)=>{var r;n._babylonTexture&&((null===(r=n._babylonTexture.getScene())||void 0===r?void 0:r.useRightHandedSystem)||(e=t.Quaternion.Inverse(e)),t.Matrix.FromQuaternionToRef(e,n._babylonTexture.getReflectionTextureMatrix()))},getTarget:e=>e._babylonTexture}}}}},animations:ge,meshes:be,scenes:{length:pe(e=>e.length,e=>e),__array__:{__target__:!0,nodes:{length:pe(e=>{var t;return null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0},e=>null!=e?e:[]),__array__:{__target__:!0,type:"string",get:e=>"number"==typeof e?`/nodes/${e}`:"",getTarget:()=>({__nodeIndex:!0}),isReadOnly:!0}}}},skins:{length:pe(e=>e.length,e=>e.map(e=>{var t;return null===(t=e._data)||void 0===t?void 0:t.babylonSkeleton})),__array__:{__target__:!0,joints:{length:pe(e=>{var t;return null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0},e=>null!=e?e:[]),__array__:{__target__:!0,type:"string",get:e=>"number"==typeof e?`/nodes/${e}`:"",getTarget:()=>({__nodeIndex:!0}),isReadOnly:!0}},skeleton:{type:"string",get:e=>{const t=e.skeleton;return"number"==typeof t?`/nodes/${t}`:""},getTarget:e=>e,isReadOnly:!0}}}};function we(e){return new _e(e,Re)}function Me(e){const t=e.split("/").map(e=>e.replace(/{}/g,"__array__"));let n=Re;for(const e of t)e&&(n=n[e]);if(n&&n.type&&n.get)return n}function Oe(e,t){const n=e.split("/").map(e=>e.replace(/{}/g,"__array__"));let r=Re;for(const e of n)e&&(r=r[e]);r&&r.type&&r.get&&(r.interpolation=t)}function Ee(e,t){const n=e.split("/").map(e=>e.replace(/{}/g,"__array__"));let r=Re;for(const e of n)if(e){if(!r[e]){if("?"===e){r.__ignoreObjectTree__=!0;continue}r[e]={},"__array__"===e&&(r[e].__target__=!0)}r=r[e]}Object.assign(r,t)}const Le=new Map,Se=Le;function Fe(e,n,r){Ie(e)&&t.Logger.Warn(`Extension with the name '${e}' already exists`),Le.set(e,{isGLTFExtension:n,factory:r})}function Ie(e){return Le.delete(e)}const Ne=new t.Lazy(()=>Promise.resolve(BABYLON)),ke=new t.Lazy(()=>Promise.resolve().then(function(){return Rr}));class Pe{static Get(e,t,n){if(!t||null==n||!t[n])throw new Error(`${e}: Failed to find index (${n})`);return t[n]}static TryGet(e,t){return e&&null!=t&&e[t]?e[t]:null}static Assign(e){if(e)for(let t=0;t<e.length;t++)e[t].index=t}}function Be(e){if(e.min&&e.max){const n=e.min,r=e.max,s=t.TmpVectors.Vector3[0].copyFromFloats(n[0],n[1],n[2]),o=t.TmpVectors.Vector3[1].copyFromFloats(r[0],r[1],r[2]);if(e.normalized&&5126!==e.componentType){let t=1;switch(e.componentType){case 5120:t=127;break;case 5121:t=255;break;case 5122:t=32767;break;case 5123:t=65535}const n=1/t;s.scaleInPlace(n),o.scaleInPlace(n)}return new t.BoundingInfo(s,o)}return null}class Ge{isMatchingMaterialType(e){if(!e)return!1;const t=Array.from(this._pbrMaterialImpls.values());for(const n of t)if(e instanceof n.materialClass)return!0;return!1}static RegisterExtension(e,t){Fe(e,!1,t)}static UnregisterExtension(e){return Ie(e)}get gltf(){if(!this._gltf)throw new Error("glTF JSON is not available");return this._gltf}get bin(){return this._bin}get parent(){return this._parent}get babylonScene(){if(!this._babylonScene)throw new Error("Scene is not available");return this._babylonScene}get rootBabylonMesh(){return this._rootBabylonMesh}get rootUrl(){return this._rootUrl}constructor(e){this._completePromises=new Array,this._assetContainer=null,this._babylonLights=[],this._disableInstancedMesh=0,this._allMaterialsDirtyRequired=!1,this._skipStartAnimationStep=!1,this._extensions=new Array,this._disposed=!1,this._rootUrl=null,this._fileName=null,this._uniqueRootUrl=null,this._bin=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions=new Array,this._materialAdapterCache=new WeakMap,this._materialAdapters=new Set,this._pbrMaterialImpls=new Map,this._parent=e}_getOrCreateMaterialAdapter(e){let t=this._materialAdapterCache.get(e);if(!t){const n=Array.from(this._pbrMaterialImpls.values());for(const r of n)if(e instanceof r.materialClass){t=new r.adapterClass(e);break}if(!t)throw new Error("Appropriate material adapter class not found");const r=t;this._materialAdapterCache.set(e,r),this._materialAdapters.add(r)}return t}dispose(){this._disposed||(this._disposed=!0,this._completePromises.length=0,this._extensions.forEach(e=>e.dispose&&e.dispose()),this._extensions.length=0,this._materialAdapters.clear(),this._gltf=null,this._bin=null,this._babylonScene=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions.length=0,this._parent.dispose())}importMeshAsync(e,t,n,r,s,o){return A(this,arguments,void 0,function*(e,t,n,r,s,o,a=""){return yield Promise.resolve().then(()=>A(this,void 0,void 0,function*(){this._babylonScene=t,this._assetContainer=n,this._loadData(r);let o=null;if(e){const t={};if(this._gltf.nodes)for(const e of this._gltf.nodes)e.name&&(t[e.name]=e.index);o=(e instanceof Array?e:[e]).map(e=>{const n=t[e];if(void 0===n)throw new Error(`Failed to find node '${e}'`);return n})}return yield this._loadAsync(s,a,o,()=>({meshes:this._getMeshes(),particleSystems:[],skeletons:this._getSkeletons(),animationGroups:this._getAnimationGroups(),lights:this._babylonLights,transformNodes:this._getTransformNodes(),geometries:this._getGeometries(),spriteManagers:[]}))}))})}loadAsync(e,t,n,r){return A(this,arguments,void 0,function*(e,t,n,r,s=""){return this._babylonScene=e,this._loadData(t),yield this._loadAsync(n,s,null,()=>{})})}_loadAsync(n,r,s,o){return A(this,void 0,void 0,function*(){return yield Promise.resolve().then(()=>A(this,void 0,void 0,function*(){var a;if(this._rootUrl=n,this._uniqueRootUrl=!n.startsWith("file:")&&r?n:`${n}${t.RandomGUID()}/`,this._fileName=r,this._allMaterialsDirtyRequired=!1,yield this._loadExtensionsAsync(),!this.parent.skipMaterials){const e=this.parent.useOpenPBR||this.isExtensionUsed("KHR_materials_openpbr");let t=!1;this.parent.useOpenPBR?(null===(a=this._gltf.materials)||void 0===a?void 0:a.length)&&this._gltf.materials.some(e=>{var t;return!(null===(t=e.extensions)||void 0===t?void 0:t.KHR_materials_openpbr)})&&(t=!0):t=!0;const n=[];e&&!this._pbrMaterialImpls.has("openpbr")&&n.push(Promise.all([Promise.resolve(BABYLON),Promise.resolve().then(function(){return ao})]).then(([{OpenPBRMaterial:e,RegisterOpenpbrMaterial:t},{OpenPBRMaterialLoadingAdapter:n}])=>{t(),this._pbrMaterialImpls.set("openpbr",{materialClass:e,adapterClass:n})})),t&&!this._pbrMaterialImpls.has("pbr")&&n.push(Promise.all([Promise.resolve(BABYLON),Promise.resolve().then(function(){return lo})]).then(([{PBRMaterial:e,RegisterPbrMaterial:t},{PBRMaterialLoadingAdapter:n}])=>{t(),this._pbrMaterialImpls.set("pbr",{materialClass:e,adapterClass:n})})),yield Promise.all(n)}const i=`${e.GLTFLoaderState[e.GLTFLoaderState.LOADING]} => ${e.GLTFLoaderState[e.GLTFLoaderState.READY]}`,l=`${e.GLTFLoaderState[e.GLTFLoaderState.LOADING]} => ${e.GLTFLoaderState[e.GLTFLoaderState.COMPLETE]}`;this._parent._startPerformanceCounter(i),this._parent._startPerformanceCounter(l),this._parent._setState(e.GLTFLoaderState.LOADING),this._extensionsOnLoading();const u=new Array,c=this._babylonScene.blockMaterialDirtyMechanism;if(this._babylonScene.blockMaterialDirtyMechanism=!0,!this.parent.loadOnlyMaterials)if(s)u.push(this.loadSceneAsync("/nodes",{nodes:s,index:-1}));else if(null!=this._gltf.scene||this._gltf.scenes&&this._gltf.scenes[0]){const e=Pe.Get("/scene",this._gltf.scenes,this._gltf.scene||0);u.push(this.loadSceneAsync(`/scenes/${e.index}`,e))}if(!this.parent.skipMaterials&&this.parent.loadAllMaterials&&this._gltf.materials)for(let e=0;e<this._gltf.materials.length;++e){const n=this._gltf.materials[e],r="/materials/"+e,s=t.Material.TriangleFillMode;u.push(this._loadMaterialAsync(r,n,null,s,()=>{}))}this._allMaterialsDirtyRequired?this._babylonScene.blockMaterialDirtyMechanism=c:this._babylonScene._forceBlockMaterialDirtyMechanism(c),this._parent.compileMaterials&&u.push(this._compileMaterialsAsync()),this._parent.compileShadowGenerators&&u.push(this._compileShadowGeneratorsAsync());const h=Promise.all(u).then(()=>{this._rootBabylonMesh&&this._rootBabylonMesh!==this._parent.customRootNode&&this._rootBabylonMesh.setEnabled(!0);for(const e of this._babylonScene.materials){const t=e;void 0!==t.maxSimultaneousLights&&(t.maxSimultaneousLights=Math.max(t.maxSimultaneousLights,this._babylonScene.lights.length))}for(const e of Array.from(this._materialAdapters))this._completePromises.push(e.finalizeAsync(this));return this._extensionsOnReady(),this._parent._setState(e.GLTFLoaderState.READY),this._skipStartAnimationStep||this._startAnimations(),o()});return yield h.then(n=>(this._parent._endPerformanceCounter(i),t.Tools.SetImmediate(()=>{this._disposed||Promise.all(this._completePromises).then(()=>{this._parent._endPerformanceCounter(l),this._parent._setState(e.GLTFLoaderState.COMPLETE),this._parent.onCompleteObservable.notifyObservers(void 0),this._parent.onCompleteObservable.clear(),this.dispose()},e=>{this._parent.onErrorObservable.notifyObservers(e),this._parent.onErrorObservable.clear(),this.dispose()})}),n))})).catch(e=>{throw this._disposed||(this._parent.onErrorObservable.notifyObservers(e),this._parent.onErrorObservable.clear(),this.dispose()),e})})}_loadData(e){if(this._gltf=e.json,this._setupData(),e.bin){const n=this._gltf.buffers;if(n&&n[0]&&!n[0].uri){const r=n[0];(r.byteLength<e.bin.byteLength-3||r.byteLength>e.bin.byteLength)&&t.Logger.Warn(`Binary buffer length (${r.byteLength}) from JSON does not match chunk length (${e.bin.byteLength})`),this._bin=e.bin}else t.Logger.Warn("Unexpected BIN chunk")}}_setupData(){if(Pe.Assign(this._gltf.accessors),Pe.Assign(this._gltf.animations),Pe.Assign(this._gltf.buffers),Pe.Assign(this._gltf.bufferViews),Pe.Assign(this._gltf.cameras),Pe.Assign(this._gltf.images),Pe.Assign(this._gltf.materials),Pe.Assign(this._gltf.meshes),Pe.Assign(this._gltf.nodes),Pe.Assign(this._gltf.samplers),Pe.Assign(this._gltf.scenes),Pe.Assign(this._gltf.skins),Pe.Assign(this._gltf.textures),this._gltf.nodes){const e={};for(const t of this._gltf.nodes)if(t.children)for(const n of t.children)e[n]=t.index;const t=this._createRootNode();for(const n of this._gltf.nodes){const r=e[n.index];n.parent=void 0===r?t:this._gltf.nodes[r]}}}_loadExtensionsAsync(){return A(this,void 0,void 0,function*(){var e;const n=[];if(Se.forEach((e,r)=>{var s;!1===(null===(s=this.parent.extensionOptions[r])||void 0===s?void 0:s.enabled)?e.isGLTFExtension&&this.isExtensionUsed(r)&&t.Logger.Warn(`Extension ${r} is used but has been explicitly disabled.`):e.isGLTFExtension&&!this.isExtensionUsed(r)||n.push((()=>A(this,void 0,void 0,function*(){const n=yield e.factory(this);return n.name!==r&&t.Logger.Warn(`The name of the glTF loader extension instance does not match the registered name: ${n.name} !== ${r}`),this._parent.onExtensionLoadedObservable.notifyObservers(n),n}))())}),this._extensions.push(...yield Promise.all(n)),this._extensions.sort((e,t)=>(e.order||Number.MAX_VALUE)-(t.order||Number.MAX_VALUE)),this._parent.onExtensionLoadedObservable.clear(),this._gltf.extensionsRequired)for(const t of this._gltf.extensionsRequired)if(!this._extensions.some(e=>e.name===t&&e.enabled)){if(!1===(null===(e=this.parent.extensionOptions[t])||void 0===e?void 0:e.enabled))throw new Error(`Required extension ${t} is disabled`);throw new Error(`Required extension ${t} is not available`)}})}_createRootNode(){if(void 0!==this._parent.customRootNode)return this._rootBabylonMesh=this._parent.customRootNode,{_babylonTransformNode:null===this._rootBabylonMesh?void 0:this._rootBabylonMesh,index:-1};this._babylonScene._blockEntityCollection=!!this._assetContainer;const n=new t.Mesh("__root__",this._babylonScene);this._rootBabylonMesh=n,this._rootBabylonMesh._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._rootBabylonMesh.setEnabled(!1);const r={_babylonTransformNode:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case e.GLTFLoaderCoordinateSystemMode.AUTO:this._babylonScene.useRightHandedSystem||(r.rotation=[0,1,0,0],r.scale=[1,1,-1],Ge._LoadTransform(r,this._rootBabylonMesh));break;case e.GLTFLoaderCoordinateSystemMode.FORCE_RIGHT_HANDED:this._babylonScene.useRightHandedSystem=!0;break;default:throw new Error(`Invalid coordinate system mode (${this._parent.coordinateSystemMode})`)}return this._parent.onMeshLoadedObservable.notifyObservers(n),r}loadSceneAsync(e,t){const n=this._extensionsLoadSceneAsync(e,t);if(n)return n;const r=new Array;if(this.logOpen(`${e} ${t.name||""}`),t.nodes)for(const n of t.nodes){const t=Pe.Get(`${e}/nodes/${n}`,this._gltf.nodes,n);r.push(this.loadNodeAsync(`/nodes/${t.index}`,t,e=>{e.parent=this._rootBabylonMesh}))}for(const e of this._postSceneLoadActions)e();return r.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(r).then(()=>{})}_forEachPrimitive(e,t){if(e._primitiveBabylonMeshes)for(const n of e._primitiveBabylonMeshes)t(n)}_getGeometries(){const e=[],t=this._gltf.nodes;if(t)for(const n of t)this._forEachPrimitive(n,t=>{const n=t.geometry;n&&-1===e.indexOf(n)&&e.push(n)});return e}_getMeshes(){const e=[];this._rootBabylonMesh instanceof t.AbstractMesh&&e.push(this._rootBabylonMesh);const n=this._gltf.nodes;if(n)for(const t of n)this._forEachPrimitive(t,t=>{e.push(t)});return e}_getTransformNodes(){const e=[],t=this._gltf.nodes;if(t)for(const n of t)n._babylonTransformNode&&"TransformNode"===n._babylonTransformNode.getClassName()&&e.push(n._babylonTransformNode),n._babylonTransformNodeForSkin&&e.push(n._babylonTransformNodeForSkin);return e}_getSkeletons(){const e=[],t=this._gltf.skins;if(t)for(const n of t)n._data&&e.push(n._data.babylonSkeleton);return e}_getAnimationGroups(){const e=[],t=this._gltf.animations;if(t)for(const n of t)n._babylonAnimationGroup&&e.push(n._babylonAnimationGroup);return e}_startAnimations(){switch(this._parent.animationStartMode){case e.GLTFLoaderAnimationStartMode.NONE:break;case e.GLTFLoaderAnimationStartMode.FIRST:{const e=this._getAnimationGroups();0!==e.length&&e[0].start(!0);break}case e.GLTFLoaderAnimationStartMode.ALL:{const e=this._getAnimationGroups();for(const t of e)t.start(!0);break}default:return void t.Logger.Error(`Invalid animation start mode (${this._parent.animationStartMode})`)}}loadNodeAsync(e,n,r=()=>{}){const s=this._extensionsLoadNodeAsync(e,n,r);if(s)return s;if(n._babylonTransformNode)throw new Error(`${e}: Invalid recursive node hierarchy`);const o=new Array;this.logOpen(`${e} ${n.name||""}`);const a=t=>{if(Ge.AddPointerMetadata(t,e),Ge._LoadTransform(n,t),null!=n.camera){const r=Pe.Get(`${e}/camera`,this._gltf.cameras,n.camera);o.push(this.loadCameraAsync(`/cameras/${r.index}`,r,e=>{e.parent=t,this._babylonScene.useRightHandedSystem||(t.scaling.x=-1)}))}if(n.children)for(const r of n.children){const n=Pe.Get(`${e}/children/${r}`,this._gltf.nodes,r);o.push(this.loadNodeAsync(`/nodes/${n.index}`,n,e=>{e.parent=t}))}r(t)},i=null!=n.mesh,l=this._parent.loadSkins&&null!=n.skin;if(!i||l){const e=n.name||`node${n.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;const r=new t.TransformNode(e,this._babylonScene);r._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,null==n.mesh?n._babylonTransformNode=r:n._babylonTransformNodeForSkin=r,a(r)}if(i)if(l){const r=Pe.Get(`${e}/mesh`,this._gltf.meshes,n.mesh);o.push(this._loadMeshAsync(`/meshes/${r.index}`,n,r,r=>{const s=n._babylonTransformNodeForSkin;r.metadata=t.deepMerge(s.metadata,r.metadata||{});const a=Pe.Get(`${e}/skin`,this._gltf.skins,n.skin);o.push(this._loadSkinAsync(`/skins/${a.index}`,n,a,e=>{this._forEachPrimitive(n,t=>{t.skeleton=e}),this._postSceneLoadActions.push(()=>{if(null!=a.skeleton){const e=Pe.Get(`/skins/${a.index}/skeleton`,this._gltf.nodes,a.skeleton).parent;n.index===e.index?r.parent=s.parent:r.parent=e._babylonTransformNode}else r.parent=this._rootBabylonMesh;this._parent.onSkinLoadedObservable.notifyObservers({node:s,skinnedNode:r})})}))}))}else{const t=Pe.Get(`${e}/mesh`,this._gltf.meshes,n.mesh);o.push(this._loadMeshAsync(`/meshes/${t.index}`,n,t,a))}return this.logClose(),Promise.all(o).then(()=>(this._forEachPrimitive(n,e=>{const t=e;!t.isAnInstance&&t.geometry&&t.geometry.useBoundingInfoFromGeometry?e._updateBoundingInfo():e.refreshBoundingInfo(!0,!0)}),n._babylonTransformNode))}_loadMeshAsync(e,n,r,s){const o=r.primitives;if(!o||!o.length)throw new Error(`${e}: Primitives are missing`);null==o[0].index&&Pe.Assign(o);const a=new Array;this.logOpen(`${e} ${r.name||""}`);const i=n.name||`node${n.index}`;if(1===o.length){const t=r.primitives[0];a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${t.index}`,i,n,r,t,e=>{n._babylonTransformNode=e,n._primitiveBabylonMeshes=[e]}))}else{this._babylonScene._blockEntityCollection=!!this._assetContainer,n._babylonTransformNode=new t.TransformNode(i,this._babylonScene),n._babylonTransformNode._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,n._primitiveBabylonMeshes=[];for(const t of o)a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${t.index}`,`${i}_primitive${t.index}`,n,r,t,e=>{e.parent=n._babylonTransformNode,n._primitiveBabylonMeshes.push(e)}))}return s(n._babylonTransformNode),this.logClose(),Promise.all(a).then(()=>n._babylonTransformNode)}_loadMeshPrimitiveAsync(e,n,r,s,o,a){const i=this._extensionsLoadMeshPrimitiveAsync(e,n,r,s,o,a);if(i)return i;this.logOpen(`${e}`);const l=0===this._disableInstancedMesh&&this._parent.createInstances&&null==r.skin&&!s.primitives[0].targets;let u,c;if(l&&o._instanceData)this._babylonScene._blockEntityCollection=!!this._assetContainer,u=o._instanceData.babylonSourceMesh.createInstance(n),u._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,c=o._instanceData.promise;else{const a=new Array;this._babylonScene._blockEntityCollection=!!this._assetContainer;const i=new t.Mesh(n,this._babylonScene);if(i._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,i.sideOrientation=this._babylonScene.useRightHandedSystem?t.Material.CounterClockWiseSideOrientation:t.Material.ClockWiseSideOrientation,this._createMorphTargets(e,r,s,o,i),a.push(this._loadVertexDataAsync(e,o,i).then(t=>A(this,void 0,void 0,function*(){return yield this._loadMorphTargetsAsync(e,o,i,t).then(()=>{this._disposed||(this._babylonScene._blockEntityCollection=!!this._assetContainer,t.applyToMesh(i),t._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1)})}))),!this.parent.skipMaterials){const t=Ge._GetDrawMode(e,o.mode);if(null==o.material){let e=this._defaultBabylonMaterialData[t];e||(e=this._createDefaultMaterial("__GLTFLoader._default",t,this._getDefaultImpl()),this._parent.onMaterialLoadedObservable.notifyObservers(e),this._defaultBabylonMaterialData[t]=e),i.material=e}else{const n=Pe.Get(`${e}/material`,this._gltf.materials,o.material);a.push(this._loadMaterialAsync(`/materials/${n.index}`,n,i,t,e=>{i.material=e}))}}c=Promise.all(a),l&&(o._instanceData={babylonSourceMesh:i,promise:c}),u=i}return Ge.AddPointerMetadata(u,e),this._parent.onMeshLoadedObservable.notifyObservers(u),a(u),this.logClose(),c.then(()=>u)}_loadVertexDataAsync(e,n,r){const s=this._extensionsLoadVertexDataAsync(e,n,r);if(s)return s;const o=n.attributes;if(!o)throw new Error(`${e}: Attributes are missing`);const a=new Array,i=new t.Geometry(r.name,this._babylonScene);if(null==n.indices)r.isUnIndexed=!0;else{const t=Pe.Get(`${e}/indices`,this._gltf.accessors,n.indices);a.push(this._loadIndicesAccessorAsync(`/accessors/${t.index}`,t).then(e=>{i.setIndices(e)}))}const l=(n,s,l)=>{if(null==o[n])return;r._delayInfo=r._delayInfo||[],-1===r._delayInfo.indexOf(s)&&r._delayInfo.push(s);const u=Pe.Get(`${e}/attributes/${n}`,this._gltf.accessors,o[n]);a.push(this._loadVertexAccessorAsync(`/accessors/${u.index}`,u,s).then(e=>{if(e.getKind()===t.VertexBuffer.PositionKind&&!this.parent.alwaysComputeBoundingBox&&!r.skeleton){const e=Be(u);e&&(i._boundingInfo=e,i.useBoundingInfoFromGeometry=!0)}i.setVerticesBuffer(e,u.count)})),s==t.VertexBuffer.MatricesIndicesExtraKind&&(r.numBoneInfluencers=8),l&&l(u)};return l("POSITION",t.VertexBuffer.PositionKind),l("NORMAL",t.VertexBuffer.NormalKind),l("TANGENT",t.VertexBuffer.TangentKind),l("TEXCOORD_0",t.VertexBuffer.UVKind),l("TEXCOORD_1",t.VertexBuffer.UV2Kind),l("TEXCOORD_2",t.VertexBuffer.UV3Kind),l("TEXCOORD_3",t.VertexBuffer.UV4Kind),l("TEXCOORD_4",t.VertexBuffer.UV5Kind),l("TEXCOORD_5",t.VertexBuffer.UV6Kind),l("JOINTS_0",t.VertexBuffer.MatricesIndicesKind),l("WEIGHTS_0",t.VertexBuffer.MatricesWeightsKind),l("JOINTS_1",t.VertexBuffer.MatricesIndicesExtraKind),l("WEIGHTS_1",t.VertexBuffer.MatricesWeightsExtraKind),l("COLOR_0",t.VertexBuffer.ColorKind,e=>{"VEC4"===e.type&&(r.hasVertexAlpha=!0)}),Promise.all(a).then(()=>i)}_createMorphTargets(e,n,r,s,o){if(!s.targets||!this._parent.loadMorphTargets)return;if(null==n._numMorphTargets)n._numMorphTargets=s.targets.length;else if(s.targets.length!==n._numMorphTargets)throw new Error(`${e}: Primitives do not have the same number of targets`);const a=r.extras?r.extras.targetNames:null;this._babylonScene._blockEntityCollection=!!this._assetContainer,o.morphTargetManager=new t.MorphTargetManager(this._babylonScene),o.morphTargetManager._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,o.morphTargetManager.areUpdatesFrozen=!0;for(let e=0;e<s.targets.length;e++){const s=n.weights?n.weights[e]:r.weights?r.weights[e]:0,i=a?a[e]:`morphTarget${e}`;o.morphTargetManager.addTarget(new t.MorphTarget(i,s,o.getScene()))}}_loadMorphTargetsAsync(e,n,r,s){if(!n.targets||!this._parent.loadMorphTargets)return Promise.resolve();const o=new Array,a=r.morphTargetManager;for(let t=0;t<a.numTargets;t++){const r=a.getTarget(t);o.push(this._loadMorphTargetVertexDataAsync(`${e}/targets/${t}`,s,n.targets[t],r))}return Promise.all(o).then(()=>{a.areUpdatesFrozen=!1,this._parent.useMaxMorphTargetInfluencers&&(a.isUsingTextureForTargets||a.numTargets<=t.MorphTargetManager.MaxActiveMorphTargetsInVertexAttributeMode)&&(a.optimizeInfluencers=!1,a.numMaxInfluencers=a.numTargets)})}_loadMorphTargetVertexDataAsync(e,n,r,s){return A(this,void 0,void 0,function*(){const o=new Array,a=(t,s,a)=>{if(null==r[t])return;const i=n.getVertexBuffer(s);if(!i)return;const l=Pe.Get(`${e}/${t}`,this._gltf.accessors,r[t]);o.push(this._loadFloatAccessorAsync(`/accessors/${l.index}`,l).then(e=>{a(i,e)}))};return a("POSITION",t.VertexBuffer.PositionKind,(e,t)=>{const n=new Float32Array(t.length);e.forEach(t.length,(e,r)=>{n[r]=t[r]+e}),s.setPositions(n)}),a("NORMAL",t.VertexBuffer.NormalKind,(e,t)=>{const n=new Float32Array(t.length);e.forEach(n.length,(e,r)=>{n[r]=t[r]+e}),s.setNormals(n)}),a("TANGENT",t.VertexBuffer.TangentKind,(e,t)=>{const n=new Float32Array(t.length/3*4);let r=0;e.forEach(t.length/3*4,(e,s)=>{(s+1)%4!=0&&(n[r]=t[r]+e,r++)}),s.setTangents(n)}),a("TEXCOORD_0",t.VertexBuffer.UVKind,(e,t)=>{const n=new Float32Array(t.length);e.forEach(t.length,(e,r)=>{n[r]=t[r]+e}),s.setUVs(n)}),a("TEXCOORD_1",t.VertexBuffer.UV2Kind,(e,t)=>{const n=new Float32Array(t.length);e.forEach(t.length,(e,r)=>{n[r]=t[r]+e}),s.setUV2s(n)}),a("COLOR_0",t.VertexBuffer.ColorKind,(t,n)=>{let r=null;const o=t.getSize();if(3===o){r=new Float32Array(n.length/3*4),t.forEach(n.length,(e,t)=>{const s=Math.floor(t/3),o=t%3;r[4*s+o]=n[3*s+o]+e});for(let e=0;e<n.length/3;++e)r[4*e+3]=1}else{if(4!==o)throw new Error(`${e}: Invalid number of components (${o}) for COLOR_0 attribute`);r=new Float32Array(n.length),t.forEach(n.length,(e,t)=>{r[t]=n[t]+e})}s.setColors(r)}),yield Promise.all(o).then(()=>{})})}static _LoadTransform(e,n){if(null!=e.skin)return;let r=t.Vector3.Zero(),s=t.Quaternion.Identity(),o=t.Vector3.One();e.matrix?t.Matrix.FromArray(e.matrix).decompose(o,s,r):(e.translation&&(r=t.Vector3.FromArray(e.translation)),e.rotation&&(s=t.Quaternion.FromArray(e.rotation)),e.scale&&(o=t.Vector3.FromArray(e.scale))),n.position=r,n.rotationQuaternion=s,n.scaling=o}_loadSkinAsync(e,n,r,s){if(!this._parent.loadSkins)return Promise.resolve();const o=this._extensionsLoadSkinAsync(e,n,r);if(o)return o;if(r._data)return s(r._data.babylonSkeleton),r._data.promise;const a=`skeleton${r.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;const i=new t.Skeleton(r.name||a,a,this._babylonScene);i._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._loadBones(e,r,i);const l=this._loadSkinInverseBindMatricesDataAsync(e,r).then(e=>{this._updateBoneMatrices(i,e)});return r._data={babylonSkeleton:i,promise:l},s(i),l}_loadBones(e,n,r){if(null==n.skeleton||this._parent.alwaysComputeSkeletonRootNode){const r=this._findSkeletonRootNode(`${e}/joints`,n.joints);if(r)if(void 0===n.skeleton)n.skeleton=r.index;else{const s=(e,t)=>{for(;t.parent;t=t.parent)if(t.parent===e)return!0;return!1},o=Pe.Get(`${e}/skeleton`,this._gltf.nodes,n.skeleton);o===r||s(o,r)||(t.Logger.Warn(`${e}/skeleton: Overriding with nearest common ancestor as skeleton node is not a common root`),n.skeleton=r.index)}else t.Logger.Warn(`${e}: Failed to find common root`)}const s={};for(const t of n.joints){const o=Pe.Get(`${e}/joints/${t}`,this._gltf.nodes,t);this._loadBone(o,n,r,s)}}_findSkeletonRootNode(e,t){if(0===t.length)return null;const n={};for(const r of t){const t=[];let s=Pe.Get(`${e}/${r}`,this._gltf.nodes,r);for(;-1!==s.index;)t.unshift(s),s=s.parent;n[r]=t}let r=null;for(let e=0;;++e){let s=n[t[0]];if(e>=s.length)return r;const o=s[e];for(let a=1;a<t.length;++a)if(s=n[t[a]],e>=s.length||o!==s[e])return r;r=o}}_loadBone(e,n,r,s){e._isJoint=!0;let o=s[e.index];if(o)return o;let a=null;e.index!==n.skeleton&&(e.parent&&-1!==e.parent.index?a=this._loadBone(e.parent,n,r,s):void 0!==n.skeleton&&t.Logger.Warn(`/skins/${n.index}/skeleton: Skeleton node is not a common root`));const i=n.joints.indexOf(e.index);return o=new t.Bone(e.name||`joint${e.index}`,r,a,this._getNodeMatrix(e),null,null,i),s[e.index]=o,this._postSceneLoadActions.push(()=>{o.linkTransformNode(e._babylonTransformNode)}),o}_loadSkinInverseBindMatricesDataAsync(e,t){if(null==t.inverseBindMatrices)return Promise.resolve(null);const n=Pe.Get(`${e}/inverseBindMatrices`,this._gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync(`/accessors/${n.index}`,n)}_updateBoneMatrices(e,n){for(const r of e.bones){const e=t.Matrix.Identity(),s=r._index;n&&-1!==s&&(t.Matrix.FromArrayToRef(n,16*s,e),e.invertToRef(e));const o=r.getParent();o&&e.multiplyToRef(o.getAbsoluteInverseBindMatrix(),e),r.updateMatrix(e,!1,!1),r._updateAbsoluteBindMatrices(void 0,!1)}}_getNodeMatrix(e){return e.matrix?t.Matrix.FromArray(e.matrix):t.Matrix.Compose(e.scale?t.Vector3.FromArray(e.scale):t.Vector3.One(),e.rotation?t.Quaternion.FromArray(e.rotation):t.Quaternion.Identity(),e.translation?t.Vector3.FromArray(e.translation):t.Vector3.Zero())}loadCameraAsync(e,n,r=()=>{}){const s=this._extensionsLoadCameraAsync(e,n,r);if(s)return s;const o=new Array;this.logOpen(`${e} ${n.name||""}`),this._babylonScene._blockEntityCollection=!!this._assetContainer;const a=new t.FreeCamera(n.name||`camera${n.index}`,t.Vector3.Zero(),this._babylonScene,!1);switch(a._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,n._babylonCamera=a,a.setTarget(new t.Vector3(0,0,-1)),n.type){case"perspective":{const t=n.perspective;if(!t)throw new Error(`${e}: Camera perspective properties are missing`);a.fov=t.yfov,a.minZ=t.znear,a.maxZ=t.zfar||0;break}case"orthographic":if(!n.orthographic)throw new Error(`${e}: Camera orthographic properties are missing`);a.mode=t.Camera.ORTHOGRAPHIC_CAMERA,a.orthoLeft=-n.orthographic.xmag,a.orthoRight=n.orthographic.xmag,a.orthoBottom=-n.orthographic.ymag,a.orthoTop=n.orthographic.ymag,a.minZ=n.orthographic.znear,a.maxZ=n.orthographic.zfar;break;default:throw new Error(`${e}: Invalid camera type (${n.type})`)}return Ge.AddPointerMetadata(a,e),this._parent.onCameraLoadedObservable.notifyObservers(a),r(a),this.logClose(),Promise.all(o).then(()=>a)}_loadAnimationsAsync(){this._parent._startPerformanceCounter("Load animations");const e=this._gltf.animations;if(!e)return Promise.resolve();const t=new Array;for(let n=0;n<e.length;n++){const r=e[n];t.push(this.loadAnimationAsync(`/animations/${r.index}`,r).then(e=>{0===e.targetedAnimations.length&&e.dispose()}))}return Promise.all(t).then(()=>{this._parent._endPerformanceCounter("Load animations")})}loadAnimationAsync(e,t){this._parent._startPerformanceCounter("Load animation");return this._extensionsLoadAnimationAsync(e,t)||Ne.value.then(({AnimationGroup:n})=>{this._babylonScene._blockEntityCollection=!!this._assetContainer;const r=new n(t.name||`animation${t.index}`,this._babylonScene);r._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonAnimationGroup=r;const s=new Array;Pe.Assign(t.channels),Pe.Assign(t.samplers);for(const n of t.channels)s.push(this._loadAnimationChannelAsync(`${e}/channels/${n.index}`,e,t,n,(e,t)=>{e.animations=e.animations||[],e.animations.push(t),r.addTargetedAnimation(t,e)}));return this._parent._endPerformanceCounter("Load animation"),Promise.all(s).then(()=>(r.normalize(0),r))})}_loadAnimationChannelAsync(e,t,n,r,s){const o=this._extensionsLoadAnimationChannelAsync(e,t,n,r,s);if(o)return o;if(null==r.target.node)return Promise.resolve();const a=Pe.Get(`${e}/target/node`,this._gltf.nodes,r.target.node),i=r.target.path,l="weights"===i;return l&&!a._numMorphTargets||!l&&!a._babylonTransformNode?Promise.resolve():this._parent.loadNodeAnimations||l||a._isJoint?ke.value.then(({RegisterGLTFLoaderAnimation:o})=>{var l,u,c,h;let d;switch(o(),i){case"translation":d=null===(l=Me("/nodes/{}/translation"))||void 0===l?void 0:l.interpolation;break;case"rotation":d=null===(u=Me("/nodes/{}/rotation"))||void 0===u?void 0:u.interpolation;break;case"scale":d=null===(c=Me("/nodes/{}/scale"))||void 0===c?void 0:c.interpolation;break;case"weights":d=null===(h=Me("/nodes/{}/weights"))||void 0===h?void 0:h.interpolation;break;default:throw new Error(`${e}/target/path: Invalid value (${r.target.path})`)}if(!d)throw new Error(`${e}/target/path: Could not find interpolation properties for target path (${r.target.path})`);const m={object:a,info:d};return this._loadAnimationChannelFromTargetInfoAsync(e,t,n,r,m,s)}):Promise.resolve()}_loadAnimationChannelFromTargetInfoAsync(e,t,n,r,s,o){const a=this.parent.targetFps,i=1/a,l=Pe.Get(`${e}/sampler`,n.samplers,r.sampler);return this._loadAnimationSamplerAsync(`${t}/samplers/${r.sampler}`,l).then(e=>{let t=0;const l=s.object,u=s.info;for(const s of u){const u=s.getStride(l),c=e.input,h=e.output,d=new Array(c.length);let m=0;switch(e.interpolation){case"STEP":for(let e=0;e<c.length;e++){const t=s.getValue(l,h,m,1);m+=u,d[e]={frame:c[e]*a,value:t,interpolation:1}}break;case"CUBICSPLINE":for(let e=0;e<c.length;e++){const t=s.getValue(l,h,m,i);m+=u;const n=s.getValue(l,h,m,1);m+=u;const r=s.getValue(l,h,m,i);m+=u,d[e]={frame:c[e]*a,inTangent:t,value:n,outTangent:r}}break;case"LINEAR":for(let e=0;e<c.length;e++){const t=s.getValue(l,h,m,1);m+=u,d[e]={frame:c[e]*a,value:t}}}if(m>0){const e=`${n.name||`animation${n.index}`}_channel${r.index}_${t}`,i=s.buildAnimations(l,e,a,d);for(const e of i)t++,o(e.babylonAnimatable,e.babylonAnimation)}}})}_loadAnimationSamplerAsync(e,t){if(t._data)return t._data;const n=t.interpolation||"LINEAR";switch(n){case"STEP":case"LINEAR":case"CUBICSPLINE":break;default:throw new Error(`${e}/interpolation: Invalid value (${t.interpolation})`)}const r=Pe.Get(`${e}/input`,this._gltf.accessors,t.input),s=Pe.Get(`${e}/output`,this._gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync(`/accessors/${r.index}`,r),this._loadFloatAccessorAsync(`/accessors/${s.index}`,s)]).then(([e,t])=>({input:e,interpolation:n,output:t})),t._data}loadBufferAsync(e,t,n,r){const s=this._extensionsLoadBufferAsync(e,t,n,r);if(s)return s;if(!t._data)if(t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{if(!this._bin)throw new Error(`${e}: Uri is missing or the binary glTF is missing its binary chunk`);t._data=this._bin.readAsync(0,t.byteLength)}return t._data.then(t=>{try{return new Uint8Array(t.buffer,t.byteOffset+n,r)}catch(t){throw new Error(`${e}: ${t.message}`,{cause:t})}})}loadBufferViewAsync(e,t){const n=this._extensionsLoadBufferViewAsync(e,t);if(n)return n;if(t._data)return t._data;const r=Pe.Get(`${e}/buffer`,this._gltf.buffers,t.buffer);return t._data=this.loadBufferAsync(`/buffers/${r.index}`,r,t.byteOffset||0,t.byteLength),t._data}_loadAccessorAsync(e,n,r){if(n._data)return n._data;const s=Ge._GetNumComponents(e,n.type),o=s*t.VertexBufferGetTypeByteLength(n.componentType),a=s*n.count;if(null==n.bufferView)n._data=Promise.resolve(new r(a));else{const i=Pe.Get(`${e}/bufferView`,this._gltf.bufferViews,n.bufferView);n._data=this.loadBufferViewAsync(`/bufferViews/${i.index}`,i).then(l=>{if(5126!==n.componentType||n.normalized||i.byteStride&&i.byteStride!==o){const e=new r(a);return t.VertexBufferForEach(l,n.byteOffset||0,i.byteStride||o,s,n.componentType,e.length,n.normalized||!1,(t,n)=>{e[n]=t}),e}return Ge._GetTypedArray(e,n.componentType,l,n.byteOffset,a)})}if(n.sparse){const a=n.sparse;n._data=n._data.then(i=>{const l=i,u=Pe.Get(`${e}/sparse/indices/bufferView`,this._gltf.bufferViews,a.indices.bufferView),c=Pe.Get(`${e}/sparse/values/bufferView`,this._gltf.bufferViews,a.values.bufferView);return Promise.all([this.loadBufferViewAsync(`/bufferViews/${u.index}`,u),this.loadBufferViewAsync(`/bufferViews/${c.index}`,c)]).then(([i,u])=>{const c=Ge._GetTypedArray(`${e}/sparse/indices`,a.indices.componentType,i,a.indices.byteOffset,a.count),h=s*a.count;let d;if(5126!==n.componentType||n.normalized){const i=Ge._GetTypedArray(`${e}/sparse/values`,n.componentType,u,a.values.byteOffset,h);d=new r(h),t.VertexBufferForEach(i,0,o,s,n.componentType,d.length,n.normalized||!1,(e,t)=>{d[t]=e})}else d=Ge._GetTypedArray(`${e}/sparse/values`,n.componentType,u,a.values.byteOffset,h);let m=0;for(let e=0;e<c.length;e++){let t=c[e]*s;for(let e=0;e<s;e++)l[t++]=d[m++]}return l})})}return n._data}_loadFloatAccessorAsync(e,t){return this._loadAccessorAsync(e,t,Float32Array)}_loadIndicesAccessorAsync(e,t){if("SCALAR"!==t.type)throw new Error(`${e}/type: Invalid value ${t.type}`);if(5121!==t.componentType&&5123!==t.componentType&&5125!==t.componentType)throw new Error(`${e}/componentType: Invalid value ${t.componentType}`);if(t._data)return t._data;if(t.sparse){const n=Ge._GetTypedArrayConstructor(`${e}/componentType`,t.componentType);t._data=this._loadAccessorAsync(e,t,n)}else{const n=Pe.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${n.index}`,n).then(n=>Ge._GetTypedArray(e,t.componentType,n,t.byteOffset,t.count))}return t._data}_loadVertexBufferViewAsync(e){if(e._babylonBuffer)return e._babylonBuffer;const n=this._babylonScene.getEngine();return e._babylonBuffer=this.loadBufferViewAsync(`/bufferViews/${e.index}`,e).then(e=>new t.Buffer(n,e,!1)),e._babylonBuffer}_loadVertexAccessorAsync(e,n,r){var s;if(null===(s=n._babylonVertexBuffer)||void 0===s?void 0:s[r])return n._babylonVertexBuffer[r];n._babylonVertexBuffer||(n._babylonVertexBuffer={});const o=this._babylonScene.getEngine();if(n.sparse||null==n.bufferView)n._babylonVertexBuffer[r]=this._loadFloatAccessorAsync(e,n).then(e=>new t.VertexBuffer(o,e,r,!1));else{const s=Pe.Get(`${e}/bufferView`,this._gltf.bufferViews,n.bufferView);n._babylonVertexBuffer[r]=this._loadVertexBufferViewAsync(s).then(a=>{const i=Ge._GetNumComponents(e,n.type);return new t.VertexBuffer(o,a,r,!1,void 0,s.byteStride,void 0,n.byteOffset,i,n.componentType,n.normalized,!0,void 0,!0)})}return n._babylonVertexBuffer[r]}_loadMaterialMetallicRoughnessPropertiesAsync(e,n,r){const s=new Array,o=this._getOrCreateMaterialAdapter(r);return n&&(n.baseColorFactor?(o.baseColor=t.Color3.FromArray(n.baseColorFactor),o.geometryOpacity=n.baseColorFactor[3]):o.baseColor=t.Color3.White(),o.baseMetalness=null==n.metallicFactor?1:n.metallicFactor,o.specularRoughness=null==n.roughnessFactor?1:n.roughnessFactor,n.baseColorTexture&&s.push(this.loadTextureInfoAsync(`${e}/baseColorTexture`,n.baseColorTexture,e=>{e.name=`${r.name} (Base Color)`,o.baseColorTexture=e})),n.metallicRoughnessTexture&&(n.metallicRoughnessTexture.nonColorData=!0,s.push(this.loadTextureInfoAsync(`${e}/metallicRoughnessTexture`,n.metallicRoughnessTexture,e=>{e.name=`${r.name} (Metallic Roughness)`,o.baseMetalnessTexture=e,o.specularRoughnessTexture=e})),o.useRoughnessFromMetallicTextureGreen=!0,o.useMetallicFromMetallicTextureBlue=!0)),Promise.all(s).then(()=>{})}_loadMaterialAsync(e,t,n,r,s=()=>{}){const o=this._extensionsLoadMaterialAsync(e,t,n,r,s);if(o)return o;t._data=t._data||{};let a=t._data[r];if(!a){this.logOpen(`${e} ${t.name||""}`);const n=this.createMaterial(e,t,r);a={babylonMaterial:n,babylonMeshes:[],promise:this.loadMaterialPropertiesAsync(e,t,n)},t._data[r]=a,Ge.AddPointerMetadata(n,e),this._parent.onMaterialLoadedObservable.notifyObservers(n),this.logClose()}return n&&(a.babylonMeshes.push(n),n.onDisposeObservable.addOnce(()=>{const e=a.babylonMeshes.indexOf(n);-1!==e&&a.babylonMeshes.splice(e,1)})),s(a.babylonMaterial),a.promise.then(()=>a.babylonMaterial)}_selectImplForGltfMaterial(e){var t;if(this.parent.useOpenPBR||(null===(t=e.extensions)||void 0===t?void 0:t.KHR_materials_openpbr)){const e=this._pbrMaterialImpls.get("openpbr");if(e)return e}const n=this._pbrMaterialImpls.get("pbr");if(n)return n;throw new Error("No PBR material implementation loaded")}_getDefaultImpl(){var e;if(this.parent.useOpenPBR){const e=this._pbrMaterialImpls.get("openpbr");if(e)return e}const t=null!==(e=this._pbrMaterialImpls.get("pbr"))&&void 0!==e?e:this._pbrMaterialImpls.values().next().value;if(t)return t;throw new Error("No PBR material implementation loaded")}_createDefaultMaterial(e,t,n){this._babylonScene._blockEntityCollection=!!this._assetContainer;const r=new n.materialClass(e,this._babylonScene);r._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,r.fillMode=t,r.transparencyMode=n.materialClass.MATERIAL_OPAQUE;const s=this._getOrCreateMaterialAdapter(r);return s.transparencyAsAlphaCoverage=this._parent.transparencyAsCoverage,s.baseMetalness=1,s.specularRoughness=1,r}createMaterial(e,t,n){const r=this._extensionsCreateMaterial(e,t,n);if(r)return r;const s=t.name||`material${t.index}`;return this._createDefaultMaterial(s,n,this._selectImplForGltfMaterial(t))}loadMaterialPropertiesAsync(e,t,n){const r=this._extensionsLoadMaterialPropertiesAsync(e,t,n);if(r)return r;const s=new Array;return s.push(this.loadMaterialBasePropertiesAsync(e,t,n)),t.pbrMetallicRoughness&&s.push(this._loadMaterialMetallicRoughnessPropertiesAsync(`${e}/pbrMetallicRoughness`,t.pbrMetallicRoughness,n)),this.loadMaterialAlphaProperties(e,t,n),Promise.all(s).then(()=>{})}loadMaterialBasePropertiesAsync(e,n,r){const s=new Array,o=this._getOrCreateMaterialAdapter(r);let a;o.emissionColor=n.emissiveFactor?t.Color3.FromArray(n.emissiveFactor):new t.Color3(0,0,0),n.doubleSided&&(o.backFaceCulling=!1,o.twoSidedLighting=!0),n.normalTexture&&(n.normalTexture.nonColorData=!0,s.push(this.loadTextureInfoAsync(`${e}/normalTexture`,n.normalTexture,e=>{var t;e.name=`${r.name} (Normal)`,o.geometryNormalTexture=e,null!=(null===(t=n.normalTexture)||void 0===t?void 0:t.scale)&&(e.level=n.normalTexture.scale)})),o.setNormalMapInversions(!this._babylonScene.useRightHandedSystem,this._babylonScene.useRightHandedSystem));let i,l=1;return n.occlusionTexture&&(n.occlusionTexture.nonColorData=!0,s.push(this.loadTextureInfoAsync(`${e}/occlusionTexture`,n.occlusionTexture,e=>{e.name=`${r.name} (Occlusion)`,a=e})),null!=n.occlusionTexture.strength&&(l=n.occlusionTexture.strength)),n.emissiveTexture&&s.push(this.loadTextureInfoAsync(`${e}/emissiveTexture`,n.emissiveTexture,e=>{e.name=`${r.name} (Emissive)`,i=e})),Promise.all(s).then(()=>{a&&(o.ambientOcclusionTexture=a,o.ambientOcclusionTextureStrength=l),i&&(o.emissionColorTexture=i)})}loadMaterialAlphaProperties(e,n,r){if(0===this._pbrMaterialImpls.size)throw new Error(`${e}: Material type not supported`);const s=this._getOrCreateMaterialAdapter(r),o=s.baseColorTexture;switch(n.alphaMode||"OPAQUE"){case"OPAQUE":r.transparencyMode=t.Material.MATERIAL_OPAQUE,r.alpha=1;break;case"MASK":r.transparencyMode=t.Material.MATERIAL_ALPHATEST,s.alphaCutOff=null==n.alphaCutoff?.5:n.alphaCutoff,o&&(o.hasAlpha=!0,s.useAlphaFromBaseColorTexture=!0);break;case"BLEND":r.transparencyMode=t.Material.MATERIAL_ALPHABLEND,o&&(o.hasAlpha=!0,s.useAlphaFromBaseColorTexture=!0);break;default:throw new Error(`${e}/alphaMode: Invalid value (${n.alphaMode})`)}}loadTextureInfoAsync(e,t,n=()=>{}){const r=this._extensionsLoadTextureInfoAsync(e,t,n);if(r)return r;if(this.logOpen(`${e}`),t.texCoord>=6)throw new Error(`${e}/texCoord: Invalid value (${t.texCoord})`);const s=Pe.Get(`${e}/index`,this._gltf.textures,t.index);s._textureInfo=t;const o=this._loadTextureAsync(`/textures/${t.index}`,s,r=>{r.coordinatesIndex=t.texCoord||0,Ge.AddPointerMetadata(r,e),this._parent.onTextureLoadedObservable.notifyObservers(r),n(r)});return this.logClose(),o}_loadTextureAsync(e,t,n=()=>{}){const r=this._extensionsLoadTextureAsync(e,t,n);if(r)return r;this.logOpen(`${e} ${t.name||""}`);const s=null==t.sampler?Ge.DefaultSampler:Pe.Get(`${e}/sampler`,this._gltf.samplers,t.sampler),o=Pe.Get(`${e}/source`,this._gltf.images,t.source),a=this._createTextureAsync(e,s,o,n,void 0,!t._textureInfo.nonColorData);return this.logClose(),a}_createTextureAsync(e,n,r,s=()=>{},o,a){var i,l;const u=this._loadSampler(`/samplers/${n.index}`,n),c=new Array,h=new t.Deferred;this._babylonScene._blockEntityCollection=!!this._assetContainer;const d={noMipmap:u.noMipMaps,invertY:!1,samplingMode:u.samplingMode,onLoad:()=>{this._disposed||h.resolve()},onError:(t,n)=>{this._disposed||h.reject(new Error(`${e}: ${n&&n.message?n.message:t||"Failed to load texture"}`))},mimeType:null!==(i=r.mimeType)&&void 0!==i?i:t.GetMimeType(null!==(l=r.uri)&&void 0!==l?l:""),loaderOptions:o,useSRGBBuffer:!!a&&this._parent.useSRGBBuffers},m=new t.Texture(null,this._babylonScene,d);m._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,c.push(h.promise);const _=r.uri&&!t.IsBase64DataUrl(r.uri)?r.uri:void 0,p=null!=_?_:`${this._fileName}#image${r.index}`;if(c.push(this.loadImageAsync(`/images/${r.index}`,r).then(e=>{const t=`data:${this._uniqueRootUrl}${p}`;m.updateURL(t,e);const n=m.getInternalTexture();n&&(n.label=r.name)})),m.wrapU=u.wrapU,m.wrapV=u.wrapV,s(m),this._parent.useGltfTextureNames){const e=r.name||_||`image${r.index}`;m.name=e}return Promise.all(c).then(()=>m)}_loadSampler(e,t){return t._data||(t._data={noMipMaps:9728===t.minFilter||9729===t.minFilter,samplingMode:Ge._GetTextureSamplingMode(e,t),wrapU:Ge._GetTextureWrapMode(`${e}/wrapS`,t.wrapS),wrapV:Ge._GetTextureWrapMode(`${e}/wrapT`,t.wrapT)}),t._data}loadImageAsync(e,t){if(!t._data){if(this.logOpen(`${e} ${t.name||""}`),t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{const n=Pe.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${n.index}`,n)}this.logClose()}return t._data}loadUriAsync(e,n,r){var s;const o=this._extensionsLoadUriAsync(e,n,r);if(o)return o;if(!this._parent._isPreprocessUrlAsyncSet&&!Ge._ValidateUri(r))throw new Error(`${e}: '${r}' is invalid`);if(t.IsBase64DataUrl(r)){const n=new Uint8Array(t.DecodeBase64UrlToBinary(r));return this.log(`${e}: Decoded ${r.substring(0,64)}... (${n.length} bytes)`),Promise.resolve(n)}return this.log(`${e}: Loading ${r}`),this._parent.preprocessUrlAsync(this._rootUrl+r,null!==(s=this._rootUrl)&&void 0!==s?s:void 0).then(n=>new Promise((s,o)=>{this._parent._loadFile(this._babylonScene,n,t=>{this._disposed||(this.log(`${e}: Loaded ${r} (${t.byteLength} bytes)`),s(new Uint8Array(t)))},!0,n=>{o(new t.LoadFileError(`${e}: Failed to load '${r}'${n?": "+n.status+" "+n.statusText:""}`,n))})}))}static AddPointerMetadata(e,t){e.metadata=e.metadata||{};const n=e._internalMetadata=e._internalMetadata||{},r=n.gltf=n.gltf||{};(r.pointers=r.pointers||[]).push(t)}static _GetTextureWrapMode(e,n){switch(n=null==n?10497:n){case 33071:return t.Texture.CLAMP_ADDRESSMODE;case 33648:return t.Texture.MIRROR_ADDRESSMODE;case 10497:return t.Texture.WRAP_ADDRESSMODE;default:return t.Logger.Warn(`${e}: Invalid value (${n})`),t.Texture.WRAP_ADDRESSMODE}}static _GetTextureSamplingMode(e,n){const r=null==n.magFilter?9729:n.magFilter,s=null==n.minFilter?9987:n.minFilter;if(9729===r)switch(s){case 9728:return t.Texture.LINEAR_NEAREST;case 9729:return t.Texture.LINEAR_LINEAR;case 9984:return t.Texture.LINEAR_NEAREST_MIPNEAREST;case 9985:return t.Texture.LINEAR_LINEAR_MIPNEAREST;case 9986:return t.Texture.LINEAR_NEAREST_MIPLINEAR;case 9987:return t.Texture.LINEAR_LINEAR_MIPLINEAR;default:return t.Logger.Warn(`${e}/minFilter: Invalid value (${s})`),t.Texture.LINEAR_LINEAR_MIPLINEAR}else switch(9728!==r&&t.Logger.Warn(`${e}/magFilter: Invalid value (${r})`),s){case 9728:return t.Texture.NEAREST_NEAREST;case 9729:return t.Texture.NEAREST_LINEAR;case 9984:return t.Texture.NEAREST_NEAREST_MIPNEAREST;case 9985:return t.Texture.NEAREST_LINEAR_MIPNEAREST;case 9986:return t.Texture.NEAREST_NEAREST_MIPLINEAR;case 9987:return t.Texture.NEAREST_LINEAR_MIPLINEAR;default:return t.Logger.Warn(`${e}/minFilter: Invalid value (${s})`),t.Texture.NEAREST_NEAREST_MIPNEAREST}}static _GetTypedArrayConstructor(e,n){try{return t.GetTypedArrayConstructor(n)}catch(t){throw new Error(`${e}: ${t.message}`,{cause:t})}}static _GetTypedArray(e,n,r,s,o){const a=r.buffer;s=r.byteOffset+(s||0);const i=Ge._GetTypedArrayConstructor(`${e}/componentType`,n),l=t.VertexBufferGetTypeByteLength(n);return s%l!==0?(t.Logger.Warn(`${e}: Copying buffer as byte offset (${s}) is not a multiple of component type byte length (${l})`),new i(a.slice(s,s+o*l),0)):new i(a,s,o)}static _GetNumComponents(e,t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}throw new Error(`${e}: Invalid type (${t})`)}static _ValidateUri(e){return t.Tools.IsBase64(e)||-1===e.indexOf("..")}static _GetDrawMode(e,n){switch(null==n&&(n=4),n){case 0:return t.Material.PointListDrawMode;case 1:return t.Material.LineListDrawMode;case 2:return t.Material.LineLoopDrawMode;case 3:return t.Material.LineStripDrawMode;case 4:return t.Material.TriangleFillMode;case 5:return t.Material.TriangleStripDrawMode;case 6:return t.Material.TriangleFanDrawMode}throw new Error(`${e}: Invalid mesh primitive mode (${n})`)}_compileMaterialsAsync(){this._parent._startPerformanceCounter("Compile materials");const e=new Array;if(this._gltf.materials)for(const t of this._gltf.materials)if(t._data)for(const n in t._data){const r=t._data[n];for(const t of r.babylonMeshes){t.computeWorldMatrix(!0);const n=r.babylonMaterial;e.push(n.forceCompilationAsync(t)),e.push(n.forceCompilationAsync(t,{useInstances:!0})),this._parent.useClipPlane&&(e.push(n.forceCompilationAsync(t,{clipPlane:!0})),e.push(n.forceCompilationAsync(t,{clipPlane:!0,useInstances:!0})))}}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile materials")})}_compileShadowGeneratorsAsync(){this._parent._startPerformanceCounter("Compile shadow generators");const e=new Array,t=this._babylonScene.lights;for(const n of t){const t=n.getShadowGenerator();t&&e.push(t.forceCompilationAsync())}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile shadow generators")})}_forEachExtensions(e){for(const t of this._extensions)t.enabled&&e(t)}_applyExtensions(e,t,n){for(const r of this._extensions)if(r.enabled){const s=`${r.name}.${t}`,o=e;o._activeLoaderExtensionFunctions=o._activeLoaderExtensionFunctions||{};const a=o._activeLoaderExtensionFunctions;if(!a[s]){a[s]=!0;try{const e=n(r);if(e)return e}finally{delete a[s]}}}return null}_extensionsOnLoading(){this._forEachExtensions(e=>e.onLoading&&e.onLoading())}_extensionsOnReady(){this._forEachExtensions(e=>e.onReady&&e.onReady())}_extensionsLoadSceneAsync(e,t){return this._applyExtensions(t,"loadScene",n=>n.loadSceneAsync&&n.loadSceneAsync(e,t))}_extensionsLoadNodeAsync(e,t,n){return this._applyExtensions(t,"loadNode",r=>r.loadNodeAsync&&r.loadNodeAsync(e,t,n))}_extensionsLoadCameraAsync(e,t,n){return this._applyExtensions(t,"loadCamera",r=>r.loadCameraAsync&&r.loadCameraAsync(e,t,n))}_extensionsLoadVertexDataAsync(e,t,n){return this._applyExtensions(t,"loadVertexData",r=>r._loadVertexDataAsync&&r._loadVertexDataAsync(e,t,n))}_extensionsLoadMeshPrimitiveAsync(e,t,n,r,s,o){return this._applyExtensions(s,"loadMeshPrimitive",a=>a._loadMeshPrimitiveAsync&&a._loadMeshPrimitiveAsync(e,t,n,r,s,o))}_extensionsLoadMaterialAsync(e,t,n,r,s){return this._applyExtensions(t,"loadMaterial",o=>o._loadMaterialAsync&&o._loadMaterialAsync(e,t,n,r,s))}_extensionsCreateMaterial(e,t,n){return this._applyExtensions(t,"createMaterial",r=>r.createMaterial&&r.createMaterial(e,t,n))}_extensionsLoadMaterialPropertiesAsync(e,t,n){return this._applyExtensions(t,"loadMaterialProperties",r=>r.loadMaterialPropertiesAsync&&r.loadMaterialPropertiesAsync(e,t,n))}_extensionsLoadTextureInfoAsync(e,t,n){return this._applyExtensions(t,"loadTextureInfo",r=>r.loadTextureInfoAsync&&r.loadTextureInfoAsync(e,t,n))}_extensionsLoadTextureAsync(e,t,n){return this._applyExtensions(t,"loadTexture",r=>r._loadTextureAsync&&r._loadTextureAsync(e,t,n))}_extensionsLoadAnimationAsync(e,t){return this._applyExtensions(t,"loadAnimation",n=>n.loadAnimationAsync&&n.loadAnimationAsync(e,t))}_extensionsLoadAnimationChannelAsync(e,t,n,r,s){return this._applyExtensions(n,"loadAnimationChannel",o=>o._loadAnimationChannelAsync&&o._loadAnimationChannelAsync(e,t,n,r,s))}_extensionsLoadSkinAsync(e,t,n){return this._applyExtensions(n,"loadSkin",r=>r._loadSkinAsync&&r._loadSkinAsync(e,t,n))}_extensionsLoadUriAsync(e,t,n){return this._applyExtensions(t,"loadUri",r=>r._loadUriAsync&&r._loadUriAsync(e,t,n))}_extensionsLoadBufferViewAsync(e,t){return this._applyExtensions(t,"loadBufferView",n=>n.loadBufferViewAsync&&n.loadBufferViewAsync(e,t))}_extensionsLoadBufferAsync(e,t,n,r){return this._applyExtensions(t,"loadBuffer",s=>s.loadBufferAsync&&s.loadBufferAsync(e,t,n,r))}static LoadExtensionAsync(e,t,n,r){if(!t.extensions)return null;const s=t.extensions[n];return s?r(`${e}/extensions/${n}`,s):null}static LoadExtraAsync(e,t,n,r){if(!t.extras)return null;const s=t.extras[n];return s?r(`${e}/extras/${n}`,s):null}isExtensionUsed(e){return!!this._gltf.extensionsUsed&&-1!==this._gltf.extensionsUsed.indexOf(e)}logOpen(e){this._parent._logOpen(e)}logClose(){this._parent._logClose()}log(e){this._parent._log(e)}startPerformanceCounter(e){this._parent._startPerformanceCounter(e)}endPerformanceCounter(e){this._parent._endPerformanceCounter(e)}}Ge.DefaultSampler={index:-1};let Ve=!1;function De(){Ve||(Ve=!0,b._CreateGLTF2Loader=e=>new Ge(e))}const He="EXT_lights_image_based";class $e{constructor(e){this.name=He,this._loader=e,this.enabled=this._loader.isExtensionUsed(He)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights}}loadSceneAsync(e,t){return Ge.LoadExtensionAsync(e,t,this.name,(n,r)=>A(this,void 0,void 0,function*(){this._loader._allMaterialsDirtyRequired=!0;const s=new Array;s.push(this._loader.loadSceneAsync(e,t)),this._loader.logOpen(`${n}`);const o=Pe.Get(`${n}/light`,this._lights,r.light);return s.push(this._loadLightAsync(`/extensions/${this.name}/lights/${r.light}`,o).then(e=>{this._loader.babylonScene.environmentTexture=e})),this._loader.logClose(),yield Promise.all(s).then(()=>{})}))}_loadLightAsync(e,n){if(!n._loaded){const r=new Array;this._loader.logOpen(`${e}`);const s=new Array(n.specularImages.length);for(let t=0;t<n.specularImages.length;t++){const o=n.specularImages[t];s[t]=new Array(o.length);for(let n=0;n<o.length;n++){const a=`${e}/specularImages/${t}/${n}`;this._loader.logOpen(`${a}`);const i=o[n],l=Pe.Get(a,this._loader.gltf.images,i);r.push(this._loader.loadImageAsync(`/images/${i}`,l).then(e=>{s[t][n]=e})),this._loader.logClose()}}this._loader.logClose(),n._loaded=Promise.all(r).then(()=>A(this,void 0,void 0,function*(){const r=new t.RawCubeTexture(this._loader.babylonScene,null,n.specularImageSize);if(r.name=n.name||"environment",n._babylonTexture=r,null!=n.intensity&&(r.level=n.intensity),n.rotation){let e=t.Quaternion.FromArray(n.rotation);this._loader.babylonScene.useRightHandedSystem||(e=t.Quaternion.Inverse(e)),t.Matrix.FromQuaternionToRef(e,r.getReflectionTextureMatrix())}if(!n.irradianceCoefficients)throw new Error(`${e}: Irradiance coefficients are missing`);const o=t.SphericalHarmonics.FromArray(n.irradianceCoefficients);o.scaleInPlace(n.intensity),o.convertIrradianceToLambertianRadiance();const a=t.SphericalPolynomial.FromHarmonics(o),i=(s.length-1)/Math.log2(n.specularImageSize);return yield r.updateRGBDAsync(s,a,i)}))}return n._loaded.then(()=>n._babylonTexture)}}let Ke=!1;function We(){Ke||(Ke=!0,Ie(He),Fe(He,!0,e=>new $e(e)))}We();const Ue="EXT_mesh_gpu_instancing";class ze{constructor(e){this.name=Ue,this._loader=e,this.enabled=this._loader.isExtensionUsed(Ue)}dispose(){this._loader=null}loadNodeAsync(e,n,r){return Ge.LoadExtensionAsync(e,n,this.name,(e,s)=>A(this,void 0,void 0,function*(){this._loader._disableInstancedMesh++;const o=this._loader.loadNodeAsync(`/nodes/${n.index}`,n,r);if(this._loader._disableInstancedMesh--,!n._primitiveBabylonMeshes)return yield o;const a=new Array;let i=0;const l=t=>{if(null==s.attributes[t])return void a.push(Promise.resolve(null));const n=Pe.Get(`${e}/attributes/${t}`,this._loader.gltf.accessors,s.attributes[t]);if(a.push(this._loader._loadFloatAccessorAsync(`/accessors/${n.bufferView}`,n)),0===i)i=n.count;else if(i!==n.count)throw new Error(`${e}/attributes: Instance buffer accessors do not have the same count.`)};return l("TRANSLATION"),l("ROTATION"),l("SCALE"),l("_COLOR_0"),yield o.then(e=>A(this,void 0,void 0,function*(){const[r,s,o,l]=yield Promise.all(a),u=new Float32Array(16*i);t.TmpVectors.Vector3[0].copyFromFloats(0,0,0),t.TmpVectors.Quaternion[0].copyFromFloats(0,0,0,1),t.TmpVectors.Vector3[1].copyFromFloats(1,1,1);for(let e=0;e<i;++e)r&&t.Vector3.FromArrayToRef(r,3*e,t.TmpVectors.Vector3[0]),s&&t.Quaternion.FromArrayToRef(s,4*e,t.TmpVectors.Quaternion[0]),o&&t.Vector3.FromArrayToRef(o,3*e,t.TmpVectors.Vector3[1]),t.Matrix.ComposeToRef(t.TmpVectors.Vector3[1],t.TmpVectors.Quaternion[0],t.TmpVectors.Vector3[0],t.TmpVectors.Matrix[0]),t.TmpVectors.Matrix[0].copyToArray(u,16*e);for(const e of n._primitiveBabylonMeshes)e.thinInstanceSetBuffer("matrix",u,16,!0),l&&(l.length===3*i?e.thinInstanceSetBuffer("color",l,3,!0):l.length===4*i?e.thinInstanceSetBuffer("color",l,4,!0):t.Logger.Warn("Unexpected size of _COLOR_0 attribute for mesh "+e.name));return e}))}))}}let je=!1;function qe(){je||(je=!0,Ie(Ue),Fe(Ue,!0,e=>new ze(e)))}qe();const Ye="EXT_meshopt_compression";class Xe{constructor(e){this.name=Ye,this.enabled=e.isExtensionUsed(Ye),this._loader=e}dispose(){this._loader=null}loadBufferViewAsync(e,n){return Ge.LoadExtensionAsync(e,n,this.name,(r,s)=>A(this,void 0,void 0,function*(){const r=n;if(r._meshOptData)return yield r._meshOptData;const o=Pe.Get(`${e}/buffer`,this._loader.gltf.buffers,s.buffer);return r._meshOptData=this._loader.loadBufferAsync(`/buffers/${o.index}`,o,s.byteOffset||0,s.byteLength).then(e=>A(this,void 0,void 0,function*(){return yield t.MeshoptCompression.Default.decodeGltfBufferAsync(e,s.count,s.byteStride,s.mode,s.filter)})),yield r._meshOptData}))}}let Qe=!1;function Ze(){Qe||(Qe=!0,Ie(Ye),Fe(Ye,!0,e=>new Xe(e)))}Ze();const Je="EXT_texture_webp";class et{constructor(e){this.name=Je,this._loader=e,this.enabled=e.isExtensionUsed(Je)}dispose(){this._loader=null}_loadTextureAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=null==t.sampler?Ge.DefaultSampler:Pe.Get(`${e}/sampler`,this._loader.gltf.samplers,t.sampler),a=Pe.Get(`${r}/source`,this._loader.gltf.images,s.source);return yield this._loader._createTextureAsync(e,o,a,e=>{n(e)},void 0,!t._textureInfo.nonColorData)}))}}let tt=!1;function nt(){tt||(tt=!0,Ie(Je),Fe(Je,!0,e=>new et(e)))}nt();const rt="EXT_texture_avif";class st{constructor(e){this.name=rt,this._loader=e,this.enabled=e.isExtensionUsed(rt)}dispose(){this._loader=null}_loadTextureAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=null==t.sampler?Ge.DefaultSampler:Pe.Get(`${e}/sampler`,this._loader.gltf.samplers,t.sampler),a=Pe.Get(`${r}/source`,this._loader.gltf.images,s.source);return yield this._loader._createTextureAsync(e,o,a,e=>{n(e)},void 0,!t._textureInfo.nonColorData)}))}}let ot=!1;function at(){ot||(ot=!0,Ie(rt),Fe(rt,!0,e=>new st(e)))}at();const it="EXT_lights_ies";class lt{constructor(e){this.name=it,this._loader=e,this.enabled=this._loader.isExtensionUsed(it)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights,Pe.Assign(this._lights)}}loadNodeAsync(e,n,r){return Ge.LoadExtensionAsync(e,n,this.name,(s,o)=>A(this,void 0,void 0,function*(){let a,i;this._loader._allMaterialsDirtyRequired=!0;const l=yield this._loader.loadNodeAsync(e,n,e=>{i=Pe.Get(s,this._lights,o.light);const n=i.name||e.name;this._loader.babylonScene._blockEntityCollection=!!this._loader._assetContainer,a=new t.SpotLight(n,t.Vector3.Zero(),t.Vector3.Backward(),0,1,this._loader.babylonScene),a.angle=Math.PI/2,a.innerAngle=0,a._parentContainer=this._loader._assetContainer,this._loader.babylonScene._blockEntityCollection=!1,i._babylonLight=a,a.falloffType=t.Light.FALLOFF_GLTF,a.diffuse=o.color?t.Color3.FromArray(o.color):t.Color3.White(),a.intensity=o.multiplier||1,a.range=Number.MAX_VALUE,a.parent=e,this._loader._babylonLights.push(a),Ge.AddPointerMetadata(a,s),r(e)});let u;if(i.uri)u=yield this._loader.loadUriAsync(e,i,i.uri);else{const t=Pe.Get(`${e}/bufferView`,this._loader.gltf.bufferViews,i.bufferView);u=yield this._loader.loadBufferViewAsync(`/bufferViews/${t.index}`,t)}return a.iesProfileTexture=new t.Texture(a.name+"_iesProfile",this._loader.babylonScene,!0,!1,void 0,null,null,u,!0,void 0,void 0,void 0,void 0,".ies"),l}))}}let ut=!1;function ct(){ut||(ut=!0,Ie(it),Fe(it,!0,e=>new lt(e)))}ct();const ht="KHR_draco_mesh_compression";class dt{constructor(e){this.name=ht,this.useNormalizedFlagFromAccessor=!0,this._loader=e,this.enabled=t.DracoDecoder.DefaultAvailable&&this._loader.isExtensionUsed(ht)}dispose(){delete this.dracoDecoder,this._loader=null}_loadVertexDataAsync(e,n,r){return Ge.LoadExtensionAsync(e,n,this.name,(s,o)=>A(this,void 0,void 0,function*(){if(null!=n.mode&&4!==n.mode&&5!==n.mode)throw new Error(`${e}: Unsupported mode ${n.mode}`);const a={},i={},l=(e,t)=>{const s=o.attributes[e];if(null!=s&&(r._delayInfo=r._delayInfo||[],-1===r._delayInfo.indexOf(t)&&r._delayInfo.push(t),a[t]=s,this.useNormalizedFlagFromAccessor)){const r=Pe.TryGet(this._loader.gltf.accessors,n.attributes[e]);r&&(i[t]=r.normalized||!1)}};l("POSITION",t.VertexBuffer.PositionKind),l("NORMAL",t.VertexBuffer.NormalKind),l("TANGENT",t.VertexBuffer.TangentKind),l("TEXCOORD_0",t.VertexBuffer.UVKind),l("TEXCOORD_1",t.VertexBuffer.UV2Kind),l("TEXCOORD_2",t.VertexBuffer.UV3Kind),l("TEXCOORD_3",t.VertexBuffer.UV4Kind),l("TEXCOORD_4",t.VertexBuffer.UV5Kind),l("TEXCOORD_5",t.VertexBuffer.UV6Kind),l("JOINTS_0",t.VertexBuffer.MatricesIndicesKind),l("WEIGHTS_0",t.VertexBuffer.MatricesWeightsKind),l("COLOR_0",t.VertexBuffer.ColorKind);const u=Pe.Get(s,this._loader.gltf.bufferViews,o.bufferView);return u._dracoBabylonGeometry||(u._dracoBabylonGeometry=this._loader.loadBufferViewAsync(`/bufferViews/${u.index}`,u).then(s=>A(this,void 0,void 0,function*(){const o=this.dracoDecoder||t.DracoDecoder.Default,l=Pe.TryGet(this._loader.gltf.accessors,n.attributes.POSITION),u=this._loader.parent.alwaysComputeBoundingBox||r.skeleton||!l?null:Be(l);return yield o._decodeMeshToGeometryForGltfAsync(r.name,this._loader.babylonScene,s,a,i,u).catch(t=>{throw new Error(`${e}: ${t.message}`)})}))),yield u._dracoBabylonGeometry}))}}let mt=!1;function _t(){mt||(mt=!0,Ie(ht),Fe(ht,!0,e=>new dt(e)))}_t();const pt="KHR_gaussian_splatting",ft=.28209479177387814,gt=[0,3,5,7];function bt(e){return e<=0?0:e>=255?255:e+.5|0}class yt{constructor(e){this.name=pt,this._loader=e,this.enabled=this._loader.isExtensionUsed(pt)}dispose(){this._loader=null}_loadMeshPrimitiveAsync(e,n,r,s,o,a){return Ge.LoadExtensionAsync(e,o,this.name,r=>A(this,void 0,void 0,function*(){if(null!=o.mode&&0!==o.mode)throw new Error(`${r}: Gaussian splatting primitives must use POINTS mode`);const s=this._loader,i=t=>{const n=o.attributes[t];if(null==n)return null;const r=Pe.Get(`${e}/attributes/${t}`,s.gltf.accessors,n);return s._loadFloatAccessorAsync(`/accessors/${r.index}`,r)},l=i("POSITION");if(!l)throw new Error(`${r}: Gaussian splatting primitive is missing the POSITION attribute`);let u=0;const c=[];for(let e=1;e<=3&&null!=o.attributes[`KHR_gaussian_splatting:SH_DEGREE_${e}_COEF_0`];e++){u=e;for(let t=0;t<gt[e];t++)c.push(`KHR_gaussian_splatting:SH_DEGREE_${e}_COEF_${t}`)}const h=s.babylonScene;h._blockEntityCollection=!!s._assetContainer;const d=new t.GaussianSplattingMesh(n,null,h);d._parentContainer=s._assetContainer,h._blockEntityCollection=!1,Ge.AddPointerMetadata(d,e),s.parent.onMeshLoadedObservable.notifyObservers(d),a(d);const m=h.getEngine().getCaps(),[_,p,f,g,b,y,...T]=yield Promise.all([l,i("KHR_gaussian_splatting:ROTATION"),i("KHR_gaussian_splatting:SCALE"),i("KHR_gaussian_splatting:OPACITY"),i("KHR_gaussian_splatting:SH_DEGREE_0_COEF_0"),i("COLOR_0"),...c.map(e=>i(e))]),v=_.length/3,x=y?y.length/v:0,A=new ArrayBuffer(32*v),C=new Float32Array(A),R=new Uint8Array(A);let w=null;if(u>0){const e=3*((u+1)*(u+1)-1),n=Math.ceil(e/16),r=m.maxTextureSize,s=Math.ceil(v/r);w=t.AllocateShBuffers(n,s*r*4*4)}for(let e=0;e<v;e++){const t=8*e,n=32*e,r=3*e;if(C[t+0]=_[r+0],C[t+1]=_[r+1],C[t+2]=_[r+2],C[t+3]=f?f[r+0]:1,C[t+4]=f?f[r+1]:1,C[t+5]=f?f[r+2]:1,b)R[n+24]=bt(255*(.5+ft*b[r+0])),R[n+25]=bt(255*(.5+ft*b[r+1])),R[n+26]=bt(255*(.5+ft*b[r+2]));else if(y){const t=e*x;R[n+24]=bt(255*y[t+0]),R[n+25]=bt(255*y[t+1]),R[n+26]=bt(255*y[t+2])}else R[n+24]=255,R[n+25]=255,R[n+26]=255;R[n+27]=g?bt(255*g[e]):y&&x>=4?bt(255*y[e*x+3]):255;const s=4*e,o=p?p[s+0]:0,a=p?p[s+1]:0,i=p?p[s+2]:0,l=p?p[s+3]:1;if(R[n+28]=bt(127.5*l+127.5),R[n+29]=bt(127.5*o+127.5),R[n+30]=bt(127.5*a+127.5),R[n+31]=bt(127.5*i+127.5),w){const t=16*e;for(let e=0;e<T.length;e++){const n=T[e];if(n)for(let s=0;s<3;s++){const o=3*e+s,a=15&o;w[o>>4][t+a]=bt(128*n[r+s]+128)}}}}return yield d.updateDataAsync(A,null!=w?w:void 0,void 0,u||void 0),d}))}}let Tt=!1;function vt(){Tt||(Tt=!0,Ie(pt),Fe(pt,!0,e=>new yt(e)))}vt();const xt="KHR_lights_punctual";class At{constructor(e){this.name=xt,this._loader=e,this.enabled=this._loader.isExtensionUsed(xt)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights,Pe.Assign(this._lights)}}loadNodeAsync(e,n,r){return Ge.LoadExtensionAsync(e,n,this.name,(s,o)=>A(this,void 0,void 0,function*(){return this._loader._allMaterialsDirtyRequired=!0,yield this._loader.loadNodeAsync(e,n,e=>{let n;const a=Pe.Get(s,this._lights,o.light),i=a.name||e.name;switch(this._loader.babylonScene._blockEntityCollection=!!this._loader._assetContainer,a.type){case"directional":{const e=new t.DirectionalLight(i,t.Vector3.Backward(),this._loader.babylonScene);e.position.setAll(0),n=e;break}case"point":n=new t.PointLight(i,t.Vector3.Zero(),this._loader.babylonScene);break;case"spot":{const e=new t.SpotLight(i,t.Vector3.Zero(),t.Vector3.Backward(),0,1,this._loader.babylonScene);e.angle=2*(a.spot&&a.spot.outerConeAngle||Math.PI/4),e.innerAngle=2*(a.spot&&a.spot.innerConeAngle||0),n=e;break}default:throw this._loader.babylonScene._blockEntityCollection=!1,new Error(`${s}: Invalid light type (${a.type})`)}n._parentContainer=this._loader._assetContainer,this._loader.babylonScene._blockEntityCollection=!1,a._babylonLight=n,n.falloffType=t.Light.FALLOFF_GLTF,n.diffuse=a.color?t.Color3.FromArray(a.color):t.Color3.White(),n.intensity=null==a.intensity?1:a.intensity,n.range=null==a.range?Number.MAX_VALUE:a.range,n.parent=e,this._loader._babylonLights.push(n),Ge.AddPointerMetadata(n,s),r(e)})}))}}let Ct=!1;function Rt(){Ct||(Ct=!0,Ie(xt),Fe(xt,!0,e=>new At(e)))}Rt();const wt="EXT_lights_area";class Mt{constructor(e){this.name=wt,this._loader=e,this.enabled=this._loader.isExtensionUsed(wt)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights,Pe.Assign(this._lights)}}loadNodeAsync(e,n,r){return Ge.LoadExtensionAsync(e,n,this.name,(s,o)=>A(this,void 0,void 0,function*(){return this._loader._allMaterialsDirtyRequired=!0,yield this._loader.loadNodeAsync(e,n,e=>{var n;let a;const i=Pe.Get(s,this._lights,o.light),l=i.name||e.name;this._loader.babylonScene._blockEntityCollection=!!this._loader._assetContainer;const u=void 0!==i.size?i.size:1;switch(i.type){case"rect":{const e=void 0!==(null===(n=i.rect)||void 0===n?void 0:n.aspect)?i.rect.aspect*u:u,r=u;a=new t.RectAreaLight(l,t.Vector3.Zero(),e,r,this._loader.babylonScene);break}case"disk":{const e=Math.sqrt(u*u*.25*Math.PI);a=new t.RectAreaLight(l,t.Vector3.Zero(),e,e,this._loader.babylonScene);break}default:throw this._loader.babylonScene._blockEntityCollection=!1,new Error(`${s}: Invalid area light type (${i.type})`)}a._parentContainer=this._loader._assetContainer,this._loader.babylonScene._blockEntityCollection=!1,i._babylonLight=a,a.falloffType=t.Light.FALLOFF_GLTF,a.diffuse=i.color?t.Color3.FromArray(i.color):t.Color3.White(),a.intensity=null==i.intensity?1:i.intensity;const c=new t.TransformNode(`${l}_orientation`,this._loader.babylonScene);c.rotationQuaternion=t.Quaternion.RotationAxis(t.Vector3.Up(),Math.PI),c.parent=e,a.parent=c,this._loader._babylonLights.push(a),Ge.AddPointerMetadata(a,s),r(e)})}))}}let Ot=!1;function Et(){Ot||(Ot=!0,Ie(wt),Fe(wt,!0,e=>new Mt(e)))}Et();const Lt="KHR_materials_pbrSpecularGlossiness";class St{constructor(e){this.name=Lt,this.order=200,this._loader=e,this.enabled=this._loader.isExtensionUsed(Lt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;return o.push(this._loader.loadMaterialBasePropertiesAsync(e,t,n)),o.push(this._loadSpecularGlossinessPropertiesAsync(r,s,n)),this._loader.loadMaterialAlphaProperties(e,t,n),yield Promise.all(o).then(()=>{})}))}_loadSpecularGlossinessPropertiesAsync(e,n,r){const s=this._loader._getOrCreateMaterialAdapter(r),o=new Array;return s.configureSpecularGlossiness(),n.diffuseFactor?(s.baseColor=t.Color3.FromArray(n.diffuseFactor),r.alpha=n.diffuseFactor[3]):s.baseColor=t.Color3.White(),s.specularColor=n.specularFactor?t.Color3.FromArray(n.specularFactor):t.Color3.White(),s.glossiness=null==n.glossinessFactor?1:n.glossinessFactor,n.diffuseTexture&&o.push(this._loader.loadTextureInfoAsync(`${e}/diffuseTexture`,n.diffuseTexture,e=>{e.name=`${r.name} (Diffuse)`,s.baseColorTexture=e})),n.specularGlossinessTexture&&o.push(this._loader.loadTextureInfoAsync(`${e}/specularGlossinessTexture`,n.specularGlossinessTexture,e=>{e.name=`${r.name} (Specular Glossiness)`,s.specularColorTexture=e})),Promise.all(o).then(()=>{})}}let Ft=!1;function It(){Ft||(Ft=!0,Ie(Lt),Fe(Lt,!0,e=>new St(e)))}It();const Nt="KHR_materials_unlit";class kt{constructor(e){this.name=Nt,this.order=210,this._loader=e,this.enabled=this._loader.isExtensionUsed(Nt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,()=>A(this,void 0,void 0,function*(){return yield this._loadUnlitPropertiesAsync(e,t,n)}))}_loadUnlitPropertiesAsync(e,n,r){const s=this._loader._getOrCreateMaterialAdapter(r),o=new Array,a=n.pbrMetallicRoughness;return a&&(a.baseColorFactor&&(s.baseColor=t.Color3.FromArray(a.baseColorFactor),s.geometryOpacity=a.baseColorFactor[3]),a.baseColorTexture&&o.push(this._loader.loadTextureInfoAsync(`${e}/baseColorTexture`,a.baseColorTexture,e=>{e.name=`${r.name} (Base Color)`,s.baseColorTexture=e}))),s.isUnlit=!0,n.doubleSided&&(s.backFaceCulling=!1,s.twoSidedLighting=!0),this._loader.loadMaterialAlphaProperties(e,n,r),Promise.all(o).then(()=>{})}}let Pt=!1;function Bt(){Pt||(Pt=!0,Ie(Nt),Fe(Nt,!0,e=>new kt(e)))}Bt();const Gt="KHR_materials_clearcoat";class Vt{constructor(e){this.name=Gt,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(Gt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadClearCoatPropertiesAsync(r,s,n)),yield Promise.all(o)}))}_loadClearCoatPropertiesAsync(e,t,n){const r=this._loader._getOrCreateMaterialAdapter(n),s=new Array;return r.configureCoat(),r.coatWeight=void 0!==t.clearcoatFactor?t.clearcoatFactor:0,r.coatRoughness=void 0!==t.clearcoatRoughnessFactor?t.clearcoatRoughnessFactor:0,t.clearcoatTexture&&s.push(this._loader.loadTextureInfoAsync(`${e}/clearcoatTexture`,t.clearcoatTexture,e=>{e.name=`${n.name} (ClearCoat)`,r.coatWeightTexture=e})),t.clearcoatRoughnessTexture&&(t.clearcoatRoughnessTexture.nonColorData=!0,s.push(this._loader.loadTextureInfoAsync(`${e}/clearcoatRoughnessTexture`,t.clearcoatRoughnessTexture,e=>{e.name=`${n.name} (ClearCoat Roughness)`,r.coatRoughnessTexture=e}))),t.clearcoatNormalTexture&&(t.clearcoatNormalTexture.nonColorData=!0,s.push(this._loader.loadTextureInfoAsync(`${e}/clearcoatNormalTexture`,t.clearcoatNormalTexture,e=>{var s;e.name=`${n.name} (ClearCoat Normal)`,r.geometryCoatNormalTexture=e,null!=(null===(s=t.clearcoatNormalTexture)||void 0===s?void 0:s.scale)&&(r.geometryCoatNormalTextureScale=t.clearcoatNormalTexture.scale)})),r.setNormalMapInversions(!n.getScene().useRightHandedSystem,n.getScene().useRightHandedSystem)),Promise.all(s).then(()=>{})}}let Dt=!1;function Ht(){Dt||(Dt=!0,Ie(Gt),Fe(Gt,!0,e=>new Vt(e)))}Ht();const $t="KHR_materials_coat";class Kt{constructor(e){this.name=$t,this.order=191,this.useOpenPBR=!1,this._loader=e,this.enabled=this._loader.isExtensionUsed($t)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),t.extensions&&t.extensions.KHR_materials_openpbr&&(this.useOpenPBR=!0),o.push(this._loadCoatPropertiesAsync(r,s,n)),yield Promise.all(o)}))}_loadCoatPropertiesAsync(e,n,r){var s,o;const a=this._loader._getOrCreateMaterialAdapter(r),i=new Array;a.configureCoat(),a.coatWeight=void 0!==n.coatFactor?n.coatFactor:0,a.coatRoughness=void 0!==n.coatRoughnessFactor?n.coatRoughnessFactor:0,n.coatTexture&&i.push(this._loader.loadTextureInfoAsync(`${e}/coatTexture`,n.coatTexture,e=>{e.name=`${r.name} (Coat)`,a.coatWeightTexture=e})),n.coatRoughnessTexture&&(n.coatRoughnessTexture.nonColorData=!0,i.push(this._loader.loadTextureInfoAsync(`${e}/coatRoughnessTexture`,n.coatRoughnessTexture,e=>{e.name=`${r.name} (Coat Roughness)`,a.coatRoughnessTexture=e}))),n.coatNormalTexture&&(n.coatNormalTexture.nonColorData=!0,i.push(this._loader.loadTextureInfoAsync(`${e}/coatNormalTexture`,n.coatNormalTexture,e=>{var t;e.name=`${r.name} (Coat Normal)`,a.geometryCoatNormalTexture=e,null!=(null===(t=n.coatNormalTexture)||void 0===t?void 0:t.scale)&&(a.geometryCoatNormalTextureScale=n.coatNormalTexture.scale)})),a.setNormalMapInversions(!r.getScene().useRightHandedSystem,r.getScene().useRightHandedSystem)),a.coatDarkening=void 0!==n.coatDarkeningFactor?n.coatDarkeningFactor:1,a.coatIor=void 0!==n.coatIor?n.coatIor:1.5;const l=t.Color3.White();void 0!==n.coatColorFactor&&l.fromArray(n.coatColorFactor),a.coatColor=l,n.coatColorTexture&&i.push(this._loader.loadTextureInfoAsync(`${e}/coatColorTexture`,n.coatColorTexture,e=>{e.name=`${r.name} (Coat Color)`,a.coatColorTexture=e}));const u=null!==(s=n.coatAnisotropyStrength)&&void 0!==s?s:0,c=null!==(o=n.coatAnisotropyRotation)&&void 0!==o?o:0;return a.coatRoughnessAnisotropy=u,a.geometryCoatTangentAngle=c,this.useOpenPBR||a.configureGltfStyleAnisotropy(!0),n.coatAnisotropyTexture&&(n.coatAnisotropyTexture.nonColorData=!0,i.push(this._loader.loadTextureInfoAsync(`${e}/coatAnisotropyTexture`,n.coatAnisotropyTexture,e=>{e.name=`${r.name} (Coat Anisotropy)`,a.geometryCoatTangentTexture=e}))),Promise.all(i).then(()=>{})}}let Wt=!1;function Ut(){Wt||(Wt=!0,Ie($t),Fe($t,!0,e=>new Kt(e)))}Ut();const zt="KHR_materials_iridescence";class jt{constructor(e){this.name=zt,this.order=195,this._loader=e,this.enabled=this._loader.isExtensionUsed(zt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadIridescencePropertiesAsync(r,s,n)),yield Promise.all(o).then(()=>{})}))}_loadIridescencePropertiesAsync(e,t,n){var r,s,o,a,i;const l=this._loader._getOrCreateMaterialAdapter(n),u=new Array;return l.thinFilmWeight=null!==(r=t.iridescenceFactor)&&void 0!==r?r:0,l.thinFilmIor=null!==(o=null!==(s=t.iridescenceIor)&&void 0!==s?s:t.iridescenceIOR)&&void 0!==o?o:1.3,l.thinFilmThicknessMinimum=null!==(a=t.iridescenceThicknessMinimum)&&void 0!==a?a:100,l.thinFilmThicknessMaximum=null!==(i=t.iridescenceThicknessMaximum)&&void 0!==i?i:400,t.iridescenceTexture&&u.push(this._loader.loadTextureInfoAsync(`${e}/iridescenceTexture`,t.iridescenceTexture,e=>{e.name=`${n.name} (Iridescence)`,l.thinFilmWeightTexture=e})),t.iridescenceThicknessTexture&&u.push(this._loader.loadTextureInfoAsync(`${e}/iridescenceThicknessTexture`,t.iridescenceThicknessTexture,e=>{e.name=`${n.name} (Iridescence Thickness)`,l.thinFilmThicknessTexture=e})),Promise.all(u).then(()=>{})}}let qt=!1;function Yt(){qt||(qt=!0,Ie(zt),Fe(zt,!0,e=>new jt(e)))}Yt();const Xt="KHR_materials_anisotropy";class Qt{constructor(e){this.name=Xt,this.order=195,this._loader=e,this.enabled=this._loader.isExtensionUsed(Xt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadAnisotropyPropertiesAsync(r,s,n)),yield Promise.all(o)}))}_loadAnisotropyPropertiesAsync(e,t,n){return A(this,void 0,void 0,function*(){var r,s,o;const a=this._loader._getOrCreateMaterialAdapter(n),i=new Array,l=null!==(r=t.anisotropyStrength)&&void 0!==r?r:0,u=null!==(s=t.anisotropyRotation)&&void 0!==s?s:0;a.specularRoughnessAnisotropy=l,a.geometryTangentAngle=u;const c=null!==(o=t.extensions)&&void 0!==o?o:{};c.EXT_materials_anisotropy_openpbr&&c.EXT_materials_anisotropy_openpbr.openPbrAnisotropyEnabled||a.configureGltfStyleAnisotropy(!0),t.anisotropyTexture&&(t.anisotropyTexture.nonColorData=!0,i.push(this._loader.loadTextureInfoAsync(`${e}/anisotropyTexture`,t.anisotropyTexture,e=>{e.name=`${n.name} (Anisotropy Intensity)`,a.geometryTangentTexture=e}))),yield Promise.all(i)})}}let Zt=!1;function Jt(){Zt||(Zt=!0,Ie(Xt),Fe(Xt,!0,e=>new Qt(e)))}Jt();const en="KHR_materials_emissive_strength";class tn{constructor(e){this.name=en,this.order=170,this._loader=e,this.enabled=this._loader.isExtensionUsed(en)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){return yield this._loader.loadMaterialPropertiesAsync(e,t,n),this._loadEmissiveProperties(r,s,n),yield Promise.resolve()}))}_loadEmissiveProperties(e,t,n){void 0!==t.emissiveStrength&&(this._loader._getOrCreateMaterialAdapter(n).emissionLuminance=t.emissiveStrength)}}let nn=!1;function rn(){nn||(nn=!0,Ie(en),Fe(en,!0,e=>new tn(e)))}rn();const sn="KHR_materials_sheen";class on{constructor(e){this.name=sn,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(sn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadSheenPropertiesAsync(r,s,n)),yield Promise.all(o).then(()=>{})}))}_loadSheenPropertiesAsync(e,n,r){const s=this._loader._getOrCreateMaterialAdapter(r),o=new Array;s.configureFuzz();const a=void 0!==n.sheenColorFactor?t.Color3.FromArray(n.sheenColorFactor):t.Color3.Black(),i=void 0!==n.sheenRoughnessFactor?n.sheenRoughnessFactor:0;return s.fuzzWeight=1,s.fuzzColor=a,s.fuzzRoughness=i,n.sheenColorTexture&&o.push(this._loader.loadTextureInfoAsync(`${e}/sheenColorTexture`,n.sheenColorTexture,e=>{e.name=`${r.name} (Sheen Color)`,s.fuzzColorTexture=e})),n.sheenRoughnessTexture&&(n.sheenRoughnessTexture.nonColorData=!0,o.push(this._loader.loadTextureInfoAsync(`${e}/sheenRoughnessTexture`,n.sheenRoughnessTexture,e=>{e.name=`${r.name} (Sheen Roughness)`,s.fuzzRoughnessTexture=e}))),Promise.all(o).then(()=>{})}}let an=!1;function ln(){an||(an=!0,Ie(sn),Fe(sn,!0,e=>new on(e)))}ln();const un="KHR_materials_fuzz";class cn{constructor(e){this.name=un,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(un)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadFuzzPropertiesAsync(r,s,n)),yield Promise.all(o).then(()=>{})}))}_loadFuzzPropertiesAsync(e,n,r){const s=this._loader._getOrCreateMaterialAdapter(r),o=new Array;return s.configureFuzz(),s.fuzzWeight=void 0!==n.fuzzFactor?n.fuzzFactor:0,s.fuzzColor=void 0!==n.fuzzColorFactor?t.Color3.FromArray(n.fuzzColorFactor):t.Color3.White(),s.fuzzRoughness=void 0!==n.fuzzRoughnessFactor?n.fuzzRoughnessFactor:.5,n.fuzzTexture&&o.push(this._loader.loadTextureInfoAsync(`${e}/fuzzTexture`,n.fuzzTexture,e=>{e.name=`${r.name} (Fuzz)`,s.fuzzWeightTexture=e})),n.fuzzColorTexture&&o.push(this._loader.loadTextureInfoAsync(`${e}/fuzzColorTexture`,n.fuzzColorTexture,e=>{e.name=`${r.name} (Fuzz Color)`,s.fuzzColorTexture=e})),n.fuzzRoughnessTexture&&(n.fuzzRoughnessTexture.nonColorData=!0,o.push(this._loader.loadTextureInfoAsync(`${e}/fuzzRoughnessTexture`,n.fuzzRoughnessTexture,e=>{e.name=`${r.name} (Fuzz Roughness)`,s.fuzzRoughnessTexture=e}))),Promise.all(o).then(()=>{})}}let hn=!1;function dn(){hn||(hn=!0,Ie(un),Fe(un,!0,e=>new cn(e)))}dn();const mn="KHR_materials_specular";class _n{constructor(e){this.name=mn,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(mn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadSpecularPropertiesAsync(r,s,n));const a=this._loader._getOrCreateMaterialAdapter(n);return s.extensions&&s.extensions.EXT_materials_specular_edge_color&&s.extensions.EXT_materials_specular_edge_color.specularEdgeColorEnabled&&a.enableSpecularEdgeColor(!0),yield Promise.all(o).then(()=>{})}))}_loadSpecularPropertiesAsync(e,n,r){var s;const o=this._loader._getOrCreateMaterialAdapter(r),a=new Array;return o.specularWeight=null!==(s=n.specularFactor)&&void 0!==s?s:1,o.specularColor=void 0!==n.specularColorFactor?t.Color3.FromArray(n.specularColorFactor):new t.Color3(1,1,1),n.specularTexture&&(n.specularTexture.nonColorData=!0,a.push(this._loader.loadTextureInfoAsync(`${e}/specularTexture`,n.specularTexture,e=>{e.name=`${r.name} (Specular)`,o.specularWeightTexture=e}))),n.specularColorTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/specularColorTexture`,n.specularColorTexture,e=>{e.name=`${r.name} (Specular Color)`,o.specularColorTexture=e})),Promise.all(a).then(()=>{})}}let pn=!1;function fn(){pn||(pn=!0,Ie(mn),Fe(mn,!0,e=>new _n(e)))}fn();const gn="KHR_materials_ior";class bn{constructor(e){this.name=gn,this.order=180,this._loader=e,this.enabled=this._loader.isExtensionUsed(gn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadIorPropertiesAsync(r,s,n)),yield Promise.all(o).then(()=>{})}))}_loadIorPropertiesAsync(e,t,n){const r=this._loader._getOrCreateMaterialAdapter(n),s=void 0!==t.ior?t.ior:bn._DEFAULT_IOR;return r.specularIor=s,Promise.resolve()}}bn._DEFAULT_IOR=1.5;let yn=!1;function Tn(){yn||(yn=!0,Ie(gn),Fe(gn,!0,e=>new bn(e)))}Tn();const vn="KHR_materials_variants";class xn{constructor(e){this.name=vn,this._loader=e,this.enabled=this._loader.isExtensionUsed(vn)&&!this._loader.parent.skipMaterials}dispose(){this._loader=null}static GetAvailableVariants(e){const t=this._GetExtensionMetadata(e);return t?Object.keys(t.variants):[]}getAvailableVariants(e){return xn.GetAvailableVariants(e)}static SelectVariant(e,t){const n=this._GetExtensionMetadata(e);if(!n)throw new Error(`Cannot select variant on a glTF mesh that does not have the ${vn} extension`);const r=e=>{const t=n.variants[e];if(t)for(const e of t)e.mesh.material=e.material};if(t instanceof Array)for(const e of t)r(e);else r(t);n.lastSelected=t}selectVariant(e,t){xn.SelectVariant(e,t)}static Reset(e){const t=this._GetExtensionMetadata(e);if(!t)throw new Error(`Cannot reset on a glTF mesh that does not have the ${vn} extension`);for(const e of t.original)e.mesh.material=e.material;t.lastSelected=null}reset(e){xn.Reset(e)}static GetLastSelectedVariant(e){const t=this._GetExtensionMetadata(e);if(!t)throw new Error(`Cannot get the last selected variant on a glTF mesh that does not have the ${vn} extension`);return t.lastSelected}getLastSelectedVariant(e){return xn.GetLastSelectedVariant(e)}static _GetExtensionMetadata(e){var t,n;return(null===(n=null===(t=null==e?void 0:e._internalMetadata)||void 0===t?void 0:t.gltf)||void 0===n?void 0:n[vn])||null}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._variants=t.variants}}onReady(){var e;const t=this._loader.rootBabylonMesh;if(t){const n=this._loader.parent.extensionOptions[vn];(null==n?void 0:n.defaultVariant)&&xn.SelectVariant(t,n.defaultVariant),null===(e=null==n?void 0:n.onLoaded)||void 0===e||e.call(n,{get variants(){return xn.GetAvailableVariants(t)},get selectedVariant(){const e=xn.GetLastSelectedVariant(t);return e?Array.isArray(e)?e[0]:e:xn.GetAvailableVariants(t)[0]},set selectedVariant(e){xn.SelectVariant(t,e)}})}}_loadMeshPrimitiveAsync(e,n,r,s,o,a){return Ge.LoadExtensionAsync(e,o,this.name,(i,l)=>A(this,void 0,void 0,function*(){const u=new Array;return u.push(this._loader._loadMeshPrimitiveAsync(e,n,r,s,o,n=>{if(a(n),n instanceof t.Mesh){const t=Ge._GetDrawMode(e,o.mode),r=this._loader.rootBabylonMesh,s=r?r._internalMetadata=r._internalMetadata||{}:{},a=s.gltf=s.gltf||{},c=a[vn]=a[vn]||{lastSelected:null,original:[],variants:{}};c.original.push({mesh:n,material:n.material});for(let e=0;e<l.mappings.length;++e){const s=l.mappings[e],o=Pe.Get(`${i}/mappings/${e}/material`,this._loader.gltf.materials,s.material);u.push(this._loader._loadMaterialAsync(`#/materials/${s.material}`,o,n,t,e=>{for(let t=0;t<s.variants.length;++t){const o=s.variants[t],a=Pe.Get(`/extensions/${vn}/variants/${o}`,this._variants,o);c.variants[a.name]=c.variants[a.name]||[],c.variants[a.name].push({mesh:n,material:e}),n.onClonedObservable.add(e=>{const t=e;let s,o=t;do{if(o=o.parent,!o)return;s=xn._GetExtensionMetadata(o)}while(null===s);if(r&&s===xn._GetExtensionMetadata(r)){o._internalMetadata={};for(const e in r._internalMetadata)o._internalMetadata[e]=r._internalMetadata[e];o._internalMetadata.gltf=[];for(const e in r._internalMetadata.gltf)o._internalMetadata.gltf[e]=r._internalMetadata.gltf[e];o._internalMetadata.gltf[vn]={lastSelected:null,original:[],variants:{}};for(const e of s.original)o._internalMetadata.gltf[vn].original.push({mesh:e.mesh,material:e.material});for(const e in s.variants)if(Object.prototype.hasOwnProperty.call(s.variants,e)){o._internalMetadata.gltf[vn].variants[e]=[];for(const t of s.variants[e])o._internalMetadata.gltf[vn].variants[e].push({mesh:t.mesh,material:t.material})}s=o._internalMetadata.gltf[vn]}for(const e of s.original)e.mesh===n&&(e.mesh=t);for(const e of s.variants[a.name])e.mesh===n&&(e.mesh=t)})}}))}}})),yield Promise.all(u).then(([e])=>e)}))}}let An=!1;function Cn(){An||(An=!0,Ie(vn),Fe(vn,!0,e=>new xn(e)))}Cn();class Rn{static _GetDefaultOptions(){return{renderSize:1024,samples:4,lodGenerationScale:1,lodGenerationOffset:-4,renderTargetTextureType:t.Constants.TEXTURETYPE_HALF_FLOAT,generateMipmaps:!0}}constructor(e,n){this._opaqueRenderTarget=null,this._opaqueMeshesCache=[],this._transparentMeshesCache=[],this._materialObservers={},this._newMeshObserver=null,this._removedMeshObserver=null,this._disposed=!1,this._materialImpls=[],this._adapterCache=new WeakMap,this._translucentMaterialIndices=new Map,this._opaqueOnlySubMeshes=new Map,this._savedSubMeshes=new Map,this._options=Object.assign(Object.assign({},Rn._GetDefaultOptions()),e),this._scene=n,this._scene._transmissionHelper=this,this.onErrorObservable=new t.Observable,this._scene.onDisposeObservable.addOnce(()=>{this.dispose()}),this._parseScene(),this._setupRenderTargets()}addMaterialImpl(e){this._materialImpls.some(t=>t.materialClass===e.materialClass)||this._materialImpls.push(e)}updateOptions(e){if(!Object.keys(e).filter(t=>this._options[t]!==e[t]).length)return;const t=Object.assign(Object.assign({},this._options),e),n=this._options;this._options=t,t.renderSize===n.renderSize&&t.renderTargetTextureType===n.renderTargetTextureType&&t.generateMipmaps===n.generateMipmaps&&this._opaqueRenderTarget?(this._opaqueRenderTarget.samples=t.samples,this._opaqueRenderTarget.lodGenerationScale=t.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=t.lodGenerationOffset):this._setupRenderTargets()}getOpaqueTarget(){return this._opaqueRenderTarget}_getOrCreateAdapter(e){let t=this._adapterCache.get(e);if(!t)for(const n of this._materialImpls)if(e instanceof n.materialClass){t=new n.adapterClass(e),this._adapterCache.set(e,t);break}return t}_classifyMeshMaterials(e){const n=e.material;if(!n)return"opaque";if(!(n instanceof t.MultiMaterial)){const e=this._getOrCreateAdapter(n);return e&&e.isTranslucent()?(e.refractionBackgroundTexture=this._opaqueRenderTarget,"transparent"):"opaque"}let r=!1,s=!1;const o=new Set;for(let e=0;e<n.subMaterials.length;e++){const t=n.subMaterials[e];if(!t){s=!0;continue}const a=this._getOrCreateAdapter(t);a&&a.isTranslucent()?(a.refractionBackgroundTexture=this._opaqueRenderTarget,r=!0,o.add(e)):s=!0}return r&&s?(this._translucentMaterialIndices.set(e,o),this._rebuildOpaqueOnlySubMeshes(e,o),"mixed"):(this._translucentMaterialIndices.delete(e),this._opaqueOnlySubMeshes.delete(e),r?"transparent":"opaque")}_rebuildOpaqueOnlySubMeshes(e,t){e.subMeshes&&this._opaqueOnlySubMeshes.set(e,e.subMeshes.filter(e=>!t.has(e.materialIndex)))}_addMesh(e){this._materialObservers[e.uniqueId]=e.onMaterialChangedObservable.add(this._onMeshMaterialChanged.bind(this)),t.Tools.SetImmediate(()=>{!this._disposed&&e.material&&("transparent"===this._classifyMeshMaterials(e)?-1===this._transparentMeshesCache.indexOf(e)&&this._transparentMeshesCache.push(e):-1===this._opaqueMeshesCache.indexOf(e)&&this._opaqueMeshesCache.push(e))})}_removeMesh(e){e.onMaterialChangedObservable.remove(this._materialObservers[e.uniqueId]),delete this._materialObservers[e.uniqueId];let t=this._transparentMeshesCache.indexOf(e);-1!==t&&this._transparentMeshesCache.splice(t,1),t=this._opaqueMeshesCache.indexOf(e),-1!==t&&this._opaqueMeshesCache.splice(t,1),this._translucentMaterialIndices.delete(e),this._opaqueOnlySubMeshes.delete(e)}_parseScene(){this._scene.meshes.forEach(this._addMesh.bind(this)),this._newMeshObserver=this._scene.onNewMeshAddedObservable.add(this._addMesh.bind(this)),this._removedMeshObserver=this._scene.onMeshRemovedObservable.add(this._removeMesh.bind(this))}_onMeshMaterialChanged(e){const t=this._transparentMeshesCache.indexOf(e),n=this._opaqueMeshesCache.indexOf(e);"transparent"===this._classifyMeshMaterials(e)?-1!==n?(this._opaqueMeshesCache.splice(n,1),this._transparentMeshesCache.push(e)):-1===t&&this._transparentMeshesCache.push(e):-1!==t?(this._transparentMeshesCache.splice(t,1),this._opaqueMeshesCache.push(e)):-1===n&&this._opaqueMeshesCache.push(e)}_isRenderTargetValid(){var e;return null!==(null===(e=this._opaqueRenderTarget)||void 0===e?void 0:e.getInternalTexture())}_setupRenderTargets(){var e,n;let r;this._opaqueRenderTarget&&this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=new t.RenderTargetTexture("opaqueSceneTexture",this._options.renderSize,this._scene,this._options.generateMipmaps,void 0,this._options.renderTargetTextureType),this._opaqueRenderTarget.ignoreCameraViewport=!0,this._opaqueRenderTarget.renderList=this._opaqueMeshesCache,this._opaqueRenderTarget.forceLayerMaskCheck=!0,this._opaqueRenderTarget.clearColor=null!==(n=null===(e=this._options.clearColor)||void 0===e?void 0:e.clone())&&void 0!==n?n:this._scene.clearColor.clone(),this._opaqueRenderTarget.clearColor.a=0,this._opaqueRenderTarget.gammaSpace=!1,this._opaqueRenderTarget.lodGenerationScale=this._options.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=this._options.lodGenerationOffset,this._opaqueRenderTarget.samples=this._options.samples,this._opaqueRenderTarget.renderSprites=!0,this._opaqueRenderTarget.renderParticles=!0,this._opaqueRenderTarget.disableImageProcessing=!0,this._opaqueRenderTarget.onBeforeBindObservable.add(e=>{r=this._scene.environmentIntensity,this._scene.environmentIntensity=1,this._options.clearColor?e.clearColor.copyFrom(this._options.clearColor):this._scene.clearColor.toLinearSpaceToRef(e.clearColor,this._scene.getEngine().useExactSrgbConversions),e.clearColor.a=0;const t=this._opaqueOnlySubMeshes.entries();for(let e=t.next();!e.done;e=t.next()){const t=e.value[0],n=e.value[1];t.subMeshes&&(this._savedSubMeshes.set(t,t.subMeshes),t.subMeshes=n)}}),this._opaqueRenderTarget.onAfterUnbindObservable.add(()=>{this._scene.environmentIntensity=r;const e=this._savedSubMeshes.entries();for(let t=e.next();!t.done;t=e.next())t.value[0].subMeshes=t.value[1];this._savedSubMeshes.clear()});for(const e of this._transparentMeshesCache)e.material&&this._classifyMeshMaterials(e);const s=this._translucentMaterialIndices.entries();for(let e=s.next();!e.done;e=s.next()){const t=e.value[0];t.material&&this._classifyMeshMaterials(t)}}dispose(){var e,t;this._disposed=!0,null===(e=this._newMeshObserver)||void 0===e||e.remove(),null===(t=this._removedMeshObserver)||void 0===t||t.remove(),this._newMeshObserver=null,this._removedMeshObserver=null;const n=[...this._transparentMeshesCache,...this._opaqueMeshesCache];for(const e of n){const t=this._materialObservers[e.uniqueId];t&&(t.remove(),delete this._materialObservers[e.uniqueId])}for(const e of this._scene.meshes){const t=this._materialObservers[e.uniqueId];t&&(t.remove(),delete this._materialObservers[e.uniqueId])}this._materialObservers={},this._scene._transmissionHelper=void 0,this._opaqueRenderTarget&&(this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=null),this._transparentMeshesCache=[],this._opaqueMeshesCache=[],this._translucentMaterialIndices.clear(),this._opaqueOnlySubMeshes.clear(),this._savedSubMeshes.clear()}}function wn(e,t){if(e.parent.dontUseTransmissionHelper)return;const n=t.getScene()._transmissionHelper,r=null!=n?n:new Rn({},t.getScene());for(const t of Array.from(e._pbrMaterialImpls.values()))r.addMaterialImpl(t);n&&!n._isRenderTargetValid()&&n._setupRenderTargets()}const Mn="KHR_materials_transmission";class On{constructor(e){this.name=Mn,this.order=175,this._loader=e,this.enabled=this._loader.isExtensionUsed(Mn),this.enabled&&(e.parent.transparencyAsCoverage=!0)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadTransparentPropertiesAsync(r,t,n,s)),yield Promise.all(o).then(()=>{})}))}_loadTransparentPropertiesAsync(e,t,n,r){const s=this._loader._getOrCreateMaterialAdapter(n),o=void 0!==r.transmissionFactor?r.transmissionFactor:0;if(0===o||!s)return Promise.resolve();s.configureTransmission(),s.transmissionWeight=o,o>0&&wn(this._loader,n);let a=Promise.resolve(null);return r.transmissionTexture&&(r.transmissionTexture.nonColorData=!0,a=this._loader.loadTextureInfoAsync(`${e}/transmissionTexture`,r.transmissionTexture,e=>{e.name=`${n.name} (Transmission)`,s.transmissionWeightTexture=e})),a.then(()=>{})}}let En=!1;function Ln(){En||(En=!0,Ie(Mn),Fe(Mn,!0,e=>new On(e)))}Ln();const Sn="KHR_materials_diffuse_transmission";class Fn{constructor(e){this.name=Sn,this.order=174,this._loader=e,this.enabled=this._loader.isExtensionUsed(Sn),this.enabled&&(e.parent.transparencyAsCoverage=!0)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadTranslucentPropertiesAsync(r,t,n,s)),yield Promise.all(o).then(()=>{})}))}_loadTranslucentPropertiesAsync(e,n,r,s){var o;const a=this._loader._getOrCreateMaterialAdapter(r);a.configureSubsurface(),a.subsurfaceWeight=null!==(o=s.diffuseTransmissionFactor)&&void 0!==o?o:0,a.subsurfaceWeight>0&&wn(this._loader,r),a.diffuseTransmissionTint=void 0!==s.diffuseTransmissionColorFactor?t.Color3.FromArray(s.diffuseTransmissionColorFactor):t.Color3.White();const i=new Array;return s.diffuseTransmissionTexture&&(s.diffuseTransmissionTexture.nonColorData=!0,i.push(this._loader.loadTextureInfoAsync(`${e}/diffuseTransmissionTexture`,s.diffuseTransmissionTexture).then(e=>{e.name=`${r.name} (Diffuse Transmission)`,a.subsurfaceWeightTexture=e}))),s.diffuseTransmissionColorTexture&&i.push(this._loader.loadTextureInfoAsync(`${e}/diffuseTransmissionColorTexture`,s.diffuseTransmissionColorTexture).then(e=>{e.name=`${r.name} (Diffuse Transmission Color)`,a.diffuseTransmissionTintTexture=e})),Promise.all(i).then(()=>{})}}let In=!1;function Nn(){In||(In=!0,Ie(Sn),Fe(Sn,!0,e=>new Fn(e)))}Nn();const kn="KHR_materials_volume";class Pn{constructor(e){this.name=kn,this.order=173,this._loader=e,this.enabled=this._loader.isExtensionUsed(kn),this.enabled&&this._loader._disableInstancedMesh++}dispose(){this.enabled&&this._loader._disableInstancedMesh--,this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadVolumePropertiesAsync(r,t,n,s)),yield Promise.all(o).then(()=>{})}))}_loadVolumePropertiesAsync(e,n,r,s){var o;const a=this._loader._getOrCreateMaterialAdapter(r);if(0===a.transmissionWeight&&0===a.subsurfaceWeight||!s.thicknessFactor)return Promise.resolve();a.geometryThinWalled=!1;const i=void 0!==s.attenuationDistance?s.attenuationDistance:Number.MAX_VALUE,l=void 0!==s.attenuationColor&&3==s.attenuationColor.length?t.Color3.FromArray(s.attenuationColor):t.Color3.White();a.configureVolume(),a.transmissionColor=l,a.transmissionDepth=i,a.volumeThickness=null!==(o=s.thicknessFactor)&&void 0!==o?o:0;const u=new Array;return s.thicknessTexture&&(s.thicknessTexture.nonColorData=!0,u.push(this._loader.loadTextureInfoAsync(`${e}/thicknessTexture`,s.thicknessTexture,e=>{e.name=`${r.name} (Thickness)`,a.volumeThicknessTexture=e}))),Promise.all(u).then(()=>{})}}let Bn=!1;function Gn(){Bn||(Bn=!0,Ie(kn),Fe(kn,!0,e=>new Pn(e)))}Gn();const Vn="KHR_materials_volume_scatter";class Dn{constructor(e){this.name=Vn,this.order=172,this._loader=e,this.enabled=this._loader.isExtensionUsed(Vn),this.enabled&&this._loader._disableInstancedMesh++}dispose(){this.enabled&&this._loader._disableInstancedMesh--,this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadVolumePropertiesAsync(r,t,n,s)),yield Promise.all(o).then(()=>{})}))}_loadVolumePropertiesAsync(e,n,r,s){const o=this._loader._getOrCreateMaterialAdapter(r);if(0===o.transmissionWeight&&0===o.subsurfaceWeight||o.geometryThinWalled)return Promise.resolve();const a=void 0!==s.multiscatterColorFactor&&3==s.multiscatterColorFactor.length?t.Color3.FromArray(s.multiscatterColorFactor):t.Color3.Black(),i=void 0!==s.scatterAnisotropy?s.scatterAnisotropy:0;let l=Promise.resolve(null);s.multiscatterColorTexture&&(s.multiscatterColorTexture.nonColorData=!0,l=this._loader.loadTextureInfoAsync(`${e}/multiscatterColorTexture`,s.multiscatterColorTexture,e=>{e.name=`${r.name} (Scatter Color)`,o.transmissionWeight>0&&(o.transmissionScatterTexture=e),o.subsurfaceWeight>0&&(o.subsurfaceColorTexture=e)}));const u=new t.Vector3(-Math.log(o.transmissionColor.r),-Math.log(o.transmissionColor.g),-Math.log(o.transmissionColor.b));if(u.scaleInPlace(1/Math.max(o.transmissionDepth,1e-6)),o.transmissionWeight>0){const e=function(e){const n=new t.Vector3(e.r,e.g,e.b),r=new t.Vector3(4.09712,4.09712,4.09712);r.addInPlace(new t.Vector3(4.20863,4.20863,4.20863).multiplyInPlace(n));const s=new t.Vector3(9.59217,9.59217,9.59217);return s.addInPlace(new t.Vector3(41.6808,41.6808,41.6808).multiplyInPlace(n)),s.addInPlace(new t.Vector3(17.7126,17.7126,17.7126).multiplyInPlace(n.multiply(n))),r.subtractInPlace(new t.Vector3(Math.sqrt(s.x),Math.sqrt(s.y),Math.sqrt(s.z))),new t.Vector3(1,1,1).subtract(r.multiply(r))}(a),n=u.multiply(e);n.scaleInPlace(o.transmissionDepth),o.transmissionScatter.set(n.x,n.y,n.z),o.transmissionScatterAnisotropy=i}if(o.subsurfaceWeight>0){o.subsurfaceScatterAnisotropy=i,o.subsurfaceColor=a;const e=new t.Vector3(0!==u.x?1/u.x:1,0!==u.y?1/u.y:1,0!==u.z?1/u.z:1);o.subsurfaceRadius=Math.max(e.x,e.y,e.z),o.subsurfaceRadiusScale=new t.Color3(e.x/o.subsurfaceRadius,e.y/o.subsurfaceRadius,e.z/o.subsurfaceRadius)}return l.then(()=>{})}}let Hn=!1;function $n(){Hn||(Hn=!0,Ie(Vn),Fe(Vn,!0,e=>new Dn(e)))}$n();const Kn="KHR_materials_dispersion";class Wn{constructor(e){this.name=Kn,this.order=174,this._loader=e,this.enabled=this._loader.isExtensionUsed(Kn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadDispersionPropertiesAsync(r,t,n,s)),yield Promise.all(o).then(()=>{})}))}_loadDispersionPropertiesAsync(e,t,n,r){const s=this._loader._getOrCreateMaterialAdapter(n);return 0!=s.transmissionWeight&&r.dispersion?(s.transmissionDispersionAbbeNumber=20,s.transmissionDispersionScale=r.dispersion,Promise.resolve()):Promise.resolve()}}let Un=!1;function zn(){Un||(Un=!0,Ie(Kn),Fe(Kn,!0,e=>new Wn(e)))}zn();const jn="KHR_materials_diffuse_roughness";class qn{constructor(e){this.name=jn,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(jn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),o.push(this._loadDiffuseRoughnessPropertiesAsync(r,s,n)),yield Promise.all(o).then(()=>{})}))}_loadDiffuseRoughnessPropertiesAsync(e,t,n){var r;const s=this._loader._getOrCreateMaterialAdapter(n),o=new Array;return s.baseDiffuseRoughness=null!==(r=t.diffuseRoughnessFactor)&&void 0!==r?r:0,t.diffuseRoughnessTexture&&o.push(this._loader.loadTextureInfoAsync(`${e}/diffuseRoughnessTexture`,t.diffuseRoughnessTexture,e=>{e.name=`${n.name} (Diffuse Roughness)`,s.baseDiffuseRoughnessTexture=e})),Promise.all(o).then(()=>{})}}let Yn=!1;function Xn(){Yn||(Yn=!0,Ie(jn),Fe(jn,!0,e=>new qn(e)))}Xn();const Qn="KHR_mesh_quantization";class Zn{constructor(e){this.name=Qn,this.enabled=e.isExtensionUsed(Qn)}dispose(){}}let Jn=!1;function er(){Jn||(Jn=!0,Ie(Qn),Fe(Qn,!0,e=>new Zn(e)))}er();const tr="KHR_texture_basisu";class nr{constructor(e){this.name=tr,this._loader=e,this.enabled=e.isExtensionUsed(tr)}dispose(){this._loader=null}_loadTextureAsync(e,t,n){return Ge.LoadExtensionAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){const o=null==t.sampler?Ge.DefaultSampler:Pe.Get(`${e}/sampler`,this._loader.gltf.samplers,t.sampler),a=Pe.Get(`${r}/source`,this._loader.gltf.images,s.source);return yield this._loader._createTextureAsync(e,o,a,e=>{n(e)},t._textureInfo.nonColorData?{useRGBAIfASTCBC7NotAvailableWhenUASTC:!0}:void 0,!t._textureInfo.nonColorData)}))}}let rr=!1;function sr(){rr||(rr=!0,Ie(tr),Fe(tr,!0,e=>new nr(e)))}sr();const or="KHR_texture_transform";class ar{constructor(e){this.name=or,this._loader=e,this.enabled=this._loader.isExtensionUsed(or)}dispose(){this._loader=null}loadTextureInfoAsync(e,n,r){return Ge.LoadExtensionAsync(e,n,this.name,(s,o)=>A(this,void 0,void 0,function*(){return yield this._loader.loadTextureInfoAsync(e,n,e=>{if(!(e instanceof t.Texture))throw new Error(`${s}: Texture type not supported`);o.offset&&(e.uOffset=o.offset[0],e.vOffset=o.offset[1]),e.uRotationCenter=0,e.vRotationCenter=0,o.rotation&&(e.wAng=-o.rotation),o.scale&&(e.uScale=o.scale[0],e.vScale=o.scale[1]),null!=o.texCoord&&(e.coordinatesIndex=o.texCoord),r(e)})}))}}let ir=!1;function lr(){ir||(ir=!0,Ie(or),Fe(or,!0,e=>new ar(e)))}lr();const ur="KHR_xmp_json_ld";class cr{constructor(e){this.name=ur,this.order=100,this._loader=e,this.enabled=this._loader.isExtensionUsed(ur)}dispose(){this._loader=null}onLoading(){var e,t,n;if(null===this._loader.rootBabylonMesh)return;const r=null===(e=this._loader.gltf.extensions)||void 0===e?void 0:e.KHR_xmp_json_ld,s=null===(n=null===(t=this._loader.gltf.asset)||void 0===t?void 0:t.extensions)||void 0===n?void 0:n.KHR_xmp_json_ld;if(r&&s){const e=+s.packet;r.packets&&e<r.packets.length&&(this._loader.rootBabylonMesh.metadata=this._loader.rootBabylonMesh.metadata||{},this._loader.rootBabylonMesh.metadata.xmp=r.packets[e])}}}let hr=!1;function dr(){hr||(hr=!0,Ie(ur),Fe(ur,!0,e=>new cr(e)))}dr();const mr="KHR_animation_pointer";class _r{constructor(e){this.name=mr,this._loader=e,this._pathToObjectConverter=we(this._loader.gltf)}get enabled(){return this._loader.isExtensionUsed(mr)}dispose(){this._loader=null,delete this._pathToObjectConverter}_loadAnimationChannelAsync(e,n,r,s,o){var a;const i=null===(a=s.target.extensions)||void 0===a?void 0:a.KHR_animation_pointer;if(!i||!this._pathToObjectConverter)return null;"pointer"!==s.target.path&&t.Logger.Warn(`${e}/target/path: Value (${s.target.path}) must be (pointer) when using the ${this.name} extension`),null!=s.target.node&&t.Logger.Warn(`${e}/target/node: Value (${s.target.node}) must not be present when using the ${this.name} extension`);const l=`${e}/extensions/${this.name}`,u=i.pointer;if(!u)throw new Error(`${l}: Pointer is missing`);try{const t=this._pathToObjectConverter.convert(u);if(!t.info.interpolation)throw new Error(`${l}/pointer: Interpolation is missing`);return this._loader._loadAnimationChannelFromTargetInfoAsync(e,n,r,s,{object:t.object,info:t.info.interpolation},o)}catch(e){return t.Logger.Warn(`${l}/pointer: Invalid pointer (${u}) skipped`),null}}}let pr=!1;function fr(){pr||(pr=!0,Ie(mr),Fe(mr,!0,e=>new _r(e)))}function gr(e,n,r,s){return t.Vector3.FromArray(n,r).scaleInPlace(s)}function br(e,n,r,s){return t.Quaternion.FromArray(n,r).scaleInPlace(s)}function yr(e,t,n,r){const s=new Array(e._numMorphTargets);for(let e=0;e<s.length;e++)s[e]=t[n++]*r;return s}class Tr{constructor(e,t,n,r){this.type=e,this.name=t,this.getValue=n,this.getStride=r}_buildAnimation(e,n,r){const s=new t.Animation(e,this.name,n,this.type);return s.setKeys(r,!0),s}}class vr extends Tr{buildAnimations(e,t,n,r){const s=[];return s.push({babylonAnimatable:e._babylonTransformNode,babylonAnimation:this._buildAnimation(t,n,r)}),s}}class xr extends Tr{buildAnimations(e,n,r,s){const o=[];if(e._numMorphTargets)for(let a=0;a<e._numMorphTargets;a++){const i=new t.Animation(`${n}_${a}`,this.name,r,this.type);if(i.setKeys(s.map(e=>({frame:e.frame,inTangent:e.inTangent?e.inTangent[a]:void 0,value:e.value[a],outTangent:e.outTangent?e.outTangent[a]:void 0,interpolation:e.interpolation})),!0),e._primitiveBabylonMeshes)for(const t of e._primitiveBabylonMeshes)if(t.morphTargetManager){const e=t.morphTargetManager.getTarget(a),n=i.clone();e.animations.push(n),o.push({babylonAnimatable:e,babylonAnimation:n})}}return o}}let Ar=!1;function Cr(){Ar||(Ar=!0,Oe("/nodes/{}/translation",[new vr(t.Animation.ANIMATIONTYPE_VECTOR3,"position",gr,()=>3)]),Oe("/nodes/{}/rotation",[new vr(t.Animation.ANIMATIONTYPE_QUATERNION,"rotationQuaternion",br,()=>4)]),Oe("/nodes/{}/scale",[new vr(t.Animation.ANIMATIONTYPE_VECTOR3,"scaling",gr,()=>3)]),Oe("/nodes/{}/weights",[new xr(t.Animation.ANIMATIONTYPE_FLOAT,"influence",yr,e=>e._numMorphTargets)]))}var Rr={__proto__:null,AnimationPropertyInfo:Tr,RegisterGLTFLoaderAnimation:Cr,TransformNodeAnimationPropertyInfo:vr,WeightAnimationPropertyInfo:xr,getQuaternion:br,getVector3:gr,getWeights:yr};function wr(e,n,r,s){return t.Color3.FromArray(n,r).scale(s)}function Mr(e,t,n,r){return t[n+3]*r}function Or(e,t,n,r){return t[n]*r}function Er(e,t,n,r){return-t[n]*r}function Lr(e,t,n,r){return t[n+1]*r}function Sr(e,t,n,r){return t[n]*r*2}function Fr(e){return{scale:[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,`${e}.uScale`,Or,()=>2),new Nr(t.Animation.ANIMATIONTYPE_FLOAT,`${e}.vScale`,Lr,()=>2)],offset:[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,`${e}.uOffset`,Or,()=>2),new Nr(t.Animation.ANIMATIONTYPE_FLOAT,`${e}.vOffset`,Lr,()=>2)],rotation:[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,`${e}.wAng`,Er,()=>1)]}}class Ir extends Tr{buildAnimations(e,t,n,r){return[{babylonAnimatable:e._babylonCamera,babylonAnimation:this._buildAnimation(t,n,r)}]}}class Nr extends Tr{buildAnimations(e,t,n,r){const s=[];for(const o in e._data)s.push({babylonAnimatable:e._data[o].babylonMaterial,babylonAnimation:this._buildAnimation(t,n,r)});return s}}class kr extends Tr{buildAnimations(e,t,n,r){return[{babylonAnimatable:e._babylonLight,babylonAnimation:this._buildAnimation(t,n,r)}]}}class Pr extends Tr{buildAnimations(e,t,n,r){return e._primitiveBabylonMeshes?e._primitiveBabylonMeshes.map(e=>({babylonAnimatable:e,babylonAnimation:this._buildAnimation(t,n,r)})):[]}}let Br=!1;!function(){if(Br)return;Br=!0,Cr(),Oe("/cameras/{}/orthographic/xmag",[new Ir(t.Animation.ANIMATIONTYPE_FLOAT,"orthoLeft",Er,()=>1),new Ir(t.Animation.ANIMATIONTYPE_FLOAT,"orthoRight",Lr,()=>1)]),Oe("/cameras/{}/orthographic/ymag",[new Ir(t.Animation.ANIMATIONTYPE_FLOAT,"orthoBottom",Er,()=>1),new Ir(t.Animation.ANIMATIONTYPE_FLOAT,"orthoTop",Lr,()=>1)]),Oe("/cameras/{}/orthographic/zfar",[new Ir(t.Animation.ANIMATIONTYPE_FLOAT,"maxZ",Or,()=>1)]),Oe("/cameras/{}/orthographic/znear",[new Ir(t.Animation.ANIMATIONTYPE_FLOAT,"minZ",Or,()=>1)]),Oe("/cameras/{}/perspective/yfov",[new Ir(t.Animation.ANIMATIONTYPE_FLOAT,"fov",Or,()=>1)]),Oe("/cameras/{}/perspective/zfar",[new Ir(t.Animation.ANIMATIONTYPE_FLOAT,"maxZ",Or,()=>1)]),Oe("/cameras/{}/perspective/znear",[new Ir(t.Animation.ANIMATIONTYPE_FLOAT,"minZ",Or,()=>1)]),Oe("/materials/{}/pbrMetallicRoughness/baseColorFactor",[new Nr(t.Animation.ANIMATIONTYPE_COLOR3,"albedoColor",wr,()=>4),new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"alpha",Mr,()=>4)]),Oe("/materials/{}/pbrMetallicRoughness/metallicFactor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"metallic",Or,()=>1)]),Oe("/materials/{}/pbrMetallicRoughness/metallicFactor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"roughness",Or,()=>1)]);const e=Fr("albedoTexture");Oe("/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale",e.scale),Oe("/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset",e.offset),Oe("/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/rotation",e.rotation);const n=Fr("metallicTexture");Oe("//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/scale",n.scale),Oe("//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/offset",n.offset),Oe("//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/rotation",n.rotation),Oe("/materials/{}/emissiveFactor",[new Nr(t.Animation.ANIMATIONTYPE_COLOR3,"emissiveColor",wr,()=>3)]);const r=Fr("bumpTexture");Oe("/materials/{}/normalTexture/scale",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"bumpTexture.level",Or,()=>1)]),Oe("/materials/{}/normalTexture/extensions/KHR_texture_transform/scale",r.scale),Oe("/materials/{}/normalTexture/extensions/KHR_texture_transform/offset",r.offset),Oe("/materials/{}/normalTexture/extensions/KHR_texture_transform/rotation",r.rotation),Oe("/materials/{}/occlusionTexture/strength",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"ambientTextureStrength",Or,()=>1)]);const s=Fr("ambientTexture");Oe("/materials/{}/occlusionTexture/extensions/KHR_texture_transform/scale",s.scale),Oe("/materials/{}/occlusionTexture/extensions/KHR_texture_transform/offset",s.offset),Oe("/materials/{}/occlusionTexture/extensions/KHR_texture_transform/rotation",s.rotation);const o=Fr("emissiveTexture");Oe("/materials/{}/emissiveTexture/extensions/KHR_texture_transform/scale",o.scale),Oe("/materials/{}/emissiveTexture/extensions/KHR_texture_transform/offset",o.offset),Oe("/materials/{}/emissiveTexture/extensions/KHR_texture_transform/rotation",o.rotation),Oe("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyStrength",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"anisotropy.intensity",Or,()=>1)]),Oe("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyRotation",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"anisotropy.angle",Or,()=>1)]);const a=Fr("anisotropy.texture");Oe("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/scale",a.scale),Oe("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/offset",a.offset),Oe("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/rotation",a.rotation),Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatFactor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"clearCoat.intensity",Or,()=>1)]),Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"clearCoat.roughness",Or,()=>1)]);const i=Fr("clearCoat.texture");Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/scale",i.scale),Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/offset",i.offset),Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/rotation",i.rotation);const l=Fr("clearCoat.bumpTexture");Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/scale",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"clearCoat.bumpTexture.level",Or,()=>1)]),Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/scale",l.scale),Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/offset",l.offset),Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/rotation",l.rotation);const u=Fr("clearCoat.textureRoughness");Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/scale",u.scale),Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/offset",u.offset),Oe("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/rotation",u.rotation),Oe("/materials/{}/extensions/KHR_materials_dispersion/dispersionFactor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"subSurface.dispersion",Or,()=>1)]),Oe("/materials/{}/extensions/KHR_materials_emissive_strength/emissiveStrength",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"emissiveIntensity",Or,()=>1)]),Oe("/materials/{}/extensions/KHR_materials_ior/ior",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"indexOfRefraction",Or,()=>1)]),Oe("/materials/{}/extensions/KHR_materials_iridescence/iridescenceFactor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"iridescence.intensity",Or,()=>1)]),Oe("/materials/{}/extensions/KHR_materials_iridescence/iridescenceIor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"iridescence.indexOfRefraction",Or,()=>1)]),Oe("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessMinimum",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"iridescence.minimumThickness",Or,()=>1)]),Oe("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessMaximum",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"iridescence.maximumThickness",Or,()=>1)]);const c=Fr("iridescence.texture");Oe("/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/scale",c.scale),Oe("/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/offset",c.offset),Oe("/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/rotation",c.rotation);const h=Fr("iridescence.thicknessTexture");Oe("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/scale",h.scale),Oe("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/offset",h.offset),Oe("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/rotation",h.rotation),Oe("/materials/{}/extensions/KHR_materials_sheen/sheenColorFactor",[new Nr(t.Animation.ANIMATIONTYPE_COLOR3,"sheen.color",wr,()=>3)]),Oe("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessFactor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"sheen.roughness",Or,()=>1)]);const d=Fr("sheen.texture");Oe("/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/scale",d.scale),Oe("/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/offset",d.offset),Oe("/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/rotation",d.rotation);const m=Fr("sheen.textureRoughness");Oe("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/scale",m.scale),Oe("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/offset",m.offset),Oe("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/rotation",m.rotation),Oe("/materials/{}/extensions/KHR_materials_specular/specularFactor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"metallicF0Factor",Or,()=>1)]),Oe("/materials/{}/extensions/KHR_materials_specular/specularColorFactor",[new Nr(t.Animation.ANIMATIONTYPE_COLOR3,"metallicReflectanceColor",wr,()=>3)]);const _=Fr("metallicReflectanceTexture");Oe("/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/scale",_.scale),Oe("/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/offset",_.offset),Oe("/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/rotation",_.rotation);const p=Fr("reflectanceTexture");Oe("/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/scale",p.scale),Oe("/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/offset",p.offset),Oe("/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/rotation",p.rotation),Oe("/materials/{}/extensions/KHR_materials_transmission/transmissionFactor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"subSurface.refractionIntensity",Or,()=>1)]);const f=Fr("subSurface.refractionIntensityTexture");Oe("/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/scale",f.scale),Oe("/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/offset",f.offset),Oe("/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/rotation",f.rotation),Oe("/materials/{}/extensions/KHR_materials_volume/attenuationColor",[new Nr(t.Animation.ANIMATIONTYPE_COLOR3,"subSurface.tintColor",wr,()=>3)]),Oe("/materials/{}/extensions/KHR_materials_volume/attenuationDistance",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"subSurface.tintColorAtDistance",Or,()=>1)]),Oe("/materials/{}/extensions/KHR_materials_volume/thicknessFactor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"subSurface.maximumThickness",Or,()=>1)]);const g=Fr("subSurface.thicknessTexture");Oe("/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/scale",g.scale),Oe("/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/offset",g.offset),Oe("/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/rotation",g.rotation),Oe("/materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionFactor",[new Nr(t.Animation.ANIMATIONTYPE_FLOAT,"subSurface.translucencyIntensity",Or,()=>1)]);const b=Fr("subSurface.translucencyIntensityTexture");Oe("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/scale",b.scale),Oe("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/offset",b.offset),Oe("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/rotation",b.rotation),Oe("/materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorFactor",[new Nr(t.Animation.ANIMATIONTYPE_COLOR3,"subSurface.translucencyColor",wr,()=>3)]);const y=Fr("subSurface.translucencyColorTexture");Oe("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/scale",y.scale),Oe("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/offset",y.offset),Oe("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/rotation",y.rotation),Oe("/extensions/KHR_lights_punctual/lights/{}/color",[new kr(t.Animation.ANIMATIONTYPE_COLOR3,"diffuse",wr,()=>3)]),Oe("/extensions/KHR_lights_punctual/lights/{}/intensity",[new kr(t.Animation.ANIMATIONTYPE_FLOAT,"intensity",Or,()=>1)]),Oe("/extensions/KHR_lights_punctual/lights/{}/range",[new kr(t.Animation.ANIMATIONTYPE_FLOAT,"range",Or,()=>1)]),Oe("/extensions/KHR_lights_punctual/lights/{}/spot/innerConeAngle",[new kr(t.Animation.ANIMATIONTYPE_FLOAT,"innerAngle",Sr,()=>1)]),Oe("/extensions/KHR_lights_punctual/lights/{}/spot/outerConeAngle",[new kr(t.Animation.ANIMATIONTYPE_FLOAT,"angle",Sr,()=>1)]),Oe("/extensions/EXT_lights_area/lights/{}/color",[new kr(t.Animation.ANIMATIONTYPE_COLOR3,"diffuse",wr,()=>3)]),Oe("/extensions/EXT_lights_area/lights/{}/intensity",[new kr(t.Animation.ANIMATIONTYPE_FLOAT,"intensity",Or,()=>1)]),Oe("/extensions/EXT_lights_area/lights/{}/size",[new kr(t.Animation.ANIMATIONTYPE_FLOAT,"radius",Or,()=>1)]),Oe("/extensions/EXT_lights_area/lights/{}/rect/aspect",[new kr(t.Animation.ANIMATIONTYPE_FLOAT,"radius",Or,()=>1)]),Oe("/nodes/{}/extensions/EXT_lights_ies/color",[new kr(t.Animation.ANIMATIONTYPE_COLOR3,"diffuse",wr,()=>3)]),Oe("/nodes/{}/extensions/EXT_lights_ies/multiplier",[new kr(t.Animation.ANIMATIONTYPE_FLOAT,"intensity",Or,()=>1)]),Oe("/nodes/{}/extensions/KHR_node_visibility/visible",[new Pr(t.Animation.ANIMATIONTYPE_FLOAT,"isVisible",Or,()=>1)])}(),fr();const Gr="MSFT_audio_emitter";class Vr{constructor(e){this.name=Gr,this._loader=e,this.enabled=this._loader.isExtensionUsed(Gr)}dispose(){this._loader=null,this._clips=null,this._emitters=null}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._clips=t.clips,this._emitters=t.emitters,Pe.Assign(this._clips),Pe.Assign(this._emitters)}}loadSceneAsync(e,t){return Ge.LoadExtensionAsync(e,t,this.name,(n,r)=>A(this,void 0,void 0,function*(){const s=new Array;s.push(this._loader.loadSceneAsync(e,t));for(const e of r.emitters){const t=Pe.Get(`${n}/emitters`,this._emitters,e);if(null!=t.refDistance||null!=t.maxDistance||null!=t.rolloffFactor||null!=t.distanceModel||null!=t.innerAngle||null!=t.outerAngle)throw new Error(`${n}: Direction or Distance properties are not allowed on emitters attached to a scene`);s.push(this._loadEmitterAsync(`${n}/emitters/${t.index}`,t))}yield Promise.all(s)}))}loadNodeAsync(e,n,r){return Ge.LoadExtensionAsync(e,n,this.name,(e,s)=>A(this,void 0,void 0,function*(){const o=new Array,a=yield this._loader.loadNodeAsync(e,n,n=>{for(const r of s.emitters){const s=Pe.Get(`${e}/emitters`,this._emitters,r);o.push(this._loadEmitterAsync(`${e}/emitters/${s.index}`,s).then(()=>{for(const e of s._babylonSounds)e.attachToMesh(n),null==s.innerAngle&&null==s.outerAngle||(e.setLocalDirectionToMesh(t.Vector3.Forward()),e.setDirectionalCone(2*t.Tools.ToDegrees(null==s.innerAngle?Math.PI:s.innerAngle),2*t.Tools.ToDegrees(null==s.outerAngle?Math.PI:s.outerAngle),0))}))}r(n)});return yield Promise.all(o),a}))}loadAnimationAsync(e,t){return Ge.LoadExtensionAsync(e,t,this.name,(n,r)=>A(this,void 0,void 0,function*(){const s=yield this._loader.loadAnimationAsync(e,t),o=new Array;Pe.Assign(r.events);for(const a of r.events)o.push(this._loadAnimationEventAsync(`${n}/events/${a.index}`,e,t,a,s));return yield Promise.all(o),s}))}_loadClipAsync(e,n){if(n._objectURL)return n._objectURL;let r;if(n.uri)r=this._loader.loadUriAsync(e,n,n.uri);else{const t=Pe.Get(`${e}/bufferView`,this._loader.gltf.bufferViews,n.bufferView);r=this._loader.loadBufferViewAsync(`/bufferViews/${t.index}`,t)}return n._objectURL=r.then(e=>{const r=t.GetBlobBufferSource(e);return URL.createObjectURL(new Blob([r],{type:n.mimeType}))}),n._objectURL}_loadEmitterAsync(e,n){if(n._babylonSounds=n._babylonSounds||[],!n._babylonData){const e=new Array,r=n.name||`emitter${n.index}`,s={loop:!1,autoplay:!1,volume:null==n.volume?1:n.volume};for(let o=0;o<n.clips.length;o++){const a=`/extensions/${this.name}/clips`,i=Pe.Get(a,this._clips,n.clips[o].clip);e.push(this._loadClipAsync(`${a}/${n.clips[o].clip}`,i).then(e=>{const a=n._babylonSounds[o]=new t.Sound(r,e,this._loader.babylonScene,null,s);a.refDistance=n.refDistance||1,a.maxDistance=n.maxDistance||256,a.rolloffFactor=n.rolloffFactor||1,a.distanceModel=n.distanceModel||"exponential"}))}const o=Promise.all(e).then(()=>{const e=n.clips.map(e=>e.weight||1),r=new t.WeightedSound(n.loop||!1,n._babylonSounds,e);n.innerAngle&&(r.directionalConeInnerAngle=2*t.Tools.ToDegrees(n.innerAngle)),n.outerAngle&&(r.directionalConeOuterAngle=2*t.Tools.ToDegrees(n.outerAngle)),n.volume&&(r.volume=n.volume),n._babylonData.sound=r});n._babylonData={loaded:o}}return n._babylonData.loaded}_getEventAction(e,t,n,r,s){switch(n){case"play":return e=>{const n=(s||0)+(e-r);t.play(n)};case"stop":return()=>{t.stop()};case"pause":return()=>{t.pause()};default:throw new Error(`${e}: Unsupported action ${n}`)}}_loadAnimationEventAsync(e,n,r,s,o){if(0==o.targetedAnimations.length)return Promise.resolve();const a=o.targetedAnimations[0],i=s.emitter,l=Pe.Get(`/extensions/${this.name}/emitters`,this._emitters,i);return this._loadEmitterAsync(e,l).then(()=>{const n=l._babylonData.sound;if(n){const r=new t.AnimationEvent(s.time,this._getEventAction(e,n,s.action,s.time,s.startOffset));a.animation.addEvent(r),o.onAnimationGroupEndObservable.add(()=>{n.stop()}),o.onAnimationGroupPauseObservable.add(()=>{n.pause()})}})}}let Dr=!1;function Hr(){Dr||(Dr=!0,Ie(Gr),Fe(Gr,!0,e=>new Vr(e)))}Hr();const $r="MSFT_lod";class Kr{constructor(e){var n,r;this.name=$r,this.order=100,this.maxLODsToLoad=10,this.onNodeLODsLoadedObservable=new t.Observable,this.onMaterialLODsLoadedObservable=new t.Observable,this._bufferLODs=new Array,this._nodeIndexLOD=null,this._nodeSignalLODs=new Array,this._nodePromiseLODs=new Array,this._nodeBufferLODs=new Array,this._materialIndexLOD=null,this._materialSignalLODs=new Array,this._materialPromiseLODs=new Array,this._materialBufferLODs=new Array,this._loader=e,this.maxLODsToLoad=null!==(r=null===(n=this._loader.parent.extensionOptions[$r])||void 0===n?void 0:n.maxLODsToLoad)&&void 0!==r?r:this.maxLODsToLoad,this.enabled=this._loader.isExtensionUsed($r)}dispose(){this._loader=null,this._nodeIndexLOD=null,this._nodeSignalLODs.length=0,this._nodePromiseLODs.length=0,this._nodeBufferLODs.length=0,this._materialIndexLOD=null,this._materialSignalLODs.length=0,this._materialPromiseLODs.length=0,this._materialBufferLODs.length=0,this.onMaterialLODsLoadedObservable.clear(),this.onNodeLODsLoadedObservable.clear()}onReady(){for(let e=0;e<this._nodePromiseLODs.length;e++){const t=Promise.all(this._nodePromiseLODs[e]).then(()=>{0!==e&&(this._loader.endPerformanceCounter(`Node LOD ${e}`),this._loader.log(`Loaded node LOD ${e}`)),this.onNodeLODsLoadedObservable.notifyObservers(e),e!==this._nodePromiseLODs.length-1&&(this._loader.startPerformanceCounter(`Node LOD ${e+1}`),this._loadBufferLOD(this._nodeBufferLODs,e+1),this._nodeSignalLODs[e]&&this._nodeSignalLODs[e].resolve())});this._loader._completePromises.push(t)}for(let e=0;e<this._materialPromiseLODs.length;e++){const t=Promise.all(this._materialPromiseLODs[e]).then(()=>{0!==e&&(this._loader.endPerformanceCounter(`Material LOD ${e}`),this._loader.log(`Loaded material LOD ${e}`)),this.onMaterialLODsLoadedObservable.notifyObservers(e),e!==this._materialPromiseLODs.length-1&&(this._loader.startPerformanceCounter(`Material LOD ${e+1}`),this._loadBufferLOD(this._materialBufferLODs,e+1),this._materialSignalLODs[e]&&this._materialSignalLODs[e].resolve())});this._loader._completePromises.push(t)}}loadSceneAsync(e,t){const n=this._loader.loadSceneAsync(e,t);return this._loadBufferLOD(this._bufferLODs,0),n}loadNodeAsync(e,n,r){return Ge.LoadExtensionAsync(e,n,this.name,(e,s)=>A(this,void 0,void 0,function*(){let o;const a=this._getLODs(e,n,this._loader.gltf.nodes,s.ids);this._loader.logOpen(`${e}`);for(let e=0;e<a.length;e++){const n=a[e];0!==e&&(this._nodeIndexLOD=e,this._nodeSignalLODs[e]=this._nodeSignalLODs[e]||new t.Deferred);const s=e=>{r(e),e.setEnabled(!1)},i=this._loader.loadNodeAsync(`/nodes/${n.index}`,n,s).then(t=>{if(0!==e){const t=a[e-1];t._babylonTransformNode&&(this._disposeTransformNode(t._babylonTransformNode),delete t._babylonTransformNode)}return t.setEnabled(!0),t});this._nodePromiseLODs[e]=this._nodePromiseLODs[e]||[],0===e?o=i:(this._nodeIndexLOD=null,this._nodePromiseLODs[e].push(i))}return this._loader.logClose(),yield o}))}_loadMaterialAsync(e,t,n,r,s){return this._nodeIndexLOD?null:Ge.LoadExtensionAsync(e,t,this.name,(e,o)=>A(this,void 0,void 0,function*(){let a;const i=this._getLODs(e,t,this._loader.gltf.materials,o.ids);this._loader.logOpen(`${e}`);for(let e=0;e<i.length;e++){const t=i[e];0!==e&&(this._materialIndexLOD=e);const o=this._loader._loadMaterialAsync(`/materials/${t.index}`,t,n,r,t=>{0===e&&s(t)}).then(t=>{if(0!==e){s(t);const n=i[e-1]._data;n[r]&&(this._disposeMaterials([n[r].babylonMaterial]),delete n[r])}return t});this._materialPromiseLODs[e]=this._materialPromiseLODs[e]||[],0===e?a=o:(this._materialIndexLOD=null,this._materialPromiseLODs[e].push(o))}return this._loader.logClose(),yield a}))}_loadUriAsync(e,n,r){if(null!==this._nodeIndexLOD){this._loader.log("deferred");const s=this._nodeIndexLOD-1;return this._nodeSignalLODs[s]=this._nodeSignalLODs[s]||new t.Deferred,this._nodeSignalLODs[this._nodeIndexLOD-1].promise.then(()=>A(this,void 0,void 0,function*(){return yield this._loader.loadUriAsync(e,n,r)}))}if(null!==this._materialIndexLOD){this._loader.log("deferred");const s=this._materialIndexLOD-1;return this._materialSignalLODs[s]=this._materialSignalLODs[s]||new t.Deferred,this._materialSignalLODs[s].promise.then(()=>A(this,void 0,void 0,function*(){return yield this._loader.loadUriAsync(e,n,r)}))}return null}loadBufferAsync(e,n,r,s){if(this._loader.parent.useRangeRequests&&!n.uri){if(!this._loader.bin)throw new Error(`${e}: Uri is missing or the binary glTF is missing its binary chunk`);const n=(e,n)=>A(this,void 0,void 0,function*(){const o=r,a=o+s-1;let i=e[n];return i?(i.start=Math.min(i.start,o),i.end=Math.max(i.end,a)):(i={start:o,end:a,loaded:new t.Deferred},e[n]=i),yield i.loaded.promise.then(e=>new Uint8Array(e.buffer,e.byteOffset+r-i.start,s))});return this._loader.log("deferred"),null!==this._nodeIndexLOD?n(this._nodeBufferLODs,this._nodeIndexLOD):null!==this._materialIndexLOD?n(this._materialBufferLODs,this._materialIndexLOD):n(this._bufferLODs,0)}return null}_loadBufferLOD(e,t){const n=e[t];n&&(this._loader.log(`Loading buffer range [${n.start}-${n.end}]`),this._loader.bin.readAsync(n.start,n.end-n.start+1).then(e=>{n.loaded.resolve(e)},e=>{n.loaded.reject(e)}))}_getLODs(e,t,n,r){if(this.maxLODsToLoad<=0)throw new Error("maxLODsToLoad must be greater than zero");const s=[];for(let t=r.length-1;t>=0;t--)if(s.push(Pe.Get(`${e}/ids/${r[t]}`,n,r[t])),s.length===this.maxLODsToLoad)return s;return s.push(t),s}_disposeTransformNode(e){const t=[],n=e.material;n&&t.push(n);for(const n of e.getChildMeshes())n.material&&t.push(n.material);e.dispose();const r=t.filter(e=>this._loader.babylonScene.meshes.every(t=>t.material!=e));this._disposeMaterials(r)}_disposeMaterials(e){const t={};for(const n of e){for(const e of n.getActiveTextures())t[e.uniqueId]=e;n.dispose()}for(const e in t)for(const n of this._loader.babylonScene.materials)n.hasTexture(t[e])&&delete t[e];for(const e in t)t[e].dispose()}}let Wr=!1;function Ur(){Wr||(Wr=!0,Ie($r),Fe($r,!0,e=>new Kr(e)))}Ur();const zr="MSFT_minecraftMesh";class jr{constructor(e){this.name=zr,this._loader=e,this.enabled=this._loader.isExtensionUsed(zr)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtraAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){if(s){if(!this._loader._pbrMaterialImpls.get("pbr"))throw new Error(`${r}: Material type not supported`);const s=this._loader.loadMaterialPropertiesAsync(e,t,n);return n.needAlphaBlending()&&(n.forceDepthWrite=!0,n.separateCullingPass=!0),n.backFaceCulling=n.forceDepthWrite,n.twoSidedLighting=!0,yield s}}))}}let qr=!1;function Yr(){qr||(qr=!0,Ie(zr),Fe(zr,!0,e=>new jr(e)))}Yr();const Xr="MSFT_sRGBFactors";class Qr{constructor(e){this.name=Xr,this._loader=e,this.enabled=this._loader.isExtensionUsed(Xr)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ge.LoadExtraAsync(e,t,this.name,(r,s)=>A(this,void 0,void 0,function*(){if(s){const r=this._loader._getOrCreateMaterialAdapter(n),s=this._loader.loadMaterialPropertiesAsync(e,t,n),o=n.getScene().getEngine().useExactSrgbConversions;return r.baseColorTexture||r.baseColor.toLinearSpaceToRef(r.baseColor,o),r.specularColorTexture||r.specularColor.toLinearSpaceToRef(r.specularColor,o),yield s}}))}}let Zr=!1;function Jr(){Zr||(Zr=!0,Ie(Xr),Fe(Xr,!0,e=>new Qr(e)))}function es(e){const[t,n]=e.split(":");return ts({op:t,extension:n})}function ts(e,n=!0){var r;const s=e.extension?null===(r=rs[e.extension])||void 0===r?void 0:r[e.op]:ss[e.op];if(!s&&(t.Logger.Warn(`No mapping found for operation ${e.op} and extension ${e.extension||"KHR_interactivity"}`),n)){const t={},n={flows:{}};if(e.inputValueSockets){t.values={};for(const n in e.inputValueSockets)t.values[n]={name:n}}return e.outputValueSockets&&(n.values={},Object.keys(e.outputValueSockets).forEach(e=>{n.values[e]={name:e}})),{blocks:[],inputs:t,outputs:n}}return s}function ns(e,t,n){rs[t]||(rs[t]={}),rs[t][e]=n}Jr();const rs={BABYLON:{"flow/log":{blocks:["FlowGraphConsoleLogBlock"],inputs:{values:{message:{name:"message"}}}}}},ss={"event/onStart":{blocks:["FlowGraphSceneReadyEventBlock"],outputs:{values:{event:{name:"event"}},flows:{out:{name:"done"}}}},"event/onTick":{blocks:["FlowGraphSceneTickEventBlock"],inputs:{},outputs:{values:{timeSinceLastTick:{name:"deltaTime",gltfType:"number"},event:{name:"event"}},flows:{out:{name:"done"}}}},"event/send":{blocks:["FlowGraphSendCustomEventBlock"],extraProcessor(e,t,n,r,s){var o;if("event/send"!==t.op||!e.configuration||1!==Object.keys(e.configuration).length)throw new Error("Receive event should have a single configuration object, the event itself");const a=null===(o=e.configuration.event.value)||void 0===o?void 0:o[0];if("number"!=typeof a)throw new Error("Event id should be a number");const i=r.arrays.events[a],l=s[0];return l.config||(l.config={}),l.config.eventId=i.eventId,l.config.eventData=i.eventData,s}},"event/receive":{blocks:["FlowGraphReceiveCustomEventBlock"],outputs:{values:{event:{name:"event"}},flows:{out:{name:"done"}}},validation(e,n){var r,s;if(!e.configuration)return t.Logger.Error("Receive event should have a configuration object"),{valid:!1,error:"Receive event should have a configuration object"};const o=e.configuration.event;if(!o)return t.Logger.Error("Receive event should have a single configuration object, the event itself"),{valid:!1,error:"Receive event should have a single configuration object, the event itself"};const a=null===(r=o.value)||void 0===r?void 0:r[0];return"number"!=typeof a?(t.Logger.Error("Event id should be a number"),{valid:!1,error:"Event id should be a number"}):(null===(s=n.events)||void 0===s?void 0:s[a])?{valid:!0}:(t.Logger.Error(`Event with id ${a} not found`),{valid:!1,error:`Event with id ${a} not found`})},extraProcessor(e,t,n,r,s){var o;if("event/receive"!==t.op||!e.configuration||1!==Object.keys(e.configuration).length)throw new Error("Receive event should have a single configuration object, the event itself");const a=null===(o=e.configuration.event.value)||void 0===o?void 0:o[0];if("number"!=typeof a)throw new Error("Event id should be a number");const i=r.arrays.events[a],l=s[0];return l.config||(l.config={}),l.config.eventId=i.eventId,l.config.eventData=i.eventData,s}},"event/stopPropagation":{blocks:["FlowGraphStopEventPropagationBlock"],inputs:{values:{event:{name:"event"},stopImmediate:{name:"stopImmediate"}},flows:{in:{name:"in"}}},outputs:{flows:{out:{name:"out"}}}},"math/E":os("FlowGraphEBlock"),"math/Pi":os("FlowGraphPIBlock"),"math/Tau":os("FlowGraphTauBlock"),"math/Inf":os("FlowGraphInfBlock"),"math/NaN":os("FlowGraphNaNBlock"),"math/abs":os("FlowGraphAbsBlock"),"math/sign":os("FlowGraphSignBlock"),"math/trunc":os("FlowGraphTruncBlock"),"math/floor":os("FlowGraphFloorBlock"),"math/ceil":os("FlowGraphCeilBlock"),"math/round":{blocks:["FlowGraphRoundBlock"],configuration:{},inputs:{values:{a:{name:"a"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,r,s){var o;return(o=s[0]).config||(o.config={}),s[0].config.roundHalfAwayFromZero=!0,s}},"math/fract":os("FlowGraphFractBlock"),"math/neg":os("FlowGraphNegationBlock"),"math/add":os("FlowGraphAddBlock",["a","b"],!0),"math/sub":os("FlowGraphSubtractBlock",["a","b"],!0),"math/mul":{blocks:["FlowGraphMultiplyBlock"],extraProcessor(e,t,n,r,s){var o;(o=s[0]).config||(o.config={}),s[0].config.useMatrixPerComponent=!0,s[0].config.preventIntegerFloatArithmetic=!0;let a=-1;return Object.keys(e.values||{}).find(t=>{var n;return void 0!==(null===(n=e.values)||void 0===n?void 0:n[t].type)&&(a=e.values[t].type,!0)}),-1!==a&&(s[0].config.type=r.arrays.types[a].flowGraphType),s},validation:e=>e.values?as(e):{valid:!0}},"math/div":os("FlowGraphDivideBlock",["a","b"],!0),"math/rem":os("FlowGraphModuloBlock",["a","b"]),"math/min":os("FlowGraphMinBlock",["a","b"]),"math/max":os("FlowGraphMaxBlock",["a","b"]),"math/clamp":os("FlowGraphClampBlock",["a","b","c"]),"math/saturate":os("FlowGraphSaturateBlock"),"math/mix":os("FlowGraphMathInterpolationBlock",["a","b","c"]),"math/smoothStep":os("FlowGraphSmoothStepBlock",["a","b","c"]),"math/rgbToOkLCh":{blocks:["FlowGraphRGBToOkLChBlock"],inputs:{values:{r:{name:"r",gltfType:"number"},g:{name:"g",gltfType:"number"},b:{name:"b",gltfType:"number"}}},outputs:{values:{l:{name:"l"},c:{name:"c"},h:{name:"h"}}}},"math/rgbFromOkLCh":{blocks:["FlowGraphRGBFromOkLChBlock"],inputs:{values:{l:{name:"l",gltfType:"number"},c:{name:"c",gltfType:"number"},h:{name:"h",gltfType:"number"}}},outputs:{values:{r:{name:"r"},g:{name:"g"},b:{name:"b"}}}},"math/quatSlerp":os("FlowGraphMathSlerpBlock",["a","b","c"]),"math/slerp":os("FlowGraphVectorSlerpBlock",["a","b","c"]),"math/eq":os("FlowGraphEqualityBlock",["a","b"]),"ref/eq":os("FlowGraphEqualityBlock",["a","b"]),"math/lt":os("FlowGraphLessThanBlock",["a","b"]),"math/le":os("FlowGraphLessThanOrEqualBlock",["a","b"]),"math/gt":os("FlowGraphGreaterThanBlock",["a","b"]),"math/ge":os("FlowGraphGreaterThanOrEqualBlock",["a","b"]),"math/isNaN":os("FlowGraphIsNaNBlock"),"math/isInf":os("FlowGraphIsInfBlock"),"math/select":{blocks:["FlowGraphConditionalBlock"],inputs:{values:{condition:{name:"condition"},a:{name:"onTrue"},b:{name:"onFalse"}}},outputs:{values:{value:{name:"output"}}}},"math/random":{blocks:["FlowGraphRandomBlock"],outputs:{values:{value:{name:"value"}}}},"math/sin":os("FlowGraphSinBlock"),"math/cos":os("FlowGraphCosBlock"),"math/tan":os("FlowGraphTanBlock"),"math/asin":os("FlowGraphASinBlock"),"math/acos":os("FlowGraphACosBlock"),"math/atan":os("FlowGraphATanBlock"),"math/atan2":os("FlowGraphATan2Block",["a","b"]),"math/sinh":os("FlowGraphSinhBlock"),"math/cosh":os("FlowGraphCoshBlock"),"math/tanh":os("FlowGraphTanhBlock"),"math/asinh":os("FlowGraphASinhBlock"),"math/acosh":os("FlowGraphACoshBlock"),"math/atanh":os("FlowGraphATanhBlock"),"math/exp":os("FlowGraphExponentialBlock"),"math/log":os("FlowGraphLogBlock"),"math/log2":os("FlowGraphLog2Block"),"math/log10":os("FlowGraphLog10Block"),"math/sqrt":os("FlowGraphSquareRootBlock"),"math/cbrt":os("FlowGraphCubeRootBlock"),"math/pow":os("FlowGraphPowerBlock",["a","b"]),"math/length":os("FlowGraphLengthBlock"),"math/normalize":os("FlowGraphNormalizeBlock"),"math/dot":os("FlowGraphDotBlock",["a","b"]),"math/cross":os("FlowGraphCrossBlock",["a","b"]),"math/rotate2D":{blocks:["FlowGraphRotate2DBlock"],inputs:{values:{a:{name:"a"},angle:{name:"b"}}},outputs:{values:{value:{name:"value"}}}},"math/rotate3D":{blocks:["FlowGraphRotate3DBlock"],inputs:{values:{a:{name:"a"},rotation:{name:"b"}}},outputs:{values:{value:{name:"value"}}}},"math/transform":{blocks:["FlowGraphTransformVectorBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}}},"math/combine2":{blocks:["FlowGraphCombineVector2Block"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/combine3":{blocks:["FlowGraphCombineVector3Block"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/combine4":{blocks:["FlowGraphCombineVector4Block"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/extract2":{blocks:["FlowGraphExtractVector2Block"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"}}}},"math/extract3":{blocks:["FlowGraphExtractVector3Block"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"}}}},"math/extract4":{blocks:["FlowGraphExtractVector4Block"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"}}}},"math/transpose":os("FlowGraphTransposeBlock"),"math/determinant":os("FlowGraphDeterminantBlock"),"math/inverse":os("FlowGraphInvertMatrixBlock"),"math/matMul":os("FlowGraphMatrixMultiplicationBlock",["a","b"]),"math/matCompose":{blocks:["FlowGraphMatrixCompose"],inputs:{values:{translation:{name:"position",gltfType:"float3"},rotation:{name:"rotationQuaternion",gltfType:"float4"},scale:{name:"scaling",gltfType:"float3"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,r,s,o){const a=s[0].dataInputs.find(e=>"rotationQuaternion"===e.name);if(!a)throw new Error("Rotation quaternion input not found");return o._connectionValues[a.uniqueId]&&(o._connectionValues[a.uniqueId].type="Quaternion"),s}},"math/matDecompose":{blocks:["FlowGraphMatrixDecompose"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{translation:{name:"position"},rotation:{name:"rotationQuaternion"},scale:{name:"scaling"}}},extraProcessor(e,t,n,r,s){var o;return(o=s[0]).config||(o.config={}),s[0].config.keepDegenerateComponents=!0,s}},"math/quatConjugate":os("FlowGraphConjugateBlock",["a"]),"math/quatMul":{blocks:["FlowGraphMultiplyBlock"],inputs:{values:{a:{name:"a",gltfType:"vector4"},b:{name:"b",gltfType:"vector4"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,r,s){var o;return(o=s[0]).config||(o.config={}),s[0].config.type="Quaternion",s}},"math/quatAngleBetween":os("FlowGraphAngleBetweenBlock",["a","b"]),"math/quatFromAxisAngle":{blocks:["FlowGraphQuaternionFromAxisAngleBlock"],inputs:{values:{axis:{name:"a",gltfType:"float3"},angle:{name:"b",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/quatToAxisAngle":os("FlowGraphAxisAngleFromQuaternionBlock",["a"]),"math/quatFromDirections":os("FlowGraphQuaternionFromDirectionsBlock",["a","b"]),"math/quatFromUpForward":{blocks:["FlowGraphQuaternionFromUpForwardBlock"],inputs:{values:{up:{name:"a",gltfType:"float3"},forward:{name:"b",gltfType:"float3"}}},outputs:{values:{value:{name:"value"}}}},"math/quatFromAngles":{blocks:["FlowGraphQuaternionFromAnglesBlock"],configuration:{order:{name:"order",defaultValue:["yxz"]}},inputs:{values:{x:{name:"a",gltfType:"number"},y:{name:"b",gltfType:"number"},z:{name:"c",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/combine2x2":{blocks:["FlowGraphCombineMatrix2DBlock"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/extract2x2":{blocks:["FlowGraphExtractMatrix2DBlock"],inputs:{values:{a:{name:"input",gltfType:"float2x2"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"}}}},"math/combine3x3":{blocks:["FlowGraphCombineMatrix3DBlock"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"},e:{name:"input_4",gltfType:"number"},f:{name:"input_5",gltfType:"number"},g:{name:"input_6",gltfType:"number"},h:{name:"input_7",gltfType:"number"},i:{name:"input_8",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/extract3x3":{blocks:["FlowGraphExtractMatrix3DBlock"],inputs:{values:{a:{name:"input",gltfType:"float3x3"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"},4:{name:"output_4"},5:{name:"output_5"},6:{name:"output_6"},7:{name:"output_7"},8:{name:"output_8"}}}},"math/combine4x4":{blocks:["FlowGraphCombineMatrixBlock"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"},e:{name:"input_4",gltfType:"number"},f:{name:"input_5",gltfType:"number"},g:{name:"input_6",gltfType:"number"},h:{name:"input_7",gltfType:"number"},i:{name:"input_8",gltfType:"number"},j:{name:"input_9",gltfType:"number"},k:{name:"input_10",gltfType:"number"},l:{name:"input_11",gltfType:"number"},m:{name:"input_12",gltfType:"number"},n:{name:"input_13",gltfType:"number"},o:{name:"input_14",gltfType:"number"},p:{name:"input_15",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/extract4x4":{blocks:["FlowGraphExtractMatrixBlock"],configuration:{},inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"},4:{name:"output_4"},5:{name:"output_5"},6:{name:"output_6"},7:{name:"output_7"},8:{name:"output_8"},9:{name:"output_9"},10:{name:"output_10"},11:{name:"output_11"},12:{name:"output_12"},13:{name:"output_13"},14:{name:"output_14"},15:{name:"output_15"}}}},"math/not":{blocks:["FlowGraphBitwiseNotBlock"],inputs:{values:{a:{name:"a"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,r,s,o){var a,i,l;(l=s[0]).config||(l.config={});const u=s[0].dataInputs[0];return s[0].config.valueType=null!==(i=null===(a=o._connectionValues[u.uniqueId])||void 0===a?void 0:a.type)&&void 0!==i?i:"FlowGraphInteger",s}},"math/and":{blocks:["FlowGraphBitwiseAndBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,r,s,o){var a,i,l,u,c;(c=s[0]).config||(c.config={});const h=s[0].dataInputs[0],d=s[0].dataInputs[1];return s[0].config.valueType=null!==(u=null!==(i=null===(a=o._connectionValues[h.uniqueId])||void 0===a?void 0:a.type)&&void 0!==i?i:null===(l=o._connectionValues[d.uniqueId])||void 0===l?void 0:l.type)&&void 0!==u?u:"FlowGraphInteger",s}},"math/or":{blocks:["FlowGraphBitwiseOrBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,r,s,o){var a,i,l,u,c;(c=s[0]).config||(c.config={});const h=s[0].dataInputs[0],d=s[0].dataInputs[1];return s[0].config.valueType=null!==(u=null!==(i=null===(a=o._connectionValues[h.uniqueId])||void 0===a?void 0:a.type)&&void 0!==i?i:null===(l=o._connectionValues[d.uniqueId])||void 0===l?void 0:l.type)&&void 0!==u?u:"FlowGraphInteger",s}},"math/xor":{blocks:["FlowGraphBitwiseXorBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,r,s,o){var a,i,l,u,c;(c=s[0]).config||(c.config={});const h=s[0].dataInputs[0],d=s[0].dataInputs[1];return s[0].config.valueType=null!==(u=null!==(i=null===(a=o._connectionValues[h.uniqueId])||void 0===a?void 0:a.type)&&void 0!==i?i:null===(l=o._connectionValues[d.uniqueId])||void 0===l?void 0:l.type)&&void 0!==u?u:"FlowGraphInteger",s}},"math/asr":os("FlowGraphBitwiseRightShiftBlock",["a","b"]),"math/lsl":os("FlowGraphBitwiseLeftShiftBlock",["a","b"]),"math/clz":os("FlowGraphLeadingZerosBlock"),"math/ctz":os("FlowGraphTrailingZerosBlock"),"math/popcnt":os("FlowGraphOneBitsCounterBlock"),"math/rad":os("FlowGraphDegToRadBlock"),"math/deg":os("FlowGraphRadToDegBlock"),"type/boolToInt":os("FlowGraphBooleanToInt"),"type/boolToFloat":os("FlowGraphBooleanToFloat"),"type/intToBool":os("FlowGraphIntToBoolean"),"type/intToFloat":os("FlowGraphIntToFloat"),"type/floatToInt":os("FlowGraphFloatToInt"),"type/floatToBool":os("FlowGraphFloatToBoolean"),"flow/sequence":{blocks:["FlowGraphSequenceBlock"],extraProcessor(e,t,n,r,s){const o=s[0];return o.config||(o.config={}),o.config.outputSignalCount=Object.keys(e.flows||[]).length,o.signalOutputs.forEach((e,t)=>{e.name="out_"+t}),s}},"flow/branch":{blocks:["FlowGraphBranchBlock"],outputs:{flows:{true:{name:"onTrue"},false:{name:"onFalse"}}}},"flow/switch":{blocks:["FlowGraphSwitchBlock"],configuration:{cases:{name:"cases",isArray:!0,inOptions:!0,defaultValue:[]}},inputs:{values:{selection:{name:"case"},default:{name:"default"}}},validation(e){var n;const r=null===(n=e.configuration)||void 0===n?void 0:n.cases;if(r&&r.value){if(!r.value.every(e=>"number"==typeof e&&/^-?\d+$/.test(e.toString())))return t.Logger.Warn("Switch cases should be integers. Using empty array instead."),r.value=[],{valid:!0};const e=new Set(r.value);r.value=Array.from(e)}return{valid:!0}},extraProcessor(e,t,n,r,s){if("flow/switch"!==t.op||!e.flows||0===Object.keys(e.flows).length)throw new Error("Switch should have a single configuration object, the cases array");return s[0].signalOutputs.forEach(e=>{"default"!==e.name&&(e.name="out_"+e.name)}),s}},"flow/while":{blocks:["FlowGraphWhileLoopBlock"],outputs:{flows:{loopBody:{name:"executionFlow"}}}},"flow/for":{blocks:["FlowGraphForLoopBlock"],configuration:{initialIndex:{name:"initialIndex",gltfType:"number",inOptions:!0,defaultValue:0}},inputs:{values:{startIndex:{name:"startIndex",gltfType:"number"},endIndex:{name:"endIndex",gltfType:"number"}}},outputs:{values:{index:{name:"index"}},flows:{loopBody:{name:"executionFlow"}}},extraProcessor(e,t,n,r,s){const o=s[0];return o.config||(o.config={}),o.config.incrementIndexWhenLoopDone=!0,o.config.maxLoopIterations=2e4,s}},"flow/doN":{blocks:["FlowGraphDoNBlock"],configuration:{},inputs:{values:{n:{name:"maxExecutions",gltfType:"number"}}},outputs:{values:{currentCount:{name:"executionCount"}}}},"flow/multiGate":{blocks:["FlowGraphMultiGateBlock"],configuration:{isRandom:{name:"isRandom",gltfType:"boolean",inOptions:!0,defaultValue:!1},isLoop:{name:"isLoop",gltfType:"boolean",inOptions:!0,defaultValue:!1}},extraProcessor(e,t,n,r,s){if("flow/multiGate"!==t.op||!e.flows||0===Object.keys(e.flows).length)throw new Error("MultiGate should have a single configuration object, the number of output flows");const o=s[0];return o.config||(o.config={}),o.config.outputSignalCount=Object.keys(e.flows).length,o.signalOutputs.forEach((e,t)=>{e.name="out_"+t}),s}},"flow/waitAll":{blocks:["FlowGraphWaitAllBlock"],configuration:{inputFlows:{name:"inputSignalCount",gltfType:"number",inOptions:!0,defaultValue:0}},inputs:{flows:{reset:{name:"reset"},"[segment]":{name:"in_$1"}}},validation(e){var t,n,r;return"number"!=typeof(null===(r=null===(n=null===(t=e.configuration)||void 0===t?void 0:t.inputFlows)||void 0===n?void 0:n.value)||void 0===r?void 0:r[0])&&(e.configuration=e.configuration||{inputFlows:{value:[0]}},e.configuration.inputFlows.value=[0]),{valid:!0}}},"flow/throttle":{blocks:["FlowGraphThrottleBlock"],outputs:{flows:{err:{name:"error"}}}},"flow/setDelay":{blocks:["FlowGraphSetDelayBlock"],outputs:{flows:{err:{name:"error"}},values:{lastDelay:{name:"lastDelayIndex"}}}},"flow/cancelDelay":{blocks:["FlowGraphCancelDelayBlock"],inputs:{values:{delay:{name:"delayIndex"}}}},"variable/get":{blocks:["FlowGraphGetVariableBlock"],validation(e){var n,r;return(null===(r=null===(n=e.configuration)||void 0===n?void 0:n.variable)||void 0===r?void 0:r.value)?{valid:!0}:(t.Logger.Error("Variable get block should have a variable configuration"),{valid:!1,error:"Variable get block should have a variable configuration"})},configuration:{variable:{name:"variable",gltfType:"number",flowGraphType:"string",inOptions:!0,isVariable:!0,dataTransformer:(e,t)=>t.getVariableName(e)}}},"variable/set":{blocks:["FlowGraphSetVariableBlock"],configuration:{variables:{name:"variables",gltfType:"number",flowGraphType:"string",inOptions:!0,isArray:!0,dataTransformer:(e,t)=>e.map(e=>t.getVariableName(e))}},extraProcessor:(e,t,n,r,s)=>(s[0].dataInputs.forEach(e=>{e.name=r.getVariableName(+e.name)}),s)},"variable/interpolate":{blocks:["FlowGraphInterpolationBlock","FlowGraphContextBlock","FlowGraphPlayAnimationBlock","FlowGraphBezierCurveEasing","FlowGraphGetVariableBlock"],configuration:{variable:{name:"propertyName",inOptions:!0,isVariable:!0,dataTransformer:(e,t)=>t.getVariableName(e)},useSlerp:{name:"animationType",inOptions:!0,defaultValue:!1,dataTransformer:e=>!0===e?"Quaternion":void 0}},inputs:{values:{value:{name:"value_1"},duration:{name:"duration_1",gltfType:"number"},p1:{name:"controlPoint1",toBlock:"FlowGraphBezierCurveEasing"},p2:{name:"controlPoint2",toBlock:"FlowGraphBezierCurveEasing"}},flows:{in:{name:"in",toBlock:"FlowGraphPlayAnimationBlock"}}},outputs:{flows:{err:{name:"error",toBlock:"FlowGraphPlayAnimationBlock"},out:{name:"out",toBlock:"FlowGraphPlayAnimationBlock"},done:{name:"done",toBlock:"FlowGraphPlayAnimationBlock"}}},interBlockConnectors:[{input:"object",output:"userVariables",inputBlockIndex:2,outputBlockIndex:1,isVariable:!0},{input:"animation",output:"animation",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0},{input:"easingFunction",output:"easingFunction",inputBlockIndex:0,outputBlockIndex:3,isVariable:!0},{input:"value_0",output:"value",inputBlockIndex:0,outputBlockIndex:4,isVariable:!0}],extraProcessor(e,n,r,s,o){var a,i,l,u,c,h;const d=o[0],m=null===(i=null===(a=e.configuration)||void 0===a?void 0:a.variable.value)||void 0===i?void 0:i[0];if("number"!=typeof m)throw t.Logger.Error("Variable index is not defined for variable interpolation block"),new Error("Variable index is not defined for variable interpolation block");const _=s.arrays.staticVariables[m];void 0===(null===(u=null===(l=d.config)||void 0===l?void 0:l.animationType)||void 0===u?void 0:u.value)&&(d.config||(d.config={}),(c=d.config).animationType||(c.animationType={}),d.config.animationType.value=t.getAnimationTypeByFlowGraphType(_.type));const p=o[4];return p.config||(p.config={}),(h=p.config).variable||(h.variable={}),p.config.variable.value=s.getVariableName(m),o}},"pointer/get":{blocks:["FlowGraphGetPropertyBlock","FlowGraphJsonPointerParserBlock"],validation:ls,configuration:{pointer:{name:"jsonPointer",toBlock:"FlowGraphJsonPointerParserBlock"}},inputs:{values:{"[segment]":{name:"$1",toBlock:"FlowGraphJsonPointerParserBlock"}}},interBlockConnectors:[{input:"object",output:"object",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"propertyName",output:"propertyName",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"customGetFunction",output:"getFunction",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0}],extraProcessor:(e,t,n,r,s)=>(s.forEach(e=>{"FlowGraphJsonPointerParserBlock"===e.className&&(e.config||(e.config={}),e.config.outputValue=!0)}),s)},"pointer/set":{blocks:["FlowGraphSetPropertyBlock","FlowGraphJsonPointerParserBlock"],validation:ls,configuration:{pointer:{name:"jsonPointer",toBlock:"FlowGraphJsonPointerParserBlock"}},inputs:{values:{value:{name:"value"},"[segment]":{name:"$1",toBlock:"FlowGraphJsonPointerParserBlock"}}},outputs:{flows:{err:{name:"error"}}},interBlockConnectors:[{input:"object",output:"object",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"propertyName",output:"propertyName",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"customSetFunction",output:"setFunction",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0}],extraProcessor:(e,t,n,r,s)=>(s.forEach(e=>{"FlowGraphJsonPointerParserBlock"===e.className&&(e.config||(e.config={}),e.config.outputValue=!0)}),s)},"pointer/interpolate":{blocks:["FlowGraphInterpolationBlock","FlowGraphJsonPointerParserBlock","FlowGraphPlayAnimationBlock","FlowGraphBezierCurveEasing"],validation:ls,configuration:{pointer:{name:"jsonPointer",toBlock:"FlowGraphJsonPointerParserBlock"}},inputs:{values:{value:{name:"value_1"},"[segment]":{name:"$1",toBlock:"FlowGraphJsonPointerParserBlock"},duration:{name:"duration_1",gltfType:"number"},p1:{name:"controlPoint1",toBlock:"FlowGraphBezierCurveEasing"},p2:{name:"controlPoint2",toBlock:"FlowGraphBezierCurveEasing"}},flows:{in:{name:"in",toBlock:"FlowGraphPlayAnimationBlock"}}},outputs:{flows:{err:{name:"error",toBlock:"FlowGraphPlayAnimationBlock"},out:{name:"out",toBlock:"FlowGraphPlayAnimationBlock"},done:{name:"done",toBlock:"FlowGraphPlayAnimationBlock"}}},interBlockConnectors:[{input:"object",output:"object",inputBlockIndex:2,outputBlockIndex:1,isVariable:!0},{input:"propertyName",output:"propertyName",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"customBuildAnimation",output:"generateAnimationsFunction",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"animation",output:"animation",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0},{input:"easingFunction",output:"easingFunction",inputBlockIndex:0,outputBlockIndex:3,isVariable:!0},{input:"value_0",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0}],extraProcessor:(e,t,n,r,s)=>(s.forEach(t=>{"FlowGraphJsonPointerParserBlock"===t.className?(t.config||(t.config={}),t.config.outputValue=!0):"FlowGraphInterpolationBlock"===t.className&&(t.config||(t.config={}),Object.keys(e.values||[]).forEach(n=>{var s;const o=null===(s=e.values)||void 0===s?void 0:s[n];if("value"===n&&o){const e=o.type;void 0!==e&&(t.config.animationType=r.arrays.types[e].flowGraphType)}}))}),s)},"animation/start":{blocks:["FlowGraphPlayAnimationBlock","FlowGraphArrayIndexBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],inputs:{values:{animation:{name:"index",gltfType:"number",toBlock:"FlowGraphArrayIndexBlock"},speed:{name:"speed",gltfType:"number"},startTime:{name:"from",gltfType:"number",convertConnectedTimeToFrames:!0,dataTransformer:(e,t)=>[e[0]*t._animationTargetFps]},endTime:{name:"to",gltfType:"number",convertConnectedTimeToFrames:!0,dataTransformer:(e,t)=>[e[0]*t._animationTargetFps]}}},outputs:{flows:{err:{name:"error"}}},interBlockConnectors:[{input:"animationGroup",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"animationGroups",inputBlockIndex:1,outputBlockIndex:2,isVariable:!0}],extraProcessor(e,t,n,r,s,o,a){const i=s[s.length-1];return i.config||(i.config={}),i.config.glTF=a,s}},"animation/stop":{blocks:["FlowGraphStopAnimationBlock","FlowGraphArrayIndexBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],inputs:{values:{animation:{name:"index",gltfType:"number",toBlock:"FlowGraphArrayIndexBlock"}}},outputs:{flows:{err:{name:"error"}}},interBlockConnectors:[{input:"animationGroup",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"animationGroups",inputBlockIndex:1,outputBlockIndex:2,isVariable:!0}],extraProcessor(e,t,n,r,s,o,a){const i=s[s.length-1];return i.config||(i.config={}),i.config.glTF=a,s}},"animation/stopAt":{blocks:["FlowGraphStopAnimationBlock","FlowGraphArrayIndexBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],configuration:{},inputs:{values:{animation:{name:"index",gltfType:"number",toBlock:"FlowGraphArrayIndexBlock"},stopTime:{name:"stopAtFrame",gltfType:"number",convertConnectedTimeToFrames:!0,dataTransformer:(e,t)=>[e[0]*t._animationTargetFps]}}},outputs:{flows:{err:{name:"error"}}},interBlockConnectors:[{input:"animationGroup",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"animationGroups",inputBlockIndex:1,outputBlockIndex:2,isVariable:!0}],extraProcessor(e,t,n,r,s,o,a){const i=s[s.length-1];return i.config||(i.config={}),i.config.glTF=a,s}},"math/switch":{blocks:["FlowGraphDataSwitchBlock"],configuration:{cases:{name:"cases",isArray:!0,inOptions:!0,defaultValue:[]}},inputs:{values:{selection:{name:"case"}}},validation(e){var n;const r=null===(n=e.configuration)||void 0===n?void 0:n.cases;if(r&&r.value){if(!r.value.every(e=>"number"==typeof e&&/^-?\d+$/.test(e.toString())))return t.Logger.Warn("Switch cases should be integers. Using empty array instead."),r.value=[],{valid:!0};const e=new Set(r.value);r.value=Array.from(e)}return{valid:!0}},extraProcessor(e,t,n,r,s){const o=s[0];return o.dataInputs.forEach(e=>{"default"!==e.name&&"case"!==e.name&&(e.name="in_"+e.name)}),o.config||(o.config={}),o.config.treatCasesAsIntegers=!0,s}},"debug/log":{blocks:["FlowGraphConsoleLogBlock"],configuration:{message:{name:"messageTemplate",inOptions:!0}}}};function os(e,t=["a"],n){return{blocks:[e],inputs:{values:t.reduce((e,t)=>(e[t]={name:t},e),{})},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,r,s,o){var a;if(n){(a=o[0]).config||(a.config={}),o[0].config.preventIntegerFloatArithmetic=!0;let t=-1;Object.keys(e.values||{}).find(n=>{var r;return void 0!==(null===(r=e.values)||void 0===r?void 0:r[n].type)&&(t=e.values[n].type,!0)}),-1!==t&&(o[0].config.type=s.arrays.types[t].flowGraphType)}return o},validation:e=>n?as(e):{valid:!0}}}function as(e){if(e.values){const t=Object.keys(e.values).map(t=>e.values[t].type).filter(e=>void 0!==e);if(!t.every(e=>e===t[0]))return{valid:!1,error:"All inputs must be of the same type"}}return{valid:!0}}function is(e){for(let t=0;t<e.length;t++){const n=e[t];if(-1==="[]{}".indexOf(n))continue;let r=1;for(;e[t+r]===n;)r++;if(r%2!=0)return!0;t+=r-1}return!1}function ls(e){var t,n,r;const s=null===(r=null===(n=null===(t=e.configuration)||void 0===t?void 0:t.pointer)||void 0===n?void 0:n.value)||void 0===r?void 0:r[0];if("string"!=typeof s)return{valid:!1,error:"A pointer operation requires a string `pointer` configuration value"};if(0!==s.length&&"/"!==s[0])return{valid:!1,error:`The JSON Pointer Template "${s}" is not a syntactically valid JSON Pointer`};const o=e=>({valid:!1,error:`The JSON Pointer Template "${s}" is invalid: ${e}`}),a=new Set;for(const e of s.split("/")){const t="["===e[0]&&"["!==e[1],n="{"===e[0]&&"{"!==e[1];if(!t&&!n){if(is(e))return o(`the path segment "${e}" contains an odd number of consecutive brackets`);continue}const r=t?"]":"}",s=e.substring(1,e.length-1);if(e.length<3||e[e.length-1]!==r||/[[{]/.test(s)||/[\]}]/.test(s))return o(`the template parameter path segment "${e}" is malformed`);const i=s.replace(/~1/g,"/").replace(/~0/g,"~");if(a.has(i))return o(`the template parameter "${i}" is used more than once`);a.add(i)}return{valid:!0}}function us(){return Object.keys(ss)}const cs={float:{length:1,flowGraphType:"number",elementType:"number"},bool:{length:1,flowGraphType:"boolean",elementType:"boolean"},float2:{length:2,flowGraphType:"Vector2",elementType:"number"},float3:{length:3,flowGraphType:"Vector3",elementType:"number"},float4:{length:4,flowGraphType:"Vector4",elementType:"number"},float4x4:{length:16,flowGraphType:"Matrix",elementType:"number"},float2x2:{length:4,flowGraphType:"Matrix2D",elementType:"number"},float3x3:{length:9,flowGraphType:"Matrix3D",elementType:"number"},int:{length:1,flowGraphType:"FlowGraphInteger",elementType:"number"},ref:{length:1,flowGraphType:"string",elementType:"string"}};class hs{constructor(e,t,n=60){this._interactivityGraph=e,this._gltf=t,this._animationTargetFps=n,this._types=[],this._mappings=[],this._staticVariables=[],this._events=[],this._internalEventsCounter=0,this._nodes=[],this._insertedBlocks=[],this._parseTypes(),this._parseDeclarations(),this._parseVariables(),this._parseEvents(),this._parseNodes()}get arrays(){return{types:this._types,mappings:this._mappings,staticVariables:this._staticVariables,events:this._events,nodes:this._nodes}}_parseTypes(){if(this._interactivityGraph.types)for(const e of this._interactivityGraph.types)this._types.push(cs[e.signature])}_parseDeclarations(){if(this._interactivityGraph.declarations)for(const e of this._interactivityGraph.declarations){const n=ts(e);if(!n)throw t.Logger.Error(["No mapping found for declaration",e]),new Error("Error parsing declarations");this._mappings.push({flowGraphMapping:n,fullOperationName:e.extension?e.op+":"+e.extension:e.op})}}_parseVariables(){if(this._interactivityGraph.variables)for(const e of this._interactivityGraph.variables){const t=this._parseVariable(e);this._staticVariables.push(t)}}_parseVariable(e,n){const r=this._types[e.type];if(!r)throw t.Logger.Error(["No type found for variable",e]),new Error("Error parsing variables");if(e.value&&e.value.length!==r.length)throw t.Logger.Error(["Invalid value length for variable",e,r]),new Error("Error parsing variables");const s=e.value||[];if(!s.length)switch(r.flowGraphType){case"boolean":s.push(!1);break;case"FlowGraphInteger":s.push(0);break;case"number":s.push(NaN);break;case"string":s.push("");break;case"Vector2":s.push(NaN,NaN);break;case"Vector3":s.push(NaN,NaN,NaN);break;case"Vector4":case"Matrix2D":case"Quaternion":s.fill(NaN,0,4);break;case"Matrix":s.fill(NaN,0,16);break;case"Matrix3D":s.fill(NaN,0,9)}return"number"===r.elementType&&"string"==typeof s[0]&&(s[0]=parseFloat(s[0])),{type:r.flowGraphType,value:n?n(s,this):s}}_parseEvents(){if(this._interactivityGraph.events)for(const e of this._interactivityGraph.events){const n={eventId:e.id||"internalEvent_"+this._internalEventsCounter++};e.values&&(n.eventData=Object.keys(e.values).map(n=>{var r;const s=null===(r=e.values)||void 0===r?void 0:r[n];if(!s)throw t.Logger.Error(["No value found for event key",n]),new Error("Error parsing events");const o=this._types[s.type];if(!o)throw t.Logger.Error(["No type found for event value",s]),new Error("Error parsing events");const a=void 0!==s.value?this._parseVariable(s):void 0;return{id:n,type:o.flowGraphType,eventData:!0,value:a}})),this._events.push(n)}}_parseNodes(){var e;if(this._interactivityGraph.nodes)for(const n of this._interactivityGraph.nodes){if("number"!=typeof n.declaration)throw t.Logger.Error(["No declaration found for node",n]),new Error("Error parsing nodes");const r=this._mappings[n.declaration];if(!r)throw t.Logger.Error(["No mapping found for node",n]),new Error("Error parsing nodes");if(r.flowGraphMapping.validation){const t=r.flowGraphMapping.validation(n,this._interactivityGraph,this._gltf);if(!t.valid)throw new Error(`Error validating interactivity node ${null===(e=this._interactivityGraph.declarations)||void 0===e?void 0:e[n.declaration].op} - ${t.error}`)}const s=[];for(const e of r.flowGraphMapping.blocks){const t=this._getEmptyBlock(e,r.fullOperationName);this._parseNodeConfiguration(n,t,r.flowGraphMapping,e),s.push(t)}this._nodes.push({blocks:s,fullOperationName:r.fullOperationName})}}_getEmptyBlock(e,n){return{uniqueId:t.RandomGUID(),className:e,dataInputs:[],dataOutputs:[],signalInputs:[],signalOutputs:[],config:{},type:n,metadata:{}}}_parseNodeConfiguration(e,n,r,s){var o;const a=e.configuration;if(a)for(const e in a){const i=a[e];if(!i)throw new Error("Error parsing node configuration");const l=null===(o=r.configuration)||void 0===o?void 0:o[e];if(l&&l.toBlock?l.toBlock===s:0===r.blocks.indexOf(s)){let r=null==l?void 0:l.defaultValue;(null==i?void 0:i.value)&&(r=i.value),(null==l?void 0:l.isArray)||(1!==r.length&&t.Logger.Warn(`Invalid non-array value length: ${r.length}`),r=r[0]),(null==l?void 0:l.dataTransformer)&&(r=l.dataTransformer(r,this)),void 0!==r&&(n.config[(null==l?void 0:l.name)||e]={value:r})}}}_parseNodeConnections(e){var n,r,s,o,a,i,l,u,c,h,d,m,_,p,f,g,b,y,T;for(let v=0;v<this._nodes.length;v++){const x=null===(n=this._interactivityGraph.nodes)||void 0===n?void 0:n[v];if(!x)throw t.Logger.Error(["No node found for interactivity node",this._nodes[v]]),new Error("Error parsing node connections");const A=this._nodes[v],C=this._mappings[x.declaration];if(!C)throw t.Logger.Error(["No mapping found for node",x]),new Error("Error parsing node connections");if(0===A.blocks.length){t.Logger.Warn(`Skipping connections for no-op node #${v} (unsupported operation: ${A.fullOperationName})`);continue}const R=x.flows||{},w=Object.keys(R).sort();for(const e of w){const n=R[e],c=null===(s=null===(r=C.flowGraphMapping.outputs)||void 0===r?void 0:r.flows)||void 0===s?void 0:s[e],h=(null==c?void 0:c.name)||e,d=n.node,m=this._nodes[d];if(!m)throw t.Logger.Error(["No node found for input node id",d]),new Error("Error parsing node connections");if(0===m.blocks.length){t.Logger.Warn(`Dropping flow connection from node #${v} "${e}" to no-op node #${d} (unsupported operation: ${m.fullOperationName})`);continue}const _=this._createNewSocketConnection(h,!0);(c&&c.toBlock&&A.blocks.find(e=>e.className===c.toBlock)||A.blocks[0]).signalOutputs.push(_);const p=es(m.fullOperationName);if(!p)throw t.Logger.Error(["No mapping found for input node",m]),new Error("Error parsing node connections");let f=null===(a=null===(o=p.inputs)||void 0===o?void 0:o.flows)||void 0===a?void 0:a[n.socket||"in"],g=!1;if(!f)for(const e in null===(i=p.inputs)||void 0===i?void 0:i.flows)e.startsWith("[")&&e.endsWith("]")&&(g=!0,f=null===(u=null===(l=p.inputs)||void 0===l?void 0:l.flows)||void 0===u?void 0:u[e]);const b=f?g?f.name.replace("$1",n.socket||""):f.name:n.socket||"in",y=f&&f.toBlock&&m.blocks.find(e=>e.className===f.toBlock)||m.blocks[0];let T=y.signalInputs.find(e=>e.name===b);T||(T=this._createNewSocketConnection(b),y.signalInputs.push(T)),T.connectedPointIds.push(_.uniqueId),_.connectedPointIds.push(T.uniqueId)}const M=x.values||{},O=Object.keys(M);for(const n of O){const r=M[n];let s=null===(h=null===(c=C.flowGraphMapping.inputs)||void 0===c?void 0:c.values)||void 0===h?void 0:h[n],o=!1;if(!s)for(const e in null===(d=C.flowGraphMapping.inputs)||void 0===d?void 0:d.values)e.startsWith("[")&&e.endsWith("]")&&(o=!0,s=null===(_=null===(m=C.flowGraphMapping.inputs)||void 0===m?void 0:m.values)||void 0===_?void 0:_[e]);const a=s?o?s.name.replace("$1",n):s.name:n,i=this._createNewSocketConnection(a);(s&&s.toBlock&&A.blocks.find(e=>e.className===s.toBlock)||A.blocks[0]).dataInputs.push(i);const l=!!(null==s?void 0:s.convertConnectedTimeToFrames);if(void 0!==r.value){const t=this._parseVariable(r,s&&s.dataTransformer);e._connectionValues[i.uniqueId]=t}else{if(void 0===r.node)throw t.Logger.Error(["Invalid value for value connection",r]),new Error("Error parsing node connections");{const s=r.node,o=r.socket||"value",a=this._nodes[s];if(!a)throw t.Logger.Error(["No node found for output socket reference",r]),new Error("Error parsing node connections");if(0===a.blocks.length){t.Logger.Warn(`Dropping value connection from no-op node #${s} (unsupported operation: ${a.fullOperationName}) into node #${v} "${n}"; consumer will use type-default value`);continue}const u=es(a.fullOperationName);if(!u)throw t.Logger.Error(["No mapping found for output socket reference",r]),new Error("Error parsing node connections");let c=null===(f=null===(p=u.outputs)||void 0===p?void 0:p.values)||void 0===f?void 0:f[o],h=!1;if(!c)for(const e in null===(g=u.outputs)||void 0===g?void 0:g.values)e.startsWith("[")&&e.endsWith("]")&&(h=!0,c=null===(y=null===(b=u.outputs)||void 0===b?void 0:b.values)||void 0===y?void 0:y[e]);const d=c?h?c.name.replace("$1",o):null==c?void 0:c.name:o,m=c&&c.toBlock&&a.blocks.find(e=>e.className===c.toBlock)||a.blocks[0];let _=m.dataOutputs.find(e=>e.name===d);_||(_=this._createNewSocketConnection(d,!0),m.dataOutputs.push(_)),l?this._connectWithSecondsToFramesConversion(e,_,i):(i.connectedPointIds.push(_.uniqueId),_.connectedPointIds.push(i.uniqueId))}}}if(C.flowGraphMapping.interBlockConnectors)for(const e of C.flowGraphMapping.interBlockConnectors){const t=e.input,n=e.output,r=e.isVariable;this._connectFlowGraphNodes(t,n,A.blocks[e.inputBlockIndex],A.blocks[e.outputBlockIndex],r)}if(C.flowGraphMapping.extraProcessor){const n=null===(T=this._interactivityGraph.declarations)||void 0===T?void 0:T[x.declaration];if(!n)throw t.Logger.Error(["No declaration found for extra processor",x]),new Error("Error parsing node connections");A.blocks=C.flowGraphMapping.extraProcessor(x,n,C.flowGraphMapping,this,A.blocks,e,this._gltf)}}}_createNewSocketConnection(e,n){return{uniqueId:t.RandomGUID(),name:e,_connectionType:n?1:0,connectedPointIds:[]}}_connectWithSecondsToFramesConversion(e,t,n){const r=this._getEmptyBlock("FlowGraphMultiplyBlock","FlowGraphMultiplyBlock");r.config={type:"number"};const s=this._createNewSocketConnection("a"),o=this._createNewSocketConnection("b"),a=this._createNewSocketConnection("value",!0);r.dataInputs.push(s,o),r.dataOutputs.push(a),e._connectionValues[o.uniqueId]={type:"number",value:[this._animationTargetFps]},s.connectedPointIds.push(t.uniqueId),t.connectedPointIds.push(s.uniqueId),n.connectedPointIds.push(a.uniqueId),a.connectedPointIds.push(n.uniqueId),this._insertedBlocks.push(r)}_connectFlowGraphNodes(e,t,n,r,s){const o=s?n.dataInputs:n.signalInputs,a=s?r.dataOutputs:r.signalOutputs,i=o.find(t=>t.name===e)||this._createNewSocketConnection(e),l=a.find(e=>e.name===t)||this._createNewSocketConnection(t,!0);o.find(t=>t.name===e)||o.push(i),a.find(e=>e.name===t)||a.push(l),i.connectedPointIds.push(l.uniqueId),l.connectedPointIds.push(i.uniqueId)}getVariableName(e){return"staticVariable_"+e}serializeToFlowGraph(){const e={uniqueId:t.RandomGUID(),_userVariables:{},_connectionValues:{}};this._parseNodeConnections(e);for(let t=0;t<this._staticVariables.length;t++){const n=this._staticVariables[t];e._userVariables[this.getVariableName(t)]=n}return{rightHanded:!0,allBlocks:this._nodes.reduce((e,t)=>e.concat(t.blocks),[]).concat(this._insertedBlocks),executionContexts:[e]}}}class ds{constructor(e,t){this._prefixes=e,this._fallback=t}addPrefix(e){this._prefixes.unshift(e)}convert(e){for(const{prefix:t,converter:n}of this._prefixes)if(e.startsWith(t))return n.convert(e);return this._fallback.convert(e)}}const ms="/extensions/BABYLON_scene_objects/";class _s{constructor(e,t){this._scene=e,this._tree=t}convert(e){if(!e.startsWith(ms))throw new Error(`BabylonScenePathToObjectConverter: path "${e}" does not start with the expected prefix "${ms}".`);const t=e.slice(34).split("/").filter(e=>e.length>0);if(0===t.length)throw new Error(`BabylonScenePathToObjectConverter: path "${e}" is missing a collection name.`);const n=t[0],r=this._tree[n];if(!r)throw new Error(`BabylonScenePathToObjectConverter: unknown collection "${n}" in path "${e}".`);if(2===t.length&&"length"===t[1])return{object:this._getCollectionArray(n),info:r.length};if(t.length<2)throw new Error(`BabylonScenePathToObjectConverter: path "${e}" is missing an instance id.`);if(!/^\d+$/.test(t[1]))throw new Error(`BabylonScenePathToObjectConverter: invalid uniqueId "${t[1]}" in path "${e}".`);const s=parseInt(t[1],10);if(!Number.isFinite(s)||s<0)throw new Error(`BabylonScenePathToObjectConverter: invalid uniqueId "${t[1]}" in path "${e}".`);const o=this._lookupInstanceByUniqueId(n,s);if(!o)throw new Error(`BabylonScenePathToObjectConverter: no ${n} instance found with uniqueId ${s} (path "${e}").`);if(2===t.length)return{object:o,info:this._buildIdentityAccessor(o)};if(t.length>3)throw new Error(`BabylonScenePathToObjectConverter: nested property paths are not yet supported (path "${e}").`);const a=t[2],i=r.__array__[a];if(!i||"boolean"==typeof i)throw new Error(`BabylonScenePathToObjectConverter: property "${a}" is not registered on ${n} (path "${e}").`);return{object:o,info:i}}_getCollectionArray(e){switch(e){case"transformNodes":return this._scene.transformNodes;case"meshes":return this._scene.meshes;case"materials":return this._scene.materials;default:return[]}}_lookupInstanceByUniqueId(e,t){switch(e){case"transformNodes":return this._scene.transformNodes.find(e=>e.uniqueId===t)||this._scene.meshes.find(e=>e.uniqueId===t);case"meshes":return this._scene.meshes.find(e=>e.uniqueId===t);case"materials":return this._scene.materials.find(e=>e.uniqueId===t);default:return}}_buildIdentityAccessor(e){return{type:"object",get:()=>e,getTarget:()=>e,isReadOnly:!0}}}const ps="/extensions/KHR_interactivity/events/";const fs={isKhrInteractivityRef:!0};class gs{convert(e){const n=e.endsWith("/")?e.slice(0,-1):e;if(n.startsWith(ps)){const e=n.substring(37);return{object:fs,info:{type:"object",isReadOnly:!0,get:()=>e.length>0?n:void 0,getTarget:()=>fs}}}const r=n.substring(37),s=/^\d+$/.test(r)?parseInt(r,10):NaN;return{object:fs,info:{type:"object",isReadOnly:!0,get:(e,n,r)=>{const o=r;if(!(!o||isNaN(s)||s<0))return t.IsDelayActive(o,s)?new t.FlowGraphInteger(s):void 0},getTarget:()=>fs}}}}const bs="/extensions/KHR_interactivity/limits/",ys={major:2,minor:0},Ts=2147483647,vs={maxActiveAnimations:Ts,maxActiveDelays:Ts,maxActivePropertyInterpolations:Ts,maxActiveVariableInterpolations:Ts},xs={isKhrInteractivityAssetCapability:!0};class As{constructor(e,t){this._gltf=e,this._isExtensionEnabled=t}convert(e){const t=e.endsWith("/")?e.slice(0,-1):e;if(t.startsWith(bs)){const n=vs[t.substring(37)];if(void 0===n)throw new Error(`Path ${e} is invalid`);return this._createAccessor("number",()=>n)}const n=t.substring(36);if("majorVersion"===n||"minorVersion"===n)return this._createAccessor("number",()=>{var e;return function(e){const[t,n]=(null!=e?e:"").split("."),r=parseInt(t,10),s=parseInt(n,10);return isNaN(r)?ys:r!==ys.major?r<ys.major?{major:r,minor:isNaN(s)?0:s}:ys:{major:r,minor:Math.min(isNaN(s)?0:s,ys.minor)}}(null===(e=this._gltf.asset)||void 0===e?void 0:e.version)["majorVersion"===n?"major":"minor"]});const r=n.split("/");if(3===r.length&&"extensions"===r[0]&&"enabled"===r[2]){const e=r[1];return this._createAccessor("boolean",()=>this._isExtensionEnabled(e))}throw new Error(`Path ${e} is invalid`)}_createAccessor(e,t){return{object:xs,info:{type:e,isReadOnly:!0,get:t,getTarget:()=>xs}}}}class Cs{encodeEventReference(e){return function(e){return ps+e}(e)}decodeEventReference(e){return function(e){return"string"==typeof(t=e)&&t.startsWith(ps)?e.substring(37):void 0;var t}(e)}decodeIndexReference(e){if(0===e.length||"/"!==e[0])return;const t=e.substring(e.lastIndexOf("/")+1);return/^(0|[1-9]\d*)$/.test(t)?parseInt(t,10):void 0}getObjectReference(e,t){var n,r;const s=null===(r=null===(n=e._internalMetadata)||void 0===n?void 0:n.gltf)||void 0===r?void 0:r.pointers;if(!Array.isArray(s))return;const o=s.filter(e=>"string"==typeof e);if(0!==o.length){if(t){const e=o.find(e=>e.split("/")[1]===t);if(e)return e}return o[0]}}}const Rs="KHR_interactivity";class ws{constructor(e){var n;this._loader=e,this.name=Rs,this.enabled=this._loader.isExtensionUsed(Rs),this._gltfPathConverter=we(this._loader.gltf);const r=e.babylonScene;if(this._gltfPathConverter){const e=[];r&&e.push({prefix:ms,converter:new _s(r,{transformNodes:{length:{type:"number",get:e=>e.length,getTarget:e=>e},__array__:{__target__:!0,name:{type:"string",get:e=>e.name,set:(e,t)=>{t.name=e},getTarget:e=>e},translation:{type:"Vector3",get:e=>e.position,set:(e,t)=>t.position.copyFrom(e),getTarget:e=>e},rotation:{type:"Quaternion",get:e=>{var n;return null!==(n=e.rotationQuaternion)&&void 0!==n?n:t.Quaternion.RotationYawPitchRoll(e.rotation.y,e.rotation.x,e.rotation.z)},set:(e,t)=>{t.rotationQuaternion?t.rotationQuaternion.copyFrom(e):t.rotationQuaternion=e.clone()},getTarget:e=>e},scale:{type:"Vector3",get:e=>e.scaling,set:(e,t)=>t.scaling.copyFrom(e),getTarget:e=>e},matrix:{type:"Matrix",get:e=>e.computeWorldMatrix(!1),getTarget:e=>e,isReadOnly:!0},globalMatrix:{type:"Matrix",get:e=>e.computeWorldMatrix(!0),getTarget:e=>e,isReadOnly:!0}}},meshes:{length:{type:"number",get:e=>e.length,getTarget:e=>e},__array__:{__target__:!0,name:{type:"string",get:e=>e.name,set:(e,t)=>{t.name=e},getTarget:e=>e},visible:{type:"boolean",get:e=>e.isVisible,set:(e,t)=>{t.isVisible=e},getTarget:e=>e}}},materials:{length:{type:"number",get:e=>e.length,getTarget:e=>e},__array__:{__target__:!0,name:{type:"string",get:e=>e.name,set:(e,t)=>{t.name=e},getTarget:e=>e}}}})});const s=new gs;e.push({prefix:ps,converter:s}),e.push({prefix:"/extensions/KHR_interactivity/delays/",converter:s});const o=new Set((null!==(n=this._loader.gltf.extensionsUsed)&&void 0!==n?n:[]).filter(e=>{var t;return Se.has(e)&&!1!==(null===(t=this._loader.parent.extensionOptions[e])||void 0===t?void 0:t.enabled)})),a=new As(this._loader.gltf,e=>o.has(e));e.push({prefix:"/extensions/KHR_interactivity/asset/",converter:a}),e.push({prefix:bs,converter:a}),this._pathConverter=new ds(e,this._gltfPathConverter)}e._skipStartAnimationStep=!0,r&&Ms(r)}dispose(){this._loader=null,delete this._gltfPathConverter,delete this._pathConverter}onReady(){return A(this,void 0,void 0,function*(){var e;if(!this._loader.babylonScene||!this._pathConverter)return;const n=this._loader.babylonScene,r=null===(e=this._loader.gltf.extensions)||void 0===e?void 0:e.KHR_interactivity;r&&(yield Promise.all(r.graphs.map((e,r)=>A(this,void 0,void 0,function*(){var s;const o=new t.FlowGraphCoordinator({scene:n,hostResolver:new Cs});o.dispatchEventsSynchronously=!1;try{const n=new hs(e,this._loader.gltf,this._loader.parent.targetFps);yield t.ParseFlowGraphAsync(n.serializeToFlowGraph(),{coordinator:o,pathConverter:this._pathConverter}),o.start()}catch(e){t.Logger.Error(`KHR_interactivity: rejecting behavior graph #${r}: ${null!==(s=null==e?void 0:e.message)&&void 0!==s?s:e}`),o.dispose()}}))))})}}function Ms(e){Ee("/extensions/KHR_interactivity/?/activeCamera/rotation",{get:()=>{if(!e.activeCamera)return new t.Quaternion(NaN,NaN,NaN,NaN);const n=t.Quaternion.FromRotationMatrix(e.activeCamera.getWorldMatrix()).normalize();return e.useRightHandedSystem||(n.w*=-1,n.x*=-1),n},type:"Quaternion",getTarget:()=>e.activeCamera}),Ee("/extensions/KHR_interactivity/?/activeCamera/position",{get:()=>{if(!e.activeCamera)return new t.Vector3(NaN,NaN,NaN);const n=e.activeCamera.getWorldMatrix().getTranslation();return e.useRightHandedSystem||(n.x*=-1),n},type:"Vector3",getTarget:()=>e.activeCamera});const n=n=>{const r=e.activeCamera;return r&&r.mode!==t.Constants.ORTHOGRAPHIC_CAMERA?n(r):NaN},r=n=>{const r=e.activeCamera;return r&&r.mode===t.Constants.ORTHOGRAPHIC_CAMERA?n(r):NaN};Ee("/extensions/KHR_interactivity/?/activeCamera/perspective/aspectRatio",{get:()=>n(e=>e.getEngine().getAspectRatio(e)),type:"number",getTarget:()=>e.activeCamera}),Ee("/extensions/KHR_interactivity/?/activeCamera/perspective/yfov",{get:()=>n(e=>{if(e.fovMode===t.Constants.FOVMODE_VERTICAL_FIXED)return e.fov;const n=e.getEngine().getAspectRatio(e);return n?2*Math.atan(Math.tan(e.fov/2)/n):e.fov}),type:"number",getTarget:()=>e.activeCamera}),Ee("/extensions/KHR_interactivity/?/activeCamera/perspective/znear",{get:()=>n(e=>e.minZ),type:"number",getTarget:()=>e.activeCamera}),Ee("/extensions/KHR_interactivity/?/activeCamera/perspective/zfar",{get:()=>n(e=>0===e.maxZ?1/0:e.maxZ),type:"number",getTarget:()=>e.activeCamera}),Ee("/extensions/KHR_interactivity/?/activeCamera/orthographic/xmag",{get:()=>r(e=>{var t,n;const r=e.getEngine().getRenderWidth()/2;return((null!==(t=e.orthoRight)&&void 0!==t?t:r)-(null!==(n=e.orthoLeft)&&void 0!==n?n:-r))/2}),type:"number",getTarget:()=>e.activeCamera}),Ee("/extensions/KHR_interactivity/?/activeCamera/orthographic/ymag",{get:()=>r(e=>{var t,n;const r=e.getEngine().getRenderHeight()/2;return((null!==(t=e.orthoTop)&&void 0!==t?t:r)-(null!==(n=e.orthoBottom)&&void 0!==n?n:-r))/2}),type:"number",getTarget:()=>e.activeCamera}),Ee("/extensions/KHR_interactivity/?/activeCamera/orthographic/znear",{get:()=>r(e=>e.minZ),type:"number",getTarget:()=>e.activeCamera}),Ee("/extensions/KHR_interactivity/?/activeCamera/orthographic/zfar",{get:()=>r(e=>e.maxZ),type:"number",getTarget:()=>e.activeCamera}),Ee("/animations/{}/extensions/KHR_interactivity/isPlaying",{get:e=>{var t,n;return null!==(n=null===(t=e._babylonAnimationGroup)||void 0===t?void 0:t.isPlaying)&&void 0!==n&&n},type:"boolean",getTarget:e=>e._babylonAnimationGroup}),Ee("/animations/{}/extensions/KHR_interactivity/minTime",{get:e=>{var t,n;return(null!==(n=null===(t=e._babylonAnimationGroup)||void 0===t?void 0:t.from)&&void 0!==n?n:0)/60},type:"number",getTarget:e=>e._babylonAnimationGroup}),Ee("/animations/{}/extensions/KHR_interactivity/maxTime",{get:e=>{var t,n;return(null!==(n=null===(t=e._babylonAnimationGroup)||void 0===t?void 0:t.to)&&void 0!==n?n:0)/60},type:"number",getTarget:e=>e._babylonAnimationGroup}),Ee("/animations/{}/extensions/KHR_interactivity/playhead",{get:e=>{var t,n;return(null!==(n=null===(t=e._babylonAnimationGroup)||void 0===t?void 0:t.getCurrentFrame())&&void 0!==n?n:0)/60},type:"number",getTarget:e=>e._babylonAnimationGroup}),Ee("/animations/{}/extensions/KHR_interactivity/virtualPlayhead",{get:e=>{var t,n;return(null!==(n=null===(t=e._babylonAnimationGroup)||void 0===t?void 0:t.getCurrentFrame())&&void 0!==n?n:0)/60},type:"number",getTarget:e=>e._babylonAnimationGroup})}let Os=!1;function Es(){Os||(Os=!0,t.addToBlockFactory(Rs,"FlowGraphGLTFDataProvider",()=>A(this,void 0,void 0,function*(){return(yield Promise.resolve().then(function(){return ro})).FlowGraphGLTFDataProvider})))}let Ls=!1;function Ss(){Ls||(Ls=!0,Es(),Ie(Rs),Fe(Rs,!0,e=>new ws(e)))}Ss();const Fs="KHR_node_visibility";class Is{constructor(e){this.name=Fs,this._loader=e,this.enabled=e.isExtensionUsed(Fs)}onReady(){var e;if(!this._loader)return;const t=this._loader.gltf.nodes;if(t)for(const n of t){const t=n._babylonTransformNode;t&&(t.inheritVisibility=!0,n.extensions&&n.extensions.KHR_node_visibility&&!1===n.extensions.KHR_node_visibility.visible&&(t.isVisible=!1,null===(e=n._primitiveBabylonMeshes)||void 0===e||e.forEach(e=>{e.inheritVisibility=!0,e.isVisible=!1})))}}dispose(){delete this._loader}}let Ns=!1;function ks(){Ns||(Ns=!0,Ee("/nodes/{}/extensions/KHR_node_visibility/visible",{get:e=>{const t=e._babylonTransformNode;return!t||void 0===t.isVisible||t.isVisible},set:(e,t)=>{var n,r;null===(n=t._primitiveBabylonMeshes)||void 0===n||n.forEach(e=>{e.inheritVisibility=!0}),t._babylonTransformNode&&(t._babylonTransformNode.isVisible=e),null===(r=t._primitiveBabylonMeshes)||void 0===r||r.forEach(t=>{t.isVisible=e})},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"isVisible"],type:"boolean"}))}let Ps=!1;function Bs(){Ps||(Ps=!0,ks(),Ie(Fs),Fe(Fs,!0,e=>new Is(e)))}Bs();const Gs="KHR_node_selectability";class Vs{constructor(e){this.name=Gs,this._loader=e,this.enabled=e.isExtensionUsed(Gs)}onReady(){return A(this,void 0,void 0,function*(){var e;null===(e=this._loader.gltf.nodes)||void 0===e||e.forEach(e=>{var t,n,r;(null===(t=e.extensions)||void 0===t?void 0:t.KHR_node_selectability)&&!1===(null===(n=e.extensions)||void 0===n?void 0:n.KHR_node_selectability.selectable)&&(null===(r=e._babylonTransformNode)||void 0===r||r.getChildMeshes().forEach(e=>{e.isPickable=!1}))})})}dispose(){this._loader=null}}let Ds=!1;function Hs(){Ds||(Ds=!0,ns("event/onSelect",Gs,{blocks:["FlowGraphMeshPickEventBlock","FlowGraphGetVariableBlock","FlowGraphIndexOfBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],configuration:{stopPropagation:{name:"stopPropagation"},nodeIndex:{name:"variable",toBlock:"FlowGraphGetVariableBlock",dataTransformer:e=>"pickedMesh_"+e}},outputs:{values:{selectedNodeIndex:{name:"index",toBlock:"FlowGraphIndexOfBlock"},selectedNode:{name:"pickedMesh",toBlock:"FlowGraphMeshPickEventBlock"},controllerIndex:{name:"pointerId"},selectionPoint:{name:"pickedPoint"},selectionRayOrigin:{name:"pickOrigin"}},flows:{out:{name:"done"}}},interBlockConnectors:[{input:"asset",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"nodes",inputBlockIndex:2,outputBlockIndex:3,isVariable:!0},{input:"object",output:"pickedMesh",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0}],extraProcessor(e,t,n,r,s,o,a){var i,l,u,c,h,d,m;const _=s[s.length-1];_.config=_.config||{},_.config.glTF=a;const p=null===(u=null===(l=null===(i=e.configuration)||void 0===i?void 0:i.nodeIndex)||void 0===l?void 0:l.value)||void 0===u?void 0:u[0];if(void 0===p||"number"!=typeof p)throw new Error("nodeIndex not found in configuration");const f="pickedMesh_"+p;return s[1].config.variable=f,o._userVariables[f]={className:"Mesh",id:null===(h=null===(c=null==a?void 0:a.nodes)||void 0===c?void 0:c[p]._babylonTransformNode)||void 0===h?void 0:h.id,uniqueId:null===(m=null===(d=null==a?void 0:a.nodes)||void 0===d?void 0:d[p]._babylonTransformNode)||void 0===m?void 0:m.uniqueId},s}}),Ee("/nodes/{}/extensions/KHR_node_selectability/selectable",{get:e=>{const t=e._babylonTransformNode;return!t||void 0===t.isPickable||t.isPickable},set:(e,t)=>{var n;null===(n=t._primitiveBabylonMeshes)||void 0===n||n.forEach(t=>{t.isPickable=e})},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"isPickable"],type:"boolean"}))}let $s=!1;function Ks(){$s||($s=!0,Hs(),Ie(Gs),Fe(Gs,!0,e=>new Vs(e)))}Ks();const Ws="KHR_node_hoverability",Us="targetMeshPointerOver_",zs="targetMeshPointerOut_";class js{constructor(e){this.name=Ws,this._loader=e,this.enabled=e.isExtensionUsed(Ws)}onReady(){return A(this,void 0,void 0,function*(){var e;null===(e=this._loader.gltf.nodes)||void 0===e||e.forEach(e=>{var t,n,r;(null===(t=e.extensions)||void 0===t?void 0:t.KHR_node_hoverability)&&!1===(null===(n=e.extensions)||void 0===n?void 0:n.KHR_node_hoverability.hoverable)&&(null===(r=e._babylonTransformNode)||void 0===r||r.getChildMeshes().forEach(e=>{e.pointerOverDisableMeshTesting=!0}))})})}dispose(){this._loader=null}}let qs=!1;function Ys(){qs||(qs=!0,ns("event/onHoverIn",Ws,{blocks:["FlowGraphPointerOverEventBlock","FlowGraphGetVariableBlock","FlowGraphIndexOfBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],configuration:{stopPropagation:{name:"stopPropagation"},nodeIndex:{name:"variable",toBlock:"FlowGraphGetVariableBlock",dataTransformer:e=>Us+e}},outputs:{values:{hoverNodeIndex:{name:"index",toBlock:"FlowGraphIndexOfBlock"},hoveredNode:{name:"meshUnderPointer",toBlock:"FlowGraphPointerOverEventBlock"},controllerIndex:{name:"pointerId"}},flows:{out:{name:"done"}}},interBlockConnectors:[{input:"targetMesh",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"nodes",inputBlockIndex:2,outputBlockIndex:3,isVariable:!0},{input:"object",output:"meshUnderPointer",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0}],extraProcessor(e,t,n,r,s,o,a){var i,l,u,c,h,d,m;const _=s[s.length-1];_.config=_.config||{},_.config.glTF=a;const p=null===(u=null===(l=null===(i=e.configuration)||void 0===i?void 0:i.nodeIndex)||void 0===l?void 0:l.value)||void 0===u?void 0:u[0];if(void 0===p||"number"!=typeof p)throw new Error("nodeIndex not found in configuration");const f=Us+p;return s[1].config.variable=f,o._userVariables[f]={className:"Mesh",id:null===(h=null===(c=null==a?void 0:a.nodes)||void 0===c?void 0:c[p]._babylonTransformNode)||void 0===h?void 0:h.id,uniqueId:null===(m=null===(d=null==a?void 0:a.nodes)||void 0===d?void 0:d[p]._babylonTransformNode)||void 0===m?void 0:m.uniqueId},s}}),ns("event/onHoverOut",Ws,{blocks:["FlowGraphPointerOutEventBlock","FlowGraphGetVariableBlock","FlowGraphIndexOfBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],configuration:{stopPropagation:{name:"stopPropagation"},nodeIndex:{name:"variable",toBlock:"FlowGraphGetVariableBlock",dataTransformer:e=>zs+e}},outputs:{values:{hoverNodeIndex:{name:"index",toBlock:"FlowGraphIndexOfBlock"},hoveredNode:{name:"meshOutOfPointer",toBlock:"FlowGraphPointerOutEventBlock"},controllerIndex:{name:"pointerId"}},flows:{out:{name:"done"}}},interBlockConnectors:[{input:"targetMesh",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"nodes",inputBlockIndex:2,outputBlockIndex:3,isVariable:!0},{input:"object",output:"meshOutOfPointer",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0}],extraProcessor(e,t,n,r,s,o,a){var i,l,u,c,h,d,m;const _=s[s.length-1];_.config=_.config||{},_.config.glTF=a;const p=null===(u=null===(l=null===(i=e.configuration)||void 0===i?void 0:i.nodeIndex)||void 0===l?void 0:l.value)||void 0===u?void 0:u[0];if(void 0===p||"number"!=typeof p)throw new Error("nodeIndex not found in configuration");const f=zs+p;return s[1].config.variable=f,o._userVariables[f]={className:"Mesh",id:null===(h=null===(c=null==a?void 0:a.nodes)||void 0===c?void 0:c[p]._babylonTransformNode)||void 0===h?void 0:h.id,uniqueId:null===(m=null===(d=null==a?void 0:a.nodes)||void 0===d?void 0:d[p]._babylonTransformNode)||void 0===m?void 0:m.uniqueId},s}}),Ee("/nodes/{}/extensions/KHR_node_hoverability/hoverable",{get:e=>{const t=e._babylonTransformNode;return!t||void 0===t.pointerOverDisableMeshTesting||t.pointerOverDisableMeshTesting},set:(e,t)=>{var n;null===(n=t._primitiveBabylonMeshes)||void 0===n||n.forEach(t=>{t.pointerOverDisableMeshTesting=!e})},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"pointerOverDisableMeshTesting"],type:"boolean"}))}let Xs=!1;function Qs(){Xs||(Xs=!0,Ys(),Ie(Ws),Fe(Ws,!0,e=>new js(e)))}Qs();const Zs="ExtrasAsMetadata";class Js{_assignExtras(e,t){if(t.extras&&Object.keys(t.extras).length>0){const n=e.metadata=e.metadata||{};(n.gltf=n.gltf||{}).extras=t.extras}}constructor(e){this.name=Zs,this.enabled=!0,this._loader=e}dispose(){this._loader=null}loadNodeAsync(e,t,n){return this._loader.loadNodeAsync(e,t,e=>{this._assignExtras(e,t),n(e)})}loadCameraAsync(e,t,n){return this._loader.loadCameraAsync(e,t,e=>{this._assignExtras(e,t),n(e)})}createMaterial(e,t,n){const r=this._loader.createMaterial(e,t,n);return this._assignExtras(r,t),r}loadAnimationAsync(e,t){return this._loader.loadAnimationAsync(e,t).then(e=>(this._assignExtras(e,t),e))}}let eo=!1;function to(){eo||(eo=!0,Ie(Zs),Fe(Zs,!1,e=>new Js(e)))}to();class no extends t.FlowGraphBlock{constructor(e){var n,r;super(e);const s=e.glTF,o=(null===(n=null==s?void 0:s.animations)||void 0===n?void 0:n.map(e=>e._babylonAnimationGroup))||[];this.animationGroups=this.registerDataOutput("animationGroups",t.RichTypeAny,o);const a=(null===(r=null==s?void 0:s.nodes)||void 0===r?void 0:r.map(e=>e._babylonTransformNode))||[];this.nodes=this.registerDataOutput("nodes",t.RichTypeAny,a)}getClassName(){return"FlowGraphGLTFDataProvider"}}var ro={__proto__:null,FlowGraphGLTFDataProvider:no},so={__proto__:null,AddObjectAccessorToKey:Ee,EXT_lights_area:Mt,EXT_lights_ies:lt,EXT_lights_image_based:$e,EXT_mesh_gpu_instancing:ze,EXT_meshopt_compression:Xe,EXT_texture_avif:st,EXT_texture_webp:et,ExtrasAsMetadata:Js,FlowGraphGLTFDataProvider:no,GetMappingForKey:Me,GetPathToObjectConverter:we,InteractivityGraphToFlowGraphParser:hs,KHR_animation_pointer:_r,KHR_draco_mesh_compression:dt,KHR_gaussian_splatting:yt,KHR_interactivity:ws,KHR_lights:At,KHR_materials_anisotropy:Qt,KHR_materials_clearcoat:Vt,KHR_materials_coat:Kt,KHR_materials_diffuse_roughness:qn,KHR_materials_diffuse_transmission:Fn,KHR_materials_dispersion:Wn,KHR_materials_emissive_strength:tn,KHR_materials_fuzz:cn,KHR_materials_ior:bn,KHR_materials_iridescence:jt,KHR_materials_pbrSpecularGlossiness:St,KHR_materials_sheen:on,KHR_materials_specular:_n,KHR_materials_transmission:On,KHR_materials_unlit:kt,KHR_materials_variants:xn,KHR_materials_volume:Pn,KHR_materials_volume_scatter:Dn,KHR_mesh_quantization:Zn,KHR_node_hoverability:js,KHR_node_selectability:Vs,KHR_node_visibility:Is,KHR_texture_basisu:nr,KHR_texture_transform:ar,KHR_xmp_json_ld:cr,MSFT_audio_emitter:Vr,MSFT_lod:Kr,MSFT_minecraftMesh:jr,MSFT_sRGBFactors:Qr,RegisterEXT_lights_area:Et,RegisterEXT_lights_ies:ct,RegisterEXT_lights_image_based:We,RegisterEXT_mesh_gpu_instancing:qe,RegisterEXT_meshopt_compression:Ze,RegisterEXT_texture_avif:at,RegisterEXT_texture_webp:nt,RegisterExtrasAsMetadata:to,RegisterKHR_animation_pointer:fr,RegisterKHR_draco_mesh_compression:_t,RegisterKHR_gaussian_splatting:vt,RegisterKHR_interactivity:Ss,RegisterKHR_lights:Rt,RegisterKHR_materials_anisotropy:Jt,RegisterKHR_materials_clearcoat:Ht,RegisterKHR_materials_coat:Ut,RegisterKHR_materials_diffuse_roughness:Xn,RegisterKHR_materials_diffuse_transmission:Nn,RegisterKHR_materials_dispersion:zn,RegisterKHR_materials_emissive_strength:rn,RegisterKHR_materials_fuzz:dn,RegisterKHR_materials_ior:Tn,RegisterKHR_materials_iridescence:Yt,RegisterKHR_materials_pbrSpecularGlossiness:It,RegisterKHR_materials_sheen:ln,RegisterKHR_materials_specular:fn,RegisterKHR_materials_transmission:Ln,RegisterKHR_materials_unlit:Bt,RegisterKHR_materials_variants:Cn,RegisterKHR_materials_volume:Gn,RegisterKHR_materials_volume_scatter:$n,RegisterKHR_mesh_quantization:er,RegisterKHR_node_hoverability:Qs,RegisterKHR_node_selectability:Ks,RegisterKHR_node_visibility:Bs,RegisterKHR_texture_basisu:sr,RegisterKHR_texture_transform:lr,RegisterKHR_xmp_json_ld:dr,RegisterMSFT_audio_emitter:Hr,RegisterMSFT_lod:Ur,RegisterMSFT_minecraftMesh:Yr,RegisterMSFT_sRGBFactors:Jr,SetInterpolationForKey:Oe,TransmissionHelper:Rn,_AddInteractivityObjectModel:Ms,_RegisterKHRInteractivityRuntime:Es,_RegisterKHRNodeHoverabilityRuntime:Ys,_RegisterKHRNodeSelectabilityRuntime:Hs,_RegisterKHRNodeVisibilityRuntime:ks,addNewInteractivityFlowGraphMapping:ns,ensureTransmissionHelper:wn,getAllSupportedNativeNodeTypes:us,getMappingForDeclaration:ts,getMappingForFullOperationName:es,gltfTypeToBabylonType:cs};De(),T(),Cr();class oo{constructor(e){this._specWorkflow=!1,this._diffuseTransmissionTint=t.Color3.White(),this._diffuseTransmissionTintTexture=null,this._material=e}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){this._material.alphaCutOff=e}get alphaCutOff(){return this._material.alphaCutOff}set useAlphaFromBaseColorTexture(e){this._material._useAlphaFromBaseColorTexture=e}get useAlphaFromBaseColorTexture(){return this._material._useAlphaFromBaseColorTexture}get transparencyAsAlphaCoverage(){return!1}set transparencyAsAlphaCoverage(e){}set baseColor(e){this._material.baseColor=e}get baseColor(){return this._material.baseColor}set baseColorTexture(e){this._material.baseColorTexture=e}get baseColorTexture(){return this._material.baseColorTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e}get baseDiffuseRoughness(){return this._material.baseDiffuseRoughness}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.baseMetalness=e}get baseMetalness(){return this._material.baseMetalness}set baseMetalnessTexture(e){this._material.baseMetalnessTexture=e}get baseMetalnessTexture(){return this._material.baseMetalnessTexture}set useRoughnessFromMetallicTextureGreen(e){this._material._useRoughnessFromMetallicTextureGreen=e}set useMetallicFromMetallicTextureBlue(e){this._material._useMetallicFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){}configureSpecularGlossiness(){this._specWorkflow=!0}set specularWeight(e){this._material.specularWeight=e}get specularWeight(){return this._material.specularWeight}set specularWeightTexture(e){this._material.specularColorTexture===e?(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0):this._material.specularWeightTexture=e}get specularWeightTexture(){return this._material.specularWeightTexture}set specularColor(e){this._material.specularColor=e}get specularColor(){return this._material.specularColor}set specularColorTexture(e){this._material.specularColorTexture=e,this._material.specularWeightTexture===this._material.specularColorTexture&&(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0)}get specularColorTexture(){return this._material.specularColorTexture}set specularRoughness(e){this._material.specularRoughness=e}get specularRoughness(){return this._material.specularRoughness}set specularRoughnessTexture(e){this._material.specularRoughnessTexture=e}get specularRoughnessTexture(){return this._material.specularRoughnessTexture}set specularIor(e){this._material.specularIor=e}get specularIor(){return this._material.specularIor}set glossiness(e){this._material.specularRoughness=Math.max(1-e,0)}get glossiness(){return 1-this._material.specularRoughness}set emissionColor(e){this._material.emissionColor=e}get emissionColor(){return this._material.emissionColor}set emissionLuminance(e){this._material.emissionLuminance=e}get emissionLuminance(){return this._material.emissionLuminance}set emissionColorTexture(e){this._material.emissionColorTexture=e}get emissionColorTexture(){return this._material.emissionColorTexture}set ambientOcclusionTexture(e){this._material.ambientOcclusionTexture=e}get ambientOcclusionTexture(){return this._material.ambientOcclusionTexture}set ambientOcclusionTextureStrength(e){const t=this._material.ambientOcclusionTexture;t&&(t.level=e)}get ambientOcclusionTextureStrength(){var e;const t=this._material.ambientOcclusionTexture;return null!==(e=null==t?void 0:t.level)&&void 0!==e?e:1}configureCoat(){}set coatWeight(e){this._material.coatWeight=e}get coatWeight(){return this._material.coatWeight}set coatWeightTexture(e){this._material.coatWeightTexture=e}get coatWeightTexture(){return this._material.coatWeightTexture}set coatColor(e){this._material.coatColor=e}get coatColor(){return this._material.coatColor}set coatColorTexture(e){this._material.coatColorTexture=e}set coatRoughness(e){this._material.coatRoughness=e}get coatRoughness(){return this._material.coatRoughness}set coatRoughnessTexture(e){this._material.coatRoughnessTexture=e,e&&(this._material._useCoatRoughnessFromGreenChannel=!0)}get coatRoughnessTexture(){return this._material.coatRoughnessTexture}set coatIor(e){this._material.coatIor=e}get coatIor(){return this._material.coatIor}set coatDarkening(e){this._material.coatDarkening=e}get coatDarkening(){return this._material.coatDarkening}set coatDarkeningTexture(e){this._material.coatDarkeningTexture=e}set coatRoughnessAnisotropy(e){this._material.coatRoughnessAnisotropy=e}get coatRoughnessAnisotropy(){return this._material.coatRoughnessAnisotropy}set geometryCoatTangentAngle(e){this._material.geometryCoatTangentAngle=e}set geometryCoatTangentTexture(e){this._material.geometryCoatTangentTexture=e,e&&(this._material._useCoatRoughnessAnisotropyFromTangentTexture=!0)}get geometryCoatTangentTexture(){return this._material.geometryCoatTangentTexture}configureTransmission(){this._material.geometryThinWalled=1,this._material.transmissionDepth=0}set transmissionWeight(e){this._material.transmissionWeight=e}set transmissionWeightTexture(e){this._material.transmissionWeightTexture=e}get transmissionWeightTexture(){return this._material.transmissionWeightTexture}get transmissionWeight(){return this._material.transmissionWeight}set transmissionScatter(e){this._material.transmissionScatter=e}get transmissionScatter(){return this._material.transmissionScatter}set transmissionScatterTexture(e){this._material.transmissionScatterTexture=e}get transmissionScatterTexture(){return this._material.transmissionScatterTexture}set transmissionScatterAnisotropy(e){this._material.transmissionScatterAnisotropy=e}set transmissionDispersionAbbeNumber(e){this._material.transmissionDispersionAbbeNumber=e}set transmissionDispersionScale(e){this._material.transmissionDispersionScale=e}set transmissionDepth(e){e!==Number.MAX_VALUE||0!==this._material.transmissionDepth?this._material.transmissionDepth=e:this._material.transmissionDepth=0}get transmissionDepth(){return this._material.transmissionDepth}set transmissionColor(e){e.equals(t.Color3.White())||(this._material.transmissionColor=e)}get transmissionColor(){return this._material.transmissionColor}get refractionBackgroundTexture(){return this._material.backgroundRefractionTexture}set refractionBackgroundTexture(e){this._material.backgroundRefractionTexture=e}configureVolume(){this._material.geometryThinWalled=0}set geometryThinWalled(e){this._material.geometryThinWalled=e?1:0}get geometryThinWalled(){return!!this._material.geometryThinWalled}set volumeThicknessTexture(e){this._material.geometryThicknessTexture=e,this._material._useGeometryThicknessFromGreenChannel=!0}set volumeThickness(e){this._material.geometryThickness=e}configureSubsurface(){this._material.geometryThinWalled=1,this._material.subsurfaceScatterAnisotropy=1}set subsurfaceWeight(e){this._material.subsurfaceWeight=e}get subsurfaceWeight(){return this._material.subsurfaceWeight}set subsurfaceWeightTexture(e){this._material.subsurfaceWeightTexture=e,this._material._useSubsurfaceWeightFromTextureAlpha=!0}get subsurfaceWeightTexture(){return this._material.subsurfaceWeightTexture}set subsurfaceColor(e){this._material.subsurfaceColor=e}set subsurfaceColorTexture(e){this._material.subsurfaceColorTexture=e}set diffuseTransmissionTint(e){this._diffuseTransmissionTint=e}get diffuseTransmissionTint(){return this._diffuseTransmissionTint}set diffuseTransmissionTintTexture(e){this._diffuseTransmissionTintTexture=e}get subsurfaceRadius(){return this._material.subsurfaceRadius}set subsurfaceRadius(e){this._material.subsurfaceRadius=e}get subsurfaceRadiusScale(){return this._material.subsurfaceRadiusScale}set subsurfaceRadiusScale(e){this._material.subsurfaceRadiusScale=e}set subsurfaceScatterAnisotropy(e){this._material.subsurfaceScatterAnisotropy=e}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){}set fuzzWeight(e){this._material.fuzzWeight=e}set fuzzWeightTexture(e){this._material.fuzzWeightTexture=e}set fuzzColor(e){this._material.fuzzColor=e}set fuzzColorTexture(e){this._material.fuzzColorTexture=e}set fuzzRoughness(e){this._material.fuzzRoughness=e}set fuzzRoughnessTexture(e){this._material.fuzzRoughnessTexture=e,this._material._useFuzzRoughnessFromTextureAlpha=!0}set specularRoughnessAnisotropy(e){this._material.specularRoughnessAnisotropy=e}get specularRoughnessAnisotropy(){return this._material.specularRoughnessAnisotropy}set geometryTangentAngle(e){this._material.geometryTangentAngle=e}set geometryTangentTexture(e){this._material.geometryTangentTexture=e,this._material._useSpecularRoughnessAnisotropyFromTangentTexture=!0}get geometryTangentTexture(){return this._material.geometryTangentTexture}configureGltfStyleAnisotropy(e=!0){this._material._useGltfStyleAnisotropy=e}set thinFilmWeight(e){this._material.thinFilmWeight=e}set thinFilmIor(e){this._material.thinFilmIor=e}set thinFilmThicknessMinimum(e){this._material.thinFilmThicknessMin=e/1e3}set thinFilmThicknessMaximum(e){this._material.thinFilmThickness=e/1e3}set thinFilmWeightTexture(e){this._material.thinFilmWeightTexture=e}set thinFilmThicknessTexture(e){this._material.thinFilmThicknessTexture=e,this._material._useThinFilmThicknessFromTextureGreen=!0}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.geometryOpacity=e}get geometryOpacity(){return this._material.geometryOpacity}set geometryNormalTexture(e){this._material.geometryNormalTexture=e}get geometryNormalTexture(){return this._material.geometryNormalTexture}setNormalMapInversions(e,t){}set geometryCoatNormalTexture(e){this._material.geometryCoatNormalTexture=e}get geometryCoatNormalTexture(){return this._material.geometryCoatNormalTexture}set geometryCoatNormalTextureScale(e){this._material.geometryCoatNormalTexture&&(this._material.geometryCoatNormalTexture.level=e)}finalizeAsync(e){return A(this,void 0,void 0,function*(){var n,r,s;if(this._diffuseTransmissionTint&&!this._diffuseTransmissionTint.equals(t.Color3.White())||this._diffuseTransmissionTintTexture)if(this._material.geometryThinWalled)this.subsurfaceColor=this._diffuseTransmissionTint,this.subsurfaceColorTexture=this._diffuseTransmissionTintTexture;else if(yield this.copySurfaceToCoatAsync(e,this.subsurfaceWeight,this.subsurfaceWeightTexture,t.TextureChannel.A,this._diffuseTransmissionTint,this._diffuseTransmissionTintTexture,!0),e._disposed)return;if(this.transmissionWeight>0)if(this._material.geometryThinWalled||0===this._material.transmissionDepth)this._material.transmissionColor=this._material.baseColor,this._material.transmissionColorTexture=this._material.baseColorTexture;else if((!this.baseColor.equals(t.Color3.White())||null!==this.baseColorTexture)&&(yield this.copySurfaceToCoatAsync(e,this.transmissionWeight,this.transmissionWeightTexture,t.TextureChannel.R,this.baseColor,this.baseColorTexture,!1),e._disposed))return;if(this._specWorkflow){const o=yield t.InvertTextureAsync("newRoughnessTexture ("+this._material.name+")",yield t.ExtractChannelAsync("glossiness ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.specularColorTexture,new t.Color4(this.specularColor.r,this.specularColor.g,this.specularColor.b,this.glossiness),t.TextureChannel.A,t.TextureColorSpace.Linear),t.TextureChannel.A,this._material.getScene(),t.TextureColorSpace.Linear,t.ChannelMask.R),this._material.getScene(),t.ChannelMask.R,t.TextureColorSpace.Linear,t.ChannelMask.R);if(e._disposed)return void(null===(n=o.texture)||void 0===n||n.dispose());this.specularRoughnessTexture=o.texture,this.specularRoughness=o.factor?o.factor.r:1;const a=yield t.ExtractMaxChannelAsync("metallicTexture ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.specularColorTexture,this.specularColor.toColor4(),t.TextureChannel.RGBA,t.TextureColorSpace.Linear),this._material.getScene(),!1,t.TextureColorSpace.SRGB,t.ChannelMask.RGB);if(e._disposed)return void(null===(r=a.texture)||void 0===r||r.dispose());this.baseMetalnessTexture=a.texture,this.baseMetalness=a.factor?a.factor.r:1;const i=yield t.LerpTexturesAsync("newBaseColor ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.baseColorTexture,this.baseColor.toColor4(),t.TextureChannel.RGBA,t.TextureColorSpace.Linear),t.CreateTextureWithFactorOperand(this.specularColorTexture,this.specularColor.toColor4(),t.TextureChannel.RGBA,t.TextureColorSpace.Linear),Object.assign(Object.assign({},a),{dispose:void 0,colorSpace:t.TextureColorSpace.Linear}),this._material.getScene(),t.TextureColorSpace.SRGB,t.ChannelMask.RGB);if(e._disposed)return void(null===(s=i.texture)||void 0===s||s.dispose());const l=this.baseColorTexture;null==l||l.dispose(),this.baseColorTexture=i.texture,this.baseColor=i.factor?new t.Color3(i.factor.r,i.factor.g,i.factor.b):t.Color3.White();const u=this.specularColorTexture;null==u||u.dispose(),this.specularColorTexture=null}})}copySurfaceToCoatAsync(e,n,r,s,o,a){return A(this,arguments,void 0,function*(e,n,r,s,o,a,i=!1){var l,u,c,h,d,m,_,p,f;const g=this._material.coatWeight,b=this._material.coatWeightTexture,y=this._material.coatColor.clone(),T=this._material.coatColorTexture,v=this._material.geometryCoatNormalTexture,x=new t.Color4(g,g,g,g),A=new t.Color4(n,n,n,n);this.coatWeightTexture=null,this.coatWeight=1;const C=yield Promise.allSettled([t.LerpTexturesAsync("lerpExistingCoat",t.CreateTextureWithFactorOperand(null,new t.Color4(1,1,1,1)),t.CreateTextureWithFactorOperand(T,y.toColor4(),t.TextureChannel.RGBA,t.TextureColorSpace.SRGB),t.CreateTextureWithFactorOperand(b,x,t.TextureChannel.R),this._material.getScene(),t.TextureColorSpace.SRGB),t.LerpTexturesAsync("lerpSurfaceColor",t.CreateTextureWithFactorOperand(null,new t.Color4(1,1,1,1)),t.CreateTextureWithFactorOperand(a,o.toColor4(),t.TextureChannel.RGBA,t.TextureColorSpace.SRGB),t.CreateTextureWithFactorOperand(r,A,s),this._material.getScene(),t.TextureColorSpace.SRGB)]),R=C.find(e=>"rejected"===e.status);if(R){for(const e of C)"fulfilled"===e.status&&(null===(l=e.value.texture)||void 0===l||l.dispose());throw R.reason}const[w,M]=C.map(e=>e.value);if(e._disposed)return null===(u=w.texture)||void 0===u||u.dispose(),void(null===(c=M.texture)||void 0===c||c.dispose());const O=yield t.MultiplyTexturesAsync("newCoatColor ("+this._material.name+")",w,M,this._material.getScene(),t.TextureColorSpace.SRGB);if(e._disposed)return void(null===(h=O.texture)||void 0===h||h.dispose());O.texture?(this.coatColorTexture=O.texture,this.coatColor=t.Color3.White()):O.factor&&(this.coatColorTexture=null,this.coatColor.fromArray([O.factor.r,O.factor.g,O.factor.b]));const E=yield t.LerpTexturesAsync("newCoatIor ("+this._material.name+")",t.CreateTextureWithFactorOperand(null,new t.Color4(this._material.specularIor,this._material.specularIor,this._material.specularIor,1),t.TextureChannel.R),t.CreateTextureWithFactorOperand(null,new t.Color4(this.coatIor,this.coatIor,this.coatIor,1),t.TextureChannel.R),t.CreateTextureWithFactorOperand(b,x,t.TextureChannel.R),this._material.getScene());if(e._disposed)return void(null===(d=E.texture)||void 0===d||d.dispose());this.coatIor=E.factor?E.factor.r:this.coatIor;const L=yield t.LerpTexturesAsync("newCoatRoughness ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.specularRoughnessTexture,new t.Color4(this.specularRoughness,this.specularRoughness,this.specularRoughness,1),t.TextureChannel.G),t.CreateTextureWithFactorOperand(this.coatRoughnessTexture,new t.Color4(this.coatRoughness,this.coatRoughness,this.coatRoughness,1),t.TextureChannel.G),t.CreateTextureWithFactorOperand(b,x,t.TextureChannel.R),this._material.getScene());if(e._disposed)return void(null===(m=L.texture)||void 0===m||m.dispose());this.coatRoughness=L.factor?L.factor.r:1,this.coatRoughnessTexture=L.texture;const S=yield t.LerpTexturesAsync("newCoatDarkening ("+this._material.name+")",t.CreateTextureWithFactorOperand(null,new t.Color4(0,0,0,1),t.TextureChannel.R),t.CreateTextureWithFactorOperand(null,new t.Color4(this.coatDarkening,this.coatDarkening,this.coatDarkening,1),t.TextureChannel.R),t.CreateTextureWithFactorOperand(b,x,t.TextureChannel.R),this._material.getScene());if(e._disposed)null===(_=S.texture)||void 0===_||_.dispose();else{if(this.coatDarkening=S.factor?S.factor.r:this.coatDarkening,i){const n=yield t.LerpTexturesAsync("newSpecularRoughness ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.specularRoughnessTexture,new t.Color4(this._material.specularRoughness,this._material.specularRoughness,this._material.specularRoughness,1),t.TextureChannel.G),t.CreateTextureWithFactorOperand(null,new t.Color4(1,1,1,1),t.TextureChannel.R),t.CreateTextureWithFactorOperand(r,A,s),this._material.getScene());if(e._disposed)return void(null===(p=n.texture)||void 0===p||p.dispose());this.specularRoughness=n.factor?n.factor.r:1,this.specularRoughnessTexture=n.texture}if(v||this.geometryNormalTexture){const n=yield t.LerpTexturesAsync("newCoatNormal ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.geometryNormalTexture,this.geometryNormalTexture?new t.Color4(1,1,1,1):new t.Color4(.5,.5,1,1),t.TextureChannel.RGBA),t.CreateTextureWithFactorOperand(v,v?new t.Color4(1,1,1,1):new t.Color4(.5,.5,1,1),t.TextureChannel.RGBA),t.CreateTextureWithFactorOperand(b,x,t.TextureChannel.R),this._material.getScene());if(e._disposed)return void(null===(f=n.texture)||void 0===f||f.dispose());n.texture&&(this.geometryCoatNormalTexture=n.texture)}}})}}var ao={__proto__:null,OpenPBRMaterialLoadingAdapter:oo};class io{constructor(e){this._specWorkflow=!1,this._material=e,this._material.enableSpecularAntiAliasing=!0}get material(){return this._material}finalizeAsync(e){return A(this,void 0,void 0,function*(){})}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){this._material.alphaCutOff=e}get alphaCutOff(){return this._material.alphaCutOff}set useAlphaFromBaseColorTexture(e){this._material.useAlphaFromAlbedoTexture=e}get useAlphaFromBaseColorTexture(){return this._material.useAlphaFromAlbedoTexture}get transparencyAsAlphaCoverage(){return this._material.useRadianceOverAlpha||this._material.useSpecularOverAlpha}set transparencyAsAlphaCoverage(e){this._material.useRadianceOverAlpha=!e,this._material.useSpecularOverAlpha=!e}set baseColor(e){this._material.albedoColor=e}get baseColor(){return this._material.albedoColor}set baseColorTexture(e){this._material.albedoTexture=e}get baseColorTexture(){return this._material.albedoTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e,e>0&&(this._material.brdf.baseDiffuseModel=t.Constants.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR)}get baseDiffuseRoughness(){var e;return null!==(e=this._material.baseDiffuseRoughness)&&void 0!==e?e:0}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.metallic=e}get baseMetalness(){var e;return null!==(e=this._material.metallic)&&void 0!==e?e:1}set baseMetalnessTexture(e){this._material.metallicTexture=e}get baseMetalnessTexture(){return this._material.metallicTexture}set useRoughnessFromMetallicTextureGreen(e){this._material.useRoughnessFromMetallicTextureGreen=e,this._material.useRoughnessFromMetallicTextureAlpha=!e}set useMetallicFromMetallicTextureBlue(e){this._material.useMetallnessFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){e&&(this._material.brdf.dielectricSpecularModel=t.Constants.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR,this._material.brdf.conductorSpecularModel=t.Constants.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR)}configureSpecularGlossiness(){this._specWorkflow=!0,this._material.metallic=null,this._material.roughness=null,this._material.useMicroSurfaceFromReflectivityMapAlpha=!0}set specularWeight(e){this._material.metallicF0Factor=e}get specularWeight(){var e;return null!==(e=this._material.metallicF0Factor)&&void 0!==e?e:1}set specularWeightTexture(e){e?(this._material.metallicReflectanceTexture=e,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!0):(this._material.metallicReflectanceTexture=null,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!1)}get specularWeightTexture(){return this._material.metallicReflectanceTexture}set specularColor(e){this._specWorkflow?this._material.reflectivityColor=e:this._material.metallicReflectanceColor=e}get specularColor(){return this._specWorkflow?this._material.reflectivityColor:this._material.metallicReflectanceColor}set specularColorTexture(e){this._specWorkflow?(this._material.reflectivityTexture=e,this._material.reflectivityTexture&&(this._material.reflectivityTexture.hasAlpha=!0)):this._material.reflectanceTexture=e}get specularColorTexture(){return this._specWorkflow?this._material.reflectivityTexture:this._material.reflectanceTexture}set specularRoughness(e){this._material.roughness=e}get specularRoughness(){var e;return null!==(e=this._material.roughness)&&void 0!==e?e:1}set specularRoughnessTexture(e){this.baseMetalnessTexture||(this._material.metallicTexture=e)}get specularRoughnessTexture(){return this._material.metallicTexture}set specularIor(e){this._material.indexOfRefraction=e}get specularIor(){return this._material.indexOfRefraction}get glossiness(){var e;return null!==(e=this._material.microSurface)&&void 0!==e?e:1}set glossiness(e){this._material.microSurface=e}set emissionColor(e){this._material.emissiveColor=e}get emissionColor(){return this._material.emissiveColor}set emissionLuminance(e){this._material.emissiveIntensity=e}get emissionLuminance(){return this._material.emissiveIntensity}set emissionColorTexture(e){this._material.emissiveTexture=e}get emissionColorTexture(){return this._material.emissiveTexture}set ambientOcclusionTexture(e){this._material.ambientTexture=e,e&&(this._material.useAmbientInGrayScale=!0)}get ambientOcclusionTexture(){return this._material.ambientTexture}set ambientOcclusionTextureStrength(e){this._material.ambientTextureStrength=e}get ambientOcclusionTextureStrength(){var e;return null!==(e=this._material.ambientTextureStrength)&&void 0!==e?e:1}configureCoat(){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.remapF0OnInterfaceChange=!1}set coatWeight(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.intensity=e}get coatWeight(){return this._material.clearCoat.intensity}set coatWeightTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.texture=e}get coatWeightTexture(){return this._material.clearCoat.texture}set coatColor(e){this._material.clearCoat.isTintEnabled=e!=t.Color3.White(),this._material.clearCoat.tintColor=e}set coatColorTexture(e){this._material.clearCoat.tintTexture=e}set coatRoughness(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.roughness=e}get coatRoughness(){var e;return null!==(e=this._material.clearCoat.roughness)&&void 0!==e?e:0}set coatRoughnessTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.textureRoughness=e}get coatRoughnessTexture(){return this._material.clearCoat.textureRoughness}set coatIor(e){this._material.clearCoat.indexOfRefraction=e}set coatDarkening(e){}set coatDarkeningTexture(e){}set coatRoughnessAnisotropy(e){}get coatRoughnessAnisotropy(){return 0}set geometryCoatTangentAngle(e){}set geometryCoatTangentTexture(e){}get geometryCoatTangentTexture(){return null}set transmissionWeight(e){this._material.subSurface.isRefractionEnabled=e>0,this._material.subSurface.refractionIntensity=e}get transmissionWeight(){return this._material.subSurface.isRefractionEnabled?this._material.subSurface.refractionIntensity:0}set transmissionWeightTexture(e){this._material.subSurface.isRefractionEnabled=!0,this._material.subSurface.refractionIntensityTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set transmissionDepth(e){this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(new t.Color3(e,e,e))}get transmissionDepth(){return this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance:0}set transmissionColor(e){this.transmissionWeight>0?this._material.subSurface.tintColor=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(e)}get transmissionColor(){return this.transmissionWeight>0?this._material.subSurface.tintColor:this.subsurfaceWeight>0?this._material.subSurface.diffusionDistance:new t.Color3(0,0,0)}set transmissionScatter(e){this._material.subSurface.diffusionDistance=e}get transmissionScatter(){return this._material.subSurface.diffusionDistance}set transmissionScatterTexture(e){}set transmissionScatterAnisotropy(e){}set transmissionDispersionAbbeNumber(e){}set transmissionDispersionScale(e){e>0?(this._material.subSurface.isDispersionEnabled=!0,this._material.subSurface.dispersion=20/e):(this._material.subSurface.isDispersionEnabled=!1,this._material.subSurface.dispersion=0)}get refractionBackgroundTexture(){return this._material.subSurface.refractionTexture}set refractionBackgroundTexture(e){this._material.subSurface.refractionTexture=e}configureTransmission(){this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.useAlbedoToTintRefraction=!0,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0}configureVolume(){}set geometryThinWalled(e){}get geometryThinWalled(){return 0===this._material.subSurface.maximumThickness}set volumeThicknessTexture(e){this._material.subSurface.thicknessTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set volumeThickness(e){this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=e,this._material.subSurface.useThicknessAsDepth=!0,e>0&&(this._material.subSurface.volumeIndexOfRefraction=this._material.indexOfRefraction)}configureSubsurface(){this._material.subSurface.useGltfStyleTextures=!0,this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0,this._material.subSurface.useAlbedoToTintTranslucency=!1}set subsurfaceWeight(e){this._material.subSurface.isTranslucencyEnabled=e>0,this._material.subSurface.translucencyIntensity=e}get subsurfaceWeight(){return this._material.subSurface.isTranslucencyEnabled?this._material.subSurface.translucencyIntensity:0}set subsurfaceWeightTexture(e){this._material.subSurface.translucencyIntensityTexture=e}set subsurfaceColor(e){const n=new t.Vector3(-Math.log(this.transmissionColor.r),-Math.log(this.transmissionColor.g),-Math.log(this.transmissionColor.b));n.scaleInPlace(1/Math.max(this.transmissionDepth,.001));const r=n,s=Math.max(r.x,Math.max(r.y,r.z)),o=s>0?1/s:1;this._material.subSurface.diffusionDistance=new t.Color3(Math.exp(-r.x*o),Math.exp(-r.y*o),Math.exp(-r.z*o))}set subsurfaceColorTexture(e){}set diffuseTransmissionTint(e){this._material.subSurface.tintColor=e}get diffuseTransmissionTint(){return this._material.subSurface.tintColor}set diffuseTransmissionTintTexture(e){this._material.subSurface.translucencyColorTexture=e}get subsurfaceRadius(){return 1}set subsurfaceRadius(e){}get subsurfaceRadiusScale(){var e;return null!==(e=this._material.subSurface.scatteringDiffusionProfile)&&void 0!==e?e:t.Color3.White()}set subsurfaceRadiusScale(e){this._material.subSurface.scatteringDiffusionProfile=e}set subsurfaceScatterAnisotropy(e){}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){this._material.sheen.isEnabled=!0,this._material.sheen.useRoughnessFromMainTexture=!1,this._material.sheen.albedoScaling=!0}set fuzzWeight(e){this._material.sheen.isEnabled=!0,this._material.sheen.intensity=e}set fuzzWeightTexture(e){this._material.sheen.texture||(this._material.sheen.texture=e)}set fuzzColor(e){this._material.sheen.isEnabled=!0,this._material.sheen.color=e}set fuzzColorTexture(e){this._material.sheen.texture=e}set fuzzRoughness(e){this._material.sheen.isEnabled=!0,this._material.sheen.roughness=e}set fuzzRoughnessTexture(e){this._material.sheen.isEnabled=!0,this._material.sheen.textureRoughness=e}set specularRoughnessAnisotropy(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.intensity=e}get specularRoughnessAnisotropy(){return this._material.anisotropy.intensity}set geometryTangentAngle(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.angle=e}set geometryTangentTexture(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.texture=e}get geometryTangentTexture(){return this._material.anisotropy.texture}configureGltfStyleAnisotropy(e=!0){}set thinFilmWeight(e){this._material.iridescence.isEnabled=e>0,this._material.iridescence.intensity=e}set thinFilmIor(e){this._material.iridescence.indexOfRefraction=e}set thinFilmThicknessMinimum(e){this._material.iridescence.minimumThickness=e}set thinFilmThicknessMaximum(e){this._material.iridescence.maximumThickness=e}set thinFilmWeightTexture(e){this._material.iridescence.texture=e}set thinFilmThicknessTexture(e){this._material.iridescence.thicknessTexture=e}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.alpha=e}get geometryOpacity(){return this._material.alpha}set geometryNormalTexture(e){this._material.bumpTexture=e,this._material.forceIrradianceInFragment=!0}get geometryNormalTexture(){return this._material.bumpTexture}setNormalMapInversions(e,t){this._material.invertNormalMapX=e,this._material.invertNormalMapY=t}set geometryCoatNormalTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.bumpTexture=e}get geometryCoatNormalTexture(){return this._material.clearCoat.bumpTexture}set geometryCoatNormalTextureScale(e){this._material.clearCoat.bumpTexture&&(this._material.clearCoat.bumpTexture.level=e)}}var lo={__proto__:null,PBRMaterialLoadingAdapter:io},uo={__proto__:null,AddObjectAccessorToKey:Ee,AnimationPropertyInfo:Tr,ArrayItem:Pe,EXT_lights_area:Mt,EXT_lights_ies:lt,EXT_lights_image_based:$e,EXT_mesh_gpu_instancing:ze,EXT_meshopt_compression:Xe,EXT_texture_avif:st,EXT_texture_webp:et,ExtrasAsMetadata:Js,FlowGraphGLTFDataProvider:no,GLTFFileLoader:b,GLTFLoader:Ge,GetMappingForKey:Me,GetPathToObjectConverter:we,InteractivityGraphToFlowGraphParser:hs,KHR_animation_pointer:_r,KHR_draco_mesh_compression:dt,KHR_gaussian_splatting:yt,KHR_interactivity:ws,KHR_lights:At,KHR_materials_anisotropy:Qt,KHR_materials_clearcoat:Vt,KHR_materials_coat:Kt,KHR_materials_diffuse_roughness:qn,KHR_materials_diffuse_transmission:Fn,KHR_materials_dispersion:Wn,KHR_materials_emissive_strength:tn,KHR_materials_fuzz:cn,KHR_materials_ior:bn,KHR_materials_iridescence:jt,KHR_materials_pbrSpecularGlossiness:St,KHR_materials_sheen:on,KHR_materials_specular:_n,KHR_materials_transmission:On,KHR_materials_unlit:kt,KHR_materials_variants:xn,KHR_materials_volume:Pn,KHR_materials_volume_scatter:Dn,KHR_mesh_quantization:Zn,KHR_node_hoverability:js,KHR_node_selectability:Vs,KHR_node_visibility:Is,KHR_texture_basisu:nr,KHR_texture_transform:ar,KHR_xmp_json_ld:cr,LoadBoundingInfoFromPositionAccessor:Be,MSFT_audio_emitter:Vr,MSFT_lod:Kr,MSFT_minecraftMesh:jr,MSFT_sRGBFactors:Qr,OpenPBRMaterialLoadingAdapter:oo,PBRMaterialLoadingAdapter:io,RegisterEXT_lights_area:Et,RegisterEXT_lights_ies:ct,RegisterEXT_lights_image_based:We,RegisterEXT_mesh_gpu_instancing:qe,RegisterEXT_meshopt_compression:Ze,RegisterEXT_texture_avif:at,RegisterEXT_texture_webp:nt,RegisterExtrasAsMetadata:to,RegisterGLTF2Loader:De,RegisterGLTFLoaderAnimation:Cr,RegisterKHR_animation_pointer:fr,RegisterKHR_draco_mesh_compression:_t,RegisterKHR_gaussian_splatting:vt,RegisterKHR_interactivity:Ss,RegisterKHR_lights:Rt,RegisterKHR_materials_anisotropy:Jt,RegisterKHR_materials_clearcoat:Ht,RegisterKHR_materials_coat:Ut,RegisterKHR_materials_diffuse_roughness:Xn,RegisterKHR_materials_diffuse_transmission:Nn,RegisterKHR_materials_dispersion:zn,RegisterKHR_materials_emissive_strength:rn,RegisterKHR_materials_fuzz:dn,RegisterKHR_materials_ior:Tn,RegisterKHR_materials_iridescence:Yt,RegisterKHR_materials_pbrSpecularGlossiness:It,RegisterKHR_materials_sheen:ln,RegisterKHR_materials_specular:fn,RegisterKHR_materials_transmission:Ln,RegisterKHR_materials_unlit:Bt,RegisterKHR_materials_variants:Cn,RegisterKHR_materials_volume:Gn,RegisterKHR_materials_volume_scatter:$n,RegisterKHR_mesh_quantization:er,RegisterKHR_node_hoverability:Qs,RegisterKHR_node_selectability:Ks,RegisterKHR_node_visibility:Bs,RegisterKHR_texture_basisu:sr,RegisterKHR_texture_transform:lr,RegisterKHR_xmp_json_ld:dr,RegisterMSFT_audio_emitter:Hr,RegisterMSFT_lod:Ur,RegisterMSFT_minecraftMesh:Yr,RegisterMSFT_sRGBFactors:Jr,SetInterpolationForKey:Oe,TransformNodeAnimationPropertyInfo:vr,TransmissionHelper:Rn,WeightAnimationPropertyInfo:xr,_AddInteractivityObjectModel:Ms,_RegisterKHRInteractivityRuntime:Es,_RegisterKHRNodeHoverabilityRuntime:Ys,_RegisterKHRNodeSelectabilityRuntime:Hs,_RegisterKHRNodeVisibilityRuntime:ks,addNewInteractivityFlowGraphMapping:ns,ensureTransmissionHelper:wn,getAllSupportedNativeNodeTypes:us,getMappingForDeclaration:ts,getMappingForFullOperationName:es,getQuaternion:br,getVector3:gr,getWeights:yr,gltfTypeToBabylonType:cs,registerGLTFExtension:Fe,registeredGLTFExtensions:Se,unregisterGLTFExtension:Ie};const co=Object.assign({},so),ho=Object.assign(Object.assign({},{__proto__:null}),{Extensions:co}),mo=Object.assign(Object.assign({},uo),{Loader:ho}),_o="undefined"!=typeof global?global:"undefined"!=typeof window?window:void 0;if(void 0!==_o){_o.BABYLON=_o.BABYLON||{};const e=_o.BABYLON;e.GLTF2=e.GLTF2||{},e.GLTF2.Loader=e.GLTF2.Loader||{},e.GLTF2.Loader.Extensions=e.GLTF2.Loader.Extensions||{};const t=["Loader"];for(const n in co)e.GLTF2.Loader.Extensions[n]=co[n],t.push(n);for(const n in ho)"Extensions"!==n&&(e.GLTF2.Loader[n]=ho[n],t.push(n));for(const n in mo)t.indexOf(n)>-1||(e.GLTF2[n]=mo[n])}e.GLTF1=he,e.GLTF2=mo,e.GLTFFileLoader=b,e.GLTFLoaderDefaultOptions=f,e.GLTFValidation=s,e.RegisterGLTFFileLoader=T});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("babylonjs")):"function"==typeof define&&define.amd?define(["exports","babylonjs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).BABYLON=e.BABYLON||{},e.BABYLON)}(this,function(e,t){"use strict";function n(e,t,n,o){const r={externalResourceFunction:o};return n&&(r.uri="file:"===t?n:t+n),ArrayBuffer.isView(e)?GLTFValidator.validateBytes(e,r):GLTFValidator.validateString(e,r)}function o(){const e=[];onmessage=t=>{const o=t.data;switch(o.id){case"init":importScripts(o.url);break;case"validate":n(o.data,o.rootUrl,o.fileName,t=>new Promise((n,o)=>{const r=e.length;e.push({resolve:n,reject:o}),postMessage({id:"getExternalResource",index:r,uri:t})})).then(e=>{postMessage({id:"validate.resolve",value:e})},e=>{postMessage({id:"validate.reject",reason:e})});break;case"getExternalResource.resolve":e[o.index].resolve(o.value);break;case"getExternalResource.reject":e[o.index].reject(o.reason)}}}class r{static ValidateAsync(e,s,a,i){return"function"==typeof Worker?new Promise((l,u)=>{const c=`${n}(${o})()`,d=URL.createObjectURL(new Blob([c],{type:"application/javascript"})),h=new Worker(d),m=e=>{h.removeEventListener("error",m),h.removeEventListener("message",p),u(e)},p=e=>{const t=e.data;switch(t.id){case"getExternalResource":i(t.uri).then(e=>{h.postMessage({id:"getExternalResource.resolve",index:t.index,value:e},[e.buffer])},e=>{h.postMessage({id:"getExternalResource.reject",index:t.index,reason:e})});break;case"validate.resolve":h.removeEventListener("error",m),h.removeEventListener("message",p),r._LastResults=t.value,l(t.value),h.terminate();break;case"validate.reject":h.removeEventListener("error",m),h.removeEventListener("message",p),u(t.reason),h.terminate()}};if(h.addEventListener("error",m),h.addEventListener("message",p),h.postMessage({id:"init",url:t.Tools.GetBabylonScriptURL(this.Configuration.url)}),ArrayBuffer.isView(e)){const t=e.slice();h.postMessage({id:"validate",data:t,rootUrl:s,fileName:a},[t.buffer])}else h.postMessage({id:"validate",data:e,rootUrl:s,fileName:a})}):(this._LoadScriptPromise||(this._LoadScriptPromise=t.Tools.LoadBabylonScriptAsync(this.Configuration.url)),this._LoadScriptPromise.then(()=>n(e,s,a,i)))}}r.Configuration={url:`${t.Tools._DefaultCdnUrl}/gltf_validator.js`},r._LastResults=null;var s={__proto__:null,GLTFValidation:r};const a="Z2xURg",i="gltf",l={".gltf":{isBinary:!1,mimeType:"model/gltf+json"},".glb":{isBinary:!0,mimeType:"model/gltf-binary"}},u=e=>-1!==e.indexOf("asset")&&-1!==e.indexOf("version")||e.startsWith("data:base64,"+a)||e.startsWith("data:;base64,"+a)||e.startsWith("data:application/octet-stream;base64,"+a)||e.startsWith("data:model/gltf-binary;base64,"+a);function c(e,t,n){try{return Promise.resolve(new Uint8Array(e,t,n))}catch(e){return Promise.reject(e)}}var d,h,m;e.GLTFLoaderCoordinateSystemMode=void 0,(d=e.GLTFLoaderCoordinateSystemMode||(e.GLTFLoaderCoordinateSystemMode={}))[d.AUTO=0]="AUTO",d[d.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED",e.GLTFLoaderAnimationStartMode=void 0,(h=e.GLTFLoaderAnimationStartMode||(e.GLTFLoaderAnimationStartMode={}))[h.NONE=0]="NONE",h[h.FIRST=1]="FIRST",h[h.ALL=2]="ALL",e.GLTFLoaderState=void 0,(m=e.GLTFLoaderState||(e.GLTFLoaderState={}))[m.LOADING=0]="LOADING",m[m.READY=1]="READY",m[m.COMPLETE=2]="COMPLETE";const p=e=>Promise.resolve(e);class f{constructor(){this.alwaysComputeBoundingBox=!1,this.alwaysComputeSkeletonRootNode=!1,this.animationStartMode=e.GLTFLoaderAnimationStartMode.FIRST,this.compileMaterials=!1,this.compileShadowGenerators=!1,this.coordinateSystemMode=e.GLTFLoaderCoordinateSystemMode.AUTO,this.createInstances=!0,this.loadAllMaterials=!1,this.loadMorphTargets=!0,this.useMaxMorphTargetInfluencers=!0,this.loadNodeAnimations=!0,this.loadOnlyMaterials=!1,this.loadSkins=!0,this.skipMaterials=!1,this.targetFps=60,this.transparencyAsCoverage=!1,this.useClipPlane=!1,this.useGltfTextureNames=!1,this.useRangeRequests=!1,this.useSRGBBuffers=!0,this.validate=!1,this.useOpenPBR=!1,this.dontUseTransmissionHelper=!1}}const _=new f;class g extends f{constructor(){super(...arguments),this.extensionOptions={},this.preprocessUrlAsync=p}copyFrom(e){var t,n,o,r,s,a,i,l,u,c,d,h,m,p,f,_,g,v,y,b,T,x,A,R,C,w,O;e&&(this.alwaysComputeBoundingBox=null!==(t=e.alwaysComputeBoundingBox)&&void 0!==t?t:this.alwaysComputeBoundingBox,this.alwaysComputeSkeletonRootNode=null!==(n=e.alwaysComputeSkeletonRootNode)&&void 0!==n?n:this.alwaysComputeSkeletonRootNode,this.animationStartMode=null!==(o=e.animationStartMode)&&void 0!==o?o:this.animationStartMode,this.capturePerformanceCounters=null!==(r=e.capturePerformanceCounters)&&void 0!==r?r:this.capturePerformanceCounters,this.compileMaterials=null!==(s=e.compileMaterials)&&void 0!==s?s:this.compileMaterials,this.compileShadowGenerators=null!==(a=e.compileShadowGenerators)&&void 0!==a?a:this.compileShadowGenerators,this.coordinateSystemMode=null!==(i=e.coordinateSystemMode)&&void 0!==i?i:this.coordinateSystemMode,this.createInstances=null!==(l=e.createInstances)&&void 0!==l?l:this.createInstances,this.customRootNode=e.customRootNode,this.extensionOptions=null!==(u=e.extensionOptions)&&void 0!==u?u:this.extensionOptions,this.loadAllMaterials=null!==(c=e.loadAllMaterials)&&void 0!==c?c:this.loadAllMaterials,this.loadMorphTargets=null!==(d=e.loadMorphTargets)&&void 0!==d?d:this.loadMorphTargets,this.loadNodeAnimations=null!==(h=e.loadNodeAnimations)&&void 0!==h?h:this.loadNodeAnimations,this.loadOnlyMaterials=null!==(m=e.loadOnlyMaterials)&&void 0!==m?m:this.loadOnlyMaterials,this.loadSkins=null!==(p=e.loadSkins)&&void 0!==p?p:this.loadSkins,this.loggingEnabled=null!==(f=e.loggingEnabled)&&void 0!==f?f:this.loggingEnabled,this.onCameraLoaded=e.onCameraLoaded,this.onMaterialLoaded=e.onMaterialLoaded,this.onMeshLoaded=e.onMeshLoaded,this.onParsed=e.onParsed,this.onSkinLoaded=e.onSkinLoaded,this.onTextureLoaded=e.onTextureLoaded,this.onValidated=e.onValidated,this.preprocessUrlAsync=null!==(_=e.preprocessUrlAsync)&&void 0!==_?_:this.preprocessUrlAsync,this.skipMaterials=null!==(g=e.skipMaterials)&&void 0!==g?g:this.skipMaterials,this.targetFps=null!==(v=e.targetFps)&&void 0!==v?v:this.targetFps,this.transparencyAsCoverage=null!==(y=e.transparencyAsCoverage)&&void 0!==y?y:this.transparencyAsCoverage,this.useClipPlane=null!==(b=e.useClipPlane)&&void 0!==b?b:this.useClipPlane,this.useGltfTextureNames=null!==(T=e.useGltfTextureNames)&&void 0!==T?T:this.useGltfTextureNames,this.useMaxMorphTargetInfluencers=null!==(x=e.useMaxMorphTargetInfluencers)&&void 0!==x?x:this.useMaxMorphTargetInfluencers,this.useOpenPBR=null!==(A=e.useOpenPBR)&&void 0!==A?A:this.useOpenPBR,this.useRangeRequests=null!==(R=e.useRangeRequests)&&void 0!==R?R:this.useRangeRequests,this.useSRGBBuffers=null!==(C=e.useSRGBBuffers)&&void 0!==C?C:this.useSRGBBuffers,this.validate=null!==(w=e.validate)&&void 0!==w?w:this.validate,this.dontUseTransmissionHelper=null!==(O=e.dontUseTransmissionHelper)&&void 0!==O?O:this.dontUseTransmissionHelper)}}class v extends g{constructor(e){super(),this.onParsedObservable=new t.Observable,this.onMeshLoadedObservable=new t.Observable,this.onSkinLoadedObservable=new t.Observable,this.onTextureLoadedObservable=new t.Observable,this.onMaterialLoadedObservable=new t.Observable,this.onCameraLoadedObservable=new t.Observable,this.onCompleteObservable=new t.Observable,this.onErrorObservable=new t.Observable,this.onDisposeObservable=new t.Observable,this.onExtensionLoadedObservable=new t.Observable,this.onValidatedObservable=new t.Observable,this._loader=null,this._state=null,this._requests=new Array,this.name=i,this.extensions=l,this.onLoaderStateChangedObservable=new t.Observable,this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled,this.copyFrom(Object.assign(Object.assign({},_),e))}get _isPreprocessUrlAsyncSet(){return this.preprocessUrlAsync!==p}set onParsed(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),e&&(this._onParsedObserver=this.onParsedObservable.add(e))}set onMeshLoaded(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),e&&(this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e))}set onSkinLoaded(e){this._onSkinLoadedObserver&&this.onSkinLoadedObservable.remove(this._onSkinLoadedObserver),e&&(this._onSkinLoadedObserver=this.onSkinLoadedObservable.add(t=>e(t.node,t.skinnedNode)))}set onTextureLoaded(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),e&&(this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e))}set onMaterialLoaded(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),e&&(this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e))}set onCameraLoaded(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),e&&(this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e))}set onComplete(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)}set onError(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}set onExtensionLoaded(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)}get loggingEnabled(){return this._loggingEnabled}set loggingEnabled(e){this._loggingEnabled!==e&&(this._loggingEnabled=e,this._loggingEnabled?this._log=this._logEnabled:this._log=this._logDisabled)}get capturePerformanceCounters(){return this._capturePerformanceCounters}set capturePerformanceCounters(e){this._capturePerformanceCounters!==e&&(this._capturePerformanceCounters=e,this._capturePerformanceCounters?(this._startPerformanceCounter=this._startPerformanceCounterEnabled,this._endPerformanceCounter=this._endPerformanceCounterEnabled):(this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled))}set onValidated(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)}dispose(){this._loader&&(this._loader.dispose(),this._loader=null);for(const e of this._requests)e.abort();this._requests.length=0,delete this._progressCallback,this.preprocessUrlAsync=p,this.onMeshLoadedObservable.clear(),this.onSkinLoadedObservable.clear(),this.onTextureLoadedObservable.clear(),this.onMaterialLoadedObservable.clear(),this.onCameraLoadedObservable.clear(),this.onCompleteObservable.clear(),this.onExtensionLoadedObservable.clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()}loadFile(e,n,o,r,s,a,i,l){if(ArrayBuffer.isView(n))return this._loadBinary(e,n,o,r,i,l),null;this._progressCallback=s;const u=n.name||t.Tools.GetFilename(n);if(a){if(this.useRangeRequests){this.validate&&t.Logger.Warn("glTF validation is not supported when range requests are enabled");const o={abort:()=>{},onCompleteObservable:new t.Observable},s={readAsync:(t,o)=>new Promise((r,s)=>{this._loadFile(e,n,e=>{r(new Uint8Array(e))},!0,e=>{s(e)},e=>{e.setRequestHeader("Range",`bytes=${t}-${t+o-1}`)})}),byteLength:0};return this._unpackBinaryAsync(new t.DataReader(s)).then(e=>{o.onCompleteObservable.notifyObservers(o),r(e)},i?e=>i(void 0,e):void 0),o}return this._loadFile(e,n,n=>{this._validate(e,new Uint8Array(n,0,n.byteLength),o,u),this._unpackBinaryAsync(new t.DataReader({readAsync:(e,t)=>c(n,e,t),byteLength:n.byteLength})).then(e=>{r(e)},i?e=>i(void 0,e):void 0)},!0,i)}return this._loadFile(e,n,t=>{try{this._validate(e,t,o,u),r({json:this._parseJson(t)})}catch(e){i&&i()}},!1,i)}_loadBinary(e,n,o,r,s,a){this._validate(e,new Uint8Array(n.buffer,n.byteOffset,n.byteLength),o,a),this._unpackBinaryAsync(new t.DataReader({readAsync:(e,t)=>function(e,t,n){try{if(t<0||t>=e.byteLength)throw new RangeError("Offset is out of range.");if(t+n>e.byteLength)throw new RangeError("Length is out of range.");return Promise.resolve(new Uint8Array(e.buffer,e.byteOffset+t,n))}catch(e){return Promise.reject(e)}}(n,e,t),byteLength:n.byteLength})).then(e=>{r(e)},s?e=>s(void 0,e):void 0)}importMeshAsync(e,t,n,o,r,s){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(n),this.onParsedObservable.clear(),this._log(`Loading ${s||""}`),this._loader=this._getLoader(n),this._loader.importMeshAsync(e,t,null,n,o,r,s)))}loadAsync(e,t,n,o,r){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${r||""}`),this._loader=this._getLoader(t),this._loader.loadAsync(e,t,n,o,r)))}loadAssetContainerAsync(e,n,o,r,s){return Promise.resolve().then(()=>{this.onParsedObservable.notifyObservers(n),this.onParsedObservable.clear(),this._log(`Loading ${s||""}`),this._loader=this._getLoader(n);const a=new t.AssetContainer(e),i=[];this.onMaterialLoadedObservable.add(e=>{i.push(e)});const l=[];this.onTextureLoadedObservable.add(e=>{l.push(e)});const u=[];this.onCameraLoadedObservable.add(e=>{u.push(e)});const c=[];return this.onMeshLoadedObservable.add(e=>{e.morphTargetManager&&c.push(e.morphTargetManager)}),this._loader.importMeshAsync(null,e,a,n,o,r,s).then(e=>(Array.prototype.push.apply(a.geometries,e.geometries),Array.prototype.push.apply(a.meshes,e.meshes),Array.prototype.push.apply(a.particleSystems,e.particleSystems),Array.prototype.push.apply(a.skeletons,e.skeletons),Array.prototype.push.apply(a.animationGroups,e.animationGroups),Array.prototype.push.apply(a.materials,i),Array.prototype.push.apply(a.textures,l),Array.prototype.push.apply(a.lights,e.lights),Array.prototype.push.apply(a.transformNodes,e.transformNodes),Array.prototype.push.apply(a.cameras,u),Array.prototype.push.apply(a.morphTargetManagers,c),a))})}canDirectLoad(e){return u(e)}directLoad(e,n){if(n.startsWith("base64,"+a)||n.startsWith(";base64,"+a)||n.startsWith("application/octet-stream;base64,"+a)||n.startsWith("model/gltf-binary;base64,"+a)){const o=t.DecodeBase64UrlToBinary(n);return this._validate(e,new Uint8Array(o,0,o.byteLength)),this._unpackBinaryAsync(new t.DataReader({readAsync:(e,t)=>c(o,e,t),byteLength:o.byteLength}))}return this._validate(e,n),Promise.resolve({json:this._parseJson(n)})}createPlugin(e){return new v(e[i])}get loaderState(){return this._state}whenCompleteAsync(){return new Promise((e,t)=>{this.onCompleteObservable.addOnce(()=>{e()}),this.onErrorObservable.addOnce(e=>{t(e)})})}_setState(t){this._state!==t&&(this._state=t,this.onLoaderStateChangedObservable.notifyObservers(this._state),this._log(e.GLTFLoaderState[this._state]))}_loadFile(e,t,n,o,r,s){const a=e._loadFile(t,n,e=>{this._onProgress(e,a)},!0,o,r,s);return a.onCompleteObservable.add(()=>{a._lengthComputable=!0,a._total=a._loaded}),this._requests.push(a),a}_onProgress(e,t){if(!this._progressCallback)return;t._lengthComputable=e.lengthComputable,t._loaded=e.loaded,t._total=e.total;let n=!0,o=0,r=0;for(const e of this._requests){if(void 0===e._lengthComputable||void 0===e._loaded||void 0===e._total)return;n=n&&e._lengthComputable,o+=e._loaded,r+=e._total}this._progressCallback({lengthComputable:n,loaded:o,total:n?r:0})}_validate(e,n,o="",s=""){this.validate&&(this._startPerformanceCounter("Validate JSON"),r.ValidateAsync(n,o,s,t=>this.preprocessUrlAsync(o+t,o).then(t=>e._loadFileAsync(t,void 0,!0,!0).then(e=>new Uint8Array(e,0,e.byteLength)))).then(e=>{this._endPerformanceCounter("Validate JSON"),this.onValidatedObservable.notifyObservers(e),this.onValidatedObservable.clear()},e=>{this._endPerformanceCounter("Validate JSON"),t.Tools.Warn(`Failed to validate: ${e.message}`),this.onValidatedObservable.clear()}))}_getLoader(e){const t=e.json.asset||{};this._log(`Asset version: ${t.version}`),t.minVersion&&this._log(`Asset minimum version: ${t.minVersion}`),t.generator&&this._log(`Asset generator: ${t.generator}`);const n=v._parseVersion(t.version);if(!n)throw new Error("Invalid version: "+t.version);if(void 0!==t.minVersion){const e=v._parseVersion(t.minVersion);if(!e)throw new Error("Invalid minimum version: "+t.minVersion);if(v._compareVersion(e,{major:2,minor:0})>0)throw new Error("Incompatible minimum version: "+t.minVersion)}const o={1:v._CreateGLTF1Loader,2:v._CreateGLTF2Loader}[n.major];if(!o)throw new Error("Unsupported version: "+t.version);return o(this)}_parseJson(e){this._startPerformanceCounter("Parse JSON"),this._log(`JSON length: ${e.length}`);const t=JSON.parse(e);return this._endPerformanceCounter("Parse JSON"),t}_unpackBinaryAsync(e){return this._startPerformanceCounter("Unpack Binary"),e.loadAsync(20).then(()=>{const n=e.readUint32();if(1179937895!==n)throw new t.RuntimeError("Unexpected magic: "+n,t.ErrorCodes.GLTFLoaderUnexpectedMagicError);const o=e.readUint32();this.loggingEnabled&&this._log(`Binary version: ${o}`);const r=e.readUint32();let s;switch(this.useRangeRequests||r===e.buffer.byteLength||t.Logger.Warn(`Length in header does not match actual data length: ${r} != ${e.buffer.byteLength}`),o){case 1:s=this._unpackBinaryV1Async(e,r);break;case 2:s=this._unpackBinaryV2Async(e,r);break;default:throw new Error("Unsupported version: "+o)}return this._endPerformanceCounter("Unpack Binary"),s})}_unpackBinaryV1Async(e,t){const n=e.readUint32(),o=e.readUint32();if(0!==o)throw new Error(`Unexpected content format: ${o}`);const r=t-e.byteOffset,s={json:this._parseJson(e.readString(n)),bin:null};if(0!==r){const t=e.byteOffset;s.bin={readAsync:(n,o)=>e.buffer.readAsync(t+n,o),byteLength:r}}return Promise.resolve(s)}_unpackBinaryV2Async(e,t){const n=1313821514,o=e.readUint32();if(e.readUint32()!==n)throw new Error("First chunk format is not JSON");return e.byteOffset+o===t?e.loadAsync(o).then(()=>({json:this._parseJson(e.readString(o)),bin:null})):e.loadAsync(o+8).then(()=>{const r={json:this._parseJson(e.readString(o)),bin:null},s=()=>{const o=e.readUint32();switch(e.readUint32()){case n:throw new Error("Unexpected JSON chunk");case 5130562:{const t=e.byteOffset;r.bin={readAsync:(n,o)=>e.buffer.readAsync(t+n,o),byteLength:o},e.skipBytes(o);break}default:e.skipBytes(o)}return e.byteOffset!==t?e.loadAsync(8).then(s):Promise.resolve(r)};return s()})}static _parseVersion(e){if("1.0"===e||"1.0.1"===e)return{major:1,minor:0};const t=(e+"").match(/^(\d+)\.(\d+)/);return t?{major:parseInt(t[1]),minor:parseInt(t[2])}:null}static _compareVersion(e,t){return e.major>t.major?1:e.major<t.major?-1:e.minor>t.minor?1:e.minor<t.minor?-1:0}_logOpen(e){this._log(e),this._logIndentLevel++}_logClose(){--this._logIndentLevel}_logEnabled(e){const n=v._logSpaces.substring(0,2*this._logIndentLevel);t.Logger.Log(`${n}${e}`)}_logDisabled(e){}_startPerformanceCounterEnabled(e){t.Tools.StartPerformanceCounter(e)}_startPerformanceCounterDisabled(e){}_endPerformanceCounterEnabled(e){t.Tools.EndPerformanceCounter(e)}_endPerformanceCounterDisabled(e){}}v.IncrementalLoading=!0,v.HomogeneousCoordinates=!1,v._logSpaces=" ";let y=!1;function b(){y||(y=!0,t.RegisterSceneLoaderPlugin(new v))}b();var T={__proto__:null,GLTFFileLoader:v,get GLTFLoaderAnimationStartMode(){return e.GLTFLoaderAnimationStartMode},get GLTFLoaderCoordinateSystemMode(){return e.GLTFLoaderCoordinateSystemMode},GLTFLoaderDefaultOptions:_,get GLTFLoaderState(){return e.GLTFLoaderState},RegisterGLTFFileLoader:b};const x="undefined"!=typeof global?global:"undefined"!=typeof window?window:void 0;if(void 0!==x){x.BABYLON=x.BABYLON||{};for(const e in T)x.BABYLON[e]=T[e];for(const e in s)x.BABYLON[e]=s[e]}function A(e,t,n,o){return new(n||(n=Promise))(function(r,s){function a(e){try{l(o.next(e))}catch(e){s(e)}}function i(e){try{l(o.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,i)}l((o=o.apply(e,t||[])).next())})}var R,C,w,O,M,E,S,I,N;Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError,function(e){e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.FLOAT=5126]="FLOAT"}(R||(R={})),function(e){e[e.FRAGMENT=35632]="FRAGMENT",e[e.VERTEX=35633]="VERTEX"}(C||(C={})),function(e){e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.INT=5124]="INT",e[e.UNSIGNED_INT=5125]="UNSIGNED_INT",e[e.FLOAT=5126]="FLOAT",e[e.FLOAT_VEC2=35664]="FLOAT_VEC2",e[e.FLOAT_VEC3=35665]="FLOAT_VEC3",e[e.FLOAT_VEC4=35666]="FLOAT_VEC4",e[e.INT_VEC2=35667]="INT_VEC2",e[e.INT_VEC3=35668]="INT_VEC3",e[e.INT_VEC4=35669]="INT_VEC4",e[e.BOOL=35670]="BOOL",e[e.BOOL_VEC2=35671]="BOOL_VEC2",e[e.BOOL_VEC3=35672]="BOOL_VEC3",e[e.BOOL_VEC4=35673]="BOOL_VEC4",e[e.FLOAT_MAT2=35674]="FLOAT_MAT2",e[e.FLOAT_MAT3=35675]="FLOAT_MAT3",e[e.FLOAT_MAT4=35676]="FLOAT_MAT4",e[e.SAMPLER_2D=35678]="SAMPLER_2D"}(w||(w={})),function(e){e[e.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e[e.REPEAT=10497]="REPEAT"}(O||(O={})),function(e){e[e.NEAREST=9728]="NEAREST",e[e.LINEAR=9728]="LINEAR",e[e.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",e[e.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",e[e.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",e[e.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR"}(M||(M={})),function(e){e[e.ALPHA=6406]="ALPHA",e[e.RGB=6407]="RGB",e[e.RGBA=6408]="RGBA",e[e.LUMINANCE=6409]="LUMINANCE",e[e.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA"}(E||(E={})),function(e){e[e.FRONT=1028]="FRONT",e[e.BACK=1029]="BACK",e[e.FRONT_AND_BACK=1032]="FRONT_AND_BACK"}(S||(S={})),function(e){e[e.ZERO=0]="ZERO",e[e.ONE=1]="ONE",e[e.SRC_COLOR=768]="SRC_COLOR",e[e.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",e[e.DST_COLOR=774]="DST_COLOR",e[e.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",e[e.SRC_ALPHA=770]="SRC_ALPHA",e[e.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",e[e.DST_ALPHA=772]="DST_ALPHA",e[e.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",e[e.CONSTANT_COLOR=32769]="CONSTANT_COLOR",e[e.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",e[e.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",e[e.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",e[e.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE"}(I||(I={}));class L{static SetMatrix(e,n,o,r,s){let a=null;if("MODEL"===o.semantic?a=n.getWorldMatrix():"PROJECTION"===o.semantic?a=e.getProjectionMatrix():"VIEW"===o.semantic?a=e.getViewMatrix():"MODELVIEWINVERSETRANSPOSE"===o.semantic?a=t.Matrix.Transpose(n.getWorldMatrix().multiply(e.getViewMatrix()).invert()):"MODELVIEW"===o.semantic?a=n.getWorldMatrix().multiply(e.getViewMatrix()):"MODELVIEWPROJECTION"===o.semantic?a=n.getWorldMatrix().multiply(e.getTransformMatrix()):"MODELINVERSE"===o.semantic?a=n.getWorldMatrix().invert():"VIEWINVERSE"===o.semantic?a=e.getViewMatrix().invert():"PROJECTIONINVERSE"===o.semantic?a=e.getProjectionMatrix().invert():"MODELVIEWINVERSE"===o.semantic?a=n.getWorldMatrix().multiply(e.getViewMatrix()).invert():"MODELVIEWPROJECTIONINVERSE"===o.semantic?a=n.getWorldMatrix().multiply(e.getTransformMatrix()).invert():"MODELINVERSETRANSPOSE"===o.semantic&&(a=t.Matrix.Transpose(n.getWorldMatrix().invert())),a)switch(o.type){case w.FLOAT_MAT2:s.setMatrix2x2(r,t.Matrix.GetAsMatrix2x2(a));break;case w.FLOAT_MAT3:s.setMatrix3x3(r,t.Matrix.GetAsMatrix3x3(a));break;case w.FLOAT_MAT4:s.setMatrix(r,a)}}static SetUniform(e,n,o,r){switch(r){case w.FLOAT:return e.setFloat(n,o),!0;case w.FLOAT_VEC2:return e.setVector2(n,t.Vector2.FromArray(o)),!0;case w.FLOAT_VEC3:return e.setVector3(n,t.Vector3.FromArray(o)),!0;case w.FLOAT_VEC4:return e.setVector4(n,t.Vector4.FromArray(o)),!0;default:return!1}}static GetWrapMode(e){switch(e){case O.CLAMP_TO_EDGE:return t.Texture.CLAMP_ADDRESSMODE;case O.MIRRORED_REPEAT:return t.Texture.MIRROR_ADDRESSMODE;case O.REPEAT:default:return t.Texture.WRAP_ADDRESSMODE}}static GetByteStrideFromType(e){switch(e.type){case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16;default:return 1}}static GetTextureFilterMode(e){switch(e){case M.LINEAR:case M.LINEAR_MIPMAP_NEAREST:case M.LINEAR_MIPMAP_LINEAR:return t.Texture.TRILINEAR_SAMPLINGMODE;case M.NEAREST:case M.NEAREST_MIPMAP_NEAREST:return t.Texture.NEAREST_SAMPLINGMODE;default:return t.Texture.BILINEAR_SAMPLINGMODE}}static GetBufferFromBufferView(e,t,n,o,r){n=t.byteOffset+n;const s=e.loadedBufferViews[t.buffer];if(n+o>s.byteLength)throw new Error("Buffer access is out of range");const a=s.buffer;switch(n+=s.byteOffset,r){case R.BYTE:return new Int8Array(a,n,o);case R.UNSIGNED_BYTE:return new Uint8Array(a,n,o);case R.SHORT:return new Int16Array(a,n,o);case R.UNSIGNED_SHORT:return new Uint16Array(a,n,o);default:return new Float32Array(a,n,o)}}static GetBufferFromAccessor(e,t){const n=e.bufferViews[t.bufferView],o=t.count*L.GetByteStrideFromType(t);return L.GetBufferFromBufferView(e,n,t.byteOffset,o,t.componentType)}static DecodeBufferToText(e){let t="";const n=e.byteLength;for(let o=0;o<n;++o)t+=String.fromCharCode(e[o]);return t}static GetDefaultMaterial(e){if(!L._DefaultMaterial){t.Effect.ShadersStore.GLTFDefaultMaterialVertexShader=["precision highp float;","","uniform mat4 worldView;","uniform mat4 projection;","","attribute vec3 position;","","void main(void)","{"," gl_Position = projection * worldView * vec4(position, 1.0);","}"].join("\n"),t.Effect.ShadersStore.GLTFDefaultMaterialPixelShader=["precision highp float;","","uniform vec4 u_emission;","","void main(void)","{"," gl_FragColor = u_emission;","}"].join("\n");const n={vertex:"GLTFDefaultMaterial",fragment:"GLTFDefaultMaterial"},o={attributes:["position"],uniforms:["worldView","projection","u_emission"],samplers:new Array,needAlphaBlending:!1};L._DefaultMaterial=new t.ShaderMaterial("GLTFDefaultMaterial",e,n,o),L._DefaultMaterial.setColor4("u_emission",new t.Color4(.5,.5,.5,1))}return L._DefaultMaterial}}L._DefaultMaterial=null,function(e){e[e.IDENTIFIER=1]="IDENTIFIER",e[e.UNKNOWN=2]="UNKNOWN",e[e.END_OF_INPUT=3]="END_OF_INPUT"}(N||(N={}));class k{constructor(e){this._pos=0,this.currentToken=N.UNKNOWN,this.currentIdentifier="",this.currentString="",this.isLetterOrDigitPattern=/^[a-zA-Z0-9]+$/,this._toParse=e,this._maxPos=e.length}getNextToken(){if(this.isEnd())return N.END_OF_INPUT;if(this.currentString=this.read(),this.currentToken=N.UNKNOWN,"_"===this.currentString||this.isLetterOrDigitPattern.test(this.currentString))for(this.currentToken=N.IDENTIFIER,this.currentIdentifier=this.currentString;!this.isEnd()&&(this.isLetterOrDigitPattern.test(this.currentString=this.peek())||"_"===this.currentString);)this.currentIdentifier+=this.currentString,this.forward();return this.currentToken}peek(){return this._toParse[this._pos]}read(){return this._toParse[this._pos++]}forward(){this._pos++}isEnd(){return this._pos>=this._maxPos}}const F=["MODEL","VIEW","PROJECTION","MODELVIEW","MODELVIEWPROJECTION","JOINTMATRIX"],B=["world","view","projection","worldView","worldViewProjection","mBones"],P=["translation","rotation","scale"],G=["position","rotationQuaternion","scaling"],V=(e,t,n)=>{for(const o in e){const r=e[o];n[t][o]=r}},$=e=>{if(e)for(let t=0;t<e.length/2;t++)e[2*t+1]=1-e[2*t+1]},D=e=>{if("NORMAL"===e.semantic)return"normal";if("POSITION"===e.semantic)return"position";if("JOINT"===e.semantic)return"matricesIndices";if("WEIGHT"===e.semantic)return"matricesWeights";if("COLOR"===e.semantic)return"color";if(e.semantic&&-1!==e.semantic.indexOf("TEXCOORD_")){const t=Number(e.semantic.split("_")[1]);return"uv"+(0===t?"":t+1)}return null},H=e=>{let n;if(e.translation||e.rotation||e.scale){const o=t.Vector3.FromArray(e.scale||[1,1,1]),r=t.Quaternion.FromArray(e.rotation||[0,0,0,1]),s=t.Vector3.FromArray(e.translation||[0,0,0]);n=t.Matrix.Compose(o,r,s)}else n=t.Matrix.FromArray(e.matrix);return n},K=(e,n,o,r)=>{for(let e=0;e<r.bones.length;e++)if(r.bones[e].name===o)return r.bones[e];const s=e.nodes;for(const a in s){const i=s[a];if(!i.jointName)continue;const l=i.children;for(let s=0;s<l.length;s++){const u=e.nodes[l[s]];if(u.jointName&&u.jointName===o){const o=H(i),s=new t.Bone(i.name||"",r,K(e,n,i.jointName,r),o);return s.id=a,s}}}return null},W=(e,t)=>{for(let n=0;n<e.length;n++){const o=e[n];for(let e=0;e<o.node.children.length;e++)if(o.node.children[e]===t)return o.bone}return null},U=(e,t)=>{const n=e.nodes;let o=n[t];if(o)return{node:o,id:t};for(const e in n)if(o=n[e],o.jointName===t)return{node:o,id:e};return null},j=(e,t)=>{for(let n=0;n<e.jointNames.length;n++)if(e.jointNames[n]===t)return!0;return!1},z=(e,n,o,r,s)=>{if(s||(e.scene._blockEntityCollection=!!e.assetContainer,(s=new t.Mesh(n.name||"",e.scene))._parentContainer=e.assetContainer,e.scene._blockEntityCollection=!1,s.id=r),!n.babylonNode)return s;const a=[];let i=null;const l=[],u=[],c=[],d=[];for(let n=0;n<o.length;n++){const r=o[n],s=e.meshes[r];if(s)for(let n=0;n<s.primitives.length;n++){const o=new t.VertexData,r=s.primitives[n];r.mode;const h=r.attributes;let m,p;for(const n in h)if(m=e.accessors[h[n]],p=L.GetBufferFromAccessor(e,m),"NORMAL"===n)o.normals=new Float32Array(p.length),o.normals.set(p);else if("POSITION"===n){if(v.HomogeneousCoordinates){o.positions=new Float32Array(p.length-p.length/4);for(let e=0;e<p.length;e+=4)o.positions[e]=p[e],o.positions[e+1]=p[e+1],o.positions[e+2]=p[e+2]}else o.positions=new Float32Array(p.length),o.positions.set(p);u.push(o.positions.length)}else if(-1!==n.indexOf("TEXCOORD_")){const e=Number(n.split("_")[1]),r=t.VertexBuffer.UVKind+(0===e?"":e+1),s=new Float32Array(p.length);s.set(p),$(s),o.set(s,r)}else"JOINT"===n?(o.matricesIndices=new Float32Array(p.length),o.matricesIndices.set(p)):"WEIGHT"===n?(o.matricesWeights=new Float32Array(p.length),o.matricesWeights.set(p)):"COLOR"===n&&(o.colors=new Float32Array(p.length),o.colors.set(p));if(m=e.accessors[r.indices],m)p=L.GetBufferFromAccessor(e,m),o.indices=new Int32Array(p.length),o.indices.set(p),d.push(o.indices.length);else{const e=[];for(let t=0;t<o.positions.length/3;t++)e.push(t);o.indices=new Int32Array(e),d.push(o.indices.length)}i?i.merge(o):i=o;const f=e.scene.getMaterialById(r.material);a.push(null===f?L.GetDefaultMaterial(e.scene):f),l.push(0===l.length?0:l[l.length-1]+u[u.length-2]),c.push(0===c.length?0:c[c.length-1]+d[d.length-2])}}let h;e.scene._blockEntityCollection=!!e.assetContainer,a.length>1?(h=new t.MultiMaterial("multimat"+r,e.scene),h.subMaterials=a):h=new t.StandardMaterial("multimat"+r,e.scene),1===a.length&&(h=a[0]),h._parentContainer=e.assetContainer,s.material||(s.material=h),new t.Geometry(r,e.scene,i,!1,s),s.computeWorldMatrix(!0),e.scene._blockEntityCollection=!1,s.subMeshes=[];let m=0;for(let n=0;n<o.length;n++){const r=o[n],a=e.meshes[r];if(a)for(let e=0;e<a.primitives.length;e++)a.primitives[e].mode,t.SubMesh.AddToMesh(m,l[m],u[m],c[m],d[m],s,s,!0),m++}return s},q=(e,t,n,o)=>{e.position&&(e.position=t),(e.rotationQuaternion||e.rotation)&&(e.rotationQuaternion=n),e.scaling&&(e.scaling=o)},Y=(e,n,o)=>{let r=null;if(e.importOnlyMeshes&&(n.skin||n.meshes)&&e.importMeshesNames&&e.importMeshesNames.length>0&&-1===e.importMeshesNames.indexOf(n.name||""))return null;if(n.skin){if(n.meshes){const s=e.skins[n.skin],a=z(e,n,n.meshes,o,n.babylonNode);a.skeleton=e.scene.getLastSkeletonById(n.skin),null===a.skeleton&&(a.skeleton=((e,n,o,r)=>{if(r||(r=new t.Skeleton(n.name||"","",e.scene)),!n.babylonSkeleton)return r;const s=[],a=[];((e,n,o,r)=>{for(const s in e.nodes){const a=e.nodes[s],i=s;if(!a.jointName||j(o,a.jointName))continue;const l=H(a),u=new t.Bone(a.name||"",n,null,l);u.id=i,r.push({bone:u,node:a,id:i})}for(let e=0;e<r.length;e++){const t=r[e],n=t.node.children;for(let e=0;e<n.length;e++){let o=null;for(let t=0;t<r.length;t++)if(r[t].id===n[e]){o=r[t];break}o&&(o.bone._parent=t.bone,t.bone.children.push(o.bone))}}})(e,r,n,s),r.bones=[];for(let o=0;o<n.jointNames.length;o++){const i=U(e,n.jointNames[o]);if(!i)continue;const l=i.node;if(!l){t.Tools.Warn("Joint named "+n.jointNames[o]+" does not exist");continue}const u=i.id,c=e.scene.getBoneById(u);if(c){r.bones.push(c);continue}let d,h=null;for(let s=0;s<o;s++){const o=U(e,n.jointNames[s]);if(!o)continue;const a=o.node;if(!a){t.Tools.Warn("Joint named "+n.jointNames[s]+" does not exist when looking for parent");continue}const i=a.children;if(i){d=!1;for(let t=0;t<i.length;t++)if(i[t]===u){h=K(e,n,n.jointNames[s],r),d=!0;break}if(d)break}}const m=H(l);!h&&s.length>0&&(h=W(s,u),h&&-1===a.indexOf(h)&&a.push(h)),new t.Bone(l.jointName||"",r,h,m).id=u}const i=r.bones;r.bones=[];for(let t=0;t<n.jointNames.length;t++){const o=U(e,n.jointNames[t]);if(o)for(let e=0;e<i.length;e++)if(i[e].id===o.id){r.bones.push(i[e]);break}}r.prepare();for(let e=0;e<a.length;e++)r.bones.push(a[e]);return r})(e,s,0,s.babylonSkeleton),s.babylonSkeleton||(s.babylonSkeleton=a.skeleton)),r=a}}else if(n.meshes)r=z(e,n,n.mesh?[n.mesh]:n.meshes,o,n.babylonNode);else if(!n.light||n.babylonNode||e.importOnlyMeshes){if(n.camera&&!n.babylonNode&&!e.importOnlyMeshes){const o=e.cameras[n.camera];if(o){if(e.scene._blockEntityCollection=!!e.assetContainer,"orthographic"===o.type){const o=new t.FreeCamera(n.camera,t.Vector3.Zero(),e.scene,!1);o.name=n.name||"",o.mode=t.Camera.ORTHOGRAPHIC_CAMERA,o.attachControl(),r=o,o._parentContainer=e.assetContainer}else if("perspective"===o.type){const s=o[o.type],a=new t.FreeCamera(n.camera,t.Vector3.Zero(),e.scene,!1);a.name=n.name||"",a.attachControl(),s.aspectRatio||(s.aspectRatio=e.scene.getEngine().getRenderWidth()/e.scene.getEngine().getRenderHeight()),s.znear&&s.zfar&&(a.maxZ=s.zfar,a.minZ=s.znear),r=a,a._parentContainer=e.assetContainer}e.scene._blockEntityCollection=!1}}}else{const o=e.lights[n.light];if(o)if("ambient"===o.type){const s=o[o.type],a=new t.HemisphericLight(n.light,t.Vector3.Zero(),e.scene);a.name=n.name||"",s.color&&(a.diffuse=t.Color3.FromArray(s.color)),r=a}else if("directional"===o.type){const s=o[o.type],a=new t.DirectionalLight(n.light,t.Vector3.Zero(),e.scene);a.name=n.name||"",s.color&&(a.diffuse=t.Color3.FromArray(s.color)),r=a}else if("point"===o.type){const s=o[o.type],a=new t.PointLight(n.light,t.Vector3.Zero(),e.scene);a.name=n.name||"",s.color&&(a.diffuse=t.Color3.FromArray(s.color)),r=a}else if("spot"===o.type){const s=o[o.type],a=new t.SpotLight(n.light,t.Vector3.Zero(),t.Vector3.Zero(),0,0,e.scene);a.name=n.name||"",s.color&&(a.diffuse=t.Color3.FromArray(s.color)),s.fallOfAngle&&(a.angle=s.fallOfAngle),s.fallOffExponent&&(a.exponent=s.fallOffExponent),r=a}}if(!n.jointName){if(n.babylonNode)return n.babylonNode;if(null===r){e.scene._blockEntityCollection=!!e.assetContainer;const o=new t.Mesh(n.name||"",e.scene);o._parentContainer=e.assetContainer,e.scene._blockEntityCollection=!1,n.babylonNode=o,r=o}}if(null!==r){if(n.matrix&&r instanceof t.Mesh)((e,n)=>{if(n.matrix){const o=new t.Vector3(0,0,0),r=new t.Quaternion,s=new t.Vector3(0,0,0);t.Matrix.FromArray(n.matrix).decompose(s,r,o),q(e,o,r,s)}else n.translation&&n.rotation&&n.scale&&q(e,t.Vector3.FromArray(n.translation),t.Quaternion.FromArray(n.rotation),t.Vector3.FromArray(n.scale));e.computeWorldMatrix(!0)})(r,n);else{const e=n.translation||[0,0,0],o=n.rotation||[0,0,0,1],s=n.scale||[1,1,1];q(r,t.Vector3.FromArray(e),t.Quaternion.FromArray(o),t.Vector3.FromArray(s))}r.updateCache(!0),n.babylonNode=r}return r},X=(e,t,n,o=!1)=>{const r=e.nodes[t];let s=null;if(o=!(e.importOnlyMeshes&&!o&&e.importMeshesNames)||-1!==e.importMeshesNames.indexOf(r.name||"")||0===e.importMeshesNames.length,!r.jointName&&o&&(s=Y(e,r,t),null!==s&&(s.id=t,s.parent=n)),r.children)for(let t=0;t<r.children.length;t++)X(e,r.children[t],s,o)},Q=e=>{let n=e.currentScene;if(n)for(let t=0;t<n.nodes.length;t++)X(e,n.nodes[t],null);else for(const t in e.scenes){n=e.scenes[t];for(let t=0;t<n.nodes.length;t++)X(e,n.nodes[t],null)}(e=>{for(const n in e.animations){const o=e.animations[n];if(!o.channels||!o.samplers)continue;let r=null;for(let s=0;s<o.channels.length;s++){const a=o.channels[s],i=o.samplers[a.sampler];if(!i)continue;let l,u;o.parameters?(l=o.parameters[i.input],u=o.parameters[i.output]):(l=i.input,u=i.output);const c=L.GetBufferFromAccessor(e,e.accessors[l]),d=L.GetBufferFromAccessor(e,e.accessors[u]),h=a.target.id;let m=e.scene.getNodeById(h);if(null===m&&(m=e.scene.getNodeByName(h)),null===m){t.Tools.Warn("Creating animation named "+n+". But cannot find node named "+h+" to attach to");continue}const p=m instanceof t.Bone;let f=a.target.path;const _=P.indexOf(f);-1!==_&&(f=G[_]);let g=t.Animation.ANIMATIONTYPE_MATRIX;p||("rotationQuaternion"===f?(g=t.Animation.ANIMATIONTYPE_QUATERNION,m.rotationQuaternion=new t.Quaternion):g=t.Animation.ANIMATIONTYPE_VECTOR3);let v=null;const y=[];let b=0,T=!1;p&&r&&r.getKeys().length===c.length&&(v=r,T=!0),T||(e.scene._blockEntityCollection=!!e.assetContainer,v=new t.Animation(n,p?"_matrix":f,1,g,t.Animation.ANIMATIONLOOPMODE_CYCLE),e.scene._blockEntityCollection=!1);for(let e=0;e<c.length;e++){let n;if("rotationQuaternion"===f?(n=t.Quaternion.FromArray([d[b],d[b+1],d[b+2],d[b+3]]),b+=4):(n=t.Vector3.FromArray([d[b],d[b+1],d[b+2]]),b+=3),p){const o=m;let s=t.Vector3.Zero(),a=new t.Quaternion,i=t.Vector3.Zero(),l=o.getBaseMatrix();T&&r&&(l=r.getKeys()[e].value),l.decompose(i,a,s),"position"===f?s=n:"rotationQuaternion"===f?a=n:i=n,n=t.Matrix.Compose(i,a,s)}T?r&&(r.getKeys()[e].value=n):y.push({frame:c[e],value:n})}!T&&v&&(v.setKeys(y),m.animations.push(v)),r=v,e.scene.stopAnimation(m),e.scene.beginAnimation(m,0,c[c.length-1],!0,1)}}})(e);for(let t=0;t<e.scene.skeletons.length;t++){const n=e.scene.skeletons[t];e.scene.beginAnimation(n,0,Number.MAX_VALUE,!0,1)}},Z=(e,t,n)=>{for(const o in t.uniforms){const r=t.uniforms[o],s=t.parameters[r];if(e.currentIdentifier===o&&s.semantic&&!s.source&&!s.node){const e=F.indexOf(s.semantic);if(-1!==e)return delete n[o],B[e]}}return e.currentIdentifier},J=e=>{for(const t in e.materials)ne.LoadMaterialAsync(e,t,()=>{},()=>{})};class ee{static CreateRuntime(e,t,n){const o={extensions:{},accessors:{},buffers:{},bufferViews:{},meshes:{},lights:{},cameras:{},nodes:{},images:{},textures:{},shaders:{},programs:{},samplers:{},techniques:{},materials:{},animations:{},skins:{},extensionsUsed:[],scenes:{},buffersCount:0,shaderscount:0,scene:t,rootUrl:n,loadedBufferCount:0,loadedBufferViews:{},loadedShaderCount:0,importOnlyMeshes:!1,dummyNodes:[],assetContainer:null};return e.extensions&&V(e.extensions,"extensions",o),e.extensionsUsed&&V(e.extensionsUsed,"extensionsUsed",o),e.buffers&&((e,t)=>{for(const n in e){const o=e[n];t.buffers[n]=o,t.buffersCount++}})(e.buffers,o),e.bufferViews&&V(e.bufferViews,"bufferViews",o),e.accessors&&V(e.accessors,"accessors",o),e.meshes&&V(e.meshes,"meshes",o),e.lights&&V(e.lights,"lights",o),e.cameras&&V(e.cameras,"cameras",o),e.nodes&&V(e.nodes,"nodes",o),e.images&&V(e.images,"images",o),e.textures&&V(e.textures,"textures",o),e.shaders&&((e,t)=>{for(const n in e){const o=e[n];t.shaders[n]=o,t.shaderscount++}})(e.shaders,o),e.programs&&V(e.programs,"programs",o),e.samplers&&V(e.samplers,"samplers",o),e.techniques&&V(e.techniques,"techniques",o),e.materials&&V(e.materials,"materials",o),e.animations&&V(e.animations,"animations",o),e.skins&&V(e.skins,"skins",o),e.scenes&&(o.scenes=e.scenes),e.scene&&e.scenes&&(o.currentScene=e.scenes[e.scene]),o}static LoadBufferAsync(e,n,o,r,s){const a=e.buffers[n];t.Tools.IsBase64(a.uri)?setTimeout(()=>o(new Uint8Array(t.Tools.DecodeBase64(a.uri)))):t.Tools.LoadFile(e.rootUrl+a.uri,e=>o(new Uint8Array(e)),s,void 0,!0,e=>{e&&r(e.status+" "+e.statusText)})}static LoadTextureBufferAsync(e,n,o,r){const s=e.textures[n];if(!s||!s.source)return void r("");if(s.babylonTexture)return void o(null);const a=e.images[s.source];t.Tools.IsBase64(a.uri)?setTimeout(()=>o(new Uint8Array(t.Tools.DecodeBase64(a.uri)))):t.Tools.LoadFile(e.rootUrl+a.uri,e=>o(new Uint8Array(e)),void 0,void 0,!0,e=>{e&&r(e.status+" "+e.statusText)})}static CreateTextureAsync(e,n,o,r){const s=e.textures[n];if(s.babylonTexture)return void r(s.babylonTexture);const a=e.samplers[s.sampler],i=a.minFilter===M.NEAREST_MIPMAP_NEAREST||a.minFilter===M.NEAREST_MIPMAP_LINEAR||a.minFilter===M.LINEAR_MIPMAP_NEAREST||a.minFilter===M.LINEAR_MIPMAP_LINEAR,l=t.Texture.BILINEAR_SAMPLINGMODE,u=null==o?new Blob:new Blob([t.GetBlobBufferSource(o)]),c=URL.createObjectURL(u),d=()=>URL.revokeObjectURL(c),h=new t.Texture(c,e.scene,!i,!0,l,d,d);void 0!==a.wrapS&&(h.wrapU=L.GetWrapMode(a.wrapS)),void 0!==a.wrapT&&(h.wrapV=L.GetWrapMode(a.wrapT)),h.name=n,s.babylonTexture=h,r(h)}static LoadShaderStringAsync(e,n,o,r){const s=e.shaders[n];if(t.Tools.IsBase64(s.uri)){const e=atob(s.uri.split(",")[1]);o&&o(e)}else t.Tools.LoadFile(e.rootUrl+s.uri,o,void 0,void 0,!1,e=>{e&&r&&r(e.status+" "+e.statusText)})}static LoadMaterialAsync(e,n,o,r){const s=e.materials[n];if(!s.technique)return void(r&&r("No technique found."));const a=e.techniques[s.technique];if(!a){e.scene._blockEntityCollection=!!e.assetContainer;const r=new t.StandardMaterial(n,e.scene);return r._parentContainer=e.assetContainer,e.scene._blockEntityCollection=!1,r.diffuseColor=new t.Color3(.5,.5,.5),r.sideOrientation=t.Material.CounterClockWiseSideOrientation,void o(r)}const i=e.programs[a.program],l=a.states,u=t.Effect.ShadersStore[i.vertexShader+"VertexShader"],c=t.Effect.ShadersStore[i.fragmentShader+"PixelShader"];let d="",h="";const m=new k(u),p=new k(c),f={},_=[],g=[],v=[];for(const e in a.uniforms){const t=a.uniforms[e],n=a.parameters[t];if(f[e]=n,!n.semantic||n.node||n.source)n.type===w.SAMPLER_2D?v.push(e):_.push(e);else{const t=F.indexOf(n.semantic);-1!==t?(_.push(B[t]),delete f[e]):_.push(e)}}for(const e in a.attributes){const t=a.attributes[e],n=a.parameters[t];if(n.semantic){const e=D(n);e&&g.push(e)}}for(;!m.isEnd()&&m.getNextToken();){if(m.currentToken!==N.IDENTIFIER){d+=m.currentString;continue}let e=!1;for(const t in a.attributes){const n=a.attributes[t],o=a.parameters[n];if(m.currentIdentifier===t&&o.semantic){d+=D(o),e=!0;break}}e||(d+=Z(m,a,f))}for(;!p.isEnd()&&p.getNextToken();)p.currentToken===N.IDENTIFIER?h+=Z(p,a,f):h+=p.currentString;const y={vertex:i.vertexShader+n,fragment:i.fragmentShader+n},b={attributes:g,uniforms:_,samplers:v,needAlphaBlending:l&&l.enable&&-1!==l.enable.indexOf(3042)};t.Effect.ShadersStore[i.vertexShader+n+"VertexShader"]=d,t.Effect.ShadersStore[i.fragmentShader+n+"PixelShader"]=h;const T=new t.ShaderMaterial(n,e.scene,y,b);if(T.onError=((e,t,n)=>(o,r)=>{t.dispose(!0),n("Cannot compile program named "+e.name+". Error: "+r+". Default material will be applied")})(i,T,r),T.onCompiled=((e,t,n,o,r,s)=>a=>{((e,t,n,o,r)=>{const s=o.values||n.parameters,a=n.uniforms;for(const n in r){const i=r[n],l=i.type;let u=s[a[n]];if(void 0===u&&(u=i.value),!u)continue;const c=e=>n=>{i.value&&e&&(t.setTexture(e,n),delete r[e])};l===w.SAMPLER_2D?ne.LoadTextureAsync(e,o.values?u:i.value,c(n),()=>c(null)):i.value&&L.SetUniform(t,n,o.values?u:i.value,l)&&delete r[n]}})(e,t,n,o,r),t.onBind=a=>{((e,t,n,o,r,s,a)=>{const i=s.values||r.parameters;for(const a in n){const l=n[a],u=l.type;if(u===w.FLOAT_MAT2||u===w.FLOAT_MAT3||u===w.FLOAT_MAT4)if(!l.semantic||l.source||l.node){if(l.semantic&&(l.source||l.node)){let e=t.scene.getNodeByName(l.source||l.node||"");if(null===e&&(e=t.scene.getNodeById(l.source||l.node||"")),null===e)continue;L.SetMatrix(t.scene,e,l,a,o.getEffect())}}else L.SetMatrix(t.scene,e,l,a,o.getEffect());else{const e=i[r.uniforms[a]];if(!e)continue;if(u===w.SAMPLER_2D){const n=t.textures[s.values?e:l.value].babylonTexture;if(null==n)continue;o.getEffect().setTexture(a,n)}else L.SetUniform(o.getEffect(),a,e,u)}}a(o)})(a,e,r,t,n,o,s)}})(e,T,a,s,f,o),T.sideOrientation=t.Material.CounterClockWiseSideOrientation,l&&l.functions){const e=l.functions;e.cullFace&&e.cullFace[0]!==S.BACK&&(T.backFaceCulling=!1);const n=e.blendFuncSeparate;n&&(n[0]===I.SRC_ALPHA&&n[1]===I.ONE_MINUS_SRC_ALPHA&&n[2]===I.ONE&&n[3]===I.ONE?T.alphaMode=t.Constants.ALPHA_COMBINE:n[0]===I.ONE&&n[1]===I.ONE&&n[2]===I.ZERO&&n[3]===I.ONE?T.alphaMode=t.Constants.ALPHA_ONEONE:n[0]===I.SRC_ALPHA&&n[1]===I.ONE&&n[2]===I.ZERO&&n[3]===I.ONE?T.alphaMode=t.Constants.ALPHA_ADD:n[0]===I.ZERO&&n[1]===I.ONE_MINUS_SRC_COLOR&&n[2]===I.ONE&&n[3]===I.ONE?T.alphaMode=t.Constants.ALPHA_SUBTRACT:n[0]===I.DST_COLOR&&n[1]===I.ZERO&&n[2]===I.ONE&&n[3]===I.ONE?T.alphaMode=t.Constants.ALPHA_MULTIPLY:n[0]===I.SRC_ALPHA&&n[1]===I.ONE_MINUS_SRC_COLOR&&n[2]===I.ONE&&n[3]===I.ONE&&(T.alphaMode=t.Constants.ALPHA_MAXIMIZED))}}}let te=class e{static RegisterExtension(n){e.Extensions[n.name]?t.Tools.Error('Tool with the same name "'+n.name+'" already exists'):e.Extensions[n.name]=n}dispose(){}_importMeshAsync(e,n,o,r,s,a,i,l){return n.useRightHandedSystem=!0,ne.LoadRuntimeAsync(n,o,r,n=>{n.assetContainer=s,n.importOnlyMeshes=!0,""===e?n.importMeshesNames=[]:"string"==typeof e?n.importMeshesNames=[e]:!e||e instanceof Array?(n.importMeshesNames=[],t.Tools.Warn("Argument meshesNames must be of type string or string[]")):n.importMeshesNames=[e],this._createNodes(n);const o=[],r=[];for(const e in n.nodes){const r=n.nodes[e];r.babylonNode instanceof t.AbstractMesh&&o.push(r.babylonNode)}for(const e in n.skins){const o=n.skins[e];o.babylonSkeleton instanceof t.Skeleton&&r.push(o.babylonSkeleton)}this._loadBuffersAsync(n,()=>{this._loadShadersAsync(n,()=>{J(n),Q(n),!v.IncrementalLoading&&a&&a(o,r)})}),v.IncrementalLoading&&a&&a(o,r)},l),!0}importMeshAsync(e,t,n,o,r,s){return new Promise((a,i)=>{this._importMeshAsync(e,t,o,r,n,(e,t)=>{a({meshes:e,particleSystems:[],skeletons:t,animationGroups:[],lights:[],transformNodes:[],geometries:[],spriteManagers:[]})},s,e=>{i(new Error(e))})})}_loadAsync(e,t,n,o,r,s){e.useRightHandedSystem=!0,ne.LoadRuntimeAsync(e,t,n,e=>{ne.LoadRuntimeExtensionsAsync(e,()=>{this._createNodes(e),this._loadBuffersAsync(e,()=>{this._loadShadersAsync(e,()=>{J(e),Q(e),v.IncrementalLoading||o()})}),v.IncrementalLoading&&o()},s)},s)}loadAsync(e,t,n,o){return A(this,void 0,void 0,function*(){return yield new Promise((r,s)=>{this._loadAsync(e,t,n,()=>{r()},o,e=>{s(new Error(e))})})})}_loadShadersAsync(e,n){let o=!1;const r=(o,r)=>{ne.LoadShaderStringAsync(e,o,s=>{s instanceof ArrayBuffer||(e.loadedShaderCount++,s&&(t.Effect.ShadersStore[o+(r.type===C.VERTEX?"VertexShader":"PixelShader")]=s),e.loadedShaderCount===e.shaderscount&&n())},()=>{t.Tools.Error("Error when loading shader program named "+o+" located at "+r.uri)})};for(const n in e.shaders){o=!0;const s=e.shaders[n];s?r.bind(this,n,s)():t.Tools.Error("No shader named: "+n)}o||n()}_loadBuffersAsync(e,n){let o=!1;const r=(o,r)=>{ne.LoadBufferAsync(e,o,s=>{e.loadedBufferCount++,s&&(s.byteLength!=e.buffers[o].byteLength&&t.Tools.Error("Buffer named "+o+" is length "+s.byteLength+". Expected: "+r.byteLength),e.loadedBufferViews[o]=s),e.loadedBufferCount===e.buffersCount&&n()},()=>{t.Tools.Error("Error when loading buffer named "+o+" located at "+r.uri)})};for(const n in e.buffers){o=!0;const s=e.buffers[n];s?r.bind(this,n,s)():t.Tools.Error("No buffer named: "+n)}o||n()}_createNodes(e){let t=e.currentScene;if(t)for(let n=0;n<t.nodes.length;n++)X(e,t.nodes[n],null);else for(const n in e.scenes){t=e.scenes[n];for(let n=0;n<t.nodes.length;n++)X(e,t.nodes[n],null)}}};te.Extensions={};class ne{constructor(e){this._name=e}get name(){return this._name}loadRuntimeAsync(e,t,n,o,r){return!1}loadRuntimeExtensionsAsync(e,t,n){return!1}loadBufferAsync(e,t,n,o,r){return!1}loadTextureBufferAsync(e,t,n,o){return!1}createTextureAsync(e,t,n,o,r){return!1}loadShaderStringAsync(e,t,n,o){return!1}loadMaterialAsync(e,t,n,o){return!1}static LoadRuntimeAsync(e,t,n,o,r){ne._ApplyExtensions(s=>s.loadRuntimeAsync(e,t,n,o,r),()=>{setTimeout(()=>{o&&o(ee.CreateRuntime(t.json,e,n))})})}static LoadRuntimeExtensionsAsync(e,t,n){ne._ApplyExtensions(o=>o.loadRuntimeExtensionsAsync(e,t,n),()=>{setTimeout(()=>{t()})})}static LoadBufferAsync(e,t,n,o,r){ne._ApplyExtensions(s=>s.loadBufferAsync(e,t,n,o,r),()=>{ee.LoadBufferAsync(e,t,n,o,r)})}static LoadTextureAsync(e,t,n,o){ne._LoadTextureBufferAsync(e,t,r=>{r&&ne._CreateTextureAsync(e,t,r,n,o)},o)}static LoadShaderStringAsync(e,t,n,o){ne._ApplyExtensions(r=>r.loadShaderStringAsync(e,t,n,o),()=>{ee.LoadShaderStringAsync(e,t,n,o)})}static LoadMaterialAsync(e,t,n,o){ne._ApplyExtensions(r=>r.loadMaterialAsync(e,t,n,o),()=>{ee.LoadMaterialAsync(e,t,n,o)})}static _LoadTextureBufferAsync(e,t,n,o){ne._ApplyExtensions(r=>r.loadTextureBufferAsync(e,t,n,o),()=>{ee.LoadTextureBufferAsync(e,t,n,o)})}static _CreateTextureAsync(e,t,n,o,r){ne._ApplyExtensions(s=>s.createTextureAsync(e,t,n,o,r),()=>{ee.CreateTextureAsync(e,t,n,o)})}static _ApplyExtensions(e,t){for(const t in te.Extensions)if(e(te.Extensions[t]))return;t()}}let oe=!1;function re(){oe||(oe=!0,v._CreateGLTF1Loader=()=>new te)}class se extends ne{constructor(){super("KHR_binary_glTF")}loadRuntimeAsync(e,t,n,o){const r=t.json.extensionsUsed;return!(!r||-1===r.indexOf(this.name)||!t.bin||(this._bin=t.bin,o(ee.CreateRuntime(t.json,e,n)),0))}loadBufferAsync(e,t,n,o){return-1!==e.extensionsUsed.indexOf(this.name)&&"binary_glTF"===t&&(this._bin.readAsync(0,this._bin.byteLength).then(n,e=>o(e.message)),!0)}loadTextureBufferAsync(e,t,n){const o=e.textures[t],r=e.images[o.source];if(!r.extensions||!(this.name in r.extensions))return!1;const s=r.extensions[this.name],a=e.bufferViews[s.bufferView];return n(L.GetBufferFromBufferView(e,a,0,a.byteLength,R.UNSIGNED_BYTE)),!0}loadShaderStringAsync(e,t,n){const o=e.shaders[t];if(!o.extensions||!(this.name in o.extensions))return!1;const r=o.extensions[this.name],s=e.bufferViews[r.bufferView],a=L.GetBufferFromBufferView(e,s,0,s.byteLength,R.UNSIGNED_BYTE);return setTimeout(()=>{const e=L.DecodeBufferToText(a);n(e)}),!0}}let ae=!1;function ie(){ae||(ae=!0,te.RegisterExtension(new se))}re(),b(),ie();class le extends ne{constructor(){super("KHR_materials_common")}loadRuntimeExtensionsAsync(e){if(!e.extensions)return!1;const n=e.extensions[this.name];if(!n)return!1;const o=n.lights;if(o)for(const n in o){const r=o[n];switch(r.type){case"ambient":{const n=new t.HemisphericLight(r.name,new t.Vector3(0,1,0),e.scene),o=r.ambient;o&&(n.diffuse=t.Color3.FromArray(o.color||[1,1,1]));break}case"point":{const n=new t.PointLight(r.name,new t.Vector3(10,10,10),e.scene),o=r.point;o&&(n.diffuse=t.Color3.FromArray(o.color||[1,1,1]));break}case"directional":{const n=new t.DirectionalLight(r.name,new t.Vector3(0,-1,0),e.scene),o=r.directional;o&&(n.diffuse=t.Color3.FromArray(o.color||[1,1,1]));break}case"spot":{const n=r.spot;n&&(new t.SpotLight(r.name,new t.Vector3(0,10,0),new t.Vector3(0,-1,0),n.fallOffAngle||Math.PI,n.fallOffExponent||0,e.scene).diffuse=t.Color3.FromArray(n.color||[1,1,1]));break}default:t.Tools.Warn('GLTF Material Common extension: light type "'+r.type+"” not supported")}}return!1}loadMaterialAsync(e,n,o,r){const s=e.materials[n];if(!s||!s.extensions)return!1;const a=s.extensions[this.name];if(!a)return!1;const i=new t.StandardMaterial(n,e.scene);return i.sideOrientation=t.Material.CounterClockWiseSideOrientation,"CONSTANT"===a.technique&&(i.disableLighting=!0),i.backFaceCulling=void 0!==a.doubleSided&&!a.doubleSided,i.alpha=void 0===a.values.transparency?1:a.values.transparency,i.specularPower=void 0===a.values.shininess?0:a.values.shininess,"string"==typeof a.values.ambient?this._loadTexture(e,a.values.ambient,i,"ambientTexture",r):i.ambientColor=t.Color3.FromArray(a.values.ambient||[0,0,0]),"string"==typeof a.values.diffuse?this._loadTexture(e,a.values.diffuse,i,"diffuseTexture",r):i.diffuseColor=t.Color3.FromArray(a.values.diffuse||[0,0,0]),"string"==typeof a.values.emission?this._loadTexture(e,a.values.emission,i,"emissiveTexture",r):i.emissiveColor=t.Color3.FromArray(a.values.emission||[0,0,0]),"string"==typeof a.values.specular?this._loadTexture(e,a.values.specular,i,"specularTexture",r):i.specularColor=t.Color3.FromArray(a.values.specular||[0,0,0]),!0}_loadTexture(e,t,n,o,r){ee.LoadTextureBufferAsync(e,t,r=>{ee.CreateTextureAsync(e,t,r,e=>n[o]=e)},r)}}let ue=!1;function ce(){ue||(ue=!0,te.RegisterExtension(new le))}ce();var de={__proto__:null,get EBlendingFunction(){return I},get EComponentType(){return R},get ECullingType(){return S},get EParameterType(){return w},get EShaderType(){return C},get ETextureFilterType(){return M},get ETextureFormat(){return E},get ETextureWrapMode(){return O},GLTFBinaryExtension:se,GLTFLoader:te,GLTFLoaderBase:ee,GLTFLoaderExtension:ne,GLTFMaterialsCommonExtension:le,GLTFUtils:L,RegisterGLTF1Loader:re,RegisterGLTFBinaryExtension:ie,RegisterGLTFMaterialsCommonExtension:ce};const he="undefined"!=typeof global?global:"undefined"!=typeof window?window:void 0;if(void 0!==he){he.BABYLON=he.BABYLON||{},he.BABYLON.GLTF1=he.BABYLON.GLTF1||{};for(const e in de)he.BABYLON.GLTF1[e]=de[e]}const me=[{regex:new RegExp("^/nodes/\\d+/extensions/")},{regex:new RegExp("^/animations/\\d+/extensions/")},{regex:new RegExp("^/nodes/\\d+/weights")},{regex:new RegExp("^/meshes/\\d+/weights")},{regex:new RegExp("/extensions/KHR_texture_transform/")}];class pe{constructor(e,t){this._gltf=e,this._infoTree=t}convert(e){let t,n=this._gltf,o=this._infoTree;if(!e.startsWith("/"))throw new Error("Path must start with a /");const r=e.split("/");if(r.shift(),r[r.length-1].includes(".length")){const e=r[r.length-1].split(".");r.pop(),r.push(...e)}let s=!1;for(const a of r)if("length"===a){if(!o.length)throw o.__array__?new Error(`Path ${e} is invalid - no length accessor`):new Error(`Path ${e} is invalid`);o=o.length,void 0!==n&&(t=n)}else{if(o.__ignoreObjectTree__&&(s=!0),o.__array__)o=o.__array__;else if(o=o[a],!o)throw new Error(`Path ${e} is invalid`);if(o.__passThroughTarget__)s=!0;else if(s){const e=/^\d+$/.test(a)?parseInt(a,10):NaN;if(!isNaN(e)&&"function"==typeof o.get){const t=o;o=Object.assign({},t),o.get=(n,o,...r)=>t.get(n,e,...r),"function"==typeof t.set&&(o.set=(n,o,r,...s)=>t.set(n,o,e,...s)),"function"==typeof t.getTarget&&(o.getTarget=(n,o,...r)=>t.getTarget(n,e,...r))}}else if(void 0===n){if(!me.find(t=>t.regex.test(e)))throw new Error(`Path ${e} is invalid`)}else n=null==n?void 0:n[a];o.__target__&&void 0!==n&&(t=n)}return{object:t,info:o}}}function fe(e,n){return{type:"FlowGraphInteger",get:n=>{const o=e(n);return void 0===o?void 0:t.FlowGraphInteger.FromValue(o)},getTarget:n,getPropertyName:[()=>"length"]}}const _e={length:fe(e=>e.length,e=>e.map(e=>e._babylonTransformNode)),__array__:{__target__:!0,translation:{type:"Vector3",get:e=>{var t;return null===(t=e._babylonTransformNode)||void 0===t?void 0:t.position},set:(e,t)=>{var n;return null===(n=t._babylonTransformNode)||void 0===n?void 0:n.position.copyFrom(e)},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"position"]},rotation:{type:"Quaternion",get:e=>{var t;return null===(t=e._babylonTransformNode)||void 0===t?void 0:t.rotationQuaternion},set:(e,t)=>{var n,o;return null===(o=null===(n=t._babylonTransformNode)||void 0===n?void 0:n.rotationQuaternion)||void 0===o?void 0:o.copyFrom(e)},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"rotationQuaternion"]},scale:{type:"Vector3",get:e=>{var t;return null===(t=e._babylonTransformNode)||void 0===t?void 0:t.scaling},set:(e,t)=>{var n;return null===(n=t._babylonTransformNode)||void 0===n?void 0:n.scaling.copyFrom(e)},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"scaling"]},weights:{__passThroughTarget__:!0,length:fe(e=>{const t=Te(e);return t?t.mtm.numTargets:void 0!==(null==e?void 0:e.mesh)?0:void 0},e=>null==e?void 0:e._babylonTransformNode),__array__:{__target__:!0,type:"number",get:(e,t)=>{const n=Te(e);if(n&&void 0!==t&&t>=0&&t<n.mtm.numTargets)return xe(n.mtm.getTarget(t).influence)},set:(e,t,n)=>{var o;const r="number"==typeof e?e:"number"==typeof(null==e?void 0:e.value)?e.value:e,s=Te(t);if(!(!s||void 0===n||n<0||n>=s.mtm.numTargets))for(const e of s.meshes){const t=null===(o=e.morphTargetManager)||void 0===o?void 0:o.getTarget(n);t&&(t.influence=r)}},getTarget:(e,t)=>{const n=Te(e);return n&&void 0!==t&&t>=0&&t<n.mtm.numTargets?n.mtm.getTarget(t):null==e?void 0:e._babylonTransformNode},getPropertyName:[()=>"influence"]},type:"number[]",get:e=>{const t=Te(e);if(!t)return[];const n=[];for(let e=0;e<t.mtm.numTargets;e++)n.push(xe(t.mtm.getTarget(e).influence));return n},getTarget:e=>null==e?void 0:e._babylonTransformNode,getPropertyName:[()=>"influence"]},matrix:{type:"Matrix",get:e=>{var n,o,r;return t.Matrix.Compose(null===(n=e._babylonTransformNode)||void 0===n?void 0:n.scaling,null===(o=e._babylonTransformNode)||void 0===o?void 0:o.rotationQuaternion,null===(r=e._babylonTransformNode)||void 0===r?void 0:r.position)},getTarget:e=>e._babylonTransformNode,isReadOnly:!0},globalMatrix:{type:"Matrix",get:e=>{var n,o,r,s,a,i,l;const u=t.Matrix.Identity();let c=e.parent;for(;c&&c.parent;)c=c.parent;const d=(null===(n=e._babylonTransformNode)||void 0===n?void 0:n.position._isDirty)||(null===(r=null===(o=e._babylonTransformNode)||void 0===o?void 0:o.rotationQuaternion)||void 0===r?void 0:r._isDirty)||(null===(s=e._babylonTransformNode)||void 0===s?void 0:s.scaling._isDirty);if(c){const t=null===(a=c._babylonTransformNode)||void 0===a?void 0:a.computeWorldMatrix(!0).invert();t&&(null===(l=null===(i=e._babylonTransformNode)||void 0===i?void 0:i.computeWorldMatrix(d))||void 0===l||l.multiplyToRef(t,u))}else e._babylonTransformNode&&u.copyFrom(e._babylonTransformNode.computeWorldMatrix(d));return u},getTarget:e=>e._babylonTransformNode,isReadOnly:!0},camera:{type:"string",get:e=>void 0!==e.camera?`/cameras/${e.camera}`:"",getTarget:e=>e,isReadOnly:!0},mesh:{type:"string",get:e=>void 0!==e.mesh?`/meshes/${e.mesh}`:"",getTarget:e=>e,isReadOnly:!0},skin:{type:"string",get:e=>void 0!==e.skin?`/skins/${e.skin}`:"",getTarget:e=>e,isReadOnly:!0},parent:{type:"string",get:e=>e.parent&&void 0!==e.parent.index?`/nodes/${e.parent.index}`:"",getTarget:e=>e,isReadOnly:!0},children:{length:fe(e=>{var t;return null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0},e=>null!=e?e:[]),__array__:{__target__:!0,type:"string",get:e=>"number"==typeof e?`/nodes/${e}`:"",getTarget:()=>({__nodeIndex:!0}),isReadOnly:!0}},extensions:{EXT_lights_ies:{multiplier:{type:"number",get:e=>{var n,o;return null===(o=null===(n=e._babylonTransformNode)||void 0===n?void 0:n.getChildren(e=>e instanceof t.SpotLight,!0)[0])||void 0===o?void 0:o.intensity},getTarget:e=>{var n;return null===(n=e._babylonTransformNode)||void 0===n?void 0:n.getChildren(e=>e instanceof t.SpotLight,!0)[0]},set:(e,n)=>{if(n._babylonTransformNode){const o=n._babylonTransformNode.getChildren(e=>e instanceof t.SpotLight,!0)[0];o&&(o.intensity=e)}}},color:{type:"Color3",get:e=>{var n,o;return null===(o=null===(n=e._babylonTransformNode)||void 0===n?void 0:n.getChildren(e=>e instanceof t.SpotLight,!0)[0])||void 0===o?void 0:o.diffuse},getTarget:e=>{var n;return null===(n=e._babylonTransformNode)||void 0===n?void 0:n.getChildren(e=>e instanceof t.SpotLight,!0)[0]},set:(e,n)=>{if(n._babylonTransformNode){const o=n._babylonTransformNode.getChildren(e=>e instanceof t.SpotLight,!0)[0];o&&(o.diffuse=e)}}}},KHR_node_visibility:{visible:{type:"boolean",get:e=>!!e._primitiveBabylonMeshes&&e._primitiveBabylonMeshes[0].isVisible,getTarget:()=>{},set:(e,t)=>{t._primitiveBabylonMeshes&&t._primitiveBabylonMeshes.forEach(t=>t.isVisible=e)}}}}}},ge={length:fe(e=>e.length,e=>e.map(e=>e._babylonAnimationGroup)),__array__:{__target__:!0,type:"string",get:e=>e&&"number"==typeof e.index?`/animations/${e.index}`:"",getTarget:e=>e._babylonAnimationGroup,isReadOnly:!0}},ve={length:fe(e=>e.length,e=>e.map(e=>{var t;return null===(t=e.primitives[0]._instanceData)||void 0===t?void 0:t.babylonSourceMesh})),__array__:{__target__:!0,primitives:{length:fe(e=>{var t;return null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0},e=>null!=e?e:[]),__array__:{__target__:!0,material:{type:"string",get:e=>void 0!==e.material?`/materials/${e.material}`:"",getTarget:e=>e,isReadOnly:!0}}},weights:{length:fe(e=>{var t;return null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0},e=>null!=e?e:[]),__array__:{__target__:!0,type:"number",get:e=>e,getTarget:()=>({__weightValue:!0}),isReadOnly:!0}}}};function ye(e,t,n,o){const r=be(e);return o?r[n][o]:r[n]}function be(e,n,o){var r,s,a;return null===(a=null===(r=e._data)||void 0===r?void 0:r[null!==(s=null==o?void 0:o.fillMode)&&void 0!==s?s:t.Constants.MATERIAL_TriangleFillMode])||void 0===a?void 0:a.babylonMaterial}function Te(e){var t,n,o,r;const s=null==e?void 0:e._babylonTransformNode;if(!s)return;const a=function(e){var t;const n=null==e?void 0:e._babylonTransformNode;if(!n)return;if(n.morphTargetManager)return n.morphTargetManager;const o=e._primitiveBabylonMeshes;if(o)for(const e of o){if(null==e?void 0:e.morphTargetManager)return e.morphTargetManager;if(null===(t=null==e?void 0:e.sourceMesh)||void 0===t?void 0:t.morphTargetManager)return e.sourceMesh.morphTargetManager}}(e);if(a&&e._primitiveBabylonMeshes&&e._primitiveBabylonMeshes.length>0)return{mtm:a,meshes:e._primitiveBabylonMeshes};const i=s.getDescendants(!1);for(const e of i){const s=e,a=null!==(t=s.morphTargetManager)&&void 0!==t?t:null===(n=s.sourceMesh)||void 0===n?void 0:n.morphTargetManager;if(!a)continue;const i=[],l=s.parent;if(l)for(const e of l.getChildMeshes(!0))(null!==(o=e.morphTargetManager)&&void 0!==o?o:null===(r=e.sourceMesh)||void 0===r?void 0:r.morphTargetManager)===a&&i.push(e);return 0===i.length&&i.push(s),{mtm:a,meshes:i}}}function xe(e){return Number.isFinite(e)?parseFloat(e.toPrecision(7)):e}function Ae(e,t,n){if(!e)return;let o=e.extensions;if(!o){if(!n)return;o={},e.extensions=o}let r=o[t.extensionKey];if(!r){if(!n)return;r={},o[t.extensionKey]=r}for(const e of t.texturePath){let t=r[e];if(!t){if(!n)return;t={},r[e]=t}r=t}if(!r.extensions){if(!n)return;r.extensions={}}let s=r.extensions.KHR_texture_transform;if(!s){if(!n)return;s={},r.extensions.KHR_texture_transform=s}return s}function Re(e,n,o){return{offset:{componentsCount:2,type:"Vector2",get:(r,s,a)=>{var i,l;const u=ye(r,0,e,n);if(u)return new t.Vector2(u.uOffset,u.vOffset);if(o){const e=Ae(r,o,!1),n=null==e?void 0:e.offset;return new t.Vector2(null!==(i=null==n?void 0:n[0])&&void 0!==i?i:0,null!==(l=null==n?void 0:n[1])&&void 0!==l?l:0)}return new t.Vector2(0,0)},getTarget:be,set:(t,r,s,a)=>{const i=ye(r,0,e,n);if(i&&(i.uOffset=t.x,i.vOffset=t.y),o){const e=Ae(r,o,!0);e&&(e.offset=[t.x,t.y])}},getPropertyName:[()=>`${e}${n?"."+n:""}.uOffset`,()=>`${e}${n?"."+n:""}.vOffset`]},rotation:{type:"number",get:(t,r,s)=>{var a;const i=ye(t,0,e,n);if(i)return i.wAng;if(o){const e=Ae(t,o,!1);return null!==(a=null==e?void 0:e.rotation)&&void 0!==a?a:0}return 0},getTarget:be,set:(t,r,s,a)=>{const i=ye(r,0,e,n);if(i&&(i.wAng=t),o){const e=Ae(r,o,!0);e&&(e.rotation=t)}},getPropertyName:[()=>`${e}${n?"."+n:""}.wAng`]},scale:{componentsCount:2,type:"Vector2",get:(r,s,a)=>{var i,l;const u=ye(r,0,e,n);if(u)return new t.Vector2(u.uScale,u.vScale);if(o){const e=Ae(r,o,!1),n=null==e?void 0:e.scale;return new t.Vector2(null!==(i=null==n?void 0:n[0])&&void 0!==i?i:1,null!==(l=null==n?void 0:n[1])&&void 0!==l?l:1)}return new t.Vector2(1,1)},getTarget:be,set:(t,r,s,a)=>{const i=ye(r,0,e,n);if(i&&(i.uScale=t.x,i.vScale=t.y),o){const e=Ae(r,o,!0);e&&(e.scale=[t.x,t.y])}},getPropertyName:[()=>`${e}${n?"."+n:""}.uScale`,()=>`${e}${n?"."+n:""}.vScale`]}}}const Ce={scene:{__target__:!0,type:"number",get:e=>null!=e?e:0,getTarget:()=>({__gltfRoot:!0}),isReadOnly:!0,getPropertyName:[()=>"scene"]},cameras:{length:fe(e=>e.length,e=>e.map(e=>e._babylonCamera)),__array__:{__target__:!0,orthographic:{xmag:{componentsCount:2,type:"Vector2",get:e=>{var n,o,r,s;return new t.Vector2(null!==(o=null===(n=e._babylonCamera)||void 0===n?void 0:n.orthoLeft)&&void 0!==o?o:0,null!==(s=null===(r=e._babylonCamera)||void 0===r?void 0:r.orthoRight)&&void 0!==s?s:0)},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.orthoLeft=e.x,t._babylonCamera.orthoRight=e.y)},getTarget:e=>e,getPropertyName:[()=>"orthoLeft",()=>"orthoRight"]},ymag:{componentsCount:2,type:"Vector2",get:e=>{var n,o,r,s;return new t.Vector2(null!==(o=null===(n=e._babylonCamera)||void 0===n?void 0:n.orthoBottom)&&void 0!==o?o:0,null!==(s=null===(r=e._babylonCamera)||void 0===r?void 0:r.orthoTop)&&void 0!==s?s:0)},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.orthoBottom=e.x,t._babylonCamera.orthoTop=e.y)},getTarget:e=>e,getPropertyName:[()=>"orthoBottom",()=>"orthoTop"]},zfar:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.maxZ},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.maxZ=e)},getTarget:e=>e,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.minZ},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.minZ=e)},getTarget:e=>e,getPropertyName:[()=>"minZ"]}},perspective:{aspectRatio:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.getEngine().getAspectRatio(e._babylonCamera)},getTarget:e=>e,getPropertyName:[()=>"aspectRatio"],isReadOnly:!0},yfov:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.fov},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.fov=e)},getTarget:e=>e,getPropertyName:[()=>"fov"]},zfar:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.maxZ},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.maxZ=e)},getTarget:e=>e,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:e=>{var t;return null===(t=e._babylonCamera)||void 0===t?void 0:t.minZ},set:(e,t)=>{t._babylonCamera&&(t._babylonCamera.minZ=e)},getTarget:e=>e,getPropertyName:[()=>"minZ"]}}}},nodes:_e,materials:{length:fe(e=>e.length,e=>e.map(e=>{var n,o;return null===(o=null===(n=e._data)||void 0===n?void 0:n[t.Constants.MATERIAL_TriangleFillMode])||void 0===o?void 0:o.babylonMaterial})),__array__:{__target__:!0,doubleSided:{type:"boolean",get:(e,t,n)=>{var o;return!(null===(o=be(e,0,n))||void 0===o?void 0:o.backFaceCulling)},set:(e,t,n,o)=>{const r=be(t,0,o);r&&(r.backFaceCulling=!e)},getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"backFaceCulling"]},alphaCutoff:{type:"number",get:(e,t,n)=>{var o;return null===(o=be(e,0,n))||void 0===o?void 0:o.alphaCutOff},set:(e,t,n,o)=>{const r=be(t,0,o);r&&(r.alphaCutOff=e)},getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"alphaCutOff"]},emissiveFactor:{type:"Color3",get:(e,t,n)=>be(e,0,n).emissiveColor,set:(e,t,n,o)=>be(t,0,o).emissiveColor.copyFrom(e),getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"emissiveColor"]},emissiveTexture:{extensions:{KHR_texture_transform:Re("emissiveTexture")}},normalTexture:{scale:{type:"number",get:(e,t,n)=>{var o;return null===(o=ye(e,0,"bumpTexture"))||void 0===o?void 0:o.level},set:(e,t,n,o)=>{const r=ye(t,0,"bumpTexture");r&&(r.level=e)},getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"level"]},extensions:{KHR_texture_transform:Re("bumpTexture")}},occlusionTexture:{strength:{type:"number",get:(e,t,n)=>be(e,0,n).ambientTextureStrength,set:(e,t,n,o)=>{const r=be(t,0,o);r&&(r.ambientTextureStrength=e)},getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"ambientTextureStrength"]},extensions:{KHR_texture_transform:Re("ambientTexture")}},pbrMetallicRoughness:{baseColorFactor:{type:"Color4",get:(e,n,o)=>{const r=be(e,0,o);return t.Color4.FromColor3(r.albedoColor,r.alpha)},set:(e,t,n,o)=>{const r=be(t,0,o);r.albedoColor.set(e.r,e.g,e.b),r.alpha=e.a},getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"albedoColor",()=>"alpha"]},baseColorTexture:{extensions:{KHR_texture_transform:Re("albedoTexture")}},metallicFactor:{type:"number",get:(e,t,n)=>be(e,0,n).metallic,set:(e,t,n,o)=>{const r=be(t,0,o);r&&(r.metallic=e)},getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"metallic"]},roughnessFactor:{type:"number",get:(e,t,n)=>be(e,0,n).roughness,set:(e,t,n,o)=>{const r=be(t,0,o);r&&(r.roughness=e)},getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"roughness"]},metallicRoughnessTexture:{extensions:{KHR_texture_transform:Re("metallicTexture")}}},extensions:{KHR_materials_anisotropy:{anisotropyStrength:{type:"number",get:(e,t,n)=>{var o,r;return null===(r=null===(o=be(e,0,n))||void 0===o?void 0:o.anisotropy)||void 0===r?void 0:r.intensity},set:(e,t,n,o)=>{const r=be(t,0,o);r&&(r.anisotropy.intensity=e)},getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"anisotropy.intensity"]},anisotropyRotation:{type:"number",get:(e,t,n)=>{var o,r;return null===(r=null===(o=be(e,0,n))||void 0===o?void 0:o.anisotropy)||void 0===r?void 0:r.angle},set:(e,t,n,o)=>{const r=be(t,0,o);r&&(r.anisotropy.angle=e)},getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"anisotropy.angle"]},anisotropyTexture:{extensions:{KHR_texture_transform:Re("anisotropy","texture")}}},KHR_materials_clearcoat:{clearcoatFactor:{type:"number",get:(e,t,n)=>be(e,0,n).clearCoat.intensity,set:(e,t,n,o)=>{be(t,0,o).clearCoat.intensity=e},getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"clearCoat.intensity"]},clearcoatRoughnessFactor:{type:"number",get:(e,t,n)=>be(e,0,n).clearCoat.roughness,set:(e,t,n,o)=>{be(t,0,o).clearCoat.roughness=e},getTarget:(e,t,n)=>be(e,0,n),getPropertyName:[()=>"clearCoat.roughness"]},clearcoatTexture:{extensions:{KHR_texture_transform:Re("clearCoat","texture")}},clearcoatNormalTexture:{scale:{type:"number",get:(e,t,n)=>{var o;return null===(o=be(e,0,n).clearCoat.bumpTexture)||void 0===o?void 0:o.level},getTarget:be,set:(e,t,n,o)=>be(t,0,o).clearCoat.bumpTexture.level=e},extensions:{KHR_texture_transform:Re("clearCoat","bumpTexture")}},clearcoatRoughnessTexture:{extensions:{KHR_texture_transform:Re("clearCoat","textureRoughness")}}},KHR_materials_dispersion:{dispersion:{type:"number",get:(e,t,n)=>be(e,0,n).subSurface.dispersion,getTarget:be,set:(e,t,n,o)=>be(t,0,o).subSurface.dispersion=e}},KHR_materials_emissive_strength:{emissiveStrength:{type:"number",get:(e,t,n)=>be(e,0,n).emissiveIntensity,getTarget:be,set:(e,t,n,o)=>be(t,0,o).emissiveIntensity=e}},KHR_materials_ior:{ior:{type:"number",get:(e,t,n)=>be(e,0,n).indexOfRefraction,getTarget:be,set:(e,t,n,o)=>be(t,0,o).indexOfRefraction=e}},KHR_materials_iridescence:{iridescenceFactor:{type:"number",get:(e,t,n)=>be(e,0,n).iridescence.intensity,getTarget:be,set:(e,t,n,o)=>be(t,0,o).iridescence.intensity=e},iridescenceIor:{type:"number",get:(e,t,n)=>be(e,0,n).iridescence.indexOfRefraction,getTarget:be,set:(e,t,n,o)=>be(t,0,o).iridescence.indexOfRefraction=e},iridescenceTexture:{extensions:{KHR_texture_transform:Re("iridescence","texture")}},iridescenceThicknessMaximum:{type:"number",get:(e,t,n)=>be(e,0,n).iridescence.maximumThickness,getTarget:be,set:(e,t,n,o)=>be(t,0,o).iridescence.maximumThickness=e},iridescenceThicknessMinimum:{type:"number",get:(e,t,n)=>be(e,0,n).iridescence.minimumThickness,getTarget:be,set:(e,t,n,o)=>be(t,0,o).iridescence.minimumThickness=e},iridescenceThicknessTexture:{extensions:{KHR_texture_transform:Re("iridescence","thicknessTexture")}}},KHR_materials_sheen:{sheenColorFactor:{type:"Color3",get:(e,t,n)=>be(e,0,n).sheen.color,getTarget:be,set:(e,t,n,o)=>be(t,0,o).sheen.color.copyFrom(e)},sheenColorTexture:{extensions:{KHR_texture_transform:Re("sheen","texture")}},sheenRoughnessFactor:{type:"number",get:(e,t,n)=>be(e,0,n).sheen.intensity,getTarget:be,set:(e,t,n,o)=>be(t,0,o).sheen.intensity=e},sheenRoughnessTexture:{extensions:{KHR_texture_transform:Re("sheen","textureRoughness")}}},KHR_materials_specular:{specularFactor:{type:"number",get:(e,t,n)=>be(e,0,n).metallicF0Factor,getTarget:be,set:(e,t,n,o)=>be(t,0,o).metallicF0Factor=e,getPropertyName:[()=>"metallicF0Factor"]},specularColorFactor:{type:"Color3",get:(e,t,n)=>be(e,0,n).metallicReflectanceColor,getTarget:be,set:(e,t,n,o)=>be(t,0,o).metallicReflectanceColor.copyFrom(e),getPropertyName:[()=>"metallicReflectanceColor"]},specularTexture:{extensions:{KHR_texture_transform:Re("metallicReflectanceTexture")}},specularColorTexture:{extensions:{KHR_texture_transform:Re("reflectanceTexture")}}},KHR_materials_transmission:{transmissionFactor:{type:"number",get:(e,t,n)=>be(e,0,n).subSurface.refractionIntensity,getTarget:be,set:(e,t,n,o)=>be(t,0,o).subSurface.refractionIntensity=e,getPropertyName:[()=>"subSurface.refractionIntensity"]},transmissionTexture:{extensions:{KHR_texture_transform:Re("subSurface","refractionIntensityTexture",{extensionKey:"KHR_materials_transmission",texturePath:["transmissionTexture"]})}}},KHR_materials_diffuse_transmission:{diffuseTransmissionFactor:{type:"number",get:(e,t,n)=>be(e,0,n).subSurface.translucencyIntensity,getTarget:be,set:(e,t,n,o)=>be(t,0,o).subSurface.translucencyIntensity=e},diffuseTransmissionTexture:{extensions:{KHR_texture_transform:Re("subSurface","translucencyIntensityTexture",{extensionKey:"KHR_materials_diffuse_transmission",texturePath:["diffuseTransmissionTexture"]})}},diffuseTransmissionColorFactor:{type:"Color3",get:(e,t,n)=>be(e,0,n).subSurface.translucencyColor,getTarget:be,set:(e,t,n,o)=>{var r;return e&&(null===(r=be(t,0,o).subSurface.translucencyColor)||void 0===r?void 0:r.copyFrom(e))}},diffuseTransmissionColorTexture:{extensions:{KHR_texture_transform:Re("subSurface","translucencyColorTexture",{extensionKey:"KHR_materials_diffuse_transmission",texturePath:["diffuseTransmissionColorTexture"]})}}},KHR_materials_volume:{attenuationColor:{type:"Color3",get:(e,t,n)=>be(e,0,n).subSurface.tintColor,getTarget:be,set:(e,t,n,o)=>be(t,0,o).subSurface.tintColor.copyFrom(e)},attenuationDistance:{type:"number",get:(e,t,n)=>be(e,0,n).subSurface.tintColorAtDistance,getTarget:be,set:(e,t,n,o)=>be(t,0,o).subSurface.tintColorAtDistance=e},thicknessFactor:{type:"number",get:(e,t,n)=>be(e,0,n).subSurface.maximumThickness,getTarget:be,set:(e,t,n,o)=>be(t,0,o).subSurface.maximumThickness=e},thicknessTexture:{extensions:{KHR_texture_transform:Re("subSurface","thicknessTexture",{extensionKey:"KHR_materials_volume",texturePath:["thicknessTexture"]})}}}}}},extensions:{KHR_lights_punctual:{lights:{length:fe(e=>e.length,e=>e.map(e=>e._babylonLight)),__array__:{__target__:!0,color:{type:"Color3",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.diffuse},set:(e,t)=>{var n;return null===(n=t._babylonLight)||void 0===n?void 0:n.diffuse.copyFrom(e)},getTarget:e=>e._babylonLight,getPropertyName:[e=>"diffuse"]},intensity:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.intensity},set:(e,t)=>t._babylonLight?t._babylonLight.intensity=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"intensity"]},range:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.range},set:(e,t)=>t._babylonLight?t._babylonLight.range=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"range"]},spot:{innerConeAngle:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.innerAngle},set:(e,t)=>t._babylonLight?t._babylonLight.innerAngle=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"innerConeAngle"]},outerConeAngle:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.angle},set:(e,t)=>t._babylonLight?t._babylonLight.angle=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"outerConeAngle"]}}}}},EXT_lights_area:{lights:{length:fe(e=>e.length,e=>e.map(e=>e._babylonLight)),__array__:{__target__:!0,color:{type:"Color3",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.diffuse},set:(e,t)=>{var n;return null===(n=t._babylonLight)||void 0===n?void 0:n.diffuse.copyFrom(e)},getTarget:e=>e._babylonLight,getPropertyName:[e=>"diffuse"]},intensity:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.intensity},set:(e,t)=>t._babylonLight?t._babylonLight.intensity=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"intensity"]},size:{type:"number",get:e=>{var t;return null===(t=e._babylonLight)||void 0===t?void 0:t.height},set:(e,t)=>t._babylonLight?t._babylonLight.height=e:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"size"]},rect:{aspect:{type:"number",get:e=>{var t,n;return(null===(t=e._babylonLight)||void 0===t?void 0:t.width)/(null===(n=e._babylonLight)||void 0===n?void 0:n.height)},set:(e,t)=>t._babylonLight?t._babylonLight.width=e*t._babylonLight.height:void 0,getTarget:e=>e._babylonLight,getPropertyName:[e=>"aspect"]}}}}},EXT_lights_ies:{lights:{length:fe(e=>e.length,e=>e.map(e=>e._babylonLight))}},EXT_lights_image_based:{lights:{length:fe(e=>e.length,e=>e.map(e=>e._babylonTexture)),__array__:{__target__:!0,intensity:{type:"number",get:e=>{var t;return null===(t=e._babylonTexture)||void 0===t?void 0:t.level},set:(e,t)=>{t._babylonTexture&&(t._babylonTexture.level=e)},getTarget:e=>e._babylonTexture},rotation:{type:"Quaternion",get:e=>{var n;return e._babylonTexture&&t.Quaternion.FromRotationMatrix(null===(n=e._babylonTexture)||void 0===n?void 0:n.getReflectionTextureMatrix())},set:(e,n)=>{var o;n._babylonTexture&&((null===(o=n._babylonTexture.getScene())||void 0===o?void 0:o.useRightHandedSystem)||(e=t.Quaternion.Inverse(e)),t.Matrix.FromQuaternionToRef(e,n._babylonTexture.getReflectionTextureMatrix()))},getTarget:e=>e._babylonTexture}}}}},animations:ge,meshes:ve,scenes:{length:fe(e=>e.length,e=>e),__array__:{__target__:!0,nodes:{length:fe(e=>{var t;return null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0},e=>null!=e?e:[]),__array__:{__target__:!0,type:"string",get:e=>"number"==typeof e?`/nodes/${e}`:"",getTarget:()=>({__nodeIndex:!0}),isReadOnly:!0}}}},skins:{length:fe(e=>e.length,e=>e.map(e=>{var t;return null===(t=e._data)||void 0===t?void 0:t.babylonSkeleton})),__array__:{__target__:!0,joints:{length:fe(e=>{var t;return null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0},e=>null!=e?e:[]),__array__:{__target__:!0,type:"string",get:e=>"number"==typeof e?`/nodes/${e}`:"",getTarget:()=>({__nodeIndex:!0}),isReadOnly:!0}},skeleton:{type:"string",get:e=>{const t=e.skeleton;return"number"==typeof t?`/nodes/${t}`:""},getTarget:e=>e,isReadOnly:!0}}}};function we(e){if(Array.isArray(e))return e.map(e=>we(e));if(null!==e&&"object"==typeof e){const t=Object.getPrototypeOf(e);if(t!==Object.prototype&&null!==t)return e;const n={};for(const[t,o]of Object.entries(e))n[t]=we(o);return n}return e}function Oe(e,t){if(!t)return new pe(e,Ce);const n=we(Ce);return t(n),new pe(e,n)}function Me(e){const t=e.split("/").map(e=>e.replace(/{}/g,"__array__"));let n=Ce;for(const e of t)e&&(n=n[e]);if(n&&n.type&&n.get)return n}function Ee(e,t){const n=e.split("/").map(e=>e.replace(/{}/g,"__array__"));let o=Ce;for(const e of n)e&&(o=o[e]);o&&o.type&&o.get&&(o.interpolation=t)}function Se(e,t,n=Ce){const o=e.split("/").map(e=>e.replace(/{}/g,"__array__"));let r=n;for(const e of o)if(e){if(!r[e]){if("?"===e){r.__ignoreObjectTree__=!0;continue}r[e]={},"__array__"===e&&(r[e].__target__=!0)}r=r[e]}Object.assign(r,t)}const Ie=new Map,Ne=Ie;function Le(e,n,o){ke(e)&&t.Logger.Warn(`Extension with the name '${e}' already exists`),Ie.set(e,{isGLTFExtension:n,factory:o})}function ke(e){return Ie.delete(e)}const Fe=new t.Lazy(()=>Promise.resolve(BABYLON)),Be=new t.Lazy(()=>Promise.resolve().then(function(){return Oo}));class Pe{static Get(e,t,n){if(!t||null==n||!t[n])throw new Error(`${e}: Failed to find index (${n})`);return t[n]}static TryGet(e,t){return e&&null!=t&&e[t]?e[t]:null}static Assign(e){if(e)for(let t=0;t<e.length;t++)e[t].index=t}}function Ge(e){if(e.min&&e.max){const n=e.min,o=e.max,r=t.TmpVectors.Vector3[0].copyFromFloats(n[0],n[1],n[2]),s=t.TmpVectors.Vector3[1].copyFromFloats(o[0],o[1],o[2]);if(e.normalized&&5126!==e.componentType){let t=1;switch(e.componentType){case 5120:t=127;break;case 5121:t=255;break;case 5122:t=32767;break;case 5123:t=65535}const n=1/t;r.scaleInPlace(n),s.scaleInPlace(n)}return new t.BoundingInfo(r,s)}return null}class Ve{isMatchingMaterialType(e){if(!e)return!1;const t=Array.from(this._pbrMaterialImpls.values());for(const n of t)if(e instanceof n.materialClass)return!0;return!1}static RegisterExtension(e,t){Le(e,!1,t)}static UnregisterExtension(e){return ke(e)}get gltf(){if(!this._gltf)throw new Error("glTF JSON is not available");return this._gltf}get bin(){return this._bin}get parent(){return this._parent}get babylonScene(){if(!this._babylonScene)throw new Error("Scene is not available");return this._babylonScene}get rootBabylonMesh(){return this._rootBabylonMesh}get rootUrl(){return this._rootUrl}constructor(e){this._completePromises=new Array,this._assetContainer=null,this._babylonLights=[],this._disableInstancedMesh=0,this._allMaterialsDirtyRequired=!1,this._skipStartAnimationStep=!1,this._extensions=new Array,this._disposed=!1,this._rootUrl=null,this._fileName=null,this._uniqueRootUrl=null,this._bin=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions=new Array,this._materialAdapterCache=new WeakMap,this._materialAdapters=new Set,this._pbrMaterialImpls=new Map,this._parent=e}_getOrCreateMaterialAdapter(e){let t=this._materialAdapterCache.get(e);if(!t){const n=Array.from(this._pbrMaterialImpls.values());for(const o of n)if(e instanceof o.materialClass){t=new o.adapterClass(e);break}if(!t)throw new Error("Appropriate material adapter class not found");const o=t;this._materialAdapterCache.set(e,o),this._materialAdapters.add(o)}return t}dispose(){this._disposed||(this._disposed=!0,this._completePromises.length=0,this._extensions.forEach(e=>e.dispose&&e.dispose()),this._extensions.length=0,this._materialAdapters.clear(),this._gltf=null,this._bin=null,this._babylonScene=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions.length=0,this._parent.dispose())}importMeshAsync(e,t,n,o,r,s){return A(this,arguments,void 0,function*(e,t,n,o,r,s,a=""){return yield Promise.resolve().then(()=>A(this,void 0,void 0,function*(){this._babylonScene=t,this._assetContainer=n,this._loadData(o);let s=null;if(e){const t={};if(this._gltf.nodes)for(const e of this._gltf.nodes)e.name&&(t[e.name]=e.index);s=(e instanceof Array?e:[e]).map(e=>{const n=t[e];if(void 0===n)throw new Error(`Failed to find node '${e}'`);return n})}return yield this._loadAsync(r,a,s,()=>({meshes:this._getMeshes(),particleSystems:[],skeletons:this._getSkeletons(),animationGroups:this._getAnimationGroups(),lights:this._babylonLights,transformNodes:this._getTransformNodes(),geometries:this._getGeometries(),spriteManagers:[]}))}))})}loadAsync(e,t,n,o){return A(this,arguments,void 0,function*(e,t,n,o,r=""){return this._babylonScene=e,this._loadData(t),yield this._loadAsync(n,r,null,()=>{})})}_loadAsync(n,o,r,s){return A(this,void 0,void 0,function*(){return yield Promise.resolve().then(()=>A(this,void 0,void 0,function*(){var a;if(this._rootUrl=n,this._uniqueRootUrl=!n.startsWith("file:")&&o?n:`${n}${t.RandomGUID()}/`,this._fileName=o,this._allMaterialsDirtyRequired=!1,yield this._loadExtensionsAsync(),!this.parent.skipMaterials){const e=this.parent.useOpenPBR||this.isExtensionUsed("KHR_materials_openpbr");let t=!1;this.parent.useOpenPBR?(null===(a=this._gltf.materials)||void 0===a?void 0:a.length)&&this._gltf.materials.some(e=>{var t;return!(null===(t=e.extensions)||void 0===t?void 0:t.KHR_materials_openpbr)})&&(t=!0):t=!0;const n=[];e&&!this._pbrMaterialImpls.has("openpbr")&&n.push(Promise.all([Promise.resolve(BABYLON),Promise.resolve().then(function(){return ta})]).then(([{OpenPBRMaterial:e,RegisterOpenpbrMaterial:t},{OpenPBRMaterialLoadingAdapter:n}])=>{t(),this._pbrMaterialImpls.set("openpbr",{materialClass:e,adapterClass:n})})),t&&!this._pbrMaterialImpls.has("pbr")&&n.push(Promise.all([Promise.resolve(BABYLON),Promise.resolve().then(function(){return oa})]).then(([{PBRMaterial:e,RegisterPbrMaterial:t},{PBRMaterialLoadingAdapter:n}])=>{t(),this._pbrMaterialImpls.set("pbr",{materialClass:e,adapterClass:n})})),yield Promise.all(n)}const i=`${e.GLTFLoaderState[e.GLTFLoaderState.LOADING]} => ${e.GLTFLoaderState[e.GLTFLoaderState.READY]}`,l=`${e.GLTFLoaderState[e.GLTFLoaderState.LOADING]} => ${e.GLTFLoaderState[e.GLTFLoaderState.COMPLETE]}`;this._parent._startPerformanceCounter(i),this._parent._startPerformanceCounter(l),this._parent._setState(e.GLTFLoaderState.LOADING),this._extensionsOnLoading();const u=new Array,c=this._babylonScene.blockMaterialDirtyMechanism;if(this._babylonScene.blockMaterialDirtyMechanism=!0,!this.parent.loadOnlyMaterials)if(r)u.push(this.loadSceneAsync("/nodes",{nodes:r,index:-1}));else if(null!=this._gltf.scene||this._gltf.scenes&&this._gltf.scenes[0]){const e=Pe.Get("/scene",this._gltf.scenes,this._gltf.scene||0);u.push(this.loadSceneAsync(`/scenes/${e.index}`,e))}if(!this.parent.skipMaterials&&this.parent.loadAllMaterials&&this._gltf.materials)for(let e=0;e<this._gltf.materials.length;++e){const n=this._gltf.materials[e],o="/materials/"+e,r=t.Material.TriangleFillMode;u.push(this._loadMaterialAsync(o,n,null,r,()=>{}))}this._allMaterialsDirtyRequired?this._babylonScene.blockMaterialDirtyMechanism=c:this._babylonScene._forceBlockMaterialDirtyMechanism(c),this._parent.compileMaterials&&u.push(this._compileMaterialsAsync()),this._parent.compileShadowGenerators&&u.push(this._compileShadowGeneratorsAsync());const d=Promise.all(u).then(()=>A(this,void 0,void 0,function*(){this._rootBabylonMesh&&this._rootBabylonMesh!==this._parent.customRootNode&&this._rootBabylonMesh.setEnabled(!0);for(const e of this._babylonScene.materials){const t=e;void 0!==t.maxSimultaneousLights&&(t.maxSimultaneousLights=Math.max(t.maxSimultaneousLights,this._babylonScene.lights.length))}for(const e of Array.from(this._materialAdapters))this._completePromises.push(e.finalizeAsync(this));return yield this._extensionsOnReadyAsync(),this._parent._setState(e.GLTFLoaderState.READY),this._skipStartAnimationStep||this._startAnimations(),s()}));return yield d.then(n=>(this._parent._endPerformanceCounter(i),t.Tools.SetImmediate(()=>{this._disposed||Promise.all(this._completePromises).then(()=>{this._parent._endPerformanceCounter(l),this._parent._setState(e.GLTFLoaderState.COMPLETE),this._parent.onCompleteObservable.notifyObservers(void 0),this._parent.onCompleteObservable.clear(),this.dispose()},e=>{this._parent.onErrorObservable.notifyObservers(e),this._parent.onErrorObservable.clear(),this.dispose()})}),n))})).catch(e=>{throw this._disposed||(this._parent.onErrorObservable.notifyObservers(e),this._parent.onErrorObservable.clear(),this.dispose()),e})})}_loadData(e){if(this._gltf=e.json,this._setupData(),e.bin){const n=this._gltf.buffers;if(n&&n[0]&&!n[0].uri){const o=n[0];(o.byteLength<e.bin.byteLength-3||o.byteLength>e.bin.byteLength)&&t.Logger.Warn(`Binary buffer length (${o.byteLength}) from JSON does not match chunk length (${e.bin.byteLength})`),this._bin=e.bin}else t.Logger.Warn("Unexpected BIN chunk")}}_setupData(){if(Pe.Assign(this._gltf.accessors),Pe.Assign(this._gltf.animations),Pe.Assign(this._gltf.buffers),Pe.Assign(this._gltf.bufferViews),Pe.Assign(this._gltf.cameras),Pe.Assign(this._gltf.images),Pe.Assign(this._gltf.materials),Pe.Assign(this._gltf.meshes),Pe.Assign(this._gltf.nodes),Pe.Assign(this._gltf.samplers),Pe.Assign(this._gltf.scenes),Pe.Assign(this._gltf.skins),Pe.Assign(this._gltf.textures),this._gltf.nodes){const e={};for(const t of this._gltf.nodes)if(t.children)for(const n of t.children)e[n]=t.index;const t=this._createRootNode();for(const n of this._gltf.nodes){const o=e[n.index];n.parent=void 0===o?t:this._gltf.nodes[o]}}}_loadExtensionsAsync(){return A(this,void 0,void 0,function*(){var e;const n=[];if(Ne.forEach((e,o)=>{var r;!1===(null===(r=this.parent.extensionOptions[o])||void 0===r?void 0:r.enabled)?e.isGLTFExtension&&this.isExtensionUsed(o)&&t.Logger.Warn(`Extension ${o} is used but has been explicitly disabled.`):e.isGLTFExtension&&!this.isExtensionUsed(o)||n.push((()=>A(this,void 0,void 0,function*(){const n=yield e.factory(this);return n.name!==o&&t.Logger.Warn(`The name of the glTF loader extension instance does not match the registered name: ${n.name} !== ${o}`),this._parent.onExtensionLoadedObservable.notifyObservers(n),n}))())}),this._extensions.push(...yield Promise.all(n)),this._extensions.sort((e,t)=>(e.order||Number.MAX_VALUE)-(t.order||Number.MAX_VALUE)),this._parent.onExtensionLoadedObservable.clear(),this._gltf.extensionsRequired)for(const t of this._gltf.extensionsRequired)if(!this._extensions.some(e=>e.name===t&&e.enabled)){if(!1===(null===(e=this.parent.extensionOptions[t])||void 0===e?void 0:e.enabled))throw new Error(`Required extension ${t} is disabled`);throw new Error(`Required extension ${t} is not available`)}})}_createRootNode(){if(void 0!==this._parent.customRootNode)return this._rootBabylonMesh=this._parent.customRootNode,{_babylonTransformNode:null===this._rootBabylonMesh?void 0:this._rootBabylonMesh,index:-1};this._babylonScene._blockEntityCollection=!!this._assetContainer;const n=new t.Mesh("__root__",this._babylonScene);this._rootBabylonMesh=n,this._rootBabylonMesh._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._rootBabylonMesh.setEnabled(!1);const o={_babylonTransformNode:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case e.GLTFLoaderCoordinateSystemMode.AUTO:this._babylonScene.useRightHandedSystem||(o.rotation=[0,1,0,0],o.scale=[1,1,-1],Ve._LoadTransform(o,this._rootBabylonMesh));break;case e.GLTFLoaderCoordinateSystemMode.FORCE_RIGHT_HANDED:this._babylonScene.useRightHandedSystem=!0;break;default:throw new Error(`Invalid coordinate system mode (${this._parent.coordinateSystemMode})`)}return this._parent.onMeshLoadedObservable.notifyObservers(n),o}loadSceneAsync(e,t){const n=this._extensionsLoadSceneAsync(e,t);if(n)return n;const o=new Array;if(this.logOpen(`${e} ${t.name||""}`),t.nodes)for(const n of t.nodes){const t=Pe.Get(`${e}/nodes/${n}`,this._gltf.nodes,n);o.push(this.loadNodeAsync(`/nodes/${t.index}`,t,e=>{e.parent=this._rootBabylonMesh}))}for(const e of this._postSceneLoadActions)e();return o.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(o).then(()=>{})}_forEachPrimitive(e,t){if(e._primitiveBabylonMeshes)for(const n of e._primitiveBabylonMeshes)t(n)}_getGeometries(){const e=[],t=this._gltf.nodes;if(t)for(const n of t)this._forEachPrimitive(n,t=>{const n=t.geometry;n&&-1===e.indexOf(n)&&e.push(n)});return e}_getMeshes(){const e=[];this._rootBabylonMesh instanceof t.AbstractMesh&&e.push(this._rootBabylonMesh);const n=this._gltf.nodes;if(n)for(const t of n)this._forEachPrimitive(t,t=>{e.push(t)});return e}_getTransformNodes(){const e=[],t=this._gltf.nodes;if(t)for(const n of t)n._babylonTransformNode&&"TransformNode"===n._babylonTransformNode.getClassName()&&e.push(n._babylonTransformNode),n._babylonTransformNodeForSkin&&e.push(n._babylonTransformNodeForSkin);return e}_getSkeletons(){const e=[],t=this._gltf.skins;if(t)for(const n of t)n._data&&e.push(n._data.babylonSkeleton);return e}_getAnimationGroups(){const e=[],t=this._gltf.animations;if(t)for(const n of t)n._babylonAnimationGroup&&e.push(n._babylonAnimationGroup);return e}_startAnimations(){switch(this._parent.animationStartMode){case e.GLTFLoaderAnimationStartMode.NONE:break;case e.GLTFLoaderAnimationStartMode.FIRST:{const e=this._getAnimationGroups();0!==e.length&&e[0].start(!0);break}case e.GLTFLoaderAnimationStartMode.ALL:{const e=this._getAnimationGroups();for(const t of e)t.start(!0);break}default:return void t.Logger.Error(`Invalid animation start mode (${this._parent.animationStartMode})`)}}loadNodeAsync(e,n,o=()=>{}){const r=this._extensionsLoadNodeAsync(e,n,o);if(r)return r;if(n._babylonTransformNode)throw new Error(`${e}: Invalid recursive node hierarchy`);const s=new Array;this.logOpen(`${e} ${n.name||""}`);const a=t=>{if(Ve.AddPointerMetadata(t,e),Ve._LoadTransform(n,t),null!=n.camera){const o=Pe.Get(`${e}/camera`,this._gltf.cameras,n.camera);s.push(this.loadCameraAsync(`/cameras/${o.index}`,o,e=>{e.parent=t,this._babylonScene.useRightHandedSystem||(t.scaling.x=-1)}))}if(n.children)for(const o of n.children){const n=Pe.Get(`${e}/children/${o}`,this._gltf.nodes,o);s.push(this.loadNodeAsync(`/nodes/${n.index}`,n,e=>{e.parent=t}))}o(t)},i=null!=n.mesh,l=this._parent.loadSkins&&null!=n.skin;if(!i||l){const e=n.name||`node${n.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;const o=new t.TransformNode(e,this._babylonScene);o._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,null==n.mesh?n._babylonTransformNode=o:n._babylonTransformNodeForSkin=o,a(o)}if(i)if(l){const o=Pe.Get(`${e}/mesh`,this._gltf.meshes,n.mesh);s.push(this._loadMeshAsync(`/meshes/${o.index}`,n,o,o=>{const r=n._babylonTransformNodeForSkin;o.metadata=t.deepMerge(r.metadata,o.metadata||{});const a=Pe.Get(`${e}/skin`,this._gltf.skins,n.skin);s.push(this._loadSkinAsync(`/skins/${a.index}`,n,a,e=>{this._forEachPrimitive(n,t=>{t.skeleton=e}),this._postSceneLoadActions.push(()=>{if(null!=a.skeleton){const e=Pe.Get(`/skins/${a.index}/skeleton`,this._gltf.nodes,a.skeleton).parent;n.index===e.index?o.parent=r.parent:o.parent=e._babylonTransformNode}else o.parent=this._rootBabylonMesh;this._parent.onSkinLoadedObservable.notifyObservers({node:r,skinnedNode:o})})}))}))}else{const t=Pe.Get(`${e}/mesh`,this._gltf.meshes,n.mesh);s.push(this._loadMeshAsync(`/meshes/${t.index}`,n,t,a))}return this.logClose(),Promise.all(s).then(()=>(this._forEachPrimitive(n,e=>{const t=e;!t.isAnInstance&&t.geometry&&t.geometry.useBoundingInfoFromGeometry?e._updateBoundingInfo():e.refreshBoundingInfo(!0,!0)}),n._babylonTransformNode))}_loadMeshAsync(e,n,o,r){const s=o.primitives;if(!s||!s.length)throw new Error(`${e}: Primitives are missing`);null==s[0].index&&Pe.Assign(s);const a=new Array;this.logOpen(`${e} ${o.name||""}`);const i=n.name||`node${n.index}`;if(1===s.length){const t=o.primitives[0];a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${t.index}`,i,n,o,t,e=>{n._babylonTransformNode=e,n._primitiveBabylonMeshes=[e]}))}else{this._babylonScene._blockEntityCollection=!!this._assetContainer,n._babylonTransformNode=new t.TransformNode(i,this._babylonScene),n._babylonTransformNode._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,n._primitiveBabylonMeshes=[];for(const t of s)a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${t.index}`,`${i}_primitive${t.index}`,n,o,t,e=>{e.parent=n._babylonTransformNode,n._primitiveBabylonMeshes.push(e)}))}return r(n._babylonTransformNode),this.logClose(),Promise.all(a).then(()=>n._babylonTransformNode)}_loadMeshPrimitiveAsync(e,n,o,r,s,a){const i=this._extensionsLoadMeshPrimitiveAsync(e,n,o,r,s,a);if(i)return i;this.logOpen(`${e}`);const l=0===this._disableInstancedMesh&&this._parent.createInstances&&null==o.skin&&!r.primitives[0].targets;let u,c;if(l&&s._instanceData)this._babylonScene._blockEntityCollection=!!this._assetContainer,u=s._instanceData.babylonSourceMesh.createInstance(n),u._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,c=s._instanceData.promise;else{const a=new Array;this._babylonScene._blockEntityCollection=!!this._assetContainer;const i=new t.Mesh(n,this._babylonScene);if(i._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,i.sideOrientation=this._babylonScene.useRightHandedSystem?t.Material.CounterClockWiseSideOrientation:t.Material.ClockWiseSideOrientation,this._createMorphTargets(e,o,r,s,i),a.push(this._loadVertexDataAsync(e,s,i).then(t=>A(this,void 0,void 0,function*(){return yield this._loadMorphTargetsAsync(e,s,i,t).then(()=>{this._disposed||(this._babylonScene._blockEntityCollection=!!this._assetContainer,t.applyToMesh(i),t._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1)})}))),!this.parent.skipMaterials){const t=Ve._GetDrawMode(e,s.mode);if(null==s.material){let e=this._defaultBabylonMaterialData[t];e||(e=this._createDefaultMaterial("__GLTFLoader._default",t,this._getDefaultImpl()),this._parent.onMaterialLoadedObservable.notifyObservers(e),this._defaultBabylonMaterialData[t]=e),i.material=e}else{const n=Pe.Get(`${e}/material`,this._gltf.materials,s.material);a.push(this._loadMaterialAsync(`/materials/${n.index}`,n,i,t,e=>{i.material=e}))}}c=Promise.all(a),l&&(s._instanceData={babylonSourceMesh:i,promise:c}),u=i}return Ve.AddPointerMetadata(u,e),this._parent.onMeshLoadedObservable.notifyObservers(u),a(u),this.logClose(),c.then(()=>u)}_loadVertexDataAsync(e,n,o){const r=this._extensionsLoadVertexDataAsync(e,n,o);if(r)return r;const s=n.attributes;if(!s)throw new Error(`${e}: Attributes are missing`);const a=new Array,i=new t.Geometry(o.name,this._babylonScene);if(null==n.indices)o.isUnIndexed=!0;else{const t=Pe.Get(`${e}/indices`,this._gltf.accessors,n.indices);a.push(this._loadIndicesAccessorAsync(`/accessors/${t.index}`,t).then(e=>{i.setIndices(e)}))}const l=(n,r,l)=>{if(null==s[n])return;o._delayInfo=o._delayInfo||[],-1===o._delayInfo.indexOf(r)&&o._delayInfo.push(r);const u=Pe.Get(`${e}/attributes/${n}`,this._gltf.accessors,s[n]);a.push(this._loadVertexAccessorAsync(`/accessors/${u.index}`,u,r).then(e=>{if(e.getKind()===t.VertexBuffer.PositionKind&&!this.parent.alwaysComputeBoundingBox&&!o.skeleton){const e=Ge(u);e&&(i._boundingInfo=e,i.useBoundingInfoFromGeometry=!0)}i.setVerticesBuffer(e,u.count)})),r==t.VertexBuffer.MatricesIndicesExtraKind&&(o.numBoneInfluencers=8),l&&l(u)};return l("POSITION",t.VertexBuffer.PositionKind),l("NORMAL",t.VertexBuffer.NormalKind),l("TANGENT",t.VertexBuffer.TangentKind),l("TEXCOORD_0",t.VertexBuffer.UVKind),l("TEXCOORD_1",t.VertexBuffer.UV2Kind),l("TEXCOORD_2",t.VertexBuffer.UV3Kind),l("TEXCOORD_3",t.VertexBuffer.UV4Kind),l("TEXCOORD_4",t.VertexBuffer.UV5Kind),l("TEXCOORD_5",t.VertexBuffer.UV6Kind),l("JOINTS_0",t.VertexBuffer.MatricesIndicesKind),l("WEIGHTS_0",t.VertexBuffer.MatricesWeightsKind),l("JOINTS_1",t.VertexBuffer.MatricesIndicesExtraKind),l("WEIGHTS_1",t.VertexBuffer.MatricesWeightsExtraKind),l("COLOR_0",t.VertexBuffer.ColorKind,e=>{"VEC4"===e.type&&(o.hasVertexAlpha=!0)}),Promise.all(a).then(()=>i)}_createMorphTargets(e,n,o,r,s){if(!r.targets||!this._parent.loadMorphTargets)return;if(null==n._numMorphTargets)n._numMorphTargets=r.targets.length;else if(r.targets.length!==n._numMorphTargets)throw new Error(`${e}: Primitives do not have the same number of targets`);const a=o.extras?o.extras.targetNames:null;this._babylonScene._blockEntityCollection=!!this._assetContainer,s.morphTargetManager=new t.MorphTargetManager(this._babylonScene),s.morphTargetManager._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,s.morphTargetManager.areUpdatesFrozen=!0;for(let e=0;e<r.targets.length;e++){const r=n.weights?n.weights[e]:o.weights?o.weights[e]:0,i=a?a[e]:`morphTarget${e}`;s.morphTargetManager.addTarget(new t.MorphTarget(i,r,s.getScene()))}}_loadMorphTargetsAsync(e,n,o,r){if(!n.targets||!this._parent.loadMorphTargets)return Promise.resolve();const s=new Array,a=o.morphTargetManager;for(let t=0;t<a.numTargets;t++){const o=a.getTarget(t);s.push(this._loadMorphTargetVertexDataAsync(`${e}/targets/${t}`,r,n.targets[t],o))}return Promise.all(s).then(()=>{a.areUpdatesFrozen=!1,this._parent.useMaxMorphTargetInfluencers&&(a.isUsingTextureForTargets||a.numTargets<=t.MorphTargetManager.MaxActiveMorphTargetsInVertexAttributeMode)&&(a.optimizeInfluencers=!1,a.numMaxInfluencers=a.numTargets)})}_loadMorphTargetVertexDataAsync(e,n,o,r){return A(this,void 0,void 0,function*(){const s=new Array,a=(t,r,a)=>{if(null==o[t])return;const i=n.getVertexBuffer(r);if(!i)return;const l=Pe.Get(`${e}/${t}`,this._gltf.accessors,o[t]);s.push(this._loadFloatAccessorAsync(`/accessors/${l.index}`,l).then(e=>{a(i,e)}))};return a("POSITION",t.VertexBuffer.PositionKind,(e,t)=>{const n=new Float32Array(t.length);e.forEach(t.length,(e,o)=>{n[o]=t[o]+e}),r.setPositions(n)}),a("NORMAL",t.VertexBuffer.NormalKind,(e,t)=>{const n=new Float32Array(t.length);e.forEach(n.length,(e,o)=>{n[o]=t[o]+e}),r.setNormals(n)}),a("TANGENT",t.VertexBuffer.TangentKind,(e,t)=>{const n=new Float32Array(t.length/3*4);let o=0;e.forEach(t.length/3*4,(e,r)=>{(r+1)%4!=0&&(n[o]=t[o]+e,o++)}),r.setTangents(n)}),a("TEXCOORD_0",t.VertexBuffer.UVKind,(e,t)=>{const n=new Float32Array(t.length);e.forEach(t.length,(e,o)=>{n[o]=t[o]+e}),r.setUVs(n)}),a("TEXCOORD_1",t.VertexBuffer.UV2Kind,(e,t)=>{const n=new Float32Array(t.length);e.forEach(t.length,(e,o)=>{n[o]=t[o]+e}),r.setUV2s(n)}),a("COLOR_0",t.VertexBuffer.ColorKind,(t,n)=>{let o=null;const s=t.getSize();if(3===s){o=new Float32Array(n.length/3*4),t.forEach(n.length,(e,t)=>{const r=Math.floor(t/3),s=t%3;o[4*r+s]=n[3*r+s]+e});for(let e=0;e<n.length/3;++e)o[4*e+3]=1}else{if(4!==s)throw new Error(`${e}: Invalid number of components (${s}) for COLOR_0 attribute`);o=new Float32Array(n.length),t.forEach(n.length,(e,t)=>{o[t]=n[t]+e})}r.setColors(o)}),yield Promise.all(s).then(()=>{})})}static _LoadTransform(e,n){if(null!=e.skin)return;let o=t.Vector3.Zero(),r=t.Quaternion.Identity(),s=t.Vector3.One();e.matrix?t.Matrix.FromArray(e.matrix).decompose(s,r,o):(e.translation&&(o=t.Vector3.FromArray(e.translation)),e.rotation&&(r=t.Quaternion.FromArray(e.rotation)),e.scale&&(s=t.Vector3.FromArray(e.scale))),n.position=o,n.rotationQuaternion=r,n.scaling=s}_loadSkinAsync(e,n,o,r){if(!this._parent.loadSkins)return Promise.resolve();const s=this._extensionsLoadSkinAsync(e,n,o);if(s)return s;if(o._data)return r(o._data.babylonSkeleton),o._data.promise;const a=`skeleton${o.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;const i=new t.Skeleton(o.name||a,a,this._babylonScene);i._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._loadBones(e,o,i);const l=this._loadSkinInverseBindMatricesDataAsync(e,o).then(e=>{this._updateBoneMatrices(i,e)});return o._data={babylonSkeleton:i,promise:l},r(i),l}_loadBones(e,n,o){if(null==n.skeleton||this._parent.alwaysComputeSkeletonRootNode){const o=this._findSkeletonRootNode(`${e}/joints`,n.joints);if(o)if(void 0===n.skeleton)n.skeleton=o.index;else{const r=(e,t)=>{for(;t.parent;t=t.parent)if(t.parent===e)return!0;return!1},s=Pe.Get(`${e}/skeleton`,this._gltf.nodes,n.skeleton);s===o||r(s,o)||(t.Logger.Warn(`${e}/skeleton: Overriding with nearest common ancestor as skeleton node is not a common root`),n.skeleton=o.index)}else t.Logger.Warn(`${e}: Failed to find common root`)}const r={};for(const t of n.joints){const s=Pe.Get(`${e}/joints/${t}`,this._gltf.nodes,t);this._loadBone(s,n,o,r)}}_findSkeletonRootNode(e,t){if(0===t.length)return null;const n={};for(const o of t){const t=[];let r=Pe.Get(`${e}/${o}`,this._gltf.nodes,o);for(;-1!==r.index;)t.unshift(r),r=r.parent;n[o]=t}let o=null;for(let e=0;;++e){let r=n[t[0]];if(e>=r.length)return o;const s=r[e];for(let a=1;a<t.length;++a)if(r=n[t[a]],e>=r.length||s!==r[e])return o;o=s}}_loadBone(e,n,o,r){e._isJoint=!0;let s=r[e.index];if(s)return s;let a=null;e.index!==n.skeleton&&(e.parent&&-1!==e.parent.index?a=this._loadBone(e.parent,n,o,r):void 0!==n.skeleton&&t.Logger.Warn(`/skins/${n.index}/skeleton: Skeleton node is not a common root`));const i=n.joints.indexOf(e.index);return s=new t.Bone(e.name||`joint${e.index}`,o,a,this._getNodeMatrix(e),null,null,i),r[e.index]=s,this._postSceneLoadActions.push(()=>{s.linkTransformNode(e._babylonTransformNode)}),s}_loadSkinInverseBindMatricesDataAsync(e,t){if(null==t.inverseBindMatrices)return Promise.resolve(null);const n=Pe.Get(`${e}/inverseBindMatrices`,this._gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync(`/accessors/${n.index}`,n)}_updateBoneMatrices(e,n){for(const o of e.bones){const e=t.Matrix.Identity(),r=o._index;n&&-1!==r&&(t.Matrix.FromArrayToRef(n,16*r,e),e.invertToRef(e));const s=o.getParent();s&&e.multiplyToRef(s.getAbsoluteInverseBindMatrix(),e),o.updateMatrix(e,!1,!1),o._updateAbsoluteBindMatrices(void 0,!1)}}_getNodeMatrix(e){return e.matrix?t.Matrix.FromArray(e.matrix):t.Matrix.Compose(e.scale?t.Vector3.FromArray(e.scale):t.Vector3.One(),e.rotation?t.Quaternion.FromArray(e.rotation):t.Quaternion.Identity(),e.translation?t.Vector3.FromArray(e.translation):t.Vector3.Zero())}loadCameraAsync(e,n,o=()=>{}){const r=this._extensionsLoadCameraAsync(e,n,o);if(r)return r;const s=new Array;this.logOpen(`${e} ${n.name||""}`),this._babylonScene._blockEntityCollection=!!this._assetContainer;const a=new t.FreeCamera(n.name||`camera${n.index}`,t.Vector3.Zero(),this._babylonScene,!1);switch(a._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,n._babylonCamera=a,a.setTarget(new t.Vector3(0,0,-1)),n.type){case"perspective":{const t=n.perspective;if(!t)throw new Error(`${e}: Camera perspective properties are missing`);a.fov=t.yfov,a.minZ=t.znear,a.maxZ=t.zfar||0;break}case"orthographic":if(!n.orthographic)throw new Error(`${e}: Camera orthographic properties are missing`);a.mode=t.Camera.ORTHOGRAPHIC_CAMERA,a.orthoLeft=-n.orthographic.xmag,a.orthoRight=n.orthographic.xmag,a.orthoBottom=-n.orthographic.ymag,a.orthoTop=n.orthographic.ymag,a.minZ=n.orthographic.znear,a.maxZ=n.orthographic.zfar;break;default:throw new Error(`${e}: Invalid camera type (${n.type})`)}return Ve.AddPointerMetadata(a,e),this._parent.onCameraLoadedObservable.notifyObservers(a),o(a),this.logClose(),Promise.all(s).then(()=>a)}_loadAnimationsAsync(){this._parent._startPerformanceCounter("Load animations");const e=this._gltf.animations;if(!e)return Promise.resolve();const t=new Array;for(let n=0;n<e.length;n++){const o=e[n];t.push(this.loadAnimationAsync(`/animations/${o.index}`,o).then(e=>{0===e.targetedAnimations.length&&e.dispose()}))}return Promise.all(t).then(()=>{this._parent._endPerformanceCounter("Load animations")})}loadAnimationAsync(e,t){this._parent._startPerformanceCounter("Load animation");return this._extensionsLoadAnimationAsync(e,t)||Fe.value.then(({AnimationGroup:n})=>{this._babylonScene._blockEntityCollection=!!this._assetContainer;const o=new n(t.name||`animation${t.index}`,this._babylonScene);o._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonAnimationGroup=o;const r=new Array;Pe.Assign(t.channels),Pe.Assign(t.samplers);for(const n of t.channels)r.push(this._loadAnimationChannelAsync(`${e}/channels/${n.index}`,e,t,n,(e,t)=>{e.animations=e.animations||[],e.animations.push(t),o.addTargetedAnimation(t,e)}));return this._parent._endPerformanceCounter("Load animation"),Promise.all(r).then(()=>(o.normalize(0),o))})}_loadAnimationChannelAsync(e,t,n,o,r){const s=this._extensionsLoadAnimationChannelAsync(e,t,n,o,r);if(s)return s;if(null==o.target.node)return Promise.resolve();const a=Pe.Get(`${e}/target/node`,this._gltf.nodes,o.target.node),i=o.target.path,l="weights"===i;return l&&!a._numMorphTargets||!l&&!a._babylonTransformNode?Promise.resolve():this._parent.loadNodeAnimations||l||a._isJoint?Be.value.then(({RegisterGLTFLoaderAnimation:s})=>{var l,u,c,d;let h;switch(s(),i){case"translation":h=null===(l=Me("/nodes/{}/translation"))||void 0===l?void 0:l.interpolation;break;case"rotation":h=null===(u=Me("/nodes/{}/rotation"))||void 0===u?void 0:u.interpolation;break;case"scale":h=null===(c=Me("/nodes/{}/scale"))||void 0===c?void 0:c.interpolation;break;case"weights":h=null===(d=Me("/nodes/{}/weights"))||void 0===d?void 0:d.interpolation;break;default:throw new Error(`${e}/target/path: Invalid value (${o.target.path})`)}if(!h)throw new Error(`${e}/target/path: Could not find interpolation properties for target path (${o.target.path})`);const m={object:a,info:h};return this._loadAnimationChannelFromTargetInfoAsync(e,t,n,o,m,r)}):Promise.resolve()}_loadAnimationChannelFromTargetInfoAsync(e,t,n,o,r,s){const a=this.parent.targetFps,i=1/a,l=Pe.Get(`${e}/sampler`,n.samplers,o.sampler);return this._loadAnimationSamplerAsync(`${t}/samplers/${o.sampler}`,l).then(e=>{let t=0;const l=r.object,u=r.info;for(const r of u){const u=r.getStride(l),c=e.input,d=e.output,h=new Array(c.length);let m=0;switch(e.interpolation){case"STEP":for(let e=0;e<c.length;e++){const t=r.getValue(l,d,m,1);m+=u,h[e]={frame:c[e]*a,value:t,interpolation:1}}break;case"CUBICSPLINE":for(let e=0;e<c.length;e++){const t=r.getValue(l,d,m,i);m+=u;const n=r.getValue(l,d,m,1);m+=u;const o=r.getValue(l,d,m,i);m+=u,h[e]={frame:c[e]*a,inTangent:t,value:n,outTangent:o}}break;case"LINEAR":for(let e=0;e<c.length;e++){const t=r.getValue(l,d,m,1);m+=u,h[e]={frame:c[e]*a,value:t}}}if(m>0){const e=`${n.name||`animation${n.index}`}_channel${o.index}_${t}`,i=r.buildAnimations(l,e,a,h);for(const e of i)t++,s(e.babylonAnimatable,e.babylonAnimation)}}})}_loadAnimationSamplerAsync(e,t){if(t._data)return t._data;const n=t.interpolation||"LINEAR";switch(n){case"STEP":case"LINEAR":case"CUBICSPLINE":break;default:throw new Error(`${e}/interpolation: Invalid value (${t.interpolation})`)}const o=Pe.Get(`${e}/input`,this._gltf.accessors,t.input),r=Pe.Get(`${e}/output`,this._gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync(`/accessors/${o.index}`,o),this._loadFloatAccessorAsync(`/accessors/${r.index}`,r)]).then(([e,t])=>({input:e,interpolation:n,output:t})),t._data}loadBufferAsync(e,t,n,o){const r=this._extensionsLoadBufferAsync(e,t,n,o);if(r)return r;if(!t._data)if(t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{if(!this._bin)throw new Error(`${e}: Uri is missing or the binary glTF is missing its binary chunk`);t._data=this._bin.readAsync(0,t.byteLength)}return t._data.then(t=>{try{return new Uint8Array(t.buffer,t.byteOffset+n,o)}catch(t){throw new Error(`${e}: ${t.message}`,{cause:t})}})}loadBufferViewAsync(e,t){const n=this._extensionsLoadBufferViewAsync(e,t);if(n)return n;if(t._data)return t._data;const o=Pe.Get(`${e}/buffer`,this._gltf.buffers,t.buffer);return t._data=this.loadBufferAsync(`/buffers/${o.index}`,o,t.byteOffset||0,t.byteLength),t._data}_loadAccessorAsync(e,n,o){if(n._data)return n._data;const r=Ve._GetNumComponents(e,n.type),s=r*t.VertexBufferGetTypeByteLength(n.componentType),a=r*n.count;if(null==n.bufferView)n._data=Promise.resolve(new o(a));else{const i=Pe.Get(`${e}/bufferView`,this._gltf.bufferViews,n.bufferView);n._data=this.loadBufferViewAsync(`/bufferViews/${i.index}`,i).then(l=>{if(5126!==n.componentType||n.normalized||i.byteStride&&i.byteStride!==s){const e=new o(a);return t.VertexBufferForEach(l,n.byteOffset||0,i.byteStride||s,r,n.componentType,e.length,n.normalized||!1,(t,n)=>{e[n]=t}),e}return Ve._GetTypedArray(e,n.componentType,l,n.byteOffset,a)})}if(n.sparse){const a=n.sparse;n._data=n._data.then(i=>{const l=i,u=Pe.Get(`${e}/sparse/indices/bufferView`,this._gltf.bufferViews,a.indices.bufferView),c=Pe.Get(`${e}/sparse/values/bufferView`,this._gltf.bufferViews,a.values.bufferView);return Promise.all([this.loadBufferViewAsync(`/bufferViews/${u.index}`,u),this.loadBufferViewAsync(`/bufferViews/${c.index}`,c)]).then(([i,u])=>{const c=Ve._GetTypedArray(`${e}/sparse/indices`,a.indices.componentType,i,a.indices.byteOffset,a.count),d=r*a.count;let h;if(5126!==n.componentType||n.normalized){const i=Ve._GetTypedArray(`${e}/sparse/values`,n.componentType,u,a.values.byteOffset,d);h=new o(d),t.VertexBufferForEach(i,0,s,r,n.componentType,h.length,n.normalized||!1,(e,t)=>{h[t]=e})}else h=Ve._GetTypedArray(`${e}/sparse/values`,n.componentType,u,a.values.byteOffset,d);let m=0;for(let e=0;e<c.length;e++){let t=c[e]*r;for(let e=0;e<r;e++)l[t++]=h[m++]}return l})})}return n._data}_loadFloatAccessorAsync(e,t){return this._loadAccessorAsync(e,t,Float32Array)}_loadIndicesAccessorAsync(e,t){if("SCALAR"!==t.type)throw new Error(`${e}/type: Invalid value ${t.type}`);if(5121!==t.componentType&&5123!==t.componentType&&5125!==t.componentType)throw new Error(`${e}/componentType: Invalid value ${t.componentType}`);if(t._data)return t._data;if(t.sparse){const n=Ve._GetTypedArrayConstructor(`${e}/componentType`,t.componentType);t._data=this._loadAccessorAsync(e,t,n)}else{const n=Pe.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${n.index}`,n).then(n=>Ve._GetTypedArray(e,t.componentType,n,t.byteOffset,t.count))}return t._data}_loadVertexBufferViewAsync(e){if(e._babylonBuffer)return e._babylonBuffer;const n=this._babylonScene.getEngine();return e._babylonBuffer=this.loadBufferViewAsync(`/bufferViews/${e.index}`,e).then(e=>new t.Buffer(n,e,!1)),e._babylonBuffer}_loadVertexAccessorAsync(e,n,o){var r;if(null===(r=n._babylonVertexBuffer)||void 0===r?void 0:r[o])return n._babylonVertexBuffer[o];n._babylonVertexBuffer||(n._babylonVertexBuffer={});const s=this._babylonScene.getEngine();if(n.sparse||null==n.bufferView)n._babylonVertexBuffer[o]=this._loadFloatAccessorAsync(e,n).then(e=>new t.VertexBuffer(s,e,o,!1));else{const r=Pe.Get(`${e}/bufferView`,this._gltf.bufferViews,n.bufferView);n._babylonVertexBuffer[o]=this._loadVertexBufferViewAsync(r).then(a=>{const i=Ve._GetNumComponents(e,n.type);return new t.VertexBuffer(s,a,o,!1,void 0,r.byteStride,void 0,n.byteOffset,i,n.componentType,n.normalized,!0,void 0,!0)})}return n._babylonVertexBuffer[o]}_loadMaterialMetallicRoughnessPropertiesAsync(e,n,o){const r=new Array,s=this._getOrCreateMaterialAdapter(o);return n&&(n.baseColorFactor?(s.baseColor=t.Color3.FromArray(n.baseColorFactor),s.geometryOpacity=n.baseColorFactor[3]):s.baseColor=t.Color3.White(),s.baseMetalness=null==n.metallicFactor?1:n.metallicFactor,s.specularRoughness=null==n.roughnessFactor?1:n.roughnessFactor,n.baseColorTexture&&r.push(this.loadTextureInfoAsync(`${e}/baseColorTexture`,n.baseColorTexture,e=>{e.name=`${o.name} (Base Color)`,s.baseColorTexture=e})),n.metallicRoughnessTexture&&(n.metallicRoughnessTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/metallicRoughnessTexture`,n.metallicRoughnessTexture,e=>{e.name=`${o.name} (Metallic Roughness)`,s.baseMetalnessTexture=e,s.specularRoughnessTexture=e})),s.useRoughnessFromMetallicTextureGreen=!0,s.useMetallicFromMetallicTextureBlue=!0)),Promise.all(r).then(()=>{})}_loadMaterialAsync(e,t,n,o,r=()=>{}){const s=this._extensionsLoadMaterialAsync(e,t,n,o,r);if(s)return s;t._data=t._data||{};let a=t._data[o];if(!a){this.logOpen(`${e} ${t.name||""}`);const n=this.createMaterial(e,t,o);a={babylonMaterial:n,babylonMeshes:[],promise:this.loadMaterialPropertiesAsync(e,t,n)},t._data[o]=a,Ve.AddPointerMetadata(n,e),this._parent.onMaterialLoadedObservable.notifyObservers(n),this.logClose()}return n&&(a.babylonMeshes.push(n),n.onDisposeObservable.addOnce(()=>{const e=a.babylonMeshes.indexOf(n);-1!==e&&a.babylonMeshes.splice(e,1)})),r(a.babylonMaterial),a.promise.then(()=>a.babylonMaterial)}_selectImplForGltfMaterial(e){var t;if(this.parent.useOpenPBR||(null===(t=e.extensions)||void 0===t?void 0:t.KHR_materials_openpbr)){const e=this._pbrMaterialImpls.get("openpbr");if(e)return e}const n=this._pbrMaterialImpls.get("pbr");if(n)return n;throw new Error("No PBR material implementation loaded")}_getDefaultImpl(){var e;if(this.parent.useOpenPBR){const e=this._pbrMaterialImpls.get("openpbr");if(e)return e}const t=null!==(e=this._pbrMaterialImpls.get("pbr"))&&void 0!==e?e:this._pbrMaterialImpls.values().next().value;if(t)return t;throw new Error("No PBR material implementation loaded")}_createDefaultMaterial(e,t,n){this._babylonScene._blockEntityCollection=!!this._assetContainer;const o=new n.materialClass(e,this._babylonScene);o._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,o.fillMode=t,o.transparencyMode=n.materialClass.MATERIAL_OPAQUE;const r=this._getOrCreateMaterialAdapter(o);return r.transparencyAsAlphaCoverage=this._parent.transparencyAsCoverage,r.baseMetalness=1,r.specularRoughness=1,o}createMaterial(e,t,n){const o=this._extensionsCreateMaterial(e,t,n);if(o)return o;const r=t.name||`material${t.index}`;return this._createDefaultMaterial(r,n,this._selectImplForGltfMaterial(t))}loadMaterialPropertiesAsync(e,t,n){const o=this._extensionsLoadMaterialPropertiesAsync(e,t,n);if(o)return o;const r=new Array;return r.push(this.loadMaterialBasePropertiesAsync(e,t,n)),t.pbrMetallicRoughness&&r.push(this._loadMaterialMetallicRoughnessPropertiesAsync(`${e}/pbrMetallicRoughness`,t.pbrMetallicRoughness,n)),this.loadMaterialAlphaProperties(e,t,n),Promise.all(r).then(()=>{})}loadMaterialBasePropertiesAsync(e,n,o){const r=new Array,s=this._getOrCreateMaterialAdapter(o);let a;s.emissionColor=n.emissiveFactor?t.Color3.FromArray(n.emissiveFactor):new t.Color3(0,0,0),n.doubleSided&&(s.backFaceCulling=!1,s.twoSidedLighting=!0),n.normalTexture&&(n.normalTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/normalTexture`,n.normalTexture,e=>{var t;e.name=`${o.name} (Normal)`,s.geometryNormalTexture=e,null!=(null===(t=n.normalTexture)||void 0===t?void 0:t.scale)&&(e.level=n.normalTexture.scale)})),s.setNormalMapInversions(!this._babylonScene.useRightHandedSystem,this._babylonScene.useRightHandedSystem));let i,l=1;return n.occlusionTexture&&(n.occlusionTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/occlusionTexture`,n.occlusionTexture,e=>{e.name=`${o.name} (Occlusion)`,a=e})),null!=n.occlusionTexture.strength&&(l=n.occlusionTexture.strength)),n.emissiveTexture&&r.push(this.loadTextureInfoAsync(`${e}/emissiveTexture`,n.emissiveTexture,e=>{e.name=`${o.name} (Emissive)`,i=e})),Promise.all(r).then(()=>{a&&(s.ambientOcclusionTexture=a,s.ambientOcclusionTextureStrength=l),i&&(s.emissionColorTexture=i)})}loadMaterialAlphaProperties(e,n,o){if(0===this._pbrMaterialImpls.size)throw new Error(`${e}: Material type not supported`);const r=this._getOrCreateMaterialAdapter(o),s=r.baseColorTexture;switch(n.alphaMode||"OPAQUE"){case"OPAQUE":o.transparencyMode=t.Material.MATERIAL_OPAQUE,o.alpha=1;break;case"MASK":o.transparencyMode=t.Material.MATERIAL_ALPHATEST,r.alphaCutOff=null==n.alphaCutoff?.5:n.alphaCutoff,s&&(s.hasAlpha=!0,r.useAlphaFromBaseColorTexture=!0);break;case"BLEND":o.transparencyMode=t.Material.MATERIAL_ALPHABLEND,s&&(s.hasAlpha=!0,r.useAlphaFromBaseColorTexture=!0);break;default:throw new Error(`${e}/alphaMode: Invalid value (${n.alphaMode})`)}}loadTextureInfoAsync(e,t,n=()=>{}){const o=this._extensionsLoadTextureInfoAsync(e,t,n);if(o)return o;if(this.logOpen(`${e}`),t.texCoord>=6)throw new Error(`${e}/texCoord: Invalid value (${t.texCoord})`);const r=Pe.Get(`${e}/index`,this._gltf.textures,t.index);r._textureInfo=t;const s=this._loadTextureAsync(`/textures/${t.index}`,r,o=>{o.coordinatesIndex=t.texCoord||0,Ve.AddPointerMetadata(o,e),this._parent.onTextureLoadedObservable.notifyObservers(o),n(o)});return this.logClose(),s}_loadTextureAsync(e,t,n=()=>{}){const o=this._extensionsLoadTextureAsync(e,t,n);if(o)return o;this.logOpen(`${e} ${t.name||""}`);const r=null==t.sampler?Ve.DefaultSampler:Pe.Get(`${e}/sampler`,this._gltf.samplers,t.sampler),s=Pe.Get(`${e}/source`,this._gltf.images,t.source),a=this._createTextureAsync(e,r,s,n,void 0,!t._textureInfo.nonColorData);return this.logClose(),a}_createTextureAsync(e,n,o,r=()=>{},s,a){var i,l;const u=this._loadSampler(`/samplers/${n.index}`,n),c=new Array,d=new t.Deferred;this._babylonScene._blockEntityCollection=!!this._assetContainer;const h={noMipmap:u.noMipMaps,invertY:!1,samplingMode:u.samplingMode,onLoad:()=>{this._disposed||d.resolve()},onError:(t,n)=>{this._disposed||d.reject(new Error(`${e}: ${n&&n.message?n.message:t||"Failed to load texture"}`))},mimeType:null!==(i=o.mimeType)&&void 0!==i?i:t.GetMimeType(null!==(l=o.uri)&&void 0!==l?l:""),loaderOptions:s,useSRGBBuffer:!!a&&this._parent.useSRGBBuffers},m=new t.Texture(null,this._babylonScene,h);m._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,c.push(d.promise);const p=o.uri&&!t.IsBase64DataUrl(o.uri)?o.uri:void 0,f=null!=p?p:`${this._fileName}#image${o.index}`;if(c.push(this.loadImageAsync(`/images/${o.index}`,o).then(e=>{const t=`data:${this._uniqueRootUrl}${f}`;m.updateURL(t,e);const n=m.getInternalTexture();n&&(n.label=o.name)})),m.wrapU=u.wrapU,m.wrapV=u.wrapV,r(m),this._parent.useGltfTextureNames){const e=o.name||p||`image${o.index}`;m.name=e}return Promise.all(c).then(()=>m)}_loadSampler(e,t){return t._data||(t._data={noMipMaps:9728===t.minFilter||9729===t.minFilter,samplingMode:Ve._GetTextureSamplingMode(e,t),wrapU:Ve._GetTextureWrapMode(`${e}/wrapS`,t.wrapS),wrapV:Ve._GetTextureWrapMode(`${e}/wrapT`,t.wrapT)}),t._data}loadImageAsync(e,t){if(!t._data){if(this.logOpen(`${e} ${t.name||""}`),t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{const n=Pe.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${n.index}`,n)}this.logClose()}return t._data}loadUriAsync(e,n,o){var r;const s=this._extensionsLoadUriAsync(e,n,o);if(s)return s;if(!this._parent._isPreprocessUrlAsyncSet&&!Ve._ValidateUri(o))throw new Error(`${e}: '${o}' is invalid`);if(t.IsBase64DataUrl(o)){const n=new Uint8Array(t.DecodeBase64UrlToBinary(o));return this.log(`${e}: Decoded ${o.substring(0,64)}... (${n.length} bytes)`),Promise.resolve(n)}return this.log(`${e}: Loading ${o}`),this._parent.preprocessUrlAsync(this._rootUrl+o,null!==(r=this._rootUrl)&&void 0!==r?r:void 0).then(n=>new Promise((r,s)=>{this._parent._loadFile(this._babylonScene,n,t=>{this._disposed||(this.log(`${e}: Loaded ${o} (${t.byteLength} bytes)`),r(new Uint8Array(t)))},!0,n=>{s(new t.LoadFileError(`${e}: Failed to load '${o}'${n?": "+n.status+" "+n.statusText:""}`,n))})}))}static AddPointerMetadata(e,t){e.metadata=e.metadata||{};const n=e._internalMetadata=e._internalMetadata||{},o=n.gltf=n.gltf||{};(o.pointers=o.pointers||[]).push(t)}static _GetTextureWrapMode(e,n){switch(n=null==n?10497:n){case 33071:return t.Texture.CLAMP_ADDRESSMODE;case 33648:return t.Texture.MIRROR_ADDRESSMODE;case 10497:return t.Texture.WRAP_ADDRESSMODE;default:return t.Logger.Warn(`${e}: Invalid value (${n})`),t.Texture.WRAP_ADDRESSMODE}}static _GetTextureSamplingMode(e,n){const o=null==n.magFilter?9729:n.magFilter,r=null==n.minFilter?9987:n.minFilter;if(9729===o)switch(r){case 9728:return t.Texture.LINEAR_NEAREST;case 9729:return t.Texture.LINEAR_LINEAR;case 9984:return t.Texture.LINEAR_NEAREST_MIPNEAREST;case 9985:return t.Texture.LINEAR_LINEAR_MIPNEAREST;case 9986:return t.Texture.LINEAR_NEAREST_MIPLINEAR;case 9987:return t.Texture.LINEAR_LINEAR_MIPLINEAR;default:return t.Logger.Warn(`${e}/minFilter: Invalid value (${r})`),t.Texture.LINEAR_LINEAR_MIPLINEAR}else switch(9728!==o&&t.Logger.Warn(`${e}/magFilter: Invalid value (${o})`),r){case 9728:return t.Texture.NEAREST_NEAREST;case 9729:return t.Texture.NEAREST_LINEAR;case 9984:return t.Texture.NEAREST_NEAREST_MIPNEAREST;case 9985:return t.Texture.NEAREST_LINEAR_MIPNEAREST;case 9986:return t.Texture.NEAREST_NEAREST_MIPLINEAR;case 9987:return t.Texture.NEAREST_LINEAR_MIPLINEAR;default:return t.Logger.Warn(`${e}/minFilter: Invalid value (${r})`),t.Texture.NEAREST_NEAREST_MIPNEAREST}}static _GetTypedArrayConstructor(e,n){try{return t.GetTypedArrayConstructor(n)}catch(t){throw new Error(`${e}: ${t.message}`,{cause:t})}}static _GetTypedArray(e,n,o,r,s){const a=o.buffer;r=o.byteOffset+(r||0);const i=Ve._GetTypedArrayConstructor(`${e}/componentType`,n),l=t.VertexBufferGetTypeByteLength(n);return r%l!==0?(t.Logger.Warn(`${e}: Copying buffer as byte offset (${r}) is not a multiple of component type byte length (${l})`),new i(a.slice(r,r+s*l),0)):new i(a,r,s)}static _GetNumComponents(e,t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}throw new Error(`${e}: Invalid type (${t})`)}static _ValidateUri(e){return t.Tools.IsBase64(e)||-1===e.indexOf("..")}static _GetDrawMode(e,n){switch(null==n&&(n=4),n){case 0:return t.Material.PointListDrawMode;case 1:return t.Material.LineListDrawMode;case 2:return t.Material.LineLoopDrawMode;case 3:return t.Material.LineStripDrawMode;case 4:return t.Material.TriangleFillMode;case 5:return t.Material.TriangleStripDrawMode;case 6:return t.Material.TriangleFanDrawMode}throw new Error(`${e}: Invalid mesh primitive mode (${n})`)}_compileMaterialsAsync(){this._parent._startPerformanceCounter("Compile materials");const e=new Array;if(this._gltf.materials)for(const t of this._gltf.materials)if(t._data)for(const n in t._data){const o=t._data[n];for(const t of o.babylonMeshes){t.computeWorldMatrix(!0);const n=o.babylonMaterial;e.push(n.forceCompilationAsync(t)),e.push(n.forceCompilationAsync(t,{useInstances:!0})),this._parent.useClipPlane&&(e.push(n.forceCompilationAsync(t,{clipPlane:!0})),e.push(n.forceCompilationAsync(t,{clipPlane:!0,useInstances:!0})))}}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile materials")})}_compileShadowGeneratorsAsync(){this._parent._startPerformanceCounter("Compile shadow generators");const e=new Array,t=this._babylonScene.lights;for(const n of t){const t=n.getShadowGenerator();t&&e.push(t.forceCompilationAsync())}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile shadow generators")})}_forEachExtensions(e){for(const t of this._extensions)t.enabled&&e(t)}_applyExtensions(e,t,n){for(const o of this._extensions)if(o.enabled){const r=`${o.name}.${t}`,s=e;s._activeLoaderExtensionFunctions=s._activeLoaderExtensionFunctions||{};const a=s._activeLoaderExtensionFunctions;if(!a[r]){a[r]=!0;try{const e=n(o);if(e)return e}finally{delete a[r]}}}return null}_extensionsOnLoading(){this._forEachExtensions(e=>e.onLoading&&e.onLoading())}_extensionsOnReadyAsync(){return A(this,void 0,void 0,function*(){for(const e of this._extensions)e.enabled&&e.onReady&&(yield e.onReady())})}_extensionsLoadSceneAsync(e,t){return this._applyExtensions(t,"loadScene",n=>n.loadSceneAsync&&n.loadSceneAsync(e,t))}_extensionsLoadNodeAsync(e,t,n){return this._applyExtensions(t,"loadNode",o=>o.loadNodeAsync&&o.loadNodeAsync(e,t,n))}_extensionsLoadCameraAsync(e,t,n){return this._applyExtensions(t,"loadCamera",o=>o.loadCameraAsync&&o.loadCameraAsync(e,t,n))}_extensionsLoadVertexDataAsync(e,t,n){return this._applyExtensions(t,"loadVertexData",o=>o._loadVertexDataAsync&&o._loadVertexDataAsync(e,t,n))}_extensionsLoadMeshPrimitiveAsync(e,t,n,o,r,s){return this._applyExtensions(r,"loadMeshPrimitive",a=>a._loadMeshPrimitiveAsync&&a._loadMeshPrimitiveAsync(e,t,n,o,r,s))}_extensionsLoadMaterialAsync(e,t,n,o,r){return this._applyExtensions(t,"loadMaterial",s=>s._loadMaterialAsync&&s._loadMaterialAsync(e,t,n,o,r))}_extensionsCreateMaterial(e,t,n){return this._applyExtensions(t,"createMaterial",o=>o.createMaterial&&o.createMaterial(e,t,n))}_extensionsLoadMaterialPropertiesAsync(e,t,n){return this._applyExtensions(t,"loadMaterialProperties",o=>o.loadMaterialPropertiesAsync&&o.loadMaterialPropertiesAsync(e,t,n))}_extensionsLoadTextureInfoAsync(e,t,n){return this._applyExtensions(t,"loadTextureInfo",o=>o.loadTextureInfoAsync&&o.loadTextureInfoAsync(e,t,n))}_extensionsLoadTextureAsync(e,t,n){return this._applyExtensions(t,"loadTexture",o=>o._loadTextureAsync&&o._loadTextureAsync(e,t,n))}_extensionsLoadAnimationAsync(e,t){return this._applyExtensions(t,"loadAnimation",n=>n.loadAnimationAsync&&n.loadAnimationAsync(e,t))}_extensionsLoadAnimationChannelAsync(e,t,n,o,r){return this._applyExtensions(n,"loadAnimationChannel",s=>s._loadAnimationChannelAsync&&s._loadAnimationChannelAsync(e,t,n,o,r))}_extensionsLoadSkinAsync(e,t,n){return this._applyExtensions(n,"loadSkin",o=>o._loadSkinAsync&&o._loadSkinAsync(e,t,n))}_extensionsLoadUriAsync(e,t,n){return this._applyExtensions(t,"loadUri",o=>o._loadUriAsync&&o._loadUriAsync(e,t,n))}_extensionsLoadBufferViewAsync(e,t){return this._applyExtensions(t,"loadBufferView",n=>n.loadBufferViewAsync&&n.loadBufferViewAsync(e,t))}_extensionsLoadBufferAsync(e,t,n,o){return this._applyExtensions(t,"loadBuffer",r=>r.loadBufferAsync&&r.loadBufferAsync(e,t,n,o))}static LoadExtensionAsync(e,t,n,o){if(!t.extensions)return null;const r=t.extensions[n];return r?o(`${e}/extensions/${n}`,r):null}static LoadExtraAsync(e,t,n,o){if(!t.extras)return null;const r=t.extras[n];return r?o(`${e}/extras/${n}`,r):null}isExtensionUsed(e){return!!this._gltf.extensionsUsed&&-1!==this._gltf.extensionsUsed.indexOf(e)}logOpen(e){this._parent._logOpen(e)}logClose(){this._parent._logClose()}log(e){this._parent._log(e)}startPerformanceCounter(e){this._parent._startPerformanceCounter(e)}endPerformanceCounter(e){this._parent._endPerformanceCounter(e)}}Ve.DefaultSampler={index:-1};let $e=!1;function De(){$e||($e=!0,v._CreateGLTF2Loader=e=>new Ve(e))}const He="EXT_lights_image_based";class Ke{constructor(e){this.name=He,this._loader=e,this.enabled=this._loader.isExtensionUsed(He)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights}}loadSceneAsync(e,t){return Ve.LoadExtensionAsync(e,t,this.name,(n,o)=>A(this,void 0,void 0,function*(){this._loader._allMaterialsDirtyRequired=!0;const r=new Array;r.push(this._loader.loadSceneAsync(e,t)),this._loader.logOpen(`${n}`);const s=Pe.Get(`${n}/light`,this._lights,o.light);return r.push(this._loadLightAsync(`/extensions/${this.name}/lights/${o.light}`,s).then(e=>{this._loader.babylonScene.environmentTexture=e})),this._loader.logClose(),yield Promise.all(r).then(()=>{})}))}_loadLightAsync(e,n){if(!n._loaded){const o=new Array;this._loader.logOpen(`${e}`);const r=new Array(n.specularImages.length);for(let t=0;t<n.specularImages.length;t++){const s=n.specularImages[t];r[t]=new Array(s.length);for(let n=0;n<s.length;n++){const a=`${e}/specularImages/${t}/${n}`;this._loader.logOpen(`${a}`);const i=s[n],l=Pe.Get(a,this._loader.gltf.images,i);o.push(this._loader.loadImageAsync(`/images/${i}`,l).then(e=>{r[t][n]=e})),this._loader.logClose()}}this._loader.logClose(),n._loaded=Promise.all(o).then(()=>A(this,void 0,void 0,function*(){const o=new t.RawCubeTexture(this._loader.babylonScene,null,n.specularImageSize);if(o.name=n.name||"environment",n._babylonTexture=o,null!=n.intensity&&(o.level=n.intensity),n.rotation){let e=t.Quaternion.FromArray(n.rotation);this._loader.babylonScene.useRightHandedSystem||(e=t.Quaternion.Inverse(e)),t.Matrix.FromQuaternionToRef(e,o.getReflectionTextureMatrix())}if(!n.irradianceCoefficients)throw new Error(`${e}: Irradiance coefficients are missing`);const s=t.SphericalHarmonics.FromArray(n.irradianceCoefficients);s.scaleInPlace(n.intensity),s.convertIrradianceToLambertianRadiance();const a=t.SphericalPolynomial.FromHarmonics(s),i=(r.length-1)/Math.log2(n.specularImageSize);return yield o.updateRGBDAsync(r,a,i)}))}return n._loaded.then(()=>n._babylonTexture)}}let We=!1;function Ue(){We||(We=!0,ke(He),Le(He,!0,e=>new Ke(e)))}Ue();const je="EXT_mesh_gpu_instancing";class ze{constructor(e){this.name=je,this._loader=e,this.enabled=this._loader.isExtensionUsed(je)}dispose(){this._loader=null}loadNodeAsync(e,n,o){return Ve.LoadExtensionAsync(e,n,this.name,(e,r)=>A(this,void 0,void 0,function*(){this._loader._disableInstancedMesh++;const s=this._loader.loadNodeAsync(`/nodes/${n.index}`,n,o);if(this._loader._disableInstancedMesh--,!n._primitiveBabylonMeshes)return yield s;const a=new Array;let i=0;const l=t=>{if(null==r.attributes[t])return void a.push(Promise.resolve(null));const n=Pe.Get(`${e}/attributes/${t}`,this._loader.gltf.accessors,r.attributes[t]);if(a.push(this._loader._loadFloatAccessorAsync(`/accessors/${n.bufferView}`,n)),0===i)i=n.count;else if(i!==n.count)throw new Error(`${e}/attributes: Instance buffer accessors do not have the same count.`)};return l("TRANSLATION"),l("ROTATION"),l("SCALE"),l("_COLOR_0"),yield s.then(e=>A(this,void 0,void 0,function*(){const[o,r,s,l]=yield Promise.all(a),u=new Float32Array(16*i);t.TmpVectors.Vector3[0].copyFromFloats(0,0,0),t.TmpVectors.Quaternion[0].copyFromFloats(0,0,0,1),t.TmpVectors.Vector3[1].copyFromFloats(1,1,1);for(let e=0;e<i;++e)o&&t.Vector3.FromArrayToRef(o,3*e,t.TmpVectors.Vector3[0]),r&&t.Quaternion.FromArrayToRef(r,4*e,t.TmpVectors.Quaternion[0]),s&&t.Vector3.FromArrayToRef(s,3*e,t.TmpVectors.Vector3[1]),t.Matrix.ComposeToRef(t.TmpVectors.Vector3[1],t.TmpVectors.Quaternion[0],t.TmpVectors.Vector3[0],t.TmpVectors.Matrix[0]),t.TmpVectors.Matrix[0].copyToArray(u,16*e);for(const e of n._primitiveBabylonMeshes)e.thinInstanceSetBuffer("matrix",u,16,!0),l&&(l.length===3*i?e.thinInstanceSetBuffer("color",l,3,!0):l.length===4*i?e.thinInstanceSetBuffer("color",l,4,!0):t.Logger.Warn("Unexpected size of _COLOR_0 attribute for mesh "+e.name));return e}))}))}}let qe=!1;function Ye(){qe||(qe=!0,ke(je),Le(je,!0,e=>new ze(e)))}Ye();const Xe="EXT_meshopt_compression";class Qe{constructor(e){this.name=Xe,this.enabled=e.isExtensionUsed(Xe),this._loader=e}dispose(){this._loader=null}loadBufferViewAsync(e,n){return Ve.LoadExtensionAsync(e,n,this.name,(o,r)=>A(this,void 0,void 0,function*(){const o=n;if(o._meshOptData)return yield o._meshOptData;const s=Pe.Get(`${e}/buffer`,this._loader.gltf.buffers,r.buffer);return o._meshOptData=this._loader.loadBufferAsync(`/buffers/${s.index}`,s,r.byteOffset||0,r.byteLength).then(e=>A(this,void 0,void 0,function*(){return yield t.MeshoptCompression.Default.decodeGltfBufferAsync(e,r.count,r.byteStride,r.mode,r.filter)})),yield o._meshOptData}))}}let Ze=!1;function Je(){Ze||(Ze=!0,ke(Xe),Le(Xe,!0,e=>new Qe(e)))}Je();const et="EXT_texture_webp";class tt{constructor(e){this.name=et,this._loader=e,this.enabled=e.isExtensionUsed(et)}dispose(){this._loader=null}_loadTextureAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=null==t.sampler?Ve.DefaultSampler:Pe.Get(`${e}/sampler`,this._loader.gltf.samplers,t.sampler),a=Pe.Get(`${o}/source`,this._loader.gltf.images,r.source);return yield this._loader._createTextureAsync(e,s,a,e=>{n(e)},void 0,!t._textureInfo.nonColorData)}))}}let nt=!1;function ot(){nt||(nt=!0,ke(et),Le(et,!0,e=>new tt(e)))}ot();const rt="EXT_texture_avif";class st{constructor(e){this.name=rt,this._loader=e,this.enabled=e.isExtensionUsed(rt)}dispose(){this._loader=null}_loadTextureAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=null==t.sampler?Ve.DefaultSampler:Pe.Get(`${e}/sampler`,this._loader.gltf.samplers,t.sampler),a=Pe.Get(`${o}/source`,this._loader.gltf.images,r.source);return yield this._loader._createTextureAsync(e,s,a,e=>{n(e)},void 0,!t._textureInfo.nonColorData)}))}}let at=!1;function it(){at||(at=!0,ke(rt),Le(rt,!0,e=>new st(e)))}it();const lt="EXT_lights_ies";class ut{constructor(e){this.name=lt,this._loader=e,this.enabled=this._loader.isExtensionUsed(lt)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights,Pe.Assign(this._lights)}}loadNodeAsync(e,n,o){return Ve.LoadExtensionAsync(e,n,this.name,(r,s)=>A(this,void 0,void 0,function*(){let a,i;this._loader._allMaterialsDirtyRequired=!0;const l=yield this._loader.loadNodeAsync(e,n,e=>{i=Pe.Get(r,this._lights,s.light);const n=i.name||e.name;this._loader.babylonScene._blockEntityCollection=!!this._loader._assetContainer,a=new t.SpotLight(n,t.Vector3.Zero(),t.Vector3.Backward(),0,1,this._loader.babylonScene),a.angle=Math.PI/2,a.innerAngle=0,a._parentContainer=this._loader._assetContainer,this._loader.babylonScene._blockEntityCollection=!1,i._babylonLight=a,a.falloffType=t.Light.FALLOFF_GLTF,a.diffuse=s.color?t.Color3.FromArray(s.color):t.Color3.White(),a.intensity=s.multiplier||1,a.range=Number.MAX_VALUE,a.parent=e,this._loader._babylonLights.push(a),Ve.AddPointerMetadata(a,r),o(e)});let u;if(i.uri)u=yield this._loader.loadUriAsync(e,i,i.uri);else{const t=Pe.Get(`${e}/bufferView`,this._loader.gltf.bufferViews,i.bufferView);u=yield this._loader.loadBufferViewAsync(`/bufferViews/${t.index}`,t)}return a.iesProfileTexture=new t.Texture(a.name+"_iesProfile",this._loader.babylonScene,!0,!1,void 0,null,null,u,!0,void 0,void 0,void 0,void 0,".ies"),l}))}}let ct=!1;function dt(){ct||(ct=!0,ke(lt),Le(lt,!0,e=>new ut(e)))}dt();const ht="KHR_draco_mesh_compression";class mt{constructor(e){this.name=ht,this.useNormalizedFlagFromAccessor=!0,this._loader=e,this.enabled=t.DracoDecoder.DefaultAvailable&&this._loader.isExtensionUsed(ht)}dispose(){delete this.dracoDecoder,this._loader=null}_loadVertexDataAsync(e,n,o){return Ve.LoadExtensionAsync(e,n,this.name,(r,s)=>A(this,void 0,void 0,function*(){if(null!=n.mode&&4!==n.mode&&5!==n.mode)throw new Error(`${e}: Unsupported mode ${n.mode}`);const a={},i={},l=(e,t)=>{const r=s.attributes[e];if(null!=r&&(o._delayInfo=o._delayInfo||[],-1===o._delayInfo.indexOf(t)&&o._delayInfo.push(t),a[t]=r,this.useNormalizedFlagFromAccessor)){const o=Pe.TryGet(this._loader.gltf.accessors,n.attributes[e]);o&&(i[t]=o.normalized||!1)}};l("POSITION",t.VertexBuffer.PositionKind),l("NORMAL",t.VertexBuffer.NormalKind),l("TANGENT",t.VertexBuffer.TangentKind),l("TEXCOORD_0",t.VertexBuffer.UVKind),l("TEXCOORD_1",t.VertexBuffer.UV2Kind),l("TEXCOORD_2",t.VertexBuffer.UV3Kind),l("TEXCOORD_3",t.VertexBuffer.UV4Kind),l("TEXCOORD_4",t.VertexBuffer.UV5Kind),l("TEXCOORD_5",t.VertexBuffer.UV6Kind),l("JOINTS_0",t.VertexBuffer.MatricesIndicesKind),l("WEIGHTS_0",t.VertexBuffer.MatricesWeightsKind),l("COLOR_0",t.VertexBuffer.ColorKind);const u=Pe.Get(r,this._loader.gltf.bufferViews,s.bufferView);return u._dracoBabylonGeometry||(u._dracoBabylonGeometry=this._loader.loadBufferViewAsync(`/bufferViews/${u.index}`,u).then(r=>A(this,void 0,void 0,function*(){const s=this.dracoDecoder||t.DracoDecoder.Default,l=Pe.TryGet(this._loader.gltf.accessors,n.attributes.POSITION),u=this._loader.parent.alwaysComputeBoundingBox||o.skeleton||!l?null:Ge(l);return yield s._decodeMeshToGeometryForGltfAsync(o.name,this._loader.babylonScene,r,a,i,u).catch(t=>{throw new Error(`${e}: ${t.message}`)})}))),yield u._dracoBabylonGeometry}))}}let pt=!1;function ft(){pt||(pt=!0,ke(ht),Le(ht,!0,e=>new mt(e)))}ft();const _t="KHR_gaussian_splatting",gt=.28209479177387814,vt=[0,3,5,7];function yt(e){return e<=0?0:e>=255?255:e+.5|0}class bt{constructor(e){this.name=_t,this._loader=e,this.enabled=this._loader.isExtensionUsed(_t)}dispose(){this._loader=null}_loadMeshPrimitiveAsync(e,n,o,r,s,a){return Ve.LoadExtensionAsync(e,s,this.name,o=>A(this,void 0,void 0,function*(){if(null!=s.mode&&0!==s.mode)throw new Error(`${o}: Gaussian splatting primitives must use POINTS mode`);const r=this._loader,i=t=>{const n=s.attributes[t];if(null==n)return null;const o=Pe.Get(`${e}/attributes/${t}`,r.gltf.accessors,n);return r._loadFloatAccessorAsync(`/accessors/${o.index}`,o)},l=i("POSITION");if(!l)throw new Error(`${o}: Gaussian splatting primitive is missing the POSITION attribute`);let u=0;const c=[];for(let e=1;e<=3&&null!=s.attributes[`KHR_gaussian_splatting:SH_DEGREE_${e}_COEF_0`];e++){u=e;for(let t=0;t<vt[e];t++)c.push(`KHR_gaussian_splatting:SH_DEGREE_${e}_COEF_${t}`)}const d=r.babylonScene;d._blockEntityCollection=!!r._assetContainer;const h=new t.GaussianSplattingMesh(n,null,d);h._parentContainer=r._assetContainer,d._blockEntityCollection=!1,Ve.AddPointerMetadata(h,e),r.parent.onMeshLoadedObservable.notifyObservers(h),a(h);const m=d.getEngine().getCaps(),[p,f,_,g,v,y,...b]=yield Promise.all([l,i("KHR_gaussian_splatting:ROTATION"),i("KHR_gaussian_splatting:SCALE"),i("KHR_gaussian_splatting:OPACITY"),i("KHR_gaussian_splatting:SH_DEGREE_0_COEF_0"),i("COLOR_0"),...c.map(e=>i(e))]),T=p.length/3,x=y?y.length/T:0,A=new ArrayBuffer(32*T),R=new Float32Array(A),C=new Uint8Array(A);let w=null;if(u>0){const e=3*((u+1)*(u+1)-1),n=Math.ceil(e/16),o=m.maxTextureSize,r=Math.ceil(T/o);w=t.AllocateShBuffers(n,r*o*4*4)}for(let e=0;e<T;e++){const t=8*e,n=32*e,o=3*e;if(R[t+0]=p[o+0],R[t+1]=p[o+1],R[t+2]=p[o+2],R[t+3]=_?_[o+0]:1,R[t+4]=_?_[o+1]:1,R[t+5]=_?_[o+2]:1,v)C[n+24]=yt(255*(.5+gt*v[o+0])),C[n+25]=yt(255*(.5+gt*v[o+1])),C[n+26]=yt(255*(.5+gt*v[o+2]));else if(y){const t=e*x;C[n+24]=yt(255*y[t+0]),C[n+25]=yt(255*y[t+1]),C[n+26]=yt(255*y[t+2])}else C[n+24]=255,C[n+25]=255,C[n+26]=255;C[n+27]=g?yt(255*g[e]):y&&x>=4?yt(255*y[e*x+3]):255;const r=4*e,s=f?f[r+0]:0,a=f?f[r+1]:0,i=f?f[r+2]:0,l=f?f[r+3]:1;if(C[n+28]=yt(127.5*l+127.5),C[n+29]=yt(127.5*s+127.5),C[n+30]=yt(127.5*a+127.5),C[n+31]=yt(127.5*i+127.5),w){const t=16*e;for(let e=0;e<b.length;e++){const n=b[e];if(n)for(let r=0;r<3;r++){const s=3*e+r,a=15&s;w[s>>4][t+a]=yt(128*n[o+r]+128)}}}}return yield h.updateDataAsync(A,null!=w?w:void 0,void 0,u||void 0),h}))}}let Tt=!1;function xt(){Tt||(Tt=!0,ke(_t),Le(_t,!0,e=>new bt(e)))}xt();const At="KHR_lights_punctual";class Rt{constructor(e){this.name=At,this._loader=e,this.enabled=this._loader.isExtensionUsed(At)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights,Pe.Assign(this._lights)}}loadNodeAsync(e,n,o){return Ve.LoadExtensionAsync(e,n,this.name,(r,s)=>A(this,void 0,void 0,function*(){return this._loader._allMaterialsDirtyRequired=!0,yield this._loader.loadNodeAsync(e,n,e=>{let n;const a=Pe.Get(r,this._lights,s.light),i=a.name||e.name;switch(this._loader.babylonScene._blockEntityCollection=!!this._loader._assetContainer,a.type){case"directional":{const e=new t.DirectionalLight(i,t.Vector3.Backward(),this._loader.babylonScene);e.position.setAll(0),n=e;break}case"point":n=new t.PointLight(i,t.Vector3.Zero(),this._loader.babylonScene);break;case"spot":{const e=new t.SpotLight(i,t.Vector3.Zero(),t.Vector3.Backward(),0,1,this._loader.babylonScene);e.angle=2*(a.spot&&a.spot.outerConeAngle||Math.PI/4),e.innerAngle=2*(a.spot&&a.spot.innerConeAngle||0),n=e;break}default:throw this._loader.babylonScene._blockEntityCollection=!1,new Error(`${r}: Invalid light type (${a.type})`)}n._parentContainer=this._loader._assetContainer,this._loader.babylonScene._blockEntityCollection=!1,a._babylonLight=n,n.falloffType=t.Light.FALLOFF_GLTF,n.diffuse=a.color?t.Color3.FromArray(a.color):t.Color3.White(),n.intensity=null==a.intensity?1:a.intensity,n.range=null==a.range?Number.MAX_VALUE:a.range,n.parent=e,this._loader._babylonLights.push(n),Ve.AddPointerMetadata(n,r),o(e)})}))}}let Ct=!1;function wt(){Ct||(Ct=!0,ke(At),Le(At,!0,e=>new Rt(e)))}wt();const Ot="EXT_lights_area";class Mt{constructor(e){this.name=Ot,this._loader=e,this.enabled=this._loader.isExtensionUsed(Ot)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights,Pe.Assign(this._lights)}}loadNodeAsync(e,n,o){return Ve.LoadExtensionAsync(e,n,this.name,(r,s)=>A(this,void 0,void 0,function*(){return this._loader._allMaterialsDirtyRequired=!0,yield this._loader.loadNodeAsync(e,n,e=>{var n;let a;const i=Pe.Get(r,this._lights,s.light),l=i.name||e.name;this._loader.babylonScene._blockEntityCollection=!!this._loader._assetContainer;const u=void 0!==i.size?i.size:1;switch(i.type){case"rect":{const e=void 0!==(null===(n=i.rect)||void 0===n?void 0:n.aspect)?i.rect.aspect*u:u,o=u;a=new t.RectAreaLight(l,t.Vector3.Zero(),e,o,this._loader.babylonScene);break}case"disk":{const e=Math.sqrt(u*u*.25*Math.PI);a=new t.RectAreaLight(l,t.Vector3.Zero(),e,e,this._loader.babylonScene);break}default:throw this._loader.babylonScene._blockEntityCollection=!1,new Error(`${r}: Invalid area light type (${i.type})`)}a._parentContainer=this._loader._assetContainer,this._loader.babylonScene._blockEntityCollection=!1,i._babylonLight=a,a.falloffType=t.Light.FALLOFF_GLTF,a.diffuse=i.color?t.Color3.FromArray(i.color):t.Color3.White(),a.intensity=null==i.intensity?1:i.intensity;const c=new t.TransformNode(`${l}_orientation`,this._loader.babylonScene);c.rotationQuaternion=t.Quaternion.RotationAxis(t.Vector3.Up(),Math.PI),c.parent=e,a.parent=c,this._loader._babylonLights.push(a),Ve.AddPointerMetadata(a,r),o(e)})}))}}let Et=!1;function St(){Et||(Et=!0,ke(Ot),Le(Ot,!0,e=>new Mt(e)))}St();const It="KHR_materials_pbrSpecularGlossiness";class Nt{constructor(e){this.name=It,this.order=200,this._loader=e,this.enabled=this._loader.isExtensionUsed(It)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;return s.push(this._loader.loadMaterialBasePropertiesAsync(e,t,n)),s.push(this._loadSpecularGlossinessPropertiesAsync(o,r,n)),this._loader.loadMaterialAlphaProperties(e,t,n),yield Promise.all(s).then(()=>{})}))}_loadSpecularGlossinessPropertiesAsync(e,n,o){const r=this._loader._getOrCreateMaterialAdapter(o),s=new Array;return r.configureSpecularGlossiness(),n.diffuseFactor?(r.baseColor=t.Color3.FromArray(n.diffuseFactor),o.alpha=n.diffuseFactor[3]):r.baseColor=t.Color3.White(),r.specularColor=n.specularFactor?t.Color3.FromArray(n.specularFactor):t.Color3.White(),r.glossiness=null==n.glossinessFactor?1:n.glossinessFactor,n.diffuseTexture&&s.push(this._loader.loadTextureInfoAsync(`${e}/diffuseTexture`,n.diffuseTexture,e=>{e.name=`${o.name} (Diffuse)`,r.baseColorTexture=e})),n.specularGlossinessTexture&&s.push(this._loader.loadTextureInfoAsync(`${e}/specularGlossinessTexture`,n.specularGlossinessTexture,e=>{e.name=`${o.name} (Specular Glossiness)`,r.specularColorTexture=e})),Promise.all(s).then(()=>{})}}let Lt=!1;function kt(){Lt||(Lt=!0,ke(It),Le(It,!0,e=>new Nt(e)))}kt();const Ft="KHR_materials_unlit";class Bt{constructor(e){this.name=Ft,this.order=210,this._loader=e,this.enabled=this._loader.isExtensionUsed(Ft)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,()=>A(this,void 0,void 0,function*(){return yield this._loadUnlitPropertiesAsync(e,t,n)}))}_loadUnlitPropertiesAsync(e,n,o){const r=this._loader._getOrCreateMaterialAdapter(o),s=new Array,a=n.pbrMetallicRoughness;return a&&(a.baseColorFactor&&(r.baseColor=t.Color3.FromArray(a.baseColorFactor),r.geometryOpacity=a.baseColorFactor[3]),a.baseColorTexture&&s.push(this._loader.loadTextureInfoAsync(`${e}/baseColorTexture`,a.baseColorTexture,e=>{e.name=`${o.name} (Base Color)`,r.baseColorTexture=e}))),r.isUnlit=!0,n.doubleSided&&(r.backFaceCulling=!1,r.twoSidedLighting=!0),this._loader.loadMaterialAlphaProperties(e,n,o),Promise.all(s).then(()=>{})}}let Pt=!1;function Gt(){Pt||(Pt=!0,ke(Ft),Le(Ft,!0,e=>new Bt(e)))}Gt();const Vt="KHR_materials_clearcoat";class $t{constructor(e){this.name=Vt,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(Vt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadClearCoatPropertiesAsync(o,r,n)),yield Promise.all(s)}))}_loadClearCoatPropertiesAsync(e,t,n){const o=this._loader._getOrCreateMaterialAdapter(n),r=new Array;return o.configureCoat(),o.coatWeight=void 0!==t.clearcoatFactor?t.clearcoatFactor:0,o.coatRoughness=void 0!==t.clearcoatRoughnessFactor?t.clearcoatRoughnessFactor:0,t.clearcoatTexture&&r.push(this._loader.loadTextureInfoAsync(`${e}/clearcoatTexture`,t.clearcoatTexture,e=>{e.name=`${n.name} (ClearCoat)`,o.coatWeightTexture=e})),t.clearcoatRoughnessTexture&&(t.clearcoatRoughnessTexture.nonColorData=!0,r.push(this._loader.loadTextureInfoAsync(`${e}/clearcoatRoughnessTexture`,t.clearcoatRoughnessTexture,e=>{e.name=`${n.name} (ClearCoat Roughness)`,o.coatRoughnessTexture=e}))),t.clearcoatNormalTexture&&(t.clearcoatNormalTexture.nonColorData=!0,r.push(this._loader.loadTextureInfoAsync(`${e}/clearcoatNormalTexture`,t.clearcoatNormalTexture,e=>{var r;e.name=`${n.name} (ClearCoat Normal)`,o.geometryCoatNormalTexture=e,null!=(null===(r=t.clearcoatNormalTexture)||void 0===r?void 0:r.scale)&&(o.geometryCoatNormalTextureScale=t.clearcoatNormalTexture.scale)})),o.setNormalMapInversions(!n.getScene().useRightHandedSystem,n.getScene().useRightHandedSystem)),Promise.all(r).then(()=>{})}}let Dt=!1;function Ht(){Dt||(Dt=!0,ke(Vt),Le(Vt,!0,e=>new $t(e)))}Ht();const Kt="KHR_materials_coat";class Wt{constructor(e){this.name=Kt,this.order=191,this.useOpenPBR=!1,this._loader=e,this.enabled=this._loader.isExtensionUsed(Kt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),t.extensions&&t.extensions.KHR_materials_openpbr&&(this.useOpenPBR=!0),s.push(this._loadCoatPropertiesAsync(o,r,n)),yield Promise.all(s)}))}_loadCoatPropertiesAsync(e,n,o){var r,s;const a=this._loader._getOrCreateMaterialAdapter(o),i=new Array;a.configureCoat(),a.coatWeight=void 0!==n.coatFactor?n.coatFactor:0,a.coatRoughness=void 0!==n.coatRoughnessFactor?n.coatRoughnessFactor:0,n.coatTexture&&i.push(this._loader.loadTextureInfoAsync(`${e}/coatTexture`,n.coatTexture,e=>{e.name=`${o.name} (Coat)`,a.coatWeightTexture=e})),n.coatRoughnessTexture&&(n.coatRoughnessTexture.nonColorData=!0,i.push(this._loader.loadTextureInfoAsync(`${e}/coatRoughnessTexture`,n.coatRoughnessTexture,e=>{e.name=`${o.name} (Coat Roughness)`,a.coatRoughnessTexture=e}))),n.coatNormalTexture&&(n.coatNormalTexture.nonColorData=!0,i.push(this._loader.loadTextureInfoAsync(`${e}/coatNormalTexture`,n.coatNormalTexture,e=>{var t;e.name=`${o.name} (Coat Normal)`,a.geometryCoatNormalTexture=e,null!=(null===(t=n.coatNormalTexture)||void 0===t?void 0:t.scale)&&(a.geometryCoatNormalTextureScale=n.coatNormalTexture.scale)})),a.setNormalMapInversions(!o.getScene().useRightHandedSystem,o.getScene().useRightHandedSystem)),a.coatDarkening=void 0!==n.coatDarkeningFactor?n.coatDarkeningFactor:1,a.coatIor=void 0!==n.coatIor?n.coatIor:1.5;const l=t.Color3.White();void 0!==n.coatColorFactor&&l.fromArray(n.coatColorFactor),a.coatColor=l,n.coatColorTexture&&i.push(this._loader.loadTextureInfoAsync(`${e}/coatColorTexture`,n.coatColorTexture,e=>{e.name=`${o.name} (Coat Color)`,a.coatColorTexture=e}));const u=null!==(r=n.coatAnisotropyStrength)&&void 0!==r?r:0,c=null!==(s=n.coatAnisotropyRotation)&&void 0!==s?s:0;return a.coatRoughnessAnisotropy=u,a.geometryCoatTangentAngle=c,this.useOpenPBR||a.configureGltfStyleAnisotropy(!0),n.coatAnisotropyTexture&&(n.coatAnisotropyTexture.nonColorData=!0,i.push(this._loader.loadTextureInfoAsync(`${e}/coatAnisotropyTexture`,n.coatAnisotropyTexture,e=>{e.name=`${o.name} (Coat Anisotropy)`,a.geometryCoatTangentTexture=e}))),Promise.all(i).then(()=>{})}}let Ut=!1;function jt(){Ut||(Ut=!0,ke(Kt),Le(Kt,!0,e=>new Wt(e)))}jt();const zt="KHR_materials_iridescence";class qt{constructor(e){this.name=zt,this.order=195,this._loader=e,this.enabled=this._loader.isExtensionUsed(zt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;return s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadIridescencePropertiesAsync(o,r,n)),yield Promise.all(s).then(()=>{})}))}_loadIridescencePropertiesAsync(e,t,n){var o,r,s,a,i;const l=this._loader._getOrCreateMaterialAdapter(n),u=new Array;return l.thinFilmWeight=null!==(o=t.iridescenceFactor)&&void 0!==o?o:0,l.thinFilmIor=null!==(s=null!==(r=t.iridescenceIor)&&void 0!==r?r:t.iridescenceIOR)&&void 0!==s?s:1.3,l.thinFilmThicknessMinimum=null!==(a=t.iridescenceThicknessMinimum)&&void 0!==a?a:100,l.thinFilmThicknessMaximum=null!==(i=t.iridescenceThicknessMaximum)&&void 0!==i?i:400,t.iridescenceTexture&&u.push(this._loader.loadTextureInfoAsync(`${e}/iridescenceTexture`,t.iridescenceTexture,e=>{e.name=`${n.name} (Iridescence)`,l.thinFilmWeightTexture=e})),t.iridescenceThicknessTexture&&u.push(this._loader.loadTextureInfoAsync(`${e}/iridescenceThicknessTexture`,t.iridescenceThicknessTexture,e=>{e.name=`${n.name} (Iridescence Thickness)`,l.thinFilmThicknessTexture=e})),Promise.all(u).then(()=>{})}}let Yt=!1;function Xt(){Yt||(Yt=!0,ke(zt),Le(zt,!0,e=>new qt(e)))}Xt();const Qt="KHR_materials_anisotropy";class Zt{constructor(e){this.name=Qt,this.order=195,this._loader=e,this.enabled=this._loader.isExtensionUsed(Qt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadAnisotropyPropertiesAsync(o,r,n)),yield Promise.all(s)}))}_loadAnisotropyPropertiesAsync(e,t,n){return A(this,void 0,void 0,function*(){var o,r,s;const a=this._loader._getOrCreateMaterialAdapter(n),i=new Array,l=null!==(o=t.anisotropyStrength)&&void 0!==o?o:0,u=null!==(r=t.anisotropyRotation)&&void 0!==r?r:0;a.specularRoughnessAnisotropy=l,a.geometryTangentAngle=u;const c=null!==(s=t.extensions)&&void 0!==s?s:{};c.EXT_materials_anisotropy_openpbr&&c.EXT_materials_anisotropy_openpbr.openPbrAnisotropyEnabled||a.configureGltfStyleAnisotropy(!0),t.anisotropyTexture&&(t.anisotropyTexture.nonColorData=!0,i.push(this._loader.loadTextureInfoAsync(`${e}/anisotropyTexture`,t.anisotropyTexture,e=>{e.name=`${n.name} (Anisotropy Intensity)`,a.geometryTangentTexture=e}))),yield Promise.all(i)})}}let Jt=!1;function en(){Jt||(Jt=!0,ke(Qt),Le(Qt,!0,e=>new Zt(e)))}en();const tn="KHR_materials_emissive_strength";class nn{constructor(e){this.name=tn,this.order=170,this._loader=e,this.enabled=this._loader.isExtensionUsed(tn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){return yield this._loader.loadMaterialPropertiesAsync(e,t,n),this._loadEmissiveProperties(o,r,n),yield Promise.resolve()}))}_loadEmissiveProperties(e,t,n){void 0!==t.emissiveStrength&&(this._loader._getOrCreateMaterialAdapter(n).emissionLuminance=t.emissiveStrength)}}let on=!1;function rn(){on||(on=!0,ke(tn),Le(tn,!0,e=>new nn(e)))}rn();const sn="KHR_materials_sheen";class an{constructor(e){this.name=sn,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(sn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;return s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadSheenPropertiesAsync(o,r,n)),yield Promise.all(s).then(()=>{})}))}_loadSheenPropertiesAsync(e,n,o){const r=this._loader._getOrCreateMaterialAdapter(o),s=new Array;r.configureFuzz();const a=void 0!==n.sheenColorFactor?t.Color3.FromArray(n.sheenColorFactor):t.Color3.Black(),i=void 0!==n.sheenRoughnessFactor?n.sheenRoughnessFactor:0;return r.fuzzWeight=1,r.fuzzColor=a,r.fuzzRoughness=i,n.sheenColorTexture&&s.push(this._loader.loadTextureInfoAsync(`${e}/sheenColorTexture`,n.sheenColorTexture,e=>{e.name=`${o.name} (Sheen Color)`,r.fuzzColorTexture=e})),n.sheenRoughnessTexture&&(n.sheenRoughnessTexture.nonColorData=!0,s.push(this._loader.loadTextureInfoAsync(`${e}/sheenRoughnessTexture`,n.sheenRoughnessTexture,e=>{e.name=`${o.name} (Sheen Roughness)`,r.fuzzRoughnessTexture=e}))),Promise.all(s).then(()=>{})}}let ln=!1;function un(){ln||(ln=!0,ke(sn),Le(sn,!0,e=>new an(e)))}un();const cn="KHR_materials_fuzz";class dn{constructor(e){this.name=cn,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(cn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;return s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadFuzzPropertiesAsync(o,r,n)),yield Promise.all(s).then(()=>{})}))}_loadFuzzPropertiesAsync(e,n,o){const r=this._loader._getOrCreateMaterialAdapter(o),s=new Array;return r.configureFuzz(),r.fuzzWeight=void 0!==n.fuzzFactor?n.fuzzFactor:0,r.fuzzColor=void 0!==n.fuzzColorFactor?t.Color3.FromArray(n.fuzzColorFactor):t.Color3.White(),r.fuzzRoughness=void 0!==n.fuzzRoughnessFactor?n.fuzzRoughnessFactor:.5,n.fuzzTexture&&s.push(this._loader.loadTextureInfoAsync(`${e}/fuzzTexture`,n.fuzzTexture,e=>{e.name=`${o.name} (Fuzz)`,r.fuzzWeightTexture=e})),n.fuzzColorTexture&&s.push(this._loader.loadTextureInfoAsync(`${e}/fuzzColorTexture`,n.fuzzColorTexture,e=>{e.name=`${o.name} (Fuzz Color)`,r.fuzzColorTexture=e})),n.fuzzRoughnessTexture&&(n.fuzzRoughnessTexture.nonColorData=!0,s.push(this._loader.loadTextureInfoAsync(`${e}/fuzzRoughnessTexture`,n.fuzzRoughnessTexture,e=>{e.name=`${o.name} (Fuzz Roughness)`,r.fuzzRoughnessTexture=e}))),Promise.all(s).then(()=>{})}}let hn=!1;function mn(){hn||(hn=!0,ke(cn),Le(cn,!0,e=>new dn(e)))}mn();const pn="KHR_materials_specular";class fn{constructor(e){this.name=pn,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(pn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadSpecularPropertiesAsync(o,r,n));const a=this._loader._getOrCreateMaterialAdapter(n);return r.extensions&&r.extensions.EXT_materials_specular_edge_color&&r.extensions.EXT_materials_specular_edge_color.specularEdgeColorEnabled&&a.enableSpecularEdgeColor(!0),yield Promise.all(s).then(()=>{})}))}_loadSpecularPropertiesAsync(e,n,o){var r;const s=this._loader._getOrCreateMaterialAdapter(o),a=new Array;return s.specularWeight=null!==(r=n.specularFactor)&&void 0!==r?r:1,s.specularColor=void 0!==n.specularColorFactor?t.Color3.FromArray(n.specularColorFactor):new t.Color3(1,1,1),n.specularTexture&&(n.specularTexture.nonColorData=!0,a.push(this._loader.loadTextureInfoAsync(`${e}/specularTexture`,n.specularTexture,e=>{e.name=`${o.name} (Specular)`,s.specularWeightTexture=e}))),n.specularColorTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/specularColorTexture`,n.specularColorTexture,e=>{e.name=`${o.name} (Specular Color)`,s.specularColorTexture=e})),Promise.all(a).then(()=>{})}}let _n=!1;function gn(){_n||(_n=!0,ke(pn),Le(pn,!0,e=>new fn(e)))}gn();const vn="KHR_materials_ior";class yn{constructor(e){this.name=vn,this.order=180,this._loader=e,this.enabled=this._loader.isExtensionUsed(vn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;return s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadIorPropertiesAsync(o,r,n)),yield Promise.all(s).then(()=>{})}))}_loadIorPropertiesAsync(e,t,n){const o=this._loader._getOrCreateMaterialAdapter(n),r=void 0!==t.ior?t.ior:yn._DEFAULT_IOR;return o.specularIor=r,Promise.resolve()}}yn._DEFAULT_IOR=1.5;let bn=!1;function Tn(){bn||(bn=!0,ke(vn),Le(vn,!0,e=>new yn(e)))}Tn();const xn="KHR_materials_variants";class An{constructor(e){this.name=xn,this._loader=e,this.enabled=this._loader.isExtensionUsed(xn)&&!this._loader.parent.skipMaterials}dispose(){this._loader=null}static GetAvailableVariants(e){const t=this._GetExtensionMetadata(e);return t?Object.keys(t.variants):[]}getAvailableVariants(e){return An.GetAvailableVariants(e)}static SelectVariant(e,t){const n=this._GetExtensionMetadata(e);if(!n)throw new Error(`Cannot select variant on a glTF mesh that does not have the ${xn} extension`);const o=e=>{const t=n.variants[e];if(t)for(const e of t)e.mesh.material=e.material};if(t instanceof Array)for(const e of t)o(e);else o(t);n.lastSelected=t}selectVariant(e,t){An.SelectVariant(e,t)}static Reset(e){const t=this._GetExtensionMetadata(e);if(!t)throw new Error(`Cannot reset on a glTF mesh that does not have the ${xn} extension`);for(const e of t.original)e.mesh.material=e.material;t.lastSelected=null}reset(e){An.Reset(e)}static GetLastSelectedVariant(e){const t=this._GetExtensionMetadata(e);if(!t)throw new Error(`Cannot get the last selected variant on a glTF mesh that does not have the ${xn} extension`);return t.lastSelected}getLastSelectedVariant(e){return An.GetLastSelectedVariant(e)}static _GetExtensionMetadata(e){var t,n;return(null===(n=null===(t=null==e?void 0:e._internalMetadata)||void 0===t?void 0:t.gltf)||void 0===n?void 0:n[xn])||null}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._variants=t.variants}}onReady(){var e;const t=this._loader.rootBabylonMesh;if(t){const n=this._loader.parent.extensionOptions[xn];(null==n?void 0:n.defaultVariant)&&An.SelectVariant(t,n.defaultVariant),null===(e=null==n?void 0:n.onLoaded)||void 0===e||e.call(n,{get variants(){return An.GetAvailableVariants(t)},get selectedVariant(){const e=An.GetLastSelectedVariant(t);return e?Array.isArray(e)?e[0]:e:An.GetAvailableVariants(t)[0]},set selectedVariant(e){An.SelectVariant(t,e)}})}}_loadMeshPrimitiveAsync(e,n,o,r,s,a){return Ve.LoadExtensionAsync(e,s,this.name,(i,l)=>A(this,void 0,void 0,function*(){const u=new Array;return u.push(this._loader._loadMeshPrimitiveAsync(e,n,o,r,s,n=>{if(a(n),n instanceof t.Mesh){const t=Ve._GetDrawMode(e,s.mode),o=this._loader.rootBabylonMesh,r=o?o._internalMetadata=o._internalMetadata||{}:{},a=r.gltf=r.gltf||{},c=a[xn]=a[xn]||{lastSelected:null,original:[],variants:{}};c.original.push({mesh:n,material:n.material});for(let e=0;e<l.mappings.length;++e){const r=l.mappings[e],s=Pe.Get(`${i}/mappings/${e}/material`,this._loader.gltf.materials,r.material);u.push(this._loader._loadMaterialAsync(`#/materials/${r.material}`,s,n,t,e=>{for(let t=0;t<r.variants.length;++t){const s=r.variants[t],a=Pe.Get(`/extensions/${xn}/variants/${s}`,this._variants,s);c.variants[a.name]=c.variants[a.name]||[],c.variants[a.name].push({mesh:n,material:e}),n.onClonedObservable.add(e=>{const t=e;let r,s=t;do{if(s=s.parent,!s)return;r=An._GetExtensionMetadata(s)}while(null===r);if(o&&r===An._GetExtensionMetadata(o)){s._internalMetadata={};for(const e in o._internalMetadata)s._internalMetadata[e]=o._internalMetadata[e];s._internalMetadata.gltf=[];for(const e in o._internalMetadata.gltf)s._internalMetadata.gltf[e]=o._internalMetadata.gltf[e];s._internalMetadata.gltf[xn]={lastSelected:null,original:[],variants:{}};for(const e of r.original)s._internalMetadata.gltf[xn].original.push({mesh:e.mesh,material:e.material});for(const e in r.variants)if(Object.prototype.hasOwnProperty.call(r.variants,e)){s._internalMetadata.gltf[xn].variants[e]=[];for(const t of r.variants[e])s._internalMetadata.gltf[xn].variants[e].push({mesh:t.mesh,material:t.material})}r=s._internalMetadata.gltf[xn]}for(const e of r.original)e.mesh===n&&(e.mesh=t);for(const e of r.variants[a.name])e.mesh===n&&(e.mesh=t)})}}))}}})),yield Promise.all(u).then(([e])=>e)}))}}let Rn=!1;function Cn(){Rn||(Rn=!0,ke(xn),Le(xn,!0,e=>new An(e)))}Cn();class wn{static _GetDefaultOptions(){return{renderSize:1024,samples:4,lodGenerationScale:1,lodGenerationOffset:-4,renderTargetTextureType:t.Constants.TEXTURETYPE_HALF_FLOAT,generateMipmaps:!0}}constructor(e,n){this._opaqueRenderTarget=null,this._opaqueMeshesCache=[],this._transparentMeshesCache=[],this._materialObservers={},this._newMeshObserver=null,this._removedMeshObserver=null,this._disposed=!1,this._materialImpls=[],this._adapterCache=new WeakMap,this._translucentMaterialIndices=new Map,this._opaqueOnlySubMeshes=new Map,this._savedSubMeshes=new Map,this._options=Object.assign(Object.assign({},wn._GetDefaultOptions()),e),this._scene=n,this._scene._transmissionHelper=this,this.onErrorObservable=new t.Observable,this._scene.onDisposeObservable.addOnce(()=>{this.dispose()}),this._parseScene(),this._setupRenderTargets()}addMaterialImpl(e){this._materialImpls.some(t=>t.materialClass===e.materialClass)||this._materialImpls.push(e)}updateOptions(e){if(!Object.keys(e).filter(t=>this._options[t]!==e[t]).length)return;const t=Object.assign(Object.assign({},this._options),e),n=this._options;this._options=t,t.renderSize===n.renderSize&&t.renderTargetTextureType===n.renderTargetTextureType&&t.generateMipmaps===n.generateMipmaps&&this._opaqueRenderTarget?(this._opaqueRenderTarget.samples=t.samples,this._opaqueRenderTarget.lodGenerationScale=t.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=t.lodGenerationOffset):this._setupRenderTargets()}getOpaqueTarget(){return this._opaqueRenderTarget}_getOrCreateAdapter(e){let t=this._adapterCache.get(e);if(!t)for(const n of this._materialImpls)if(e instanceof n.materialClass){t=new n.adapterClass(e),this._adapterCache.set(e,t);break}return t}_classifyMeshMaterials(e){const n=e.material;if(!n)return"opaque";if(!(n instanceof t.MultiMaterial)){const e=this._getOrCreateAdapter(n);return e&&e.isTranslucent()?(e.refractionBackgroundTexture=this._opaqueRenderTarget,"transparent"):"opaque"}let o=!1,r=!1;const s=new Set;for(let e=0;e<n.subMaterials.length;e++){const t=n.subMaterials[e];if(!t){r=!0;continue}const a=this._getOrCreateAdapter(t);a&&a.isTranslucent()?(a.refractionBackgroundTexture=this._opaqueRenderTarget,o=!0,s.add(e)):r=!0}return o&&r?(this._translucentMaterialIndices.set(e,s),this._rebuildOpaqueOnlySubMeshes(e,s),"mixed"):(this._translucentMaterialIndices.delete(e),this._opaqueOnlySubMeshes.delete(e),o?"transparent":"opaque")}_rebuildOpaqueOnlySubMeshes(e,t){e.subMeshes&&this._opaqueOnlySubMeshes.set(e,e.subMeshes.filter(e=>!t.has(e.materialIndex)))}_addMesh(e){this._materialObservers[e.uniqueId]=e.onMaterialChangedObservable.add(this._onMeshMaterialChanged.bind(this)),t.Tools.SetImmediate(()=>{!this._disposed&&e.material&&("transparent"===this._classifyMeshMaterials(e)?-1===this._transparentMeshesCache.indexOf(e)&&this._transparentMeshesCache.push(e):-1===this._opaqueMeshesCache.indexOf(e)&&this._opaqueMeshesCache.push(e))})}_removeMesh(e){e.onMaterialChangedObservable.remove(this._materialObservers[e.uniqueId]),delete this._materialObservers[e.uniqueId];let t=this._transparentMeshesCache.indexOf(e);-1!==t&&this._transparentMeshesCache.splice(t,1),t=this._opaqueMeshesCache.indexOf(e),-1!==t&&this._opaqueMeshesCache.splice(t,1),this._translucentMaterialIndices.delete(e),this._opaqueOnlySubMeshes.delete(e)}_parseScene(){this._scene.meshes.forEach(this._addMesh.bind(this)),this._newMeshObserver=this._scene.onNewMeshAddedObservable.add(this._addMesh.bind(this)),this._removedMeshObserver=this._scene.onMeshRemovedObservable.add(this._removeMesh.bind(this))}_onMeshMaterialChanged(e){const t=this._transparentMeshesCache.indexOf(e),n=this._opaqueMeshesCache.indexOf(e);"transparent"===this._classifyMeshMaterials(e)?-1!==n?(this._opaqueMeshesCache.splice(n,1),this._transparentMeshesCache.push(e)):-1===t&&this._transparentMeshesCache.push(e):-1!==t?(this._transparentMeshesCache.splice(t,1),this._opaqueMeshesCache.push(e)):-1===n&&this._opaqueMeshesCache.push(e)}_isRenderTargetValid(){var e;return null!==(null===(e=this._opaqueRenderTarget)||void 0===e?void 0:e.getInternalTexture())}_setupRenderTargets(){var e,n;let o;this._opaqueRenderTarget&&this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=new t.RenderTargetTexture("opaqueSceneTexture",this._options.renderSize,this._scene,this._options.generateMipmaps,void 0,this._options.renderTargetTextureType),this._opaqueRenderTarget.ignoreCameraViewport=!0,this._opaqueRenderTarget.renderList=this._opaqueMeshesCache,this._opaqueRenderTarget.forceLayerMaskCheck=!0,this._opaqueRenderTarget.clearColor=null!==(n=null===(e=this._options.clearColor)||void 0===e?void 0:e.clone())&&void 0!==n?n:this._scene.clearColor.clone(),this._opaqueRenderTarget.clearColor.a=0,this._opaqueRenderTarget.gammaSpace=!1,this._opaqueRenderTarget.lodGenerationScale=this._options.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=this._options.lodGenerationOffset,this._opaqueRenderTarget.samples=this._options.samples,this._opaqueRenderTarget.renderSprites=!0,this._opaqueRenderTarget.renderParticles=!0,this._opaqueRenderTarget.disableImageProcessing=!0,this._opaqueRenderTarget.onBeforeBindObservable.add(e=>{o=this._scene.environmentIntensity,this._scene.environmentIntensity=1,this._options.clearColor?e.clearColor.copyFrom(this._options.clearColor):this._scene.clearColor.toLinearSpaceToRef(e.clearColor,this._scene.getEngine().useExactSrgbConversions),e.clearColor.a=0;const t=this._opaqueOnlySubMeshes.entries();for(let e=t.next();!e.done;e=t.next()){const t=e.value[0],n=e.value[1];t.subMeshes&&(this._savedSubMeshes.set(t,t.subMeshes),t.subMeshes=n)}}),this._opaqueRenderTarget.onAfterUnbindObservable.add(()=>{this._scene.environmentIntensity=o;const e=this._savedSubMeshes.entries();for(let t=e.next();!t.done;t=e.next())t.value[0].subMeshes=t.value[1];this._savedSubMeshes.clear()});for(const e of this._transparentMeshesCache)e.material&&this._classifyMeshMaterials(e);const r=this._translucentMaterialIndices.entries();for(let e=r.next();!e.done;e=r.next()){const t=e.value[0];t.material&&this._classifyMeshMaterials(t)}}dispose(){var e,t;this._disposed=!0,null===(e=this._newMeshObserver)||void 0===e||e.remove(),null===(t=this._removedMeshObserver)||void 0===t||t.remove(),this._newMeshObserver=null,this._removedMeshObserver=null;const n=[...this._transparentMeshesCache,...this._opaqueMeshesCache];for(const e of n){const t=this._materialObservers[e.uniqueId];t&&(t.remove(),delete this._materialObservers[e.uniqueId])}for(const e of this._scene.meshes){const t=this._materialObservers[e.uniqueId];t&&(t.remove(),delete this._materialObservers[e.uniqueId])}this._materialObservers={},this._scene._transmissionHelper=void 0,this._opaqueRenderTarget&&(this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=null),this._transparentMeshesCache=[],this._opaqueMeshesCache=[],this._translucentMaterialIndices.clear(),this._opaqueOnlySubMeshes.clear(),this._savedSubMeshes.clear()}}function On(e,t){if(e.parent.dontUseTransmissionHelper)return;const n=t.getScene()._transmissionHelper,o=null!=n?n:new wn({},t.getScene());for(const t of Array.from(e._pbrMaterialImpls.values()))o.addMaterialImpl(t);n&&!n._isRenderTargetValid()&&n._setupRenderTargets()}const Mn="KHR_materials_transmission";class En{constructor(e){this.name=Mn,this.order=175,this._loader=e,this.enabled=this._loader.isExtensionUsed(Mn),this.enabled&&(e.parent.transparencyAsCoverage=!0)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;return s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadTransparentPropertiesAsync(o,t,n,r)),yield Promise.all(s).then(()=>{})}))}_loadTransparentPropertiesAsync(e,t,n,o){const r=this._loader._getOrCreateMaterialAdapter(n),s=void 0!==o.transmissionFactor?o.transmissionFactor:0;if(0===s||!r)return Promise.resolve();r.configureTransmission(),r.transmissionWeight=s,s>0&&On(this._loader,n);let a=Promise.resolve(null);return o.transmissionTexture&&(o.transmissionTexture.nonColorData=!0,a=this._loader.loadTextureInfoAsync(`${e}/transmissionTexture`,o.transmissionTexture,e=>{e.name=`${n.name} (Transmission)`,r.transmissionWeightTexture=e})),a.then(()=>{})}}let Sn=!1;function In(){Sn||(Sn=!0,ke(Mn),Le(Mn,!0,e=>new En(e)))}In();const Nn="KHR_materials_diffuse_transmission";class Ln{constructor(e){this.name=Nn,this.order=174,this._loader=e,this.enabled=this._loader.isExtensionUsed(Nn),this.enabled&&(e.parent.transparencyAsCoverage=!0)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;return s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadTranslucentPropertiesAsync(o,t,n,r)),yield Promise.all(s).then(()=>{})}))}_loadTranslucentPropertiesAsync(e,n,o,r){var s;const a=this._loader._getOrCreateMaterialAdapter(o);a.configureSubsurface(),a.subsurfaceWeight=null!==(s=r.diffuseTransmissionFactor)&&void 0!==s?s:0,a.subsurfaceWeight>0&&On(this._loader,o),a.diffuseTransmissionTint=void 0!==r.diffuseTransmissionColorFactor?t.Color3.FromArray(r.diffuseTransmissionColorFactor):t.Color3.White();const i=new Array;return r.diffuseTransmissionTexture&&(r.diffuseTransmissionTexture.nonColorData=!0,i.push(this._loader.loadTextureInfoAsync(`${e}/diffuseTransmissionTexture`,r.diffuseTransmissionTexture).then(e=>{e.name=`${o.name} (Diffuse Transmission)`,a.subsurfaceWeightTexture=e}))),r.diffuseTransmissionColorTexture&&i.push(this._loader.loadTextureInfoAsync(`${e}/diffuseTransmissionColorTexture`,r.diffuseTransmissionColorTexture).then(e=>{e.name=`${o.name} (Diffuse Transmission Color)`,a.diffuseTransmissionTintTexture=e})),Promise.all(i).then(()=>{})}}let kn=!1;function Fn(){kn||(kn=!0,ke(Nn),Le(Nn,!0,e=>new Ln(e)))}Fn();const Bn="KHR_materials_volume";class Pn{constructor(e){this.name=Bn,this.order=173,this._loader=e,this.enabled=this._loader.isExtensionUsed(Bn),this.enabled&&this._loader._disableInstancedMesh++}dispose(){this.enabled&&this._loader._disableInstancedMesh--,this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;return s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadVolumePropertiesAsync(o,t,n,r)),yield Promise.all(s).then(()=>{})}))}_loadVolumePropertiesAsync(e,n,o,r){var s;const a=this._loader._getOrCreateMaterialAdapter(o);if(0===a.transmissionWeight&&0===a.subsurfaceWeight||!r.thicknessFactor)return Promise.resolve();a.geometryThinWalled=!1;const i=void 0!==r.attenuationDistance?r.attenuationDistance:Number.MAX_VALUE,l=void 0!==r.attenuationColor&&3==r.attenuationColor.length?t.Color3.FromArray(r.attenuationColor):t.Color3.White();a.configureVolume(),a.transmissionColor=l,a.transmissionDepth=i,a.volumeThickness=null!==(s=r.thicknessFactor)&&void 0!==s?s:0;const u=new Array;return r.thicknessTexture&&(r.thicknessTexture.nonColorData=!0,u.push(this._loader.loadTextureInfoAsync(`${e}/thicknessTexture`,r.thicknessTexture,e=>{e.name=`${o.name} (Thickness)`,a.volumeThicknessTexture=e}))),Promise.all(u).then(()=>{})}}let Gn=!1;function Vn(){Gn||(Gn=!0,ke(Bn),Le(Bn,!0,e=>new Pn(e)))}Vn();const $n="KHR_materials_volume_scatter";class Dn{constructor(e){this.name=$n,this.order=172,this._loader=e,this.enabled=this._loader.isExtensionUsed($n),this.enabled&&this._loader._disableInstancedMesh++}dispose(){this.enabled&&this._loader._disableInstancedMesh--,this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;return s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadVolumePropertiesAsync(o,t,n,r)),yield Promise.all(s).then(()=>{})}))}_loadVolumePropertiesAsync(e,n,o,r){const s=this._loader._getOrCreateMaterialAdapter(o);if(0===s.transmissionWeight&&0===s.subsurfaceWeight||s.geometryThinWalled)return Promise.resolve();const a=void 0!==r.multiscatterColorFactor&&3==r.multiscatterColorFactor.length?t.Color3.FromArray(r.multiscatterColorFactor):t.Color3.Black(),i=void 0!==r.scatterAnisotropy?r.scatterAnisotropy:0;let l=Promise.resolve(null);r.multiscatterColorTexture&&(r.multiscatterColorTexture.nonColorData=!0,l=this._loader.loadTextureInfoAsync(`${e}/multiscatterColorTexture`,r.multiscatterColorTexture,e=>{e.name=`${o.name} (Scatter Color)`,s.transmissionWeight>0&&(s.transmissionScatterTexture=e),s.subsurfaceWeight>0&&(s.subsurfaceColorTexture=e)}));const u=new t.Vector3(-Math.log(s.transmissionColor.r),-Math.log(s.transmissionColor.g),-Math.log(s.transmissionColor.b));if(u.scaleInPlace(1/Math.max(s.transmissionDepth,1e-6)),s.transmissionWeight>0){const e=function(e){const n=new t.Vector3(e.r,e.g,e.b),o=new t.Vector3(4.09712,4.09712,4.09712);o.addInPlace(new t.Vector3(4.20863,4.20863,4.20863).multiplyInPlace(n));const r=new t.Vector3(9.59217,9.59217,9.59217);return r.addInPlace(new t.Vector3(41.6808,41.6808,41.6808).multiplyInPlace(n)),r.addInPlace(new t.Vector3(17.7126,17.7126,17.7126).multiplyInPlace(n.multiply(n))),o.subtractInPlace(new t.Vector3(Math.sqrt(r.x),Math.sqrt(r.y),Math.sqrt(r.z))),new t.Vector3(1,1,1).subtract(o.multiply(o))}(a),n=u.multiply(e);n.scaleInPlace(s.transmissionDepth),s.transmissionScatter.set(n.x,n.y,n.z),s.transmissionScatterAnisotropy=i}if(s.subsurfaceWeight>0){s.subsurfaceScatterAnisotropy=i,s.subsurfaceColor=a;const e=new t.Vector3(0!==u.x?1/u.x:1,0!==u.y?1/u.y:1,0!==u.z?1/u.z:1);s.subsurfaceRadius=Math.max(e.x,e.y,e.z),s.subsurfaceRadiusScale=new t.Color3(e.x/s.subsurfaceRadius,e.y/s.subsurfaceRadius,e.z/s.subsurfaceRadius)}return l.then(()=>{})}}let Hn=!1;function Kn(){Hn||(Hn=!0,ke($n),Le($n,!0,e=>new Dn(e)))}Kn();const Wn="KHR_materials_dispersion";class Un{constructor(e){this.name=Wn,this.order=174,this._loader=e,this.enabled=this._loader.isExtensionUsed(Wn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;return s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadDispersionPropertiesAsync(o,t,n,r)),yield Promise.all(s).then(()=>{})}))}_loadDispersionPropertiesAsync(e,t,n,o){const r=this._loader._getOrCreateMaterialAdapter(n);return 0!=r.transmissionWeight&&o.dispersion?(r.transmissionDispersionAbbeNumber=20,r.transmissionDispersionScale=o.dispersion,Promise.resolve()):Promise.resolve()}}let jn=!1;function zn(){jn||(jn=!0,ke(Wn),Le(Wn,!0,e=>new Un(e)))}zn();const qn="KHR_materials_diffuse_roughness";class Yn{constructor(e){this.name=qn,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(qn)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=new Array;return s.push(this._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(this._loadDiffuseRoughnessPropertiesAsync(o,r,n)),yield Promise.all(s).then(()=>{})}))}_loadDiffuseRoughnessPropertiesAsync(e,t,n){var o;const r=this._loader._getOrCreateMaterialAdapter(n),s=new Array;return r.baseDiffuseRoughness=null!==(o=t.diffuseRoughnessFactor)&&void 0!==o?o:0,t.diffuseRoughnessTexture&&s.push(this._loader.loadTextureInfoAsync(`${e}/diffuseRoughnessTexture`,t.diffuseRoughnessTexture,e=>{e.name=`${n.name} (Diffuse Roughness)`,r.baseDiffuseRoughnessTexture=e})),Promise.all(s).then(()=>{})}}let Xn=!1;function Qn(){Xn||(Xn=!0,ke(qn),Le(qn,!0,e=>new Yn(e)))}Qn();const Zn="KHR_mesh_quantization";class Jn{constructor(e){this.name=Zn,this.enabled=e.isExtensionUsed(Zn)}dispose(){}}let eo=!1;function to(){eo||(eo=!0,ke(Zn),Le(Zn,!0,e=>new Jn(e)))}to();const no="KHR_texture_basisu";class oo{constructor(e){this.name=no,this._loader=e,this.enabled=e.isExtensionUsed(no)}dispose(){this._loader=null}_loadTextureAsync(e,t,n){return Ve.LoadExtensionAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){const s=null==t.sampler?Ve.DefaultSampler:Pe.Get(`${e}/sampler`,this._loader.gltf.samplers,t.sampler),a=Pe.Get(`${o}/source`,this._loader.gltf.images,r.source);return yield this._loader._createTextureAsync(e,s,a,e=>{n(e)},t._textureInfo.nonColorData?{useRGBAIfASTCBC7NotAvailableWhenUASTC:!0}:void 0,!t._textureInfo.nonColorData)}))}}let ro=!1;function so(){ro||(ro=!0,ke(no),Le(no,!0,e=>new oo(e)))}so();const ao="KHR_texture_transform";class io{constructor(e){this.name=ao,this._loader=e,this.enabled=this._loader.isExtensionUsed(ao)}dispose(){this._loader=null}loadTextureInfoAsync(e,n,o){return Ve.LoadExtensionAsync(e,n,this.name,(r,s)=>A(this,void 0,void 0,function*(){return yield this._loader.loadTextureInfoAsync(e,n,e=>{if(!(e instanceof t.Texture))throw new Error(`${r}: Texture type not supported`);s.offset&&(e.uOffset=s.offset[0],e.vOffset=s.offset[1]),e.uRotationCenter=0,e.vRotationCenter=0,s.rotation&&(e.wAng=-s.rotation),s.scale&&(e.uScale=s.scale[0],e.vScale=s.scale[1]),null!=s.texCoord&&(e.coordinatesIndex=s.texCoord),o(e)})}))}}let lo=!1;function uo(){lo||(lo=!0,ke(ao),Le(ao,!0,e=>new io(e)))}uo();const co="KHR_xmp_json_ld";class ho{constructor(e){this.name=co,this.order=100,this._loader=e,this.enabled=this._loader.isExtensionUsed(co)}dispose(){this._loader=null}onLoading(){var e,t,n;if(null===this._loader.rootBabylonMesh)return;const o=null===(e=this._loader.gltf.extensions)||void 0===e?void 0:e.KHR_xmp_json_ld,r=null===(n=null===(t=this._loader.gltf.asset)||void 0===t?void 0:t.extensions)||void 0===n?void 0:n.KHR_xmp_json_ld;if(o&&r){const e=+r.packet;o.packets&&e<o.packets.length&&(this._loader.rootBabylonMesh.metadata=this._loader.rootBabylonMesh.metadata||{},this._loader.rootBabylonMesh.metadata.xmp=o.packets[e])}}}let mo=!1;function po(){mo||(mo=!0,ke(co),Le(co,!0,e=>new ho(e)))}po();const fo="KHR_animation_pointer";class _o{constructor(e){this.name=fo,this._loader=e,this._pathToObjectConverter=Oe(this._loader.gltf)}get enabled(){return this._loader.isExtensionUsed(fo)}dispose(){this._loader=null,delete this._pathToObjectConverter}_loadAnimationChannelAsync(e,n,o,r,s){var a;const i=null===(a=r.target.extensions)||void 0===a?void 0:a.KHR_animation_pointer;if(!i||!this._pathToObjectConverter)return null;"pointer"!==r.target.path&&t.Logger.Warn(`${e}/target/path: Value (${r.target.path}) must be (pointer) when using the ${this.name} extension`),null!=r.target.node&&t.Logger.Warn(`${e}/target/node: Value (${r.target.node}) must not be present when using the ${this.name} extension`);const l=`${e}/extensions/${this.name}`,u=i.pointer;if(!u)throw new Error(`${l}: Pointer is missing`);try{const t=this._pathToObjectConverter.convert(u);if(!t.info.interpolation)throw new Error(`${l}/pointer: Interpolation is missing`);return this._loader._loadAnimationChannelFromTargetInfoAsync(e,n,o,r,{object:t.object,info:t.info.interpolation},s)}catch(e){return t.Logger.Warn(`${l}/pointer: Invalid pointer (${u}) skipped`),null}}}let go=!1;function vo(){go||(go=!0,ke(fo),Le(fo,!0,e=>new _o(e)))}function yo(e,n,o,r){return t.Vector3.FromArray(n,o).scaleInPlace(r)}function bo(e,n,o,r){return t.Quaternion.FromArray(n,o).scaleInPlace(r)}function To(e,t,n,o){const r=new Array(e._numMorphTargets);for(let e=0;e<r.length;e++)r[e]=t[n++]*o;return r}class xo{constructor(e,t,n,o){this.type=e,this.name=t,this.getValue=n,this.getStride=o}_buildAnimation(e,n,o){const r=new t.Animation(e,this.name,n,this.type);return r.setKeys(o,!0),r}}class Ao extends xo{buildAnimations(e,t,n,o){const r=[];return r.push({babylonAnimatable:e._babylonTransformNode,babylonAnimation:this._buildAnimation(t,n,o)}),r}}class Ro extends xo{buildAnimations(e,n,o,r){const s=[];if(e._numMorphTargets)for(let a=0;a<e._numMorphTargets;a++){const i=new t.Animation(`${n}_${a}`,this.name,o,this.type);if(i.setKeys(r.map(e=>({frame:e.frame,inTangent:e.inTangent?e.inTangent[a]:void 0,value:e.value[a],outTangent:e.outTangent?e.outTangent[a]:void 0,interpolation:e.interpolation})),!0),e._primitiveBabylonMeshes)for(const t of e._primitiveBabylonMeshes)if(t.morphTargetManager){const e=t.morphTargetManager.getTarget(a),n=i.clone();e.animations.push(n),s.push({babylonAnimatable:e,babylonAnimation:n})}}return s}}let Co=!1;function wo(){Co||(Co=!0,Ee("/nodes/{}/translation",[new Ao(t.Animation.ANIMATIONTYPE_VECTOR3,"position",yo,()=>3)]),Ee("/nodes/{}/rotation",[new Ao(t.Animation.ANIMATIONTYPE_QUATERNION,"rotationQuaternion",bo,()=>4)]),Ee("/nodes/{}/scale",[new Ao(t.Animation.ANIMATIONTYPE_VECTOR3,"scaling",yo,()=>3)]),Ee("/nodes/{}/weights",[new Ro(t.Animation.ANIMATIONTYPE_FLOAT,"influence",To,e=>e._numMorphTargets)]))}var Oo={__proto__:null,AnimationPropertyInfo:xo,RegisterGLTFLoaderAnimation:wo,TransformNodeAnimationPropertyInfo:Ao,WeightAnimationPropertyInfo:Ro,getQuaternion:bo,getVector3:yo,getWeights:To};function Mo(e,n,o,r){return t.Color3.FromArray(n,o).scale(r)}function Eo(e,t,n,o){return t[n+3]*o}function So(e,t,n,o){return t[n]*o}function Io(e,t,n,o){return-t[n]*o}function No(e,t,n,o){return t[n+1]*o}function Lo(e,t,n,o){return t[n]*o*2}function ko(e){return{scale:[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,`${e}.uScale`,So,()=>2),new Bo(t.Animation.ANIMATIONTYPE_FLOAT,`${e}.vScale`,No,()=>2)],offset:[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,`${e}.uOffset`,So,()=>2),new Bo(t.Animation.ANIMATIONTYPE_FLOAT,`${e}.vOffset`,No,()=>2)],rotation:[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,`${e}.wAng`,Io,()=>1)]}}class Fo extends xo{buildAnimations(e,t,n,o){return[{babylonAnimatable:e._babylonCamera,babylonAnimation:this._buildAnimation(t,n,o)}]}}class Bo extends xo{buildAnimations(e,t,n,o){const r=[];for(const s in e._data)r.push({babylonAnimatable:e._data[s].babylonMaterial,babylonAnimation:this._buildAnimation(t,n,o)});return r}}class Po extends xo{buildAnimations(e,t,n,o){return[{babylonAnimatable:e._babylonLight,babylonAnimation:this._buildAnimation(t,n,o)}]}}class Go extends xo{buildAnimations(e,t,n,o){return e._primitiveBabylonMeshes?e._primitiveBabylonMeshes.map(e=>({babylonAnimatable:e,babylonAnimation:this._buildAnimation(t,n,o)})):[]}}let Vo=!1;!function(){if(Vo)return;Vo=!0,wo(),Ee("/cameras/{}/orthographic/xmag",[new Fo(t.Animation.ANIMATIONTYPE_FLOAT,"orthoLeft",Io,()=>1),new Fo(t.Animation.ANIMATIONTYPE_FLOAT,"orthoRight",No,()=>1)]),Ee("/cameras/{}/orthographic/ymag",[new Fo(t.Animation.ANIMATIONTYPE_FLOAT,"orthoBottom",Io,()=>1),new Fo(t.Animation.ANIMATIONTYPE_FLOAT,"orthoTop",No,()=>1)]),Ee("/cameras/{}/orthographic/zfar",[new Fo(t.Animation.ANIMATIONTYPE_FLOAT,"maxZ",So,()=>1)]),Ee("/cameras/{}/orthographic/znear",[new Fo(t.Animation.ANIMATIONTYPE_FLOAT,"minZ",So,()=>1)]),Ee("/cameras/{}/perspective/yfov",[new Fo(t.Animation.ANIMATIONTYPE_FLOAT,"fov",So,()=>1)]),Ee("/cameras/{}/perspective/zfar",[new Fo(t.Animation.ANIMATIONTYPE_FLOAT,"maxZ",So,()=>1)]),Ee("/cameras/{}/perspective/znear",[new Fo(t.Animation.ANIMATIONTYPE_FLOAT,"minZ",So,()=>1)]),Ee("/materials/{}/pbrMetallicRoughness/baseColorFactor",[new Bo(t.Animation.ANIMATIONTYPE_COLOR3,"albedoColor",Mo,()=>4),new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"alpha",Eo,()=>4)]),Ee("/materials/{}/pbrMetallicRoughness/metallicFactor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"metallic",So,()=>1)]),Ee("/materials/{}/pbrMetallicRoughness/metallicFactor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"roughness",So,()=>1)]);const e=ko("albedoTexture");Ee("/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale",e.scale),Ee("/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset",e.offset),Ee("/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/rotation",e.rotation);const n=ko("metallicTexture");Ee("//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/scale",n.scale),Ee("//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/offset",n.offset),Ee("//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/rotation",n.rotation),Ee("/materials/{}/emissiveFactor",[new Bo(t.Animation.ANIMATIONTYPE_COLOR3,"emissiveColor",Mo,()=>3)]);const o=ko("bumpTexture");Ee("/materials/{}/normalTexture/scale",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"bumpTexture.level",So,()=>1)]),Ee("/materials/{}/normalTexture/extensions/KHR_texture_transform/scale",o.scale),Ee("/materials/{}/normalTexture/extensions/KHR_texture_transform/offset",o.offset),Ee("/materials/{}/normalTexture/extensions/KHR_texture_transform/rotation",o.rotation),Ee("/materials/{}/occlusionTexture/strength",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"ambientTextureStrength",So,()=>1)]);const r=ko("ambientTexture");Ee("/materials/{}/occlusionTexture/extensions/KHR_texture_transform/scale",r.scale),Ee("/materials/{}/occlusionTexture/extensions/KHR_texture_transform/offset",r.offset),Ee("/materials/{}/occlusionTexture/extensions/KHR_texture_transform/rotation",r.rotation);const s=ko("emissiveTexture");Ee("/materials/{}/emissiveTexture/extensions/KHR_texture_transform/scale",s.scale),Ee("/materials/{}/emissiveTexture/extensions/KHR_texture_transform/offset",s.offset),Ee("/materials/{}/emissiveTexture/extensions/KHR_texture_transform/rotation",s.rotation),Ee("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyStrength",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"anisotropy.intensity",So,()=>1)]),Ee("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyRotation",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"anisotropy.angle",So,()=>1)]);const a=ko("anisotropy.texture");Ee("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/scale",a.scale),Ee("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/offset",a.offset),Ee("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/rotation",a.rotation),Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatFactor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"clearCoat.intensity",So,()=>1)]),Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"clearCoat.roughness",So,()=>1)]);const i=ko("clearCoat.texture");Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/scale",i.scale),Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/offset",i.offset),Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/rotation",i.rotation);const l=ko("clearCoat.bumpTexture");Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/scale",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"clearCoat.bumpTexture.level",So,()=>1)]),Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/scale",l.scale),Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/offset",l.offset),Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/rotation",l.rotation);const u=ko("clearCoat.textureRoughness");Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/scale",u.scale),Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/offset",u.offset),Ee("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/rotation",u.rotation),Ee("/materials/{}/extensions/KHR_materials_dispersion/dispersionFactor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"subSurface.dispersion",So,()=>1)]),Ee("/materials/{}/extensions/KHR_materials_emissive_strength/emissiveStrength",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"emissiveIntensity",So,()=>1)]),Ee("/materials/{}/extensions/KHR_materials_ior/ior",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"indexOfRefraction",So,()=>1)]),Ee("/materials/{}/extensions/KHR_materials_iridescence/iridescenceFactor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"iridescence.intensity",So,()=>1)]),Ee("/materials/{}/extensions/KHR_materials_iridescence/iridescenceIor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"iridescence.indexOfRefraction",So,()=>1)]),Ee("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessMinimum",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"iridescence.minimumThickness",So,()=>1)]),Ee("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessMaximum",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"iridescence.maximumThickness",So,()=>1)]);const c=ko("iridescence.texture");Ee("/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/scale",c.scale),Ee("/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/offset",c.offset),Ee("/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/rotation",c.rotation);const d=ko("iridescence.thicknessTexture");Ee("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/scale",d.scale),Ee("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/offset",d.offset),Ee("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/rotation",d.rotation),Ee("/materials/{}/extensions/KHR_materials_sheen/sheenColorFactor",[new Bo(t.Animation.ANIMATIONTYPE_COLOR3,"sheen.color",Mo,()=>3)]),Ee("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessFactor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"sheen.roughness",So,()=>1)]);const h=ko("sheen.texture");Ee("/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/scale",h.scale),Ee("/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/offset",h.offset),Ee("/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/rotation",h.rotation);const m=ko("sheen.textureRoughness");Ee("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/scale",m.scale),Ee("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/offset",m.offset),Ee("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/rotation",m.rotation),Ee("/materials/{}/extensions/KHR_materials_specular/specularFactor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"metallicF0Factor",So,()=>1)]),Ee("/materials/{}/extensions/KHR_materials_specular/specularColorFactor",[new Bo(t.Animation.ANIMATIONTYPE_COLOR3,"metallicReflectanceColor",Mo,()=>3)]);const p=ko("metallicReflectanceTexture");Ee("/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/scale",p.scale),Ee("/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/offset",p.offset),Ee("/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/rotation",p.rotation);const f=ko("reflectanceTexture");Ee("/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/scale",f.scale),Ee("/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/offset",f.offset),Ee("/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/rotation",f.rotation),Ee("/materials/{}/extensions/KHR_materials_transmission/transmissionFactor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"subSurface.refractionIntensity",So,()=>1)]);const _=ko("subSurface.refractionIntensityTexture");Ee("/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/scale",_.scale),Ee("/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/offset",_.offset),Ee("/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/rotation",_.rotation),Ee("/materials/{}/extensions/KHR_materials_volume/attenuationColor",[new Bo(t.Animation.ANIMATIONTYPE_COLOR3,"subSurface.tintColor",Mo,()=>3)]),Ee("/materials/{}/extensions/KHR_materials_volume/attenuationDistance",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"subSurface.tintColorAtDistance",So,()=>1)]),Ee("/materials/{}/extensions/KHR_materials_volume/thicknessFactor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"subSurface.maximumThickness",So,()=>1)]);const g=ko("subSurface.thicknessTexture");Ee("/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/scale",g.scale),Ee("/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/offset",g.offset),Ee("/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/rotation",g.rotation),Ee("/materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionFactor",[new Bo(t.Animation.ANIMATIONTYPE_FLOAT,"subSurface.translucencyIntensity",So,()=>1)]);const v=ko("subSurface.translucencyIntensityTexture");Ee("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/scale",v.scale),Ee("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/offset",v.offset),Ee("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/rotation",v.rotation),Ee("/materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorFactor",[new Bo(t.Animation.ANIMATIONTYPE_COLOR3,"subSurface.translucencyColor",Mo,()=>3)]);const y=ko("subSurface.translucencyColorTexture");Ee("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/scale",y.scale),Ee("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/offset",y.offset),Ee("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/rotation",y.rotation),Ee("/extensions/KHR_lights_punctual/lights/{}/color",[new Po(t.Animation.ANIMATIONTYPE_COLOR3,"diffuse",Mo,()=>3)]),Ee("/extensions/KHR_lights_punctual/lights/{}/intensity",[new Po(t.Animation.ANIMATIONTYPE_FLOAT,"intensity",So,()=>1)]),Ee("/extensions/KHR_lights_punctual/lights/{}/range",[new Po(t.Animation.ANIMATIONTYPE_FLOAT,"range",So,()=>1)]),Ee("/extensions/KHR_lights_punctual/lights/{}/spot/innerConeAngle",[new Po(t.Animation.ANIMATIONTYPE_FLOAT,"innerAngle",Lo,()=>1)]),Ee("/extensions/KHR_lights_punctual/lights/{}/spot/outerConeAngle",[new Po(t.Animation.ANIMATIONTYPE_FLOAT,"angle",Lo,()=>1)]),Ee("/extensions/EXT_lights_area/lights/{}/color",[new Po(t.Animation.ANIMATIONTYPE_COLOR3,"diffuse",Mo,()=>3)]),Ee("/extensions/EXT_lights_area/lights/{}/intensity",[new Po(t.Animation.ANIMATIONTYPE_FLOAT,"intensity",So,()=>1)]),Ee("/extensions/EXT_lights_area/lights/{}/size",[new Po(t.Animation.ANIMATIONTYPE_FLOAT,"radius",So,()=>1)]),Ee("/extensions/EXT_lights_area/lights/{}/rect/aspect",[new Po(t.Animation.ANIMATIONTYPE_FLOAT,"radius",So,()=>1)]),Ee("/nodes/{}/extensions/EXT_lights_ies/color",[new Po(t.Animation.ANIMATIONTYPE_COLOR3,"diffuse",Mo,()=>3)]),Ee("/nodes/{}/extensions/EXT_lights_ies/multiplier",[new Po(t.Animation.ANIMATIONTYPE_FLOAT,"intensity",So,()=>1)]),Ee("/nodes/{}/extensions/KHR_node_visibility/visible",[new Go(t.Animation.ANIMATIONTYPE_FLOAT,"isVisible",So,()=>1)])}(),vo();const $o="MSFT_audio_emitter";class Do{constructor(e){this.name=$o,this._loader=e,this.enabled=this._loader.isExtensionUsed($o)}dispose(){this._loader=null,this._clips=null,this._emitters=null}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._clips=t.clips,this._emitters=t.emitters,Pe.Assign(this._clips),Pe.Assign(this._emitters)}}loadSceneAsync(e,t){return Ve.LoadExtensionAsync(e,t,this.name,(n,o)=>A(this,void 0,void 0,function*(){const r=new Array;r.push(this._loader.loadSceneAsync(e,t));for(const e of o.emitters){const t=Pe.Get(`${n}/emitters`,this._emitters,e);if(null!=t.refDistance||null!=t.maxDistance||null!=t.rolloffFactor||null!=t.distanceModel||null!=t.innerAngle||null!=t.outerAngle)throw new Error(`${n}: Direction or Distance properties are not allowed on emitters attached to a scene`);r.push(this._loadEmitterAsync(`${n}/emitters/${t.index}`,t))}yield Promise.all(r)}))}loadNodeAsync(e,n,o){return Ve.LoadExtensionAsync(e,n,this.name,(e,r)=>A(this,void 0,void 0,function*(){const s=new Array,a=yield this._loader.loadNodeAsync(e,n,n=>{for(const o of r.emitters){const r=Pe.Get(`${e}/emitters`,this._emitters,o);s.push(this._loadEmitterAsync(`${e}/emitters/${r.index}`,r).then(()=>{for(const e of r._babylonSounds)e.attachToMesh(n),null==r.innerAngle&&null==r.outerAngle||(e.setLocalDirectionToMesh(t.Vector3.Forward()),e.setDirectionalCone(2*t.Tools.ToDegrees(null==r.innerAngle?Math.PI:r.innerAngle),2*t.Tools.ToDegrees(null==r.outerAngle?Math.PI:r.outerAngle),0))}))}o(n)});return yield Promise.all(s),a}))}loadAnimationAsync(e,t){return Ve.LoadExtensionAsync(e,t,this.name,(n,o)=>A(this,void 0,void 0,function*(){const r=yield this._loader.loadAnimationAsync(e,t),s=new Array;Pe.Assign(o.events);for(const a of o.events)s.push(this._loadAnimationEventAsync(`${n}/events/${a.index}`,e,t,a,r));return yield Promise.all(s),r}))}_loadClipAsync(e,n){if(n._objectURL)return n._objectURL;let o;if(n.uri)o=this._loader.loadUriAsync(e,n,n.uri);else{const t=Pe.Get(`${e}/bufferView`,this._loader.gltf.bufferViews,n.bufferView);o=this._loader.loadBufferViewAsync(`/bufferViews/${t.index}`,t)}return n._objectURL=o.then(e=>{const o=t.GetBlobBufferSource(e);return URL.createObjectURL(new Blob([o],{type:n.mimeType}))}),n._objectURL}_loadEmitterAsync(e,n){if(n._babylonSounds=n._babylonSounds||[],!n._babylonData){const e=new Array,o=n.name||`emitter${n.index}`,r={loop:!1,autoplay:!1,volume:null==n.volume?1:n.volume};for(let s=0;s<n.clips.length;s++){const a=`/extensions/${this.name}/clips`,i=Pe.Get(a,this._clips,n.clips[s].clip);e.push(this._loadClipAsync(`${a}/${n.clips[s].clip}`,i).then(e=>{const a=n._babylonSounds[s]=new t.Sound(o,e,this._loader.babylonScene,null,r);a.refDistance=n.refDistance||1,a.maxDistance=n.maxDistance||256,a.rolloffFactor=n.rolloffFactor||1,a.distanceModel=n.distanceModel||"exponential"}))}const s=Promise.all(e).then(()=>{const e=n.clips.map(e=>e.weight||1),o=new t.WeightedSound(n.loop||!1,n._babylonSounds,e);n.innerAngle&&(o.directionalConeInnerAngle=2*t.Tools.ToDegrees(n.innerAngle)),n.outerAngle&&(o.directionalConeOuterAngle=2*t.Tools.ToDegrees(n.outerAngle)),n.volume&&(o.volume=n.volume),n._babylonData.sound=o});n._babylonData={loaded:s}}return n._babylonData.loaded}_getEventAction(e,t,n,o,r){switch(n){case"play":return e=>{const n=(r||0)+(e-o);t.play(n)};case"stop":return()=>{t.stop()};case"pause":return()=>{t.pause()};default:throw new Error(`${e}: Unsupported action ${n}`)}}_loadAnimationEventAsync(e,n,o,r,s){if(0==s.targetedAnimations.length)return Promise.resolve();const a=s.targetedAnimations[0],i=r.emitter,l=Pe.Get(`/extensions/${this.name}/emitters`,this._emitters,i);return this._loadEmitterAsync(e,l).then(()=>{const n=l._babylonData.sound;if(n){const o=new t.AnimationEvent(r.time,this._getEventAction(e,n,r.action,r.time,r.startOffset));a.animation.addEvent(o),s.onAnimationGroupEndObservable.add(()=>{n.stop()}),s.onAnimationGroupPauseObservable.add(()=>{n.pause()})}})}}let Ho=!1;function Ko(){Ho||(Ho=!0,ke($o),Le($o,!0,e=>new Do(e)))}Ko();const Wo="MSFT_lod";class Uo{constructor(e){var n,o;this.name=Wo,this.order=100,this.maxLODsToLoad=10,this.onNodeLODsLoadedObservable=new t.Observable,this.onMaterialLODsLoadedObservable=new t.Observable,this._bufferLODs=new Array,this._nodeIndexLOD=null,this._nodeSignalLODs=new Array,this._nodePromiseLODs=new Array,this._nodeBufferLODs=new Array,this._materialIndexLOD=null,this._materialSignalLODs=new Array,this._materialPromiseLODs=new Array,this._materialBufferLODs=new Array,this._loader=e,this.maxLODsToLoad=null!==(o=null===(n=this._loader.parent.extensionOptions[Wo])||void 0===n?void 0:n.maxLODsToLoad)&&void 0!==o?o:this.maxLODsToLoad,this.enabled=this._loader.isExtensionUsed(Wo)}dispose(){this._loader=null,this._nodeIndexLOD=null,this._nodeSignalLODs.length=0,this._nodePromiseLODs.length=0,this._nodeBufferLODs.length=0,this._materialIndexLOD=null,this._materialSignalLODs.length=0,this._materialPromiseLODs.length=0,this._materialBufferLODs.length=0,this.onMaterialLODsLoadedObservable.clear(),this.onNodeLODsLoadedObservable.clear()}onReady(){for(let e=0;e<this._nodePromiseLODs.length;e++){const t=Promise.all(this._nodePromiseLODs[e]).then(()=>{0!==e&&(this._loader.endPerformanceCounter(`Node LOD ${e}`),this._loader.log(`Loaded node LOD ${e}`)),this.onNodeLODsLoadedObservable.notifyObservers(e),e!==this._nodePromiseLODs.length-1&&(this._loader.startPerformanceCounter(`Node LOD ${e+1}`),this._loadBufferLOD(this._nodeBufferLODs,e+1),this._nodeSignalLODs[e]&&this._nodeSignalLODs[e].resolve())});this._loader._completePromises.push(t)}for(let e=0;e<this._materialPromiseLODs.length;e++){const t=Promise.all(this._materialPromiseLODs[e]).then(()=>{0!==e&&(this._loader.endPerformanceCounter(`Material LOD ${e}`),this._loader.log(`Loaded material LOD ${e}`)),this.onMaterialLODsLoadedObservable.notifyObservers(e),e!==this._materialPromiseLODs.length-1&&(this._loader.startPerformanceCounter(`Material LOD ${e+1}`),this._loadBufferLOD(this._materialBufferLODs,e+1),this._materialSignalLODs[e]&&this._materialSignalLODs[e].resolve())});this._loader._completePromises.push(t)}}loadSceneAsync(e,t){const n=this._loader.loadSceneAsync(e,t);return this._loadBufferLOD(this._bufferLODs,0),n}loadNodeAsync(e,n,o){return Ve.LoadExtensionAsync(e,n,this.name,(e,r)=>A(this,void 0,void 0,function*(){let s;const a=this._getLODs(e,n,this._loader.gltf.nodes,r.ids);this._loader.logOpen(`${e}`);for(let e=0;e<a.length;e++){const n=a[e];0!==e&&(this._nodeIndexLOD=e,this._nodeSignalLODs[e]=this._nodeSignalLODs[e]||new t.Deferred);const r=e=>{o(e),e.setEnabled(!1)},i=this._loader.loadNodeAsync(`/nodes/${n.index}`,n,r).then(t=>{if(0!==e){const t=a[e-1];t._babylonTransformNode&&(this._disposeTransformNode(t._babylonTransformNode),delete t._babylonTransformNode)}return t.setEnabled(!0),t});this._nodePromiseLODs[e]=this._nodePromiseLODs[e]||[],0===e?s=i:(this._nodeIndexLOD=null,this._nodePromiseLODs[e].push(i))}return this._loader.logClose(),yield s}))}_loadMaterialAsync(e,t,n,o,r){return this._nodeIndexLOD?null:Ve.LoadExtensionAsync(e,t,this.name,(e,s)=>A(this,void 0,void 0,function*(){let a;const i=this._getLODs(e,t,this._loader.gltf.materials,s.ids);this._loader.logOpen(`${e}`);for(let e=0;e<i.length;e++){const t=i[e];0!==e&&(this._materialIndexLOD=e);const s=this._loader._loadMaterialAsync(`/materials/${t.index}`,t,n,o,t=>{0===e&&r(t)}).then(t=>{if(0!==e){r(t);const n=i[e-1]._data;n[o]&&(this._disposeMaterials([n[o].babylonMaterial]),delete n[o])}return t});this._materialPromiseLODs[e]=this._materialPromiseLODs[e]||[],0===e?a=s:(this._materialIndexLOD=null,this._materialPromiseLODs[e].push(s))}return this._loader.logClose(),yield a}))}_loadUriAsync(e,n,o){if(null!==this._nodeIndexLOD){this._loader.log("deferred");const r=this._nodeIndexLOD-1;return this._nodeSignalLODs[r]=this._nodeSignalLODs[r]||new t.Deferred,this._nodeSignalLODs[this._nodeIndexLOD-1].promise.then(()=>A(this,void 0,void 0,function*(){return yield this._loader.loadUriAsync(e,n,o)}))}if(null!==this._materialIndexLOD){this._loader.log("deferred");const r=this._materialIndexLOD-1;return this._materialSignalLODs[r]=this._materialSignalLODs[r]||new t.Deferred,this._materialSignalLODs[r].promise.then(()=>A(this,void 0,void 0,function*(){return yield this._loader.loadUriAsync(e,n,o)}))}return null}loadBufferAsync(e,n,o,r){if(this._loader.parent.useRangeRequests&&!n.uri){if(!this._loader.bin)throw new Error(`${e}: Uri is missing or the binary glTF is missing its binary chunk`);const n=(e,n)=>A(this,void 0,void 0,function*(){const s=o,a=s+r-1;let i=e[n];return i?(i.start=Math.min(i.start,s),i.end=Math.max(i.end,a)):(i={start:s,end:a,loaded:new t.Deferred},e[n]=i),yield i.loaded.promise.then(e=>new Uint8Array(e.buffer,e.byteOffset+o-i.start,r))});return this._loader.log("deferred"),null!==this._nodeIndexLOD?n(this._nodeBufferLODs,this._nodeIndexLOD):null!==this._materialIndexLOD?n(this._materialBufferLODs,this._materialIndexLOD):n(this._bufferLODs,0)}return null}_loadBufferLOD(e,t){const n=e[t];n&&(this._loader.log(`Loading buffer range [${n.start}-${n.end}]`),this._loader.bin.readAsync(n.start,n.end-n.start+1).then(e=>{n.loaded.resolve(e)},e=>{n.loaded.reject(e)}))}_getLODs(e,t,n,o){if(this.maxLODsToLoad<=0)throw new Error("maxLODsToLoad must be greater than zero");const r=[];for(let t=o.length-1;t>=0;t--)if(r.push(Pe.Get(`${e}/ids/${o[t]}`,n,o[t])),r.length===this.maxLODsToLoad)return r;return r.push(t),r}_disposeTransformNode(e){const t=[],n=e.material;n&&t.push(n);for(const n of e.getChildMeshes())n.material&&t.push(n.material);e.dispose();const o=t.filter(e=>this._loader.babylonScene.meshes.every(t=>t.material!=e));this._disposeMaterials(o)}_disposeMaterials(e){const t={};for(const n of e){for(const e of n.getActiveTextures())t[e.uniqueId]=e;n.dispose()}for(const e in t)for(const n of this._loader.babylonScene.materials)n.hasTexture(t[e])&&delete t[e];for(const e in t)t[e].dispose()}}let jo=!1;function zo(){jo||(jo=!0,ke(Wo),Le(Wo,!0,e=>new Uo(e)))}zo();const qo="MSFT_minecraftMesh";class Yo{constructor(e){this.name=qo,this._loader=e,this.enabled=this._loader.isExtensionUsed(qo)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtraAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){if(r){if(!this._loader._pbrMaterialImpls.get("pbr"))throw new Error(`${o}: Material type not supported`);const r=this._loader.loadMaterialPropertiesAsync(e,t,n);return n.needAlphaBlending()&&(n.forceDepthWrite=!0,n.separateCullingPass=!0),n.backFaceCulling=n.forceDepthWrite,n.twoSidedLighting=!0,yield r}}))}}let Xo=!1;function Qo(){Xo||(Xo=!0,ke(qo),Le(qo,!0,e=>new Yo(e)))}Qo();const Zo="MSFT_sRGBFactors";class Jo{constructor(e){this.name=Zo,this._loader=e,this.enabled=this._loader.isExtensionUsed(Zo)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,n){return Ve.LoadExtraAsync(e,t,this.name,(o,r)=>A(this,void 0,void 0,function*(){if(r){const o=this._loader._getOrCreateMaterialAdapter(n),r=this._loader.loadMaterialPropertiesAsync(e,t,n),s=n.getScene().getEngine().useExactSrgbConversions;return o.baseColorTexture||o.baseColor.toLinearSpaceToRef(o.baseColor,s),o.specularColorTexture||o.specularColor.toLinearSpaceToRef(o.specularColor,s),yield r}}))}}let er=!1;function tr(){er||(er=!0,ke(Zo),Le(Zo,!0,e=>new Jo(e)))}function nr(e){const[t,n]=e.split(":");return or({op:t,extension:n})}function or(e,n=!0){var o;const r=e.extension?null===(o=ar[e.extension])||void 0===o?void 0:o[e.op]:ir[e.op];return!r&&n?(t.Logger.Warn(`No mapping found for operation ${e.op} and extension ${e.extension||"KHR_interactivity"}`),rr(e)):r}function rr(e){const t={},n={flows:{}};if(e.inputValueSockets){t.values={};for(const n in e.inputValueSockets)t.values[n]={name:n}}return e.outputValueSockets&&(n.values={},Object.keys(e.outputValueSockets).forEach(e=>{n.values[e]={name:e}})),{blocks:[],inputs:t,outputs:n}}function sr(e,t,n){ar[t]||(ar[t]={}),ar[t][e]=n}tr();const ar={BABYLON:{"flow/log":{blocks:["FlowGraphConsoleLogBlock"],inputs:{values:{message:{name:"message"},"[segment]":{name:"$1",compatibilityOnly:!0}}},outputs:{flows:{out:{name:"out",compatibilityOnly:!0}}}}}},ir={"event/onStart":{blocks:["FlowGraphSceneReadyEventBlock"],outputs:{values:{event:{name:"event"}},flows:{out:{name:"done"}}}},"event/onTick":{blocks:["FlowGraphSceneTickEventBlock"],inputs:{},outputs:{values:{timeSinceStart:{name:"timeSinceStart",gltfType:"number"},timeSinceLastTick:{name:"deltaTime",gltfType:"number"},event:{name:"event"}},flows:{out:{name:"done"}}}},"event/send":{blocks:["FlowGraphSendCustomEventBlock"],configuration:{event:{name:"eventId",configurationType:"int",required:!0,indexSource:"events",validationOnly:!0}},inputs:{values:{"[segment]":{name:"$1"}}},outputs:{flows:{out:{name:"out"}}},extraProcessor(e,t,n,o,r){var s,a;if("event/send"!==t.op||!(null===(s=e.configuration)||void 0===s?void 0:s.event))throw new Error("Send event should have a single configuration object, the event itself");const i=null===(a=e.configuration.event.value)||void 0===a?void 0:a[0];if("number"!=typeof i)throw new Error("Event id should be a number");const l=o.arrays.events[i],u=r[0];return u.config||(u.config={}),u.config.eventId=l.eventId,u.config.eventData=l.eventData,r}},"event/receive":{blocks:["FlowGraphReceiveCustomEventBlock"],configuration:{event:{name:"eventId",configurationType:"int",required:!0,indexSource:"events",validationOnly:!0}},outputs:{values:{event:{name:"event"},"[segment]":{name:"$1"}},flows:{out:{name:"done"}}},validation(e,n){var o,r;if(!e.configuration)return t.Logger.Error("Receive event should have a configuration object"),{valid:!1,error:"Receive event should have a configuration object"};const s=e.configuration.event;if(!s)return t.Logger.Error("Receive event should have a single configuration object, the event itself"),{valid:!1,error:"Receive event should have a single configuration object, the event itself"};const a=null===(o=s.value)||void 0===o?void 0:o[0];return"number"!=typeof a?(t.Logger.Error("Event id should be a number"),{valid:!1,error:"Event id should be a number"}):(null===(r=n.events)||void 0===r?void 0:r[a])?{valid:!0}:(t.Logger.Error(`Event with id ${a} not found`),{valid:!1,error:`Event with id ${a} not found`})},extraProcessor(e,t,n,o,r){var s,a;if("event/receive"!==t.op||!(null===(s=e.configuration)||void 0===s?void 0:s.event))throw new Error("Receive event should have a single configuration object, the event itself");const i=null===(a=e.configuration.event.value)||void 0===a?void 0:a[0];if("number"!=typeof i)throw new Error("Event id should be a number");const l=o.arrays.events[i],u=r[0];return u.config||(u.config={}),u.config.eventId=l.eventId,u.config.eventData=l.eventData,r}},"event/stopPropagation":{blocks:["FlowGraphStopEventPropagationBlock"],inputs:{values:{event:{name:"event"},stopImmediate:{name:"stopImmediate"}},flows:{in:{name:"in"}}},outputs:{flows:{out:{name:"out"}}}},"math/E":lr("FlowGraphEBlock",[]),"math/Pi":lr("FlowGraphPIBlock",[]),"math/Tau":lr("FlowGraphTauBlock",[]),"math/Inf":lr("FlowGraphInfBlock",[]),"math/NaN":lr("FlowGraphNaNBlock",[]),"math/abs":lr("FlowGraphAbsBlock"),"math/sign":lr("FlowGraphSignBlock"),"math/trunc":lr("FlowGraphTruncBlock"),"math/floor":lr("FlowGraphFloorBlock"),"math/ceil":lr("FlowGraphCeilBlock"),"math/round":{blocks:["FlowGraphRoundBlock"],configuration:{},inputs:{values:{a:{name:"a"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,o,r){var s;return(s=r[0]).config||(s.config={}),r[0].config.roundHalfAwayFromZero=!0,r}},"math/fract":lr("FlowGraphFractBlock"),"math/neg":lr("FlowGraphNegationBlock"),"math/add":lr("FlowGraphAddBlock",["a","b"],!0),"math/sub":lr("FlowGraphSubtractBlock",["a","b"],!0),"math/mul":{blocks:["FlowGraphMultiplyBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,o,r){var s;(s=r[0]).config||(s.config={}),r[0].config.useMatrixPerComponent=!0,r[0].config.preventIntegerFloatArithmetic=!0;let a=-1;return Object.keys(e.values||{}).find(t=>{var n;return void 0!==(null===(n=e.values)||void 0===n?void 0:n[t].type)&&(a=e.values[t].type,!0)}),-1!==a&&(r[0].config.type=o.arrays.types[a].flowGraphType),r},validation:e=>e.values?ur(e):{valid:!0}},"math/div":lr("FlowGraphDivideBlock",["a","b"],!0),"math/rem":lr("FlowGraphModuloBlock",["a","b"]),"math/min":lr("FlowGraphMinBlock",["a","b"]),"math/max":lr("FlowGraphMaxBlock",["a","b"]),"math/clamp":lr("FlowGraphClampBlock",["a","b","c"]),"math/saturate":lr("FlowGraphSaturateBlock"),"math/mix":lr("FlowGraphMathInterpolationBlock",["a","b","c"]),"math/smoothStep":lr("FlowGraphSmoothStepBlock",["a","b","c"]),"math/rgbToOkLCh":{blocks:["FlowGraphRGBToOkLChBlock"],inputs:{values:{r:{name:"r",gltfType:"number"},g:{name:"g",gltfType:"number"},b:{name:"b",gltfType:"number"}}},outputs:{values:{l:{name:"l"},c:{name:"c"},h:{name:"h"}}}},"math/rgbFromOkLCh":{blocks:["FlowGraphRGBFromOkLChBlock"],inputs:{values:{l:{name:"l",gltfType:"number"},c:{name:"c",gltfType:"number"},h:{name:"h",gltfType:"number"}}},outputs:{values:{r:{name:"r"},g:{name:"g"},b:{name:"b"}}}},"math/quatSlerp":lr("FlowGraphMathSlerpBlock",["a","b","c"]),"math/slerp":lr("FlowGraphVectorSlerpBlock",["a","b","c"]),"math/eq":lr("FlowGraphEqualityBlock",["a","b"]),"ref/eq":lr("FlowGraphEqualityBlock",["a","b"]),"math/lt":lr("FlowGraphLessThanBlock",["a","b"]),"math/le":lr("FlowGraphLessThanOrEqualBlock",["a","b"]),"math/gt":lr("FlowGraphGreaterThanBlock",["a","b"]),"math/ge":lr("FlowGraphGreaterThanOrEqualBlock",["a","b"]),"math/isNaN":lr("FlowGraphIsNaNBlock"),"math/isInf":lr("FlowGraphIsInfBlock"),"math/select":{blocks:["FlowGraphConditionalBlock"],inputs:{values:{condition:{name:"condition"},a:{name:"onTrue"},b:{name:"onFalse"}}},outputs:{values:{value:{name:"output",typeSourceInput:"a"}}}},"math/random":{blocks:["FlowGraphRandomBlock"],outputs:{values:{value:{name:"value"}}}},"math/sin":lr("FlowGraphSinBlock"),"math/cos":lr("FlowGraphCosBlock"),"math/tan":lr("FlowGraphTanBlock"),"math/asin":lr("FlowGraphASinBlock"),"math/acos":lr("FlowGraphACosBlock"),"math/atan":lr("FlowGraphATanBlock"),"math/atan2":lr("FlowGraphATan2Block",["a","b"]),"math/sinh":lr("FlowGraphSinhBlock"),"math/cosh":lr("FlowGraphCoshBlock"),"math/tanh":lr("FlowGraphTanhBlock"),"math/asinh":lr("FlowGraphASinhBlock"),"math/acosh":lr("FlowGraphACoshBlock"),"math/atanh":lr("FlowGraphATanhBlock"),"math/exp":lr("FlowGraphExponentialBlock"),"math/log":lr("FlowGraphLogBlock"),"math/log2":lr("FlowGraphLog2Block"),"math/log10":lr("FlowGraphLog10Block"),"math/sqrt":lr("FlowGraphSquareRootBlock"),"math/cbrt":lr("FlowGraphCubeRootBlock"),"math/pow":lr("FlowGraphPowerBlock",["a","b"]),"math/length":lr("FlowGraphLengthBlock"),"math/normalize":Object.assign(Object.assign({},lr("FlowGraphNormalizeBlock")),{outputs:{values:{value:{name:"value"},isValid:{name:"isValid",gltfType:"bool"}}}}),"math/dot":lr("FlowGraphDotBlock",["a","b"]),"math/cross":lr("FlowGraphCrossBlock",["a","b"]),"math/rotate2D":{blocks:["FlowGraphRotate2DBlock"],inputs:{values:{a:{name:"a"},angle:{name:"b"}}},outputs:{values:{value:{name:"value"}}}},"math/rotate3D":{blocks:["FlowGraphRotate3DBlock"],inputs:{values:{a:{name:"a"},rotation:{name:"b"}}},outputs:{values:{value:{name:"value"}}}},"math/transform":{blocks:["FlowGraphTransformVectorBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}}},"math/combine2":{blocks:["FlowGraphCombineVector2Block"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/combine3":{blocks:["FlowGraphCombineVector3Block"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/combine4":{blocks:["FlowGraphCombineVector4Block"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/extract2":{blocks:["FlowGraphExtractVector2Block"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"}}}},"math/extract3":{blocks:["FlowGraphExtractVector3Block"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"}}}},"math/extract4":{blocks:["FlowGraphExtractVector4Block"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"}}}},"math/transpose":lr("FlowGraphTransposeBlock"),"math/determinant":lr("FlowGraphDeterminantBlock"),"math/inverse":Object.assign(Object.assign({},lr("FlowGraphInvertMatrixBlock")),{outputs:{values:{value:{name:"value"},isValid:{name:"isValid",gltfType:"bool"}}}}),"math/matMul":lr("FlowGraphMatrixMultiplicationBlock",["a","b"]),"math/matCompose":{blocks:["FlowGraphMatrixCompose"],inputs:{values:{translation:{name:"position",gltfType:"float3"},rotation:{name:"rotationQuaternion",gltfType:"float4"},scale:{name:"scaling",gltfType:"float3"}}},outputs:{values:{value:{name:"value",gltfType:"float4x4"}}},extraProcessor(e,t,n,o,r,s){const a=r[0].dataInputs.find(e=>"rotationQuaternion"===e.name);if(!a)throw new Error("Rotation quaternion input not found");return s._connectionValues[a.uniqueId]&&(s._connectionValues[a.uniqueId].type="Quaternion"),r}},"math/matDecompose":{blocks:["FlowGraphMatrixDecompose"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{translation:{name:"position"},rotation:{name:"rotationQuaternion"},scale:{name:"scaling"},scaling:{name:"scaling",compatibilityOnly:!0},isValid:{name:"isValid",compatibilityOnly:!0}}},extraProcessor(e,t,n,o,r){var s;return(s=r[0]).config||(s.config={}),r[0].config.keepDegenerateComponents=!0,r}},"math/quatConjugate":lr("FlowGraphConjugateBlock",["a"]),"math/quatMul":{blocks:["FlowGraphMultiplyBlock"],inputs:{values:{a:{name:"a",gltfType:"vector4"},b:{name:"b",gltfType:"vector4"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,o,r){var s;return(s=r[0]).config||(s.config={}),r[0].config.type="Quaternion",r}},"math/quatAngleBetween":lr("FlowGraphAngleBetweenBlock",["a","b"]),"math/quatFromAxisAngle":{blocks:["FlowGraphQuaternionFromAxisAngleBlock"],inputs:{values:{axis:{name:"a",gltfType:"float3"},angle:{name:"b",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/quatToAxisAngle":{blocks:["FlowGraphAxisAngleFromQuaternionBlock"],inputs:{values:{a:{name:"a",gltfType:"float4"}}},outputs:{values:{axis:{name:"axis",gltfType:"float3"},angle:{name:"angle",gltfType:"float"}}}},"math/quatFromDirections":lr("FlowGraphQuaternionFromDirectionsBlock",["a","b"]),"math/quatFromUpForward":{blocks:["FlowGraphQuaternionFromUpForwardBlock"],inputs:{values:{up:{name:"a",gltfType:"float3"},forward:{name:"b",gltfType:"float3"}}},outputs:{values:{value:{name:"value"}}}},"math/quatFromAngles":{blocks:["FlowGraphQuaternionFromAnglesBlock"],configuration:{order:{name:"order",defaultValue:["yxz"]}},inputs:{values:{x:{name:"a",gltfType:"number"},y:{name:"b",gltfType:"number"},z:{name:"c",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/combine2x2":{blocks:["FlowGraphCombineMatrix2DBlock"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/extract2x2":{blocks:["FlowGraphExtractMatrix2DBlock"],inputs:{values:{a:{name:"input",gltfType:"float2x2"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"}}}},"math/combine3x3":{blocks:["FlowGraphCombineMatrix3DBlock"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"},e:{name:"input_4",gltfType:"number"},f:{name:"input_5",gltfType:"number"},g:{name:"input_6",gltfType:"number"},h:{name:"input_7",gltfType:"number"},i:{name:"input_8",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/extract3x3":{blocks:["FlowGraphExtractMatrix3DBlock"],inputs:{values:{a:{name:"input",gltfType:"float3x3"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"},4:{name:"output_4"},5:{name:"output_5"},6:{name:"output_6"},7:{name:"output_7"},8:{name:"output_8"}}}},"math/combine4x4":{blocks:["FlowGraphCombineMatrixBlock"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"},e:{name:"input_4",gltfType:"number"},f:{name:"input_5",gltfType:"number"},g:{name:"input_6",gltfType:"number"},h:{name:"input_7",gltfType:"number"},i:{name:"input_8",gltfType:"number"},j:{name:"input_9",gltfType:"number"},k:{name:"input_10",gltfType:"number"},l:{name:"input_11",gltfType:"number"},m:{name:"input_12",gltfType:"number"},n:{name:"input_13",gltfType:"number"},o:{name:"input_14",gltfType:"number"},p:{name:"input_15",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/extract4x4":{blocks:["FlowGraphExtractMatrixBlock"],configuration:{},inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"},4:{name:"output_4"},5:{name:"output_5"},6:{name:"output_6"},7:{name:"output_7"},8:{name:"output_8"},9:{name:"output_9"},10:{name:"output_10"},11:{name:"output_11"},12:{name:"output_12"},13:{name:"output_13"},14:{name:"output_14"},15:{name:"output_15"}}}},"math/not":{blocks:["FlowGraphBitwiseNotBlock"],inputs:{values:{a:{name:"a"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,o,r,s){var a,i,l;(l=r[0]).config||(l.config={});const u=r[0].dataInputs[0];return r[0].config.valueType=null!==(i=null===(a=s._connectionValues[u.uniqueId])||void 0===a?void 0:a.type)&&void 0!==i?i:"FlowGraphInteger",r}},"math/and":{blocks:["FlowGraphBitwiseAndBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,o,r,s){var a,i,l,u,c;(c=r[0]).config||(c.config={});const d=r[0].dataInputs[0],h=r[0].dataInputs[1];return r[0].config.valueType=null!==(u=null!==(i=null===(a=s._connectionValues[d.uniqueId])||void 0===a?void 0:a.type)&&void 0!==i?i:null===(l=s._connectionValues[h.uniqueId])||void 0===l?void 0:l.type)&&void 0!==u?u:"FlowGraphInteger",r}},"math/or":{blocks:["FlowGraphBitwiseOrBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,o,r,s){var a,i,l,u,c;(c=r[0]).config||(c.config={});const d=r[0].dataInputs[0],h=r[0].dataInputs[1];return r[0].config.valueType=null!==(u=null!==(i=null===(a=s._connectionValues[d.uniqueId])||void 0===a?void 0:a.type)&&void 0!==i?i:null===(l=s._connectionValues[h.uniqueId])||void 0===l?void 0:l.type)&&void 0!==u?u:"FlowGraphInteger",r}},"math/xor":{blocks:["FlowGraphBitwiseXorBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(e,t,n,o,r,s){var a,i,l,u,c;(c=r[0]).config||(c.config={});const d=r[0].dataInputs[0],h=r[0].dataInputs[1];return r[0].config.valueType=null!==(u=null!==(i=null===(a=s._connectionValues[d.uniqueId])||void 0===a?void 0:a.type)&&void 0!==i?i:null===(l=s._connectionValues[h.uniqueId])||void 0===l?void 0:l.type)&&void 0!==u?u:"FlowGraphInteger",r}},"math/asr":lr("FlowGraphBitwiseRightShiftBlock",["a","b"]),"math/lsl":lr("FlowGraphBitwiseLeftShiftBlock",["a","b"]),"math/clz":lr("FlowGraphLeadingZerosBlock"),"math/ctz":lr("FlowGraphTrailingZerosBlock"),"math/popcnt":lr("FlowGraphOneBitsCounterBlock"),"math/rad":lr("FlowGraphDegToRadBlock"),"math/deg":lr("FlowGraphRadToDegBlock"),"type/boolToInt":lr("FlowGraphBooleanToInt"),"type/boolToFloat":lr("FlowGraphBooleanToFloat"),"type/intToBool":lr("FlowGraphIntToBoolean"),"type/intToFloat":lr("FlowGraphIntToFloat"),"type/floatToInt":lr("FlowGraphFloatToInt"),"type/floatToBool":lr("FlowGraphFloatToBoolean"),"flow/sequence":{blocks:["FlowGraphSequenceBlock"],outputs:{flows:{"[segment]":{name:"$1"}}},extraProcessor(e,t,n,o,r){const s=r[0];return s.config||(s.config={}),s.config.outputSignalCount=Object.keys(e.flows||[]).length,s.signalOutputs.forEach((e,t)=>{e.name="out_"+t}),r}},"flow/branch":{blocks:["FlowGraphBranchBlock"],inputs:{values:{condition:{name:"condition",gltfType:"boolean"}}},outputs:{flows:{true:{name:"onTrue"},false:{name:"onFalse"}}}},"flow/switch":{blocks:["FlowGraphSwitchBlock"],configuration:{cases:{name:"cases",isArray:!0,inOptions:!0,defaultValue:[],configurationType:"int[]",invalidUsesDefault:!0,generatesOutputFlowSockets:!0,uniqueValues:!0}},inputs:{values:{selection:{name:"case"},default:{name:"default"}}},outputs:{flows:{default:{name:"default"},"[segment]":{name:"$1"}}},validation(e){var n;const o=null===(n=e.configuration)||void 0===n?void 0:n.cases;if(o&&o.value){if(!o.value.every(e=>"number"==typeof e&&Number.isInteger(e)&&e>=-2147483648&&e<=2147483647))return t.Logger.Warn("Switch cases should be integers. Using empty array instead."),o.value=[],{valid:!0};const e=new Set(o.value);o.value=Array.from(e)}return{valid:!0}},extraProcessor(e,t,n,o,r){if("flow/switch"!==t.op||!e.flows||0===Object.keys(e.flows).length)throw new Error("Switch should have a single configuration object, the cases array");return r[0].signalOutputs.forEach(e=>{"default"!==e.name&&(e.name="out_"+e.name)}),r}},"flow/while":{blocks:["FlowGraphWhileLoopBlock"],inputs:{values:{condition:{name:"condition",gltfType:"boolean"}}},outputs:{flows:{loopBody:{name:"executionFlow"},completed:{name:"completed"}}}},"flow/for":{blocks:["FlowGraphForLoopBlock"],configuration:{initialIndex:{name:"initialIndex",gltfType:"int",inOptions:!0,defaultValue:0,configurationType:"int",invalidUsesDefault:!0}},inputs:{values:{startIndex:{name:"startIndex",gltfType:"int"},endIndex:{name:"endIndex",gltfType:"int"}}},outputs:{values:{index:{name:"index"}},flows:{loopBody:{name:"executionFlow"},completed:{name:"completed"}}},extraProcessor(e,t,n,o,r){const s=r[0];return s.config||(s.config={}),s.config.incrementIndexWhenLoopDone=!0,s.config.maxLoopIterations=2e4,r}},"flow/doN":{blocks:["FlowGraphDoNBlock"],configuration:{},inputs:{values:{n:{name:"maxExecutions",gltfType:"int"}},flows:{reset:{name:"reset"}}},outputs:{flows:{out:{name:"out"}},values:{currentCount:{name:"executionCount"}}}},"flow/multiGate":{blocks:["FlowGraphMultiGateBlock"],inputs:{flows:{reset:{name:"reset"}}},configuration:{isRandom:{name:"isRandom",gltfType:"boolean",inOptions:!0,defaultValue:!1,configurationType:"bool",invalidUsesDefault:!0,configurationGroup:"multiGate"},isLoop:{name:"isLoop",gltfType:"boolean",inOptions:!0,defaultValue:!1,configurationType:"bool",invalidUsesDefault:!0,configurationGroup:"multiGate"}},outputs:{flows:{"[segment]":{name:"$1"}},values:{lastIndex:{name:"lastIndex",gltfType:"int"}}},extraProcessor(e,t,n,o,r){var s;if("flow/multiGate"!==t.op)throw new Error("Invalid operation for MultiGate mapping");const a=r[0];return a.config||(a.config={}),a.config.outputSignalCount=Object.keys(null!==(s=e.flows)&&void 0!==s?s:{}).length,a.signalOutputs.forEach((e,t)=>{e.name="out_"+t}),r}},"flow/waitAll":{blocks:["FlowGraphWaitAllBlock"],configuration:{inputFlows:{name:"inputSignalCount",gltfType:"number",inOptions:!0,defaultValue:[0],configurationType:"int",invalidUsesDefault:!0,minimum:0,maximum:64,generatesInputFlowSockets:!0}},inputs:{flows:{reset:{name:"reset"},"[segment]":{name:"in_$1"}}},outputs:{flows:{out:{name:"out"},completed:{name:"completed"}},values:{remainingInputs:{name:"remainingInputs",gltfType:"int"}}},validation(e){var t,n;const o=null===(n=null===(t=e.configuration)||void 0===t?void 0:t.inputFlows)||void 0===n?void 0:n.value,r=null==o?void 0:o[0];return(1!==(null==o?void 0:o.length)||"number"!=typeof r||!Number.isInteger(r)||r<0||r>64)&&(e.configuration=e.configuration||{inputFlows:{value:[0]}},e.configuration.inputFlows.value=[0]),{valid:!0}}},"flow/throttle":{blocks:["FlowGraphThrottleBlock"],inputs:{values:{duration:{name:"duration",gltfType:"number"}},flows:{reset:{name:"reset"}}},outputs:{flows:{out:{name:"out"},err:{name:"error"}},values:{lastRemainingTime:{name:"lastRemainingTime",gltfType:"number"}}}},"flow/setDelay":{blocks:["FlowGraphSetDelayBlock"],inputs:{values:{duration:{name:"duration",gltfType:"number"}},flows:{cancel:{name:"cancel"}}},outputs:{flows:{out:{name:"out"},err:{name:"error"},done:{name:"done"}},values:{lastDelay:{name:"lastDelayIndex"},lastDelayIndex:{name:"lastDelayIndex",compatibilityOnly:!0}}}},"flow/cancelDelay":{blocks:["FlowGraphCancelDelayBlock"],inputs:{values:{delay:{name:"delayIndex",gltfType:"ref"}}},outputs:{flows:{out:{name:"out"}}}},"variable/get":{blocks:["FlowGraphGetVariableBlock"],validation(e){var n,o;return(null===(o=null===(n=e.configuration)||void 0===n?void 0:n.variable)||void 0===o?void 0:o.value)?{valid:!0}:(t.Logger.Error("Variable get block should have a variable configuration"),{valid:!1,error:"Variable get block should have a variable configuration"})},configuration:{variable:{name:"variable",gltfType:"number",configurationType:"int",required:!0,indexSource:"variables",flowGraphType:"string",inOptions:!0,isVariable:!0,dataTransformer:(e,t)=>t.getVariableName(e)}},outputs:{values:{value:{name:"value"}}}},"variable/set":{blocks:["FlowGraphSetVariableBlock"],inputs:{values:{"[segment]":{name:"$1"}}},configuration:{variables:{name:"variables",gltfType:"number",configurationType:"int[]",required:!0,indexSource:"variables",minItems:1,generatesInputValueSockets:!0,flowGraphType:"string",inOptions:!0,isArray:!0,dataTransformer:(e,t)=>e.map(e=>t.getVariableName(e))}},outputs:{flows:{out:{name:"out",compatibilityOnly:!0}}},extraProcessor:(e,t,n,o,r)=>(r[0].dataInputs.forEach(e=>{e.name=o.getVariableName(+e.name)}),r)},"variable/interpolate":{blocks:["FlowGraphInterpolationBlock","FlowGraphContextBlock","FlowGraphPlayAnimationBlock","FlowGraphBezierCurveEasing","FlowGraphGetVariableBlock"],configuration:{variable:{name:"propertyName",configurationType:"int",required:!0,indexSource:"variables",inOptions:!0,isVariable:!0,dataTransformer:(e,t)=>t.getVariableName(e)},useSlerp:{name:"animationType",configurationType:"bool",required:!0,inOptions:!0,dataTransformer:e=>!0===e?"Quaternion":void 0}},inputs:{values:{value:{name:"value_1"},duration:{name:"duration_1",gltfType:"number"},p1:{name:"controlPoint1",toBlock:"FlowGraphBezierCurveEasing"},p2:{name:"controlPoint2",toBlock:"FlowGraphBezierCurveEasing"}},flows:{in:{name:"in",toBlock:"FlowGraphPlayAnimationBlock"}}},outputs:{flows:{err:{name:"error",toBlock:"FlowGraphPlayAnimationBlock"},out:{name:"out",toBlock:"FlowGraphPlayAnimationBlock"},done:{name:"done",toBlock:"FlowGraphPlayAnimationBlock"}}},interBlockConnectors:[{input:"object",output:"userVariables",inputBlockIndex:2,outputBlockIndex:1,isVariable:!0},{input:"animation",output:"animation",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0},{input:"easingFunction",output:"easingFunction",inputBlockIndex:0,outputBlockIndex:3,isVariable:!0},{input:"value_0",output:"value",inputBlockIndex:0,outputBlockIndex:4,isVariable:!0}],extraProcessor(e,n,o,r,s){var a,i,l,u,c,d;const h=s[0],m=null===(i=null===(a=e.configuration)||void 0===a?void 0:a.variable.value)||void 0===i?void 0:i[0];if("number"!=typeof m)throw t.Logger.Error("Variable index is not defined for variable interpolation block"),new Error("Variable index is not defined for variable interpolation block");const p=r.arrays.staticVariables[m];void 0===(null===(u=null===(l=h.config)||void 0===l?void 0:l.animationType)||void 0===u?void 0:u.value)&&(h.config||(h.config={}),(c=h.config).animationType||(c.animationType={}),h.config.animationType.value=t.getAnimationTypeByFlowGraphType(p.type));const f=s[4];return f.config||(f.config={}),(d=f.config).variable||(d.variable={}),f.config.variable.value=r.getVariableName(m),s}},"pointer/get":{blocks:["FlowGraphGetPropertyBlock","FlowGraphJsonPointerParserBlock"],validation:e=>hr(e),configuration:{pointer:{name:"jsonPointer",toBlock:"FlowGraphJsonPointerParserBlock",configurationType:"string",required:!0,pointerTemplate:!0},type:{name:"type",configurationType:"int",required:!0,validationOnly:!0,indexSource:"types"}},inputs:{values:{"[segment]":{name:"$1",toBlock:"FlowGraphJsonPointerParserBlock"}}},outputs:{values:{value:{name:"value"},isValid:{name:"isValid",gltfType:"bool"}}},interBlockConnectors:[{input:"object",output:"object",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"propertyName",output:"propertyName",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"customGetFunction",output:"getFunction",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0}],extraProcessor:(e,t,n,o,r)=>(r.forEach(e=>{"FlowGraphJsonPointerParserBlock"===e.className&&(e.config||(e.config={}),e.config.outputValue=!0)}),r)},"pointer/set":{blocks:["FlowGraphSetPropertyBlock","FlowGraphJsonPointerParserBlock"],validation:e=>hr(e,new Set(["value"])),configuration:{pointer:{name:"jsonPointer",toBlock:"FlowGraphJsonPointerParserBlock",configurationType:"string",required:!0,pointerTemplate:!0},type:{name:"type",configurationType:"int",required:!0,validationOnly:!0,indexSource:"types"}},inputs:{values:{value:{name:"value"},"[segment]":{name:"$1",toBlock:"FlowGraphJsonPointerParserBlock"}}},outputs:{flows:{err:{name:"error"},out:{name:"out",compatibilityOnly:!0}}},interBlockConnectors:[{input:"object",output:"object",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"propertyName",output:"propertyName",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"customSetFunction",output:"setFunction",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0}],extraProcessor:(e,t,n,o,r)=>(r.forEach(e=>{"FlowGraphJsonPointerParserBlock"===e.className&&(e.config||(e.config={}),e.config.outputValue=!0)}),r)},"pointer/interpolate":{blocks:["FlowGraphInterpolationBlock","FlowGraphJsonPointerParserBlock","FlowGraphPlayAnimationBlock","FlowGraphBezierCurveEasing"],validation:e=>hr(e,new Set(["value","duration","p1","p2"])),configuration:{pointer:{name:"jsonPointer",toBlock:"FlowGraphJsonPointerParserBlock",configurationType:"string",required:!0,pointerTemplate:!0},type:{name:"type",configurationType:"int",required:!0,validationOnly:!0,indexSource:"types",allowedSignatures:["float","float2","float3","float4","float2x2","float3x3","float4x4"]}},inputs:{values:{value:{name:"value_1"},"[segment]":{name:"$1",toBlock:"FlowGraphJsonPointerParserBlock"},duration:{name:"duration_1",gltfType:"number"},p1:{name:"controlPoint1",toBlock:"FlowGraphBezierCurveEasing"},p2:{name:"controlPoint2",toBlock:"FlowGraphBezierCurveEasing"}},flows:{in:{name:"in",toBlock:"FlowGraphPlayAnimationBlock"}}},outputs:{flows:{err:{name:"error",toBlock:"FlowGraphPlayAnimationBlock"},out:{name:"out",toBlock:"FlowGraphPlayAnimationBlock"},done:{name:"done",toBlock:"FlowGraphPlayAnimationBlock"}}},interBlockConnectors:[{input:"object",output:"object",inputBlockIndex:2,outputBlockIndex:1,isVariable:!0},{input:"propertyName",output:"propertyName",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"customBuildAnimation",output:"generateAnimationsFunction",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"animation",output:"animation",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0},{input:"easingFunction",output:"easingFunction",inputBlockIndex:0,outputBlockIndex:3,isVariable:!0},{input:"value_0",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0}],extraProcessor:(e,t,n,o,r)=>(r.forEach(t=>{"FlowGraphJsonPointerParserBlock"===t.className?(t.config||(t.config={}),t.config.outputValue=!0):"FlowGraphInterpolationBlock"===t.className&&(t.config||(t.config={}),Object.keys(e.values||[]).forEach(n=>{var r;const s=null===(r=e.values)||void 0===r?void 0:r[n];if("value"===n&&s){const e=s.type;void 0!==e&&(t.config.animationType=o.arrays.types[e].flowGraphType)}}))}),r)},"animation/start":{blocks:["FlowGraphPlayAnimationBlock","FlowGraphArrayIndexBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],inputs:{values:{animation:{name:"index",gltfType:"ref",toBlock:"FlowGraphArrayIndexBlock"},speed:{name:"speed",gltfType:"number"},startTime:{name:"from",gltfType:"number",convertConnectedTimeToFrames:!0,dataTransformer:(e,t)=>[e[0]*t._animationTargetFps]},endTime:{name:"to",gltfType:"number",convertConnectedTimeToFrames:!0,dataTransformer:(e,t)=>[e[0]*t._animationTargetFps]}}},outputs:{flows:{out:{name:"out"},err:{name:"error"},done:{name:"done"}}},interBlockConnectors:[{input:"animationGroup",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"animationGroups",inputBlockIndex:1,outputBlockIndex:2,isVariable:!0}],extraProcessor(e,t,n,o,r,s,a){const i=r.find(e=>"FlowGraphPlayAnimationBlock"===e.className);i&&(i.config.useVirtualTimeline=!0);const l=r.find(e=>"FlowGraphArrayIndexBlock"===e.className);l&&(l.config.referenceCollection="animations");const u=r[r.length-1];return u.config||(u.config={}),u.config.glTF=a,r}},"animation/stop":{blocks:["FlowGraphStopAnimationBlock","FlowGraphArrayIndexBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],inputs:{values:{animation:{name:"index",gltfType:"ref",toBlock:"FlowGraphArrayIndexBlock"}}},outputs:{flows:{out:{name:"out"},err:{name:"error"}}},interBlockConnectors:[{input:"animationGroup",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"animationGroups",inputBlockIndex:1,outputBlockIndex:2,isVariable:!0}],extraProcessor(e,t,n,o,r,s,a){const i=r.find(e=>"FlowGraphStopAnimationBlock"===e.className);i&&(i.config.skipOnAnimationEnd=!0);const l=r.find(e=>"FlowGraphArrayIndexBlock"===e.className);l&&(l.config.referenceCollection="animations");const u=r[r.length-1];return u.config||(u.config={}),u.config.glTF=a,r}},"animation/stopAt":{blocks:["FlowGraphStopAnimationBlock","FlowGraphArrayIndexBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],configuration:{},inputs:{values:{animation:{name:"index",gltfType:"ref",toBlock:"FlowGraphArrayIndexBlock"},stopTime:{name:"stopAtFrame",gltfType:"number",convertConnectedTimeToFrames:!0,dataTransformer:(e,t)=>[e[0]*t._animationTargetFps]}}},outputs:{flows:{out:{name:"out"},err:{name:"error"},done:{name:"done"}}},interBlockConnectors:[{input:"animationGroup",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"animationGroups",inputBlockIndex:1,outputBlockIndex:2,isVariable:!0}],extraProcessor(e,t,n,o,r,s,a){const i=r.find(e=>"FlowGraphStopAnimationBlock"===e.className);i&&(i.config.useVirtualStopAt=!0,i.config.skipOnAnimationEnd=!0);const l=r.find(e=>"FlowGraphArrayIndexBlock"===e.className);l&&(l.config.referenceCollection="animations");const u=r[r.length-1];return u.config||(u.config={}),u.config.glTF=a,r}},"math/switch":{blocks:["FlowGraphDataSwitchBlock"],configuration:{cases:{name:"cases",isArray:!0,inOptions:!0,defaultValue:[],configurationType:"int[]",invalidUsesDefault:!0,generatesCaseInputValueSockets:!0,uniqueValues:!0}},inputs:{values:{selection:{name:"case",gltfType:"int"},default:{name:"default"},"[case]":{name:"$1"}}},outputs:{values:{value:{name:"value"}}},validation(e){var n;const o=null===(n=e.configuration)||void 0===n?void 0:n.cases;if(o&&o.value){if(!o.value.every(e=>"number"==typeof e&&/^-?\d+$/.test(e.toString())))return t.Logger.Warn("Switch cases should be integers. Using empty array instead."),o.value=[],{valid:!0};const e=new Set(o.value);o.value=Array.from(e)}return{valid:!0}},extraProcessor(e,t,n,o,r){const s=r[0];return s.dataInputs.forEach(e=>{"default"!==e.name&&"case"!==e.name&&(e.name="in_"+e.name)}),s.config||(s.config={}),s.config.treatCasesAsIntegers=!0,r}},"debug/log":{blocks:["FlowGraphConsoleLogBlock"],inputs:{flows:{in:{name:"in"}},values:{"[parameter]":{name:"$1"}}},outputs:{flows:{out:{name:"out"}}},configuration:{severity:{name:"severity",configurationType:"int",defaultValue:0,invalidUsesDefault:!0,validationOnly:!0,configurationGroup:"debugLog"},message:{name:"messageTemplate",configurationType:"string",defaultValue:"",invalidUsesDefault:!0,inOptions:!0,configurationGroup:"debugLog",debugLogTemplate:!0}}}};function lr(e,t=["a"],n){return{blocks:[e],inputs:{values:t.reduce((e,t)=>(e[t]={name:t},e),{})},outputs:{values:{value:{name:"value",typeSourceInput:t[0]}}},extraProcessor(e,t,o,r,s){var a;if(n){(a=s[0]).config||(a.config={}),s[0].config.preventIntegerFloatArithmetic=!0;let t=-1;Object.keys(e.values||{}).find(n=>{var o;return void 0!==(null===(o=e.values)||void 0===o?void 0:o[n].type)&&(t=e.values[n].type,!0)}),-1!==t&&(s[0].config.type=r.arrays.types[t].flowGraphType)}return s},validation:e=>n?ur(e):{valid:!0}}}function ur(e){if(e.values){const t=Object.keys(e.values).map(t=>e.values[t].type).filter(e=>void 0!==e);if(!t.every(e=>e===t[0]))return{valid:!1,error:"All inputs must be of the same type"}}return{valid:!0}}function cr(e){for(let t=0;t<e.length;t++){const n=e[t];if(-1==="[]{}".indexOf(n))continue;let o=1;for(;e[t+o]===n;)o++;if(o%2!=0)return!0;t+=o-1}return!1}function dr(e){let t=0,n=-1;const o=[],r=new Set;for(let s=0;s<e.length;s++){const a=e[s];if("{"===a)if(0===t)t=1;else{if(1!==t)return{valid:!1,sockets:[]};t=0}else if("}"===a)if(0===t)t=3;else if(3===t)t=0;else{if(2!==t)return{valid:!1,sockets:[]};{const a=e.substring(n+1,s);r.has(a)||(r.add(a),o.push(a)),t=0}}else if(1===t)n=s-1,t=2;else if(3===t)return{valid:!1,sockets:[]}}return{valid:0===t,sockets:0===t?o:[]}}function hr(e,t=new Set){var n,o,r;const s=null===(r=null===(o=null===(n=e.configuration)||void 0===n?void 0:n.pointer)||void 0===o?void 0:o.value)||void 0===r?void 0:r[0];if("string"!=typeof s)return{valid:!1,error:"A pointer operation requires a string `pointer` configuration value"};if(0!==s.length&&"/"!==s[0])return{valid:!1,error:`The JSON Pointer Template "${s}" is not a syntactically valid JSON Pointer`};const a=e=>({valid:!1,error:`The JSON Pointer Template "${s}" is invalid: ${e}`}),i=new Set;for(const e of s.split("/")){if(/~(?:[^01]|$)/.test(e))return a(`the path segment "${e}" contains an invalid RFC 6901 escape`);const n="["===e[0]&&"["!==e[1],o="{"===e[0]&&"{"!==e[1];if(!n&&!o){if(cr(e))return a(`the path segment "${e}" contains an odd number of consecutive brackets`);continue}const r=n?"]":"}",s=e.substring(1,e.length-1);if(e.length<3||e[e.length-1]!==r||/[[{]/.test(s)||/[\]}]/.test(s))return a(`the template parameter path segment "${e}" is malformed`);const l=s.replace(/~1/g,"/").replace(/~0/g,"~");if(t.has(l))return a(`the template parameter "${l}" uses a reserved input socket id`);if(i.has(l))return a(`the template parameter "${l}" is used more than once`);i.add(l)}return{valid:!0}}function mr(){return Object.keys(ir)}const pr="f798712c5685bc9223a628140fba707db8889300",fr={float:{length:1,flowGraphType:"number",elementType:"number"},bool:{length:1,flowGraphType:"boolean",elementType:"boolean"},float2:{length:2,flowGraphType:"Vector2",elementType:"number"},float3:{length:3,flowGraphType:"Vector3",elementType:"number"},float4:{length:4,flowGraphType:"Vector4",elementType:"number"},float4x4:{length:16,flowGraphType:"Matrix",elementType:"number"},float2x2:{length:4,flowGraphType:"Matrix2D",elementType:"number"},float3x3:{length:9,flowGraphType:"Matrix3D",elementType:"number"},int:{length:1,flowGraphType:"FlowGraphInteger",elementType:"number"},ref:{length:1,flowGraphType:"string",elementType:"string"},custom:{length:0,flowGraphType:"any",elementType:"any"}};function _r(e){if(Array.isArray(e))return e.map(e=>_r(e));if(null!==e&&"object"==typeof e){const t={};for(const[n,o]of Object.entries(e))Object.defineProperty(t,n,{configurable:!0,enumerable:!0,value:_r(o),writable:!0});return t}return e}function gr(e){return _r(e)}function vr(e,t){return"number"==typeof e&&Number.isInteger(e)&&e>=0&&e<t}function yr(e,t,n){e.push({path:t,message:n,severity:"error"})}function br(e){return""===e||/^(?:\/(?:[^~]|~[01])*)*$/.test(e)}function Tr(e,t,n,o,r,s){var a,i,l,u,c,d;if(e&&Object.prototype.hasOwnProperty.call(e,t))return!0;if(t===s&&e&&Object.prototype.hasOwnProperty.call(e,s))return!0;if(!Object.keys(null!=e?e:{}).some(e=>e.startsWith("[")&&e.endsWith("]")))return!1;if("event/receive"===n.operation){const e=null===(l=null===(i=null===(a=o.configuration)||void 0===a?void 0:a.event)||void 0===i?void 0:i.value)||void 0===l?void 0:l[0];return"number"==typeof e&&Object.prototype.hasOwnProperty.call(null!==(d=null===(c=null===(u=r.events)||void 0===u?void 0:u[e])||void 0===c?void 0:c.values)&&void 0!==d?d:{},t)}return!0}function xr(e,t,n,o){var r,s;return!!vr(e,null!==(s=null===(r=t.types)||void 0===r?void 0:r.length)&&void 0!==s?s:0)||(yr(n,o,`Type index ${String(e)} is out of range.`),!1)}function Ar(e,t,n,o){if(!xr(e.type,t,n,`${o}/type`))return;if(void 0===e.value)return;const r=t.types[e.type],s=fr[r.signature];s&&"custom"!==r.signature&&e.value.length!==s.length&&yr(n,`${o}/value`,`Expected ${s.length} value component(s) for type "${r.signature}", received ${e.value.length}.`);for(let t=0;t<e.value.length;t++){const s=e.value[t];let a=!0;switch(r.signature){case"bool":a="boolean"==typeof s;break;case"int":a="number"==typeof s&&Number.isInteger(s)&&s>=-2147483648&&s<=2147483647;break;case"float":case"float2":case"float3":case"float4":case"float2x2":case"float3x3":case"float4x4":a="number"==typeof s&&Number.isFinite(s);break;case"ref":a="string"==typeof s&&br(s)}a||yr(n,`${o}/value/${t}`,`Value component is invalid for type "${r.signature}".`)}}function Rr(e,t){if(!e)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=-2147483648&&e<=2147483647;switch(t){case"bool":return 1===e.length&&"boolean"==typeof e[0];case"int":return 1===e.length&&n(e[0]);case"int[]":return e.every(n);case"string":return 1===e.length&&"string"==typeof e[0];default:return e.length>0}}function Cr(e,t,n){var o,r,s,a,i,l,u,c;switch(t){case"types":return null!==(r=null===(o=e.types)||void 0===o?void 0:o.length)&&void 0!==r?r:0;case"variables":return null!==(a=null===(s=e.variables)||void 0===s?void 0:s.length)&&void 0!==a?a:0;case"events":return null!==(l=null===(i=e.events)||void 0===i?void 0:i.length)&&void 0!==l?l:0;case"nodes":return null!==(c=null===(u=e.nodes)||void 0===u?void 0:u.length)&&void 0!==c?c:0;case"assetNodes":return null!=n?n:0;default:return 0}}function wr(e,t,n,o){var r,s;if(!e||!Rr(e.value,t.configurationType)||!e.value)return!1;if(void 0!==t.minItems&&e.value.length<t.minItems)return!1;if(void 0!==t.minimum&&e.value.some(e=>"number"!=typeof e||e<t.minimum))return!1;if(void 0!==t.maximum&&e.value.some(e=>"number"!=typeof e||e>t.maximum))return!1;if(t.indexSource){const r=Cr(n,t.indexSource,o);if(e.value.some(e=>!vr(e,r)))return!1}if(t.allowedSignatures){const o=e.value[0],a="number"==typeof o?null===(s=null===(r=n.types)||void 0===r?void 0:r[o])||void 0===s?void 0:s.signature:void 0;if(!a||!t.allowedSignatures.includes(a))return!1}return!(t.debugLogTemplate&&!dr(e.value[0]).valid)}function Or(e,t,n,o){var r,s;for(const[a,i]of Object.entries(null!==(r=t.configuration)&&void 0!==r?r:{})){if(!i.generatesOutputFlowSockets)continue;const t=null===(s=e.configuration)||void 0===s?void 0:s[a],r=wr(t,i,n,o)?t.value:i.defaultValue;return new Set(Array.isArray(r)?r.map(String):[])}}function Mr(e,t,n){var o;const r=null===(o=e.outputs)||void 0===o?void 0:o.flows;return!(!r||!Object.prototype.hasOwnProperty.call(r,t))||(!Object.keys(null!=r?r:{}).some(e=>e.startsWith("[")&&e.endsWith("]"))||!n||n.has(t))}function Er(e,t,n){var o,r,s,a,i,l,u,c;const d=gr(e);for(let e=0;e<(null!==(r=null===(o=d.nodes)||void 0===o?void 0:o.length)&&void 0!==r?r:0);e++){const o=d.nodes[e],r=t[o.declaration];if(!r||"unknown-core"===r.support||"unsupported-extension"===r.support)continue;const h=or(r.source,!1);if(!(null==h?void 0:h.configuration))continue;const m=new Map;for(const[e,t]of Object.entries(h.configuration))if(t.configurationGroup){const r=wr(null===(s=o.configuration)||void 0===s?void 0:s[e],t,d,n);m.set(t.configurationGroup,(null===(a=m.get(t.configurationGroup))||void 0===a||a)&&r)}for(const[e,t]of Object.entries(h.configuration)){const r=(!t.configurationGroup||!0===m.get(t.configurationGroup))&&wr(null===(i=o.configuration)||void 0===i?void 0:i[e],t,d,n);r||void 0===t.defaultValue?r&&t.uniqueValues&&(null===(c=null===(u=o.configuration)||void 0===u?void 0:u[e])||void 0===c?void 0:c.value)&&(o.configuration[e].value=Array.from(new Set(o.configuration[e].value))):(null!==(l=o.configuration)&&void 0!==l||(o.configuration={}),o.configuration[e]={value:Array.isArray(t.defaultValue)?_r(t.defaultValue):[t.defaultValue]})}}return d}function Sr(e){const t=[];for(const n of e.split("/")){const e=n.startsWith("[")&&!n.startsWith("[[")?"int":n.startsWith("{")&&!n.startsWith("{{")?"ref":void 0;if(e){const o=n.substring(1,n.length-1).replace(/~1/g,"/").replace(/~0/g,"~");t.push({name:o,signature:e})}}return t}function Ir(e,t,n,o=new Set){var r;return"node"in e?Nr(e.node,null!==(r=e.socket)&&void 0!==r?r:"value",t,n,o):e.type}function Nr(e,t,n,o,r=new Set){var s,a,i,l,u,c,d,h,m,p,f,_,g,v,y,b,T,x,A,R,C,w,O,M,E;const S=`${e}:${t}`;if(r.has(S))return;if(r.add(S),!vr(e,null!==(a=null===(s=n.nodes)||void 0===s?void 0:s.length)&&void 0!==a?a:0))return;const I=n.nodes[e];if(!vr(I.declaration,o.length))return;const N=o[I.declaration],L=null===(l=null===(i=N.source.outputValueSockets)||void 0===i?void 0:i[t])||void 0===l?void 0:l.type;if(void 0!==L)return L;if("isValid"===t)return(()=>{var e;return null===(e=n.types)||void 0===e?void 0:e.findIndex(e=>"bool"===e.signature)})();if("pointer/get"===N.operation&&"value"===t){const e=null===(d=null===(c=null===(u=I.configuration)||void 0===u?void 0:u.type)||void 0===c?void 0:c.value)||void 0===d?void 0:d[0];return"number"==typeof e?e:void 0}if("variable/get"===N.operation&&"value"===t){const e=null===(p=null===(m=null===(h=I.configuration)||void 0===h?void 0:h.variable)||void 0===m?void 0:m.value)||void 0===p?void 0:p[0];return"number"==typeof e?null===(_=null===(f=n.variables)||void 0===f?void 0:f[e])||void 0===_?void 0:_.type:void 0}if("math/switch"===N.operation&&"value"===t){const e=null===(g=I.values)||void 0===g?void 0:g.default;return e?Ir(e,n,o,r):void 0}if("event/receive"===N.operation&&"event"!==t){const e=null===(b=null===(y=null===(v=I.configuration)||void 0===v?void 0:v.event)||void 0===y?void 0:y.value)||void 0===b?void 0:b[0];return"number"==typeof e?null===(R=null===(A=null===(x=null===(T=n.events)||void 0===T?void 0:T[e])||void 0===x?void 0:x.values)||void 0===A?void 0:A[t])||void 0===R?void 0:R.type:void 0}const k=function(e,t){return"value"!==t?"math/rgbToOkLCh"===e&&["l","c","h"].includes(t)||"math/rgbFromOkLCh"===e&&["r","g","b"].includes(t)||e.startsWith("math/extract")?"float":"math/matDecompose"===e?"rotation"===t?"float4":"translation"===t||"scale"===t?"float3":void 0:"math/quatToAxisAngle"===e?"axis"===t?"float3":"angle"===t?"float":void 0:"flow/doN"===e&&"currentCount"===t||"flow/for"===e&&"index"===t?"int":"flow/setDelay"===e&&"lastDelay"===t?"ref":"flow/throttle"===e&&"lastRemainingTime"===t?"float":"event/onStart"!==e&&"event/onTick"!==e&&"event/receive"!==e||"event"!==t?"event/onTick"===e&&"timeSinceLastTick"===t||"event/onTick"===e&&"timeSinceStart"===t?"float":void 0:"ref":["math/E","math/Pi","math/Tau","math/Inf","math/NaN","math/random","math/length","math/dot","math/determinant","math/quatAngleBetween"].includes(e)?"float":["math/eq","ref/eq","math/lt","math/le","math/gt","math/ge","math/isNaN","math/isInf","type/intToBool","type/floatToBool"].includes(e)?"bool":["math/clz","math/ctz","math/popcnt","type/boolToInt","type/floatToInt"].includes(e)?"int":["type/boolToFloat","type/intToFloat"].includes(e)?"float":void 0}(N.operation,t);if(k)return null===(C=n.types)||void 0===C?void 0:C.findIndex(e=>e.signature===k);const F=or(N.source,!1),B=null===(O=null===(w=null==F?void 0:F.outputs)||void 0===w?void 0:w.values)||void 0===O?void 0:O[t],P=null==B?void 0:B.gltfType,G="number"===P?"float":"boolean"===P?"bool":P;if(G&&G in fr)return null===(M=n.types)||void 0===M?void 0:M.findIndex(e=>e.signature===G);const V=(null==B?void 0:B.typeSourceInput)?null===(E=I.values)||void 0===E?void 0:E[B.typeSourceInput]:void 0;return V?Ir(V,n,o,r):void 0}function Lr(e,t,n,o,r,s,a){var i,l,u,c,d,h,m,p,f,_,g,v,y,b,T,x,A,R,C,w,O,M,E,S,I,N,L,k,F,B,P,G,V,$,D,H,K,W,U,j,z,q,Y;const X=`${s}/nodes/${t}`;if(!vr(e.declaration,o.length))return void yr(r,`${X}/declaration`,`Declaration index ${String(e.declaration)} is out of range.`);const Q=o[e.declaration],Z="unsupported-extension"===Q.support?rr(Q.source):or(Q.source,!1);if("unknown-core"===Q.support||!Z)return;const J=(e,t,n)=>{e.invalidUsesDefault||void 0!==e.defaultValue?function(e,t,n){e.push({path:t,message:n,severity:"warning"})}(r,t,`${n} The default configuration will be used.`):yr(r,t,n)};for(const[t,n]of Object.entries(null!==(i=e.configuration)&&void 0!==i?i:{}))n.value&&0===n.value.length&&yr(r,`${X}/configuration/${t}/value`,"Configuration value arrays must contain at least one item when present.");for(const[t,s]of Object.entries(null!==(l=Z.configuration)&&void 0!==l?l:{})){const i=null===(u=e.configuration)||void 0===u?void 0:u[t],l=!!i&&Rr(i.value,s.configurationType);if(!i&&s.required?yr(r,`${X}/configuration/${t}`,`Required configuration "${t}" is missing.`):i&&!l&&J(s,`${X}/configuration/${t}`,`Configuration "${t}" is invalid.`),l&&i.value&&void 0!==s.minItems&&i.value.length<s.minItems&&yr(r,`${X}/configuration/${t}/value`,`Configuration "${t}" requires at least ${s.minItems} value(s).`),l&&i.value&&s.indexSource){const e=Cr(n,s.indexSource,a);for(let n=0;n<i.value.length;n++)vr(i.value[n],e)||J(s,`${X}/configuration/${t}/value/${n}`,`Index is out of range for graph ${s.indexSource}.`)}if(l&&i.value&&s.allowedSignatures){const e=i.value[0],o="number"==typeof e?null===(d=null===(c=n.types)||void 0===c?void 0:c[e])||void 0===d?void 0:d.signature:void 0;o&&s.allowedSignatures.includes(o)||J(s,`${X}/configuration/${t}/value/0`,`Type "${String(o)}" is not supported by this operation.`)}if(l&&i.value&&s.debugLogTemplate&&!dr(i.value[0]).valid&&J(s,`${X}/configuration/${t}/value/0`,`Configuration "${t}" is not a valid debug message template.`),l&&i.value&&(void 0!==s.minimum||void 0!==s.maximum)){const e=i.value[0];(void 0!==s.minimum&&e<s.minimum||void 0!==s.maximum&&e>s.maximum)&&J(s,`${X}/configuration/${t}/value/0`,`Configuration "${t}" must be between ${String(s.minimum)} and ${String(s.maximum)}.`)}if(l&&i.value&&s.generatesInputValueSockets)for(const t of i.value){if("number"!=typeof t||!vr(t,null!==(m=null===(h=n.variables)||void 0===h?void 0:h.length)&&void 0!==m?m:0))continue;const s=null===(p=e.values)||void 0===p?void 0:p[String(t)];s?Ir(s,n,o)!==n.variables[t].type&&yr(r,`${X}/values/${t}/type`,`Configured input value socket "${t}" has the wrong type.`):yr(r,`${X}/values/${t}`,`Required configured input value socket "${t}" is missing.`)}if(l&&i.value&&s.generatesCaseInputValueSockets){const t=(null===(f=e.values)||void 0===f?void 0:f.default)?Ir(e.values.default,n,o):void 0;for(const s of i.value){const a=null===(_=e.values)||void 0===_?void 0:_[String(s)];a?void 0!==t&&Ir(a,n,o)!==t&&yr(r,`${X}/values/${s}/type`,`Case input value socket "${s}" must match the default socket type.`):yr(r,`${X}/values/${s}`,`Required case input value socket "${s}" is missing.`)}}if(l&&i.value&&s.pointerTemplate&&"string"==typeof i.value[0])for(const t of Sr(i.value[0])){const s=null===(g=e.values)||void 0===g?void 0:g[t.name],a=null!==(y=null===(v=n.types)||void 0===v?void 0:v.findIndex(e=>e.signature===t.signature))&&void 0!==y?y:-1;s?(a<0||Ir(s,n,o)!==a)&&yr(r,`${X}/values/${t.name}/type`,`Pointer template input "${t.name}" must have type "${t.signature}".`):yr(r,`${X}/values/${t.name}`,`Required pointer template input "${t.name}" is missing.`)}}if("debug/log"===Q.operation){const t=null===(b=Z.configuration)||void 0===b?void 0:b.severity,o=null===(T=Z.configuration)||void 0===T?void 0:T.message,s=!!t&&wr(null===(x=e.configuration)||void 0===x?void 0:x.severity,t,n,a),i=!!o&&wr(null===(A=e.configuration)||void 0===A?void 0:A.message,o,n,a),l=s&&i?e.configuration.message.value[0]:"";for(const t of dr(l).sockets)(null===(R=e.values)||void 0===R?void 0:R[t])||yr(r,`${X}/values/${t}`,`Required debug message template input "${t}" is missing.`)}for(const[t,s]of Object.entries(null!==(w=null===(C=Z.inputs)||void 0===C?void 0:C.values)&&void 0!==w?w:{})){if(t.startsWith("[")||(null===(O=e.values)||void 0===O?void 0:O[t])||yr(r,`${X}/values/${t}`,`Required input value socket "${t}" is missing.`),"event/send"===Q.operation){const t=null===(S=null===(E=null===(M=e.configuration)||void 0===M?void 0:M.event)||void 0===E?void 0:E.value)||void 0===S?void 0:S[0],s="number"==typeof t?null===(I=n.events)||void 0===I?void 0:I[t]:void 0;for(const[t,a]of Object.entries(null!==(N=null==s?void 0:s.values)&&void 0!==N?N:{})){const s=null===(L=e.values)||void 0===L?void 0:L[t];s?Ir(s,n,o)!==a.type&&yr(r,`${X}/values/${t}/type`,`Custom event input value socket "${t}" has the wrong type.`):yr(r,`${X}/values/${t}`,`Required custom event input value socket "${t}" is missing.`)}}const a="number"===s.gltfType?"float":"boolean"===s.gltfType?"bool":s.gltfType,i=null===(k=e.values)||void 0===k?void 0:k[t];if(i&&a&&a in fr){const e=Ir(i,n,o);void 0!==e&&(null===(B=null===(F=n.types)||void 0===F?void 0:F[e])||void 0===B?void 0:B.signature)!==a&&yr(r,`${X}/values/${t}/type`,`Input value socket "${t}" must have type "${a}".`)}}if(Z.validation)try{const t=_r(e);for(const e of Object.values(null!==(P=t.values)&&void 0!==P?P:{}))void 0===e.type&&(e.type=Ir(e,n,o));const s=Z.validation(t,n);s.valid||yr(r,X,null!==(G=s.error)&&void 0!==G?G:`Operation "${Q.operation}" is invalid.`)}catch(e){yr(r,X,e.message)}for(const[s,a]of Object.entries(null!==(V=e.values)&&void 0!==V?V:{}))if("unsupported-extension"!==Q.support||(null===($=Q.source.inputValueSockets)||void 0===$?void 0:$[s])||yr(r,`${X}/values/${s}`,`Input value socket "${s}" is not defined by operation "${Q.operation}".`),"node"in a){if("value"in a&&yr(r,`${X}/values/${s}`,"An input value socket cannot define both inline and node sources."),!vr(a.node,null!==(H=null===(D=n.nodes)||void 0===D?void 0:D.length)&&void 0!==H?H:0)){yr(r,`${X}/values/${s}/node`,`Node index ${String(a.node)} is out of range.`);continue}a.node>=t&&yr(r,`${X}/values/${s}/node`,"Value connections must reference an earlier node."),void 0!==a.type&&xr(a.type,n,r,`${X}/values/${s}/type`);const e=n.nodes[a.node];if(vr(e.declaration,o.length)){const t=o[e.declaration],i="unsupported-extension"===t.support?rr(t.source):or(t.source,!1),l=null!==(K=a.socket)&&void 0!==K?K:"value",u=Tr(null===(W=null==i?void 0:i.outputs)||void 0===W?void 0:W.values,l,t,e,n,"value");i&&!u&&yr(r,`${X}/values/${s}/socket`,`Output value socket "${l}" does not exist on node ${a.node}.`);const c=null===(j=null===(U=t.source.outputValueSockets)||void 0===U?void 0:U[l])||void 0===j?void 0:j.type,d=null!=c?c:Nr(a.node,l,n,o);void 0!==a.type&&void 0!==d&&a.type!==d&&yr(r,`${X}/values/${s}/type`,`Type assertion does not match output socket "${l}".`)}}else Ar(a,n,r,`${X}/values/${s}`);for(const[o,s]of Object.entries(null!==(z=e.flows)&&void 0!==z?z:{}))Mr(Z,o,Or(e,Z,n,a))||yr(r,`${X}/flows/${o}`,`Output flow socket "${o}" is not defined by operation "${Q.operation}".`),vr(s.node,null!==(Y=null===(q=n.nodes)||void 0===q?void 0:q.length)&&void 0!==Y?Y:0)?s.node<=t&&yr(r,`${X}/flows/${o}/node`,"Flow connections must reference a later node."):yr(r,`${X}/flows/${o}/node`,`Node index ${String(s.node)} is out of range.`)}function kr(e,t=0,n,o){var r,s,a,i,l,u,c,d,h,m,p,f,_,g,v,y,b;const T=[],x=`/extensions/KHR_interactivity/graphs/${t}`;null===e||"object"!=typeof e||Array.isArray(e)?(yr(T,x,"Behavior graph must be an object."),e={}):e=gr(e);const A={types:()=>({signature:"custom"}),variables:()=>({type:-1}),events:()=>({}),declarations:()=>({op:""}),nodes:()=>({declaration:-1})};for(const t of["types","variables","events","declarations","nodes"]){const n=e[t];void 0===n||Array.isArray(n)?Array.isArray(n)&&0===n.length?yr(T,`${x}/${t}`,`"${t}" must contain at least one item when present.`):Array.isArray(n)&&(e[t]=n.map((e,n)=>null===e||"object"!=typeof e||Array.isArray(e)?(yr(T,`${x}/${t}/${n}`,`Each "${t}" item must be an object.`),A[t]()):e)):(yr(T,`${x}/${t}`,`"${t}" must be an array when present.`),e[t]=[])}for(let t=0;t<(null!==(s=null===(r=e.events)||void 0===r?void 0:r.length)&&void 0!==s?s:0);t++)e.events[t].values&&0===Object.keys(e.events[t].values).length&&yr(T,`${x}/events/${t}/values`,'"values" must contain at least one property when present.');for(let t=0;t<(null!==(i=null===(a=e.declarations)||void 0===a?void 0:a.length)&&void 0!==i?i:0);t++){const n=e.declarations[t];for(const e of["inputValueSockets","outputValueSockets"])n[e]&&0===Object.keys(n[e]).length&&yr(T,`${x}/declarations/${t}/${e}`,`"${e}" must contain at least one property when present.`)}for(let t=0;t<(null!==(u=null===(l=e.nodes)||void 0===l?void 0:l.length)&&void 0!==u?u:0);t++){const n=e.nodes[t];for(const e of["configuration","values","flows"])n[e]&&0===Object.keys(n[e]).length&&yr(T,`${x}/nodes/${t}/${e}`,`"${e}" must contain at least one property when present.`)}const R=new Set,C=(null!==(c=e.declarations)&&void 0!==c?c:[]).map((t,o)=>{var r,s,a,i;const l=Object.keys(null!==(r=t.inputValueSockets)&&void 0!==r?r:{}).sort().map(e=>`${JSON.stringify(e)}:${t.inputValueSockets[e].type}`).join(","),u=`${JSON.stringify(t.op)}:${JSON.stringify(null!==(s=t.extension)&&void 0!==s?s:"")}:${l}`;R.has(u)&&yr(T,`${x}/declarations/${o}`,"Duplicate equivalent declaration."),R.add(u);const{support:c}=function(e,t,n){const o=e.extension&&n&&!n.has(e.extension)?void 0:or(e,!1);return o?e.extension&&o.declarationSchema&&!function(e,t,n){const o=(e,n)=>{const o=Object.keys(null!=e?e:{}).sort(),r=Object.keys(n).sort();return o.length===r.length&&!o.some((e,t)=>e!==r[t])&&o.every(o=>{var r,s;return(null===(s=null===(r=t.types)||void 0===r?void 0:r[e[o].type])||void 0===s?void 0:s.signature)===n[o]})};return o(e.inputValueSockets,n.inputValueSockets)&&o(e.outputValueSockets,n.outputValueSockets)}(e,t,o.declarationSchema)?{mapping:void 0,support:"unsupported-extension"}:{mapping:o,support:e.extension?"extension":"core"}:{mapping:void 0,support:e.extension?"unsupported-extension":"unknown-core"}}(t,e,n);"unknown-core"===c&&yr(T,`${x}/declarations/${o}/op`,`Unknown core operation "${t.op}".`),t.extension||!t.inputValueSockets&&!t.outputValueSockets||yr(T,`${x}/declarations/${o}`,"Core operation declarations cannot define dynamic value sockets.");for(const[n,r]of Object.entries(null!==(a=t.inputValueSockets)&&void 0!==a?a:{}))xr(r.type,e,T,`${x}/declarations/${o}/inputValueSockets/${n}/type`);for(const[n,r]of Object.entries(null!==(i=t.outputValueSockets)&&void 0!==i?i:{}))xr(r.type,e,T,`${x}/declarations/${o}/outputValueSockets/${n}/type`);return{index:o,operation:t.extension?`${t.op}:${t.extension}`:t.op,support:c,source:t}}),w=new Set;for(let t=0;t<(null!==(h=null===(d=e.types)||void 0===d?void 0:d.length)&&void 0!==h?h:0);t++){const n=e.types[t].signature;"custom"!==n&&w.has(n)&&yr(T,`${x}/types/${t}/signature`,`Duplicate built-in type signature "${n}".`),w.add(n),"custom"===n||fr[n]||yr(T,`${x}/types/${t}/signature`,`Unknown built-in type signature "${n}".`)}for(let t=0;t<(null!==(p=null===(m=e.variables)||void 0===m?void 0:m.length)&&void 0!==p?p:0);t++)Ar(e.variables[t],e,T,`${x}/variables/${t}`);for(let t=0;t<(null!==(_=null===(f=e.events)||void 0===f?void 0:f.length)&&void 0!==_?_:0);t++){const n=e.events[t].id;void 0!==n&&e.events.slice(0,t).some(e=>e.id===n)&&yr(T,`${x}/events/${t}/id`,`Duplicate event id "${n}".`),e.events[t].values&&Object.prototype.hasOwnProperty.call(e.events[t].values,"event")&&yr(T,`${x}/events/${t}/values/event`,'Custom event value socket id "event" is reserved.');for(const[n,o]of Object.entries(null!==(g=e.events[t].values)&&void 0!==g?g:{}))Ar(o,e,T,`${x}/events/${t}/values/${n}`)}for(let t=0;t<(null!==(y=null===(v=e.nodes)||void 0===v?void 0:v.length)&&void 0!==y?y:0);t++)Lr(e.nodes[t],t,e,C,T,x,o);return{index:t,path:x,name:null!==(b=e.name)&&void 0!==b?b:`Graph ${t+1}`,source:e,effectiveSource:Er(e,C,o),declarations:C,diagnostics:T,valid:!T.some(e=>"error"===e.severity)}}function Fr(e,t,n){var o;const r=_r(e),s=[];Array.isArray(r.graphs)||(yr(s,"/extensions/KHR_interactivity/graphs",'"graphs" must be an array.'),r.graphs=[]),0===r.graphs.length&&yr(s,"/extensions/KHR_interactivity/graphs","At least one behavior graph is required.");const a=null!==(o=r.graph)&&void 0!==o?o:0,i=vr(a,r.graphs.length)?a:-1;-1===i&&yr(s,"/extensions/KHR_interactivity/graph",`Default graph index ${String(a)} is out of range.`);const l=r.graphs.map((e,o)=>kr(e,o,t,n));return r.graphs=l.map(e=>e.source),{specificationCommit:pr,source:r,defaultGraphIndex:i,graphs:l,diagnostics:s}}const Br="/extensions/KHR_interactivity/events/",Pr="/extensions/KHR_interactivity/delays/";function Gr(e,t){return e&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}class Vr{constructor(e,t,n=60,o=0,r,s){var a,i;this._gltf=t,this._animationTargetFps=n,this._graphIndex=o,this._supportedExtensions=r,this._declarationModels=s,this._types=[],this._mappings=[],this._staticVariables=[],this._events=[],this._internalEventsCounter=0,this._nodes=[],this._insertedBlocks=[],this._interactivityGraph=this._declarationModels?Er(e,this._declarationModels,null!==(i=null===(a=this._gltf.nodes)||void 0===a?void 0:a.length)&&void 0!==i?i:0):gr(e),this._parseTypes(),this._parseDeclarations(),this._parseVariables(),this._parseEvents(),this._parseNodes()}get _strictValidation(){return!!this._declarationModels}_hasDefaultFlowInput(e){return"flow/waitAll"!==e&&(e.startsWith("flow/")||e.startsWith("animation/")||"pointer/set"===e||"pointer/interpolate"===e||"variable/set"===e||"variable/interpolate"===e||"event/send"===e||"event/stopPropagation"===e||"flow/log:BABYLON"===e)}_getAllowedDynamicValueSockets(e,t,n){var o,r,s,a,i,l,u,c,d,h,m,p,f,_,g,v,y,b;if(("debug/log"===e||"flow/log:BABYLON"===e)&&"input"===n){const n=null===(s=null===(r=null===(o=t.configuration)||void 0===o?void 0:o["debug/log"===e?"message":"messageTemplate"])||void 0===r?void 0:r.value)||void 0===s?void 0:s[0];return new Set("string"==typeof n?dr(n).sockets:[])}if("event/send"===e&&"input"===n||"event/receive"===e&&"output"===n){const e=null===(l=null===(i=null===(a=t.configuration)||void 0===a?void 0:a.event)||void 0===i?void 0:i.value)||void 0===l?void 0:l[0];if("number"==typeof e)return new Set(Object.keys(null!==(d=null===(c=null===(u=this._interactivityGraph.events)||void 0===u?void 0:u[e])||void 0===c?void 0:c.values)&&void 0!==d?d:{}))}if("variable/set"===e&&"input"===n)return new Set((null!==(p=null===(m=null===(h=t.configuration)||void 0===h?void 0:h.variables)||void 0===m?void 0:m.value)&&void 0!==p?p:[]).map(String));if("math/switch"===e&&"input"===n)return new Set((null!==(g=null===(_=null===(f=t.configuration)||void 0===f?void 0:f.cases)||void 0===_?void 0:_.value)&&void 0!==g?g:[]).map(String));if(("pointer/get"===e||"pointer/set"===e||"pointer/interpolate"===e)&&"input"===n){const e=null===(b=null===(y=null===(v=t.configuration)||void 0===v?void 0:v.pointer)||void 0===y?void 0:y.value)||void 0===b?void 0:b[0];if("string"==typeof e)return new Set(e.split("/").filter(e=>e.startsWith("[")&&!e.startsWith("[[")||e.startsWith("{")&&!e.startsWith("{{")).map(e=>e.substring(1,e.length-1).replace(/~1/g,"/").replace(/~0/g,"~")))}}_getAllowedDynamicFlowSockets(e,t,n){var o,r,s;for(const[a,i]of Object.entries(null!==(o=t.configuration)&&void 0!==o?o:{})){if(!("input"===n?i.generatesInputFlowSockets:i.generatesOutputFlowSockets))continue;const t=null===(s=null===(r=e.configuration)||void 0===r?void 0:r[a])||void 0===s?void 0:s.value,o=t&&t.length>0&&("int"!==i.configurationType||1===t.length)&&t.every(e=>{var t,n;return"number"==typeof e&&Number.isInteger(e)&&e>=(null!==(t=i.minimum)&&void 0!==t?t:-2147483648)&&e<=(null!==(n=i.maximum)&&void 0!==n?n:2147483647)}),l=o?t:i.defaultValue;if("input"===n){const e=Array.isArray(l)&&"number"==typeof l[0]?l[0]:0;return new Set(Array.from({length:e},(e,t)=>String(t)))}return new Set(Array.isArray(l)?l.map(String):[])}}get arrays(){return{types:this._types,mappings:this._mappings,staticVariables:this._staticVariables,events:this._events,nodes:this._nodes}}_parseTypes(){if(this._interactivityGraph.types)for(const e of this._interactivityGraph.types)this._types.push(fr[e.signature])}_parseDeclarations(){var e;if(this._interactivityGraph.declarations)for(let n=0;n<this._interactivityGraph.declarations.length;n++){const o=this._interactivityGraph.declarations[n],r=null===(e=this._declarationModels)||void 0===e?void 0:e[n],s=!o.extension||!this._supportedExtensions||this._supportedExtensions.has(o.extension),a="unsupported-extension"===(null==r?void 0:r.support)?void 0:s?or(o,!1):void 0;if(!a&&!o.extension)throw new Error(`Unknown core KHR_interactivity operation "${o.op}".`);const i=null!=a?a:o.extension?rr(o):void 0;if(!i)throw t.Logger.Error(["No mapping found for declaration",o]),new Error("Error parsing declarations");this._mappings.push({flowGraphMapping:i,fullOperationName:o.extension?o.op+":"+o.extension:o.op,declaration:null!=r?r:{index:n,operation:o.extension?`${o.op}:${o.extension}`:o.op,support:a?o.extension?"extension":"core":"unsupported-extension",source:o}})}}_parseVariables(){if(this._interactivityGraph.variables)for(const e of this._interactivityGraph.variables){const t=this._parseVariable(e);this._staticVariables.push(t)}}_parseVariable(e,n){var o,r;const s=this._types[e.type];if(!s)throw t.Logger.Error(["No type found for variable",e]),new Error("Error parsing variables");if(e.value&&"custom"!==(null===(r=null===(o=this._interactivityGraph.types)||void 0===o?void 0:o[e.type])||void 0===r?void 0:r.signature)&&e.value.length!==s.length)throw t.Logger.Error(["Invalid value length for variable",e,s]),new Error("Error parsing variables");const a=e.value?e.value.slice():[];if(!a.length)switch(s.flowGraphType){case"boolean":a.push(!1);break;case"FlowGraphInteger":a.push(0);break;case"number":a.push(NaN);break;case"string":a.push("");break;case"Vector2":a.push(NaN,NaN);break;case"Vector3":a.push(NaN,NaN,NaN);break;case"Vector4":case"Matrix2D":case"Quaternion":a.push(NaN,NaN,NaN,NaN);break;case"Matrix":for(let e=0;e<16;e++)a.push(NaN);break;case"Matrix3D":for(let e=0;e<9;e++)a.push(NaN)}return"number"===s.elementType&&"string"==typeof a[0]?a[0]=parseFloat(a[0]):"string"===s.flowGraphType&&"string"==typeof a[0]&&(a[0]=this._normalizeStaticReference(a[0])),{type:s.flowGraphType,value:n?n(a,this):a}}_normalizeStaticReference(e){if(!e||e.startsWith(Br)||e.startsWith(Pr))return"";if(!e.startsWith("/"))return"";let t=this._gltf;for(const n of e.substring(1).split("/")){const e=n.replace(/~1/g,"/").replace(/~0/g,"~");if(Array.isArray(t)){if(!/^(0|[1-9]\d*)$/.test(e))return"";t=t[parseInt(e,10)]}else{if(null===t||"object"!=typeof t||!Object.prototype.hasOwnProperty.call(t,e))return"";t=t[e]}}return null!==t&&"object"==typeof t?e:""}_parseEvents(){var e;if(!this._interactivityGraph.events)return;const n=new Set(this._interactivityGraph.events.flatMap(e=>void 0===e.id?[]:[e.id])),o=`__babylon_khr_internal_${this._graphIndex}_`;for(const r of this._interactivityGraph.events){let s;if(void 0===r.id){do{s=o+this._internalEventsCounter++}while(n.has(s));n.add(s)}const a={eventId:null!==(e=r.id)&&void 0!==e?e:s};r.values&&(a.eventData=Object.keys(r.values).map(e=>{var n;const o=null===(n=r.values)||void 0===n?void 0:n[e];if(!o)throw t.Logger.Error(["No value found for event key",e]),new Error("Error parsing events");const s=this._types[o.type];if(!s)throw t.Logger.Error(["No type found for event value",o]),new Error("Error parsing events");const a=void 0!==o.value?this._parseVariable(o):void 0;return{id:e,type:s.flowGraphType,eventData:!0,value:a}})),this._events.push(a)}}_parseNodes(){var e;if(this._interactivityGraph.nodes)for(let n=0;n<this._interactivityGraph.nodes.length;n++){const o=this._interactivityGraph.nodes[n];if("number"!=typeof o.declaration)throw t.Logger.Error(["No declaration found for node",o]),new Error("Error parsing nodes");const r=this._mappings[o.declaration];if(!r)throw t.Logger.Error(["No mapping found for node",o]),new Error("Error parsing nodes");if(r.flowGraphMapping.validation){const t=r.flowGraphMapping.validation(o,this._interactivityGraph,this._gltf);if(!t.valid)throw new Error(`Error validating interactivity node ${null===(e=this._interactivityGraph.declarations)||void 0===e?void 0:e[o.declaration].op} - ${t.error}`)}const s=[];"unsupported-extension"===r.declaration.support&&s.push(this._createUnsupportedExtensionBlock(o,n,r));for(let e=0;e<r.flowGraphMapping.blocks.length;e++){const t=r.flowGraphMapping.blocks[e],a=this._getEmptyBlock(t,r.fullOperationName,n,o.declaration,e);this._parseNodeConfiguration(o,a,r.flowGraphMapping,t),s.push(a)}this._nodes.push({blocks:s,fullOperationName:r.fullOperationName})}}_getEmptyBlock(e,n,o,r,s){return{uniqueId:t.RandomGUID(),className:e,dataInputs:[],dataOutputs:[],signalInputs:[],signalOutputs:[],config:{},type:n,metadata:void 0===o?{}:{khrInteractivity:{graphIndex:this._graphIndex,nodeIndex:o,declarationIndex:r,operation:n,role:null!=s?s:0,sourcePath:`/extensions/KHR_interactivity/graphs/${this._graphIndex}/nodes/${o}`}}}}_createUnsupportedExtensionBlock(e,t,n){var o,r,s,a;const i=this._getEmptyBlock("KHR_interactivity/FlowGraphUnsupportedInteractivityBlock",n.fullOperationName,t,e.declaration,0),l=new Set;for(const e of null!==(o=this._interactivityGraph.nodes)&&void 0!==o?o:[])for(const n of Object.values(null!==(r=e.flows)&&void 0!==r?r:{}))n.node===t&&l.add(null!==(s=n.socket)&&void 0!==s?s:"in");const u=e=>Object.entries(null!=e?e:{}).map(([e,t])=>{var n,o,r;return{name:e,type:null===(n=this._types[t.type])||void 0===n?void 0:n.flowGraphType,signature:null===(r=null===(o=this._interactivityGraph.types)||void 0===o?void 0:o[t.type])||void 0===r?void 0:r.signature}});i.config={operation:n.fullOperationName,inputValueSockets:u(n.declaration.source.inputValueSockets),outputValueSockets:u(n.declaration.source.outputValueSockets),inputFlowSockets:Array.from(l).sort(),outputFlowSockets:Object.keys(null!==(a=e.flows)&&void 0!==a?a:{}).sort()};for(const e of i.config.inputValueSockets)i.dataInputs.push(this._createNewSocketConnection(e.name));for(const e of i.config.outputValueSockets)i.dataOutputs.push(this._createNewSocketConnection(e.name,!0));for(const e of i.config.inputFlowSockets)i.signalInputs.push(this._createNewSocketConnection(e));for(const e of i.config.outputFlowSockets)i.signalOutputs.push(this._createNewSocketConnection(e,!0));return i}_parseNodeConfiguration(e,n,o,r){var s;const a=e.configuration;if(a)for(const e in a){const i=a[e];if(!i)throw new Error("Error parsing node configuration");const l=null===(s=o.configuration)||void 0===s?void 0:s[e];if((l||!this._strictValidation)&&(!(null==l?void 0:l.validationOnly)&&(l&&l.toBlock?l.toBlock===r:0===o.blocks.indexOf(r)))){let o=null==l?void 0:l.defaultValue;(null==i?void 0:i.value)&&(o=i.value),(null==l?void 0:l.isArray)||(1!==o.length&&t.Logger.Warn(`Invalid non-array value length: ${o.length}`),o=o[0]),(null==l?void 0:l.dataTransformer)&&(o=l.dataTransformer(o,this)),void 0!==o&&(n.config[(null==l?void 0:l.name)||e]={value:o})}}}_parseNodeConnections(e){var n,o,r,s,a,i,l,u,c,d,h,m,p,f,_,g,v,y,b,T,x,A,R,C;for(let w=0;w<this._nodes.length;w++){const O=null===(n=this._interactivityGraph.nodes)||void 0===n?void 0:n[w];if(!O)throw t.Logger.Error(["No node found for interactivity node",this._nodes[w]]),new Error("Error parsing node connections");const M=this._nodes[w],E=this._mappings[O.declaration];if(!E)throw t.Logger.Error(["No mapping found for node",O]),new Error("Error parsing node connections");if(0===M.blocks.length){t.Logger.Warn(`Skipping connections for no-op node #${w} (unsupported operation: ${M.fullOperationName})`);continue}const S=O.flows||{},I=Object.keys(S).sort();for(const e of I){const n=S[e];let f=Gr(null===(o=E.flowGraphMapping.outputs)||void 0===o?void 0:o.flows,e);this._strictValidation&&(null==f?void 0:f.compatibilityOnly)&&(f=void 0);let _=!1;if(!f)for(const e in null===(r=E.flowGraphMapping.outputs)||void 0===r?void 0:r.flows)if(e.startsWith("[")&&e.endsWith("]")){const t=null===(a=null===(s=E.flowGraphMapping.outputs)||void 0===s?void 0:s.flows)||void 0===a?void 0:a[e];if(!this._strictValidation||!(null==t?void 0:t.compatibilityOnly)){_=!0,f=t;break}}const g=_?this._getAllowedDynamicFlowSockets(O,E.flowGraphMapping,"output"):void 0;if(this._strictValidation&&g&&!g.has(e)&&(f=void 0),!f&&!this._isUnsupportedExtensionBlock(M.blocks[0]))continue;const v=f?_?f.name.replace("$1",e):f.name:e,y=n.node,b=this._nodes[y];if(!b)throw t.Logger.Error(["No node found for input node id",y]),new Error("Error parsing node connections");if(0===b.blocks.length){t.Logger.Warn(`Dropping flow connection from node #${w} "${e}" to no-op node #${y} (unsupported operation: ${b.fullOperationName})`);continue}const T=f&&f.toBlock&&M.blocks.find(e=>e.className===f.toBlock)||M.blocks[0],x=null!==(i=T.signalOutputs.find(e=>e.name===v))&&void 0!==i?i:this._createNewSocketConnection(v,!0);T.signalOutputs.includes(x)||T.signalOutputs.push(x);const A=null===(l=this._mappings[this._interactivityGraph.nodes[y].declaration])||void 0===l?void 0:l.flowGraphMapping;if(!A)throw t.Logger.Error(["No mapping found for input node",b]),new Error("Error parsing node connections");let R=Gr(null===(u=A.inputs)||void 0===u?void 0:u.flows,n.socket||"in");this._strictValidation&&(null==R?void 0:R.compatibilityOnly)&&(R=void 0);let C=!1;if(!R){for(const e in null===(c=A.inputs)||void 0===c?void 0:c.flows)if(e.startsWith("[")&&e.endsWith("]")){const t=null===(h=null===(d=A.inputs)||void 0===d?void 0:d.flows)||void 0===h?void 0:h[e];this._strictValidation&&(null==t?void 0:t.compatibilityOnly)||(C=!0,R=t)}const e=C?this._getAllowedDynamicFlowSockets(this._interactivityGraph.nodes[y],A,"input"):void 0;if(this._strictValidation&&e&&!e.has(null!==(m=n.socket)&&void 0!==m?m:"in")&&(R=void 0),!R&&"in"===(null!==(p=n.socket)&&void 0!==p?p:"in")&&this._hasDefaultFlowInput(b.fullOperationName)&&(R={name:"in"}),!R&&!this._isUnsupportedExtensionBlock(b.blocks[0]))continue}const I=R?C?R.name.replace("$1",n.socket||""):R.name:n.socket||"in",N=R&&R.toBlock&&b.blocks.find(e=>e.className===R.toBlock)||b.blocks[0];let L=N.signalInputs.find(e=>e.name===I);L||(L=this._createNewSocketConnection(I),N.signalInputs.push(L)),L.connectedPointIds.push(x.uniqueId),x.connectedPointIds.push(L.uniqueId)}const N=O.values||{},L=Object.keys(N);for(const n of L){const o=N[n];let r=Gr(null===(f=E.flowGraphMapping.inputs)||void 0===f?void 0:f.values,n);this._strictValidation&&(null==r?void 0:r.compatibilityOnly)&&(r=void 0);let s=!1;if(!r)for(const e in null===(_=E.flowGraphMapping.inputs)||void 0===_?void 0:_.values)if(e.startsWith("[")&&e.endsWith("]")){const t=null===(v=null===(g=E.flowGraphMapping.inputs)||void 0===g?void 0:g.values)||void 0===v?void 0:v[e];this._strictValidation&&(null==t?void 0:t.compatibilityOnly)||(s=!0,r=t)}const a=s?this._getAllowedDynamicValueSockets(E.fullOperationName,O,"input"):void 0;if(!r||a&&!a.has(n))continue;const i=r?s?r.name.replace("$1",n):r.name:n,l=r&&r.toBlock&&M.blocks.find(e=>e.className===r.toBlock)||M.blocks[0],u=null!==(y=l.dataInputs.find(e=>e.name===i))&&void 0!==y?y:this._createNewSocketConnection(i);l.dataInputs.includes(u)||l.dataInputs.push(u);const c=!!(null==r?void 0:r.convertConnectedTimeToFrames);if(void 0!==o.value){const t=this._parseVariable(o,r&&r.dataTransformer);e._connectionValues[u.uniqueId]=t}else{if(void 0===o.node)throw t.Logger.Error(["Invalid value for value connection",o]),new Error("Error parsing node connections");{const r=o.node,s=o.socket||"value",a=this._nodes[r];if(!a)throw t.Logger.Error(["No node found for output socket reference",o]),new Error("Error parsing node connections");if(0===a.blocks.length){t.Logger.Warn(`Dropping value connection from no-op node #${r} (unsupported operation: ${a.fullOperationName}) into node #${w} "${n}"; consumer will use type-default value`);continue}const i=null===(b=this._mappings[this._interactivityGraph.nodes[r].declaration])||void 0===b?void 0:b.flowGraphMapping;if(!i)throw t.Logger.Error(["No mapping found for output socket reference",o]),new Error("Error parsing node connections");let l=Gr(null===(T=i.outputs)||void 0===T?void 0:T.values,s);this._strictValidation&&(null==l?void 0:l.compatibilityOnly)&&(l=void 0);let d=!1;if(!l){for(const e in null===(x=i.outputs)||void 0===x?void 0:x.values)if(e.startsWith("[")&&e.endsWith("]")){const t=null===(R=null===(A=i.outputs)||void 0===A?void 0:A.values)||void 0===R?void 0:R[e];this._strictValidation&&(null==t?void 0:t.compatibilityOnly)||(d=!0,l=t)}const e=d?this._getAllowedDynamicValueSockets(a.fullOperationName,this._interactivityGraph.nodes[r],"output"):void 0;if(!l||e&&!e.has(s))continue}const h=l?d?l.name.replace("$1",s):null==l?void 0:l.name:s,m=l&&l.toBlock&&a.blocks.find(e=>e.className===l.toBlock)||a.blocks[0];let p=m.dataOutputs.find(e=>e.name===h);p||(p=this._createNewSocketConnection(h,!0),m.dataOutputs.push(p)),c?this._connectWithSecondsToFramesConversion(e,p,u,w,O.declaration):(u.connectedPointIds.push(p.uniqueId),p.connectedPointIds.push(u.uniqueId))}}}if(E.flowGraphMapping.interBlockConnectors)for(const e of E.flowGraphMapping.interBlockConnectors){const t=e.input,n=e.output,o=e.isVariable;this._connectFlowGraphNodes(t,n,M.blocks[e.inputBlockIndex],M.blocks[e.outputBlockIndex],o)}if(E.flowGraphMapping.extraProcessor){const n=null===(C=this._interactivityGraph.declarations)||void 0===C?void 0:C[O.declaration];if(!n)throw t.Logger.Error(["No declaration found for extra processor",O]),new Error("Error parsing node connections");M.blocks=E.flowGraphMapping.extraProcessor(O,n,E.flowGraphMapping,this,M.blocks,e,this._gltf)}}}_createNewSocketConnection(e,n){return{uniqueId:t.RandomGUID(),name:e,_connectionType:n?1:0,connectedPointIds:[]}}_isUnsupportedExtensionBlock(e){return"KHR_interactivity/FlowGraphUnsupportedInteractivityBlock"===(null==e?void 0:e.className)}_connectWithSecondsToFramesConversion(e,t,n,o,r){const s=this._getEmptyBlock("FlowGraphMultiplyBlock","FlowGraphMultiplyBlock",o,r,-1);s.config={type:"number"};const a=this._createNewSocketConnection("a"),i=this._createNewSocketConnection("b"),l=this._createNewSocketConnection("value",!0);s.dataInputs.push(a,i),s.dataOutputs.push(l),e._connectionValues[i.uniqueId]={type:"number",value:[this._animationTargetFps]},a.connectedPointIds.push(t.uniqueId),t.connectedPointIds.push(a.uniqueId),n.connectedPointIds.push(l.uniqueId),l.connectedPointIds.push(n.uniqueId),this._insertedBlocks.push(s)}_connectFlowGraphNodes(e,t,n,o,r){const s=r?n.dataInputs:n.signalInputs,a=r?o.dataOutputs:o.signalOutputs,i=s.find(t=>t.name===e)||this._createNewSocketConnection(e),l=a.find(e=>e.name===t)||this._createNewSocketConnection(t,!0);s.find(t=>t.name===e)||s.push(i),a.find(e=>e.name===t)||a.push(l),i.connectedPointIds.push(l.uniqueId),l.connectedPointIds.push(i.uniqueId)}getVariableName(e){return"staticVariable_"+e}serializeToFlowGraph(){var e;const n={uniqueId:t.RandomGUID(),_userVariables:{},_connectionValues:{}};this._parseNodeConnections(n);for(let e=0;e<this._staticVariables.length;e++){const t=this._staticVariables[e];n._userVariables[this.getVariableName(e)]=t}const o=this._nodes.reduce((e,t)=>e.concat(t.blocks),[]).concat(this._insertedBlocks);return{name:null!==(e=this._interactivityGraph.name)&&void 0!==e?e:`Graph ${this._graphIndex+1}`,rightHanded:!0,allBlocks:o,executionContexts:[n]}}}class $r{constructor(e,t){this._prefixes=e,this._fallback=t}addPrefix(e){this._prefixes.unshift(e)}convert(e){for(const{prefix:t,converter:n}of this._prefixes)if(e.startsWith(t))return n.convert(e);return this._fallback.convert(e)}}const Dr="/extensions/BABYLON_scene_objects/";class Hr{constructor(e,t){this._scene=e,this._tree=t}convert(e){if(!e.startsWith(Dr))throw new Error(`BabylonScenePathToObjectConverter: path "${e}" does not start with the expected prefix "${Dr}".`);const t=e.slice(34).split("/").filter(e=>e.length>0);if(0===t.length)throw new Error(`BabylonScenePathToObjectConverter: path "${e}" is missing a collection name.`);const n=t[0],o=this._tree[n];if(!o)throw new Error(`BabylonScenePathToObjectConverter: unknown collection "${n}" in path "${e}".`);if(2===t.length&&"length"===t[1])return{object:this._getCollectionArray(n),info:o.length};if(t.length<2)throw new Error(`BabylonScenePathToObjectConverter: path "${e}" is missing an instance id.`);if(!/^\d+$/.test(t[1]))throw new Error(`BabylonScenePathToObjectConverter: invalid uniqueId "${t[1]}" in path "${e}".`);const r=parseInt(t[1],10);if(!Number.isFinite(r)||r<0)throw new Error(`BabylonScenePathToObjectConverter: invalid uniqueId "${t[1]}" in path "${e}".`);const s=this._lookupInstanceByUniqueId(n,r);if(!s)throw new Error(`BabylonScenePathToObjectConverter: no ${n} instance found with uniqueId ${r} (path "${e}").`);if(2===t.length)return{object:s,info:this._buildIdentityAccessor(s)};if(t.length>3)throw new Error(`BabylonScenePathToObjectConverter: nested property paths are not yet supported (path "${e}").`);const a=t[2],i=o.__array__[a];if(!i||"boolean"==typeof i)throw new Error(`BabylonScenePathToObjectConverter: property "${a}" is not registered on ${n} (path "${e}").`);return{object:s,info:i}}_getCollectionArray(e){switch(e){case"transformNodes":return this._scene.transformNodes;case"meshes":return this._scene.meshes;case"materials":return this._scene.materials;default:return[]}}_lookupInstanceByUniqueId(e,t){switch(e){case"transformNodes":return this._scene.transformNodes.find(e=>e.uniqueId===t)||this._scene.meshes.find(e=>e.uniqueId===t);case"meshes":return this._scene.meshes.find(e=>e.uniqueId===t);case"materials":return this._scene.materials.find(e=>e.uniqueId===t);default:return}}_buildIdentityAccessor(e){return{type:"object",get:()=>e,getTarget:()=>e,isReadOnly:!0}}}const Kr={isKhrInteractivityRef:!0};class Wr{convert(e){const n=e===Br,o=e.endsWith("/")?e.slice(0,-1):e;if(n||o.startsWith(Br)){const t=o.substring(37);return{object:Kr,info:{type:"object",isReadOnly:!0,get:()=>n?e:t.length>0?o:void 0,getTarget:()=>Kr}}}const r=o.substring(37),s=/^\d+$/.test(r)?parseInt(r,10):NaN;return{object:Kr,info:{type:"object",isReadOnly:!0,get:(e,n,o)=>{const r=o;if(!(!r||isNaN(s)||s<0))return t.IsDelayActive(r,s)?new t.FlowGraphInteger(s):void 0},getTarget:()=>Kr}}}}const Ur="/extensions/KHR_interactivity/limits/",jr={major:2,minor:0},zr=2147483647,qr={maxActiveAnimations:zr,maxActiveDelays:zr,maxActivePropertyInterpolations:zr,maxActiveVariableInterpolations:zr},Yr={isKhrInteractivityAssetCapability:!0};class Xr{constructor(e,t){this._gltf=e,this._isExtensionEnabled=t}convert(e){const t=e.endsWith("/")?e.slice(0,-1):e;if(t.startsWith(Ur)){const n=qr[t.substring(37)];if(void 0===n)throw new Error(`Path ${e} is invalid`);return this._createAccessor("number",()=>n)}const n=t.substring(36);if("majorVersion"===n||"minorVersion"===n)return this._createAccessor("number",()=>{var e;return function(e){const[t,n]=(null!=e?e:"").split("."),o=parseInt(t,10),r=parseInt(n,10);return isNaN(o)?jr:o!==jr.major?o<jr.major?{major:o,minor:isNaN(r)?0:r}:jr:{major:o,minor:Math.min(isNaN(r)?0:r,jr.minor)}}(null===(e=this._gltf.asset)||void 0===e?void 0:e.version)["majorVersion"===n?"major":"minor"]});const o=n.split("/");if(3===o.length&&"extensions"===o[0]&&"enabled"===o[2]){const e=o[1];return this._createAccessor("boolean",()=>this._isExtensionEnabled(e))}throw new Error(`Path ${e} is invalid`)}_createAccessor(e,t){return{object:Yr,info:{type:e,isReadOnly:!0,get:t,getTarget:()=>Yr}}}}class Qr{encodeEventReference(e){return function(e){return Br+e}(e)}decodeEventReference(e){return function(e){return"string"==typeof(t=e)&&t.startsWith(Br)?e.substring(37):void 0;var t}(e)}decodeIndexReference(e,t){if(0===e.length||"/"!==e[0])return;const n=t?`/${t}/`:"/";if(!e.startsWith(n))return;const o=t?e.substring(n.length):e.substring(e.lastIndexOf("/")+1);return/^(0|[1-9]\d*)$/.test(o)?parseInt(o,10):void 0}getObjectReference(e,t){var n,o;const r=null===(o=null===(n=e._internalMetadata)||void 0===n?void 0:n.gltf)||void 0===o?void 0:o.pointers;if(!Array.isArray(r))return;const s=r.filter(e=>"string"==typeof e);if(0!==s.length){if(t){const e=s.find(e=>e.split("/")[1]===t);if(e)return e}return s[0]}}}const Zr="KHR_interactivity",Jr=new WeakMap;function es(e){const t=Jr.get(e);return null==t?void 0:t[t.length-1]}function ts(e){var t;return null!==(t=Jr.get(e))&&void 0!==t?t:[]}class ns{constructor(e){this._loader=e,this.name=Zr,this.order=200,this.enabled=this._loader.isExtensionUsed(Zr),e._skipStartAnimationStep=!0}_initializePathConverter(e){var n;this._gltfPathConverter=Oe(this._loader.gltf,t=>os(e,this._loader.parent.targetFps,t));const o=[{prefix:Dr,converter:new Hr(e,{transformNodes:{length:{type:"number",get:e=>e.length,getTarget:e=>e},__array__:{__target__:!0,name:{type:"string",get:e=>e.name,set:(e,t)=>{t.name=e},getTarget:e=>e},translation:{type:"Vector3",get:e=>e.position,set:(e,t)=>t.position.copyFrom(e),getTarget:e=>e},rotation:{type:"Quaternion",get:e=>{var n;return null!==(n=e.rotationQuaternion)&&void 0!==n?n:t.Quaternion.RotationYawPitchRoll(e.rotation.y,e.rotation.x,e.rotation.z)},set:(e,t)=>{t.rotationQuaternion?t.rotationQuaternion.copyFrom(e):t.rotationQuaternion=e.clone()},getTarget:e=>e},scale:{type:"Vector3",get:e=>e.scaling,set:(e,t)=>t.scaling.copyFrom(e),getTarget:e=>e},matrix:{type:"Matrix",get:e=>e.computeWorldMatrix(!1),getTarget:e=>e,isReadOnly:!0},globalMatrix:{type:"Matrix",get:e=>e.computeWorldMatrix(!0),getTarget:e=>e,isReadOnly:!0}}},meshes:{length:{type:"number",get:e=>e.length,getTarget:e=>e},__array__:{__target__:!0,name:{type:"string",get:e=>e.name,set:(e,t)=>{t.name=e},getTarget:e=>e},visible:{type:"boolean",get:e=>e.isVisible,set:(e,t)=>{t.isVisible=e},getTarget:e=>e}}},materials:{length:{type:"number",get:e=>e.length,getTarget:e=>e},__array__:{__target__:!0,name:{type:"string",get:e=>e.name,set:(e,t)=>{t.name=e},getTarget:e=>e}}}})}],r=new Wr;o.push({prefix:Br,converter:r}),o.push({prefix:Pr,converter:r});const s=new Set((null!==(n=this._loader.gltf.extensionsUsed)&&void 0!==n?n:[]).filter(e=>{var t;return Ne.has(e)&&!1!==(null===(t=this._loader.parent.extensionOptions[e])||void 0===t?void 0:t.enabled)})),a=new Xr(this._loader.gltf,e=>s.has(e));o.push({prefix:"/extensions/KHR_interactivity/asset/",converter:a}),o.push({prefix:Ur,converter:a});const i=new $r(o,this._gltfPathConverter);return this._pathConverter=i,i}dispose(){this._loader=null,delete this._gltfPathConverter,delete this._pathConverter}onReady(){return A(this,void 0,void 0,function*(){var e,n,o,r,s,a,i,l;if(!this._loader.babylonScene)return;const u=this._loader.babylonScene,c=this._initializePathConverter(u),d=null===(e=this._loader.gltf.extensions)||void 0===e?void 0:e.KHR_interactivity;if(!d)return;const h=new Set((null!==(n=this._loader.gltf.extensionsUsed)&&void 0!==n?n:[]).filter(e=>{var t;return!1!==(null===(t=this._loader.parent.extensionOptions[e])||void 0===t?void 0:t.enabled)})),m=Fr(d,h,null!==(r=null===(o=this._loader.gltf.nodes)||void 0===o?void 0:o.length)&&void 0!==r?r:0),p=this._loader.parent.extensionOptions[Zr],f=null===(s=null==p?void 0:p.autoStart)||void 0===s||s,_=null!==(a=null==p?void 0:p.parseOnly)&&void 0!==a&&a,g=null===(i=null==p?void 0:p.strictValidation)||void 0===i||i,v=null!==(l=Jr.get(u))&&void 0!==l?l:[],y={assetIndex:v.length,document:m,graphs:[],pathConverter:c,glTF:this._loader.gltf,hostResolver:new Qr};v.push(y),Jr.set(u,v),yield Promise.all(m.graphs.map(e=>A(this,void 0,void 0,function*(){var n,o;const r={graph:e,diagnostics:e.diagnostics.slice()};if(y.graphs[e.index]=r,e.valid||!g)try{const n=new Vr(g?e.effectiveSource:e.source,this._loader.gltf,this._loader.parent.targetFps,e.index,h,g?e.declarations:void 0).serializeToFlowGraph();if(r.serializedFlowGraph=n,_)return;const o=new t.FlowGraphCoordinator({scene:u,hostResolver:y.hostResolver});o.dispatchEventsSynchronously=!1,r.coordinator=o,r.flowGraph=yield t.ParseFlowGraphAsync(n,{coordinator:o,pathConverter:c}),f&&e.index===m.defaultGraphIndex&&o.start()}catch(s){const a=null!==(n=null==s?void 0:s.message)&&void 0!==n?n:String(s);r.diagnostics.push({path:e.path,message:a,severity:"error"}),t.Logger.Error(`KHR_interactivity: rejecting behavior graph #${e.index}: ${a}`),null===(o=r.coordinator)||void 0===o||o.dispose(),delete r.coordinator,delete r.flowGraph,delete r.serializedFlowGraph}else t.Logger.Error(`KHR_interactivity: rejecting behavior graph #${e.index}: ${e.diagnostics.map(e=>e.message).join("; ")}`)})))})}}function os(e,n,o){Se("/extensions/KHR_interactivity/?/activeCamera/rotation",{get:()=>{if(!e.activeCamera)return new t.Quaternion(NaN,NaN,NaN,NaN);const n=t.Quaternion.FromRotationMatrix(e.activeCamera.getWorldMatrix()).normalize();return e.useRightHandedSystem||(n.w*=-1,n.x*=-1),n},type:"Quaternion",getTarget:()=>e.activeCamera},o),Se("/extensions/KHR_interactivity/?/activeCamera/position",{get:()=>{if(!e.activeCamera)return new t.Vector3(NaN,NaN,NaN);const n=e.activeCamera.getWorldMatrix().getTranslation();return e.useRightHandedSystem||(n.x*=-1),n},type:"Vector3",getTarget:()=>e.activeCamera},o);const r=n=>{const o=e.activeCamera;return o&&o.mode!==t.Constants.ORTHOGRAPHIC_CAMERA?n(o):NaN},s=n=>{const o=e.activeCamera;return o&&o.mode===t.Constants.ORTHOGRAPHIC_CAMERA?n(o):NaN};Se("/extensions/KHR_interactivity/?/activeCamera/perspective/aspectRatio",{get:()=>r(e=>e.getEngine().getAspectRatio(e)),type:"number",getTarget:()=>e.activeCamera},o),Se("/extensions/KHR_interactivity/?/activeCamera/perspective/yfov",{get:()=>r(e=>{if(e.fovMode===t.Constants.FOVMODE_VERTICAL_FIXED)return e.fov;const n=e.getEngine().getAspectRatio(e);return n?2*Math.atan(Math.tan(e.fov/2)/n):e.fov}),type:"number",getTarget:()=>e.activeCamera},o),Se("/extensions/KHR_interactivity/?/activeCamera/perspective/znear",{get:()=>r(e=>e.minZ),type:"number",getTarget:()=>e.activeCamera},o),Se("/extensions/KHR_interactivity/?/activeCamera/perspective/zfar",{get:()=>r(e=>0===e.maxZ?1/0:e.maxZ),type:"number",getTarget:()=>e.activeCamera},o),Se("/extensions/KHR_interactivity/?/activeCamera/orthographic/xmag",{get:()=>s(e=>{var t,n;const o=e.getEngine().getRenderWidth()/2;return((null!==(t=e.orthoRight)&&void 0!==t?t:o)-(null!==(n=e.orthoLeft)&&void 0!==n?n:-o))/2}),type:"number",getTarget:()=>e.activeCamera},o),Se("/extensions/KHR_interactivity/?/activeCamera/orthographic/ymag",{get:()=>s(e=>{var t,n;const o=e.getEngine().getRenderHeight()/2;return((null!==(t=e.orthoTop)&&void 0!==t?t:o)-(null!==(n=e.orthoBottom)&&void 0!==n?n:-o))/2}),type:"number",getTarget:()=>e.activeCamera},o),Se("/extensions/KHR_interactivity/?/activeCamera/orthographic/znear",{get:()=>s(e=>e.minZ),type:"number",getTarget:()=>e.activeCamera},o),Se("/extensions/KHR_interactivity/?/activeCamera/orthographic/zfar",{get:()=>s(e=>e.maxZ),type:"number",getTarget:()=>e.activeCamera},o);const a=e=>{var t,o,r,s;return null!==(s=null===(r=null===(o=null===(t=e._babylonAnimationGroup)||void 0===t?void 0:t.targetedAnimations)||void 0===o?void 0:o[0])||void 0===r?void 0:r.animation.framePerSecond)&&void 0!==s?s:n};Se("/animations/{}/extensions/KHR_interactivity/isPlaying",{get:e=>{var t,n;return null!==(n=null===(t=e._babylonAnimationGroup)||void 0===t?void 0:t.isPlaying)&&void 0!==n&&n},type:"boolean",getTarget:e=>e._babylonAnimationGroup},o),Se("/animations/{}/extensions/KHR_interactivity/minTime",{get:e=>{var t,n;return(null!==(n=null===(t=e._babylonAnimationGroup)||void 0===t?void 0:t.from)&&void 0!==n?n:0)/a(e)},type:"number",getTarget:e=>e._babylonAnimationGroup},o),Se("/animations/{}/extensions/KHR_interactivity/maxTime",{get:e=>{var t,n;return(null!==(n=null===(t=e._babylonAnimationGroup)||void 0===t?void 0:t.to)&&void 0!==n?n:0)/a(e)},type:"number",getTarget:e=>e._babylonAnimationGroup},o),Se("/animations/{}/extensions/KHR_interactivity/playhead",{get:e=>{var t,n;return(null!==(n=null===(t=e._babylonAnimationGroup)||void 0===t?void 0:t.getRetainedCurrentFrame())&&void 0!==n?n:0)/a(e)},type:"number",getTarget:e=>e._babylonAnimationGroup},o),Se("/animations/{}/extensions/KHR_interactivity/virtualPlayhead",{get:e=>{var t,n;return(null!==(n=null===(t=e._babylonAnimationGroup)||void 0===t?void 0:t.getVirtualCurrentFrame())&&void 0!==n?n:0)/a(e)},type:"number",getTarget:e=>e._babylonAnimationGroup},o)}let rs=!1;function ss(){rs||(rs=!0,t.addToBlockFactory(Zr,"FlowGraphGLTFDataProvider",()=>A(this,void 0,void 0,function*(){return(yield Promise.resolve().then(function(){return Ws})).FlowGraphGLTFDataProvider})),t.addToBlockFactory(Zr,"FlowGraphUnsupportedInteractivityBlock",()=>A(this,void 0,void 0,function*(){return(yield Promise.resolve().then(function(){return Zs})).FlowGraphUnsupportedInteractivityBlock})),t.addToBlockFactory(Zr,"FlowGraphObjectReferenceBlock",()=>A(this,void 0,void 0,function*(){return(yield Promise.resolve().then(function(){return zs})).FlowGraphObjectReferenceBlock})),t.addToBlockFactory(Zr,"FlowGraphEventReferenceBlock",()=>A(this,void 0,void 0,function*(){return(yield Promise.resolve().then(function(){return Ys})).FlowGraphEventReferenceBlock})))}let as=!1;function is(){as||(as=!0,ss(),ke(Zr),Le(Zr,!0,e=>new ns(e)))}is();const ls="KHR_node_visibility";class us{constructor(e){this.name=ls,this._loader=e,this.enabled=e.isExtensionUsed(ls)}onReady(){var e;if(!this._loader)return;const t=this._loader.gltf.nodes;if(t)for(const n of t){const t=n._babylonTransformNode;t&&(t.inheritVisibility=!0,n.extensions&&n.extensions.KHR_node_visibility&&!1===n.extensions.KHR_node_visibility.visible&&(t.isVisible=!1,null===(e=n._primitiveBabylonMeshes)||void 0===e||e.forEach(e=>{e.inheritVisibility=!0,e.isVisible=!1})))}}dispose(){delete this._loader}}let cs=!1;function ds(){cs||(cs=!0,Se("/nodes/{}/extensions/KHR_node_visibility/visible",{get:e=>{const t=e._babylonTransformNode;return!t||void 0===t.isVisible||t.isVisible},set:(e,t)=>{var n,o;null===(n=t._primitiveBabylonMeshes)||void 0===n||n.forEach(e=>{e.inheritVisibility=!0}),t._babylonTransformNode&&(t._babylonTransformNode.isVisible=e),null===(o=t._primitiveBabylonMeshes)||void 0===o||o.forEach(t=>{t.isVisible=e})},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"isVisible"],type:"boolean"}))}let hs=!1;function ms(){hs||(hs=!0,ds(),ke(ls),Le(ls,!0,e=>new us(e)))}ms();const ps=new WeakMap,fs=new WeakMap,_s=new WeakMap;function gs(e){return"selectable"===e?_s:fs}function vs(e,t){var n;return null===(n=gs(t).get(e))||void 0===n||n}function ys(e,t,n){"selectable"===t?e.isPickable=n:e._isPointerMovePickable=n}function bs(e,t){var n;const o=function(e,t){let n=e;for(;n;){if(!vs(n,t))return!1;n=n.parent}return!0}(e,t),r=null!==(n=e._primitiveBabylonMeshes)&&void 0!==n?n:[];for(const e of r)ys(e,t,o);const s=e._babylonTransformNode;s&&"isPickable"in s&&ys(s,t,o)}function Ts(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parent}return!1}function xs(e,t,n){var o;const r=gs(t);for(const t of e)ps.set(t,e),r.set(t,null===(o=n(t))||void 0===o||o);for(const n of e)bs(n,t)}function As(e,t){return vs(e,t)}function Rs(e,t,n){var o;gs(t).set(e,n);const r=null!==(o=ps.get(e))&&void 0!==o?o:[e];for(const n of r)Ts(n,e)&&bs(n,t)}const Cs="KHR_node_selectability";class ws{constructor(e){this.name=Cs,this.order=100,this._loader=e,this.enabled=e.isExtensionUsed(Cs)}onReady(){return A(this,void 0,void 0,function*(){var e;xs(null!==(e=this._loader.gltf.nodes)&&void 0!==e?e:[],"selectable",e=>{var t,n;return null===(n=null===(t=e.extensions)||void 0===t?void 0:t.KHR_node_selectability)||void 0===n?void 0:n.selectable})})}dispose(){this._loader=null}}let Os=!1;function Ms(){Os||(Os=!0,sr("event/onSelect",Cs,{blocks:["FlowGraphMeshPickEventBlock","FlowGraphGetVariableBlock","FlowGraphIndexOfBlock","KHR_interactivity/FlowGraphGLTFDataProvider","KHR_interactivity/FlowGraphEventReferenceBlock"],declarationSchema:{inputValueSockets:{},outputValueSockets:{selectedNode:"ref",selectionRayOrigin:"float3",selectionPoint:"float3",controllerIndex:"int",event:"ref"}},configuration:{nodeIndex:{name:"variable",configurationType:"int",toBlock:"FlowGraphGetVariableBlock",indexSource:"assetNodes",invalidUsesDefault:!0,dataTransformer:e=>"pickedMesh_"+e}},outputs:{values:{selectedNodeIndex:{name:"index",toBlock:"FlowGraphIndexOfBlock"},selectedNode:{name:"nodeReference",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"},controllerIndex:{name:"controllerIndex",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"},selectionPoint:{name:"selectionPoint",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"},selectionRayOrigin:{name:"selectionRayOrigin",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"},event:{name:"value",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"}},flows:{out:{name:"out",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"}}},interBlockConnectors:[{input:"asset",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"nodes",inputBlockIndex:2,outputBlockIndex:3,isVariable:!0},{input:"object",output:"pickedMesh",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0},{input:"node",output:"pickedMesh",inputBlockIndex:4,outputBlockIndex:0,isVariable:!0},{input:"controllerIndexInput",output:"pointerId",inputBlockIndex:4,outputBlockIndex:0,isVariable:!0},{input:"selectionPointInput",output:"pickedPoint",inputBlockIndex:4,outputBlockIndex:0,isVariable:!0},{input:"selectionRayOriginInput",output:"pickOrigin",inputBlockIndex:4,outputBlockIndex:0,isVariable:!0},{input:"in",output:"done",inputBlockIndex:4,outputBlockIndex:0}],extraProcessor(e,t,n,o,r,s,a){var i,l,u,c,d,h,m,p,f;const _=null===(u=null===(l=null===(i=e.configuration)||void 0===i?void 0:i.nodeIndex)||void 0===l?void 0:l.value)||void 0===u?void 0:u[0],g="number"==typeof _&&Number.isInteger(_)&&_>=0&&_<(null!==(d=null===(c=null==a?void 0:a.nodes)||void 0===c?void 0:c.length)&&void 0!==d?d:0),v=g?"pickedMesh_"+_:"pickedMesh_unbound";r[1].config.variable=v,s._userVariables[v]=g?{className:"Mesh",id:null===(m=null===(h=null==a?void 0:a.nodes)||void 0===h?void 0:h[_]._babylonTransformNode)||void 0===m?void 0:m.id,uniqueId:null===(f=null===(p=null==a?void 0:a.nodes)||void 0===p?void 0:p[_]._babylonTransformNode)||void 0===f?void 0:f.uniqueId}:{type:"any",value:[{}]};const y=`${Cs}:event/onSelect:${_}`;return r[0].config.eventKey=y,r[0].config.useNaNDefaults=!0,r[0].config.pointerIdDefault=-1,r[4].config.eventKey=y,r}}),Se("/nodes/{}/extensions/KHR_node_selectability/selectable",{get:e=>As(e,"selectable"),set:(e,t)=>{Rs(t,"selectable",e)},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"isPickable"],type:"boolean"}))}let Es=!1;function Ss(){Es||(Es=!0,Ms(),ke(Cs),Le(Cs,!0,e=>new ws(e)))}Ss();const Is="KHR_node_hoverability",Ns="targetMeshPointerOver_",Ls="targetMeshPointerOut_";class ks{constructor(e){this.name=Is,this.order=100,this._loader=e,this.enabled=e.isExtensionUsed(Is)}onReady(){return A(this,void 0,void 0,function*(){var e;xs(null!==(e=this._loader.gltf.nodes)&&void 0!==e?e:[],"hoverable",e=>{var t,n;return null===(n=null===(t=e.extensions)||void 0===t?void 0:t.KHR_node_hoverability)||void 0===n?void 0:n.hoverable})})}dispose(){this._loader=null}}let Fs=!1;function Bs(){Fs||(Fs=!0,sr("event/onHoverIn",Is,{blocks:["FlowGraphPointerOverEventBlock","FlowGraphGetVariableBlock","FlowGraphIndexOfBlock","KHR_interactivity/FlowGraphGLTFDataProvider","KHR_interactivity/FlowGraphEventReferenceBlock"],declarationSchema:{inputValueSockets:{},outputValueSockets:{hoveredNode:"ref",controllerIndex:"int",event:"ref"}},configuration:{nodeIndex:{name:"variable",configurationType:"int",toBlock:"FlowGraphGetVariableBlock",indexSource:"assetNodes",invalidUsesDefault:!0,dataTransformer:e=>Ns+e}},outputs:{values:{hoverNodeIndex:{name:"index",toBlock:"FlowGraphIndexOfBlock"},hoveredNode:{name:"nodeReference",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"},controllerIndex:{name:"controllerIndex",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"},event:{name:"value",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"}},flows:{out:{name:"out",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"}}},interBlockConnectors:[{input:"targetMesh",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"nodes",inputBlockIndex:2,outputBlockIndex:3,isVariable:!0},{input:"object",output:"meshUnderPointer",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0},{input:"node",output:"meshUnderPointer",inputBlockIndex:4,outputBlockIndex:0,isVariable:!0},{input:"controllerIndexInput",output:"pointerId",inputBlockIndex:4,outputBlockIndex:0,isVariable:!0},{input:"in",output:"done",inputBlockIndex:4,outputBlockIndex:0}],extraProcessor(e,t,n,o,r,s,a){var i,l,u,c,d,h,m,p,f;const _=null===(u=null===(l=null===(i=e.configuration)||void 0===i?void 0:i.nodeIndex)||void 0===l?void 0:l.value)||void 0===u?void 0:u[0],g="number"==typeof _&&Number.isInteger(_)&&_>=0&&_<(null!==(d=null===(c=null==a?void 0:a.nodes)||void 0===c?void 0:c.length)&&void 0!==d?d:0),v=g?Ns+_:Ns+"unbound";r[1].config.variable=v,s._userVariables[v]=g?{className:"Mesh",id:null===(m=null===(h=null==a?void 0:a.nodes)||void 0===h?void 0:h[_]._babylonTransformNode)||void 0===m?void 0:m.id,uniqueId:null===(f=null===(p=null==a?void 0:a.nodes)||void 0===p?void 0:p[_]._babylonTransformNode)||void 0===f?void 0:f.uniqueId}:{type:"any",value:[{}]};const y=`${Is}:event/onHoverIn:${_}`;return r[0].config.eventKey=y,r[4].config.eventKey=y,r}}),sr("event/onHoverOut",Is,{blocks:["FlowGraphPointerOutEventBlock","FlowGraphGetVariableBlock","FlowGraphIndexOfBlock","KHR_interactivity/FlowGraphGLTFDataProvider","KHR_interactivity/FlowGraphEventReferenceBlock"],declarationSchema:{inputValueSockets:{},outputValueSockets:{hoveredNode:"ref",controllerIndex:"int",event:"ref"}},configuration:{nodeIndex:{name:"variable",configurationType:"int",toBlock:"FlowGraphGetVariableBlock",indexSource:"assetNodes",invalidUsesDefault:!0,dataTransformer:e=>Ls+e}},outputs:{values:{hoverNodeIndex:{name:"index",toBlock:"FlowGraphIndexOfBlock"},hoveredNode:{name:"nodeReference",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"},controllerIndex:{name:"controllerIndex",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"},event:{name:"value",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"}},flows:{out:{name:"out",toBlock:"KHR_interactivity/FlowGraphEventReferenceBlock"}}},interBlockConnectors:[{input:"targetMesh",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"nodes",inputBlockIndex:2,outputBlockIndex:3,isVariable:!0},{input:"object",output:"meshOutOfPointer",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0},{input:"node",output:"meshOutOfPointer",inputBlockIndex:4,outputBlockIndex:0,isVariable:!0},{input:"controllerIndexInput",output:"pointerId",inputBlockIndex:4,outputBlockIndex:0,isVariable:!0},{input:"in",output:"done",inputBlockIndex:4,outputBlockIndex:0}],extraProcessor(e,t,n,o,r,s,a){var i,l,u,c,d,h,m,p,f;const _=null===(u=null===(l=null===(i=e.configuration)||void 0===i?void 0:i.nodeIndex)||void 0===l?void 0:l.value)||void 0===u?void 0:u[0],g="number"==typeof _&&Number.isInteger(_)&&_>=0&&_<(null!==(d=null===(c=null==a?void 0:a.nodes)||void 0===c?void 0:c.length)&&void 0!==d?d:0),v=g?Ls+_:Ls+"unbound";r[1].config.variable=v,s._userVariables[v]=g?{className:"Mesh",id:null===(m=null===(h=null==a?void 0:a.nodes)||void 0===h?void 0:h[_]._babylonTransformNode)||void 0===m?void 0:m.id,uniqueId:null===(f=null===(p=null==a?void 0:a.nodes)||void 0===p?void 0:p[_]._babylonTransformNode)||void 0===f?void 0:f.uniqueId}:{type:"any",value:[{}]};const y=`${Is}:event/onHoverOut:${_}`;return r[0].config.eventKey=y,r[4].config.eventKey=y,r}}),Se("/nodes/{}/extensions/KHR_node_hoverability/hoverable",{get:e=>As(e,"hoverable"),set:(e,t)=>{Rs(t,"hoverable",e)},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"pointerOverDisableMeshTesting"],type:"boolean"}))}let Ps=!1;function Gs(){Ps||(Ps=!0,Bs(),ke(Is),Le(Is,!0,e=>new ks(e)))}Gs();const Vs="ExtrasAsMetadata";class $s{_assignExtras(e,t){if(t.extras&&Object.keys(t.extras).length>0){const n=e.metadata=e.metadata||{};(n.gltf=n.gltf||{}).extras=t.extras}}constructor(e){this.name=Vs,this.enabled=!0,this._loader=e}dispose(){this._loader=null}loadNodeAsync(e,t,n){return this._loader.loadNodeAsync(e,t,e=>{this._assignExtras(e,t),n(e)})}loadCameraAsync(e,t,n){return this._loader.loadCameraAsync(e,t,e=>{this._assignExtras(e,t),n(e)})}createMaterial(e,t,n){const o=this._loader.createMaterial(e,t,n);return this._assignExtras(o,t),o}loadAnimationAsync(e,t){return this._loader.loadAnimationAsync(e,t).then(e=>(this._assignExtras(e,t),e))}}let Ds=!1;function Hs(){Ds||(Ds=!0,ke(Vs),Le(Vs,!1,e=>new $s(e)))}Hs();class Ks extends t.FlowGraphBlock{constructor(e={}){var n,o;super(e);const r=e.glTF,s=(null===(n=null==r?void 0:r.animations)||void 0===n?void 0:n.map(e=>e._babylonAnimationGroup))||[];this.animationGroups=this.registerDataOutput("animationGroups",t.RichTypeAny,s);const a=(null===(o=null==r?void 0:r.nodes)||void 0===o?void 0:o.map(e=>e._babylonTransformNode))||[];this.nodes=this.registerDataOutput("nodes",t.RichTypeAny,a)}getClassName(){return"FlowGraphGLTFDataProvider"}}var Ws={__proto__:null,FlowGraphGLTFDataProvider:Ks};function Us(e,t){let n=t;for(;n;){const t=e.getObjectReference(n,"nodes");if(null==t?void 0:t.startsWith("/nodes/"))return t;n=n.parent}return""}class js extends t.FlowGraphBlock{constructor(e){super(e),this.object=this.registerDataInput("object",t.RichTypeAny),this.value=this.registerDataOutput("value",t.RichTypeString,"")}_updateOutputs(e){this.value.setValue(Us(e,this.object.getValue(e)),e)}getClassName(){return"FlowGraphObjectReferenceBlock"}}var zs={__proto__:null,FlowGraphObjectReferenceBlock:js,GetInteractivityObjectReference:Us};class qs extends t.FlowGraphExecutionBlock{constructor(e){super(e),this.config=e,this._assetInverse=t.Matrix.Identity(),this._selectionPointValue=t.Vector3.Zero(),this._selectionRayOriginValue=t.Vector3.Zero();const n=new t.Vector3(NaN,NaN,NaN);this.node=this.registerDataInput("node",t.RichTypeAny),this.controllerIndexInput=this.registerDataInput("controllerIndexInput",t.RichTypeNumber,-1),this.selectionPointInput=this.registerDataInput("selectionPointInput",t.RichTypeVector3,n),this.selectionRayOriginInput=this.registerDataInput("selectionRayOriginInput",t.RichTypeVector3,n),this.nodeReference=this.registerDataOutput("nodeReference",t.RichTypeString,""),this.controllerIndex=this.registerDataOutput("controllerIndex",t.RichTypeNumber,-1),this.selectionPoint=this.registerDataOutput("selectionPoint",t.RichTypeVector3,n),this.selectionRayOrigin=this.registerDataOutput("selectionRayOrigin",t.RichTypeVector3,n),this.value=this.registerDataOutput("value",t.RichTypeString,""),this.out=this._registerSignalOutput("out")}_execute(e){var n;this.nodeReference.setValue(Us(e,this.node.getValue(e)),e);const o=this.controllerIndexInput.getValue(e);if(o<0)this.controllerIndex.setValue(-1,e);else{const t=e._getGlobalContextVariable("khrInteractivityControllerIndices",new Map);let n=t.get(o);void 0===n&&(n=t.size,t.set(o,n),e._setGlobalContextVariable("khrInteractivityControllerIndices",t)),this.controllerIndex.setValue(n,e)}const r=this.node.getValue(e);let s=null==r?void 0:r.parent;for(;null==s?void 0:s.parent;)s=s.parent;(null==s?void 0:s.getWorldMatrix)?(s.getWorldMatrix().invertToRef(this._assetInverse),t.Vector3.TransformCoordinatesToRef(this.selectionPointInput.getValue(e),this._assetInverse,this._selectionPointValue),t.Vector3.TransformCoordinatesToRef(this.selectionRayOriginInput.getValue(e),this._assetInverse,this._selectionRayOriginValue),this.selectionPoint.setValue(this._selectionPointValue,e),this.selectionRayOrigin.setValue(this._selectionRayOriginValue,e)):(this.selectionPoint.setValue(this.selectionPointInput.getValue(e),e),this.selectionRayOrigin.setValue(this.selectionRayOriginInput.getValue(e),e)),this.value.setValue(e.getEventReference(null!==(n=this.config.eventKey)&&void 0!==n?n:"gltf:manual"),e),this.out._activateSignal(e)}getClassName(){return"FlowGraphEventReferenceBlock"}}var Ys={__proto__:null,FlowGraphEventReferenceBlock:qs};function Xs(e){switch(e){case"bool":return!1;case"int":return new t.FlowGraphInteger(0);case"float":return NaN;case"float2":return new t.Vector2(NaN,NaN);case"float3":return new t.Vector3(NaN,NaN,NaN);case"float4":return new t.Vector4(NaN,NaN,NaN,NaN);case"float2x2":return new t.FlowGraphMatrix2D([NaN,NaN,NaN,NaN]);case"float3x3":return new t.FlowGraphMatrix3D([NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN]);case"float4x4":return t.Matrix.FromArray([NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN]);case"ref":return"";default:return}}class Qs extends t.FlowGraphExecutionBlock{constructor(e){var n,o,r,s;super(e),this.config=e,this._unregisterSignalInput("in"),this._unregisterSignalOutput("error");for(const o of null!==(n=e.inputValueSockets)&&void 0!==n?n:[])this.registerDataInput(o.name,t.getRichTypeByFlowGraphType(o.type));for(const n of null!==(o=e.outputValueSockets)&&void 0!==o?o:[])this.registerDataOutput(n.name,t.getRichTypeByFlowGraphType(n.type),Xs(n.signature));for(const t of null!==(r=e.inputFlowSockets)&&void 0!==r?r:[])this._registerSignalInput(t);for(const t of null!==(s=e.outputFlowSockets)&&void 0!==s?s:[])this._registerSignalOutput(t)}_execute(e,t){}getClassName(){return"FlowGraphUnsupportedInteractivityBlock"}}var Zs={__proto__:null,FlowGraphUnsupportedInteractivityBlock:Qs},Js={__proto__:null,AddObjectAccessorToKey:Se,CloneKHRInteractivityGraph:gr,CreateEffectiveKHRInteractivityGraph:Er,CreateKHRInteractivityDocument:Fr,CreateKHRInteractivityGraphModel:kr,EXT_lights_area:Mt,EXT_lights_ies:ut,EXT_lights_image_based:Ke,EXT_mesh_gpu_instancing:ze,EXT_meshopt_compression:Qe,EXT_texture_avif:st,EXT_texture_webp:tt,ExtrasAsMetadata:$s,FlowGraphEventReferenceBlock:qs,FlowGraphGLTFDataProvider:Ks,FlowGraphObjectReferenceBlock:js,FlowGraphUnsupportedInteractivityBlock:Qs,GetInteractivityNodeState:As,GetInteractivityObjectReference:Us,GetKHRInteractivityImportResult:es,GetKHRInteractivityImportResults:ts,GetMappingForKey:Me,GetPathToObjectConverter:Oe,InitializeInteractivityNodeState:xs,InteractivityGraphToFlowGraphParser:Vr,KHR_INTERACTIVITY_SPECIFICATION_COMMIT:pr,KHR_animation_pointer:_o,KHR_draco_mesh_compression:mt,KHR_gaussian_splatting:bt,KHR_interactivity:ns,KHR_lights:Rt,KHR_materials_anisotropy:Zt,KHR_materials_clearcoat:$t,KHR_materials_coat:Wt,KHR_materials_diffuse_roughness:Yn,KHR_materials_diffuse_transmission:Ln,KHR_materials_dispersion:Un,KHR_materials_emissive_strength:nn,KHR_materials_fuzz:dn,KHR_materials_ior:yn,KHR_materials_iridescence:qt,KHR_materials_pbrSpecularGlossiness:Nt,KHR_materials_sheen:an,KHR_materials_specular:fn,KHR_materials_transmission:En,KHR_materials_unlit:Bt,KHR_materials_variants:An,KHR_materials_volume:Pn,KHR_materials_volume_scatter:Dn,KHR_mesh_quantization:Jn,KHR_node_hoverability:ks,KHR_node_selectability:ws,KHR_node_visibility:us,KHR_texture_basisu:oo,KHR_texture_transform:io,KHR_xmp_json_ld:ho,MSFT_audio_emitter:Do,MSFT_lod:Uo,MSFT_minecraftMesh:Yo,MSFT_sRGBFactors:Jo,ParseDebugLogTemplate:dr,RegisterEXT_lights_area:St,RegisterEXT_lights_ies:dt,RegisterEXT_lights_image_based:Ue,RegisterEXT_mesh_gpu_instancing:Ye,RegisterEXT_meshopt_compression:Je,RegisterEXT_texture_avif:it,RegisterEXT_texture_webp:ot,RegisterExtrasAsMetadata:Hs,RegisterKHR_animation_pointer:vo,RegisterKHR_draco_mesh_compression:ft,RegisterKHR_gaussian_splatting:xt,RegisterKHR_interactivity:is,RegisterKHR_lights:wt,RegisterKHR_materials_anisotropy:en,RegisterKHR_materials_clearcoat:Ht,RegisterKHR_materials_coat:jt,RegisterKHR_materials_diffuse_roughness:Qn,RegisterKHR_materials_diffuse_transmission:Fn,RegisterKHR_materials_dispersion:zn,RegisterKHR_materials_emissive_strength:rn,RegisterKHR_materials_fuzz:mn,RegisterKHR_materials_ior:Tn,RegisterKHR_materials_iridescence:Xt,RegisterKHR_materials_pbrSpecularGlossiness:kt,RegisterKHR_materials_sheen:un,RegisterKHR_materials_specular:gn,RegisterKHR_materials_transmission:In,RegisterKHR_materials_unlit:Gt,RegisterKHR_materials_variants:Cn,RegisterKHR_materials_volume:Vn,RegisterKHR_materials_volume_scatter:Kn,RegisterKHR_mesh_quantization:to,RegisterKHR_node_hoverability:Gs,RegisterKHR_node_selectability:Ss,RegisterKHR_node_visibility:ms,RegisterKHR_texture_basisu:so,RegisterKHR_texture_transform:uo,RegisterKHR_xmp_json_ld:po,RegisterMSFT_audio_emitter:Ko,RegisterMSFT_lod:zo,RegisterMSFT_minecraftMesh:Qo,RegisterMSFT_sRGBFactors:tr,SetInteractivityNodeState:Rs,SetInterpolationForKey:Ee,TransmissionHelper:wn,_AddInteractivityObjectModel:os,_RegisterKHRInteractivityRuntime:ss,_RegisterKHRNodeHoverabilityRuntime:Bs,_RegisterKHRNodeSelectabilityRuntime:Ms,_RegisterKHRNodeVisibilityRuntime:ds,addNewInteractivityFlowGraphMapping:sr,ensureTransmissionHelper:On,getAllSupportedNativeNodeTypes:mr,getMappingForDeclaration:or,getMappingForFullOperationName:nr,getNoOpMappingForDeclaration:rr,gltfTypeToBabylonType:fr};De(),b(),wo();class ea{constructor(e){this._specWorkflow=!1,this._diffuseTransmissionTint=t.Color3.White(),this._diffuseTransmissionTintTexture=null,this._material=e}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){this._material.alphaCutOff=e}get alphaCutOff(){return this._material.alphaCutOff}set useAlphaFromBaseColorTexture(e){this._material._useAlphaFromBaseColorTexture=e}get useAlphaFromBaseColorTexture(){return this._material._useAlphaFromBaseColorTexture}get transparencyAsAlphaCoverage(){return!1}set transparencyAsAlphaCoverage(e){}set baseColor(e){this._material.baseColor=e}get baseColor(){return this._material.baseColor}set baseColorTexture(e){this._material.baseColorTexture=e}get baseColorTexture(){return this._material.baseColorTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e}get baseDiffuseRoughness(){return this._material.baseDiffuseRoughness}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.baseMetalness=e}get baseMetalness(){return this._material.baseMetalness}set baseMetalnessTexture(e){this._material.baseMetalnessTexture=e}get baseMetalnessTexture(){return this._material.baseMetalnessTexture}set useRoughnessFromMetallicTextureGreen(e){this._material._useRoughnessFromMetallicTextureGreen=e}set useMetallicFromMetallicTextureBlue(e){this._material._useMetallicFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){}configureSpecularGlossiness(){this._specWorkflow=!0}set specularWeight(e){this._material.specularWeight=e}get specularWeight(){return this._material.specularWeight}set specularWeightTexture(e){this._material.specularColorTexture===e?(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0):this._material.specularWeightTexture=e}get specularWeightTexture(){return this._material.specularWeightTexture}set specularColor(e){this._material.specularColor=e}get specularColor(){return this._material.specularColor}set specularColorTexture(e){this._material.specularColorTexture=e,this._material.specularWeightTexture===this._material.specularColorTexture&&(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0)}get specularColorTexture(){return this._material.specularColorTexture}set specularRoughness(e){this._material.specularRoughness=e}get specularRoughness(){return this._material.specularRoughness}set specularRoughnessTexture(e){this._material.specularRoughnessTexture=e}get specularRoughnessTexture(){return this._material.specularRoughnessTexture}set specularIor(e){this._material.specularIor=e}get specularIor(){return this._material.specularIor}set glossiness(e){this._material.specularRoughness=Math.max(1-e,0)}get glossiness(){return 1-this._material.specularRoughness}set emissionColor(e){this._material.emissionColor=e}get emissionColor(){return this._material.emissionColor}set emissionLuminance(e){this._material.emissionLuminance=e}get emissionLuminance(){return this._material.emissionLuminance}set emissionColorTexture(e){this._material.emissionColorTexture=e}get emissionColorTexture(){return this._material.emissionColorTexture}set ambientOcclusionTexture(e){this._material.ambientOcclusionTexture=e}get ambientOcclusionTexture(){return this._material.ambientOcclusionTexture}set ambientOcclusionTextureStrength(e){const t=this._material.ambientOcclusionTexture;t&&(t.level=e)}get ambientOcclusionTextureStrength(){var e;const t=this._material.ambientOcclusionTexture;return null!==(e=null==t?void 0:t.level)&&void 0!==e?e:1}configureCoat(){}set coatWeight(e){this._material.coatWeight=e}get coatWeight(){return this._material.coatWeight}set coatWeightTexture(e){this._material.coatWeightTexture=e}get coatWeightTexture(){return this._material.coatWeightTexture}set coatColor(e){this._material.coatColor=e}get coatColor(){return this._material.coatColor}set coatColorTexture(e){this._material.coatColorTexture=e}set coatRoughness(e){this._material.coatRoughness=e}get coatRoughness(){return this._material.coatRoughness}set coatRoughnessTexture(e){this._material.coatRoughnessTexture=e,e&&(this._material._useCoatRoughnessFromGreenChannel=!0)}get coatRoughnessTexture(){return this._material.coatRoughnessTexture}set coatIor(e){this._material.coatIor=e}get coatIor(){return this._material.coatIor}set coatDarkening(e){this._material.coatDarkening=e}get coatDarkening(){return this._material.coatDarkening}set coatDarkeningTexture(e){this._material.coatDarkeningTexture=e}set coatRoughnessAnisotropy(e){this._material.coatRoughnessAnisotropy=e}get coatRoughnessAnisotropy(){return this._material.coatRoughnessAnisotropy}set geometryCoatTangentAngle(e){this._material.geometryCoatTangentAngle=e}set geometryCoatTangentTexture(e){this._material.geometryCoatTangentTexture=e,e&&(this._material._useCoatRoughnessAnisotropyFromTangentTexture=!0)}get geometryCoatTangentTexture(){return this._material.geometryCoatTangentTexture}configureTransmission(){this._material.geometryThinWalled=1,this._material.transmissionDepth=0}set transmissionWeight(e){this._material.transmissionWeight=e}set transmissionWeightTexture(e){this._material.transmissionWeightTexture=e}get transmissionWeightTexture(){return this._material.transmissionWeightTexture}get transmissionWeight(){return this._material.transmissionWeight}set transmissionScatter(e){this._material.transmissionScatter=e}get transmissionScatter(){return this._material.transmissionScatter}set transmissionScatterTexture(e){this._material.transmissionScatterTexture=e}get transmissionScatterTexture(){return this._material.transmissionScatterTexture}set transmissionScatterAnisotropy(e){this._material.transmissionScatterAnisotropy=e}set transmissionDispersionAbbeNumber(e){this._material.transmissionDispersionAbbeNumber=e}set transmissionDispersionScale(e){this._material.transmissionDispersionScale=e}set transmissionDepth(e){e!==Number.MAX_VALUE||0!==this._material.transmissionDepth?this._material.transmissionDepth=e:this._material.transmissionDepth=0}get transmissionDepth(){return this._material.transmissionDepth}set transmissionColor(e){e.equals(t.Color3.White())||(this._material.transmissionColor=e)}get transmissionColor(){return this._material.transmissionColor}get refractionBackgroundTexture(){return this._material.backgroundRefractionTexture}set refractionBackgroundTexture(e){this._material.backgroundRefractionTexture=e}configureVolume(){this._material.geometryThinWalled=0}set geometryThinWalled(e){this._material.geometryThinWalled=e?1:0}get geometryThinWalled(){return!!this._material.geometryThinWalled}set volumeThicknessTexture(e){this._material.geometryThicknessTexture=e,this._material._useGeometryThicknessFromGreenChannel=!0}set volumeThickness(e){this._material.geometryThickness=e}configureSubsurface(){this._material.geometryThinWalled=1,this._material.subsurfaceScatterAnisotropy=1}set subsurfaceWeight(e){this._material.subsurfaceWeight=e}get subsurfaceWeight(){return this._material.subsurfaceWeight}set subsurfaceWeightTexture(e){this._material.subsurfaceWeightTexture=e,this._material._useSubsurfaceWeightFromTextureAlpha=!0}get subsurfaceWeightTexture(){return this._material.subsurfaceWeightTexture}set subsurfaceColor(e){this._material.subsurfaceColor=e}set subsurfaceColorTexture(e){this._material.subsurfaceColorTexture=e}set diffuseTransmissionTint(e){this._diffuseTransmissionTint=e}get diffuseTransmissionTint(){return this._diffuseTransmissionTint}set diffuseTransmissionTintTexture(e){this._diffuseTransmissionTintTexture=e}get subsurfaceRadius(){return this._material.subsurfaceRadius}set subsurfaceRadius(e){this._material.subsurfaceRadius=e}get subsurfaceRadiusScale(){return this._material.subsurfaceRadiusScale}set subsurfaceRadiusScale(e){this._material.subsurfaceRadiusScale=e}set subsurfaceScatterAnisotropy(e){this._material.subsurfaceScatterAnisotropy=e}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){}set fuzzWeight(e){this._material.fuzzWeight=e}set fuzzWeightTexture(e){this._material.fuzzWeightTexture=e}set fuzzColor(e){this._material.fuzzColor=e}set fuzzColorTexture(e){this._material.fuzzColorTexture=e}set fuzzRoughness(e){this._material.fuzzRoughness=e}set fuzzRoughnessTexture(e){this._material.fuzzRoughnessTexture=e,this._material._useFuzzRoughnessFromTextureAlpha=!0}set specularRoughnessAnisotropy(e){this._material.specularRoughnessAnisotropy=e}get specularRoughnessAnisotropy(){return this._material.specularRoughnessAnisotropy}set geometryTangentAngle(e){this._material.geometryTangentAngle=e}set geometryTangentTexture(e){this._material.geometryTangentTexture=e,this._material._useSpecularRoughnessAnisotropyFromTangentTexture=!0}get geometryTangentTexture(){return this._material.geometryTangentTexture}configureGltfStyleAnisotropy(e=!0){this._material._useGltfStyleAnisotropy=e}set thinFilmWeight(e){this._material.thinFilmWeight=e}set thinFilmIor(e){this._material.thinFilmIor=e}set thinFilmThicknessMinimum(e){this._material.thinFilmThicknessMin=e/1e3}set thinFilmThicknessMaximum(e){this._material.thinFilmThickness=e/1e3}set thinFilmWeightTexture(e){this._material.thinFilmWeightTexture=e}set thinFilmThicknessTexture(e){this._material.thinFilmThicknessTexture=e,this._material._useThinFilmThicknessFromTextureGreen=!0}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.geometryOpacity=e}get geometryOpacity(){return this._material.geometryOpacity}set geometryNormalTexture(e){this._material.geometryNormalTexture=e}get geometryNormalTexture(){return this._material.geometryNormalTexture}setNormalMapInversions(e,t){}set geometryCoatNormalTexture(e){this._material.geometryCoatNormalTexture=e}get geometryCoatNormalTexture(){return this._material.geometryCoatNormalTexture}set geometryCoatNormalTextureScale(e){this._material.geometryCoatNormalTexture&&(this._material.geometryCoatNormalTexture.level=e)}finalizeAsync(e){return A(this,void 0,void 0,function*(){var n,o,r;if(this._diffuseTransmissionTint&&!this._diffuseTransmissionTint.equals(t.Color3.White())||this._diffuseTransmissionTintTexture)if(this._material.geometryThinWalled)this.subsurfaceColor=this._diffuseTransmissionTint,this.subsurfaceColorTexture=this._diffuseTransmissionTintTexture;else if(yield this.copySurfaceToCoatAsync(e,this.subsurfaceWeight,this.subsurfaceWeightTexture,t.TextureChannel.A,this._diffuseTransmissionTint,this._diffuseTransmissionTintTexture,!0),e._disposed)return;if(this.transmissionWeight>0)if(this._material.geometryThinWalled||0===this._material.transmissionDepth)this._material.transmissionColor=this._material.baseColor,this._material.transmissionColorTexture=this._material.baseColorTexture;else if((!this.baseColor.equals(t.Color3.White())||null!==this.baseColorTexture)&&(yield this.copySurfaceToCoatAsync(e,this.transmissionWeight,this.transmissionWeightTexture,t.TextureChannel.R,this.baseColor,this.baseColorTexture,!1),e._disposed))return;if(this._specWorkflow){const s=yield t.InvertTextureAsync("newRoughnessTexture ("+this._material.name+")",yield t.ExtractChannelAsync("glossiness ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.specularColorTexture,new t.Color4(this.specularColor.r,this.specularColor.g,this.specularColor.b,this.glossiness),t.TextureChannel.A,t.TextureColorSpace.Linear),t.TextureChannel.A,this._material.getScene(),t.TextureColorSpace.Linear,t.ChannelMask.R),this._material.getScene(),t.ChannelMask.R,t.TextureColorSpace.Linear,t.ChannelMask.R);if(e._disposed)return void(null===(n=s.texture)||void 0===n||n.dispose());this.specularRoughnessTexture=s.texture,this.specularRoughness=s.factor?s.factor.r:1;const a=yield t.ExtractMaxChannelAsync("metallicTexture ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.specularColorTexture,this.specularColor.toColor4(),t.TextureChannel.RGBA,t.TextureColorSpace.Linear),this._material.getScene(),!1,t.TextureColorSpace.SRGB,t.ChannelMask.RGB);if(e._disposed)return void(null===(o=a.texture)||void 0===o||o.dispose());this.baseMetalnessTexture=a.texture,this.baseMetalness=a.factor?a.factor.r:1;const i=yield t.LerpTexturesAsync("newBaseColor ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.baseColorTexture,this.baseColor.toColor4(),t.TextureChannel.RGBA,t.TextureColorSpace.Linear),t.CreateTextureWithFactorOperand(this.specularColorTexture,this.specularColor.toColor4(),t.TextureChannel.RGBA,t.TextureColorSpace.Linear),Object.assign(Object.assign({},a),{dispose:void 0,colorSpace:t.TextureColorSpace.Linear}),this._material.getScene(),t.TextureColorSpace.SRGB,t.ChannelMask.RGB);if(e._disposed)return void(null===(r=i.texture)||void 0===r||r.dispose());const l=this.baseColorTexture;null==l||l.dispose(),this.baseColorTexture=i.texture,this.baseColor=i.factor?new t.Color3(i.factor.r,i.factor.g,i.factor.b):t.Color3.White();const u=this.specularColorTexture;null==u||u.dispose(),this.specularColorTexture=null}})}copySurfaceToCoatAsync(e,n,o,r,s,a){return A(this,arguments,void 0,function*(e,n,o,r,s,a,i=!1){var l,u,c,d,h,m,p,f,_;const g=this._material.coatWeight,v=this._material.coatWeightTexture,y=this._material.coatColor.clone(),b=this._material.coatColorTexture,T=this._material.geometryCoatNormalTexture,x=new t.Color4(g,g,g,g),A=new t.Color4(n,n,n,n);this.coatWeightTexture=null,this.coatWeight=1;const R=yield Promise.allSettled([t.LerpTexturesAsync("lerpExistingCoat",t.CreateTextureWithFactorOperand(null,new t.Color4(1,1,1,1)),t.CreateTextureWithFactorOperand(b,y.toColor4(),t.TextureChannel.RGBA,t.TextureColorSpace.SRGB),t.CreateTextureWithFactorOperand(v,x,t.TextureChannel.R),this._material.getScene(),t.TextureColorSpace.SRGB),t.LerpTexturesAsync("lerpSurfaceColor",t.CreateTextureWithFactorOperand(null,new t.Color4(1,1,1,1)),t.CreateTextureWithFactorOperand(a,s.toColor4(),t.TextureChannel.RGBA,t.TextureColorSpace.SRGB),t.CreateTextureWithFactorOperand(o,A,r),this._material.getScene(),t.TextureColorSpace.SRGB)]),C=R.find(e=>"rejected"===e.status);if(C){for(const e of R)"fulfilled"===e.status&&(null===(l=e.value.texture)||void 0===l||l.dispose());throw C.reason}const[w,O]=R.map(e=>e.value);if(e._disposed)return null===(u=w.texture)||void 0===u||u.dispose(),void(null===(c=O.texture)||void 0===c||c.dispose());const M=yield t.MultiplyTexturesAsync("newCoatColor ("+this._material.name+")",w,O,this._material.getScene(),t.TextureColorSpace.SRGB);if(e._disposed)return void(null===(d=M.texture)||void 0===d||d.dispose());M.texture?(this.coatColorTexture=M.texture,this.coatColor=t.Color3.White()):M.factor&&(this.coatColorTexture=null,this.coatColor.fromArray([M.factor.r,M.factor.g,M.factor.b]));const E=yield t.LerpTexturesAsync("newCoatIor ("+this._material.name+")",t.CreateTextureWithFactorOperand(null,new t.Color4(this._material.specularIor,this._material.specularIor,this._material.specularIor,1),t.TextureChannel.R),t.CreateTextureWithFactorOperand(null,new t.Color4(this.coatIor,this.coatIor,this.coatIor,1),t.TextureChannel.R),t.CreateTextureWithFactorOperand(v,x,t.TextureChannel.R),this._material.getScene());if(e._disposed)return void(null===(h=E.texture)||void 0===h||h.dispose());this.coatIor=E.factor?E.factor.r:this.coatIor;const S=yield t.LerpTexturesAsync("newCoatRoughness ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.specularRoughnessTexture,new t.Color4(this.specularRoughness,this.specularRoughness,this.specularRoughness,1),t.TextureChannel.G),t.CreateTextureWithFactorOperand(this.coatRoughnessTexture,new t.Color4(this.coatRoughness,this.coatRoughness,this.coatRoughness,1),t.TextureChannel.G),t.CreateTextureWithFactorOperand(v,x,t.TextureChannel.R),this._material.getScene());if(e._disposed)return void(null===(m=S.texture)||void 0===m||m.dispose());this.coatRoughness=S.factor?S.factor.r:1,this.coatRoughnessTexture=S.texture;const I=yield t.LerpTexturesAsync("newCoatDarkening ("+this._material.name+")",t.CreateTextureWithFactorOperand(null,new t.Color4(0,0,0,1),t.TextureChannel.R),t.CreateTextureWithFactorOperand(null,new t.Color4(this.coatDarkening,this.coatDarkening,this.coatDarkening,1),t.TextureChannel.R),t.CreateTextureWithFactorOperand(v,x,t.TextureChannel.R),this._material.getScene());if(e._disposed)null===(p=I.texture)||void 0===p||p.dispose();else{if(this.coatDarkening=I.factor?I.factor.r:this.coatDarkening,i){const n=yield t.LerpTexturesAsync("newSpecularRoughness ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.specularRoughnessTexture,new t.Color4(this._material.specularRoughness,this._material.specularRoughness,this._material.specularRoughness,1),t.TextureChannel.G),t.CreateTextureWithFactorOperand(null,new t.Color4(1,1,1,1),t.TextureChannel.R),t.CreateTextureWithFactorOperand(o,A,r),this._material.getScene());if(e._disposed)return void(null===(f=n.texture)||void 0===f||f.dispose());this.specularRoughness=n.factor?n.factor.r:1,this.specularRoughnessTexture=n.texture}if(T||this.geometryNormalTexture){const n=yield t.LerpTexturesAsync("newCoatNormal ("+this._material.name+")",t.CreateTextureWithFactorOperand(this.geometryNormalTexture,this.geometryNormalTexture?new t.Color4(1,1,1,1):new t.Color4(.5,.5,1,1),t.TextureChannel.RGBA),t.CreateTextureWithFactorOperand(T,T?new t.Color4(1,1,1,1):new t.Color4(.5,.5,1,1),t.TextureChannel.RGBA),t.CreateTextureWithFactorOperand(v,x,t.TextureChannel.R),this._material.getScene());if(e._disposed)return void(null===(_=n.texture)||void 0===_||_.dispose());n.texture&&(this.geometryCoatNormalTexture=n.texture)}}})}}var ta={__proto__:null,OpenPBRMaterialLoadingAdapter:ea};class na{constructor(e){this._specWorkflow=!1,this._material=e,this._material.enableSpecularAntiAliasing=!0}get material(){return this._material}finalizeAsync(e){return A(this,void 0,void 0,function*(){})}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){this._material.alphaCutOff=e}get alphaCutOff(){return this._material.alphaCutOff}set useAlphaFromBaseColorTexture(e){this._material.useAlphaFromAlbedoTexture=e}get useAlphaFromBaseColorTexture(){return this._material.useAlphaFromAlbedoTexture}get transparencyAsAlphaCoverage(){return this._material.useRadianceOverAlpha||this._material.useSpecularOverAlpha}set transparencyAsAlphaCoverage(e){this._material.useRadianceOverAlpha=!e,this._material.useSpecularOverAlpha=!e}set baseColor(e){this._material.albedoColor=e}get baseColor(){return this._material.albedoColor}set baseColorTexture(e){this._material.albedoTexture=e}get baseColorTexture(){return this._material.albedoTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e,e>0&&(this._material.brdf.baseDiffuseModel=t.Constants.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR)}get baseDiffuseRoughness(){var e;return null!==(e=this._material.baseDiffuseRoughness)&&void 0!==e?e:0}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.metallic=e}get baseMetalness(){var e;return null!==(e=this._material.metallic)&&void 0!==e?e:1}set baseMetalnessTexture(e){this._material.metallicTexture=e}get baseMetalnessTexture(){return this._material.metallicTexture}set useRoughnessFromMetallicTextureGreen(e){this._material.useRoughnessFromMetallicTextureGreen=e,this._material.useRoughnessFromMetallicTextureAlpha=!e}set useMetallicFromMetallicTextureBlue(e){this._material.useMetallnessFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){e&&(this._material.brdf.dielectricSpecularModel=t.Constants.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR,this._material.brdf.conductorSpecularModel=t.Constants.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR)}configureSpecularGlossiness(){this._specWorkflow=!0,this._material.metallic=null,this._material.roughness=null,this._material.useMicroSurfaceFromReflectivityMapAlpha=!0}set specularWeight(e){this._material.metallicF0Factor=e}get specularWeight(){var e;return null!==(e=this._material.metallicF0Factor)&&void 0!==e?e:1}set specularWeightTexture(e){e?(this._material.metallicReflectanceTexture=e,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!0):(this._material.metallicReflectanceTexture=null,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!1)}get specularWeightTexture(){return this._material.metallicReflectanceTexture}set specularColor(e){this._specWorkflow?this._material.reflectivityColor=e:this._material.metallicReflectanceColor=e}get specularColor(){return this._specWorkflow?this._material.reflectivityColor:this._material.metallicReflectanceColor}set specularColorTexture(e){this._specWorkflow?(this._material.reflectivityTexture=e,this._material.reflectivityTexture&&(this._material.reflectivityTexture.hasAlpha=!0)):this._material.reflectanceTexture=e}get specularColorTexture(){return this._specWorkflow?this._material.reflectivityTexture:this._material.reflectanceTexture}set specularRoughness(e){this._material.roughness=e}get specularRoughness(){var e;return null!==(e=this._material.roughness)&&void 0!==e?e:1}set specularRoughnessTexture(e){this.baseMetalnessTexture||(this._material.metallicTexture=e)}get specularRoughnessTexture(){return this._material.metallicTexture}set specularIor(e){this._material.indexOfRefraction=e}get specularIor(){return this._material.indexOfRefraction}get glossiness(){var e;return null!==(e=this._material.microSurface)&&void 0!==e?e:1}set glossiness(e){this._material.microSurface=e}set emissionColor(e){this._material.emissiveColor=e}get emissionColor(){return this._material.emissiveColor}set emissionLuminance(e){this._material.emissiveIntensity=e}get emissionLuminance(){return this._material.emissiveIntensity}set emissionColorTexture(e){this._material.emissiveTexture=e}get emissionColorTexture(){return this._material.emissiveTexture}set ambientOcclusionTexture(e){this._material.ambientTexture=e,e&&(this._material.useAmbientInGrayScale=!0)}get ambientOcclusionTexture(){return this._material.ambientTexture}set ambientOcclusionTextureStrength(e){this._material.ambientTextureStrength=e}get ambientOcclusionTextureStrength(){var e;return null!==(e=this._material.ambientTextureStrength)&&void 0!==e?e:1}configureCoat(){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.remapF0OnInterfaceChange=!1}set coatWeight(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.intensity=e}get coatWeight(){return this._material.clearCoat.intensity}set coatWeightTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.texture=e}get coatWeightTexture(){return this._material.clearCoat.texture}set coatColor(e){this._material.clearCoat.isTintEnabled=e!=t.Color3.White(),this._material.clearCoat.tintColor=e}set coatColorTexture(e){this._material.clearCoat.tintTexture=e}set coatRoughness(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.roughness=e}get coatRoughness(){var e;return null!==(e=this._material.clearCoat.roughness)&&void 0!==e?e:0}set coatRoughnessTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.textureRoughness=e}get coatRoughnessTexture(){return this._material.clearCoat.textureRoughness}set coatIor(e){this._material.clearCoat.indexOfRefraction=e}set coatDarkening(e){}set coatDarkeningTexture(e){}set coatRoughnessAnisotropy(e){}get coatRoughnessAnisotropy(){return 0}set geometryCoatTangentAngle(e){}set geometryCoatTangentTexture(e){}get geometryCoatTangentTexture(){return null}set transmissionWeight(e){this._material.subSurface.isRefractionEnabled=e>0,this._material.subSurface.refractionIntensity=e}get transmissionWeight(){return this._material.subSurface.isRefractionEnabled?this._material.subSurface.refractionIntensity:0}set transmissionWeightTexture(e){this._material.subSurface.isRefractionEnabled=!0,this._material.subSurface.refractionIntensityTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set transmissionDepth(e){this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(new t.Color3(e,e,e))}get transmissionDepth(){return this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance:0}set transmissionColor(e){this.transmissionWeight>0?this._material.subSurface.tintColor=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(e)}get transmissionColor(){return this.transmissionWeight>0?this._material.subSurface.tintColor:this.subsurfaceWeight>0?this._material.subSurface.diffusionDistance:new t.Color3(0,0,0)}set transmissionScatter(e){this._material.subSurface.diffusionDistance=e}get transmissionScatter(){return this._material.subSurface.diffusionDistance}set transmissionScatterTexture(e){}set transmissionScatterAnisotropy(e){}set transmissionDispersionAbbeNumber(e){}set transmissionDispersionScale(e){e>0?(this._material.subSurface.isDispersionEnabled=!0,this._material.subSurface.dispersion=20/e):(this._material.subSurface.isDispersionEnabled=!1,this._material.subSurface.dispersion=0)}get refractionBackgroundTexture(){return this._material.subSurface.refractionTexture}set refractionBackgroundTexture(e){this._material.subSurface.refractionTexture=e}configureTransmission(){this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.useAlbedoToTintRefraction=!0,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0}configureVolume(){}set geometryThinWalled(e){}get geometryThinWalled(){return 0===this._material.subSurface.maximumThickness}set volumeThicknessTexture(e){this._material.subSurface.thicknessTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set volumeThickness(e){this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=e,this._material.subSurface.useThicknessAsDepth=!0,e>0&&(this._material.subSurface.volumeIndexOfRefraction=this._material.indexOfRefraction)}configureSubsurface(){this._material.subSurface.useGltfStyleTextures=!0,this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0,this._material.subSurface.useAlbedoToTintTranslucency=!1}set subsurfaceWeight(e){this._material.subSurface.isTranslucencyEnabled=e>0,this._material.subSurface.translucencyIntensity=e}get subsurfaceWeight(){return this._material.subSurface.isTranslucencyEnabled?this._material.subSurface.translucencyIntensity:0}set subsurfaceWeightTexture(e){this._material.subSurface.translucencyIntensityTexture=e}set subsurfaceColor(e){const n=new t.Vector3(-Math.log(this.transmissionColor.r),-Math.log(this.transmissionColor.g),-Math.log(this.transmissionColor.b));n.scaleInPlace(1/Math.max(this.transmissionDepth,.001));const o=n,r=Math.max(o.x,Math.max(o.y,o.z)),s=r>0?1/r:1;this._material.subSurface.diffusionDistance=new t.Color3(Math.exp(-o.x*s),Math.exp(-o.y*s),Math.exp(-o.z*s))}set subsurfaceColorTexture(e){}set diffuseTransmissionTint(e){this._material.subSurface.tintColor=e}get diffuseTransmissionTint(){return this._material.subSurface.tintColor}set diffuseTransmissionTintTexture(e){this._material.subSurface.translucencyColorTexture=e}get subsurfaceRadius(){return 1}set subsurfaceRadius(e){}get subsurfaceRadiusScale(){var e;return null!==(e=this._material.subSurface.scatteringDiffusionProfile)&&void 0!==e?e:t.Color3.White()}set subsurfaceRadiusScale(e){this._material.subSurface.scatteringDiffusionProfile=e}set subsurfaceScatterAnisotropy(e){}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){this._material.sheen.isEnabled=!0,this._material.sheen.useRoughnessFromMainTexture=!1,this._material.sheen.albedoScaling=!0}set fuzzWeight(e){this._material.sheen.isEnabled=!0,this._material.sheen.intensity=e}set fuzzWeightTexture(e){this._material.sheen.texture||(this._material.sheen.texture=e)}set fuzzColor(e){this._material.sheen.isEnabled=!0,this._material.sheen.color=e}set fuzzColorTexture(e){this._material.sheen.texture=e}set fuzzRoughness(e){this._material.sheen.isEnabled=!0,this._material.sheen.roughness=e}set fuzzRoughnessTexture(e){this._material.sheen.isEnabled=!0,this._material.sheen.textureRoughness=e}set specularRoughnessAnisotropy(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.intensity=e}get specularRoughnessAnisotropy(){return this._material.anisotropy.intensity}set geometryTangentAngle(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.angle=e}set geometryTangentTexture(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.texture=e}get geometryTangentTexture(){return this._material.anisotropy.texture}configureGltfStyleAnisotropy(e=!0){}set thinFilmWeight(e){this._material.iridescence.isEnabled=e>0,this._material.iridescence.intensity=e}set thinFilmIor(e){this._material.iridescence.indexOfRefraction=e}set thinFilmThicknessMinimum(e){this._material.iridescence.minimumThickness=e}set thinFilmThicknessMaximum(e){this._material.iridescence.maximumThickness=e}set thinFilmWeightTexture(e){this._material.iridescence.texture=e}set thinFilmThicknessTexture(e){this._material.iridescence.thicknessTexture=e}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.alpha=e}get geometryOpacity(){return this._material.alpha}set geometryNormalTexture(e){this._material.bumpTexture=e,this._material.forceIrradianceInFragment=!0}get geometryNormalTexture(){return this._material.bumpTexture}setNormalMapInversions(e,t){this._material.invertNormalMapX=e,this._material.invertNormalMapY=t}set geometryCoatNormalTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.bumpTexture=e}get geometryCoatNormalTexture(){return this._material.clearCoat.bumpTexture}set geometryCoatNormalTextureScale(e){this._material.clearCoat.bumpTexture&&(this._material.clearCoat.bumpTexture.level=e)}}var oa={__proto__:null,PBRMaterialLoadingAdapter:na},ra={__proto__:null,AddObjectAccessorToKey:Se,AnimationPropertyInfo:xo,ArrayItem:Pe,CloneKHRInteractivityGraph:gr,CreateEffectiveKHRInteractivityGraph:Er,CreateKHRInteractivityDocument:Fr,CreateKHRInteractivityGraphModel:kr,EXT_lights_area:Mt,EXT_lights_ies:ut,EXT_lights_image_based:Ke,EXT_mesh_gpu_instancing:ze,EXT_meshopt_compression:Qe,EXT_texture_avif:st,EXT_texture_webp:tt,ExtrasAsMetadata:$s,FlowGraphEventReferenceBlock:qs,FlowGraphGLTFDataProvider:Ks,FlowGraphObjectReferenceBlock:js,FlowGraphUnsupportedInteractivityBlock:Qs,GLTFFileLoader:v,GLTFLoader:Ve,GetInteractivityNodeState:As,GetInteractivityObjectReference:Us,GetKHRInteractivityImportResult:es,GetKHRInteractivityImportResults:ts,GetMappingForKey:Me,GetPathToObjectConverter:Oe,InitializeInteractivityNodeState:xs,InteractivityGraphToFlowGraphParser:Vr,KHR_INTERACTIVITY_SPECIFICATION_COMMIT:pr,KHR_animation_pointer:_o,KHR_draco_mesh_compression:mt,KHR_gaussian_splatting:bt,KHR_interactivity:ns,KHR_lights:Rt,KHR_materials_anisotropy:Zt,KHR_materials_clearcoat:$t,KHR_materials_coat:Wt,KHR_materials_diffuse_roughness:Yn,KHR_materials_diffuse_transmission:Ln,KHR_materials_dispersion:Un,KHR_materials_emissive_strength:nn,KHR_materials_fuzz:dn,KHR_materials_ior:yn,KHR_materials_iridescence:qt,KHR_materials_pbrSpecularGlossiness:Nt,KHR_materials_sheen:an,KHR_materials_specular:fn,KHR_materials_transmission:En,KHR_materials_unlit:Bt,KHR_materials_variants:An,KHR_materials_volume:Pn,KHR_materials_volume_scatter:Dn,KHR_mesh_quantization:Jn,KHR_node_hoverability:ks,KHR_node_selectability:ws,KHR_node_visibility:us,KHR_texture_basisu:oo,KHR_texture_transform:io,KHR_xmp_json_ld:ho,LoadBoundingInfoFromPositionAccessor:Ge,MSFT_audio_emitter:Do,MSFT_lod:Uo,MSFT_minecraftMesh:Yo,MSFT_sRGBFactors:Jo,OpenPBRMaterialLoadingAdapter:ea,PBRMaterialLoadingAdapter:na,ParseDebugLogTemplate:dr,RegisterEXT_lights_area:St,RegisterEXT_lights_ies:dt,RegisterEXT_lights_image_based:Ue,RegisterEXT_mesh_gpu_instancing:Ye,RegisterEXT_meshopt_compression:Je,RegisterEXT_texture_avif:it,RegisterEXT_texture_webp:ot,RegisterExtrasAsMetadata:Hs,RegisterGLTF2Loader:De,RegisterGLTFLoaderAnimation:wo,RegisterKHR_animation_pointer:vo,RegisterKHR_draco_mesh_compression:ft,RegisterKHR_gaussian_splatting:xt,RegisterKHR_interactivity:is,RegisterKHR_lights:wt,RegisterKHR_materials_anisotropy:en,RegisterKHR_materials_clearcoat:Ht,RegisterKHR_materials_coat:jt,RegisterKHR_materials_diffuse_roughness:Qn,RegisterKHR_materials_diffuse_transmission:Fn,RegisterKHR_materials_dispersion:zn,RegisterKHR_materials_emissive_strength:rn,RegisterKHR_materials_fuzz:mn,RegisterKHR_materials_ior:Tn,RegisterKHR_materials_iridescence:Xt,RegisterKHR_materials_pbrSpecularGlossiness:kt,RegisterKHR_materials_sheen:un,RegisterKHR_materials_specular:gn,RegisterKHR_materials_transmission:In,RegisterKHR_materials_unlit:Gt,RegisterKHR_materials_variants:Cn,RegisterKHR_materials_volume:Vn,RegisterKHR_materials_volume_scatter:Kn,RegisterKHR_mesh_quantization:to,RegisterKHR_node_hoverability:Gs,RegisterKHR_node_selectability:Ss,RegisterKHR_node_visibility:ms,RegisterKHR_texture_basisu:so,RegisterKHR_texture_transform:uo,RegisterKHR_xmp_json_ld:po,RegisterMSFT_audio_emitter:Ko,RegisterMSFT_lod:zo,RegisterMSFT_minecraftMesh:Qo,RegisterMSFT_sRGBFactors:tr,SetInteractivityNodeState:Rs,SetInterpolationForKey:Ee,TransformNodeAnimationPropertyInfo:Ao,TransmissionHelper:wn,WeightAnimationPropertyInfo:Ro,_AddInteractivityObjectModel:os,_RegisterKHRInteractivityRuntime:ss,_RegisterKHRNodeHoverabilityRuntime:Bs,_RegisterKHRNodeSelectabilityRuntime:Ms,_RegisterKHRNodeVisibilityRuntime:ds,addNewInteractivityFlowGraphMapping:sr,ensureTransmissionHelper:On,getAllSupportedNativeNodeTypes:mr,getMappingForDeclaration:or,getMappingForFullOperationName:nr,getNoOpMappingForDeclaration:rr,getQuaternion:bo,getVector3:yo,getWeights:To,gltfTypeToBabylonType:fr,registerGLTFExtension:Le,registeredGLTFExtensions:Ne,unregisterGLTFExtension:ke};const sa=Object.assign({},Js),aa=Object.assign(Object.assign({},{__proto__:null}),{Extensions:sa}),ia=Object.assign(Object.assign({},ra),{Loader:aa}),la="undefined"!=typeof global?global:"undefined"!=typeof window?window:void 0;if(void 0!==la){la.BABYLON=la.BABYLON||{};const e=la.BABYLON;e.GLTF2=e.GLTF2||{},e.GLTF2.Loader=e.GLTF2.Loader||{},e.GLTF2.Loader.Extensions=e.GLTF2.Loader.Extensions||{};const t=["Loader"];for(const n in sa)e.GLTF2.Loader.Extensions[n]=sa[n],t.push(n);for(const n in aa)"Extensions"!==n&&(e.GLTF2.Loader[n]=aa[n],t.push(n));for(const n in ia)t.indexOf(n)>-1||(e.GLTF2[n]=ia[n])}e.GLTF1=de,e.GLTF2=ia,e.GLTFFileLoader=v,e.GLTFLoaderDefaultOptions=_,e.GLTFValidation=r,e.RegisterGLTFFileLoader=b});
2
2
  //# sourceMappingURL=babylon.glTFFileLoader.min.js.map