babylonjs-loaders 5.0.4 → 5.3.0

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&&"object"==typeof module?module.exports=t(require("babylonjs")):"function"==typeof define&&define.amd?define("babylonjs-loaders",["babylonjs"],t):"object"==typeof exports?exports["babylonjs-loaders"]=t(require("babylonjs")):e.LOADERS=t(e.BABYLON)}("undefined"!=typeof self?self:"undefined"!=typeof global?global:this,(function(e){return(()=>{"use strict";var t={520:t=>{t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{r.d(o,{default:()=>Me});var e={};r.r(e),r.d(e,{GLTFValidation:()=>p});var t={};r.r(t),r.d(t,{GLTFFileLoader:()=>m,GLTFLoaderAnimationStartMode:()=>f,GLTFLoaderCoordinateSystemMode:()=>d,GLTFLoaderState:()=>h});var n={};r.r(n),r.d(n,{EXT_lights_image_based:()=>x,EXT_mesh_gpu_instancing:()=>E,EXT_meshopt_compression:()=>O,EXT_texture_webp:()=>w,ExtrasAsMetadata:()=>ge,KHR_draco_mesh_compression:()=>S,KHR_lights:()=>P,KHR_materials_clearcoat:()=>N,KHR_materials_emissive_strength:()=>k,KHR_materials_ior:()=>W,KHR_materials_pbrSpecularGlossiness:()=>D,KHR_materials_sheen:()=>K,KHR_materials_specular:()=>j,KHR_materials_translucency:()=>ee,KHR_materials_transmission:()=>Z,KHR_materials_unlit:()=>F,KHR_materials_variants:()=>z,KHR_materials_volume:()=>ne,KHR_mesh_quantization:()=>oe,KHR_texture_basisu:()=>se,KHR_texture_transform:()=>le,KHR_xmp_json_ld:()=>ue,MSFT_audio_emitter:()=>fe,MSFT_lod:()=>pe,MSFT_minecraftMesh:()=>me,MSFT_sRGBFactors:()=>be});var a={};r.r(a);var s={};r.r(s),r.d(s,{ArrayItem:()=>v,EXT_lights_image_based:()=>x,EXT_mesh_gpu_instancing:()=>E,EXT_meshopt_compression:()=>O,EXT_texture_webp:()=>w,ExtrasAsMetadata:()=>ge,GLTFLoader:()=>g,KHR_draco_mesh_compression:()=>S,KHR_lights:()=>P,KHR_materials_clearcoat:()=>N,KHR_materials_emissive_strength:()=>k,KHR_materials_ior:()=>W,KHR_materials_pbrSpecularGlossiness:()=>D,KHR_materials_sheen:()=>K,KHR_materials_specular:()=>j,KHR_materials_translucency:()=>ee,KHR_materials_transmission:()=>Z,KHR_materials_unlit:()=>F,KHR_materials_variants:()=>z,KHR_materials_volume:()=>ne,KHR_mesh_quantization:()=>oe,KHR_texture_basisu:()=>se,KHR_texture_transform:()=>le,KHR_xmp_json_ld:()=>ue,MSFT_audio_emitter:()=>fe,MSFT_lod:()=>pe,MSFT_minecraftMesh:()=>me,MSFT_sRGBFactors:()=>be});var i={};r.r(i),r.d(i,{GLTF2:()=>s,GLTFFileLoader:()=>m,GLTFLoaderAnimationStartMode:()=>f,GLTFLoaderCoordinateSystemMode:()=>d,GLTFLoaderState:()=>h,GLTFValidation:()=>p});var l=r(520);function c(e,t,n,r){var o={externalResourceFunction:function(e){return r(e).then((function(e){return new Uint8Array(e)}))}};return n&&(o.uri="file:"===t?n:t+n),e instanceof ArrayBuffer?GLTFValidator.validateBytes(new Uint8Array(e),o):GLTFValidator.validateString(e,o)}function u(){var e=[];onmessage=function(t){var n=t.data;switch(n.id){case"init":importScripts(n.url);break;case"validate":c(n.data,n.rootUrl,n.fileName,(function(t){return new Promise((function(n,r){var o=e.length;e.push({resolve:n,reject:r}),postMessage({id:"getExternalResource",index:o,uri:t})}))})).then((function(e){postMessage({id:"validate.resolve",value:e})}),(function(e){postMessage({id:"validate.reject",reason:e})}));break;case"getExternalResource.resolve":e[n.index].resolve(n.value);break;case"getExternalResource.reject":e[n.index].reject(n.reason)}}}var d,f,h,p=function(){function e(){}return e.ValidateAsync=function(e,t,n,r){var o=this;return"function"==typeof Worker?new Promise((function(a,s){var i="".concat(c,"(").concat(u,")()"),l=URL.createObjectURL(new Blob([i],{type:"application/javascript"})),d=new Worker(l),f=function(e){d.removeEventListener("error",f),d.removeEventListener("message",h),s(e)},h=function(e){var t=e.data;switch(t.id){case"getExternalResource":r(t.uri).then((function(e){d.postMessage({id:"getExternalResource.resolve",index:t.index,value:e},[e])}),(function(e){d.postMessage({id:"getExternalResource.reject",index:t.index,reason:e})}));break;case"validate.resolve":d.removeEventListener("error",f),d.removeEventListener("message",h),a(t.value),d.terminate();break;case"validate.reject":d.removeEventListener("error",f),d.removeEventListener("message",h),s(t.reason),d.terminate()}};d.addEventListener("error",f),d.addEventListener("message",h),d.postMessage({id:"init",url:o.Configuration.url}),d.postMessage({id:"validate",data:e,rootUrl:t,fileName:n})})):(this._LoadScriptPromise||(this._LoadScriptPromise=l.Tools.LoadScriptAsync(this.Configuration.url)),this._LoadScriptPromise.then((function(){return c(e,t,n,r)})))},e.Configuration={url:"https://preview.babylonjs.com/gltf_validator.js"},e}();function _(e,t,n){try{return Promise.resolve(new Uint8Array(e,t,n))}catch(e){return Promise.reject(e)}}!function(e){e[e.AUTO=0]="AUTO",e[e.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED"}(d||(d={})),function(e){e[e.NONE=0]="NONE",e[e.FIRST=1]="FIRST",e[e.ALL=2]="ALL"}(f||(f={})),function(e){e[e.LOADING=0]="LOADING",e[e.READY=1]="READY",e[e.COMPLETE=2]="COMPLETE"}(h||(h={}));var m=function(){function e(){this.onParsedObservable=new l.Observable,this.coordinateSystemMode=d.AUTO,this.animationStartMode=f.FIRST,this.compileMaterials=!1,this.useClipPlane=!1,this.compileShadowGenerators=!1,this.transparencyAsCoverage=!1,this.useRangeRequests=!1,this.createInstances=!0,this.alwaysComputeBoundingBox=!1,this.loadAllMaterials=!1,this.loadOnlyMaterials=!1,this.skipMaterials=!1,this.useSRGBBuffers=!0,this.targetFps=60,this.alwaysComputeSkeletonRootNode=!1,this.preprocessUrlAsync=function(e){return Promise.resolve(e)},this.onMeshLoadedObservable=new l.Observable,this.onTextureLoadedObservable=new l.Observable,this.onMaterialLoadedObservable=new l.Observable,this.onCameraLoadedObservable=new l.Observable,this.onCompleteObservable=new l.Observable,this.onErrorObservable=new l.Observable,this.onDisposeObservable=new l.Observable,this.onExtensionLoadedObservable=new l.Observable,this.validate=!1,this.onValidatedObservable=new l.Observable,this._loader=null,this._state=null,this._requests=new Array,this.name="gltf",this.extensions={".gltf":{isBinary:!1},".glb":{isBinary:!0}},this.onLoaderStateChangedObservable=new l.Observable,this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled}return Object.defineProperty(e.prototype,"onParsed",{set:function(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),this._onParsedObserver=this.onParsedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMeshLoaded",{set:function(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onTextureLoaded",{set:function(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMaterialLoaded",{set:function(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onCameraLoaded",{set:function(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onComplete",{set:function(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onError",{set:function(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDispose",{set:function(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onExtensionLoaded",{set:function(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"loggingEnabled",{get:function(){return this._loggingEnabled},set:function(e){this._loggingEnabled!==e&&(this._loggingEnabled=e,this._loggingEnabled?this._log=this._logEnabled:this._log=this._logDisabled)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"capturePerformanceCounters",{get:function(){return this._capturePerformanceCounters},set:function(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))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onValidated",{set:function(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){this._loader&&(this._loader.dispose(),this._loader=null);for(var e=0,t=this._requests;e<t.length;e++)t[e].abort();this._requests.length=0,delete this._progressCallback,this.preprocessUrlAsync=function(e){return Promise.resolve(e)},this.onMeshLoadedObservable.clear(),this.onTextureLoadedObservable.clear(),this.onMaterialLoadedObservable.clear(),this.onCameraLoadedObservable.clear(),this.onCompleteObservable.clear(),this.onExtensionLoadedObservable.clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()},e.prototype.loadFile=function(e,t,n,r,o,a){var s=this;this._progressCallback=r;var i=t.name?"file:":l.Tools.GetFolderPath(t),c=t.name||l.Tools.GetFilename(t);if(o){if(this.useRangeRequests){this.validate&&l.Logger.Warn("glTF validation is not supported when range requests are enabled");var u={abort:function(){},onCompleteObservable:new l.Observable},d={readAsync:function(n,r){return new Promise((function(o,a){s._loadFile(e,t,(function(e){o(new Uint8Array(e))}),!0,(function(e){a(e)}),(function(e){e.setRequestHeader("Range","bytes=".concat(n,"-").concat(n+r-1))}))}))},byteLength:0};return this._unpackBinaryAsync(new l.DataReader(d)).then((function(e){u.onCompleteObservable.notifyObservers(u),n(e)}),a?function(e){return a(void 0,e)}:void 0),u}return this._loadFile(e,t,(function(t){s._validate(e,t,i,c),s._unpackBinaryAsync(new l.DataReader({readAsync:function(e,n){return _(t,e,n)},byteLength:t.byteLength})).then((function(e){n(e)}),a?function(e){return a(void 0,e)}:void 0)}),!0,a)}return this._loadFile(e,t,(function(t){s._validate(e,t,i,c),n({json:s._parseJson(t)})}),o,a)},e.prototype.importMeshAsync=function(e,t,n,r,o,a){var s=this;return Promise.resolve().then((function(){return s.onParsedObservable.notifyObservers(n),s.onParsedObservable.clear(),s._log("Loading ".concat(a||"")),s._loader=s._getLoader(n),s._loader.importMeshAsync(e,t,null,n,r,o,a)}))},e.prototype.loadAsync=function(e,t,n,r,o){var a=this;return Promise.resolve().then((function(){return a.onParsedObservable.notifyObservers(t),a.onParsedObservable.clear(),a._log("Loading ".concat(o||"")),a._loader=a._getLoader(t),a._loader.loadAsync(e,t,n,r,o)}))},e.prototype.loadAssetContainerAsync=function(e,t,n,r,o){var a=this;return Promise.resolve().then((function(){a.onParsedObservable.notifyObservers(t),a.onParsedObservable.clear(),a._log("Loading ".concat(o||"")),a._loader=a._getLoader(t);var s=new l.AssetContainer(e),i=[];a.onMaterialLoadedObservable.add((function(e){i.push(e)}));var c=[];a.onTextureLoadedObservable.add((function(e){c.push(e)}));var u=[];return a.onCameraLoadedObservable.add((function(e){u.push(e)})),a._loader.importMeshAsync(null,e,s,t,n,r,o).then((function(e){return Array.prototype.push.apply(s.geometries,e.geometries),Array.prototype.push.apply(s.meshes,e.meshes),Array.prototype.push.apply(s.particleSystems,e.particleSystems),Array.prototype.push.apply(s.skeletons,e.skeletons),Array.prototype.push.apply(s.animationGroups,e.animationGroups),Array.prototype.push.apply(s.materials,i),Array.prototype.push.apply(s.textures,c),Array.prototype.push.apply(s.lights,e.lights),Array.prototype.push.apply(s.transformNodes,e.transformNodes),Array.prototype.push.apply(s.cameras,u),s}))}))},e.prototype.canDirectLoad=function(t){return-1!==t.indexOf("asset")&&-1!==t.indexOf("version")||l.StringTools.StartsWith(t,"data:base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(t,"data:;base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(t,"data:application/octet-stream;base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(t,"data:model/gltf-binary;base64,"+e._MagicBase64Encoded)},e.prototype.directLoad=function(t,n){if(l.StringTools.StartsWith(n,"base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(n,";base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(n,"application/octet-stream;base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(n,"model/gltf-binary;base64,"+e._MagicBase64Encoded)){var r=(0,l.DecodeBase64UrlToBinary)(n);return this._validate(t,r),this._unpackBinaryAsync(new l.DataReader({readAsync:function(e,t){return _(r,e,t)},byteLength:r.byteLength}))}return this._validate(t,n),Promise.resolve({json:this._parseJson(n)})},e.prototype.createPlugin=function(){return new e},Object.defineProperty(e.prototype,"loaderState",{get:function(){return this._state},enumerable:!1,configurable:!0}),e.prototype.whenCompleteAsync=function(){var e=this;return new Promise((function(t,n){e.onCompleteObservable.addOnce((function(){t()})),e.onErrorObservable.addOnce((function(e){n(e)}))}))},e.prototype._setState=function(e){this._state!==e&&(this._state=e,this.onLoaderStateChangedObservable.notifyObservers(this._state),this._log(h[this._state]))},e.prototype._loadFile=function(e,t,n,r,o,a){var s=this,i=e._loadFile(t,n,(function(e){s._onProgress(e,i)}),!0,r,o,a);return i.onCompleteObservable.add((function(e){s._requests.splice(s._requests.indexOf(e),1)})),this._requests.push(i),i},e.prototype._onProgress=function(e,t){if(this._progressCallback){t._lengthComputable=e.lengthComputable,t._loaded=e.loaded,t._total=e.total;for(var n=!0,r=0,o=0,a=0,s=this._requests;a<s.length;a++){var i=s[a];if(void 0===i._lengthComputable||void 0===i._loaded||void 0===i._total)return;n=n&&i._lengthComputable,r+=i._loaded,o+=i._total}this._progressCallback({lengthComputable:n,loaded:r,total:n?o:0})}},e.prototype._validate=function(e,t,n,r){var o=this;void 0===n&&(n=""),void 0===r&&(r=""),this.validate&&(this._startPerformanceCounter("Validate JSON"),p.ValidateAsync(t,n,r,(function(t){return o.preprocessUrlAsync(n+t).then((function(t){return e._loadFileAsync(t,void 0,!0,!0)}))})).then((function(e){o._endPerformanceCounter("Validate JSON"),o.onValidatedObservable.notifyObservers(e),o.onValidatedObservable.clear()}),(function(e){o._endPerformanceCounter("Validate JSON"),l.Tools.Warn("Failed to validate: ".concat(e.message)),o.onValidatedObservable.clear()})))},e.prototype._getLoader=function(t){var n=t.json.asset||{};this._log("Asset version: ".concat(n.version)),n.minVersion&&this._log("Asset minimum version: ".concat(n.minVersion)),n.generator&&this._log("Asset generator: ".concat(n.generator));var r=e._parseVersion(n.version);if(!r)throw new Error("Invalid version: "+n.version);if(void 0!==n.minVersion){var o=e._parseVersion(n.minVersion);if(!o)throw new Error("Invalid minimum version: "+n.minVersion);if(e._compareVersion(o,{major:2,minor:0})>0)throw new Error("Incompatible minimum version: "+n.minVersion)}var a={1:e._CreateGLTF1Loader,2:e._CreateGLTF2Loader}[r.major];if(!a)throw new Error("Unsupported version: "+n.version);return a(this)},e.prototype._parseJson=function(e){this._startPerformanceCounter("Parse JSON"),this._log("JSON length: ".concat(e.length));var t=JSON.parse(e);return this._endPerformanceCounter("Parse JSON"),t},e.prototype._unpackBinaryAsync=function(e){var t=this;return this._startPerformanceCounter("Unpack Binary"),e.loadAsync(20).then((function(){var n=e.readUint32();if(1179937895!==n)throw new l.RuntimeError("Unexpected magic: "+n,l.ErrorCodes.GLTFLoaderUnexpectedMagicError);var r=e.readUint32();t.loggingEnabled&&t._log("Binary version: ".concat(r));var o,a=e.readUint32();if(0!==e.buffer.byteLength&&a!==e.buffer.byteLength)throw new Error("Length in header does not match actual data length: ".concat(a," != ").concat(e.buffer.byteLength));switch(r){case 1:o=t._unpackBinaryV1Async(e,a);break;case 2:o=t._unpackBinaryV2Async(e,a);break;default:throw new Error("Unsupported version: "+r)}return t._endPerformanceCounter("Unpack Binary"),o}))},e.prototype._unpackBinaryV1Async=function(e,t){var n=e.readUint32(),r=e.readUint32();if(0!==r)throw new Error("Unexpected content format: ".concat(r));var o=t-e.byteOffset,a={json:this._parseJson(e.readString(n)),bin:null};if(0!==o){var s=e.byteOffset;a.bin={readAsync:function(t,n){return e.buffer.readAsync(s+t,n)},byteLength:o}}return Promise.resolve(a)},e.prototype._unpackBinaryV2Async=function(e,t){var n=this,r=1313821514,o=e.readUint32();if(e.readUint32()!==r)throw new Error("First chunk format is not JSON");return e.byteOffset+o===t?e.loadAsync(o).then((function(){return{json:n._parseJson(e.readString(o)),bin:null}})):e.loadAsync(o+8).then((function(){var a={json:n._parseJson(e.readString(o)),bin:null},s=function(){var n=e.readUint32();switch(e.readUint32()){case r:throw new Error("Unexpected JSON chunk");case 5130562:var o=e.byteOffset;a.bin={readAsync:function(t,n){return e.buffer.readAsync(o+t,n)},byteLength:n},e.skipBytes(n);break;default:e.skipBytes(n)}return e.byteOffset!==t?e.loadAsync(8).then(s):Promise.resolve(a)};return s()}))},e._parseVersion=function(e){if("1.0"===e||"1.0.1"===e)return{major:1,minor:0};var t=(e+"").match(/^(\d+)\.(\d+)/);return t?{major:parseInt(t[1]),minor:parseInt(t[2])}:null},e._compareVersion=function(e,t){return e.major>t.major?1:e.major<t.major?-1:e.minor>t.minor?1:e.minor<t.minor?-1:0},e.prototype._logOpen=function(e){this._log(e),this._logIndentLevel++},e.prototype._logClose=function(){--this._logIndentLevel},e.prototype._logEnabled=function(t){var n=e._logSpaces.substr(0,2*this._logIndentLevel);l.Logger.Log("".concat(n).concat(t))},e.prototype._logDisabled=function(e){},e.prototype._startPerformanceCounterEnabled=function(e){l.Tools.StartPerformanceCounter(e)},e.prototype._startPerformanceCounterDisabled=function(e){},e.prototype._endPerformanceCounterEnabled=function(e){l.Tools.EndPerformanceCounter(e)},e.prototype._endPerformanceCounterDisabled=function(e){},e.IncrementalLoading=!0,e.HomogeneousCoordinates=!1,e._MagicBase64Encoded="Z2xURg",e._logSpaces=" ",e}();l.SceneLoader&&l.SceneLoader.RegisterPlugin(new m);var y=void 0!==r.g?r.g:"undefined"!=typeof window?window:void 0;if(void 0!==y){for(var b in y.BABYLON=y.BABYLON||{},t)y.BABYLON[b]=t[b];for(var b in e)y.BABYLON[b]=e[b]}var v=function(){function e(){}return e.Get=function(e,t,n){if(!t||null==n||!t[n])throw new Error("".concat(e,": Failed to find index (").concat(n,")"));return t[n]},e.Assign=function(e){if(e)for(var t=0;t<e.length;t++)e[t].index=t},e}(),g=function(){function e(e){this._completePromises=new Array,this._assetContainer=null,this._babylonLights=[],this._disableInstancedMesh=0,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._parent=e}return e.RegisterExtension=function(t,n){e.UnregisterExtension(t)&&l.Logger.Warn("Extension with the name '".concat(t,"' already exists")),e._RegisteredExtensions[t]={factory:n}},e.UnregisterExtension=function(t){return!!e._RegisteredExtensions[t]&&(delete e._RegisteredExtensions[t],!0)},Object.defineProperty(e.prototype,"gltf",{get:function(){if(!this._gltf)throw new Error("glTF JSON is not available");return this._gltf},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bin",{get:function(){return this._bin},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"babylonScene",{get:function(){if(!this._babylonScene)throw new Error("Scene is not available");return this._babylonScene},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"rootBabylonMesh",{get:function(){return this._rootBabylonMesh},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){this._disposed||(this._disposed=!0,this._completePromises.length=0,this._extensions.forEach((function(e){return e.dispose&&e.dispose()})),this._extensions.length=0,this._gltf=null,this._bin=null,this._babylonScene=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions.length=0,this._parent.dispose())},e.prototype.importMeshAsync=function(e,t,n,r,o,a,s){var i=this;return void 0===s&&(s=""),Promise.resolve().then((function(){i._babylonScene=t,i._assetContainer=n,i._loadData(r);var a=null;if(e){var l={};if(i._gltf.nodes)for(var c=0,u=i._gltf.nodes;c<u.length;c++){var d=u[c];d.name&&(l[d.name]=d.index)}a=(e instanceof Array?e:[e]).map((function(e){var t=l[e];if(void 0===t)throw new Error("Failed to find node '".concat(e,"'"));return t}))}return i._loadAsync(o,s,a,(function(){return{meshes:i._getMeshes(),particleSystems:[],skeletons:i._getSkeletons(),animationGroups:i._getAnimationGroups(),lights:i._babylonLights,transformNodes:i._getTransformNodes(),geometries:i._getGeometries()}}))}))},e.prototype.loadAsync=function(e,t,n,r,o){var a=this;return void 0===o&&(o=""),Promise.resolve().then((function(){return a._babylonScene=e,a._loadData(t),a._loadAsync(n,o,null,(function(){}))}))},e.prototype._loadAsync=function(e,t,n,r){var o=this;return Promise.resolve().then((function(){o._rootUrl=e,o._uniqueRootUrl=!l.StringTools.StartsWith(e,"file:")&&t?e:"".concat(e).concat(Date.now(),"/"),o._fileName=t,o._loadExtensions(),o._checkExtensions();var a="".concat(h[h.LOADING]," => ").concat(h[h.READY]),s="".concat(h[h.LOADING]," => ").concat(h[h.COMPLETE]);o._parent._startPerformanceCounter(a),o._parent._startPerformanceCounter(s),o._parent._setState(h.LOADING),o._extensionsOnLoading();var i=new Array,c=o._babylonScene.blockMaterialDirtyMechanism;if(o._babylonScene.blockMaterialDirtyMechanism=!0,!o.parent.loadOnlyMaterials)if(n)i.push(o.loadSceneAsync("/nodes",{nodes:n,index:-1}));else if(null!=o._gltf.scene||o._gltf.scenes&&o._gltf.scenes[0]){var u=v.Get("/scene",o._gltf.scenes,o._gltf.scene||0);i.push(o.loadSceneAsync("/scenes/".concat(u.index),u))}if(!o.parent.skipMaterials&&o.parent.loadAllMaterials&&o._gltf.materials)for(var d=0;d<o._gltf.materials.length;++d){var f=o._gltf.materials[d],p="/materials/"+d,_=l.Material.TriangleFillMode;i.push(o._loadMaterialAsync(p,f,null,_,(function(){})))}return o._babylonScene.blockMaterialDirtyMechanism=c,o._parent.compileMaterials&&i.push(o._compileMaterialsAsync()),o._parent.compileShadowGenerators&&i.push(o._compileShadowGeneratorsAsync()),Promise.all(i).then((function(){return o._rootBabylonMesh&&o._rootBabylonMesh.setEnabled(!0),o._extensionsOnReady(),o._parent._setState(h.READY),o._startAnimations(),r()})).then((function(e){return o._parent._endPerformanceCounter(a),l.Tools.SetImmediate((function(){o._disposed||Promise.all(o._completePromises).then((function(){o._parent._endPerformanceCounter(s),o._parent._setState(h.COMPLETE),o._parent.onCompleteObservable.notifyObservers(void 0),o._parent.onCompleteObservable.clear(),o.dispose()}),(function(e){o._parent.onErrorObservable.notifyObservers(e),o._parent.onErrorObservable.clear(),o.dispose()}))})),e}))})).catch((function(e){throw o._disposed||(o._parent.onErrorObservable.notifyObservers(e),o._parent.onErrorObservable.clear(),o.dispose()),e}))},e.prototype._loadData=function(e){if(this._gltf=e.json,this._setupData(),e.bin){var t=this._gltf.buffers;if(t&&t[0]&&!t[0].uri){var n=t[0];(n.byteLength<e.bin.byteLength-3||n.byteLength>e.bin.byteLength)&&l.Logger.Warn("Binary buffer length (".concat(n.byteLength,") from JSON does not match chunk length (").concat(e.bin.byteLength,")")),this._bin=e.bin}else l.Logger.Warn("Unexpected BIN chunk")}},e.prototype._setupData=function(){if(v.Assign(this._gltf.accessors),v.Assign(this._gltf.animations),v.Assign(this._gltf.buffers),v.Assign(this._gltf.bufferViews),v.Assign(this._gltf.cameras),v.Assign(this._gltf.images),v.Assign(this._gltf.materials),v.Assign(this._gltf.meshes),v.Assign(this._gltf.nodes),v.Assign(this._gltf.samplers),v.Assign(this._gltf.scenes),v.Assign(this._gltf.skins),v.Assign(this._gltf.textures),this._gltf.nodes){for(var e={},t=0,n=this._gltf.nodes;t<n.length;t++)if((l=n[t]).children)for(var r=0,o=l.children;r<o.length;r++)e[o[r]]=l.index;for(var a=this._createRootNode(),s=0,i=this._gltf.nodes;s<i.length;s++){var l,c=e[(l=i[s]).index];l.parent=void 0===c?a:this._gltf.nodes[c]}}},e.prototype._loadExtensions=function(){for(var t in e._RegisteredExtensions){var n=e._RegisteredExtensions[t].factory(this);n.name!==t&&l.Logger.Warn("The name of the glTF loader extension instance does not match the registered name: ".concat(n.name," !== ").concat(t)),this._extensions.push(n),this._parent.onExtensionLoadedObservable.notifyObservers(n)}this._extensions.sort((function(e,t){return(e.order||Number.MAX_VALUE)-(t.order||Number.MAX_VALUE)})),this._parent.onExtensionLoadedObservable.clear()},e.prototype._checkExtensions=function(){if(this._gltf.extensionsRequired)for(var e=function(e){if(!t._extensions.some((function(t){return t.name===e&&t.enabled})))throw new Error("Require extension ".concat(e," is not available"))},t=this,n=0,r=this._gltf.extensionsRequired;n<r.length;n++)e(r[n])},e.prototype._createRootNode=function(){this._babylonScene._blockEntityCollection=!!this._assetContainer,this._rootBabylonMesh=new l.Mesh("__root__",this._babylonScene),this._rootBabylonMesh._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._rootBabylonMesh.setEnabled(!1);var t={_babylonTransformNode:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case d.AUTO:this._babylonScene.useRightHandedSystem||(t.rotation=[0,1,0,0],t.scale=[1,1,-1],e._LoadTransform(t,this._rootBabylonMesh));break;case d.FORCE_RIGHT_HANDED:this._babylonScene.useRightHandedSystem=!0;break;default:throw new Error("Invalid coordinate system mode (".concat(this._parent.coordinateSystemMode,")"))}return this._parent.onMeshLoadedObservable.notifyObservers(this._rootBabylonMesh),t},e.prototype.loadSceneAsync=function(e,t){var n=this,r=this._extensionsLoadSceneAsync(e,t);if(r)return r;var o=new Array;if(this.logOpen("".concat(e," ").concat(t.name||"")),t.nodes)for(var a=0,s=t.nodes;a<s.length;a++){var i=s[a],l=v.Get("".concat(e,"/nodes/").concat(i),this._gltf.nodes,i);o.push(this.loadNodeAsync("/nodes/".concat(l.index),l,(function(e){e.parent=n._rootBabylonMesh})))}for(var c=0,u=this._postSceneLoadActions;c<u.length;c++)(0,u[c])();return o.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(o).then((function(){}))},e.prototype._forEachPrimitive=function(e,t){if(e._primitiveBabylonMeshes)for(var n=0,r=e._primitiveBabylonMeshes;n<r.length;n++)t(r[n])},e.prototype._getGeometries=function(){var e=new Array,t=this._gltf.nodes;if(t)for(var n=0,r=t;n<r.length;n++){var o=r[n];this._forEachPrimitive(o,(function(t){var n=t.geometry;n&&-1===e.indexOf(n)&&e.push(n)}))}return e},e.prototype._getMeshes=function(){var e=new Array;this._rootBabylonMesh&&e.push(this._rootBabylonMesh);var t=this._gltf.nodes;if(t)for(var n=0,r=t;n<r.length;n++){var o=r[n];this._forEachPrimitive(o,(function(t){e.push(t)}))}return e},e.prototype._getTransformNodes=function(){var e=new Array,t=this._gltf.nodes;if(t)for(var n=0,r=t;n<r.length;n++){var o=r[n];o._babylonTransformNode&&"TransformNode"===o._babylonTransformNode.getClassName()&&e.push(o._babylonTransformNode),o._babylonTransformNodeForSkin&&e.push(o._babylonTransformNodeForSkin)}return e},e.prototype._getSkeletons=function(){var e=new Array,t=this._gltf.skins;if(t)for(var n=0,r=t;n<r.length;n++){var o=r[n];o._data&&e.push(o._data.babylonSkeleton)}return e},e.prototype._getAnimationGroups=function(){var e=new Array,t=this._gltf.animations;if(t)for(var n=0,r=t;n<r.length;n++){var o=r[n];o._babylonAnimationGroup&&e.push(o._babylonAnimationGroup)}return e},e.prototype._startAnimations=function(){switch(this._parent.animationStartMode){case f.NONE:break;case f.FIRST:0!==(e=this._getAnimationGroups()).length&&e[0].start(!0);break;case f.ALL:for(var e,t=0,n=e=this._getAnimationGroups();t<n.length;t++)n[t].start(!0);break;default:return void l.Logger.Error("Invalid animation start mode (".concat(this._parent.animationStartMode,")"))}},e.prototype.loadNodeAsync=function(t,n,r){var o=this;void 0===r&&(r=function(){});var a=this._extensionsLoadNodeAsync(t,n,r);if(a)return a;if(n._babylonTransformNode)throw new Error("".concat(t,": Invalid recursive node hierarchy"));var s=new Array;this.logOpen("".concat(t," ").concat(n.name||""));var i=function(a){if(e.AddPointerMetadata(a,t),e._LoadTransform(n,a),null!=n.camera){var i=v.Get("".concat(t,"/camera"),o._gltf.cameras,n.camera);s.push(o.loadCameraAsync("/cameras/".concat(i.index),i,(function(e){e.parent=a})))}if(n.children)for(var l=0,c=n.children;l<c.length;l++){var u=c[l],d=v.Get("".concat(t,"/children/").concat(u),o._gltf.nodes,u);s.push(o.loadNodeAsync("/nodes/".concat(d.index),d,(function(e){e.parent=a})))}r(a)};if(null==n.mesh||null!=n.skin){var c=n.name||"node".concat(n.index);this._babylonScene._blockEntityCollection=!!this._assetContainer;var u=new l.TransformNode(c,this._babylonScene);u._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,null==n.mesh?n._babylonTransformNode=u:n._babylonTransformNodeForSkin=u,i(u)}if(null!=n.mesh)if(null==n.skin){var d=v.Get("".concat(t,"/mesh"),this._gltf.meshes,n.mesh);s.push(this._loadMeshAsync("/meshes/".concat(d.index),n,d,i))}else d=v.Get("".concat(t,"/mesh"),this._gltf.meshes,n.mesh),s.push(this._loadMeshAsync("/meshes/".concat(d.index),n,d,(function(e){e.metadata=n._babylonTransformNodeForSkin.metadata;var r=v.Get("".concat(t,"/skin"),o._gltf.skins,n.skin);s.push(o._loadSkinAsync("/skins/".concat(r.index),n,r,(function(t){o._forEachPrimitive(n,(function(e){e.skeleton=t})),o._postSceneLoadActions.push((function(){if(null!=r.skeleton){var t=v.Get("/skins/".concat(r.index,"/skeleton"),o._gltf.nodes,r.skeleton);e.parent=t.parent._babylonTransformNode}else e.parent=o._rootBabylonMesh}))})))})));return this.logClose(),Promise.all(s).then((function(){return o._forEachPrimitive(n,(function(e){e.geometry&&e.geometry.useBoundingInfoFromGeometry?e._updateBoundingInfo():e.refreshBoundingInfo(!0)})),n._babylonTransformNode}))},e.prototype._loadMeshAsync=function(e,t,n,r){var o=n.primitives;if(!o||!o.length)throw new Error("".concat(e,": Primitives are missing"));null==o[0].index&&v.Assign(o);var a=new Array;this.logOpen("".concat(e," ").concat(n.name||""));var s=t.name||"node".concat(t.index);if(1===o.length){var i=n.primitives[0];a.push(this._loadMeshPrimitiveAsync("".concat(e,"/primitives/").concat(i.index),s,t,n,i,(function(e){t._babylonTransformNode=e,t._primitiveBabylonMeshes=[e]})))}else{this._babylonScene._blockEntityCollection=!!this._assetContainer,t._babylonTransformNode=new l.TransformNode(s,this._babylonScene),t._babylonTransformNode._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._primitiveBabylonMeshes=[];for(var c=0,u=o;c<u.length;c++)i=u[c],a.push(this._loadMeshPrimitiveAsync("".concat(e,"/primitives/").concat(i.index),"".concat(s,"_primitive").concat(i.index),t,n,i,(function(e){e.parent=t._babylonTransformNode,t._primitiveBabylonMeshes.push(e)})))}return r(t._babylonTransformNode),this.logClose(),Promise.all(a).then((function(){return t._babylonTransformNode}))},e.prototype._loadMeshPrimitiveAsync=function(t,n,r,o,a,s){var i=this,c=this._extensionsLoadMeshPrimitiveAsync(t,n,r,o,a,s);if(c)return c;this.logOpen("".concat(t));var u,d,f=0===this._disableInstancedMesh&&this._parent.createInstances&&null==r.skin&&!o.primitives[0].targets;if(f&&a._instanceData)this._babylonScene._blockEntityCollection=!!this._assetContainer,(u=a._instanceData.babylonSourceMesh.createInstance(n))._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,d=a._instanceData.promise;else{var h=new Array;this._babylonScene._blockEntityCollection=!!this._assetContainer;var p=new l.Mesh(n,this._babylonScene);p._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,p.overrideMaterialSideOrientation=this._babylonScene.useRightHandedSystem?l.Material.CounterClockWiseSideOrientation:l.Material.ClockWiseSideOrientation,this._createMorphTargets(t,r,o,a,p),h.push(this._loadVertexDataAsync(t,a,p).then((function(e){return i._loadMorphTargetsAsync(t,a,p,e).then((function(){i._babylonScene._blockEntityCollection=!!i._assetContainer,e.applyToMesh(p),e._parentContainer=i._assetContainer,i._babylonScene._blockEntityCollection=!1}))})));var _=e._GetDrawMode(t,a.mode);if(null==a.material){var m=this._defaultBabylonMaterialData[_];m||(m=this._createDefaultMaterial("__GLTFLoader._default",_),this._parent.onMaterialLoadedObservable.notifyObservers(m),this._defaultBabylonMaterialData[_]=m),p.material=m}else if(!this.parent.skipMaterials){var y=v.Get("".concat(t,"/material"),this._gltf.materials,a.material);h.push(this._loadMaterialAsync("/materials/".concat(y.index),y,p,_,(function(e){p.material=e})))}d=Promise.all(h),f&&(a._instanceData={babylonSourceMesh:p,promise:d}),u=p}return e.AddPointerMetadata(u,t),this._parent.onMeshLoadedObservable.notifyObservers(u),s(u),this.logClose(),d.then((function(){return u}))},e.prototype._loadVertexDataAsync=function(e,t,n){var r=this,o=this._extensionsLoadVertexDataAsync(e,t,n);if(o)return o;var a=t.attributes;if(!a)throw new Error("".concat(e,": Attributes are missing"));var s=new Array,i=new l.Geometry(n.name,this._babylonScene);if(null==t.indices)n.isUnIndexed=!0;else{var c=v.Get("".concat(e,"/indices"),this._gltf.accessors,t.indices);s.push(this._loadIndicesAccessorAsync("/accessors/".concat(c.index),c).then((function(e){i.setIndices(e)})))}var u=function(t,o,c){if(null!=a[t]){n._delayInfo=n._delayInfo||[],-1===n._delayInfo.indexOf(o)&&n._delayInfo.push(o);var u=v.Get("".concat(e,"/attributes/").concat(t),r._gltf.accessors,a[t]);s.push(r._loadVertexAccessorAsync("/accessors/".concat(u.index),u,o).then((function(e){if(e.getKind()===l.VertexBuffer.PositionKind&&!r.parent.alwaysComputeBoundingBox&&!n.skeleton){var t=u.min,o=u.max;if(void 0!==t&&void 0!==o){if(u.normalized&&5126!==u.componentType){var a=1;switch(u.componentType){case 5120:a=127;break;case 5121:a=255;break;case 5122:a=32767;break;case 5123:a=65535}for(var s=0;s<3;++s)t[s]=Math.max(t[s]/a,-1),o[s]=Math.max(o[s]/a,-1)}var c=l.TmpVectors.Vector3[0],d=l.TmpVectors.Vector3[1];c.copyFromFloats.apply(c,t),d.copyFromFloats.apply(d,o),i._boundingInfo=new l.BoundingInfo(c,d),i.useBoundingInfoFromGeometry=!0}}i.setVerticesBuffer(e,u.count)}))),o==l.VertexBuffer.MatricesIndicesExtraKind&&(n.numBoneInfluencers=8),c&&c(u)}};return u("POSITION",l.VertexBuffer.PositionKind),u("NORMAL",l.VertexBuffer.NormalKind),u("TANGENT",l.VertexBuffer.TangentKind),u("TEXCOORD_0",l.VertexBuffer.UVKind),u("TEXCOORD_1",l.VertexBuffer.UV2Kind),u("TEXCOORD_2",l.VertexBuffer.UV3Kind),u("TEXCOORD_3",l.VertexBuffer.UV4Kind),u("TEXCOORD_4",l.VertexBuffer.UV5Kind),u("TEXCOORD_5",l.VertexBuffer.UV6Kind),u("JOINTS_0",l.VertexBuffer.MatricesIndicesKind),u("WEIGHTS_0",l.VertexBuffer.MatricesWeightsKind),u("JOINTS_1",l.VertexBuffer.MatricesIndicesExtraKind),u("WEIGHTS_1",l.VertexBuffer.MatricesWeightsExtraKind),u("COLOR_0",l.VertexBuffer.ColorKind,(function(e){"VEC4"===e.type&&(n.hasVertexAlpha=!0)})),Promise.all(s).then((function(){return i}))},e.prototype._createMorphTargets=function(e,t,n,r,o){if(r.targets){if(null==t._numMorphTargets)t._numMorphTargets=r.targets.length;else if(r.targets.length!==t._numMorphTargets)throw new Error("".concat(e,": Primitives do not have the same number of targets"));var a=n.extras?n.extras.targetNames:null;o.morphTargetManager=new l.MorphTargetManager(o.getScene()),o.morphTargetManager.areUpdatesFrozen=!0;for(var s=0;s<r.targets.length;s++){var i=t.weights?t.weights[s]:n.weights?n.weights[s]:0,c=a?a[s]:"morphTarget".concat(s);o.morphTargetManager.addTarget(new l.MorphTarget(c,i,o.getScene()))}}},e.prototype._loadMorphTargetsAsync=function(e,t,n,r){if(!t.targets)return Promise.resolve();for(var o=new Array,a=n.morphTargetManager,s=0;s<a.numTargets;s++){var i=a.getTarget(s);o.push(this._loadMorphTargetVertexDataAsync("".concat(e,"/targets/").concat(s),r,t.targets[s],i))}return Promise.all(o).then((function(){a.areUpdatesFrozen=!1}))},e.prototype._loadMorphTargetVertexDataAsync=function(e,t,n,r){var o=this,a=new Array,s=function(r,s,i){if(null!=n[r]){var l=t.getVertexBuffer(s);if(l){var c=v.Get("".concat(e,"/").concat(r),o._gltf.accessors,n[r]);a.push(o._loadFloatAccessorAsync("/accessors/".concat(c.index),c).then((function(e){i(l,e)})))}}};return s("POSITION",l.VertexBuffer.PositionKind,(function(e,t){var n=new Float32Array(t.length);e.forEach(t.length,(function(e,r){n[r]=t[r]+e})),r.setPositions(n)})),s("NORMAL",l.VertexBuffer.NormalKind,(function(e,t){var n=new Float32Array(t.length);e.forEach(n.length,(function(e,r){n[r]=t[r]+e})),r.setNormals(n)})),s("TANGENT",l.VertexBuffer.TangentKind,(function(e,t){var n=new Float32Array(t.length/3*4),o=0;e.forEach(t.length/3*4,(function(e,r){(r+1)%4!=0&&(n[o]=t[o]+e,o++)})),r.setTangents(n)})),Promise.all(a).then((function(){}))},e._LoadTransform=function(e,t){if(null==e.skin){var n=l.Vector3.Zero(),r=l.Quaternion.Identity(),o=l.Vector3.One();e.matrix?l.Matrix.FromArray(e.matrix).decompose(o,r,n):(e.translation&&(n=l.Vector3.FromArray(e.translation)),e.rotation&&(r=l.Quaternion.FromArray(e.rotation)),e.scale&&(o=l.Vector3.FromArray(e.scale))),t.position=n,t.rotationQuaternion=r,t.scaling=o}},e.prototype._loadSkinAsync=function(e,t,n,r){var o=this,a=this._extensionsLoadSkinAsync(e,t,n);if(a)return a;if(n._data)return r(n._data.babylonSkeleton),n._data.promise;var s="skeleton".concat(n.index);this._babylonScene._blockEntityCollection=!!this._assetContainer;var i=new l.Skeleton(n.name||s,s,this._babylonScene);i._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._loadBones(e,n,i);var c=this._loadSkinInverseBindMatricesDataAsync(e,n).then((function(e){o._updateBoneMatrices(i,e)}));return n._data={babylonSkeleton:i,promise:c},r(i),c},e.prototype._loadBones=function(e,t,n){if(null==t.skeleton||this._parent.alwaysComputeSkeletonRootNode){var r=this._findSkeletonRootNode("".concat(e,"/joints"),t.joints);if(r)if(void 0===t.skeleton)t.skeleton=r.index;else{var o=v.Get("".concat(e,"/skeleton"),this._gltf.nodes,t.skeleton);o===r||function(e,t){for(;t.parent;t=t.parent)if(t.parent===e)return!0;return!1}(o,r)||(l.Logger.Warn("".concat(e,"/skeleton: Overriding with nearest common ancestor as skeleton node is not a common root")),t.skeleton=r.index)}else l.Logger.Warn("".concat(e,": Failed to find common root"))}for(var a={},s=0,i=t.joints;s<i.length;s++){var c=i[s],u=v.Get("".concat(e,"/joints/").concat(c),this._gltf.nodes,c);this._loadBone(u,t,n,a)}},e.prototype._findSkeletonRootNode=function(e,t){if(0===t.length)return null;for(var n={},r=0,o=t;r<o.length;r++){for(var a=o[r],s=new Array,i=v.Get("".concat(e,"/").concat(a),this._gltf.nodes,a);-1!==i.index;)s.unshift(i),i=i.parent;n[a]=s}for(var l=null,c=0;;++c){if(c>=(s=n[t[0]]).length)return l;i=s[c];for(var u=1;u<t.length;++u)if(c>=(s=n[t[u]]).length||i!==s[c])return l;l=i}},e.prototype._loadBone=function(e,t,n,r){var o=r[e.index];if(o)return o;var a=null;e.index!==t.skeleton&&(e.parent&&-1!==e.parent.index?a=this._loadBone(e.parent,t,n,r):void 0!==t.skeleton&&l.Logger.Warn("/skins/".concat(t.index,"/skeleton: Skeleton node is not a common root")));var s=t.joints.indexOf(e.index);return o=new l.Bone(e.name||"joint".concat(e.index),n,a,this._getNodeMatrix(e),null,null,s),r[e.index]=o,this._postSceneLoadActions.push((function(){o.linkTransformNode(e._babylonTransformNode)})),o},e.prototype._loadSkinInverseBindMatricesDataAsync=function(e,t){if(null==t.inverseBindMatrices)return Promise.resolve(null);var n=v.Get("".concat(e,"/inverseBindMatrices"),this._gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync("/accessors/".concat(n.index),n)},e.prototype._updateBoneMatrices=function(e,t){for(var n=0,r=e.bones;n<r.length;n++){var o=r[n],a=l.Matrix.Identity(),s=o._index;t&&-1!==s&&(l.Matrix.FromArrayToRef(t,16*s,a),a.invertToRef(a));var i=o.getParent();i&&a.multiplyToRef(i.getInvertedAbsoluteTransform(),a),o.updateMatrix(a,!1,!1),o._updateDifferenceMatrix(void 0,!1)}},e.prototype._getNodeMatrix=function(e){return e.matrix?l.Matrix.FromArray(e.matrix):l.Matrix.Compose(e.scale?l.Vector3.FromArray(e.scale):l.Vector3.One(),e.rotation?l.Quaternion.FromArray(e.rotation):l.Quaternion.Identity(),e.translation?l.Vector3.FromArray(e.translation):l.Vector3.Zero())},e.prototype.loadCameraAsync=function(t,n,r){void 0===r&&(r=function(){});var o=this._extensionsLoadCameraAsync(t,n,r);if(o)return o;var a=new Array;this.logOpen("".concat(t," ").concat(n.name||"")),this._babylonScene._blockEntityCollection=!!this._assetContainer;var s=new l.FreeCamera(n.name||"camera".concat(n.index),l.Vector3.Zero(),this._babylonScene,!1);switch(s._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,s.ignoreParentScaling=!0,s.rotation=new l.Vector3(0,Math.PI,0),n.type){case"perspective":var i=n.perspective;if(!i)throw new Error("".concat(t,": Camera perspective properties are missing"));s.fov=i.yfov,s.minZ=i.znear,s.maxZ=i.zfar||0;break;case"orthographic":if(!n.orthographic)throw new Error("".concat(t,": Camera orthographic properties are missing"));s.mode=l.Camera.ORTHOGRAPHIC_CAMERA,s.orthoLeft=-n.orthographic.xmag,s.orthoRight=n.orthographic.xmag,s.orthoBottom=-n.orthographic.ymag,s.orthoTop=n.orthographic.ymag,s.minZ=n.orthographic.znear,s.maxZ=n.orthographic.zfar;break;default:throw new Error("".concat(t,": Invalid camera type (").concat(n.type,")"))}return e.AddPointerMetadata(s,t),this._parent.onCameraLoadedObservable.notifyObservers(s),r(s),this.logClose(),Promise.all(a).then((function(){return s}))},e.prototype._loadAnimationsAsync=function(){var e=this._gltf.animations;if(!e)return Promise.resolve();for(var t=new Array,n=0;n<e.length;n++){var r=e[n];t.push(this.loadAnimationAsync("/animations/".concat(r.index),r).then((function(e){0===e.targetedAnimations.length&&e.dispose()})))}return Promise.all(t).then((function(){}))},e.prototype.loadAnimationAsync=function(e,t){var n=this._extensionsLoadAnimationAsync(e,t);if(n)return n;this._babylonScene._blockEntityCollection=!!this._assetContainer;var r=new l.AnimationGroup(t.name||"animation".concat(t.index),this._babylonScene);r._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonAnimationGroup=r;var o=new Array;v.Assign(t.channels),v.Assign(t.samplers);for(var a=0,s=t.channels;a<s.length;a++){var i=s[a];o.push(this._loadAnimationChannelAsync("".concat(e,"/channels/").concat(i.index),e,t,i,r))}return Promise.all(o).then((function(){return r.normalize(0),r}))},e.prototype._loadAnimationChannelAsync=function(e,t,n,r,o,a){var s=this;if(void 0===a&&(a=null),null==r.target.node)return Promise.resolve();var i=v.Get("".concat(e,"/target/node"),this._gltf.nodes,r.target.node);if("weights"===r.target.path&&!i._numMorphTargets||"weights"!==r.target.path&&!i._babylonTransformNode)return Promise.resolve();var c=v.Get("".concat(e,"/sampler"),n.samplers,r.sampler);return this._loadAnimationSamplerAsync("".concat(t,"/samplers/").concat(r.sampler),c).then((function(t){var n,c;switch(r.target.path){case"translation":n="position",c=l.Animation.ANIMATIONTYPE_VECTOR3;break;case"rotation":n="rotationQuaternion",c=l.Animation.ANIMATIONTYPE_QUATERNION;break;case"scale":n="scaling",c=l.Animation.ANIMATIONTYPE_VECTOR3;break;case"weights":n="influence",c=l.Animation.ANIMATIONTYPE_FLOAT;break;default:throw new Error("".concat(e,"/target/path: Invalid value (").concat(r.target.path,")"))}var u,d,f=0;switch(n){case"position":u=function(e){var n=l.Vector3.FromArray(t.output,f).scaleInPlace(e);return f+=3,n};break;case"rotationQuaternion":u=function(e){var n=l.Quaternion.FromArray(t.output,f).scaleInPlace(e);return f+=4,n};break;case"scaling":u=function(e){var n=l.Vector3.FromArray(t.output,f).scaleInPlace(e);return f+=3,n};break;case"influence":u=function(e){for(var n=new Array(i._numMorphTargets),r=0;r<i._numMorphTargets;r++)n[r]=t.output[f++]*e;return n}}switch(t.interpolation){case"STEP":d=function(e){return{frame:t.input[e]*s.parent.targetFps,value:u(1),interpolation:l.AnimationKeyInterpolation.STEP}};break;case"LINEAR":d=function(e){return{frame:t.input[e]*s.parent.targetFps,value:u(1)}};break;case"CUBICSPLINE":var h=1/s.parent.targetFps;d=function(e){return{frame:t.input[e]*s.parent.targetFps,inTangent:u(h),value:u(1),outTangent:u(h)}}}for(var p=new Array(t.input.length),_=0;_<t.input.length;_++)p[_]=d(_);if("influence"===n)for(var m=function(e){var t="".concat(o.name,"_channel").concat(o.targetedAnimations.length),r=new l.Animation(t,n,s.parent.targetFps,c);r.setKeys(p.map((function(t){return{frame:t.frame,inTangent:t.inTangent?t.inTangent[e]:void 0,value:t.value[e],outTangent:t.outTangent?t.outTangent[e]:void 0}}))),s._forEachPrimitive(i,(function(t){var n=t.morphTargetManager.getTarget(e),a=r.clone();n.animations.push(a),o.addTargetedAnimation(a,n)}))},y=0;y<i._numMorphTargets;y++)m(y);else{var b="".concat(o.name,"_channel").concat(o.targetedAnimations.length),v=new l.Animation(b,n,s.parent.targetFps,c);v.setKeys(p),null!=a&&null!=a.animations?(a.animations.push(v),o.addTargetedAnimation(v,a)):(i._babylonTransformNode.animations.push(v),o.addTargetedAnimation(v,i._babylonTransformNode))}}))},e.prototype._loadAnimationSamplerAsync=function(e,t){if(t._data)return t._data;var n=t.interpolation||"LINEAR";switch(n){case"STEP":case"LINEAR":case"CUBICSPLINE":break;default:throw new Error("".concat(e,"/interpolation: Invalid value (").concat(t.interpolation,")"))}var r=v.Get("".concat(e,"/input"),this._gltf.accessors,t.input),o=v.Get("".concat(e,"/output"),this._gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync("/accessors/".concat(r.index),r),this._loadFloatAccessorAsync("/accessors/".concat(o.index),o)]).then((function(e){var t=e[0],r=e[1];return{input:t,interpolation:n,output:r}})),t._data},e.prototype.loadBufferAsync=function(e,t,n,r){var o=this._extensionsLoadBufferAsync(e,t,n,r);if(o)return o;if(!t._data)if(t.uri)t._data=this.loadUriAsync("".concat(e,"/uri"),t,t.uri);else{if(!this._bin)throw new Error("".concat(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((function(t){try{return new Uint8Array(t.buffer,t.byteOffset+n,r)}catch(t){throw new Error("".concat(e,": ").concat(t.message))}}))},e.prototype.loadBufferViewAsync=function(e,t){var n=this._extensionsLoadBufferViewAsync(e,t);if(n)return n;if(t._data)return t._data;var r=v.Get("".concat(e,"/buffer"),this._gltf.buffers,t.buffer);return t._data=this.loadBufferAsync("/buffers/".concat(r.index),r,t.byteOffset||0,t.byteLength),t._data},e.prototype._loadAccessorAsync=function(t,n,r){var o=this;if(n._data)return n._data;var a=e._GetNumComponents(t,n.type),s=a*l.VertexBuffer.GetTypeByteLength(n.componentType),i=a*n.count;if(null==n.bufferView)n._data=Promise.resolve(new r(i));else{var c=v.Get("".concat(t,"/bufferView"),this._gltf.bufferViews,n.bufferView);n._data=this.loadBufferViewAsync("/bufferViews/".concat(c.index),c).then((function(o){if(5126!==n.componentType||n.normalized||c.byteStride&&c.byteStride!==s){var u=new r(i);return l.VertexBuffer.ForEach(o,n.byteOffset||0,c.byteStride||s,a,n.componentType,u.length,n.normalized||!1,(function(e,t){u[t]=e})),u}return e._GetTypedArray(t,n.componentType,o,n.byteOffset,i)}))}if(n.sparse){var u=n.sparse;n._data=n._data.then((function(i){var c=i,d=v.Get("".concat(t,"/sparse/indices/bufferView"),o._gltf.bufferViews,u.indices.bufferView),f=v.Get("".concat(t,"/sparse/values/bufferView"),o._gltf.bufferViews,u.values.bufferView);return Promise.all([o.loadBufferViewAsync("/bufferViews/".concat(d.index),d),o.loadBufferViewAsync("/bufferViews/".concat(f.index),f)]).then((function(o){var i,d=o[0],f=o[1],h=e._GetTypedArray("".concat(t,"/sparse/indices"),u.indices.componentType,d,u.indices.byteOffset,u.count),p=a*u.count;if(5126!==n.componentType||n.normalized){var _=e._GetTypedArray("".concat(t,"/sparse/values"),n.componentType,f,u.values.byteOffset,p);i=new r(p),l.VertexBuffer.ForEach(_,0,s,a,n.componentType,i.length,n.normalized||!1,(function(e,t){i[t]=e}))}else i=e._GetTypedArray("".concat(t,"/sparse/values"),n.componentType,f,u.values.byteOffset,p);for(var m=0,y=0;y<h.length;y++)for(var b=h[y]*a,v=0;v<a;v++)c[b++]=i[m++];return c}))}))}return n._data},e.prototype._loadFloatAccessorAsync=function(e,t){return this._loadAccessorAsync(e,t,Float32Array)},e.prototype._loadIndicesAccessorAsync=function(t,n){if("SCALAR"!==n.type)throw new Error("".concat(t,"/type: Invalid value ").concat(n.type));if(5121!==n.componentType&&5123!==n.componentType&&5125!==n.componentType)throw new Error("".concat(t,"/componentType: Invalid value ").concat(n.componentType));if(n._data)return n._data;if(n.sparse){var r=e._GetTypedArrayConstructor("".concat(t,"/componentType"),n.componentType);n._data=this._loadAccessorAsync(t,n,r)}else{var o=v.Get("".concat(t,"/bufferView"),this._gltf.bufferViews,n.bufferView);n._data=this.loadBufferViewAsync("/bufferViews/".concat(o.index),o).then((function(r){return e._GetTypedArray(t,n.componentType,r,n.byteOffset,n.count)}))}return n._data},e.prototype._loadVertexBufferViewAsync=function(e){var t=this;return e._babylonBuffer||(e._babylonBuffer=this.loadBufferViewAsync("/bufferViews/".concat(e.index),e).then((function(e){return new l.Buffer(t._babylonScene.getEngine(),e,!1)}))),e._babylonBuffer},e.prototype._loadVertexAccessorAsync=function(t,n,r){var o,a=this;if(null===(o=n._babylonVertexBuffer)||void 0===o?void 0:o[r])return n._babylonVertexBuffer[r];if(n._babylonVertexBuffer||(n._babylonVertexBuffer={}),n.sparse)n._babylonVertexBuffer[r]=this._loadFloatAccessorAsync(t,n).then((function(e){return new l.VertexBuffer(a._babylonScene.getEngine(),e,r,!1)}));else if(r===l.VertexBuffer.MatricesIndicesKind||r===l.VertexBuffer.MatricesIndicesExtraKind)n._babylonVertexBuffer[r]=this._loadFloatAccessorAsync(t,n).then((function(e){return new l.VertexBuffer(a._babylonScene.getEngine(),e,r,!1)}));else{var s=v.Get("".concat(t,"/bufferView"),this._gltf.bufferViews,n.bufferView);n._babylonVertexBuffer[r]=this._loadVertexBufferViewAsync(s).then((function(o){var i=e._GetNumComponents(t,n.type);return new l.VertexBuffer(a._babylonScene.getEngine(),o,r,!1,!1,s.byteStride,!1,n.byteOffset,i,n.componentType,n.normalized,!0,1,!0)}))}return n._babylonVertexBuffer[r]},e.prototype._loadMaterialMetallicRoughnessPropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;return t&&(t.baseColorFactor?(n.albedoColor=l.Color3.FromArray(t.baseColorFactor),n.alpha=t.baseColorFactor[3]):n.albedoColor=l.Color3.White(),n.metallic=null==t.metallicFactor?1:t.metallicFactor,n.roughness=null==t.roughnessFactor?1:t.roughnessFactor,t.baseColorTexture&&r.push(this.loadTextureInfoAsync("".concat(e,"/baseColorTexture"),t.baseColorTexture,(function(e){e.name="".concat(n.name," (Base Color)"),n.albedoTexture=e}))),t.metallicRoughnessTexture&&(t.metallicRoughnessTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync("".concat(e,"/metallicRoughnessTexture"),t.metallicRoughnessTexture,(function(e){e.name="".concat(n.name," (Metallic Roughness)"),n.metallicTexture=e}))),n.useMetallnessFromMetallicTextureBlue=!0,n.useRoughnessFromMetallicTextureGreen=!0,n.useRoughnessFromMetallicTextureAlpha=!1)),Promise.all(r).then((function(){}))},e.prototype._loadMaterialAsync=function(t,n,r,o,a){void 0===a&&(a=function(){});var s=this._extensionsLoadMaterialAsync(t,n,r,o,a);if(s)return s;n._data=n._data||{};var i=n._data[o];if(!i){this.logOpen("".concat(t," ").concat(n.name||""));var l=this.createMaterial(t,n,o);i={babylonMaterial:l,babylonMeshes:[],promise:this.loadMaterialPropertiesAsync(t,n,l)},n._data[o]=i,e.AddPointerMetadata(l,t),this._parent.onMaterialLoadedObservable.notifyObservers(l),this.logClose()}return r&&(i.babylonMeshes.push(r),r.onDisposeObservable.addOnce((function(){var e=i.babylonMeshes.indexOf(r);-1!==e&&i.babylonMeshes.splice(e,1)}))),a(i.babylonMaterial),i.promise.then((function(){return i.babylonMaterial}))},e.prototype._createDefaultMaterial=function(e,t){this._babylonScene._blockEntityCollection=!!this._assetContainer;var n=new l.PBRMaterial(e,this._babylonScene);return n._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,n.fillMode=t,n.enableSpecularAntiAliasing=!0,n.useRadianceOverAlpha=!this._parent.transparencyAsCoverage,n.useSpecularOverAlpha=!this._parent.transparencyAsCoverage,n.transparencyMode=l.PBRMaterial.PBRMATERIAL_OPAQUE,n.metallic=1,n.roughness=1,n},e.prototype.createMaterial=function(e,t,n){var r=this._extensionsCreateMaterial(e,t,n);if(r)return r;var o=t.name||"material".concat(t.index);return this._createDefaultMaterial(o,n)},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this._extensionsLoadMaterialPropertiesAsync(e,t,n);if(r)return r;var o=new Array;return o.push(this.loadMaterialBasePropertiesAsync(e,t,n)),t.pbrMetallicRoughness&&o.push(this._loadMaterialMetallicRoughnessPropertiesAsync("".concat(e,"/pbrMetallicRoughness"),t.pbrMetallicRoughness,n)),this.loadMaterialAlphaProperties(e,t,n),Promise.all(o).then((function(){}))},e.prototype.loadMaterialBasePropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;return n.emissiveColor=t.emissiveFactor?l.Color3.FromArray(t.emissiveFactor):new l.Color3(0,0,0),t.doubleSided&&(n.backFaceCulling=!1,n.twoSidedLighting=!0),t.normalTexture&&(t.normalTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync("".concat(e,"/normalTexture"),t.normalTexture,(function(e){e.name="".concat(n.name," (Normal)"),n.bumpTexture=e}))),n.invertNormalMapX=!this._babylonScene.useRightHandedSystem,n.invertNormalMapY=this._babylonScene.useRightHandedSystem,null!=t.normalTexture.scale&&(n.bumpTexture.level=t.normalTexture.scale),n.forceIrradianceInFragment=!0),t.occlusionTexture&&(t.occlusionTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync("".concat(e,"/occlusionTexture"),t.occlusionTexture,(function(e){e.name="".concat(n.name," (Occlusion)"),n.ambientTexture=e}))),n.useAmbientInGrayScale=!0,null!=t.occlusionTexture.strength&&(n.ambientTextureStrength=t.occlusionTexture.strength)),t.emissiveTexture&&r.push(this.loadTextureInfoAsync("".concat(e,"/emissiveTexture"),t.emissiveTexture,(function(e){e.name="".concat(n.name," (Emissive)"),n.emissiveTexture=e}))),Promise.all(r).then((function(){}))},e.prototype.loadMaterialAlphaProperties=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));switch(t.alphaMode||"OPAQUE"){case"OPAQUE":n.transparencyMode=l.PBRMaterial.PBRMATERIAL_OPAQUE;break;case"MASK":n.transparencyMode=l.PBRMaterial.PBRMATERIAL_ALPHATEST,n.alphaCutOff=null==t.alphaCutoff?.5:t.alphaCutoff,n.albedoTexture&&(n.albedoTexture.hasAlpha=!0);break;case"BLEND":n.transparencyMode=l.PBRMaterial.PBRMATERIAL_ALPHABLEND,n.albedoTexture&&(n.albedoTexture.hasAlpha=!0,n.useAlphaFromAlbedoTexture=!0);break;default:throw new Error("".concat(e,"/alphaMode: Invalid value (").concat(t.alphaMode,")"))}},e.prototype.loadTextureInfoAsync=function(t,n,r){var o=this;void 0===r&&(r=function(){});var a=this._extensionsLoadTextureInfoAsync(t,n,r);if(a)return a;if(this.logOpen("".concat(t)),n.texCoord>=6)throw new Error("".concat(t,"/texCoord: Invalid value (").concat(n.texCoord,")"));var s=v.Get("".concat(t,"/index"),this._gltf.textures,n.index);s._textureInfo=n;var i=this._loadTextureAsync("/textures/".concat(n.index),s,(function(a){a.coordinatesIndex=n.texCoord||0,e.AddPointerMetadata(a,t),o._parent.onTextureLoadedObservable.notifyObservers(a),r(a)}));return this.logClose(),i},e.prototype._loadTextureAsync=function(t,n,r){void 0===r&&(r=function(){});var o=this._extensionsLoadTextureAsync(t,n,r);if(o)return o;this.logOpen("".concat(t," ").concat(n.name||""));var a=null==n.sampler?e.DefaultSampler:v.Get("".concat(t,"/sampler"),this._gltf.samplers,n.sampler),s=v.Get("".concat(t,"/source"),this._gltf.images,n.source),i=this._createTextureAsync(t,a,s,r,void 0,!n._textureInfo.nonColorData);return this.logClose(),i},e.prototype._createTextureAsync=function(e,t,n,r,o,a){var s=this;void 0===r&&(r=function(){});var i=this._loadSampler("/samplers/".concat(t.index),t),c=new Array,u=new l.Deferred;this._babylonScene._blockEntityCollection=!!this._assetContainer;var d={noMipmap:i.noMipMaps,invertY:!1,samplingMode:i.samplingMode,onLoad:function(){s._disposed||u.resolve()},onError:function(t,n){s._disposed||u.reject(new Error("".concat(e,": ").concat(n&&n.message?n.message:t||"Failed to load texture")))},mimeType:n.mimeType,loaderOptions:o,useSRGBBuffer:!!a&&this._parent.useSRGBBuffers},f=new l.Texture(null,this._babylonScene,d);return f._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,c.push(u.promise),c.push(this.loadImageAsync("/images/".concat(n.index),n).then((function(e){var t=n.uri||"".concat(s._fileName,"#image").concat(n.index),r="data:".concat(s._uniqueRootUrl).concat(t);f.updateURL(r,e)}))),f.wrapU=i.wrapU,f.wrapV=i.wrapV,r(f),Promise.all(c).then((function(){return f}))},e.prototype._loadSampler=function(t,n){return n._data||(n._data={noMipMaps:9728===n.minFilter||9729===n.minFilter,samplingMode:e._GetTextureSamplingMode(t,n),wrapU:e._GetTextureWrapMode("".concat(t,"/wrapS"),n.wrapS),wrapV:e._GetTextureWrapMode("".concat(t,"/wrapT"),n.wrapT)}),n._data},e.prototype.loadImageAsync=function(e,t){if(!t._data){if(this.logOpen("".concat(e," ").concat(t.name||"")),t.uri)t._data=this.loadUriAsync("".concat(e,"/uri"),t,t.uri);else{var n=v.Get("".concat(e,"/bufferView"),this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync("/bufferViews/".concat(n.index),n)}this.logClose()}return t._data},e.prototype.loadUriAsync=function(t,n,r){var o=this,a=this._extensionsLoadUriAsync(t,n,r);if(a)return a;if(!e._ValidateUri(r))throw new Error("".concat(t,": '").concat(r,"' is invalid"));if((0,l.IsBase64DataUrl)(r)){var s=new Uint8Array((0,l.DecodeBase64UrlToBinary)(r));return this.log("".concat(t,": Decoded ").concat(r.substr(0,64),"... (").concat(s.length," bytes)")),Promise.resolve(s)}return this.log("".concat(t,": Loading ").concat(r)),this._parent.preprocessUrlAsync(this._rootUrl+r).then((function(e){return new Promise((function(n,a){o._parent._loadFile(o._babylonScene,e,(function(e){o._disposed||(o.log("".concat(t,": Loaded ").concat(r," (").concat(e.byteLength," bytes)")),n(new Uint8Array(e)))}),!0,(function(e){a(new l.LoadFileError("".concat(t,": Failed to load '").concat(r,"'").concat(e?": "+e.status+" "+e.statusText:""),e))}))}))}))},e.AddPointerMetadata=function(e,t){var n=e.metadata=e.metadata||{},r=n.gltf=n.gltf||{};(r.pointers=r.pointers||[]).push(t)},e._GetTextureWrapMode=function(e,t){switch(t=null==t?10497:t){case 33071:return l.Texture.CLAMP_ADDRESSMODE;case 33648:return l.Texture.MIRROR_ADDRESSMODE;case 10497:return l.Texture.WRAP_ADDRESSMODE;default:return l.Logger.Warn("".concat(e,": Invalid value (").concat(t,")")),l.Texture.WRAP_ADDRESSMODE}},e._GetTextureSamplingMode=function(e,t){var n=null==t.magFilter?9729:t.magFilter,r=null==t.minFilter?9987:t.minFilter;if(9729===n)switch(r){case 9728:return l.Texture.LINEAR_NEAREST;case 9729:return l.Texture.LINEAR_LINEAR;case 9984:return l.Texture.LINEAR_NEAREST_MIPNEAREST;case 9985:return l.Texture.LINEAR_LINEAR_MIPNEAREST;case 9986:return l.Texture.LINEAR_NEAREST_MIPLINEAR;case 9987:return l.Texture.LINEAR_LINEAR_MIPLINEAR;default:return l.Logger.Warn("".concat(e,"/minFilter: Invalid value (").concat(r,")")),l.Texture.LINEAR_LINEAR_MIPLINEAR}else switch(9728!==n&&l.Logger.Warn("".concat(e,"/magFilter: Invalid value (").concat(n,")")),r){case 9728:return l.Texture.NEAREST_NEAREST;case 9729:return l.Texture.NEAREST_LINEAR;case 9984:return l.Texture.NEAREST_NEAREST_MIPNEAREST;case 9985:return l.Texture.NEAREST_LINEAR_MIPNEAREST;case 9986:return l.Texture.NEAREST_NEAREST_MIPLINEAR;case 9987:return l.Texture.NEAREST_LINEAR_MIPLINEAR;default:return l.Logger.Warn("".concat(e,"/minFilter: Invalid value (").concat(r,")")),l.Texture.NEAREST_NEAREST_MIPNEAREST}},e._GetTypedArrayConstructor=function(e,t){switch(t){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5125:return Uint32Array;case 5126:return Float32Array;default:throw new Error("".concat(e,": Invalid component type ").concat(t))}},e._GetTypedArray=function(t,n,r,o,a){var s=r.buffer;o=r.byteOffset+(o||0);var i=e._GetTypedArrayConstructor("".concat(t,"/componentType"),n),c=l.VertexBuffer.GetTypeByteLength(n);return o%c!=0?(l.Logger.Warn("".concat(t,": Copying buffer as byte offset (").concat(o,") is not a multiple of component type byte length (").concat(c,")")),new i(s.slice(o,o+a*c),0)):new i(s,o,a)},e._GetNumComponents=function(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("".concat(e,": Invalid type (").concat(t,")"))},e._ValidateUri=function(e){return l.Tools.IsBase64(e)||-1===e.indexOf("..")},e._GetDrawMode=function(e,t){switch(null==t&&(t=4),t){case 0:return l.Material.PointListDrawMode;case 1:return l.Material.LineListDrawMode;case 2:return l.Material.LineLoopDrawMode;case 3:return l.Material.LineStripDrawMode;case 4:return l.Material.TriangleFillMode;case 5:return l.Material.TriangleStripDrawMode;case 6:return l.Material.TriangleFanDrawMode}throw new Error("".concat(e,": Invalid mesh primitive mode (").concat(t,")"))},e.prototype._compileMaterialsAsync=function(){var e=this;this._parent._startPerformanceCounter("Compile materials");var t=new Array;if(this._gltf.materials)for(var n=0,r=this._gltf.materials;n<r.length;n++){var o=r[n];if(o._data)for(var a in o._data)for(var s=o._data[a],i=0,l=s.babylonMeshes;i<l.length;i++){var c=l[i];c.computeWorldMatrix(!0);var u=s.babylonMaterial;t.push(u.forceCompilationAsync(c)),t.push(u.forceCompilationAsync(c,{useInstances:!0})),this._parent.useClipPlane&&(t.push(u.forceCompilationAsync(c,{clipPlane:!0})),t.push(u.forceCompilationAsync(c,{clipPlane:!0,useInstances:!0})))}}return Promise.all(t).then((function(){e._parent._endPerformanceCounter("Compile materials")}))},e.prototype._compileShadowGeneratorsAsync=function(){var e=this;this._parent._startPerformanceCounter("Compile shadow generators");for(var t=new Array,n=0,r=this._babylonScene.lights;n<r.length;n++){var o=r[n].getShadowGenerator();o&&t.push(o.forceCompilationAsync())}return Promise.all(t).then((function(){e._parent._endPerformanceCounter("Compile shadow generators")}))},e.prototype._forEachExtensions=function(e){for(var t=0,n=this._extensions;t<n.length;t++){var r=n[t];r.enabled&&e(r)}},e.prototype._applyExtensions=function(e,t,n){for(var r=0,o=this._extensions;r<o.length;r++){var a=o[r];if(a.enabled){var s="".concat(a.name,".").concat(t),i=e;i._activeLoaderExtensionFunctions=i._activeLoaderExtensionFunctions||{};var l=i._activeLoaderExtensionFunctions;if(!l[s]){l[s]=!0;try{var c=n(a);if(c)return c}finally{delete l[s]}}}}return null},e.prototype._extensionsOnLoading=function(){this._forEachExtensions((function(e){return e.onLoading&&e.onLoading()}))},e.prototype._extensionsOnReady=function(){this._forEachExtensions((function(e){return e.onReady&&e.onReady()}))},e.prototype._extensionsLoadSceneAsync=function(e,t){return this._applyExtensions(t,"loadScene",(function(n){return n.loadSceneAsync&&n.loadSceneAsync(e,t)}))},e.prototype._extensionsLoadNodeAsync=function(e,t,n){return this._applyExtensions(t,"loadNode",(function(r){return r.loadNodeAsync&&r.loadNodeAsync(e,t,n)}))},e.prototype._extensionsLoadCameraAsync=function(e,t,n){return this._applyExtensions(t,"loadCamera",(function(r){return r.loadCameraAsync&&r.loadCameraAsync(e,t,n)}))},e.prototype._extensionsLoadVertexDataAsync=function(e,t,n){return this._applyExtensions(t,"loadVertexData",(function(r){return r._loadVertexDataAsync&&r._loadVertexDataAsync(e,t,n)}))},e.prototype._extensionsLoadMeshPrimitiveAsync=function(e,t,n,r,o,a){return this._applyExtensions(o,"loadMeshPrimitive",(function(s){return s._loadMeshPrimitiveAsync&&s._loadMeshPrimitiveAsync(e,t,n,r,o,a)}))},e.prototype._extensionsLoadMaterialAsync=function(e,t,n,r,o){return this._applyExtensions(t,"loadMaterial",(function(a){return a._loadMaterialAsync&&a._loadMaterialAsync(e,t,n,r,o)}))},e.prototype._extensionsCreateMaterial=function(e,t,n){return this._applyExtensions(t,"createMaterial",(function(r){return r.createMaterial&&r.createMaterial(e,t,n)}))},e.prototype._extensionsLoadMaterialPropertiesAsync=function(e,t,n){return this._applyExtensions(t,"loadMaterialProperties",(function(r){return r.loadMaterialPropertiesAsync&&r.loadMaterialPropertiesAsync(e,t,n)}))},e.prototype._extensionsLoadTextureInfoAsync=function(e,t,n){return this._applyExtensions(t,"loadTextureInfo",(function(r){return r.loadTextureInfoAsync&&r.loadTextureInfoAsync(e,t,n)}))},e.prototype._extensionsLoadTextureAsync=function(e,t,n){return this._applyExtensions(t,"loadTexture",(function(r){return r._loadTextureAsync&&r._loadTextureAsync(e,t,n)}))},e.prototype._extensionsLoadAnimationAsync=function(e,t){return this._applyExtensions(t,"loadAnimation",(function(n){return n.loadAnimationAsync&&n.loadAnimationAsync(e,t)}))},e.prototype._extensionsLoadSkinAsync=function(e,t,n){return this._applyExtensions(n,"loadSkin",(function(r){return r._loadSkinAsync&&r._loadSkinAsync(e,t,n)}))},e.prototype._extensionsLoadUriAsync=function(e,t,n){return this._applyExtensions(t,"loadUri",(function(r){return r._loadUriAsync&&r._loadUriAsync(e,t,n)}))},e.prototype._extensionsLoadBufferViewAsync=function(e,t){return this._applyExtensions(t,"loadBufferView",(function(n){return n.loadBufferViewAsync&&n.loadBufferViewAsync(e,t)}))},e.prototype._extensionsLoadBufferAsync=function(e,t,n,r){return this._applyExtensions(t,"loadBuffer",(function(o){return o.loadBufferAsync&&o.loadBufferAsync(e,t,n,r)}))},e.LoadExtensionAsync=function(e,t,n,r){if(!t.extensions)return null;var o=t.extensions[n];return o?r("".concat(e,"/extensions/").concat(n),o):null},e.LoadExtraAsync=function(e,t,n,r){if(!t.extras)return null;var o=t.extras[n];return o?r("".concat(e,"/extras/").concat(n),o):null},e.prototype.isExtensionUsed=function(e){return!!this._gltf.extensionsUsed&&-1!==this._gltf.extensionsUsed.indexOf(e)},e.prototype.logOpen=function(e){this._parent._logOpen(e)},e.prototype.logClose=function(){this._parent._logClose()},e.prototype.log=function(e){this._parent._log(e)},e.prototype.startPerformanceCounter=function(e){this._parent._startPerformanceCounter(e)},e.prototype.endPerformanceCounter=function(e){this._parent._endPerformanceCounter(e)},e._RegisteredExtensions={},e.DefaultSampler={index:-1},e}();m._CreateGLTF2Loader=function(e){return new g(e)};var A="EXT_lights_image_based",x=function(){function e(e){this.name=A,this._loader=e,this.enabled=this._loader.isExtensionUsed(A)}return e.prototype.dispose=function(){this._loader=null,delete this._lights},e.prototype.onLoading=function(){var e=this._loader.gltf.extensions;if(e&&e[this.name]){var t=e[this.name];this._lights=t.lights}},e.prototype.loadSceneAsync=function(e,t){var n=this;return g.LoadExtensionAsync(e,t,this.name,(function(r,o){var a=new Array;a.push(n._loader.loadSceneAsync(e,t)),n._loader.logOpen("".concat(r));var s=v.Get("".concat(r,"/light"),n._lights,o.light);return a.push(n._loadLightAsync("/extensions/".concat(n.name,"/lights/").concat(o.light),s).then((function(e){n._loader.babylonScene.environmentTexture=e}))),n._loader.logClose(),Promise.all(a).then((function(){}))}))},e.prototype._loadLightAsync=function(e,t){var n=this;if(!t._loaded){var r=new Array;this._loader.logOpen("".concat(e));for(var o=new Array(t.specularImages.length),a=function(n){var a=t.specularImages[n];o[n]=new Array(a.length);for(var i=function(t){var i="".concat(e,"/specularImages/").concat(n,"/").concat(t);s._loader.logOpen("".concat(i));var l=a[t],c=v.Get(i,s._loader.gltf.images,l);r.push(s._loader.loadImageAsync("/images/".concat(l),c).then((function(e){o[n][t]=e}))),s._loader.logClose()},l=0;l<a.length;l++)i(l)},s=this,i=0;i<t.specularImages.length;i++)a(i);this._loader.logClose(),t._loaded=Promise.all(r).then((function(){var r=new l.RawCubeTexture(n._loader.babylonScene,null,t.specularImageSize);if(r.name=t.name||"environment",t._babylonTexture=r,null!=t.intensity&&(r.level=t.intensity),t.rotation){var a=l.Quaternion.FromArray(t.rotation);n._loader.babylonScene.useRightHandedSystem||(a=l.Quaternion.Inverse(a)),l.Matrix.FromQuaternionToRef(a,r.getReflectionTextureMatrix())}if(!t.irradianceCoefficients)throw new Error("".concat(e,": Irradiance coefficients are missing"));var s=l.SphericalHarmonics.FromArray(t.irradianceCoefficients);s.scaleInPlace(t.intensity),s.convertIrradianceToLambertianRadiance();var i=l.SphericalPolynomial.FromHarmonics(s),c=(o.length-1)/l.Scalar.Log2(t.specularImageSize);return r.updateRGBDAsync(o,i,c)}))}return t._loaded.then((function(){return t._babylonTexture}))},e}();g.RegisterExtension(A,(function(e){return new x(e)}));var T="EXT_mesh_gpu_instancing",E=function(){function e(e){this.name=T,this._loader=e,this.enabled=this._loader.isExtensionUsed(T)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadNodeAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(e,o){r._loader._disableInstancedMesh++;var a=r._loader.loadNodeAsync("/nodes/".concat(t.index),t,n);if(r._loader._disableInstancedMesh--,!t._primitiveBabylonMeshes)return a;var s=new Array,i=0,c=function(t){if(null!=o.attributes[t]){var n=v.Get("".concat(e,"/attributes/").concat(t),r._loader.gltf.accessors,o.attributes[t]);if(s.push(r._loader._loadFloatAccessorAsync("/accessors/".concat(n.bufferView),n)),0===i)i=n.count;else if(i!==n.count)throw new Error("".concat(e,"/attributes: Instance buffer accessors do not have the same count."))}else s.push(Promise.resolve(null))};return c("TRANSLATION"),c("ROTATION"),c("SCALE"),a.then((function(e){return Promise.all(s).then((function(n){var r=n[0],o=n[1],a=n[2],s=new Float32Array(16*i);l.TmpVectors.Vector3[0].copyFromFloats(0,0,0),l.TmpVectors.Quaternion[0].copyFromFloats(0,0,0,1),l.TmpVectors.Vector3[1].copyFromFloats(1,1,1);for(var c=0;c<i;++c)r&&l.Vector3.FromArrayToRef(r,3*c,l.TmpVectors.Vector3[0]),o&&l.Quaternion.FromArrayToRef(o,4*c,l.TmpVectors.Quaternion[0]),a&&l.Vector3.FromArrayToRef(a,3*c,l.TmpVectors.Vector3[1]),l.Matrix.ComposeToRef(l.TmpVectors.Vector3[1],l.TmpVectors.Quaternion[0],l.TmpVectors.Vector3[0],l.TmpVectors.Matrix[0]),l.TmpVectors.Matrix[0].copyToArray(s,16*c);for(var u=0,d=t._primitiveBabylonMeshes;u<d.length;u++)d[u].thinInstanceSetBuffer("matrix",s,16,!0);return e}))}))}))},e}();g.RegisterExtension(T,(function(e){return new E(e)}));var M="EXT_meshopt_compression",O=function(){function e(e){this.name=M,this.enabled=e.isExtensionUsed(M),this._loader=e}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadBufferViewAsync=function(e,t){var n=this;return g.LoadExtensionAsync(e,t,this.name,(function(r,o){var a=t;if(a._meshOptData)return a._meshOptData;var s=v.Get("".concat(e,"/buffer"),n._loader.gltf.buffers,o.buffer);return a._meshOptData=n._loader.loadBufferAsync("/buffers/".concat(s.index),s,o.byteOffset||0,o.byteLength).then((function(e){return l.MeshoptCompression.Default.decodeGltfBufferAsync(e,o.count,o.byteStride,o.mode,o.filter)})),a._meshOptData}))},e}();g.RegisterExtension(M,(function(e){return new O(e)}));var L="EXT_texture_webp",w=function(){function e(e){this.name=L,this._loader=e,this.enabled=e.isExtensionUsed(L)}return e.prototype.dispose=function(){this._loader=null},e.prototype._loadTextureAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=null==t.sampler?g.DefaultSampler:v.Get("".concat(e,"/sampler"),r._loader.gltf.samplers,t.sampler),i=v.Get("".concat(o,"/source"),r._loader.gltf.images,a.source);return r._loader._createTextureAsync(e,s,i,(function(e){n(e)}),void 0,!t._textureInfo.nonColorData)}))},e}();g.RegisterExtension(L,(function(e){return new w(e)}));var C="KHR_draco_mesh_compression",S=function(){function e(e){this.name=C,this._loader=e,this.enabled=l.DracoCompression.DecoderAvailable&&this._loader.isExtensionUsed(C)}return e.prototype.dispose=function(){delete this.dracoCompression,this._loader=null},e.prototype._loadVertexDataAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){if(null!=t.mode){if(5!==t.mode&&4!==t.mode)throw new Error("".concat(e,": Unsupported mode ").concat(t.mode));if(5===t.mode)throw new Error("".concat(e,": Mode ").concat(t.mode," is not currently supported"))}var s={},i={},c=function(o,l){var c=a.attributes[o];if(void 0!==c&&void 0!==t.attributes[o]){s[l]=c;var u=v.Get("".concat(e,"/attributes/").concat(o),r._loader.gltf.accessors,t.attributes[o]);if(u.normalized&&5126!==u.componentType){var d=1;switch(u.componentType){case 5120:d=127;break;case 5121:d=255;break;case 5122:d=32767;break;case 5123:d=65535}i[l]=d}n._delayInfo=n._delayInfo||[],-1===n._delayInfo.indexOf(l)&&n._delayInfo.push(l)}};c("POSITION",l.VertexBuffer.PositionKind),c("NORMAL",l.VertexBuffer.NormalKind),c("TANGENT",l.VertexBuffer.TangentKind),c("TEXCOORD_0",l.VertexBuffer.UVKind),c("TEXCOORD_1",l.VertexBuffer.UV2Kind),c("TEXCOORD_2",l.VertexBuffer.UV3Kind),c("TEXCOORD_3",l.VertexBuffer.UV4Kind),c("TEXCOORD_4",l.VertexBuffer.UV5Kind),c("TEXCOORD_5",l.VertexBuffer.UV6Kind),c("JOINTS_0",l.VertexBuffer.MatricesIndicesKind),c("WEIGHTS_0",l.VertexBuffer.MatricesWeightsKind),c("COLOR_0",l.VertexBuffer.ColorKind);var u=v.Get(o,r._loader.gltf.bufferViews,a.bufferView);return u._dracoBabylonGeometry||(u._dracoBabylonGeometry=r._loader.loadBufferViewAsync("/bufferViews/".concat(u.index),u).then((function(t){return(r.dracoCompression||l.DracoCompression.Default).decodeMeshAsync(t,s,i).then((function(e){var t=new l.Geometry(n.name,r._loader.babylonScene);return e.applyToGeometry(t),t})).catch((function(t){throw new Error("".concat(e,": ").concat(t.message))}))}))),u._dracoBabylonGeometry}))},e}();g.RegisterExtension(C,(function(e){return new S(e)}));var R="KHR_lights_punctual",P=function(){function e(e){this.name=R,this._loader=e,this.enabled=this._loader.isExtensionUsed(R)}return e.prototype.dispose=function(){this._loader=null,delete this._lights},e.prototype.onLoading=function(){var e=this._loader.gltf.extensions;if(e&&e[this.name]){var t=e[this.name];this._lights=t.lights}},e.prototype.loadNodeAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){return r._loader.loadNodeAsync(e,t,(function(e){var t,s=v.Get(o,r._lights,a.light),i=s.name||e.name;switch(r._loader.babylonScene._blockEntityCollection=!!r._loader._assetContainer,s.type){case"directional":t=new l.DirectionalLight(i,l.Vector3.Backward(),r._loader.babylonScene);break;case"point":t=new l.PointLight(i,l.Vector3.Zero(),r._loader.babylonScene);break;case"spot":var c=new l.SpotLight(i,l.Vector3.Zero(),l.Vector3.Backward(),0,1,r._loader.babylonScene);c.angle=2*(s.spot&&s.spot.outerConeAngle||Math.PI/4),c.innerAngle=2*(s.spot&&s.spot.innerConeAngle||0),t=c;break;default:throw r._loader.babylonScene._blockEntityCollection=!1,new Error("".concat(o,": Invalid light type (").concat(s.type,")"))}t._parentContainer=r._loader._assetContainer,r._loader.babylonScene._blockEntityCollection=!1,t.falloffType=l.Light.FALLOFF_GLTF,t.diffuse=s.color?l.Color3.FromArray(s.color):l.Color3.White(),t.intensity=null==s.intensity?1:s.intensity,t.range=null==s.range?Number.MAX_VALUE:s.range,t.parent=e,r._loader._babylonLights.push(t),g.AddPointerMetadata(t,o),n(e)}))}))},e}();g.RegisterExtension(R,(function(e){return new P(e)}));var B="KHR_materials_pbrSpecularGlossiness",D=function(){function e(e){this.name=B,this.order=200,this._loader=e,this.enabled=this._loader.isExtensionUsed(B)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialBasePropertiesAsync(e,t,n)),s.push(r._loadSpecularGlossinessPropertiesAsync(o,t,a,n)),r._loader.loadMaterialAlphaProperties(e,t,n),Promise.all(s).then((function(){}))}))},e.prototype._loadSpecularGlossinessPropertiesAsync=function(e,t,n,r){if(!(r instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var o=new Array;return r.metallic=null,r.roughness=null,n.diffuseFactor?(r.albedoColor=l.Color3.FromArray(n.diffuseFactor),r.alpha=n.diffuseFactor[3]):r.albedoColor=l.Color3.White(),r.reflectivityColor=n.specularFactor?l.Color3.FromArray(n.specularFactor):l.Color3.White(),r.microSurface=null==n.glossinessFactor?1:n.glossinessFactor,n.diffuseTexture&&o.push(this._loader.loadTextureInfoAsync("".concat(e,"/diffuseTexture"),n.diffuseTexture,(function(e){e.name="".concat(r.name," (Diffuse)"),r.albedoTexture=e}))),n.specularGlossinessTexture&&(o.push(this._loader.loadTextureInfoAsync("".concat(e,"/specularGlossinessTexture"),n.specularGlossinessTexture,(function(e){e.name="".concat(r.name," (Specular Glossiness)"),r.reflectivityTexture=e}))),r.reflectivityTexture.hasAlpha=!0,r.useMicroSurfaceFromReflectivityMapAlpha=!0),Promise.all(o).then((function(){}))},e}();g.RegisterExtension(B,(function(e){return new D(e)}));var I="KHR_materials_unlit",F=function(){function e(e){this.name=I,this.order=210,this._loader=e,this.enabled=this._loader.isExtensionUsed(I)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(){return r._loadUnlitPropertiesAsync(e,t,n)}))},e.prototype._loadUnlitPropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;n.unlit=!0;var o=t.pbrMetallicRoughness;return o&&(o.baseColorFactor?(n.albedoColor=l.Color3.FromArray(o.baseColorFactor),n.alpha=o.baseColorFactor[3]):n.albedoColor=l.Color3.White(),o.baseColorTexture&&r.push(this._loader.loadTextureInfoAsync("".concat(e,"/baseColorTexture"),o.baseColorTexture,(function(e){e.name="".concat(n.name," (Base Color)"),n.albedoTexture=e})))),t.doubleSided&&(n.backFaceCulling=!1,n.twoSidedLighting=!0),this._loader.loadMaterialAlphaProperties(e,t,n),Promise.all(r).then((function(){}))},e}();g.RegisterExtension(I,(function(e){return new F(e)}));var V="KHR_materials_clearcoat",N=function(){function e(e){this.name=V,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(V)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadClearCoatPropertiesAsync(o,a,n)),Promise.all(s).then((function(){}))}))},e.prototype._loadClearCoatPropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;return n.clearCoat.isEnabled=!0,n.clearCoat.useRoughnessFromMainTexture=!1,n.clearCoat.remapF0OnInterfaceChange=!1,null!=t.clearcoatFactor?n.clearCoat.intensity=t.clearcoatFactor:n.clearCoat.intensity=0,t.clearcoatTexture&&r.push(this._loader.loadTextureInfoAsync("".concat(e,"/clearcoatTexture"),t.clearcoatTexture,(function(e){e.name="".concat(n.name," (ClearCoat Intensity)"),n.clearCoat.texture=e}))),null!=t.clearcoatRoughnessFactor?n.clearCoat.roughness=t.clearcoatRoughnessFactor:n.clearCoat.roughness=0,t.clearcoatRoughnessTexture&&(t.clearcoatRoughnessTexture.nonColorData=!0,r.push(this._loader.loadTextureInfoAsync("".concat(e,"/clearcoatRoughnessTexture"),t.clearcoatRoughnessTexture,(function(e){e.name="".concat(n.name," (ClearCoat Roughness)"),n.clearCoat.textureRoughness=e})))),t.clearcoatNormalTexture&&(t.clearcoatNormalTexture.nonColorData=!0,r.push(this._loader.loadTextureInfoAsync("".concat(e,"/clearcoatNormalTexture"),t.clearcoatNormalTexture,(function(e){e.name="".concat(n.name," (ClearCoat Normal)"),n.clearCoat.bumpTexture=e}))),n.invertNormalMapX=!n.getScene().useRightHandedSystem,n.invertNormalMapY=n.getScene().useRightHandedSystem,null!=t.clearcoatNormalTexture.scale&&(n.clearCoat.bumpTexture.level=t.clearcoatNormalTexture.scale)),Promise.all(r).then((function(){}))},e}();g.RegisterExtension(V,(function(e){return new N(e)}));var G="KHR_materials_emissive_strength",k=function(){function e(e){this.name=G,this.order=170,this._loader=e,this.enabled=this._loader.isExtensionUsed(G)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){return r._loader.loadMaterialPropertiesAsync(e,t,n).then((function(){r._loadEmissiveProperties(o,a,n)}))}))},e.prototype._loadEmissiveProperties=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));void 0!==t.emissiveStrength&&n.emissiveColor.scaleToRef(t.emissiveStrength,n.emissiveColor)},e}();g.RegisterExtension(G,(function(e){return new k(e)}));var U="KHR_materials_sheen",K=function(){function e(e){this.name=U,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(U)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadSheenPropertiesAsync(o,a,n)),Promise.all(s).then((function(){}))}))},e.prototype._loadSheenPropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;return n.sheen.isEnabled=!0,n.sheen.intensity=1,null!=t.sheenColorFactor?n.sheen.color=l.Color3.FromArray(t.sheenColorFactor):n.sheen.color=l.Color3.Black(),t.sheenColorTexture&&r.push(this._loader.loadTextureInfoAsync("".concat(e,"/sheenColorTexture"),t.sheenColorTexture,(function(e){e.name="".concat(n.name," (Sheen Color)"),n.sheen.texture=e}))),void 0!==t.sheenRoughnessFactor?n.sheen.roughness=t.sheenRoughnessFactor:n.sheen.roughness=0,t.sheenRoughnessTexture&&(t.sheenRoughnessTexture.nonColorData=!0,r.push(this._loader.loadTextureInfoAsync("".concat(e,"/sheenRoughnessTexture"),t.sheenRoughnessTexture,(function(e){e.name="".concat(n.name," (Sheen Roughness)"),n.sheen.textureRoughness=e})))),n.sheen.albedoScaling=!0,n.sheen.useRoughnessFromMainTexture=!1,Promise.all(r).then((function(){}))},e}();g.RegisterExtension(U,(function(e){return new K(e)}));var H="KHR_materials_specular",j=function(){function e(e){this.name=H,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(H)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadSpecularPropertiesAsync(o,a,n)),Promise.all(s).then((function(){}))}))},e.prototype._loadSpecularPropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;return void 0!==t.specularFactor&&(n.metallicF0Factor=t.specularFactor),void 0!==t.specularColorFactor&&(n.metallicReflectanceColor=l.Color3.FromArray(t.specularColorFactor)),t.specularTexture&&(t.specularTexture.nonColorData=!0,r.push(this._loader.loadTextureInfoAsync("".concat(e,"/specularTexture"),t.specularTexture,(function(e){e.name="".concat(n.name," (Specular F0 Strength)"),n.metallicReflectanceTexture=e,n.useOnlyMetallicFromMetallicReflectanceTexture=!0})))),t.specularColorTexture&&r.push(this._loader.loadTextureInfoAsync("".concat(e,"/specularColorTexture"),t.specularColorTexture,(function(e){e.name="".concat(n.name," (Specular F0 Color)"),n.reflectanceTexture=e}))),Promise.all(r).then((function(){}))},e}();g.RegisterExtension(H,(function(e){return new j(e)}));var q="KHR_materials_ior",W=function(){function e(e){this.name=q,this.order=180,this._loader=e,this.enabled=this._loader.isExtensionUsed(q)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadIorPropertiesAsync(o,a,n)),Promise.all(s).then((function(){}))}))},e.prototype._loadIorPropertiesAsync=function(t,n,r){if(!(r instanceof l.PBRMaterial))throw new Error("".concat(t,": Material type not supported"));return void 0!==n.ior?r.indexOfRefraction=n.ior:r.indexOfRefraction=e._DEFAULT_IOR,Promise.resolve()},e._DEFAULT_IOR=1.5,e}();g.RegisterExtension(q,(function(e){return new W(e)}));var X="KHR_materials_variants",z=function(){function e(e){this.name=X,this._loader=e,this.enabled=this._loader.isExtensionUsed(X)}return e.prototype.dispose=function(){this._loader=null},e.GetAvailableVariants=function(e){var t=this._GetExtensionMetadata(e);return t?Object.keys(t.variants):[]},e.prototype.getAvailableVariants=function(t){return e.GetAvailableVariants(t)},e.SelectVariant=function(e,t){var n=this._GetExtensionMetadata(e);if(!n)throw new Error("Cannot select variant on a glTF mesh that does not have the ".concat(X," extension"));var r=function(e){var t=n.variants[e];if(t)for(var r=0,o=t;r<o.length;r++){var a=o[r];a.mesh.material=a.material}};if(t instanceof Array)for(var o=0,a=t;o<a.length;o++)r(a[o]);else r(t);n.lastSelected=t},e.prototype.selectVariant=function(t,n){return e.SelectVariant(t,n)},e.Reset=function(e){var t=this._GetExtensionMetadata(e);if(!t)throw new Error("Cannot reset on a glTF mesh that does not have the ".concat(X," extension"));for(var n=0,r=t.original;n<r.length;n++){var o=r[n];o.mesh.material=o.material}t.lastSelected=null},e.prototype.reset=function(t){return e.Reset(t)},e.GetLastSelectedVariant=function(e){var t=this._GetExtensionMetadata(e);if(!t)throw new Error("Cannot get the last selected variant on a glTF mesh that does not have the ".concat(X," extension"));return t.lastSelected},e.prototype.getLastSelectedVariant=function(t){return e.GetLastSelectedVariant(t)},e._GetExtensionMetadata=function(e){var t,n;return(null===(n=null===(t=null==e?void 0:e.metadata)||void 0===t?void 0:t.gltf)||void 0===n?void 0:n.KHR_materials_variants)||null},e.prototype.onLoading=function(){var e=this._loader.gltf.extensions;if(e&&e[this.name]){var t=e[this.name];this._variants=t.variants}},e.prototype._loadMeshPrimitiveAsync=function(t,n,r,o,a,s){var i=this;return g.LoadExtensionAsync(t,a,this.name,(function(c,u){var d=new Array;return d.push(i._loader._loadMeshPrimitiveAsync(t,n,r,o,a,(function(n){if(s(n),n instanceof l.Mesh){var r=g._GetDrawMode(t,a.mode),o=i._loader.rootBabylonMesh,f=o?o.metadata=o.metadata||{}:{},h=f.gltf=f.gltf||{},p=h.KHR_materials_variants=h.KHR_materials_variants||{lastSelected:null,original:[],variants:{}};p.original.push({mesh:n,material:n.material});for(var _=function(t){var a=u.mappings[t],s=v.Get("".concat(c,"/mappings/").concat(t,"/material"),i._loader.gltf.materials,a.material);d.push(i._loader._loadMaterialAsync("#/materials/".concat(a.material),s,n,r,(function(t){for(var r=function(r){var s=a.variants[r],l=v.Get("/extensions/".concat(X,"/variants/").concat(s),i._variants,s);p.variants[l.name]=p.variants[l.name]||[],p.variants[l.name].push({mesh:n,material:t}),n.onClonedObservable.add((function(t){var r=t,a=null,s=r;do{if(!(s=s.parent))return;a=e._GetExtensionMetadata(s)}while(null===a);if(o&&a===e._GetExtensionMetadata(o)){for(var i in s.metadata={},o.metadata)s.metadata[i]=o.metadata[i];for(var i in s.metadata.gltf=[],o.metadata.gltf)s.metadata.gltf[i]=o.metadata.gltf[i];s.metadata.gltf.KHR_materials_variants={lastSelected:null,original:[],variants:{}};for(var c=0,u=a.original;c<u.length;c++){var d=u[c];s.metadata.gltf.KHR_materials_variants.original.push({mesh:d.mesh,material:d.material})}for(var i in a.variants)if(Object.prototype.hasOwnProperty.call(a.variants,i)){s.metadata.gltf.KHR_materials_variants.variants[i]=[];for(var f=0,h=a.variants[i];f<h.length;f++){var p=h[f];s.metadata.gltf.KHR_materials_variants.variants[i].push({mesh:p.mesh,material:p.material})}}a=s.metadata.gltf.KHR_materials_variants}for(var _=0,m=a.original;_<m.length;_++)(v=m[_]).mesh===n&&(v.mesh=r);for(var y=0,b=a.variants[l.name];y<b.length;y++){var v;(v=b[y]).mesh===n&&(v.mesh=r)}}))},s=0;s<a.variants.length;++s)r(s)})))},m=0;m<u.mappings.length;++m)_(m)}}))),Promise.all(d).then((function(e){return e[0]}))}))},e}();g.RegisterExtension(X,(function(e){return new z(e)}));var J=function(){return J=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},J.apply(this,arguments)};Object.create,Object.create;var Q=function(){function e(t,n){var r=this;this._opaqueRenderTarget=null,this._opaqueMeshesCache=[],this._transparentMeshesCache=[],this._materialObservers={},this._options=J(J({},e._GetDefaultOptions()),t),this._scene=n,this._scene._transmissionHelper=this,this.onErrorObservable=new l.Observable,this._scene.onDisposeObservable.addOnce((function(){r.dispose()})),this._parseScene(),this._setupRenderTargets()}return e._GetDefaultOptions=function(){return{renderSize:1024,samples:4,lodGenerationScale:1,lodGenerationOffset:-4,renderTargetTextureType:l.Constants.TEXTURETYPE_HALF_FLOAT,generateMipmaps:!0}},e.prototype.updateOptions=function(e){var t=this,n=Object.keys(e).filter((function(n){return t._options[n]!==e[n]}));if(n.length){var r=J(J({},this._options),e),o=this._options;this._options=r,r.renderSize===o.renderSize&&r.renderTargetTextureType===o.renderTargetTextureType&&r.generateMipmaps===o.generateMipmaps&&this._opaqueRenderTarget?(this._opaqueRenderTarget.samples=r.samples,this._opaqueRenderTarget.lodGenerationScale=r.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=r.lodGenerationOffset):this._setupRenderTargets()}},e.prototype.getOpaqueTarget=function(){return this._opaqueRenderTarget},e.prototype._shouldRenderAsTransmission=function(e){return!!e&&!!(e instanceof l.PBRMaterial&&e.subSurface.isRefractionEnabled)},e.prototype._addMesh=function(e){var t=this;this._materialObservers[e.uniqueId]=e.onMaterialChangedObservable.add(this._onMeshMaterialChanged.bind(this)),l.Tools.SetImmediate((function(){t._shouldRenderAsTransmission(e.material)?(e.material.refractionTexture=t._opaqueRenderTarget,t._transparentMeshesCache.push(e)):t._opaqueMeshesCache.push(e)}))},e.prototype._removeMesh=function(e){e.onMaterialChangedObservable.remove(this._materialObservers[e.uniqueId]),delete this._materialObservers[e.uniqueId];var t=this._transparentMeshesCache.indexOf(e);-1!==t&&this._transparentMeshesCache.splice(t,1),-1!==(t=this._opaqueMeshesCache.indexOf(e))&&this._opaqueMeshesCache.splice(t,1)},e.prototype._parseScene=function(){this._scene.meshes.forEach(this._addMesh.bind(this)),this._scene.onNewMeshAddedObservable.add(this._addMesh.bind(this)),this._scene.onMeshRemovedObservable.add(this._removeMesh.bind(this))},e.prototype._onMeshMaterialChanged=function(e){var t=this._transparentMeshesCache.indexOf(e),n=this._opaqueMeshesCache.indexOf(e);this._shouldRenderAsTransmission(e.material)?(e.material instanceof l.PBRMaterial&&(e.material.subSurface.refractionTexture=this._opaqueRenderTarget),-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)},e.prototype._setupRenderTargets=function(){var e,t,n,r,o=this;this._opaqueRenderTarget&&this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=new l.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.clearColor=null!==(t=null===(e=this._options.clearColor)||void 0===e?void 0:e.clone())&&void 0!==t?t:this._scene.clearColor.clone(),this._opaqueRenderTarget.gammaSpace=!1,this._opaqueRenderTarget.lodGenerationScale=this._options.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=this._options.lodGenerationOffset,this._opaqueRenderTarget.samples=this._options.samples,this._opaqueRenderTarget.onBeforeBindObservable.add((function(e){r=o._scene.environmentIntensity,o._scene.environmentIntensity=1,n=o._scene.imageProcessingConfiguration.applyByPostProcess,o._options.clearColor?e.clearColor.copyFrom(o._options.clearColor):o._scene.clearColor.toLinearSpaceToRef(e.clearColor),o._scene.imageProcessingConfiguration._applyByPostProcess=!0})),this._opaqueRenderTarget.onAfterUnbindObservable.add((function(){o._scene.environmentIntensity=r,o._scene.imageProcessingConfiguration._applyByPostProcess=n})),this._transparentMeshesCache.forEach((function(e){o._shouldRenderAsTransmission(e.material)&&(e.material.refractionTexture=o._opaqueRenderTarget)}))},e.prototype.dispose=function(){this._scene._transmissionHelper=void 0,this._opaqueRenderTarget&&(this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=null),this._transparentMeshesCache=[],this._opaqueMeshesCache=[]},e}(),Y="KHR_materials_transmission",Z=function(){function e(e){this.name=Y,this.order=175,this._loader=e,this.enabled=this._loader.isExtensionUsed(Y),this.enabled&&(e.parent.transparencyAsCoverage=!0)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialBasePropertiesAsync(e,t,n)),s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadTransparentPropertiesAsync(o,t,n,a)),Promise.all(s).then((function(){}))}))},e.prototype._loadTransparentPropertiesAsync=function(e,t,n,r){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var o=n;if(o.subSurface.isRefractionEnabled=!0,o.subSurface.volumeIndexOfRefraction=1,o.subSurface.useAlbedoToTintRefraction=!0,void 0===r.transmissionFactor)return o.subSurface.refractionIntensity=0,o.subSurface.isRefractionEnabled=!1,Promise.resolve();o.subSurface.refractionIntensity=r.transmissionFactor;var a=o.getScene();return o.subSurface.refractionIntensity&&!a._transmissionHelper&&new Q({},o.getScene()),o.subSurface.minimumThickness=0,o.subSurface.maximumThickness=0,r.transmissionTexture?(r.transmissionTexture.nonColorData=!0,this._loader.loadTextureInfoAsync("".concat(e,"/transmissionTexture"),r.transmissionTexture,void 0).then((function(e){o.subSurface.refractionIntensityTexture=e,o.subSurface.useGltfStyleTextures=!0}))):Promise.resolve()},e}();g.RegisterExtension(Y,(function(e){return new Z(e)}));var $="KHR_materials_translucency",ee=function(){function e(e){this.name=$,this.order=174,this._loader=e,this.enabled=this._loader.isExtensionUsed($),this.enabled&&(e.parent.transparencyAsCoverage=!0)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialBasePropertiesAsync(e,t,n)),s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadTranslucentPropertiesAsync(o,t,n,a)),Promise.all(s).then((function(){}))}))},e.prototype._loadTranslucentPropertiesAsync=function(e,t,n,r){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var o=n;return o.subSurface.isTranslucencyEnabled=!0,o.subSurface.volumeIndexOfRefraction=1,o.subSurface.minimumThickness=0,o.subSurface.maximumThickness=0,o.subSurface.useAlbedoToTintTranslucency=!0,void 0===r.translucencyFactor?(o.subSurface.translucencyIntensity=0,o.subSurface.isTranslucencyEnabled=!1,Promise.resolve()):(o.subSurface.translucencyIntensity=r.translucencyFactor,r.translucencyTexture?(r.translucencyTexture.nonColorData=!0,this._loader.loadTextureInfoAsync("".concat(e,"/translucencyTexture"),r.translucencyTexture).then((function(e){o.subSurface.translucencyIntensityTexture=e}))):Promise.resolve())},e}();g.RegisterExtension($,(function(e){return new ee(e)}));var te="KHR_materials_volume",ne=function(){function e(e){this.name=te,this.order=173,this._loader=e,this.enabled=this._loader.isExtensionUsed(te),this.enabled&&this._loader._disableInstancedMesh++}return e.prototype.dispose=function(){this.enabled&&this._loader._disableInstancedMesh--,this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialBasePropertiesAsync(e,t,n)),s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadVolumePropertiesAsync(o,t,n,a)),Promise.all(s).then((function(){}))}))},e.prototype._loadVolumePropertiesAsync=function(e,t,n,r){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));if(!n.subSurface.isRefractionEnabled&&!n.subSurface.isTranslucencyEnabled||!r.thicknessFactor)return Promise.resolve();n.subSurface.volumeIndexOfRefraction=n.indexOfRefraction;var o=void 0!==r.attenuationDistance?r.attenuationDistance:Number.MAX_VALUE;return n.subSurface.tintColorAtDistance=o,void 0!==r.attenuationColor&&3==r.attenuationColor.length&&n.subSurface.tintColor.copyFromFloats(r.attenuationColor[0],r.attenuationColor[1],r.attenuationColor[2]),n.subSurface.minimumThickness=0,n.subSurface.maximumThickness=r.thicknessFactor,n.subSurface.useThicknessAsDepth=!0,r.thicknessTexture?(r.thicknessTexture.nonColorData=!0,this._loader.loadTextureInfoAsync("".concat(e,"/thicknessTexture"),r.thicknessTexture).then((function(e){n.subSurface.thicknessTexture=e,n.subSurface.useGltfStyleTextures=!0}))):Promise.resolve()},e}();g.RegisterExtension(te,(function(e){return new ne(e)}));var re="KHR_mesh_quantization",oe=function(){function e(e){this.name=re,this.enabled=e.isExtensionUsed(re)}return e.prototype.dispose=function(){},e}();g.RegisterExtension(re,(function(e){return new oe(e)}));var ae="KHR_texture_basisu",se=function(){function e(e){this.name=ae,this._loader=e,this.enabled=e.isExtensionUsed(ae)}return e.prototype.dispose=function(){this._loader=null},e.prototype._loadTextureAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=null==t.sampler?g.DefaultSampler:v.Get("".concat(e,"/sampler"),r._loader.gltf.samplers,t.sampler),i=v.Get("".concat(o,"/source"),r._loader.gltf.images,a.source);return r._loader._createTextureAsync(e,s,i,(function(e){n(e)}),t._textureInfo.nonColorData?{useRGBAIfASTCBC7NotAvailableWhenUASTC:!0}:void 0,!t._textureInfo.nonColorData)}))},e}();g.RegisterExtension(ae,(function(e){return new se(e)}));var ie="KHR_texture_transform",le=function(){function e(e){this.name=ie,this._loader=e,this.enabled=this._loader.isExtensionUsed(ie)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadTextureInfoAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){return r._loader.loadTextureInfoAsync(e,t,(function(e){if(!(e instanceof l.Texture))throw new Error("".concat(o,": Texture type not supported"));a.offset&&(e.uOffset=a.offset[0],e.vOffset=a.offset[1]),e.uRotationCenter=0,e.vRotationCenter=0,a.rotation&&(e.wAng=-a.rotation),a.scale&&(e.uScale=a.scale[0],e.vScale=a.scale[1]),null!=a.texCoord&&(e.coordinatesIndex=a.texCoord),n(e)}))}))},e}();g.RegisterExtension(ie,(function(e){return new le(e)}));var ce="KHR_xmp_json_ld",ue=function(){function e(e){this.name=ce,this.order=100,this._loader=e,this.enabled=this._loader.isExtensionUsed(ce)}return e.prototype.dispose=function(){this._loader=null},e.prototype.onLoading=function(){var e,t,n;if(null!==this._loader.rootBabylonMesh){var r=null===(e=this._loader.gltf.extensions)||void 0===e?void 0:e.KHR_xmp_json_ld,o=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&&o){var a=+o.packet;r.packets&&a<r.packets.length&&(this._loader.rootBabylonMesh.metadata=this._loader.rootBabylonMesh.metadata||{},this._loader.rootBabylonMesh.metadata.xmp=r.packets[a])}}},e}();g.RegisterExtension(ce,(function(e){return new ue(e)}));var de="MSFT_audio_emitter",fe=function(){function e(e){this.name=de,this._loader=e,this.enabled=this._loader.isExtensionUsed(de)}return e.prototype.dispose=function(){this._loader=null,this._clips=null,this._emitters=null},e.prototype.onLoading=function(){var e=this._loader.gltf.extensions;if(e&&e[this.name]){var t=e[this.name];this._clips=t.clips,this._emitters=t.emitters,v.Assign(this._clips),v.Assign(this._emitters)}},e.prototype.loadSceneAsync=function(e,t){var n=this;return g.LoadExtensionAsync(e,t,this.name,(function(r,o){var a=new Array;a.push(n._loader.loadSceneAsync(e,t));for(var s=0,i=o.emitters;s<i.length;s++){var l=i[s],c=v.Get("".concat(r,"/emitters"),n._emitters,l);if(null!=c.refDistance||null!=c.maxDistance||null!=c.rolloffFactor||null!=c.distanceModel||null!=c.innerAngle||null!=c.outerAngle)throw new Error("".concat(r,": Direction or Distance properties are not allowed on emitters attached to a scene"));a.push(n._loadEmitterAsync("".concat(r,"/emitters/").concat(c.index),c))}return Promise.all(a).then((function(){}))}))},e.prototype.loadNodeAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(e,o){var a=new Array;return r._loader.loadNodeAsync(e,t,(function(t){for(var s=function(n){var o=v.Get("".concat(e,"/emitters"),r._emitters,n);a.push(r._loadEmitterAsync("".concat(e,"/emitters/").concat(o.index),o).then((function(){for(var e=0,n=o._babylonSounds;e<n.length;e++){var r=n[e];r.attachToMesh(t),null==o.innerAngle&&null==o.outerAngle||(r.setLocalDirectionToMesh(l.Vector3.Forward()),r.setDirectionalCone(2*l.Tools.ToDegrees(null==o.innerAngle?Math.PI:o.innerAngle),2*l.Tools.ToDegrees(null==o.outerAngle?Math.PI:o.outerAngle),0))}})))},i=0,c=o.emitters;i<c.length;i++)s(c[i]);n(t)})).then((function(e){return Promise.all(a).then((function(){return e}))}))}))},e.prototype.loadAnimationAsync=function(e,t){var n=this;return g.LoadExtensionAsync(e,t,this.name,(function(r,o){return n._loader.loadAnimationAsync(e,t).then((function(a){var s=new Array;v.Assign(o.events);for(var i=0,l=o.events;i<l.length;i++){var c=l[i];s.push(n._loadAnimationEventAsync("".concat(r,"/events/").concat(c.index),e,t,c,a))}return Promise.all(s).then((function(){return a}))}))}))},e.prototype._loadClipAsync=function(e,t){if(t._objectURL)return t._objectURL;var n;if(t.uri)n=this._loader.loadUriAsync(e,t,t.uri);else{var r=v.Get("".concat(e,"/bufferView"),this._loader.gltf.bufferViews,t.bufferView);n=this._loader.loadBufferViewAsync("/bufferViews/".concat(r.index),r)}return t._objectURL=n.then((function(e){return URL.createObjectURL(new Blob([e],{type:t.mimeType}))})),t._objectURL},e.prototype._loadEmitterAsync=function(e,t){var n=this;if(t._babylonSounds=t._babylonSounds||[],!t._babylonData){for(var r=new Array,o=t.name||"emitter".concat(t.index),a={loop:!1,autoplay:!1,volume:null==t.volume?1:t.volume},s=function(e){var s="/extensions/".concat(i.name,"/clips"),c=v.Get(s,i._clips,t.clips[e].clip);r.push(i._loadClipAsync("".concat(s,"/").concat(t.clips[e].clip),c).then((function(r){var s=t._babylonSounds[e]=new l.Sound(o,r,n._loader.babylonScene,null,a);s.refDistance=t.refDistance||1,s.maxDistance=t.maxDistance||256,s.rolloffFactor=t.rolloffFactor||1,s.distanceModel=t.distanceModel||"exponential"})))},i=this,c=0;c<t.clips.length;c++)s(c);var u=Promise.all(r).then((function(){var e=t.clips.map((function(e){return e.weight||1})),n=new l.WeightedSound(t.loop||!1,t._babylonSounds,e);t.innerAngle&&(n.directionalConeInnerAngle=2*l.Tools.ToDegrees(t.innerAngle)),t.outerAngle&&(n.directionalConeOuterAngle=2*l.Tools.ToDegrees(t.outerAngle)),t.volume&&(n.volume=t.volume),t._babylonData.sound=n}));t._babylonData={loaded:u}}return t._babylonData.loaded},e.prototype._getEventAction=function(e,t,n,r,o){switch(n){case"play":return function(e){var n=(o||0)+(e-r);t.play(n)};case"stop":return function(){t.stop()};case"pause":return function(){t.pause()};default:throw new Error("".concat(e,": Unsupported action ").concat(n))}},e.prototype._loadAnimationEventAsync=function(e,t,n,r,o){var a=this;if(0==o.targetedAnimations.length)return Promise.resolve();var s=o.targetedAnimations[0],i=r.emitter,c=v.Get("/extensions/".concat(this.name,"/emitters"),this._emitters,i);return this._loadEmitterAsync(e,c).then((function(){var t=c._babylonData.sound;if(t){var n=new l.AnimationEvent(r.time,a._getEventAction(e,t,r.action,r.time,r.startOffset));s.animation.addEvent(n),o.onAnimationGroupEndObservable.add((function(){t.stop()})),o.onAnimationGroupPauseObservable.add((function(){t.pause()}))}}))},e}();g.RegisterExtension(de,(function(e){return new fe(e)}));var he="MSFT_lod",pe=function(){function e(e){this.name=he,this.order=100,this.maxLODsToLoad=10,this.onNodeLODsLoadedObservable=new l.Observable,this.onMaterialLODsLoadedObservable=new l.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.enabled=this._loader.isExtensionUsed(he)}return e.prototype.dispose=function(){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()},e.prototype.onReady=function(){for(var e=this,t=function(t){var r=Promise.all(n._nodePromiseLODs[t]).then((function(){0!==t&&(e._loader.endPerformanceCounter("Node LOD ".concat(t)),e._loader.log("Loaded node LOD ".concat(t))),e.onNodeLODsLoadedObservable.notifyObservers(t),t!==e._nodePromiseLODs.length-1&&(e._loader.startPerformanceCounter("Node LOD ".concat(t+1)),e._loadBufferLOD(e._nodeBufferLODs,t+1),e._nodeSignalLODs[t]&&e._nodeSignalLODs[t].resolve())}));n._loader._completePromises.push(r)},n=this,r=0;r<this._nodePromiseLODs.length;r++)t(r);var o=function(t){var n=Promise.all(a._materialPromiseLODs[t]).then((function(){0!==t&&(e._loader.endPerformanceCounter("Material LOD ".concat(t)),e._loader.log("Loaded material LOD ".concat(t))),e.onMaterialLODsLoadedObservable.notifyObservers(t),t!==e._materialPromiseLODs.length-1&&(e._loader.startPerformanceCounter("Material LOD ".concat(t+1)),e._loadBufferLOD(e._materialBufferLODs,t+1),e._materialSignalLODs[t]&&e._materialSignalLODs[t].resolve())}));a._loader._completePromises.push(n)},a=this;for(r=0;r<this._materialPromiseLODs.length;r++)o(r)},e.prototype.loadSceneAsync=function(e,t){var n=this._loader.loadSceneAsync(e,t);return this._loadBufferLOD(this._bufferLODs,0),n},e.prototype.loadNodeAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(e,o){var a,s=r._getLODs(e,t,r._loader.gltf.nodes,o.ids);r._loader.logOpen("".concat(e));for(var i=function(e){var t=s[e];0!==e&&(r._nodeIndexLOD=e,r._nodeSignalLODs[e]=r._nodeSignalLODs[e]||new l.Deferred);var o=r._loader.loadNodeAsync("/nodes/".concat(t.index),t,(function(e){n(e),e.setEnabled(!1)})).then((function(t){if(0!==e){var n=s[e-1];n._babylonTransformNode&&(r._disposeTransformNode(n._babylonTransformNode),delete n._babylonTransformNode)}return t.setEnabled(!0),t}));r._nodePromiseLODs[e]=r._nodePromiseLODs[e]||[],0===e?a=o:(r._nodeIndexLOD=null,r._nodePromiseLODs[e].push(o))},c=0;c<s.length;c++)i(c);return r._loader.logClose(),a}))},e.prototype._loadMaterialAsync=function(e,t,n,r,o){var a=this;return this._nodeIndexLOD?null:g.LoadExtensionAsync(e,t,this.name,(function(e,s){var i,l=a._getLODs(e,t,a._loader.gltf.materials,s.ids);a._loader.logOpen("".concat(e));for(var c=function(e){var t=l[e];0!==e&&(a._materialIndexLOD=e);var s=a._loader._loadMaterialAsync("/materials/".concat(t.index),t,n,r,(function(t){0===e&&o(t)})).then((function(t){if(0!==e){o(t);var n=l[e-1]._data;n[r]&&(a._disposeMaterials([n[r].babylonMaterial]),delete n[r])}return t}));a._materialPromiseLODs[e]=a._materialPromiseLODs[e]||[],0===e?i=s:(a._materialIndexLOD=null,a._materialPromiseLODs[e].push(s))},u=0;u<l.length;u++)c(u);return a._loader.logClose(),i}))},e.prototype._loadUriAsync=function(e,t,n){var r=this;if(null!==this._nodeIndexLOD){this._loader.log("deferred");var o=this._nodeIndexLOD-1;return this._nodeSignalLODs[o]=this._nodeSignalLODs[o]||new l.Deferred,this._nodeSignalLODs[this._nodeIndexLOD-1].promise.then((function(){return r._loader.loadUriAsync(e,t,n)}))}return null!==this._materialIndexLOD?(this._loader.log("deferred"),o=this._materialIndexLOD-1,this._materialSignalLODs[o]=this._materialSignalLODs[o]||new l.Deferred,this._materialSignalLODs[o].promise.then((function(){return r._loader.loadUriAsync(e,t,n)}))):null},e.prototype.loadBufferAsync=function(e,t,n,r){if(this._loader.parent.useRangeRequests&&!t.uri){if(!this._loader.bin)throw new Error("".concat(e,": Uri is missing or the binary glTF is missing its binary chunk"));var o=function(e,t){var o=n,a=o+r-1,s=e[t];return s?(s.start=Math.min(s.start,o),s.end=Math.max(s.end,a)):(s={start:o,end:a,loaded:new l.Deferred},e[t]=s),s.loaded.promise.then((function(e){return new Uint8Array(e.buffer,e.byteOffset+n-s.start,r)}))};return this._loader.log("deferred"),null!==this._nodeIndexLOD?o(this._nodeBufferLODs,this._nodeIndexLOD):null!==this._materialIndexLOD?o(this._materialBufferLODs,this._materialIndexLOD):o(this._bufferLODs,0)}return null},e.prototype._loadBufferLOD=function(e,t){var n=e[t];n&&(this._loader.log("Loading buffer range [".concat(n.start,"-").concat(n.end,"]")),this._loader.bin.readAsync(n.start,n.end-n.start+1).then((function(e){n.loaded.resolve(e)}),(function(e){n.loaded.reject(e)})))},e.prototype._getLODs=function(e,t,n,r){if(this.maxLODsToLoad<=0)throw new Error("maxLODsToLoad must be greater than zero");for(var o=new Array,a=r.length-1;a>=0;a--)if(o.push(v.Get("".concat(e,"/ids/").concat(r[a]),n,r[a])),o.length===this.maxLODsToLoad)return o;return o.push(t),o},e.prototype._disposeTransformNode=function(e){var t=this,n=new Array,r=e.material;r&&n.push(r);for(var o=0,a=e.getChildMeshes();o<a.length;o++){var s=a[o];s.material&&n.push(s.material)}e.dispose();var i=n.filter((function(e){return t._loader.babylonScene.meshes.every((function(t){return t.material!=e}))}));this._disposeMaterials(i)},e.prototype._disposeMaterials=function(e){for(var t={},n=0,r=e;n<r.length;n++){for(var o=0,a=(u=r[n]).getActiveTextures();o<a.length;o++){var s=a[o];t[s.uniqueId]=s}u.dispose()}for(var i in t)for(var l=0,c=this._loader.babylonScene.materials;l<c.length;l++){var u;(u=c[l]).hasTexture(t[i])&&delete t[i]}for(var i in t)t[i].dispose()},e}();g.RegisterExtension(he,(function(e){return new pe(e)}));var _e="MSFT_minecraftMesh",me=function(){function e(e){this.name=_e,this._loader=e,this.enabled=this._loader.isExtensionUsed(_e)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtraAsync(e,t,this.name,(function(o,a){if(a){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(o,": Material type not supported"));var s=r._loader.loadMaterialPropertiesAsync(e,t,n);return n.needAlphaBlending()&&(n.forceDepthWrite=!0,n.separateCullingPass=!0),n.backFaceCulling=n.forceDepthWrite,n.twoSidedLighting=!0,s}return null}))},e}();g.RegisterExtension(_e,(function(e){return new me(e)}));var ye="MSFT_sRGBFactors",be=function(){function e(e){this.name=ye,this._loader=e,this.enabled=this._loader.isExtensionUsed(ye)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtraAsync(e,t,this.name,(function(o,a){if(a){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(o,": Material type not supported"));var s=r._loader.loadMaterialPropertiesAsync(e,t,n);return n.albedoTexture||n.albedoColor.toLinearSpaceToRef(n.albedoColor),n.reflectivityTexture||n.reflectivityColor.toLinearSpaceToRef(n.reflectivityColor),s}return null}))},e}();g.RegisterExtension(ye,(function(e){return new be(e)}));var ve="ExtrasAsMetadata",ge=function(){function e(e){this.name=ve,this.enabled=!0,this._loader=e}return e.prototype._assignExtras=function(e,t){if(t.extras&&Object.keys(t.extras).length>0){var n=e.metadata=e.metadata||{};(n.gltf=n.gltf||{}).extras=t.extras}},e.prototype.dispose=function(){this._loader=null},e.prototype.loadNodeAsync=function(e,t,n){var r=this;return this._loader.loadNodeAsync(e,t,(function(e){r._assignExtras(e,t),n(e)}))},e.prototype.loadCameraAsync=function(e,t,n){var r=this;return this._loader.loadCameraAsync(e,t,(function(e){r._assignExtras(e,t),n(e)}))},e.prototype.createMaterial=function(e,t,n){var r=this._loader.createMaterial(e,t,n);return this._assignExtras(r,t),r},e}();g.RegisterExtension(ve,(function(e){return new ge(e)}));var Ae=void 0!==r.g?r.g:"undefined"!=typeof window?window:void 0;if(void 0!==Ae){Ae.BABYLON=Ae.BABYLON||{};var xe=Ae.BABYLON;xe.GLTF2=xe.GLTF2||{},xe.GLTF2.Loader=xe.GLTF2.Loader||{},xe.GLTF2.Loader.Extensions=xe.GLTF2.Loader.Extensions||{};var Te=[];for(var Ee in n)xe.GLTF2.Loader.Extensions[Ee]=n[Ee],Te.push(Ee);for(var Ee in a)xe.GLTF2.Loader[Ee]=a[Ee],Te.push(Ee);for(var Ee in s)Te.indexOf(Ee)>-1||(xe.GLTF2[Ee]=s[Ee])}const Me=i})(),o.default})()}));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("babylonjs")):"function"==typeof define&&define.amd?define("babylonjs-loaders",["babylonjs"],t):"object"==typeof exports?exports["babylonjs-loaders"]=t(require("babylonjs")):e.LOADERS=t(e.BABYLON)}("undefined"!=typeof self?self:"undefined"!=typeof global?global:this,(function(e){return(()=>{"use strict";var t={520:t=>{t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{r.d(o,{default:()=>Le});var e={};r.r(e),r.d(e,{GLTFValidation:()=>p});var t={};r.r(t),r.d(t,{GLTFFileLoader:()=>m,GLTFLoaderAnimationStartMode:()=>f,GLTFLoaderCoordinateSystemMode:()=>d,GLTFLoaderState:()=>h});var n={};r.r(n),r.d(n,{EXT_lights_image_based:()=>x,EXT_mesh_gpu_instancing:()=>E,EXT_meshopt_compression:()=>O,EXT_texture_webp:()=>w,ExtrasAsMetadata:()=>xe,KHR_draco_mesh_compression:()=>S,KHR_lights:()=>P,KHR_materials_clearcoat:()=>N,KHR_materials_emissive_strength:()=>K,KHR_materials_ior:()=>z,KHR_materials_iridescence:()=>k,KHR_materials_pbrSpecularGlossiness:()=>I,KHR_materials_sheen:()=>j,KHR_materials_specular:()=>W,KHR_materials_translucency:()=>ne,KHR_materials_transmission:()=>ee,KHR_materials_unlit:()=>F,KHR_materials_variants:()=>Q,KHR_materials_volume:()=>oe,KHR_mesh_quantization:()=>se,KHR_texture_basisu:()=>le,KHR_texture_transform:()=>ue,KHR_xmp_json_ld:()=>fe,MSFT_audio_emitter:()=>pe,MSFT_lod:()=>me,MSFT_minecraftMesh:()=>be,MSFT_sRGBFactors:()=>ge});var a={};r.r(a);var s={};r.r(s),r.d(s,{ArrayItem:()=>v,EXT_lights_image_based:()=>x,EXT_mesh_gpu_instancing:()=>E,EXT_meshopt_compression:()=>O,EXT_texture_webp:()=>w,ExtrasAsMetadata:()=>xe,GLTFLoader:()=>g,KHR_draco_mesh_compression:()=>S,KHR_lights:()=>P,KHR_materials_clearcoat:()=>N,KHR_materials_emissive_strength:()=>K,KHR_materials_ior:()=>z,KHR_materials_iridescence:()=>k,KHR_materials_pbrSpecularGlossiness:()=>I,KHR_materials_sheen:()=>j,KHR_materials_specular:()=>W,KHR_materials_translucency:()=>ne,KHR_materials_transmission:()=>ee,KHR_materials_unlit:()=>F,KHR_materials_variants:()=>Q,KHR_materials_volume:()=>oe,KHR_mesh_quantization:()=>se,KHR_texture_basisu:()=>le,KHR_texture_transform:()=>ue,KHR_xmp_json_ld:()=>fe,MSFT_audio_emitter:()=>pe,MSFT_lod:()=>me,MSFT_minecraftMesh:()=>be,MSFT_sRGBFactors:()=>ge});var i={};r.r(i),r.d(i,{GLTF2:()=>s,GLTFFileLoader:()=>m,GLTFLoaderAnimationStartMode:()=>f,GLTFLoaderCoordinateSystemMode:()=>d,GLTFLoaderState:()=>h,GLTFValidation:()=>p});var l=r(520);function c(e,t,n,r){var o={externalResourceFunction:function(e){return r(e).then((function(e){return new Uint8Array(e)}))}};return n&&(o.uri="file:"===t?n:t+n),e instanceof ArrayBuffer?GLTFValidator.validateBytes(new Uint8Array(e),o):GLTFValidator.validateString(e,o)}function u(){var e=[];onmessage=function(t){var n=t.data;switch(n.id){case"init":importScripts(n.url);break;case"validate":c(n.data,n.rootUrl,n.fileName,(function(t){return new Promise((function(n,r){var o=e.length;e.push({resolve:n,reject:r}),postMessage({id:"getExternalResource",index:o,uri:t})}))})).then((function(e){postMessage({id:"validate.resolve",value:e})}),(function(e){postMessage({id:"validate.reject",reason:e})}));break;case"getExternalResource.resolve":e[n.index].resolve(n.value);break;case"getExternalResource.reject":e[n.index].reject(n.reason)}}}var d,f,h,p=function(){function e(){}return e.ValidateAsync=function(e,t,n,r){var o=this;return"function"==typeof Worker?new Promise((function(a,s){var i="".concat(c,"(").concat(u,")()"),l=URL.createObjectURL(new Blob([i],{type:"application/javascript"})),d=new Worker(l),f=function(e){d.removeEventListener("error",f),d.removeEventListener("message",h),s(e)},h=function(e){var t=e.data;switch(t.id){case"getExternalResource":r(t.uri).then((function(e){d.postMessage({id:"getExternalResource.resolve",index:t.index,value:e},[e])}),(function(e){d.postMessage({id:"getExternalResource.reject",index:t.index,reason:e})}));break;case"validate.resolve":d.removeEventListener("error",f),d.removeEventListener("message",h),a(t.value),d.terminate();break;case"validate.reject":d.removeEventListener("error",f),d.removeEventListener("message",h),s(t.reason),d.terminate()}};d.addEventListener("error",f),d.addEventListener("message",h),d.postMessage({id:"init",url:o.Configuration.url}),d.postMessage({id:"validate",data:e,rootUrl:t,fileName:n})})):(this._LoadScriptPromise||(this._LoadScriptPromise=l.Tools.LoadScriptAsync(this.Configuration.url)),this._LoadScriptPromise.then((function(){return c(e,t,n,r)})))},e.Configuration={url:"https://preview.babylonjs.com/gltf_validator.js"},e}();function _(e,t,n){try{return Promise.resolve(new Uint8Array(e,t,n))}catch(e){return Promise.reject(e)}}!function(e){e[e.AUTO=0]="AUTO",e[e.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED"}(d||(d={})),function(e){e[e.NONE=0]="NONE",e[e.FIRST=1]="FIRST",e[e.ALL=2]="ALL"}(f||(f={})),function(e){e[e.LOADING=0]="LOADING",e[e.READY=1]="READY",e[e.COMPLETE=2]="COMPLETE"}(h||(h={}));var m=function(){function e(){this.onParsedObservable=new l.Observable,this.coordinateSystemMode=d.AUTO,this.animationStartMode=f.FIRST,this.compileMaterials=!1,this.useClipPlane=!1,this.compileShadowGenerators=!1,this.transparencyAsCoverage=!1,this.useRangeRequests=!1,this.createInstances=!0,this.alwaysComputeBoundingBox=!1,this.loadAllMaterials=!1,this.loadOnlyMaterials=!1,this.skipMaterials=!1,this.useSRGBBuffers=!0,this.targetFps=60,this.alwaysComputeSkeletonRootNode=!1,this.preprocessUrlAsync=function(e){return Promise.resolve(e)},this.onMeshLoadedObservable=new l.Observable,this.onTextureLoadedObservable=new l.Observable,this.onMaterialLoadedObservable=new l.Observable,this.onCameraLoadedObservable=new l.Observable,this.onCompleteObservable=new l.Observable,this.onErrorObservable=new l.Observable,this.onDisposeObservable=new l.Observable,this.onExtensionLoadedObservable=new l.Observable,this.validate=!1,this.onValidatedObservable=new l.Observable,this._loader=null,this._state=null,this._requests=new Array,this.name="gltf",this.extensions={".gltf":{isBinary:!1},".glb":{isBinary:!0}},this.onLoaderStateChangedObservable=new l.Observable,this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled}return Object.defineProperty(e.prototype,"onParsed",{set:function(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),this._onParsedObserver=this.onParsedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMeshLoaded",{set:function(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onTextureLoaded",{set:function(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMaterialLoaded",{set:function(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onCameraLoaded",{set:function(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onComplete",{set:function(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onError",{set:function(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDispose",{set:function(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onExtensionLoaded",{set:function(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"loggingEnabled",{get:function(){return this._loggingEnabled},set:function(e){this._loggingEnabled!==e&&(this._loggingEnabled=e,this._loggingEnabled?this._log=this._logEnabled:this._log=this._logDisabled)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"capturePerformanceCounters",{get:function(){return this._capturePerformanceCounters},set:function(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))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onValidated",{set:function(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){this._loader&&(this._loader.dispose(),this._loader=null);for(var e=0,t=this._requests;e<t.length;e++)t[e].abort();this._requests.length=0,delete this._progressCallback,this.preprocessUrlAsync=function(e){return Promise.resolve(e)},this.onMeshLoadedObservable.clear(),this.onTextureLoadedObservable.clear(),this.onMaterialLoadedObservable.clear(),this.onCameraLoadedObservable.clear(),this.onCompleteObservable.clear(),this.onExtensionLoadedObservable.clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()},e.prototype.loadFile=function(e,t,n,r,o,a){var s=this;this._progressCallback=r;var i=t.name?"file:":l.Tools.GetFolderPath(t),c=t.name||l.Tools.GetFilename(t);if(o){if(this.useRangeRequests){this.validate&&l.Logger.Warn("glTF validation is not supported when range requests are enabled");var u={abort:function(){},onCompleteObservable:new l.Observable},d={readAsync:function(n,r){return new Promise((function(o,a){s._loadFile(e,t,(function(e){o(new Uint8Array(e))}),!0,(function(e){a(e)}),(function(e){e.setRequestHeader("Range","bytes=".concat(n,"-").concat(n+r-1))}))}))},byteLength:0};return this._unpackBinaryAsync(new l.DataReader(d)).then((function(e){u.onCompleteObservable.notifyObservers(u),n(e)}),a?function(e){return a(void 0,e)}:void 0),u}return this._loadFile(e,t,(function(t){s._validate(e,t,i,c),s._unpackBinaryAsync(new l.DataReader({readAsync:function(e,n){return _(t,e,n)},byteLength:t.byteLength})).then((function(e){n(e)}),a?function(e){return a(void 0,e)}:void 0)}),!0,a)}return this._loadFile(e,t,(function(t){s._validate(e,t,i,c),n({json:s._parseJson(t)})}),o,a)},e.prototype.importMeshAsync=function(e,t,n,r,o,a){var s=this;return Promise.resolve().then((function(){return s.onParsedObservable.notifyObservers(n),s.onParsedObservable.clear(),s._log("Loading ".concat(a||"")),s._loader=s._getLoader(n),s._loader.importMeshAsync(e,t,null,n,r,o,a)}))},e.prototype.loadAsync=function(e,t,n,r,o){var a=this;return Promise.resolve().then((function(){return a.onParsedObservable.notifyObservers(t),a.onParsedObservable.clear(),a._log("Loading ".concat(o||"")),a._loader=a._getLoader(t),a._loader.loadAsync(e,t,n,r,o)}))},e.prototype.loadAssetContainerAsync=function(e,t,n,r,o){var a=this;return Promise.resolve().then((function(){a.onParsedObservable.notifyObservers(t),a.onParsedObservable.clear(),a._log("Loading ".concat(o||"")),a._loader=a._getLoader(t);var s=new l.AssetContainer(e),i=[];a.onMaterialLoadedObservable.add((function(e){i.push(e)}));var c=[];a.onTextureLoadedObservable.add((function(e){c.push(e)}));var u=[];return a.onCameraLoadedObservable.add((function(e){u.push(e)})),a._loader.importMeshAsync(null,e,s,t,n,r,o).then((function(e){return Array.prototype.push.apply(s.geometries,e.geometries),Array.prototype.push.apply(s.meshes,e.meshes),Array.prototype.push.apply(s.particleSystems,e.particleSystems),Array.prototype.push.apply(s.skeletons,e.skeletons),Array.prototype.push.apply(s.animationGroups,e.animationGroups),Array.prototype.push.apply(s.materials,i),Array.prototype.push.apply(s.textures,c),Array.prototype.push.apply(s.lights,e.lights),Array.prototype.push.apply(s.transformNodes,e.transformNodes),Array.prototype.push.apply(s.cameras,u),s}))}))},e.prototype.canDirectLoad=function(t){return-1!==t.indexOf("asset")&&-1!==t.indexOf("version")||l.StringTools.StartsWith(t,"data:base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(t,"data:;base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(t,"data:application/octet-stream;base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(t,"data:model/gltf-binary;base64,"+e._MagicBase64Encoded)},e.prototype.directLoad=function(t,n){if(l.StringTools.StartsWith(n,"base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(n,";base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(n,"application/octet-stream;base64,"+e._MagicBase64Encoded)||l.StringTools.StartsWith(n,"model/gltf-binary;base64,"+e._MagicBase64Encoded)){var r=(0,l.DecodeBase64UrlToBinary)(n);return this._validate(t,r),this._unpackBinaryAsync(new l.DataReader({readAsync:function(e,t){return _(r,e,t)},byteLength:r.byteLength}))}return this._validate(t,n),Promise.resolve({json:this._parseJson(n)})},e.prototype.createPlugin=function(){return new e},Object.defineProperty(e.prototype,"loaderState",{get:function(){return this._state},enumerable:!1,configurable:!0}),e.prototype.whenCompleteAsync=function(){var e=this;return new Promise((function(t,n){e.onCompleteObservable.addOnce((function(){t()})),e.onErrorObservable.addOnce((function(e){n(e)}))}))},e.prototype._setState=function(e){this._state!==e&&(this._state=e,this.onLoaderStateChangedObservable.notifyObservers(this._state),this._log(h[this._state]))},e.prototype._loadFile=function(e,t,n,r,o,a){var s=this,i=e._loadFile(t,n,(function(e){s._onProgress(e,i)}),!0,r,o,a);return i.onCompleteObservable.add((function(e){s._requests.splice(s._requests.indexOf(e),1)})),this._requests.push(i),i},e.prototype._onProgress=function(e,t){if(this._progressCallback){t._lengthComputable=e.lengthComputable,t._loaded=e.loaded,t._total=e.total;for(var n=!0,r=0,o=0,a=0,s=this._requests;a<s.length;a++){var i=s[a];if(void 0===i._lengthComputable||void 0===i._loaded||void 0===i._total)return;n=n&&i._lengthComputable,r+=i._loaded,o+=i._total}this._progressCallback({lengthComputable:n,loaded:r,total:n?o:0})}},e.prototype._validate=function(e,t,n,r){var o=this;void 0===n&&(n=""),void 0===r&&(r=""),this.validate&&(this._startPerformanceCounter("Validate JSON"),p.ValidateAsync(t,n,r,(function(t){return o.preprocessUrlAsync(n+t).then((function(t){return e._loadFileAsync(t,void 0,!0,!0)}))})).then((function(e){o._endPerformanceCounter("Validate JSON"),o.onValidatedObservable.notifyObservers(e),o.onValidatedObservable.clear()}),(function(e){o._endPerformanceCounter("Validate JSON"),l.Tools.Warn("Failed to validate: ".concat(e.message)),o.onValidatedObservable.clear()})))},e.prototype._getLoader=function(t){var n=t.json.asset||{};this._log("Asset version: ".concat(n.version)),n.minVersion&&this._log("Asset minimum version: ".concat(n.minVersion)),n.generator&&this._log("Asset generator: ".concat(n.generator));var r=e._parseVersion(n.version);if(!r)throw new Error("Invalid version: "+n.version);if(void 0!==n.minVersion){var o=e._parseVersion(n.minVersion);if(!o)throw new Error("Invalid minimum version: "+n.minVersion);if(e._compareVersion(o,{major:2,minor:0})>0)throw new Error("Incompatible minimum version: "+n.minVersion)}var a={1:e._CreateGLTF1Loader,2:e._CreateGLTF2Loader}[r.major];if(!a)throw new Error("Unsupported version: "+n.version);return a(this)},e.prototype._parseJson=function(e){this._startPerformanceCounter("Parse JSON"),this._log("JSON length: ".concat(e.length));var t=JSON.parse(e);return this._endPerformanceCounter("Parse JSON"),t},e.prototype._unpackBinaryAsync=function(e){var t=this;return this._startPerformanceCounter("Unpack Binary"),e.loadAsync(20).then((function(){var n=e.readUint32();if(1179937895!==n)throw new l.RuntimeError("Unexpected magic: "+n,l.ErrorCodes.GLTFLoaderUnexpectedMagicError);var r=e.readUint32();t.loggingEnabled&&t._log("Binary version: ".concat(r));var o,a=e.readUint32();if(0!==e.buffer.byteLength&&a!==e.buffer.byteLength)throw new Error("Length in header does not match actual data length: ".concat(a," != ").concat(e.buffer.byteLength));switch(r){case 1:o=t._unpackBinaryV1Async(e,a);break;case 2:o=t._unpackBinaryV2Async(e,a);break;default:throw new Error("Unsupported version: "+r)}return t._endPerformanceCounter("Unpack Binary"),o}))},e.prototype._unpackBinaryV1Async=function(e,t){var n=e.readUint32(),r=e.readUint32();if(0!==r)throw new Error("Unexpected content format: ".concat(r));var o=t-e.byteOffset,a={json:this._parseJson(e.readString(n)),bin:null};if(0!==o){var s=e.byteOffset;a.bin={readAsync:function(t,n){return e.buffer.readAsync(s+t,n)},byteLength:o}}return Promise.resolve(a)},e.prototype._unpackBinaryV2Async=function(e,t){var n=this,r=1313821514,o=e.readUint32();if(e.readUint32()!==r)throw new Error("First chunk format is not JSON");return e.byteOffset+o===t?e.loadAsync(o).then((function(){return{json:n._parseJson(e.readString(o)),bin:null}})):e.loadAsync(o+8).then((function(){var a={json:n._parseJson(e.readString(o)),bin:null},s=function(){var n=e.readUint32();switch(e.readUint32()){case r:throw new Error("Unexpected JSON chunk");case 5130562:var o=e.byteOffset;a.bin={readAsync:function(t,n){return e.buffer.readAsync(o+t,n)},byteLength:n},e.skipBytes(n);break;default:e.skipBytes(n)}return e.byteOffset!==t?e.loadAsync(8).then(s):Promise.resolve(a)};return s()}))},e._parseVersion=function(e){if("1.0"===e||"1.0.1"===e)return{major:1,minor:0};var t=(e+"").match(/^(\d+)\.(\d+)/);return t?{major:parseInt(t[1]),minor:parseInt(t[2])}:null},e._compareVersion=function(e,t){return e.major>t.major?1:e.major<t.major?-1:e.minor>t.minor?1:e.minor<t.minor?-1:0},e.prototype._logOpen=function(e){this._log(e),this._logIndentLevel++},e.prototype._logClose=function(){--this._logIndentLevel},e.prototype._logEnabled=function(t){var n=e._logSpaces.substr(0,2*this._logIndentLevel);l.Logger.Log("".concat(n).concat(t))},e.prototype._logDisabled=function(e){},e.prototype._startPerformanceCounterEnabled=function(e){l.Tools.StartPerformanceCounter(e)},e.prototype._startPerformanceCounterDisabled=function(e){},e.prototype._endPerformanceCounterEnabled=function(e){l.Tools.EndPerformanceCounter(e)},e.prototype._endPerformanceCounterDisabled=function(e){},e.IncrementalLoading=!0,e.HomogeneousCoordinates=!1,e._MagicBase64Encoded="Z2xURg",e._logSpaces=" ",e}();l.SceneLoader&&l.SceneLoader.RegisterPlugin(new m);var y=void 0!==r.g?r.g:"undefined"!=typeof window?window:void 0;if(void 0!==y){for(var b in y.BABYLON=y.BABYLON||{},t)y.BABYLON[b]=t[b];for(var b in e)y.BABYLON[b]=e[b]}var v=function(){function e(){}return e.Get=function(e,t,n){if(!t||null==n||!t[n])throw new Error("".concat(e,": Failed to find index (").concat(n,")"));return t[n]},e.Assign=function(e){if(e)for(var t=0;t<e.length;t++)e[t].index=t},e}(),g=function(){function e(e){this._completePromises=new Array,this._assetContainer=null,this._babylonLights=[],this._disableInstancedMesh=0,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._parent=e}return e.RegisterExtension=function(t,n){e.UnregisterExtension(t)&&l.Logger.Warn("Extension with the name '".concat(t,"' already exists")),e._RegisteredExtensions[t]={factory:n}},e.UnregisterExtension=function(t){return!!e._RegisteredExtensions[t]&&(delete e._RegisteredExtensions[t],!0)},Object.defineProperty(e.prototype,"gltf",{get:function(){if(!this._gltf)throw new Error("glTF JSON is not available");return this._gltf},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bin",{get:function(){return this._bin},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"babylonScene",{get:function(){if(!this._babylonScene)throw new Error("Scene is not available");return this._babylonScene},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"rootBabylonMesh",{get:function(){return this._rootBabylonMesh},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){this._disposed||(this._disposed=!0,this._completePromises.length=0,this._extensions.forEach((function(e){return e.dispose&&e.dispose()})),this._extensions.length=0,this._gltf=null,this._bin=null,this._babylonScene=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions.length=0,this._parent.dispose())},e.prototype.importMeshAsync=function(e,t,n,r,o,a,s){var i=this;return void 0===s&&(s=""),Promise.resolve().then((function(){i._babylonScene=t,i._assetContainer=n,i._loadData(r);var a=null;if(e){var l={};if(i._gltf.nodes)for(var c=0,u=i._gltf.nodes;c<u.length;c++){var d=u[c];d.name&&(l[d.name]=d.index)}a=(e instanceof Array?e:[e]).map((function(e){var t=l[e];if(void 0===t)throw new Error("Failed to find node '".concat(e,"'"));return t}))}return i._loadAsync(o,s,a,(function(){return{meshes:i._getMeshes(),particleSystems:[],skeletons:i._getSkeletons(),animationGroups:i._getAnimationGroups(),lights:i._babylonLights,transformNodes:i._getTransformNodes(),geometries:i._getGeometries()}}))}))},e.prototype.loadAsync=function(e,t,n,r,o){var a=this;return void 0===o&&(o=""),Promise.resolve().then((function(){return a._babylonScene=e,a._loadData(t),a._loadAsync(n,o,null,(function(){}))}))},e.prototype._loadAsync=function(e,t,n,r){var o=this;return Promise.resolve().then((function(){o._rootUrl=e,o._uniqueRootUrl=!l.StringTools.StartsWith(e,"file:")&&t?e:"".concat(e).concat(Date.now(),"/"),o._fileName=t,o._loadExtensions(),o._checkExtensions();var a="".concat(h[h.LOADING]," => ").concat(h[h.READY]),s="".concat(h[h.LOADING]," => ").concat(h[h.COMPLETE]);o._parent._startPerformanceCounter(a),o._parent._startPerformanceCounter(s),o._parent._setState(h.LOADING),o._extensionsOnLoading();var i=new Array,c=o._babylonScene.blockMaterialDirtyMechanism;if(o._babylonScene.blockMaterialDirtyMechanism=!0,!o.parent.loadOnlyMaterials)if(n)i.push(o.loadSceneAsync("/nodes",{nodes:n,index:-1}));else if(null!=o._gltf.scene||o._gltf.scenes&&o._gltf.scenes[0]){var u=v.Get("/scene",o._gltf.scenes,o._gltf.scene||0);i.push(o.loadSceneAsync("/scenes/".concat(u.index),u))}if(!o.parent.skipMaterials&&o.parent.loadAllMaterials&&o._gltf.materials)for(var d=0;d<o._gltf.materials.length;++d){var f=o._gltf.materials[d],p="/materials/"+d,_=l.Material.TriangleFillMode;i.push(o._loadMaterialAsync(p,f,null,_,(function(){})))}return o._babylonScene.blockMaterialDirtyMechanism=c,o._parent.compileMaterials&&i.push(o._compileMaterialsAsync()),o._parent.compileShadowGenerators&&i.push(o._compileShadowGeneratorsAsync()),Promise.all(i).then((function(){return o._rootBabylonMesh&&o._rootBabylonMesh.setEnabled(!0),o._extensionsOnReady(),o._parent._setState(h.READY),o._startAnimations(),r()})).then((function(e){return o._parent._endPerformanceCounter(a),l.Tools.SetImmediate((function(){o._disposed||Promise.all(o._completePromises).then((function(){o._parent._endPerformanceCounter(s),o._parent._setState(h.COMPLETE),o._parent.onCompleteObservable.notifyObservers(void 0),o._parent.onCompleteObservable.clear(),o.dispose()}),(function(e){o._parent.onErrorObservable.notifyObservers(e),o._parent.onErrorObservable.clear(),o.dispose()}))})),e}))})).catch((function(e){throw o._disposed||(o._parent.onErrorObservable.notifyObservers(e),o._parent.onErrorObservable.clear(),o.dispose()),e}))},e.prototype._loadData=function(e){if(this._gltf=e.json,this._setupData(),e.bin){var t=this._gltf.buffers;if(t&&t[0]&&!t[0].uri){var n=t[0];(n.byteLength<e.bin.byteLength-3||n.byteLength>e.bin.byteLength)&&l.Logger.Warn("Binary buffer length (".concat(n.byteLength,") from JSON does not match chunk length (").concat(e.bin.byteLength,")")),this._bin=e.bin}else l.Logger.Warn("Unexpected BIN chunk")}},e.prototype._setupData=function(){if(v.Assign(this._gltf.accessors),v.Assign(this._gltf.animations),v.Assign(this._gltf.buffers),v.Assign(this._gltf.bufferViews),v.Assign(this._gltf.cameras),v.Assign(this._gltf.images),v.Assign(this._gltf.materials),v.Assign(this._gltf.meshes),v.Assign(this._gltf.nodes),v.Assign(this._gltf.samplers),v.Assign(this._gltf.scenes),v.Assign(this._gltf.skins),v.Assign(this._gltf.textures),this._gltf.nodes){for(var e={},t=0,n=this._gltf.nodes;t<n.length;t++)if((l=n[t]).children)for(var r=0,o=l.children;r<o.length;r++)e[o[r]]=l.index;for(var a=this._createRootNode(),s=0,i=this._gltf.nodes;s<i.length;s++){var l,c=e[(l=i[s]).index];l.parent=void 0===c?a:this._gltf.nodes[c]}}},e.prototype._loadExtensions=function(){for(var t in e._RegisteredExtensions){var n=e._RegisteredExtensions[t].factory(this);n.name!==t&&l.Logger.Warn("The name of the glTF loader extension instance does not match the registered name: ".concat(n.name," !== ").concat(t)),this._extensions.push(n),this._parent.onExtensionLoadedObservable.notifyObservers(n)}this._extensions.sort((function(e,t){return(e.order||Number.MAX_VALUE)-(t.order||Number.MAX_VALUE)})),this._parent.onExtensionLoadedObservable.clear()},e.prototype._checkExtensions=function(){if(this._gltf.extensionsRequired)for(var e=function(e){if(!t._extensions.some((function(t){return t.name===e&&t.enabled})))throw new Error("Require extension ".concat(e," is not available"))},t=this,n=0,r=this._gltf.extensionsRequired;n<r.length;n++)e(r[n])},e.prototype._createRootNode=function(){this._babylonScene._blockEntityCollection=!!this._assetContainer,this._rootBabylonMesh=new l.Mesh("__root__",this._babylonScene),this._rootBabylonMesh._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._rootBabylonMesh.setEnabled(!1);var t={_babylonTransformNode:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case d.AUTO:this._babylonScene.useRightHandedSystem||(t.rotation=[0,1,0,0],t.scale=[1,1,-1],e._LoadTransform(t,this._rootBabylonMesh));break;case d.FORCE_RIGHT_HANDED:this._babylonScene.useRightHandedSystem=!0;break;default:throw new Error("Invalid coordinate system mode (".concat(this._parent.coordinateSystemMode,")"))}return this._parent.onMeshLoadedObservable.notifyObservers(this._rootBabylonMesh),t},e.prototype.loadSceneAsync=function(e,t){var n=this,r=this._extensionsLoadSceneAsync(e,t);if(r)return r;var o=new Array;if(this.logOpen("".concat(e," ").concat(t.name||"")),t.nodes)for(var a=0,s=t.nodes;a<s.length;a++){var i=s[a],l=v.Get("".concat(e,"/nodes/").concat(i),this._gltf.nodes,i);o.push(this.loadNodeAsync("/nodes/".concat(l.index),l,(function(e){e.parent=n._rootBabylonMesh})))}for(var c=0,u=this._postSceneLoadActions;c<u.length;c++)(0,u[c])();return o.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(o).then((function(){}))},e.prototype._forEachPrimitive=function(e,t){if(e._primitiveBabylonMeshes)for(var n=0,r=e._primitiveBabylonMeshes;n<r.length;n++)t(r[n])},e.prototype._getGeometries=function(){var e=new Array,t=this._gltf.nodes;if(t)for(var n=0,r=t;n<r.length;n++){var o=r[n];this._forEachPrimitive(o,(function(t){var n=t.geometry;n&&-1===e.indexOf(n)&&e.push(n)}))}return e},e.prototype._getMeshes=function(){var e=new Array;this._rootBabylonMesh&&e.push(this._rootBabylonMesh);var t=this._gltf.nodes;if(t)for(var n=0,r=t;n<r.length;n++){var o=r[n];this._forEachPrimitive(o,(function(t){e.push(t)}))}return e},e.prototype._getTransformNodes=function(){var e=new Array,t=this._gltf.nodes;if(t)for(var n=0,r=t;n<r.length;n++){var o=r[n];o._babylonTransformNode&&"TransformNode"===o._babylonTransformNode.getClassName()&&e.push(o._babylonTransformNode),o._babylonTransformNodeForSkin&&e.push(o._babylonTransformNodeForSkin)}return e},e.prototype._getSkeletons=function(){var e=new Array,t=this._gltf.skins;if(t)for(var n=0,r=t;n<r.length;n++){var o=r[n];o._data&&e.push(o._data.babylonSkeleton)}return e},e.prototype._getAnimationGroups=function(){var e=new Array,t=this._gltf.animations;if(t)for(var n=0,r=t;n<r.length;n++){var o=r[n];o._babylonAnimationGroup&&e.push(o._babylonAnimationGroup)}return e},e.prototype._startAnimations=function(){switch(this._parent.animationStartMode){case f.NONE:break;case f.FIRST:0!==(e=this._getAnimationGroups()).length&&e[0].start(!0);break;case f.ALL:for(var e,t=0,n=e=this._getAnimationGroups();t<n.length;t++)n[t].start(!0);break;default:return void l.Logger.Error("Invalid animation start mode (".concat(this._parent.animationStartMode,")"))}},e.prototype.loadNodeAsync=function(t,n,r){var o=this;void 0===r&&(r=function(){});var a=this._extensionsLoadNodeAsync(t,n,r);if(a)return a;if(n._babylonTransformNode)throw new Error("".concat(t,": Invalid recursive node hierarchy"));var s=new Array;this.logOpen("".concat(t," ").concat(n.name||""));var i=function(a){if(e.AddPointerMetadata(a,t),e._LoadTransform(n,a),null!=n.camera){var i=v.Get("".concat(t,"/camera"),o._gltf.cameras,n.camera);s.push(o.loadCameraAsync("/cameras/".concat(i.index),i,(function(e){e.parent=a})))}if(n.children)for(var l=0,c=n.children;l<c.length;l++){var u=c[l],d=v.Get("".concat(t,"/children/").concat(u),o._gltf.nodes,u);s.push(o.loadNodeAsync("/nodes/".concat(d.index),d,(function(e){e.parent=a})))}r(a)};if(null==n.mesh||null!=n.skin){var c=n.name||"node".concat(n.index);this._babylonScene._blockEntityCollection=!!this._assetContainer;var u=new l.TransformNode(c,this._babylonScene);u._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,null==n.mesh?n._babylonTransformNode=u:n._babylonTransformNodeForSkin=u,i(u)}if(null!=n.mesh)if(null==n.skin){var d=v.Get("".concat(t,"/mesh"),this._gltf.meshes,n.mesh);s.push(this._loadMeshAsync("/meshes/".concat(d.index),n,d,i))}else d=v.Get("".concat(t,"/mesh"),this._gltf.meshes,n.mesh),s.push(this._loadMeshAsync("/meshes/".concat(d.index),n,d,(function(e){e.metadata=n._babylonTransformNodeForSkin.metadata;var r=v.Get("".concat(t,"/skin"),o._gltf.skins,n.skin);s.push(o._loadSkinAsync("/skins/".concat(r.index),n,r,(function(t){o._forEachPrimitive(n,(function(e){e.skeleton=t})),o._postSceneLoadActions.push((function(){if(null!=r.skeleton){var t=v.Get("/skins/".concat(r.index,"/skeleton"),o._gltf.nodes,r.skeleton);e.parent=t.parent._babylonTransformNode}else e.parent=o._rootBabylonMesh}))})))})));return this.logClose(),Promise.all(s).then((function(){return o._forEachPrimitive(n,(function(e){e.geometry&&e.geometry.useBoundingInfoFromGeometry?e._updateBoundingInfo():e.refreshBoundingInfo(!0)})),n._babylonTransformNode}))},e.prototype._loadMeshAsync=function(e,t,n,r){var o=n.primitives;if(!o||!o.length)throw new Error("".concat(e,": Primitives are missing"));null==o[0].index&&v.Assign(o);var a=new Array;this.logOpen("".concat(e," ").concat(n.name||""));var s=t.name||"node".concat(t.index);if(1===o.length){var i=n.primitives[0];a.push(this._loadMeshPrimitiveAsync("".concat(e,"/primitives/").concat(i.index),s,t,n,i,(function(e){t._babylonTransformNode=e,t._primitiveBabylonMeshes=[e]})))}else{this._babylonScene._blockEntityCollection=!!this._assetContainer,t._babylonTransformNode=new l.TransformNode(s,this._babylonScene),t._babylonTransformNode._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._primitiveBabylonMeshes=[];for(var c=0,u=o;c<u.length;c++)i=u[c],a.push(this._loadMeshPrimitiveAsync("".concat(e,"/primitives/").concat(i.index),"".concat(s,"_primitive").concat(i.index),t,n,i,(function(e){e.parent=t._babylonTransformNode,t._primitiveBabylonMeshes.push(e)})))}return r(t._babylonTransformNode),this.logClose(),Promise.all(a).then((function(){return t._babylonTransformNode}))},e.prototype._loadMeshPrimitiveAsync=function(t,n,r,o,a,s){var i=this,c=this._extensionsLoadMeshPrimitiveAsync(t,n,r,o,a,s);if(c)return c;this.logOpen("".concat(t));var u,d,f=0===this._disableInstancedMesh&&this._parent.createInstances&&null==r.skin&&!o.primitives[0].targets;if(f&&a._instanceData)this._babylonScene._blockEntityCollection=!!this._assetContainer,(u=a._instanceData.babylonSourceMesh.createInstance(n))._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,d=a._instanceData.promise;else{var h=new Array;this._babylonScene._blockEntityCollection=!!this._assetContainer;var p=new l.Mesh(n,this._babylonScene);p._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,p.overrideMaterialSideOrientation=this._babylonScene.useRightHandedSystem?l.Material.CounterClockWiseSideOrientation:l.Material.ClockWiseSideOrientation,this._createMorphTargets(t,r,o,a,p),h.push(this._loadVertexDataAsync(t,a,p).then((function(e){return i._loadMorphTargetsAsync(t,a,p,e).then((function(){i._babylonScene._blockEntityCollection=!!i._assetContainer,e.applyToMesh(p),e._parentContainer=i._assetContainer,i._babylonScene._blockEntityCollection=!1}))})));var _=e._GetDrawMode(t,a.mode);if(null==a.material){var m=this._defaultBabylonMaterialData[_];m||(m=this._createDefaultMaterial("__GLTFLoader._default",_),this._parent.onMaterialLoadedObservable.notifyObservers(m),this._defaultBabylonMaterialData[_]=m),p.material=m}else if(!this.parent.skipMaterials){var y=v.Get("".concat(t,"/material"),this._gltf.materials,a.material);h.push(this._loadMaterialAsync("/materials/".concat(y.index),y,p,_,(function(e){p.material=e})))}d=Promise.all(h),f&&(a._instanceData={babylonSourceMesh:p,promise:d}),u=p}return e.AddPointerMetadata(u,t),this._parent.onMeshLoadedObservable.notifyObservers(u),s(u),this.logClose(),d.then((function(){return u}))},e.prototype._loadVertexDataAsync=function(e,t,n){var r=this,o=this._extensionsLoadVertexDataAsync(e,t,n);if(o)return o;var a=t.attributes;if(!a)throw new Error("".concat(e,": Attributes are missing"));var s=new Array,i=new l.Geometry(n.name,this._babylonScene);if(null==t.indices)n.isUnIndexed=!0;else{var c=v.Get("".concat(e,"/indices"),this._gltf.accessors,t.indices);s.push(this._loadIndicesAccessorAsync("/accessors/".concat(c.index),c).then((function(e){i.setIndices(e)})))}var u=function(t,o,c){if(null!=a[t]){n._delayInfo=n._delayInfo||[],-1===n._delayInfo.indexOf(o)&&n._delayInfo.push(o);var u=v.Get("".concat(e,"/attributes/").concat(t),r._gltf.accessors,a[t]);s.push(r._loadVertexAccessorAsync("/accessors/".concat(u.index),u,o).then((function(e){if(e.getKind()===l.VertexBuffer.PositionKind&&!r.parent.alwaysComputeBoundingBox&&!n.skeleton){var t=u.min,o=u.max;if(void 0!==t&&void 0!==o){if(u.normalized&&5126!==u.componentType){var a=1;switch(u.componentType){case 5120:a=127;break;case 5121:a=255;break;case 5122:a=32767;break;case 5123:a=65535}for(var s=0;s<3;++s)t[s]=Math.max(t[s]/a,-1),o[s]=Math.max(o[s]/a,-1)}var c=l.TmpVectors.Vector3[0],d=l.TmpVectors.Vector3[1];c.copyFromFloats.apply(c,t),d.copyFromFloats.apply(d,o),i._boundingInfo=new l.BoundingInfo(c,d),i.useBoundingInfoFromGeometry=!0}}i.setVerticesBuffer(e,u.count)}))),o==l.VertexBuffer.MatricesIndicesExtraKind&&(n.numBoneInfluencers=8),c&&c(u)}};return u("POSITION",l.VertexBuffer.PositionKind),u("NORMAL",l.VertexBuffer.NormalKind),u("TANGENT",l.VertexBuffer.TangentKind),u("TEXCOORD_0",l.VertexBuffer.UVKind),u("TEXCOORD_1",l.VertexBuffer.UV2Kind),u("TEXCOORD_2",l.VertexBuffer.UV3Kind),u("TEXCOORD_3",l.VertexBuffer.UV4Kind),u("TEXCOORD_4",l.VertexBuffer.UV5Kind),u("TEXCOORD_5",l.VertexBuffer.UV6Kind),u("JOINTS_0",l.VertexBuffer.MatricesIndicesKind),u("WEIGHTS_0",l.VertexBuffer.MatricesWeightsKind),u("JOINTS_1",l.VertexBuffer.MatricesIndicesExtraKind),u("WEIGHTS_1",l.VertexBuffer.MatricesWeightsExtraKind),u("COLOR_0",l.VertexBuffer.ColorKind,(function(e){"VEC4"===e.type&&(n.hasVertexAlpha=!0)})),Promise.all(s).then((function(){return i}))},e.prototype._createMorphTargets=function(e,t,n,r,o){if(r.targets){if(null==t._numMorphTargets)t._numMorphTargets=r.targets.length;else if(r.targets.length!==t._numMorphTargets)throw new Error("".concat(e,": Primitives do not have the same number of targets"));var a=n.extras?n.extras.targetNames:null;o.morphTargetManager=new l.MorphTargetManager(o.getScene()),o.morphTargetManager.areUpdatesFrozen=!0;for(var s=0;s<r.targets.length;s++){var i=t.weights?t.weights[s]:n.weights?n.weights[s]:0,c=a?a[s]:"morphTarget".concat(s);o.morphTargetManager.addTarget(new l.MorphTarget(c,i,o.getScene()))}}},e.prototype._loadMorphTargetsAsync=function(e,t,n,r){if(!t.targets)return Promise.resolve();for(var o=new Array,a=n.morphTargetManager,s=0;s<a.numTargets;s++){var i=a.getTarget(s);o.push(this._loadMorphTargetVertexDataAsync("".concat(e,"/targets/").concat(s),r,t.targets[s],i))}return Promise.all(o).then((function(){a.areUpdatesFrozen=!1}))},e.prototype._loadMorphTargetVertexDataAsync=function(e,t,n,r){var o=this,a=new Array,s=function(r,s,i){if(null!=n[r]){var l=t.getVertexBuffer(s);if(l){var c=v.Get("".concat(e,"/").concat(r),o._gltf.accessors,n[r]);a.push(o._loadFloatAccessorAsync("/accessors/".concat(c.index),c).then((function(e){i(l,e)})))}}};return s("POSITION",l.VertexBuffer.PositionKind,(function(e,t){var n=new Float32Array(t.length);e.forEach(t.length,(function(e,r){n[r]=t[r]+e})),r.setPositions(n)})),s("NORMAL",l.VertexBuffer.NormalKind,(function(e,t){var n=new Float32Array(t.length);e.forEach(n.length,(function(e,r){n[r]=t[r]+e})),r.setNormals(n)})),s("TANGENT",l.VertexBuffer.TangentKind,(function(e,t){var n=new Float32Array(t.length/3*4),o=0;e.forEach(t.length/3*4,(function(e,r){(r+1)%4!=0&&(n[o]=t[o]+e,o++)})),r.setTangents(n)})),Promise.all(a).then((function(){}))},e._LoadTransform=function(e,t){if(null==e.skin){var n=l.Vector3.Zero(),r=l.Quaternion.Identity(),o=l.Vector3.One();e.matrix?l.Matrix.FromArray(e.matrix).decompose(o,r,n):(e.translation&&(n=l.Vector3.FromArray(e.translation)),e.rotation&&(r=l.Quaternion.FromArray(e.rotation)),e.scale&&(o=l.Vector3.FromArray(e.scale))),t.position=n,t.rotationQuaternion=r,t.scaling=o}},e.prototype._loadSkinAsync=function(e,t,n,r){var o=this,a=this._extensionsLoadSkinAsync(e,t,n);if(a)return a;if(n._data)return r(n._data.babylonSkeleton),n._data.promise;var s="skeleton".concat(n.index);this._babylonScene._blockEntityCollection=!!this._assetContainer;var i=new l.Skeleton(n.name||s,s,this._babylonScene);i._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._loadBones(e,n,i);var c=this._loadSkinInverseBindMatricesDataAsync(e,n).then((function(e){o._updateBoneMatrices(i,e)}));return n._data={babylonSkeleton:i,promise:c},r(i),c},e.prototype._loadBones=function(e,t,n){if(null==t.skeleton||this._parent.alwaysComputeSkeletonRootNode){var r=this._findSkeletonRootNode("".concat(e,"/joints"),t.joints);if(r)if(void 0===t.skeleton)t.skeleton=r.index;else{var o=v.Get("".concat(e,"/skeleton"),this._gltf.nodes,t.skeleton);o===r||function(e,t){for(;t.parent;t=t.parent)if(t.parent===e)return!0;return!1}(o,r)||(l.Logger.Warn("".concat(e,"/skeleton: Overriding with nearest common ancestor as skeleton node is not a common root")),t.skeleton=r.index)}else l.Logger.Warn("".concat(e,": Failed to find common root"))}for(var a={},s=0,i=t.joints;s<i.length;s++){var c=i[s],u=v.Get("".concat(e,"/joints/").concat(c),this._gltf.nodes,c);this._loadBone(u,t,n,a)}},e.prototype._findSkeletonRootNode=function(e,t){if(0===t.length)return null;for(var n={},r=0,o=t;r<o.length;r++){for(var a=o[r],s=new Array,i=v.Get("".concat(e,"/").concat(a),this._gltf.nodes,a);-1!==i.index;)s.unshift(i),i=i.parent;n[a]=s}for(var l=null,c=0;;++c){if(c>=(s=n[t[0]]).length)return l;i=s[c];for(var u=1;u<t.length;++u)if(c>=(s=n[t[u]]).length||i!==s[c])return l;l=i}},e.prototype._loadBone=function(e,t,n,r){var o=r[e.index];if(o)return o;var a=null;e.index!==t.skeleton&&(e.parent&&-1!==e.parent.index?a=this._loadBone(e.parent,t,n,r):void 0!==t.skeleton&&l.Logger.Warn("/skins/".concat(t.index,"/skeleton: Skeleton node is not a common root")));var s=t.joints.indexOf(e.index);return o=new l.Bone(e.name||"joint".concat(e.index),n,a,this._getNodeMatrix(e),null,null,s),r[e.index]=o,this._postSceneLoadActions.push((function(){o.linkTransformNode(e._babylonTransformNode)})),o},e.prototype._loadSkinInverseBindMatricesDataAsync=function(e,t){if(null==t.inverseBindMatrices)return Promise.resolve(null);var n=v.Get("".concat(e,"/inverseBindMatrices"),this._gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync("/accessors/".concat(n.index),n)},e.prototype._updateBoneMatrices=function(e,t){for(var n=0,r=e.bones;n<r.length;n++){var o=r[n],a=l.Matrix.Identity(),s=o._index;t&&-1!==s&&(l.Matrix.FromArrayToRef(t,16*s,a),a.invertToRef(a));var i=o.getParent();i&&a.multiplyToRef(i.getInvertedAbsoluteTransform(),a),o.updateMatrix(a,!1,!1),o._updateDifferenceMatrix(void 0,!1)}},e.prototype._getNodeMatrix=function(e){return e.matrix?l.Matrix.FromArray(e.matrix):l.Matrix.Compose(e.scale?l.Vector3.FromArray(e.scale):l.Vector3.One(),e.rotation?l.Quaternion.FromArray(e.rotation):l.Quaternion.Identity(),e.translation?l.Vector3.FromArray(e.translation):l.Vector3.Zero())},e.prototype.loadCameraAsync=function(t,n,r){void 0===r&&(r=function(){});var o=this._extensionsLoadCameraAsync(t,n,r);if(o)return o;var a=new Array;this.logOpen("".concat(t," ").concat(n.name||"")),this._babylonScene._blockEntityCollection=!!this._assetContainer;var s=new l.FreeCamera(n.name||"camera".concat(n.index),l.Vector3.Zero(),this._babylonScene,!1);switch(s._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,s.ignoreParentScaling=!0,s.rotation=new l.Vector3(0,Math.PI,0),n.type){case"perspective":var i=n.perspective;if(!i)throw new Error("".concat(t,": Camera perspective properties are missing"));s.fov=i.yfov,s.minZ=i.znear,s.maxZ=i.zfar||0;break;case"orthographic":if(!n.orthographic)throw new Error("".concat(t,": Camera orthographic properties are missing"));s.mode=l.Camera.ORTHOGRAPHIC_CAMERA,s.orthoLeft=-n.orthographic.xmag,s.orthoRight=n.orthographic.xmag,s.orthoBottom=-n.orthographic.ymag,s.orthoTop=n.orthographic.ymag,s.minZ=n.orthographic.znear,s.maxZ=n.orthographic.zfar;break;default:throw new Error("".concat(t,": Invalid camera type (").concat(n.type,")"))}return e.AddPointerMetadata(s,t),this._parent.onCameraLoadedObservable.notifyObservers(s),r(s),this.logClose(),Promise.all(a).then((function(){return s}))},e.prototype._loadAnimationsAsync=function(){var e=this._gltf.animations;if(!e)return Promise.resolve();for(var t=new Array,n=0;n<e.length;n++){var r=e[n];t.push(this.loadAnimationAsync("/animations/".concat(r.index),r).then((function(e){0===e.targetedAnimations.length&&e.dispose()})))}return Promise.all(t).then((function(){}))},e.prototype.loadAnimationAsync=function(e,t){var n=this._extensionsLoadAnimationAsync(e,t);if(n)return n;this._babylonScene._blockEntityCollection=!!this._assetContainer;var r=new l.AnimationGroup(t.name||"animation".concat(t.index),this._babylonScene);r._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonAnimationGroup=r;var o=new Array;v.Assign(t.channels),v.Assign(t.samplers);for(var a=0,s=t.channels;a<s.length;a++){var i=s[a];o.push(this._loadAnimationChannelAsync("".concat(e,"/channels/").concat(i.index),e,t,i,r))}return Promise.all(o).then((function(){return r.normalize(0),r}))},e.prototype._loadAnimationChannelAsync=function(e,t,n,r,o,a){var s=this;if(void 0===a&&(a=null),null==r.target.node)return Promise.resolve();var i=v.Get("".concat(e,"/target/node"),this._gltf.nodes,r.target.node);if("weights"===r.target.path&&!i._numMorphTargets||"weights"!==r.target.path&&!i._babylonTransformNode)return Promise.resolve();var c=v.Get("".concat(e,"/sampler"),n.samplers,r.sampler);return this._loadAnimationSamplerAsync("".concat(t,"/samplers/").concat(r.sampler),c).then((function(t){var n,c;switch(r.target.path){case"translation":n="position",c=l.Animation.ANIMATIONTYPE_VECTOR3;break;case"rotation":n="rotationQuaternion",c=l.Animation.ANIMATIONTYPE_QUATERNION;break;case"scale":n="scaling",c=l.Animation.ANIMATIONTYPE_VECTOR3;break;case"weights":n="influence",c=l.Animation.ANIMATIONTYPE_FLOAT;break;default:throw new Error("".concat(e,"/target/path: Invalid value (").concat(r.target.path,")"))}var u,d,f=0;switch(n){case"position":u=function(e){var n=l.Vector3.FromArray(t.output,f).scaleInPlace(e);return f+=3,n};break;case"rotationQuaternion":u=function(e){var n=l.Quaternion.FromArray(t.output,f).scaleInPlace(e);return f+=4,n};break;case"scaling":u=function(e){var n=l.Vector3.FromArray(t.output,f).scaleInPlace(e);return f+=3,n};break;case"influence":u=function(e){for(var n=new Array(i._numMorphTargets),r=0;r<i._numMorphTargets;r++)n[r]=t.output[f++]*e;return n}}switch(t.interpolation){case"STEP":d=function(e){return{frame:t.input[e]*s.parent.targetFps,value:u(1),interpolation:l.AnimationKeyInterpolation.STEP}};break;case"LINEAR":d=function(e){return{frame:t.input[e]*s.parent.targetFps,value:u(1)}};break;case"CUBICSPLINE":var h=1/s.parent.targetFps;d=function(e){return{frame:t.input[e]*s.parent.targetFps,inTangent:u(h),value:u(1),outTangent:u(h)}}}for(var p=new Array(t.input.length),_=0;_<t.input.length;_++)p[_]=d(_);if("influence"===n)for(var m=function(e){var t="".concat(o.name,"_channel").concat(o.targetedAnimations.length),r=new l.Animation(t,n,s.parent.targetFps,c);r.setKeys(p.map((function(t){return{frame:t.frame,inTangent:t.inTangent?t.inTangent[e]:void 0,value:t.value[e],outTangent:t.outTangent?t.outTangent[e]:void 0}}))),s._forEachPrimitive(i,(function(t){var n=t.morphTargetManager.getTarget(e),a=r.clone();n.animations.push(a),o.addTargetedAnimation(a,n)}))},y=0;y<i._numMorphTargets;y++)m(y);else{var b="".concat(o.name,"_channel").concat(o.targetedAnimations.length),v=new l.Animation(b,n,s.parent.targetFps,c);v.setKeys(p),null!=a&&null!=a.animations?(a.animations.push(v),o.addTargetedAnimation(v,a)):(i._babylonTransformNode.animations.push(v),o.addTargetedAnimation(v,i._babylonTransformNode))}}))},e.prototype._loadAnimationSamplerAsync=function(e,t){if(t._data)return t._data;var n=t.interpolation||"LINEAR";switch(n){case"STEP":case"LINEAR":case"CUBICSPLINE":break;default:throw new Error("".concat(e,"/interpolation: Invalid value (").concat(t.interpolation,")"))}var r=v.Get("".concat(e,"/input"),this._gltf.accessors,t.input),o=v.Get("".concat(e,"/output"),this._gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync("/accessors/".concat(r.index),r),this._loadFloatAccessorAsync("/accessors/".concat(o.index),o)]).then((function(e){var t=e[0],r=e[1];return{input:t,interpolation:n,output:r}})),t._data},e.prototype.loadBufferAsync=function(e,t,n,r){var o=this._extensionsLoadBufferAsync(e,t,n,r);if(o)return o;if(!t._data)if(t.uri)t._data=this.loadUriAsync("".concat(e,"/uri"),t,t.uri);else{if(!this._bin)throw new Error("".concat(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((function(t){try{return new Uint8Array(t.buffer,t.byteOffset+n,r)}catch(t){throw new Error("".concat(e,": ").concat(t.message))}}))},e.prototype.loadBufferViewAsync=function(e,t){var n=this._extensionsLoadBufferViewAsync(e,t);if(n)return n;if(t._data)return t._data;var r=v.Get("".concat(e,"/buffer"),this._gltf.buffers,t.buffer);return t._data=this.loadBufferAsync("/buffers/".concat(r.index),r,t.byteOffset||0,t.byteLength),t._data},e.prototype._loadAccessorAsync=function(t,n,r){var o=this;if(n._data)return n._data;var a=e._GetNumComponents(t,n.type),s=a*l.VertexBuffer.GetTypeByteLength(n.componentType),i=a*n.count;if(null==n.bufferView)n._data=Promise.resolve(new r(i));else{var c=v.Get("".concat(t,"/bufferView"),this._gltf.bufferViews,n.bufferView);n._data=this.loadBufferViewAsync("/bufferViews/".concat(c.index),c).then((function(o){if(5126!==n.componentType||n.normalized||c.byteStride&&c.byteStride!==s){var u=new r(i);return l.VertexBuffer.ForEach(o,n.byteOffset||0,c.byteStride||s,a,n.componentType,u.length,n.normalized||!1,(function(e,t){u[t]=e})),u}return e._GetTypedArray(t,n.componentType,o,n.byteOffset,i)}))}if(n.sparse){var u=n.sparse;n._data=n._data.then((function(i){var c=i,d=v.Get("".concat(t,"/sparse/indices/bufferView"),o._gltf.bufferViews,u.indices.bufferView),f=v.Get("".concat(t,"/sparse/values/bufferView"),o._gltf.bufferViews,u.values.bufferView);return Promise.all([o.loadBufferViewAsync("/bufferViews/".concat(d.index),d),o.loadBufferViewAsync("/bufferViews/".concat(f.index),f)]).then((function(o){var i,d=o[0],f=o[1],h=e._GetTypedArray("".concat(t,"/sparse/indices"),u.indices.componentType,d,u.indices.byteOffset,u.count),p=a*u.count;if(5126!==n.componentType||n.normalized){var _=e._GetTypedArray("".concat(t,"/sparse/values"),n.componentType,f,u.values.byteOffset,p);i=new r(p),l.VertexBuffer.ForEach(_,0,s,a,n.componentType,i.length,n.normalized||!1,(function(e,t){i[t]=e}))}else i=e._GetTypedArray("".concat(t,"/sparse/values"),n.componentType,f,u.values.byteOffset,p);for(var m=0,y=0;y<h.length;y++)for(var b=h[y]*a,v=0;v<a;v++)c[b++]=i[m++];return c}))}))}return n._data},e.prototype._loadFloatAccessorAsync=function(e,t){return this._loadAccessorAsync(e,t,Float32Array)},e.prototype._loadIndicesAccessorAsync=function(t,n){if("SCALAR"!==n.type)throw new Error("".concat(t,"/type: Invalid value ").concat(n.type));if(5121!==n.componentType&&5123!==n.componentType&&5125!==n.componentType)throw new Error("".concat(t,"/componentType: Invalid value ").concat(n.componentType));if(n._data)return n._data;if(n.sparse){var r=e._GetTypedArrayConstructor("".concat(t,"/componentType"),n.componentType);n._data=this._loadAccessorAsync(t,n,r)}else{var o=v.Get("".concat(t,"/bufferView"),this._gltf.bufferViews,n.bufferView);n._data=this.loadBufferViewAsync("/bufferViews/".concat(o.index),o).then((function(r){return e._GetTypedArray(t,n.componentType,r,n.byteOffset,n.count)}))}return n._data},e.prototype._loadVertexBufferViewAsync=function(e){var t=this;return e._babylonBuffer||(e._babylonBuffer=this.loadBufferViewAsync("/bufferViews/".concat(e.index),e).then((function(e){return new l.Buffer(t._babylonScene.getEngine(),e,!1)}))),e._babylonBuffer},e.prototype._loadVertexAccessorAsync=function(t,n,r){var o,a=this;if(null===(o=n._babylonVertexBuffer)||void 0===o?void 0:o[r])return n._babylonVertexBuffer[r];if(n._babylonVertexBuffer||(n._babylonVertexBuffer={}),n.sparse)n._babylonVertexBuffer[r]=this._loadFloatAccessorAsync(t,n).then((function(e){return new l.VertexBuffer(a._babylonScene.getEngine(),e,r,!1)}));else if(r===l.VertexBuffer.MatricesIndicesKind||r===l.VertexBuffer.MatricesIndicesExtraKind)n._babylonVertexBuffer[r]=this._loadFloatAccessorAsync(t,n).then((function(e){return new l.VertexBuffer(a._babylonScene.getEngine(),e,r,!1)}));else{var s=v.Get("".concat(t,"/bufferView"),this._gltf.bufferViews,n.bufferView);n._babylonVertexBuffer[r]=this._loadVertexBufferViewAsync(s).then((function(o){var i=e._GetNumComponents(t,n.type);return new l.VertexBuffer(a._babylonScene.getEngine(),o,r,!1,!1,s.byteStride,!1,n.byteOffset,i,n.componentType,n.normalized,!0,1,!0)}))}return n._babylonVertexBuffer[r]},e.prototype._loadMaterialMetallicRoughnessPropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;return t&&(t.baseColorFactor?(n.albedoColor=l.Color3.FromArray(t.baseColorFactor),n.alpha=t.baseColorFactor[3]):n.albedoColor=l.Color3.White(),n.metallic=null==t.metallicFactor?1:t.metallicFactor,n.roughness=null==t.roughnessFactor?1:t.roughnessFactor,t.baseColorTexture&&r.push(this.loadTextureInfoAsync("".concat(e,"/baseColorTexture"),t.baseColorTexture,(function(e){e.name="".concat(n.name," (Base Color)"),n.albedoTexture=e}))),t.metallicRoughnessTexture&&(t.metallicRoughnessTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync("".concat(e,"/metallicRoughnessTexture"),t.metallicRoughnessTexture,(function(e){e.name="".concat(n.name," (Metallic Roughness)"),n.metallicTexture=e}))),n.useMetallnessFromMetallicTextureBlue=!0,n.useRoughnessFromMetallicTextureGreen=!0,n.useRoughnessFromMetallicTextureAlpha=!1)),Promise.all(r).then((function(){}))},e.prototype._loadMaterialAsync=function(t,n,r,o,a){void 0===a&&(a=function(){});var s=this._extensionsLoadMaterialAsync(t,n,r,o,a);if(s)return s;n._data=n._data||{};var i=n._data[o];if(!i){this.logOpen("".concat(t," ").concat(n.name||""));var l=this.createMaterial(t,n,o);i={babylonMaterial:l,babylonMeshes:[],promise:this.loadMaterialPropertiesAsync(t,n,l)},n._data[o]=i,e.AddPointerMetadata(l,t),this._parent.onMaterialLoadedObservable.notifyObservers(l),this.logClose()}return r&&(i.babylonMeshes.push(r),r.onDisposeObservable.addOnce((function(){var e=i.babylonMeshes.indexOf(r);-1!==e&&i.babylonMeshes.splice(e,1)}))),a(i.babylonMaterial),i.promise.then((function(){return i.babylonMaterial}))},e.prototype._createDefaultMaterial=function(e,t){this._babylonScene._blockEntityCollection=!!this._assetContainer;var n=new l.PBRMaterial(e,this._babylonScene);return n._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,n.fillMode=t,n.enableSpecularAntiAliasing=!0,n.useRadianceOverAlpha=!this._parent.transparencyAsCoverage,n.useSpecularOverAlpha=!this._parent.transparencyAsCoverage,n.transparencyMode=l.PBRMaterial.PBRMATERIAL_OPAQUE,n.metallic=1,n.roughness=1,n},e.prototype.createMaterial=function(e,t,n){var r=this._extensionsCreateMaterial(e,t,n);if(r)return r;var o=t.name||"material".concat(t.index);return this._createDefaultMaterial(o,n)},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this._extensionsLoadMaterialPropertiesAsync(e,t,n);if(r)return r;var o=new Array;return o.push(this.loadMaterialBasePropertiesAsync(e,t,n)),t.pbrMetallicRoughness&&o.push(this._loadMaterialMetallicRoughnessPropertiesAsync("".concat(e,"/pbrMetallicRoughness"),t.pbrMetallicRoughness,n)),this.loadMaterialAlphaProperties(e,t,n),Promise.all(o).then((function(){}))},e.prototype.loadMaterialBasePropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;return n.emissiveColor=t.emissiveFactor?l.Color3.FromArray(t.emissiveFactor):new l.Color3(0,0,0),t.doubleSided&&(n.backFaceCulling=!1,n.twoSidedLighting=!0),t.normalTexture&&(t.normalTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync("".concat(e,"/normalTexture"),t.normalTexture,(function(e){e.name="".concat(n.name," (Normal)"),n.bumpTexture=e}))),n.invertNormalMapX=!this._babylonScene.useRightHandedSystem,n.invertNormalMapY=this._babylonScene.useRightHandedSystem,null!=t.normalTexture.scale&&(n.bumpTexture.level=t.normalTexture.scale),n.forceIrradianceInFragment=!0),t.occlusionTexture&&(t.occlusionTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync("".concat(e,"/occlusionTexture"),t.occlusionTexture,(function(e){e.name="".concat(n.name," (Occlusion)"),n.ambientTexture=e}))),n.useAmbientInGrayScale=!0,null!=t.occlusionTexture.strength&&(n.ambientTextureStrength=t.occlusionTexture.strength)),t.emissiveTexture&&r.push(this.loadTextureInfoAsync("".concat(e,"/emissiveTexture"),t.emissiveTexture,(function(e){e.name="".concat(n.name," (Emissive)"),n.emissiveTexture=e}))),Promise.all(r).then((function(){}))},e.prototype.loadMaterialAlphaProperties=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));switch(t.alphaMode||"OPAQUE"){case"OPAQUE":n.transparencyMode=l.PBRMaterial.PBRMATERIAL_OPAQUE;break;case"MASK":n.transparencyMode=l.PBRMaterial.PBRMATERIAL_ALPHATEST,n.alphaCutOff=null==t.alphaCutoff?.5:t.alphaCutoff,n.albedoTexture&&(n.albedoTexture.hasAlpha=!0);break;case"BLEND":n.transparencyMode=l.PBRMaterial.PBRMATERIAL_ALPHABLEND,n.albedoTexture&&(n.albedoTexture.hasAlpha=!0,n.useAlphaFromAlbedoTexture=!0);break;default:throw new Error("".concat(e,"/alphaMode: Invalid value (").concat(t.alphaMode,")"))}},e.prototype.loadTextureInfoAsync=function(t,n,r){var o=this;void 0===r&&(r=function(){});var a=this._extensionsLoadTextureInfoAsync(t,n,r);if(a)return a;if(this.logOpen("".concat(t)),n.texCoord>=6)throw new Error("".concat(t,"/texCoord: Invalid value (").concat(n.texCoord,")"));var s=v.Get("".concat(t,"/index"),this._gltf.textures,n.index);s._textureInfo=n;var i=this._loadTextureAsync("/textures/".concat(n.index),s,(function(a){a.coordinatesIndex=n.texCoord||0,e.AddPointerMetadata(a,t),o._parent.onTextureLoadedObservable.notifyObservers(a),r(a)}));return this.logClose(),i},e.prototype._loadTextureAsync=function(t,n,r){void 0===r&&(r=function(){});var o=this._extensionsLoadTextureAsync(t,n,r);if(o)return o;this.logOpen("".concat(t," ").concat(n.name||""));var a=null==n.sampler?e.DefaultSampler:v.Get("".concat(t,"/sampler"),this._gltf.samplers,n.sampler),s=v.Get("".concat(t,"/source"),this._gltf.images,n.source),i=this._createTextureAsync(t,a,s,r,void 0,!n._textureInfo.nonColorData);return this.logClose(),i},e.prototype._createTextureAsync=function(e,t,n,r,o,a){var s=this;void 0===r&&(r=function(){});var i=this._loadSampler("/samplers/".concat(t.index),t),c=new Array,u=new l.Deferred;this._babylonScene._blockEntityCollection=!!this._assetContainer;var d={noMipmap:i.noMipMaps,invertY:!1,samplingMode:i.samplingMode,onLoad:function(){s._disposed||u.resolve()},onError:function(t,n){s._disposed||u.reject(new Error("".concat(e,": ").concat(n&&n.message?n.message:t||"Failed to load texture")))},mimeType:n.mimeType,loaderOptions:o,useSRGBBuffer:!!a&&this._parent.useSRGBBuffers},f=new l.Texture(null,this._babylonScene,d);return f._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,c.push(u.promise),c.push(this.loadImageAsync("/images/".concat(n.index),n).then((function(e){var t=n.uri||"".concat(s._fileName,"#image").concat(n.index),r="data:".concat(s._uniqueRootUrl).concat(t);f.updateURL(r,e)}))),f.wrapU=i.wrapU,f.wrapV=i.wrapV,r(f),Promise.all(c).then((function(){return f}))},e.prototype._loadSampler=function(t,n){return n._data||(n._data={noMipMaps:9728===n.minFilter||9729===n.minFilter,samplingMode:e._GetTextureSamplingMode(t,n),wrapU:e._GetTextureWrapMode("".concat(t,"/wrapS"),n.wrapS),wrapV:e._GetTextureWrapMode("".concat(t,"/wrapT"),n.wrapT)}),n._data},e.prototype.loadImageAsync=function(e,t){if(!t._data){if(this.logOpen("".concat(e," ").concat(t.name||"")),t.uri)t._data=this.loadUriAsync("".concat(e,"/uri"),t,t.uri);else{var n=v.Get("".concat(e,"/bufferView"),this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync("/bufferViews/".concat(n.index),n)}this.logClose()}return t._data},e.prototype.loadUriAsync=function(t,n,r){var o=this,a=this._extensionsLoadUriAsync(t,n,r);if(a)return a;if(!e._ValidateUri(r))throw new Error("".concat(t,": '").concat(r,"' is invalid"));if((0,l.IsBase64DataUrl)(r)){var s=new Uint8Array((0,l.DecodeBase64UrlToBinary)(r));return this.log("".concat(t,": Decoded ").concat(r.substr(0,64),"... (").concat(s.length," bytes)")),Promise.resolve(s)}return this.log("".concat(t,": Loading ").concat(r)),this._parent.preprocessUrlAsync(this._rootUrl+r).then((function(e){return new Promise((function(n,a){o._parent._loadFile(o._babylonScene,e,(function(e){o._disposed||(o.log("".concat(t,": Loaded ").concat(r," (").concat(e.byteLength," bytes)")),n(new Uint8Array(e)))}),!0,(function(e){a(new l.LoadFileError("".concat(t,": Failed to load '").concat(r,"'").concat(e?": "+e.status+" "+e.statusText:""),e))}))}))}))},e.AddPointerMetadata=function(e,t){var n=e.metadata=e.metadata||{},r=n.gltf=n.gltf||{};(r.pointers=r.pointers||[]).push(t)},e._GetTextureWrapMode=function(e,t){switch(t=null==t?10497:t){case 33071:return l.Texture.CLAMP_ADDRESSMODE;case 33648:return l.Texture.MIRROR_ADDRESSMODE;case 10497:return l.Texture.WRAP_ADDRESSMODE;default:return l.Logger.Warn("".concat(e,": Invalid value (").concat(t,")")),l.Texture.WRAP_ADDRESSMODE}},e._GetTextureSamplingMode=function(e,t){var n=null==t.magFilter?9729:t.magFilter,r=null==t.minFilter?9987:t.minFilter;if(9729===n)switch(r){case 9728:return l.Texture.LINEAR_NEAREST;case 9729:return l.Texture.LINEAR_LINEAR;case 9984:return l.Texture.LINEAR_NEAREST_MIPNEAREST;case 9985:return l.Texture.LINEAR_LINEAR_MIPNEAREST;case 9986:return l.Texture.LINEAR_NEAREST_MIPLINEAR;case 9987:return l.Texture.LINEAR_LINEAR_MIPLINEAR;default:return l.Logger.Warn("".concat(e,"/minFilter: Invalid value (").concat(r,")")),l.Texture.LINEAR_LINEAR_MIPLINEAR}else switch(9728!==n&&l.Logger.Warn("".concat(e,"/magFilter: Invalid value (").concat(n,")")),r){case 9728:return l.Texture.NEAREST_NEAREST;case 9729:return l.Texture.NEAREST_LINEAR;case 9984:return l.Texture.NEAREST_NEAREST_MIPNEAREST;case 9985:return l.Texture.NEAREST_LINEAR_MIPNEAREST;case 9986:return l.Texture.NEAREST_NEAREST_MIPLINEAR;case 9987:return l.Texture.NEAREST_LINEAR_MIPLINEAR;default:return l.Logger.Warn("".concat(e,"/minFilter: Invalid value (").concat(r,")")),l.Texture.NEAREST_NEAREST_MIPNEAREST}},e._GetTypedArrayConstructor=function(e,t){switch(t){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5125:return Uint32Array;case 5126:return Float32Array;default:throw new Error("".concat(e,": Invalid component type ").concat(t))}},e._GetTypedArray=function(t,n,r,o,a){var s=r.buffer;o=r.byteOffset+(o||0);var i=e._GetTypedArrayConstructor("".concat(t,"/componentType"),n),c=l.VertexBuffer.GetTypeByteLength(n);return o%c!=0?(l.Logger.Warn("".concat(t,": Copying buffer as byte offset (").concat(o,") is not a multiple of component type byte length (").concat(c,")")),new i(s.slice(o,o+a*c),0)):new i(s,o,a)},e._GetNumComponents=function(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("".concat(e,": Invalid type (").concat(t,")"))},e._ValidateUri=function(e){return l.Tools.IsBase64(e)||-1===e.indexOf("..")},e._GetDrawMode=function(e,t){switch(null==t&&(t=4),t){case 0:return l.Material.PointListDrawMode;case 1:return l.Material.LineListDrawMode;case 2:return l.Material.LineLoopDrawMode;case 3:return l.Material.LineStripDrawMode;case 4:return l.Material.TriangleFillMode;case 5:return l.Material.TriangleStripDrawMode;case 6:return l.Material.TriangleFanDrawMode}throw new Error("".concat(e,": Invalid mesh primitive mode (").concat(t,")"))},e.prototype._compileMaterialsAsync=function(){var e=this;this._parent._startPerformanceCounter("Compile materials");var t=new Array;if(this._gltf.materials)for(var n=0,r=this._gltf.materials;n<r.length;n++){var o=r[n];if(o._data)for(var a in o._data)for(var s=o._data[a],i=0,l=s.babylonMeshes;i<l.length;i++){var c=l[i];c.computeWorldMatrix(!0);var u=s.babylonMaterial;t.push(u.forceCompilationAsync(c)),t.push(u.forceCompilationAsync(c,{useInstances:!0})),this._parent.useClipPlane&&(t.push(u.forceCompilationAsync(c,{clipPlane:!0})),t.push(u.forceCompilationAsync(c,{clipPlane:!0,useInstances:!0})))}}return Promise.all(t).then((function(){e._parent._endPerformanceCounter("Compile materials")}))},e.prototype._compileShadowGeneratorsAsync=function(){var e=this;this._parent._startPerformanceCounter("Compile shadow generators");for(var t=new Array,n=0,r=this._babylonScene.lights;n<r.length;n++){var o=r[n].getShadowGenerator();o&&t.push(o.forceCompilationAsync())}return Promise.all(t).then((function(){e._parent._endPerformanceCounter("Compile shadow generators")}))},e.prototype._forEachExtensions=function(e){for(var t=0,n=this._extensions;t<n.length;t++){var r=n[t];r.enabled&&e(r)}},e.prototype._applyExtensions=function(e,t,n){for(var r=0,o=this._extensions;r<o.length;r++){var a=o[r];if(a.enabled){var s="".concat(a.name,".").concat(t),i=e;i._activeLoaderExtensionFunctions=i._activeLoaderExtensionFunctions||{};var l=i._activeLoaderExtensionFunctions;if(!l[s]){l[s]=!0;try{var c=n(a);if(c)return c}finally{delete l[s]}}}}return null},e.prototype._extensionsOnLoading=function(){this._forEachExtensions((function(e){return e.onLoading&&e.onLoading()}))},e.prototype._extensionsOnReady=function(){this._forEachExtensions((function(e){return e.onReady&&e.onReady()}))},e.prototype._extensionsLoadSceneAsync=function(e,t){return this._applyExtensions(t,"loadScene",(function(n){return n.loadSceneAsync&&n.loadSceneAsync(e,t)}))},e.prototype._extensionsLoadNodeAsync=function(e,t,n){return this._applyExtensions(t,"loadNode",(function(r){return r.loadNodeAsync&&r.loadNodeAsync(e,t,n)}))},e.prototype._extensionsLoadCameraAsync=function(e,t,n){return this._applyExtensions(t,"loadCamera",(function(r){return r.loadCameraAsync&&r.loadCameraAsync(e,t,n)}))},e.prototype._extensionsLoadVertexDataAsync=function(e,t,n){return this._applyExtensions(t,"loadVertexData",(function(r){return r._loadVertexDataAsync&&r._loadVertexDataAsync(e,t,n)}))},e.prototype._extensionsLoadMeshPrimitiveAsync=function(e,t,n,r,o,a){return this._applyExtensions(o,"loadMeshPrimitive",(function(s){return s._loadMeshPrimitiveAsync&&s._loadMeshPrimitiveAsync(e,t,n,r,o,a)}))},e.prototype._extensionsLoadMaterialAsync=function(e,t,n,r,o){return this._applyExtensions(t,"loadMaterial",(function(a){return a._loadMaterialAsync&&a._loadMaterialAsync(e,t,n,r,o)}))},e.prototype._extensionsCreateMaterial=function(e,t,n){return this._applyExtensions(t,"createMaterial",(function(r){return r.createMaterial&&r.createMaterial(e,t,n)}))},e.prototype._extensionsLoadMaterialPropertiesAsync=function(e,t,n){return this._applyExtensions(t,"loadMaterialProperties",(function(r){return r.loadMaterialPropertiesAsync&&r.loadMaterialPropertiesAsync(e,t,n)}))},e.prototype._extensionsLoadTextureInfoAsync=function(e,t,n){return this._applyExtensions(t,"loadTextureInfo",(function(r){return r.loadTextureInfoAsync&&r.loadTextureInfoAsync(e,t,n)}))},e.prototype._extensionsLoadTextureAsync=function(e,t,n){return this._applyExtensions(t,"loadTexture",(function(r){return r._loadTextureAsync&&r._loadTextureAsync(e,t,n)}))},e.prototype._extensionsLoadAnimationAsync=function(e,t){return this._applyExtensions(t,"loadAnimation",(function(n){return n.loadAnimationAsync&&n.loadAnimationAsync(e,t)}))},e.prototype._extensionsLoadSkinAsync=function(e,t,n){return this._applyExtensions(n,"loadSkin",(function(r){return r._loadSkinAsync&&r._loadSkinAsync(e,t,n)}))},e.prototype._extensionsLoadUriAsync=function(e,t,n){return this._applyExtensions(t,"loadUri",(function(r){return r._loadUriAsync&&r._loadUriAsync(e,t,n)}))},e.prototype._extensionsLoadBufferViewAsync=function(e,t){return this._applyExtensions(t,"loadBufferView",(function(n){return n.loadBufferViewAsync&&n.loadBufferViewAsync(e,t)}))},e.prototype._extensionsLoadBufferAsync=function(e,t,n,r){return this._applyExtensions(t,"loadBuffer",(function(o){return o.loadBufferAsync&&o.loadBufferAsync(e,t,n,r)}))},e.LoadExtensionAsync=function(e,t,n,r){if(!t.extensions)return null;var o=t.extensions[n];return o?r("".concat(e,"/extensions/").concat(n),o):null},e.LoadExtraAsync=function(e,t,n,r){if(!t.extras)return null;var o=t.extras[n];return o?r("".concat(e,"/extras/").concat(n),o):null},e.prototype.isExtensionUsed=function(e){return!!this._gltf.extensionsUsed&&-1!==this._gltf.extensionsUsed.indexOf(e)},e.prototype.logOpen=function(e){this._parent._logOpen(e)},e.prototype.logClose=function(){this._parent._logClose()},e.prototype.log=function(e){this._parent._log(e)},e.prototype.startPerformanceCounter=function(e){this._parent._startPerformanceCounter(e)},e.prototype.endPerformanceCounter=function(e){this._parent._endPerformanceCounter(e)},e._RegisteredExtensions={},e.DefaultSampler={index:-1},e}();m._CreateGLTF2Loader=function(e){return new g(e)};var A="EXT_lights_image_based",x=function(){function e(e){this.name=A,this._loader=e,this.enabled=this._loader.isExtensionUsed(A)}return e.prototype.dispose=function(){this._loader=null,delete this._lights},e.prototype.onLoading=function(){var e=this._loader.gltf.extensions;if(e&&e[this.name]){var t=e[this.name];this._lights=t.lights}},e.prototype.loadSceneAsync=function(e,t){var n=this;return g.LoadExtensionAsync(e,t,this.name,(function(r,o){var a=new Array;a.push(n._loader.loadSceneAsync(e,t)),n._loader.logOpen("".concat(r));var s=v.Get("".concat(r,"/light"),n._lights,o.light);return a.push(n._loadLightAsync("/extensions/".concat(n.name,"/lights/").concat(o.light),s).then((function(e){n._loader.babylonScene.environmentTexture=e}))),n._loader.logClose(),Promise.all(a).then((function(){}))}))},e.prototype._loadLightAsync=function(e,t){var n=this;if(!t._loaded){var r=new Array;this._loader.logOpen("".concat(e));for(var o=new Array(t.specularImages.length),a=function(n){var a=t.specularImages[n];o[n]=new Array(a.length);for(var i=function(t){var i="".concat(e,"/specularImages/").concat(n,"/").concat(t);s._loader.logOpen("".concat(i));var l=a[t],c=v.Get(i,s._loader.gltf.images,l);r.push(s._loader.loadImageAsync("/images/".concat(l),c).then((function(e){o[n][t]=e}))),s._loader.logClose()},l=0;l<a.length;l++)i(l)},s=this,i=0;i<t.specularImages.length;i++)a(i);this._loader.logClose(),t._loaded=Promise.all(r).then((function(){var r=new l.RawCubeTexture(n._loader.babylonScene,null,t.specularImageSize);if(r.name=t.name||"environment",t._babylonTexture=r,null!=t.intensity&&(r.level=t.intensity),t.rotation){var a=l.Quaternion.FromArray(t.rotation);n._loader.babylonScene.useRightHandedSystem||(a=l.Quaternion.Inverse(a)),l.Matrix.FromQuaternionToRef(a,r.getReflectionTextureMatrix())}if(!t.irradianceCoefficients)throw new Error("".concat(e,": Irradiance coefficients are missing"));var s=l.SphericalHarmonics.FromArray(t.irradianceCoefficients);s.scaleInPlace(t.intensity),s.convertIrradianceToLambertianRadiance();var i=l.SphericalPolynomial.FromHarmonics(s),c=(o.length-1)/l.Scalar.Log2(t.specularImageSize);return r.updateRGBDAsync(o,i,c)}))}return t._loaded.then((function(){return t._babylonTexture}))},e}();g.RegisterExtension(A,(function(e){return new x(e)}));var T="EXT_mesh_gpu_instancing",E=function(){function e(e){this.name=T,this._loader=e,this.enabled=this._loader.isExtensionUsed(T)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadNodeAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(e,o){r._loader._disableInstancedMesh++;var a=r._loader.loadNodeAsync("/nodes/".concat(t.index),t,n);if(r._loader._disableInstancedMesh--,!t._primitiveBabylonMeshes)return a;var s=new Array,i=0,c=function(t){if(null!=o.attributes[t]){var n=v.Get("".concat(e,"/attributes/").concat(t),r._loader.gltf.accessors,o.attributes[t]);if(s.push(r._loader._loadFloatAccessorAsync("/accessors/".concat(n.bufferView),n)),0===i)i=n.count;else if(i!==n.count)throw new Error("".concat(e,"/attributes: Instance buffer accessors do not have the same count."))}else s.push(Promise.resolve(null))};return c("TRANSLATION"),c("ROTATION"),c("SCALE"),a.then((function(e){return Promise.all(s).then((function(n){var r=n[0],o=n[1],a=n[2],s=new Float32Array(16*i);l.TmpVectors.Vector3[0].copyFromFloats(0,0,0),l.TmpVectors.Quaternion[0].copyFromFloats(0,0,0,1),l.TmpVectors.Vector3[1].copyFromFloats(1,1,1);for(var c=0;c<i;++c)r&&l.Vector3.FromArrayToRef(r,3*c,l.TmpVectors.Vector3[0]),o&&l.Quaternion.FromArrayToRef(o,4*c,l.TmpVectors.Quaternion[0]),a&&l.Vector3.FromArrayToRef(a,3*c,l.TmpVectors.Vector3[1]),l.Matrix.ComposeToRef(l.TmpVectors.Vector3[1],l.TmpVectors.Quaternion[0],l.TmpVectors.Vector3[0],l.TmpVectors.Matrix[0]),l.TmpVectors.Matrix[0].copyToArray(s,16*c);for(var u=0,d=t._primitiveBabylonMeshes;u<d.length;u++)d[u].thinInstanceSetBuffer("matrix",s,16,!0);return e}))}))}))},e}();g.RegisterExtension(T,(function(e){return new E(e)}));var M="EXT_meshopt_compression",O=function(){function e(e){this.name=M,this.enabled=e.isExtensionUsed(M),this._loader=e}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadBufferViewAsync=function(e,t){var n=this;return g.LoadExtensionAsync(e,t,this.name,(function(r,o){var a=t;if(a._meshOptData)return a._meshOptData;var s=v.Get("".concat(e,"/buffer"),n._loader.gltf.buffers,o.buffer);return a._meshOptData=n._loader.loadBufferAsync("/buffers/".concat(s.index),s,o.byteOffset||0,o.byteLength).then((function(e){return l.MeshoptCompression.Default.decodeGltfBufferAsync(e,o.count,o.byteStride,o.mode,o.filter)})),a._meshOptData}))},e}();g.RegisterExtension(M,(function(e){return new O(e)}));var L="EXT_texture_webp",w=function(){function e(e){this.name=L,this._loader=e,this.enabled=e.isExtensionUsed(L)}return e.prototype.dispose=function(){this._loader=null},e.prototype._loadTextureAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=null==t.sampler?g.DefaultSampler:v.Get("".concat(e,"/sampler"),r._loader.gltf.samplers,t.sampler),i=v.Get("".concat(o,"/source"),r._loader.gltf.images,a.source);return r._loader._createTextureAsync(e,s,i,(function(e){n(e)}),void 0,!t._textureInfo.nonColorData)}))},e}();g.RegisterExtension(L,(function(e){return new w(e)}));var C="KHR_draco_mesh_compression",S=function(){function e(e){this.name=C,this._loader=e,this.enabled=l.DracoCompression.DecoderAvailable&&this._loader.isExtensionUsed(C)}return e.prototype.dispose=function(){delete this.dracoCompression,this._loader=null},e.prototype._loadVertexDataAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){if(null!=t.mode){if(5!==t.mode&&4!==t.mode)throw new Error("".concat(e,": Unsupported mode ").concat(t.mode));if(5===t.mode)throw new Error("".concat(e,": Mode ").concat(t.mode," is not currently supported"))}var s={},i={},c=function(o,l){var c=a.attributes[o];if(void 0!==c&&void 0!==t.attributes[o]){s[l]=c;var u=v.Get("".concat(e,"/attributes/").concat(o),r._loader.gltf.accessors,t.attributes[o]);if(u.normalized&&5126!==u.componentType){var d=1;switch(u.componentType){case 5120:d=127;break;case 5121:d=255;break;case 5122:d=32767;break;case 5123:d=65535}i[l]=d}n._delayInfo=n._delayInfo||[],-1===n._delayInfo.indexOf(l)&&n._delayInfo.push(l)}};c("POSITION",l.VertexBuffer.PositionKind),c("NORMAL",l.VertexBuffer.NormalKind),c("TANGENT",l.VertexBuffer.TangentKind),c("TEXCOORD_0",l.VertexBuffer.UVKind),c("TEXCOORD_1",l.VertexBuffer.UV2Kind),c("TEXCOORD_2",l.VertexBuffer.UV3Kind),c("TEXCOORD_3",l.VertexBuffer.UV4Kind),c("TEXCOORD_4",l.VertexBuffer.UV5Kind),c("TEXCOORD_5",l.VertexBuffer.UV6Kind),c("JOINTS_0",l.VertexBuffer.MatricesIndicesKind),c("WEIGHTS_0",l.VertexBuffer.MatricesWeightsKind),c("COLOR_0",l.VertexBuffer.ColorKind);var u=v.Get(o,r._loader.gltf.bufferViews,a.bufferView);return u._dracoBabylonGeometry||(u._dracoBabylonGeometry=r._loader.loadBufferViewAsync("/bufferViews/".concat(u.index),u).then((function(t){return(r.dracoCompression||l.DracoCompression.Default).decodeMeshAsync(t,s,i).then((function(e){var t=new l.Geometry(n.name,r._loader.babylonScene);return e.applyToGeometry(t),t})).catch((function(t){throw new Error("".concat(e,": ").concat(t.message))}))}))),u._dracoBabylonGeometry}))},e}();g.RegisterExtension(C,(function(e){return new S(e)}));var R="KHR_lights_punctual",P=function(){function e(e){this.name=R,this._loader=e,this.enabled=this._loader.isExtensionUsed(R)}return e.prototype.dispose=function(){this._loader=null,delete this._lights},e.prototype.onLoading=function(){var e=this._loader.gltf.extensions;if(e&&e[this.name]){var t=e[this.name];this._lights=t.lights}},e.prototype.loadNodeAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){return r._loader.loadNodeAsync(e,t,(function(e){var t,s=v.Get(o,r._lights,a.light),i=s.name||e.name;switch(r._loader.babylonScene._blockEntityCollection=!!r._loader._assetContainer,s.type){case"directional":t=new l.DirectionalLight(i,l.Vector3.Backward(),r._loader.babylonScene);break;case"point":t=new l.PointLight(i,l.Vector3.Zero(),r._loader.babylonScene);break;case"spot":var c=new l.SpotLight(i,l.Vector3.Zero(),l.Vector3.Backward(),0,1,r._loader.babylonScene);c.angle=2*(s.spot&&s.spot.outerConeAngle||Math.PI/4),c.innerAngle=2*(s.spot&&s.spot.innerConeAngle||0),t=c;break;default:throw r._loader.babylonScene._blockEntityCollection=!1,new Error("".concat(o,": Invalid light type (").concat(s.type,")"))}t._parentContainer=r._loader._assetContainer,r._loader.babylonScene._blockEntityCollection=!1,t.falloffType=l.Light.FALLOFF_GLTF,t.diffuse=s.color?l.Color3.FromArray(s.color):l.Color3.White(),t.intensity=null==s.intensity?1:s.intensity,t.range=null==s.range?Number.MAX_VALUE:s.range,t.parent=e,r._loader._babylonLights.push(t),g.AddPointerMetadata(t,o),n(e)}))}))},e}();g.RegisterExtension(R,(function(e){return new P(e)}));var B="KHR_materials_pbrSpecularGlossiness",I=function(){function e(e){this.name=B,this.order=200,this._loader=e,this.enabled=this._loader.isExtensionUsed(B)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialBasePropertiesAsync(e,t,n)),s.push(r._loadSpecularGlossinessPropertiesAsync(o,t,a,n)),r._loader.loadMaterialAlphaProperties(e,t,n),Promise.all(s).then((function(){}))}))},e.prototype._loadSpecularGlossinessPropertiesAsync=function(e,t,n,r){if(!(r instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var o=new Array;return r.metallic=null,r.roughness=null,n.diffuseFactor?(r.albedoColor=l.Color3.FromArray(n.diffuseFactor),r.alpha=n.diffuseFactor[3]):r.albedoColor=l.Color3.White(),r.reflectivityColor=n.specularFactor?l.Color3.FromArray(n.specularFactor):l.Color3.White(),r.microSurface=null==n.glossinessFactor?1:n.glossinessFactor,n.diffuseTexture&&o.push(this._loader.loadTextureInfoAsync("".concat(e,"/diffuseTexture"),n.diffuseTexture,(function(e){e.name="".concat(r.name," (Diffuse)"),r.albedoTexture=e}))),n.specularGlossinessTexture&&(o.push(this._loader.loadTextureInfoAsync("".concat(e,"/specularGlossinessTexture"),n.specularGlossinessTexture,(function(e){e.name="".concat(r.name," (Specular Glossiness)"),r.reflectivityTexture=e}))),r.reflectivityTexture.hasAlpha=!0,r.useMicroSurfaceFromReflectivityMapAlpha=!0),Promise.all(o).then((function(){}))},e}();g.RegisterExtension(B,(function(e){return new I(e)}));var D="KHR_materials_unlit",F=function(){function e(e){this.name=D,this.order=210,this._loader=e,this.enabled=this._loader.isExtensionUsed(D)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(){return r._loadUnlitPropertiesAsync(e,t,n)}))},e.prototype._loadUnlitPropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;n.unlit=!0;var o=t.pbrMetallicRoughness;return o&&(o.baseColorFactor?(n.albedoColor=l.Color3.FromArray(o.baseColorFactor),n.alpha=o.baseColorFactor[3]):n.albedoColor=l.Color3.White(),o.baseColorTexture&&r.push(this._loader.loadTextureInfoAsync("".concat(e,"/baseColorTexture"),o.baseColorTexture,(function(e){e.name="".concat(n.name," (Base Color)"),n.albedoTexture=e})))),t.doubleSided&&(n.backFaceCulling=!1,n.twoSidedLighting=!0),this._loader.loadMaterialAlphaProperties(e,t,n),Promise.all(r).then((function(){}))},e}();g.RegisterExtension(D,(function(e){return new F(e)}));var V="KHR_materials_clearcoat",N=function(){function e(e){this.name=V,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(V)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadClearCoatPropertiesAsync(o,a,n)),Promise.all(s).then((function(){}))}))},e.prototype._loadClearCoatPropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;return n.clearCoat.isEnabled=!0,n.clearCoat.useRoughnessFromMainTexture=!1,n.clearCoat.remapF0OnInterfaceChange=!1,null!=t.clearcoatFactor?n.clearCoat.intensity=t.clearcoatFactor:n.clearCoat.intensity=0,t.clearcoatTexture&&r.push(this._loader.loadTextureInfoAsync("".concat(e,"/clearcoatTexture"),t.clearcoatTexture,(function(e){e.name="".concat(n.name," (ClearCoat Intensity)"),n.clearCoat.texture=e}))),null!=t.clearcoatRoughnessFactor?n.clearCoat.roughness=t.clearcoatRoughnessFactor:n.clearCoat.roughness=0,t.clearcoatRoughnessTexture&&(t.clearcoatRoughnessTexture.nonColorData=!0,r.push(this._loader.loadTextureInfoAsync("".concat(e,"/clearcoatRoughnessTexture"),t.clearcoatRoughnessTexture,(function(e){e.name="".concat(n.name," (ClearCoat Roughness)"),n.clearCoat.textureRoughness=e})))),t.clearcoatNormalTexture&&(t.clearcoatNormalTexture.nonColorData=!0,r.push(this._loader.loadTextureInfoAsync("".concat(e,"/clearcoatNormalTexture"),t.clearcoatNormalTexture,(function(e){e.name="".concat(n.name," (ClearCoat Normal)"),n.clearCoat.bumpTexture=e}))),n.invertNormalMapX=!n.getScene().useRightHandedSystem,n.invertNormalMapY=n.getScene().useRightHandedSystem,null!=t.clearcoatNormalTexture.scale&&(n.clearCoat.bumpTexture.level=t.clearcoatNormalTexture.scale)),Promise.all(r).then((function(){}))},e}();g.RegisterExtension(V,(function(e){return new N(e)}));var G="KHR_materials_iridescence",k=function(){function e(e){this.name=G,this.order=195,this._loader=e,this.enabled=this._loader.isExtensionUsed(G)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadIridescencePropertiesAsync(o,a,n)),Promise.all(s).then((function(){}))}))},e.prototype._loadIridescencePropertiesAsync=function(e,t,n){var r,o,a,s,i;if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var c=new Array;return n.iridescence.isEnabled=!0,n.iridescence.intensity=null!==(r=t.iridescenceFactor)&&void 0!==r?r:0,n.iridescence.indexOfRefraction=null!==(a=null!==(o=t.iridescenceIor)&&void 0!==o?o:t.iridescenceIOR)&&void 0!==a?a:1.3,n.iridescence.minimumThickness=null!==(s=t.iridescenceThicknessMinimum)&&void 0!==s?s:100,n.iridescence.maximumThickness=null!==(i=t.iridescenceThicknessMaximum)&&void 0!==i?i:400,t.iridescenceTexture&&c.push(this._loader.loadTextureInfoAsync("".concat(e,"/iridescenceTexture"),t.iridescenceTexture,(function(e){e.name="".concat(n.name," (Iridescence Intensity)"),n.iridescence.texture=e}))),t.iridescenceThicknessTexture&&c.push(this._loader.loadTextureInfoAsync("".concat(e,"/iridescenceThicknessTexture"),t.iridescenceThicknessTexture,(function(e){e.name="".concat(n.name," (Iridescence Thickness)"),n.iridescence.thicknessTexture=e}))),Promise.all(c).then((function(){}))},e}();g.RegisterExtension(G,(function(e){return new k(e)}));var U="KHR_materials_emissive_strength",K=function(){function e(e){this.name=U,this.order=170,this._loader=e,this.enabled=this._loader.isExtensionUsed(U)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){return r._loader.loadMaterialPropertiesAsync(e,t,n).then((function(){r._loadEmissiveProperties(o,a,n)}))}))},e.prototype._loadEmissiveProperties=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));void 0!==t.emissiveStrength&&n.emissiveColor.scaleToRef(t.emissiveStrength,n.emissiveColor)},e}();g.RegisterExtension(U,(function(e){return new K(e)}));var H="KHR_materials_sheen",j=function(){function e(e){this.name=H,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(H)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadSheenPropertiesAsync(o,a,n)),Promise.all(s).then((function(){}))}))},e.prototype._loadSheenPropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;return n.sheen.isEnabled=!0,n.sheen.intensity=1,null!=t.sheenColorFactor?n.sheen.color=l.Color3.FromArray(t.sheenColorFactor):n.sheen.color=l.Color3.Black(),t.sheenColorTexture&&r.push(this._loader.loadTextureInfoAsync("".concat(e,"/sheenColorTexture"),t.sheenColorTexture,(function(e){e.name="".concat(n.name," (Sheen Color)"),n.sheen.texture=e}))),void 0!==t.sheenRoughnessFactor?n.sheen.roughness=t.sheenRoughnessFactor:n.sheen.roughness=0,t.sheenRoughnessTexture&&(t.sheenRoughnessTexture.nonColorData=!0,r.push(this._loader.loadTextureInfoAsync("".concat(e,"/sheenRoughnessTexture"),t.sheenRoughnessTexture,(function(e){e.name="".concat(n.name," (Sheen Roughness)"),n.sheen.textureRoughness=e})))),n.sheen.albedoScaling=!0,n.sheen.useRoughnessFromMainTexture=!1,Promise.all(r).then((function(){}))},e}();g.RegisterExtension(H,(function(e){return new j(e)}));var q="KHR_materials_specular",W=function(){function e(e){this.name=q,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(q)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadSpecularPropertiesAsync(o,a,n)),Promise.all(s).then((function(){}))}))},e.prototype._loadSpecularPropertiesAsync=function(e,t,n){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var r=new Array;return void 0!==t.specularFactor&&(n.metallicF0Factor=t.specularFactor),void 0!==t.specularColorFactor&&(n.metallicReflectanceColor=l.Color3.FromArray(t.specularColorFactor)),t.specularTexture&&(t.specularTexture.nonColorData=!0,r.push(this._loader.loadTextureInfoAsync("".concat(e,"/specularTexture"),t.specularTexture,(function(e){e.name="".concat(n.name," (Specular F0 Strength)"),n.metallicReflectanceTexture=e,n.useOnlyMetallicFromMetallicReflectanceTexture=!0})))),t.specularColorTexture&&r.push(this._loader.loadTextureInfoAsync("".concat(e,"/specularColorTexture"),t.specularColorTexture,(function(e){e.name="".concat(n.name," (Specular F0 Color)"),n.reflectanceTexture=e}))),Promise.all(r).then((function(){}))},e}();g.RegisterExtension(q,(function(e){return new W(e)}));var X="KHR_materials_ior",z=function(){function e(e){this.name=X,this.order=180,this._loader=e,this.enabled=this._loader.isExtensionUsed(X)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadIorPropertiesAsync(o,a,n)),Promise.all(s).then((function(){}))}))},e.prototype._loadIorPropertiesAsync=function(t,n,r){if(!(r instanceof l.PBRMaterial))throw new Error("".concat(t,": Material type not supported"));return void 0!==n.ior?r.indexOfRefraction=n.ior:r.indexOfRefraction=e._DEFAULT_IOR,Promise.resolve()},e._DEFAULT_IOR=1.5,e}();g.RegisterExtension(X,(function(e){return new z(e)}));var J="KHR_materials_variants",Q=function(){function e(e){this.name=J,this._loader=e,this.enabled=this._loader.isExtensionUsed(J)}return e.prototype.dispose=function(){this._loader=null},e.GetAvailableVariants=function(e){var t=this._GetExtensionMetadata(e);return t?Object.keys(t.variants):[]},e.prototype.getAvailableVariants=function(t){return e.GetAvailableVariants(t)},e.SelectVariant=function(e,t){var n=this._GetExtensionMetadata(e);if(!n)throw new Error("Cannot select variant on a glTF mesh that does not have the ".concat(J," extension"));var r=function(e){var t=n.variants[e];if(t)for(var r=0,o=t;r<o.length;r++){var a=o[r];a.mesh.material=a.material}};if(t instanceof Array)for(var o=0,a=t;o<a.length;o++)r(a[o]);else r(t);n.lastSelected=t},e.prototype.selectVariant=function(t,n){return e.SelectVariant(t,n)},e.Reset=function(e){var t=this._GetExtensionMetadata(e);if(!t)throw new Error("Cannot reset on a glTF mesh that does not have the ".concat(J," extension"));for(var n=0,r=t.original;n<r.length;n++){var o=r[n];o.mesh.material=o.material}t.lastSelected=null},e.prototype.reset=function(t){return e.Reset(t)},e.GetLastSelectedVariant=function(e){var t=this._GetExtensionMetadata(e);if(!t)throw new Error("Cannot get the last selected variant on a glTF mesh that does not have the ".concat(J," extension"));return t.lastSelected},e.prototype.getLastSelectedVariant=function(t){return e.GetLastSelectedVariant(t)},e._GetExtensionMetadata=function(e){var t,n;return(null===(n=null===(t=null==e?void 0:e.metadata)||void 0===t?void 0:t.gltf)||void 0===n?void 0:n.KHR_materials_variants)||null},e.prototype.onLoading=function(){var e=this._loader.gltf.extensions;if(e&&e[this.name]){var t=e[this.name];this._variants=t.variants}},e.prototype._loadMeshPrimitiveAsync=function(t,n,r,o,a,s){var i=this;return g.LoadExtensionAsync(t,a,this.name,(function(c,u){var d=new Array;return d.push(i._loader._loadMeshPrimitiveAsync(t,n,r,o,a,(function(n){if(s(n),n instanceof l.Mesh){var r=g._GetDrawMode(t,a.mode),o=i._loader.rootBabylonMesh,f=o?o.metadata=o.metadata||{}:{},h=f.gltf=f.gltf||{},p=h.KHR_materials_variants=h.KHR_materials_variants||{lastSelected:null,original:[],variants:{}};p.original.push({mesh:n,material:n.material});for(var _=function(t){var a=u.mappings[t],s=v.Get("".concat(c,"/mappings/").concat(t,"/material"),i._loader.gltf.materials,a.material);d.push(i._loader._loadMaterialAsync("#/materials/".concat(a.material),s,n,r,(function(t){for(var r=function(r){var s=a.variants[r],l=v.Get("/extensions/".concat(J,"/variants/").concat(s),i._variants,s);p.variants[l.name]=p.variants[l.name]||[],p.variants[l.name].push({mesh:n,material:t}),n.onClonedObservable.add((function(t){var r=t,a=null,s=r;do{if(!(s=s.parent))return;a=e._GetExtensionMetadata(s)}while(null===a);if(o&&a===e._GetExtensionMetadata(o)){for(var i in s.metadata={},o.metadata)s.metadata[i]=o.metadata[i];for(var i in s.metadata.gltf=[],o.metadata.gltf)s.metadata.gltf[i]=o.metadata.gltf[i];s.metadata.gltf.KHR_materials_variants={lastSelected:null,original:[],variants:{}};for(var c=0,u=a.original;c<u.length;c++){var d=u[c];s.metadata.gltf.KHR_materials_variants.original.push({mesh:d.mesh,material:d.material})}for(var i in a.variants)if(Object.prototype.hasOwnProperty.call(a.variants,i)){s.metadata.gltf.KHR_materials_variants.variants[i]=[];for(var f=0,h=a.variants[i];f<h.length;f++){var p=h[f];s.metadata.gltf.KHR_materials_variants.variants[i].push({mesh:p.mesh,material:p.material})}}a=s.metadata.gltf.KHR_materials_variants}for(var _=0,m=a.original;_<m.length;_++)(v=m[_]).mesh===n&&(v.mesh=r);for(var y=0,b=a.variants[l.name];y<b.length;y++){var v;(v=b[y]).mesh===n&&(v.mesh=r)}}))},s=0;s<a.variants.length;++s)r(s)})))},m=0;m<u.mappings.length;++m)_(m)}}))),Promise.all(d).then((function(e){return e[0]}))}))},e}();g.RegisterExtension(J,(function(e){return new Q(e)}));var Y=function(){return Y=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},Y.apply(this,arguments)};Object.create,Object.create;var Z=function(){function e(t,n){var r=this;this._opaqueRenderTarget=null,this._opaqueMeshesCache=[],this._transparentMeshesCache=[],this._materialObservers={},this._options=Y(Y({},e._GetDefaultOptions()),t),this._scene=n,this._scene._transmissionHelper=this,this.onErrorObservable=new l.Observable,this._scene.onDisposeObservable.addOnce((function(){r.dispose()})),this._parseScene(),this._setupRenderTargets()}return e._GetDefaultOptions=function(){return{renderSize:1024,samples:4,lodGenerationScale:1,lodGenerationOffset:-4,renderTargetTextureType:l.Constants.TEXTURETYPE_HALF_FLOAT,generateMipmaps:!0}},e.prototype.updateOptions=function(e){var t=this,n=Object.keys(e).filter((function(n){return t._options[n]!==e[n]}));if(n.length){var r=Y(Y({},this._options),e),o=this._options;this._options=r,r.renderSize===o.renderSize&&r.renderTargetTextureType===o.renderTargetTextureType&&r.generateMipmaps===o.generateMipmaps&&this._opaqueRenderTarget?(this._opaqueRenderTarget.samples=r.samples,this._opaqueRenderTarget.lodGenerationScale=r.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=r.lodGenerationOffset):this._setupRenderTargets()}},e.prototype.getOpaqueTarget=function(){return this._opaqueRenderTarget},e.prototype._shouldRenderAsTransmission=function(e){return!!e&&!!(e instanceof l.PBRMaterial&&e.subSurface.isRefractionEnabled)},e.prototype._addMesh=function(e){var t=this;this._materialObservers[e.uniqueId]=e.onMaterialChangedObservable.add(this._onMeshMaterialChanged.bind(this)),l.Tools.SetImmediate((function(){t._shouldRenderAsTransmission(e.material)?(e.material.refractionTexture=t._opaqueRenderTarget,t._transparentMeshesCache.push(e)):t._opaqueMeshesCache.push(e)}))},e.prototype._removeMesh=function(e){e.onMaterialChangedObservable.remove(this._materialObservers[e.uniqueId]),delete this._materialObservers[e.uniqueId];var t=this._transparentMeshesCache.indexOf(e);-1!==t&&this._transparentMeshesCache.splice(t,1),-1!==(t=this._opaqueMeshesCache.indexOf(e))&&this._opaqueMeshesCache.splice(t,1)},e.prototype._parseScene=function(){this._scene.meshes.forEach(this._addMesh.bind(this)),this._scene.onNewMeshAddedObservable.add(this._addMesh.bind(this)),this._scene.onMeshRemovedObservable.add(this._removeMesh.bind(this))},e.prototype._onMeshMaterialChanged=function(e){var t=this._transparentMeshesCache.indexOf(e),n=this._opaqueMeshesCache.indexOf(e);this._shouldRenderAsTransmission(e.material)?(e.material instanceof l.PBRMaterial&&(e.material.subSurface.refractionTexture=this._opaqueRenderTarget),-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)},e.prototype._setupRenderTargets=function(){var e,t,n,r,o=this;this._opaqueRenderTarget&&this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=new l.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.clearColor=null!==(t=null===(e=this._options.clearColor)||void 0===e?void 0:e.clone())&&void 0!==t?t:this._scene.clearColor.clone(),this._opaqueRenderTarget.gammaSpace=!1,this._opaqueRenderTarget.lodGenerationScale=this._options.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=this._options.lodGenerationOffset,this._opaqueRenderTarget.samples=this._options.samples,this._opaqueRenderTarget.onBeforeBindObservable.add((function(e){r=o._scene.environmentIntensity,o._scene.environmentIntensity=1,n=o._scene.imageProcessingConfiguration.applyByPostProcess,o._options.clearColor?e.clearColor.copyFrom(o._options.clearColor):o._scene.clearColor.toLinearSpaceToRef(e.clearColor),o._scene.imageProcessingConfiguration._applyByPostProcess=!0})),this._opaqueRenderTarget.onAfterUnbindObservable.add((function(){o._scene.environmentIntensity=r,o._scene.imageProcessingConfiguration._applyByPostProcess=n})),this._transparentMeshesCache.forEach((function(e){o._shouldRenderAsTransmission(e.material)&&(e.material.refractionTexture=o._opaqueRenderTarget)}))},e.prototype.dispose=function(){this._scene._transmissionHelper=void 0,this._opaqueRenderTarget&&(this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=null),this._transparentMeshesCache=[],this._opaqueMeshesCache=[]},e}(),$="KHR_materials_transmission",ee=function(){function e(e){this.name=$,this.order=175,this._loader=e,this.enabled=this._loader.isExtensionUsed($),this.enabled&&(e.parent.transparencyAsCoverage=!0)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialBasePropertiesAsync(e,t,n)),s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadTransparentPropertiesAsync(o,t,n,a)),Promise.all(s).then((function(){}))}))},e.prototype._loadTransparentPropertiesAsync=function(e,t,n,r){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var o=n;if(o.subSurface.isRefractionEnabled=!0,o.subSurface.volumeIndexOfRefraction=1,o.subSurface.useAlbedoToTintRefraction=!0,void 0===r.transmissionFactor)return o.subSurface.refractionIntensity=0,o.subSurface.isRefractionEnabled=!1,Promise.resolve();o.subSurface.refractionIntensity=r.transmissionFactor;var a=o.getScene();return o.subSurface.refractionIntensity&&!a._transmissionHelper&&new Z({},o.getScene()),o.subSurface.minimumThickness=0,o.subSurface.maximumThickness=0,r.transmissionTexture?(r.transmissionTexture.nonColorData=!0,this._loader.loadTextureInfoAsync("".concat(e,"/transmissionTexture"),r.transmissionTexture,void 0).then((function(e){o.subSurface.refractionIntensityTexture=e,o.subSurface.useGltfStyleTextures=!0}))):Promise.resolve()},e}();g.RegisterExtension($,(function(e){return new ee(e)}));var te="KHR_materials_translucency",ne=function(){function e(e){this.name=te,this.order=174,this._loader=e,this.enabled=this._loader.isExtensionUsed(te),this.enabled&&(e.parent.transparencyAsCoverage=!0)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialBasePropertiesAsync(e,t,n)),s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadTranslucentPropertiesAsync(o,t,n,a)),Promise.all(s).then((function(){}))}))},e.prototype._loadTranslucentPropertiesAsync=function(e,t,n,r){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));var o=n;return o.subSurface.isTranslucencyEnabled=!0,o.subSurface.volumeIndexOfRefraction=1,o.subSurface.minimumThickness=0,o.subSurface.maximumThickness=0,o.subSurface.useAlbedoToTintTranslucency=!0,void 0===r.translucencyFactor?(o.subSurface.translucencyIntensity=0,o.subSurface.isTranslucencyEnabled=!1,Promise.resolve()):(o.subSurface.translucencyIntensity=r.translucencyFactor,r.translucencyTexture?(r.translucencyTexture.nonColorData=!0,this._loader.loadTextureInfoAsync("".concat(e,"/translucencyTexture"),r.translucencyTexture).then((function(e){o.subSurface.translucencyIntensityTexture=e}))):Promise.resolve())},e}();g.RegisterExtension(te,(function(e){return new ne(e)}));var re="KHR_materials_volume",oe=function(){function e(e){this.name=re,this.order=173,this._loader=e,this.enabled=this._loader.isExtensionUsed(re),this.enabled&&this._loader._disableInstancedMesh++}return e.prototype.dispose=function(){this.enabled&&this._loader._disableInstancedMesh--,this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=new Array;return s.push(r._loader.loadMaterialBasePropertiesAsync(e,t,n)),s.push(r._loader.loadMaterialPropertiesAsync(e,t,n)),s.push(r._loadVolumePropertiesAsync(o,t,n,a)),Promise.all(s).then((function(){}))}))},e.prototype._loadVolumePropertiesAsync=function(e,t,n,r){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(e,": Material type not supported"));if(!n.subSurface.isRefractionEnabled&&!n.subSurface.isTranslucencyEnabled||!r.thicknessFactor)return Promise.resolve();n.subSurface.volumeIndexOfRefraction=n.indexOfRefraction;var o=void 0!==r.attenuationDistance?r.attenuationDistance:Number.MAX_VALUE;return n.subSurface.tintColorAtDistance=o,void 0!==r.attenuationColor&&3==r.attenuationColor.length&&n.subSurface.tintColor.copyFromFloats(r.attenuationColor[0],r.attenuationColor[1],r.attenuationColor[2]),n.subSurface.minimumThickness=0,n.subSurface.maximumThickness=r.thicknessFactor,n.subSurface.useThicknessAsDepth=!0,r.thicknessTexture?(r.thicknessTexture.nonColorData=!0,this._loader.loadTextureInfoAsync("".concat(e,"/thicknessTexture"),r.thicknessTexture).then((function(e){n.subSurface.thicknessTexture=e,n.subSurface.useGltfStyleTextures=!0}))):Promise.resolve()},e}();g.RegisterExtension(re,(function(e){return new oe(e)}));var ae="KHR_mesh_quantization",se=function(){function e(e){this.name=ae,this.enabled=e.isExtensionUsed(ae)}return e.prototype.dispose=function(){},e}();g.RegisterExtension(ae,(function(e){return new se(e)}));var ie="KHR_texture_basisu",le=function(){function e(e){this.name=ie,this._loader=e,this.enabled=e.isExtensionUsed(ie)}return e.prototype.dispose=function(){this._loader=null},e.prototype._loadTextureAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){var s=null==t.sampler?g.DefaultSampler:v.Get("".concat(e,"/sampler"),r._loader.gltf.samplers,t.sampler),i=v.Get("".concat(o,"/source"),r._loader.gltf.images,a.source);return r._loader._createTextureAsync(e,s,i,(function(e){n(e)}),t._textureInfo.nonColorData?{useRGBAIfASTCBC7NotAvailableWhenUASTC:!0}:void 0,!t._textureInfo.nonColorData)}))},e}();g.RegisterExtension(ie,(function(e){return new le(e)}));var ce="KHR_texture_transform",ue=function(){function e(e){this.name=ce,this._loader=e,this.enabled=this._loader.isExtensionUsed(ce)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadTextureInfoAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(o,a){return r._loader.loadTextureInfoAsync(e,t,(function(e){if(!(e instanceof l.Texture))throw new Error("".concat(o,": Texture type not supported"));a.offset&&(e.uOffset=a.offset[0],e.vOffset=a.offset[1]),e.uRotationCenter=0,e.vRotationCenter=0,a.rotation&&(e.wAng=-a.rotation),a.scale&&(e.uScale=a.scale[0],e.vScale=a.scale[1]),null!=a.texCoord&&(e.coordinatesIndex=a.texCoord),n(e)}))}))},e}();g.RegisterExtension(ce,(function(e){return new ue(e)}));var de="KHR_xmp_json_ld",fe=function(){function e(e){this.name=de,this.order=100,this._loader=e,this.enabled=this._loader.isExtensionUsed(de)}return e.prototype.dispose=function(){this._loader=null},e.prototype.onLoading=function(){var e,t,n;if(null!==this._loader.rootBabylonMesh){var r=null===(e=this._loader.gltf.extensions)||void 0===e?void 0:e.KHR_xmp_json_ld,o=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&&o){var a=+o.packet;r.packets&&a<r.packets.length&&(this._loader.rootBabylonMesh.metadata=this._loader.rootBabylonMesh.metadata||{},this._loader.rootBabylonMesh.metadata.xmp=r.packets[a])}}},e}();g.RegisterExtension(de,(function(e){return new fe(e)}));var he="MSFT_audio_emitter",pe=function(){function e(e){this.name=he,this._loader=e,this.enabled=this._loader.isExtensionUsed(he)}return e.prototype.dispose=function(){this._loader=null,this._clips=null,this._emitters=null},e.prototype.onLoading=function(){var e=this._loader.gltf.extensions;if(e&&e[this.name]){var t=e[this.name];this._clips=t.clips,this._emitters=t.emitters,v.Assign(this._clips),v.Assign(this._emitters)}},e.prototype.loadSceneAsync=function(e,t){var n=this;return g.LoadExtensionAsync(e,t,this.name,(function(r,o){var a=new Array;a.push(n._loader.loadSceneAsync(e,t));for(var s=0,i=o.emitters;s<i.length;s++){var l=i[s],c=v.Get("".concat(r,"/emitters"),n._emitters,l);if(null!=c.refDistance||null!=c.maxDistance||null!=c.rolloffFactor||null!=c.distanceModel||null!=c.innerAngle||null!=c.outerAngle)throw new Error("".concat(r,": Direction or Distance properties are not allowed on emitters attached to a scene"));a.push(n._loadEmitterAsync("".concat(r,"/emitters/").concat(c.index),c))}return Promise.all(a).then((function(){}))}))},e.prototype.loadNodeAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(e,o){var a=new Array;return r._loader.loadNodeAsync(e,t,(function(t){for(var s=function(n){var o=v.Get("".concat(e,"/emitters"),r._emitters,n);a.push(r._loadEmitterAsync("".concat(e,"/emitters/").concat(o.index),o).then((function(){for(var e=0,n=o._babylonSounds;e<n.length;e++){var r=n[e];r.attachToMesh(t),null==o.innerAngle&&null==o.outerAngle||(r.setLocalDirectionToMesh(l.Vector3.Forward()),r.setDirectionalCone(2*l.Tools.ToDegrees(null==o.innerAngle?Math.PI:o.innerAngle),2*l.Tools.ToDegrees(null==o.outerAngle?Math.PI:o.outerAngle),0))}})))},i=0,c=o.emitters;i<c.length;i++)s(c[i]);n(t)})).then((function(e){return Promise.all(a).then((function(){return e}))}))}))},e.prototype.loadAnimationAsync=function(e,t){var n=this;return g.LoadExtensionAsync(e,t,this.name,(function(r,o){return n._loader.loadAnimationAsync(e,t).then((function(a){var s=new Array;v.Assign(o.events);for(var i=0,l=o.events;i<l.length;i++){var c=l[i];s.push(n._loadAnimationEventAsync("".concat(r,"/events/").concat(c.index),e,t,c,a))}return Promise.all(s).then((function(){return a}))}))}))},e.prototype._loadClipAsync=function(e,t){if(t._objectURL)return t._objectURL;var n;if(t.uri)n=this._loader.loadUriAsync(e,t,t.uri);else{var r=v.Get("".concat(e,"/bufferView"),this._loader.gltf.bufferViews,t.bufferView);n=this._loader.loadBufferViewAsync("/bufferViews/".concat(r.index),r)}return t._objectURL=n.then((function(e){return URL.createObjectURL(new Blob([e],{type:t.mimeType}))})),t._objectURL},e.prototype._loadEmitterAsync=function(e,t){var n=this;if(t._babylonSounds=t._babylonSounds||[],!t._babylonData){for(var r=new Array,o=t.name||"emitter".concat(t.index),a={loop:!1,autoplay:!1,volume:null==t.volume?1:t.volume},s=function(e){var s="/extensions/".concat(i.name,"/clips"),c=v.Get(s,i._clips,t.clips[e].clip);r.push(i._loadClipAsync("".concat(s,"/").concat(t.clips[e].clip),c).then((function(r){var s=t._babylonSounds[e]=new l.Sound(o,r,n._loader.babylonScene,null,a);s.refDistance=t.refDistance||1,s.maxDistance=t.maxDistance||256,s.rolloffFactor=t.rolloffFactor||1,s.distanceModel=t.distanceModel||"exponential"})))},i=this,c=0;c<t.clips.length;c++)s(c);var u=Promise.all(r).then((function(){var e=t.clips.map((function(e){return e.weight||1})),n=new l.WeightedSound(t.loop||!1,t._babylonSounds,e);t.innerAngle&&(n.directionalConeInnerAngle=2*l.Tools.ToDegrees(t.innerAngle)),t.outerAngle&&(n.directionalConeOuterAngle=2*l.Tools.ToDegrees(t.outerAngle)),t.volume&&(n.volume=t.volume),t._babylonData.sound=n}));t._babylonData={loaded:u}}return t._babylonData.loaded},e.prototype._getEventAction=function(e,t,n,r,o){switch(n){case"play":return function(e){var n=(o||0)+(e-r);t.play(n)};case"stop":return function(){t.stop()};case"pause":return function(){t.pause()};default:throw new Error("".concat(e,": Unsupported action ").concat(n))}},e.prototype._loadAnimationEventAsync=function(e,t,n,r,o){var a=this;if(0==o.targetedAnimations.length)return Promise.resolve();var s=o.targetedAnimations[0],i=r.emitter,c=v.Get("/extensions/".concat(this.name,"/emitters"),this._emitters,i);return this._loadEmitterAsync(e,c).then((function(){var t=c._babylonData.sound;if(t){var n=new l.AnimationEvent(r.time,a._getEventAction(e,t,r.action,r.time,r.startOffset));s.animation.addEvent(n),o.onAnimationGroupEndObservable.add((function(){t.stop()})),o.onAnimationGroupPauseObservable.add((function(){t.pause()}))}}))},e}();g.RegisterExtension(he,(function(e){return new pe(e)}));var _e="MSFT_lod",me=function(){function e(e){this.name=_e,this.order=100,this.maxLODsToLoad=10,this.onNodeLODsLoadedObservable=new l.Observable,this.onMaterialLODsLoadedObservable=new l.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.enabled=this._loader.isExtensionUsed(_e)}return e.prototype.dispose=function(){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()},e.prototype.onReady=function(){for(var e=this,t=function(t){var r=Promise.all(n._nodePromiseLODs[t]).then((function(){0!==t&&(e._loader.endPerformanceCounter("Node LOD ".concat(t)),e._loader.log("Loaded node LOD ".concat(t))),e.onNodeLODsLoadedObservable.notifyObservers(t),t!==e._nodePromiseLODs.length-1&&(e._loader.startPerformanceCounter("Node LOD ".concat(t+1)),e._loadBufferLOD(e._nodeBufferLODs,t+1),e._nodeSignalLODs[t]&&e._nodeSignalLODs[t].resolve())}));n._loader._completePromises.push(r)},n=this,r=0;r<this._nodePromiseLODs.length;r++)t(r);var o=function(t){var n=Promise.all(a._materialPromiseLODs[t]).then((function(){0!==t&&(e._loader.endPerformanceCounter("Material LOD ".concat(t)),e._loader.log("Loaded material LOD ".concat(t))),e.onMaterialLODsLoadedObservable.notifyObservers(t),t!==e._materialPromiseLODs.length-1&&(e._loader.startPerformanceCounter("Material LOD ".concat(t+1)),e._loadBufferLOD(e._materialBufferLODs,t+1),e._materialSignalLODs[t]&&e._materialSignalLODs[t].resolve())}));a._loader._completePromises.push(n)},a=this;for(r=0;r<this._materialPromiseLODs.length;r++)o(r)},e.prototype.loadSceneAsync=function(e,t){var n=this._loader.loadSceneAsync(e,t);return this._loadBufferLOD(this._bufferLODs,0),n},e.prototype.loadNodeAsync=function(e,t,n){var r=this;return g.LoadExtensionAsync(e,t,this.name,(function(e,o){var a,s=r._getLODs(e,t,r._loader.gltf.nodes,o.ids);r._loader.logOpen("".concat(e));for(var i=function(e){var t=s[e];0!==e&&(r._nodeIndexLOD=e,r._nodeSignalLODs[e]=r._nodeSignalLODs[e]||new l.Deferred);var o=r._loader.loadNodeAsync("/nodes/".concat(t.index),t,(function(e){n(e),e.setEnabled(!1)})).then((function(t){if(0!==e){var n=s[e-1];n._babylonTransformNode&&(r._disposeTransformNode(n._babylonTransformNode),delete n._babylonTransformNode)}return t.setEnabled(!0),t}));r._nodePromiseLODs[e]=r._nodePromiseLODs[e]||[],0===e?a=o:(r._nodeIndexLOD=null,r._nodePromiseLODs[e].push(o))},c=0;c<s.length;c++)i(c);return r._loader.logClose(),a}))},e.prototype._loadMaterialAsync=function(e,t,n,r,o){var a=this;return this._nodeIndexLOD?null:g.LoadExtensionAsync(e,t,this.name,(function(e,s){var i,l=a._getLODs(e,t,a._loader.gltf.materials,s.ids);a._loader.logOpen("".concat(e));for(var c=function(e){var t=l[e];0!==e&&(a._materialIndexLOD=e);var s=a._loader._loadMaterialAsync("/materials/".concat(t.index),t,n,r,(function(t){0===e&&o(t)})).then((function(t){if(0!==e){o(t);var n=l[e-1]._data;n[r]&&(a._disposeMaterials([n[r].babylonMaterial]),delete n[r])}return t}));a._materialPromiseLODs[e]=a._materialPromiseLODs[e]||[],0===e?i=s:(a._materialIndexLOD=null,a._materialPromiseLODs[e].push(s))},u=0;u<l.length;u++)c(u);return a._loader.logClose(),i}))},e.prototype._loadUriAsync=function(e,t,n){var r=this;if(null!==this._nodeIndexLOD){this._loader.log("deferred");var o=this._nodeIndexLOD-1;return this._nodeSignalLODs[o]=this._nodeSignalLODs[o]||new l.Deferred,this._nodeSignalLODs[this._nodeIndexLOD-1].promise.then((function(){return r._loader.loadUriAsync(e,t,n)}))}return null!==this._materialIndexLOD?(this._loader.log("deferred"),o=this._materialIndexLOD-1,this._materialSignalLODs[o]=this._materialSignalLODs[o]||new l.Deferred,this._materialSignalLODs[o].promise.then((function(){return r._loader.loadUriAsync(e,t,n)}))):null},e.prototype.loadBufferAsync=function(e,t,n,r){if(this._loader.parent.useRangeRequests&&!t.uri){if(!this._loader.bin)throw new Error("".concat(e,": Uri is missing or the binary glTF is missing its binary chunk"));var o=function(e,t){var o=n,a=o+r-1,s=e[t];return s?(s.start=Math.min(s.start,o),s.end=Math.max(s.end,a)):(s={start:o,end:a,loaded:new l.Deferred},e[t]=s),s.loaded.promise.then((function(e){return new Uint8Array(e.buffer,e.byteOffset+n-s.start,r)}))};return this._loader.log("deferred"),null!==this._nodeIndexLOD?o(this._nodeBufferLODs,this._nodeIndexLOD):null!==this._materialIndexLOD?o(this._materialBufferLODs,this._materialIndexLOD):o(this._bufferLODs,0)}return null},e.prototype._loadBufferLOD=function(e,t){var n=e[t];n&&(this._loader.log("Loading buffer range [".concat(n.start,"-").concat(n.end,"]")),this._loader.bin.readAsync(n.start,n.end-n.start+1).then((function(e){n.loaded.resolve(e)}),(function(e){n.loaded.reject(e)})))},e.prototype._getLODs=function(e,t,n,r){if(this.maxLODsToLoad<=0)throw new Error("maxLODsToLoad must be greater than zero");for(var o=new Array,a=r.length-1;a>=0;a--)if(o.push(v.Get("".concat(e,"/ids/").concat(r[a]),n,r[a])),o.length===this.maxLODsToLoad)return o;return o.push(t),o},e.prototype._disposeTransformNode=function(e){var t=this,n=new Array,r=e.material;r&&n.push(r);for(var o=0,a=e.getChildMeshes();o<a.length;o++){var s=a[o];s.material&&n.push(s.material)}e.dispose();var i=n.filter((function(e){return t._loader.babylonScene.meshes.every((function(t){return t.material!=e}))}));this._disposeMaterials(i)},e.prototype._disposeMaterials=function(e){for(var t={},n=0,r=e;n<r.length;n++){for(var o=0,a=(u=r[n]).getActiveTextures();o<a.length;o++){var s=a[o];t[s.uniqueId]=s}u.dispose()}for(var i in t)for(var l=0,c=this._loader.babylonScene.materials;l<c.length;l++){var u;(u=c[l]).hasTexture(t[i])&&delete t[i]}for(var i in t)t[i].dispose()},e}();g.RegisterExtension(_e,(function(e){return new me(e)}));var ye="MSFT_minecraftMesh",be=function(){function e(e){this.name=ye,this._loader=e,this.enabled=this._loader.isExtensionUsed(ye)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtraAsync(e,t,this.name,(function(o,a){if(a){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(o,": Material type not supported"));var s=r._loader.loadMaterialPropertiesAsync(e,t,n);return n.needAlphaBlending()&&(n.forceDepthWrite=!0,n.separateCullingPass=!0),n.backFaceCulling=n.forceDepthWrite,n.twoSidedLighting=!0,s}return null}))},e}();g.RegisterExtension(ye,(function(e){return new be(e)}));var ve="MSFT_sRGBFactors",ge=function(){function e(e){this.name=ve,this._loader=e,this.enabled=this._loader.isExtensionUsed(ve)}return e.prototype.dispose=function(){this._loader=null},e.prototype.loadMaterialPropertiesAsync=function(e,t,n){var r=this;return g.LoadExtraAsync(e,t,this.name,(function(o,a){if(a){if(!(n instanceof l.PBRMaterial))throw new Error("".concat(o,": Material type not supported"));var s=r._loader.loadMaterialPropertiesAsync(e,t,n);return n.albedoTexture||n.albedoColor.toLinearSpaceToRef(n.albedoColor),n.reflectivityTexture||n.reflectivityColor.toLinearSpaceToRef(n.reflectivityColor),s}return null}))},e}();g.RegisterExtension(ve,(function(e){return new ge(e)}));var Ae="ExtrasAsMetadata",xe=function(){function e(e){this.name=Ae,this.enabled=!0,this._loader=e}return e.prototype._assignExtras=function(e,t){if(t.extras&&Object.keys(t.extras).length>0){var n=e.metadata=e.metadata||{};(n.gltf=n.gltf||{}).extras=t.extras}},e.prototype.dispose=function(){this._loader=null},e.prototype.loadNodeAsync=function(e,t,n){var r=this;return this._loader.loadNodeAsync(e,t,(function(e){r._assignExtras(e,t),n(e)}))},e.prototype.loadCameraAsync=function(e,t,n){var r=this;return this._loader.loadCameraAsync(e,t,(function(e){r._assignExtras(e,t),n(e)}))},e.prototype.createMaterial=function(e,t,n){var r=this._loader.createMaterial(e,t,n);return this._assignExtras(r,t),r},e}();g.RegisterExtension(Ae,(function(e){return new xe(e)}));var Te=void 0!==r.g?r.g:"undefined"!=typeof window?window:void 0;if(void 0!==Te){Te.BABYLON=Te.BABYLON||{};var Ee=Te.BABYLON;Ee.GLTF2=Ee.GLTF2||{},Ee.GLTF2.Loader=Ee.GLTF2.Loader||{},Ee.GLTF2.Loader.Extensions=Ee.GLTF2.Loader.Extensions||{};var Me=[];for(var Oe in n)Ee.GLTF2.Loader.Extensions[Oe]=n[Oe],Me.push(Oe);for(var Oe in a)Ee.GLTF2.Loader[Oe]=a[Oe],Me.push(Oe);for(var Oe in s)Me.indexOf(Oe)>-1||(Ee.GLTF2[Oe]=s[Oe])}const Le=i})(),o.default})()}));
2
2
  //# sourceMappingURL=babylon.glTF2FileLoader.min.js.map