1 |
- var BABYLON;!(function(i){var e,t,r,n,o;(t=e=i.GLTFLoaderCoordinateSystemMode||(i.GLTFLoaderCoordinateSystemMode={}))[t.AUTO=0]="AUTO",t[t.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED",(n=r=i.GLTFLoaderAnimationStartMode||(i.GLTFLoaderAnimationStartMode={}))[n.NONE=0]="NONE",n[n.FIRST=1]="FIRST",n[n.ALL=2]="ALL",(o=i.GLTFLoaderState||(i.GLTFLoaderState={}))[o.LOADING=0]="LOADING",o[o.READY=1]="READY",o[o.COMPLETE=2]="COMPLETE";var a=(function(){function l(){this.onParsedObservable=new i.Observable,this.coordinateSystemMode=e.AUTO,this.animationStartMode=r.FIRST,this.compileMaterials=!1,this.useClipPlane=!1,this.compileShadowGenerators=!1,this.transparencyAsCoverage=!1,this.preprocessUrlAsync=function(e){return Promise.resolve(e)},this.onMeshLoadedObservable=new i.Observable,this.onTextureLoadedObservable=new i.Observable,this.onMaterialLoadedObservable=new i.Observable,this.onCameraLoadedObservable=new i.Observable,this.onCompleteObservable=new i.Observable,this.onErrorObservable=new i.Observable,this.onDisposeObservable=new i.Observable,this.onExtensionLoadedObservable=new i.Observable,this.validate=!1,this.onValidatedObservable=new i.Observable,this._loader=null,this.name="gltf",this.extensions={".gltf":{isBinary:!1},".glb":{isBinary:!0}},this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled}return Object.defineProperty(l.prototype,"onParsed",{set:function(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),this._onParsedObserver=this.onParsedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onMeshLoaded",{set:function(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onTextureLoaded",{set:function(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onMaterialLoaded",{set:function(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onCameraLoaded",{set:function(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onComplete",{set:function(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onError",{set:function(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onDispose",{set:function(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onExtensionLoaded",{set:function(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.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:!0,configurable:!0}),Object.defineProperty(l.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:!0,configurable:!0}),Object.defineProperty(l.prototype,"onValidated",{set:function(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)},enumerable:!0,configurable:!0}),l.prototype.dispose=function(){this._loader&&(this._loader.dispose(),this._loader=null),this._clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()},l.prototype._clear=function(){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()},l.prototype.importMeshAsync=function(t,r,e,n,o,a){var i=this;return this._parseAsync(r,e,n,a).then((function(e){return i._log("Loading "+(a||"")),i._loader=i._getLoader(e),i._loader.importMeshAsync(t,r,e,n,o,a)}))},l.prototype.loadAsync=function(t,e,r,n,o){var a=this;return this._parseAsync(t,e,r,o).then((function(e){return a._log("Loading "+(o||"")),a._loader=a._getLoader(e),a._loader.loadAsync(t,e,r,n,o)}))},l.prototype.loadAssetContainerAsync=function(r,e,t,n,o){var a=this;return this._parseAsync(r,e,t,o).then((function(e){return a._log("Loading "+(o||"")),a._loader=a._getLoader(e),a._loader.importMeshAsync(null,r,e,t,n,o).then((function(e){var t=new i.AssetContainer(r);return Array.prototype.push.apply(t.meshes,e.meshes),Array.prototype.push.apply(t.particleSystems,e.particleSystems),Array.prototype.push.apply(t.skeletons,e.skeletons),Array.prototype.push.apply(t.animationGroups,e.animationGroups),t.removeAllFromScene(),t}))}))},l.prototype.canDirectLoad=function(e){return-1!==e.indexOf("scene")&&-1!==e.indexOf("node")},l.prototype.createPlugin=function(){return new l},Object.defineProperty(l.prototype,"loaderState",{get:function(){return this._loader?this._loader.state:null},enumerable:!0,configurable:!0}),l.prototype.whenCompleteAsync=function(){var r=this;return new Promise(function(e,t){r.onCompleteObservable.addOnce((function(){e()})),r.onErrorObservable.addOnce((function(e){t(e)}))})},l.prototype._parseAsync=function(e,r,n,o){var a=this;return Promise.resolve().then((function(){var t=r instanceof ArrayBuffer?a._unpackBinary(r):{json:r,bin:null};return a._validateAsync(e,t.json,n,o).then((function(){a._startPerformanceCounter("Parse JSON"),a._log("JSON length: "+t.json.length);var e={json:JSON.parse(t.json),bin:t.bin};return a._endPerformanceCounter("Parse JSON"),a.onParsedObservable.notifyObservers(e),a.onParsedObservable.clear(),e}))}))},l.prototype._validateAsync=function(t,e,r,n){var o=this;if(!this.validate||"undefined"==typeof GLTFValidator)return Promise.resolve();this._startPerformanceCounter("Validate JSON");var a={externalResourceFunction:function(e){return o.preprocessUrlAsync(r+e).then((function(e){return t._loadFileAsync(e,!0,!0)})).then((function(e){return new Uint8Array(e)}))}};return n&&"data:"!==n.substr(0,5)&&(a.uri="file:"===r?n:""+r+n),GLTFValidator.validateString(e,a).then((function(e){o._endPerformanceCounter("Validate JSON"),o.onValidatedObservable.notifyObservers(e),o.onValidatedObservable.clear()}))},l.prototype._getLoader=function(e){var t=e.json.asset||{};this._log("Asset version: "+t.version),t.minVersion&&this._log("Asset minimum version: "+t.minVersion),t.generator&&this._log("Asset generator: "+t.generator);var r=l._parseVersion(t.version);if(!r)throw new Error("Invalid version: "+t.version);if(void 0!==t.minVersion){var n=l._parseVersion(t.minVersion);if(!n)throw new Error("Invalid minimum version: "+t.minVersion);if(0<l._compareVersion(n,{major:2,minor:0}))throw new Error("Incompatible minimum version: "+t.minVersion)}var o={1:l._CreateGLTFLoaderV1,2:l._CreateGLTFLoaderV2}[r.major];if(!o)throw new Error("Unsupported version: "+t.version);return o(this)},l.prototype._unpackBinary=function(e){this._startPerformanceCounter("Unpack binary"),this._log("Binary length: "+e.byteLength);var t=new s(e),r=t.readUint32();if(1179937895!==r)throw new Error("Unexpected magic: "+r);var n,o=t.readUint32();switch(this.loggingEnabled&&this._log("Binary version: "+o),o){case 1:n=this._unpackBinaryV1(t);break;case 2:n=this._unpackBinaryV2(t);break;default:throw new Error("Unsupported version: "+o)}return this._endPerformanceCounter("Unpack binary"),n},l.prototype._unpackBinaryV1=function(e){var t=e.readUint32();if(t!=e.getLength())throw new Error("Length in header does not match actual data length: "+t+" != "+e.getLength());var r,n=e.readUint32(),o=e.readUint32();switch(o){case 0:r=l._decodeBufferToText(e.readUint8Array(n));break;default:throw new Error("Unexpected content format: "+o)}var a=e.getLength()-e.getPosition();return{json:r,bin:e.readUint8Array(a)}},l.prototype._unpackBinaryV2=function(e){var t=1313821514,r=5130562,n=e.readUint32();if(n!==e.getLength())throw new Error("Length in header does not match actual data length: "+n+" != "+e.getLength());var o=e.readUint32();if(e.readUint32()!==t)throw new Error("First chunk format is not JSON");for(var a=l._decodeBufferToText(e.readUint8Array(o)),i=null;e.getPosition()<e.getLength();){var s=e.readUint32();switch(e.readUint32()){case t:throw new Error("Unexpected JSON chunk");case r:i=e.readUint8Array(s);break;default:e.skipBytes(s)}}return{json:a,bin:i}},l._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},l._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},l._decodeBufferToText=function(e){for(var t="",r=e.byteLength,n=0;n<r;n++)t+=String.fromCharCode(e[n]);return t},l.prototype._logOpen=function(e){this._log(e),this._logIndentLevel++},l.prototype._logClose=function(){--this._logIndentLevel},l.prototype._logEnabled=function(e){var t=l._logSpaces.substr(0,2*this._logIndentLevel);i.Tools.Log(""+t+e)},l.prototype._logDisabled=function(e){},l.prototype._startPerformanceCounterEnabled=function(e){i.Tools.StartPerformanceCounter(e)},l.prototype._startPerformanceCounterDisabled=function(e){},l.prototype._endPerformanceCounterEnabled=function(e){i.Tools.EndPerformanceCounter(e)},l.prototype._endPerformanceCounterDisabled=function(e){},l.IncrementalLoading=!0,l.HomogeneousCoordinates=!1,l._logSpaces=" ",l})();i.GLTFFileLoader=a;var s=(function(){function e(e){this._arrayBuffer=e,this._dataView=new DataView(e),this._byteOffset=0}return e.prototype.getPosition=function(){return this._byteOffset},e.prototype.getLength=function(){return this._arrayBuffer.byteLength},e.prototype.readUint32=function(){var e=this._dataView.getUint32(this._byteOffset,!0);return this._byteOffset+=4,e},e.prototype.readUint8Array=function(e){var t=new Uint8Array(this._arrayBuffer,this._byteOffset,e);return this._byteOffset+=e,t},e.prototype.skipBytes=function(e){this._byteOffset+=e},e})();i.SceneLoader&&i.SceneLoader.RegisterPlugin(new a)})(BABYLON||(BABYLON={})),(function(A){!(function(e){var g=(function(){function e(){}return e.Get=function(e,t,r){if(!t||null==r||!t[r])throw new Error(e+": Failed to find index ("+r+")");return t[r]},e.Assign=function(e){if(e)for(var t=0;t<e.length;t++)e[t].index=t},e})();e.ArrayItem=g;var t=(function(){function p(e){this._completePromises=new Array,this._disposed=!1,this._state=null,this._extensions={},this._defaultBabylonMaterialData={},this._requests=new Array,this._parent=e}return p.RegisterExtension=function(e,t){p.UnregisterExtension(e)&&A.Tools.Warn("Extension with the name '"+e+"' already exists"),p._ExtensionFactories[e]=t,p._ExtensionNames.push(e)},p.UnregisterExtension=function(e){if(!p._ExtensionFactories[e])return!1;delete p._ExtensionFactories[e];var t=p._ExtensionNames.indexOf(e);return-1!==t&&p._ExtensionNames.splice(t,1),!0},Object.defineProperty(p.prototype,"state",{get:function(){return this._state},enumerable:!0,configurable:!0}),p.prototype.dispose=function(){if(!this._disposed){this._disposed=!0;for(var e=0,t=this._requests;e<t.length;e++){t[e].abort()}for(var r in this._requests.length=0,delete this.gltf,delete this.babylonScene,this._completePromises.length=0,this._extensions){this._extensions[r].dispose&&this._extensions[r].dispose()}this._extensions={},delete this._rootBabylonMesh,delete this._progressCallback,this._parent._clear()}},p.prototype.importMeshAsync=function(a,i,s,l,u,c){var d=this;return Promise.resolve().then((function(){d.babylonScene=i,d._rootUrl=l,d._fileName=c||"scene",d._progressCallback=u,d._loadData(s);var e=null;if(a){var r={};if(d.gltf.nodes)for(var t=0,n=d.gltf.nodes;t<n.length;t++){var o=n[t];o.name&&(r[o.name]=o.index)}e=(a instanceof Array?a:[a]).map((function(e){var t=r[e];if(void 0===t)throw new Error("Failed to find node '"+e+"'");return t}))}return d._loadAsync(e,(function(){return{meshes:d._getMeshes(),particleSystems:[],skeletons:d._getSkeletons(),animationGroups:d._getAnimationGroups()}}))}))},p.prototype.loadAsync=function(e,t,r,n,o){var a=this;return Promise.resolve().then((function(){return a.babylonScene=e,a._rootUrl=r,a._fileName=o||"scene",a._progressCallback=n,a._loadData(t),a._loadAsync(null,(function(){}))}))},p.prototype._loadAsync=function(a,i){var s=this;return Promise.resolve().then((function(){s._uniqueRootUrl=-1===s._rootUrl.indexOf("file:")&&s._fileName?s._rootUrl:""+s._rootUrl+Date.now()+"/",s._loadExtensions(),s._checkExtensions();var e=A.GLTFLoaderState[A.GLTFLoaderState.LOADING]+" => "+A.GLTFLoaderState[A.GLTFLoaderState.READY],t=A.GLTFLoaderState[A.GLTFLoaderState.LOADING]+" => "+A.GLTFLoaderState[A.GLTFLoaderState.COMPLETE];s._parent._startPerformanceCounter(e),s._parent._startPerformanceCounter(t),s._setState(A.GLTFLoaderState.LOADING),s._extensionsOnLoading();var r=new Array;if(a)r.push(s.loadSceneAsync("#/nodes",{nodes:a,index:-1}));else{var n=g.Get("#/scene",s.gltf.scenes,s.gltf.scene||0);r.push(s.loadSceneAsync("#/scenes/"+n.index,n))}s._parent.compileMaterials&&r.push(s._compileMaterialsAsync()),s._parent.compileShadowGenerators&&r.push(s._compileShadowGeneratorsAsync());var o=Promise.all(r).then((function(){return s._setState(A.GLTFLoaderState.READY),s._extensionsOnReady(),s._startAnimations(),i()}));return o.then((function(){s._parent._endPerformanceCounter(e),A.Tools.SetImmediate((function(){s._disposed||Promise.all(s._completePromises).then((function(){s._parent._endPerformanceCounter(t),s._setState(A.GLTFLoaderState.COMPLETE),s._parent.onCompleteObservable.notifyObservers(void 0),s._parent.onCompleteObservable.clear(),s.dispose()}),(function(e){s._parent.onErrorObservable.notifyObservers(e),s._parent.onErrorObservable.clear(),s.dispose()}))}))})),o}),(function(e){throw s._disposed||(s._parent.onErrorObservable.notifyObservers(e),s._parent.onErrorObservable.clear(),s.dispose()),e}))},p.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 r=t[0];(r.byteLength<e.bin.byteLength-3||r.byteLength>e.bin.byteLength)&&A.Tools.Warn("Binary buffer length ("+r.byteLength+") from JSON does not match chunk length ("+e.bin.byteLength+")"),r._data=Promise.resolve(e.bin)}else A.Tools.Warn("Unexpected BIN chunk")}},p.prototype._setupData=function(){if(g.Assign(this.gltf.accessors),g.Assign(this.gltf.animations),g.Assign(this.gltf.buffers),g.Assign(this.gltf.bufferViews),g.Assign(this.gltf.cameras),g.Assign(this.gltf.images),g.Assign(this.gltf.materials),g.Assign(this.gltf.meshes),g.Assign(this.gltf.nodes),g.Assign(this.gltf.samplers),g.Assign(this.gltf.scenes),g.Assign(this.gltf.skins),g.Assign(this.gltf.textures),this.gltf.nodes){for(var e={},t=0,r=this.gltf.nodes;t<r.length;t++){if((l=r[t]).children)for(var n=0,o=l.children;n<o.length;n++){e[o[n]]=l.index}}for(var a=this._createRootNode(),i=0,s=this.gltf.nodes;i<s.length;i++){var l,u=e[(l=s[i]).index];l.parent=void 0===u?a:this.gltf.nodes[u]}}},p.prototype._loadExtensions=function(){for(var e=0,t=p._ExtensionNames;e<t.length;e++){var r=t[e],n=p._ExtensionFactories[r](this);this._extensions[r]=n,this._parent.onExtensionLoadedObservable.notifyObservers(n)}this._parent.onExtensionLoadedObservable.clear()},p.prototype._checkExtensions=function(){if(this.gltf.extensionsRequired)for(var e=0,t=this.gltf.extensionsRequired;e<t.length;e++){var r=t[e],n=this._extensions[r];if(!n||!n.enabled)throw new Error("Require extension "+r+" is not available")}},p.prototype._setState=function(e){this._state=e,this.log(A.GLTFLoaderState[this._state])},p.prototype._createRootNode=function(){this._rootBabylonMesh=new A.Mesh("__root__",this.babylonScene);var e={_babylonMesh:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case A.GLTFLoaderCoordinateSystemMode.AUTO:this.babylonScene.useRightHandedSystem||(e.rotation=[0,1,0,0],e.scale=[1,1,-1],p._LoadTransform(e,this._rootBabylonMesh));break;case A.GLTFLoaderCoordinateSystemMode.FORCE_RIGHT_HANDED:this.babylonScene.useRightHandedSystem=!0;break;default:throw new Error("Invalid coordinate system mode ("+this._parent.coordinateSystemMode+")")}return this._parent.onMeshLoadedObservable.notifyObservers(this._rootBabylonMesh),e},p.prototype.loadSceneAsync=function(e,t){var r=this,n=this._extensionsLoadSceneAsync(e,t);if(n)return n;var o=new Array;if(this.logOpen(e+" "+(t.name||"")),t.nodes)for(var a=0,i=t.nodes;a<i.length;a++){var s=i[a],l=g.Get(e+"/nodes/"+s,this.gltf.nodes,s);o.push(this.loadNodeAsync("#/nodes/"+l.index,l,(function(e){e.parent=r._rootBabylonMesh})))}return o.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(o).then((function(){}))},p.prototype._forEachPrimitive=function(e,t){if(e._primitiveBabylonMeshes)for(var r=0,n=e._primitiveBabylonMeshes;r<n.length;r++){t(n[r])}else t(e._babylonMesh)},p.prototype._getMeshes=function(){var e=new Array;e.push(this._rootBabylonMesh);var t=this.gltf.nodes;if(t)for(var r=0,n=t;r<n.length;r++){var o=n[r];if(o._babylonMesh&&e.push(o._babylonMesh),o._primitiveBabylonMeshes)for(var a=0,i=o._primitiveBabylonMeshes;a<i.length;a++){var s=i[a];e.push(s)}}return e},p.prototype._getSkeletons=function(){var e=new Array,t=this.gltf.skins;if(t)for(var r=0,n=t;r<n.length;r++){var o=n[r];o._babylonSkeleton&&e.push(o._babylonSkeleton)}return e},p.prototype._getAnimationGroups=function(){var e=new Array,t=this.gltf.animations;if(t)for(var r=0,n=t;r<n.length;r++){var o=n[r];o._babylonAnimationGroup&&e.push(o._babylonAnimationGroup)}return e},p.prototype._startAnimations=function(){switch(this._parent.animationStartMode){case A.GLTFLoaderAnimationStartMode.NONE:break;case A.GLTFLoaderAnimationStartMode.FIRST:0!==(e=this._getAnimationGroups()).length&&e[0].start(!0);break;case A.GLTFLoaderAnimationStartMode.ALL:for(var e,t=0,r=e=this._getAnimationGroups();t<r.length;t++){r[t].start(!0)}break;default:return void A.Tools.Error("Invalid animation start mode ("+this._parent.animationStartMode+")")}},p.prototype.loadNodeAsync=function(r,n,e){var o=this;void 0===e&&(e=function(){});var t=this._extensionsLoadNodeAsync(r,n,e);if(t)return t;if(n._babylonMesh)throw new Error(r+": Invalid recursive node hierarchy");var a=new Array;this.logOpen(r+" "+(n.name||""));var i=new A.Mesh(n.name||"node"+n.index,this.babylonScene);if((n._babylonMesh=i).setEnabled(!1),p._LoadTransform(n,i),null!=n.mesh){var s=g.Get(r+"/mesh",this.gltf.meshes,n.mesh);a.push(this._loadMeshAsync("#/meshes/"+s.index,n,s,i))}if(null!=n.camera){var l=g.Get(r+"/camera",this.gltf.cameras,n.camera);a.push(this.loadCameraAsync("#/cameras/"+l.index,l,(function(e){e.parent=i})))}if(n.children)for(var u=function(e){var t=g.Get(r+"/children/"+e,c.gltf.nodes,e);a.push(c.loadNodeAsync("#/nodes/"+n.index,t,(function(e){null==t.skin?e.parent=i:e.parent=o._rootBabylonMesh})))},c=this,d=0,f=n.children;d<f.length;d++){u(f[d])}return e(i),this._parent.onMeshLoadedObservable.notifyObservers(i),this.logClose(),Promise.all(a).then((function(){return i.setEnabled(!0),i}))},p.prototype._loadMeshAsync=function(e,t,r,n){var o=this,a=new Array;this.logOpen(e+" "+(r.name||""));var i=r.primitives;if(!i||0===i.length)throw new Error(e+": Primitives are missing");if(g.Assign(i),1===i.length){var s=i[0];a.push(this._loadMeshPrimitiveAsync(e+"/primitives/"+s.index,t,r,s,n))}else{t._primitiveBabylonMeshes=[];for(var l=0,u=i;l<u.length;l++){s=u[l];var c=new A.Mesh((r.name||n.name)+"_"+s.index,this.babylonScene,n);t._primitiveBabylonMeshes.push(c),a.push(this._loadMeshPrimitiveAsync(e+"/primitives/"+s.index,t,r,s,c)),this._parent.onMeshLoadedObservable.notifyObservers(n)}}if(null!=t.skin){var d=g.Get(e+"/skin",this.gltf.skins,t.skin);a.push(this._loadSkinAsync("#/skins/"+d.index,t,d))}return this.logClose(),Promise.all(a).then((function(){o._forEachPrimitive(t,(function(e){e._refreshBoundingInfo(!0)}))}))},p.prototype._loadMeshPrimitiveAsync=function(t,e,r,n,o){var a=this,i=new Array;this.logOpen(""+t),this._createMorphTargets(t,e,r,n,o),i.push(this._loadVertexDataAsync(t,n,o).then((function(e){return a._loadMorphTargetsAsync(t,n,o,e).then((function(){e.applyToMesh(o)}))})));var s=p._GetDrawMode(t,n.mode);if(null==n.material){var l=this._defaultBabylonMaterialData[s];l||(l=this._createDefaultMaterial("__gltf_default",s),this._parent.onMaterialLoadedObservable.notifyObservers(l),this._defaultBabylonMaterialData[s]=l),o.material=l}else{var u=g.Get(t+"/material",this.gltf.materials,n.material);i.push(this._loadMaterialAsync("#/materials/"+u.index,u,o,s,(function(e){o.material=e})))}return this.logClose(),Promise.all(i).then((function(){}))},p.prototype._loadVertexDataAsync=function(o,e,a){var i=this,t=this._extensionsLoadVertexDataAsync(o,e,a);if(t)return t;var s=e.attributes;if(!s)throw new Error(o+": Attributes are missing");var l=new Array,u=new A.Geometry(a.name,this.babylonScene);if(null==e.indices)a.isUnIndexed=!0;else{var r=g.Get(o+"/indices",this.gltf.accessors,e.indices);l.push(this._loadIndicesAccessorAsync("#/accessors/"+r.index,r).then((function(e){u.setIndices(e)})))}var n=function(e,t,r){if(null!=s[e]){a._delayInfo=a._delayInfo||[],-1===a._delayInfo.indexOf(t)&&a._delayInfo.push(t);var n=g.Get(o+"/attributes/"+e,i.gltf.accessors,s[e]);l.push(i._loadVertexAccessorAsync("#/accessors/"+n.index,n,t).then((function(e){u.setVerticesBuffer(e,n.count)}))),r&&r(n)}};return n("POSITION",A.VertexBuffer.PositionKind),n("NORMAL",A.VertexBuffer.NormalKind),n("TANGENT",A.VertexBuffer.TangentKind),n("TEXCOORD_0",A.VertexBuffer.UVKind),n("TEXCOORD_1",A.VertexBuffer.UV2Kind),n("JOINTS_0",A.VertexBuffer.MatricesIndicesKind),n("WEIGHTS_0",A.VertexBuffer.MatricesWeightsKind),n("COLOR_0",A.VertexBuffer.ColorKind,(function(e){"VEC4"===e.type&&(a.hasVertexAlpha=!0)})),Promise.all(l).then((function(){return u}))},p.prototype._createMorphTargets=function(e,t,r,n,o){if(n.targets){if(null==t._numMorphTargets)t._numMorphTargets=n.targets.length;else if(n.targets.length!==t._numMorphTargets)throw new Error(e+": Primitives do not have the same number of targets");o.morphTargetManager=new A.MorphTargetManager;for(var a=0;a<n.targets.length;a++){var i=t.weights?t.weights[a]:r.weights?r.weights[a]:0;o.morphTargetManager.addTarget(new A.MorphTarget("morphTarget"+a,i))}}},p.prototype._loadMorphTargetsAsync=function(e,t,r,n){if(!t.targets)return Promise.resolve();for(var o=new Array,a=r.morphTargetManager,i=0;i<a.numTargets;i++){var s=a.getTarget(i);o.push(this._loadMorphTargetVertexDataAsync(e+"/targets/"+i,n,t.targets[i],s))}return Promise.all(o).then((function(){}))},p.prototype._loadMorphTargetVertexDataAsync=function(a,i,s,t){var l=this,u=new Array,e=function(e,t,r){if(null!=s[e]){var n=i.getVertexBuffer(t);if(n){var o=g.Get(a+"/"+e,l.gltf.accessors,s[e]);u.push(l._loadFloatAccessorAsync("#/accessors/"+o.index,o).then((function(e){r(n,e)})))}}};return e("POSITION",A.VertexBuffer.PositionKind,(function(e,r){e.forEach(r.length,(function(e,t){r[t]+=e})),t.setPositions(r)})),e("NORMAL",A.VertexBuffer.NormalKind,(function(e,r){e.forEach(r.length,(function(e,t){r[t]+=e})),t.setNormals(r)})),e("TANGENT",A.VertexBuffer.TangentKind,(function(e,r){var n=0;e.forEach(r.length/3*4,(function(e,t){(t+1)%4!=0&&(r[n++]+=e)})),t.setTangents(r)})),Promise.all(u).then((function(){}))},p._LoadTransform=function(e,t){var r=A.Vector3.Zero(),n=A.Quaternion.Identity(),o=A.Vector3.One();e.matrix?A.Matrix.FromArray(e.matrix).decompose(o,n,r):(e.translation&&(r=A.Vector3.FromArray(e.translation)),e.rotation&&(n=A.Quaternion.FromArray(e.rotation)),e.scale&&(o=A.Vector3.FromArray(e.scale)));t.position=r,t.rotationQuaternion=n,t.scaling=o},p.prototype._loadSkinAsync=function(e,r,t){var n=this,o=function(t){n._forEachPrimitive(r,(function(e){e.skeleton=t})),r._babylonMesh.position=A.Vector3.Zero(),r._babylonMesh.rotationQuaternion=A.Quaternion.Identity(),r._babylonMesh.scaling=A.Vector3.One()};if(t._promise)return t._promise.then((function(){o(t._babylonSkeleton)}));var a="skeleton"+t.index,i=new A.Skeleton(t.name||a,a,this.babylonScene);return t._babylonSkeleton=i,this._loadBones(e,t),o(i),t._promise=this._loadSkinInverseBindMatricesDataAsync(e,t).then((function(e){n._updateBoneMatrices(i,e)}))},p.prototype._loadBones=function(e,t){for(var r={},n=0,o=t.joints;n<o.length;n++){var a=o[n],i=g.Get(e+"/joints/"+a,this.gltf.nodes,a);this._loadBone(i,t,r)}},p.prototype._loadBone=function(e,t,r){var n=r[e.index];if(n)return n;var o=null;e.parent&&e.parent._babylonMesh!==this._rootBabylonMesh&&(o=this._loadBone(e.parent,t,r));var a=t.joints.indexOf(e.index);return n=new A.Bone(e.name||"joint"+e.index,t._babylonSkeleton,o,this._getNodeMatrix(e),null,null,a),r[e.index]=n,e._babylonBones=e._babylonBones||[],e._babylonBones.push(n),n},p.prototype._loadSkinInverseBindMatricesDataAsync=function(e,t){if(null==t.inverseBindMatrices)return Promise.resolve(null);var r=g.Get(e+"/inverseBindMatrices",this.gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync("#/accessors/"+r.index,r)},p.prototype._updateBoneMatrices=function(e,t){for(var r=0,n=e.bones;r<n.length;r++){var o=n[r],a=A.Matrix.Identity(),i=o._index;t&&-1!==i&&(A.Matrix.FromArrayToRef(t,16*i,a),a.invertToRef(a));var s=o.getParent();s&&a.multiplyToRef(s.getInvertedAbsoluteTransform(),a),o.updateMatrix(a,!1,!1),o._updateDifferenceMatrix(void 0,!1)}},p.prototype._getNodeMatrix=function(e){return e.matrix?A.Matrix.FromArray(e.matrix):A.Matrix.Compose(e.scale?A.Vector3.FromArray(e.scale):A.Vector3.One(),e.rotation?A.Quaternion.FromArray(e.rotation):A.Quaternion.Identity(),e.translation?A.Vector3.FromArray(e.translation):A.Vector3.Zero())},p.prototype.loadCameraAsync=function(e,t,r){void 0===r&&(r=function(){});var n=this._extensionsLoadCameraAsync(e,t,r);if(n)return n;var o=new Array;this.logOpen(e+" "+(t.name||""));var a=new A.FreeCamera(t.name||"camera"+t.index,A.Vector3.Zero(),this.babylonScene,!1);switch(a.rotation=new A.Vector3(0,Math.PI,0),t.type){case"perspective":var i=t.perspective;if(!i)throw new Error(e+": Camera perspective properties are missing");a.fov=i.yfov,a.minZ=i.znear,a.maxZ=i.zfar||Number.MAX_VALUE;break;case"orthographic":if(!t.orthographic)throw new Error(e+": Camera orthographic properties are missing");a.mode=A.Camera.ORTHOGRAPHIC_CAMERA,a.orthoLeft=-t.orthographic.xmag,a.orthoRight=t.orthographic.xmag,a.orthoBottom=-t.orthographic.ymag,a.orthoTop=t.orthographic.ymag,a.minZ=t.orthographic.znear,a.maxZ=t.orthographic.zfar;break;default:throw new Error(e+": Invalid camera type ("+t.type+")")}return r(a),this._parent.onCameraLoadedObservable.notifyObservers(a),Promise.all(o).then((function(){return a}))},p.prototype._loadAnimationsAsync=function(){var e=this.gltf.animations;if(!e)return Promise.resolve();for(var t=new Array,r=0;r<e.length;r++){var n=e[r];t.push(this.loadAnimationAsync("#/animations/"+n.index,n))}return Promise.all(t).then((function(){}))},p.prototype.loadAnimationAsync=function(e,t){var r=this._extensionsLoadAnimationAsync(e,t);if(r)return r;var n=new A.AnimationGroup(t.name||"animation"+t.index,this.babylonScene);t._babylonAnimationGroup=n;var o=new Array;g.Assign(t.channels),g.Assign(t.samplers);for(var a=0,i=t.channels;a<i.length;a++){var s=i[a];o.push(this._loadAnimationChannelAsync(e+"/channels/"+s.index,e,t,s,n))}return Promise.all(o).then((function(){return n.normalize(0),n}))},p.prototype._loadAnimationChannelAsync=function(_,e,t,y,m){var b=this,v=g.Get(_+"/target/node",this.gltf.nodes,y.target.node);if("weights"===y.target.path&&!v._numMorphTargets||"weights"!==y.target.path&&!v._babylonMesh)return Promise.resolve();if(null!=v.skin&&"weights"!==y.target.path)return Promise.resolve();var r=g.Get(_+"/sampler",t.samplers,y.sampler);return this._loadAnimationSamplerAsync(e+"/samplers/"+y.sampler,r).then((function(r){var t,a;switch(y.target.path){case"translation":t="position",a=A.Animation.ANIMATIONTYPE_VECTOR3;break;case"rotation":t="rotationQuaternion",a=A.Animation.ANIMATIONTYPE_QUATERNION;break;case"scale":t="scaling",a=A.Animation.ANIMATIONTYPE_VECTOR3;break;case"weights":t="influence",a=A.Animation.ANIMATIONTYPE_FLOAT;break;default:throw new Error(_+"/target/path: Invalid value ("+y.target.path+")")}var n,e,o=0;switch(t){case"position":n=function(){var e=A.Vector3.FromArray(r.output,o);return o+=3,e};break;case"rotationQuaternion":n=function(){var e=A.Quaternion.FromArray(r.output,o);return o+=4,e};break;case"scaling":n=function(){var e=A.Vector3.FromArray(r.output,o);return o+=3,e};break;case"influence":n=function(){for(var e=new Array(v._numMorphTargets),t=0;t<v._numMorphTargets;t++)e[t]=r.output[o++];return e}}switch(r.interpolation){case"STEP":e=function(e){return{frame:r.input[e],value:n(),interpolation:A.AnimationKeyInterpolation.STEP}};break;case"LINEAR":e=function(e){return{frame:r.input[e],value:n()}};break;case"CUBICSPLINE":e=function(e){return{frame:r.input[e],inTangent:n(),value:n(),outTangent:n()}}}for(var i=new Array(r.input.length),s=0;s<r.input.length;s++)i[s]=e(s);if("influence"===t)for(var l=function(n){var e=m.name+"_channel"+m.targetedAnimations.length,o=new A.Animation(e,t,1,a);o.setKeys(i.map((function(e){return{frame:e.frame,inTangent:e.inTangent?e.inTangent[n]:void 0,value:e.value[n],outTangent:e.outTangent?e.outTangent[n]:void 0}}))),b._forEachPrimitive(v,(function(e){var t=e.morphTargetManager.getTarget(n),r=o.clone();t.animations.push(r),m.addTargetedAnimation(r,t)}))},u=0;u<v._numMorphTargets;u++)l(u);else{var c=m.name+"_channel"+m.targetedAnimations.length,d=new A.Animation(c,t,1,a);if(d.setKeys(i),v._babylonBones){for(var f=[v._babylonMesh].concat(v._babylonBones),h=0,p=f;h<p.length;h++){p[h].animations.push(d)}m.addTargetedAnimation(d,f)}else v._babylonMesh.animations.push(d),m.addTargetedAnimation(d,v._babylonMesh)}}))},p.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(e+"/interpolation: Invalid value ("+t.interpolation+")")}var r=g.Get(e+"/input",this.gltf.accessors,t.input),o=g.Get(e+"/output",this.gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync("#/accessors/"+r.index,r),this._loadFloatAccessorAsync("#/accessors/"+o.index,o)]).then((function(e){var t=e[0],r=e[1];return{input:t,interpolation:n,output:r}})),t._data},p.prototype._loadBufferAsync=function(e,t){if(t._data)return t._data;if(!t.uri)throw new Error(e+"/uri: Value is missing");return t._data=this.loadUriAsync(e+"/uri",t.uri),t._data},p.prototype.loadBufferViewAsync=function(t,r){if(r._data)return r._data;var e=g.Get(t+"/buffer",this.gltf.buffers,r.buffer);return r._data=this._loadBufferAsync("#/buffers/"+e.index,e).then((function(e){try{return new Uint8Array(e.buffer,e.byteOffset+(r.byteOffset||0),r.byteLength)}catch(e){throw new Error(t+": "+e.message)}})),r._data},p.prototype._loadIndicesAccessorAsync=function(t,r){if("SCALAR"!==r.type)throw new Error(t+"/type: Invalid value "+r.type);if(5121!==r.componentType&&5123!==r.componentType&&5125!==r.componentType)throw new Error(t+"/componentType: Invalid value "+r.componentType);if(r._data)return r._data;var e=g.Get(t+"/bufferView",this.gltf.bufferViews,r.bufferView);return r._data=this.loadBufferViewAsync("#/bufferViews/"+e.index,e).then((function(e){return p._GetTypedArray(t,r.componentType,e,r.byteOffset,r.count)})),r._data},p.prototype._loadFloatAccessorAsync=function(c,d){var r=this;if(5126!==d.componentType)throw new Error("Invalid component type "+d.componentType);if(d._data)return d._data;var f=p._GetNumComponents(c,d.type),t=f*d.count;if(null==d.bufferView)d._data=Promise.resolve(new Float32Array(t));else{var e=g.Get(c+"/bufferView",this.gltf.bufferViews,d.bufferView);d._data=this.loadBufferViewAsync("#/bufferViews/"+e.index,e).then((function(e){return p._GetTypedArray(c,d.componentType,e,d.byteOffset,t)}))}if(d.sparse){var h=d.sparse;d._data=d._data.then((function(u){var e=g.Get(c+"/sparse/indices/bufferView",r.gltf.bufferViews,h.indices.bufferView),t=g.Get(c+"/sparse/values/bufferView",r.gltf.bufferViews,h.values.bufferView);return Promise.all([r.loadBufferViewAsync("#/bufferViews/"+e.index,e),r.loadBufferViewAsync("#/bufferViews/"+t.index,t)]).then((function(e){for(var t=e[0],r=e[1],n=p._GetTypedArray(c+"/sparse/indices",h.indices.componentType,t,h.indices.byteOffset,h.count),o=p._GetTypedArray(c+"/sparse/values",d.componentType,r,h.values.byteOffset,f*h.count),a=0,i=0;i<n.length;i++)for(var s=n[i]*f,l=0;l<f;l++)u[s++]=o[a++];return u}))}))}return d._data},p.prototype._loadVertexBufferViewAsync=function(e,t){var r=this;return e._babylonBuffer||(e._babylonBuffer=this.loadBufferViewAsync("#/bufferViews/"+e.index,e).then((function(e){return new A.Buffer(r.babylonScene.getEngine(),e,!1)}))),e._babylonBuffer},p.prototype._loadVertexAccessorAsync=function(r,n,o){var a=this;if(n._babylonVertexBuffer)return n._babylonVertexBuffer;if(n.sparse)n._babylonVertexBuffer=this._loadFloatAccessorAsync("#/accessors/"+n.index,n).then((function(e){return new A.VertexBuffer(a.babylonScene.getEngine(),e,o,!1)}));else if(n.byteOffset&&n.byteOffset%A.VertexBuffer.GetTypeByteLength(n.componentType)!=0)A.Tools.Warn("Accessor byte offset is not a multiple of component type byte length"),n._babylonVertexBuffer=this._loadFloatAccessorAsync("#/accessors/"+n.index,n).then((function(e){return new A.VertexBuffer(a.babylonScene.getEngine(),e,o,!1)}));else{var i=g.Get(r+"/bufferView",this.gltf.bufferViews,n.bufferView);n._babylonVertexBuffer=this._loadVertexBufferViewAsync(i,o).then((function(e){var t=p._GetNumComponents(r,n.type);return new A.VertexBuffer(a.babylonScene.getEngine(),e,o,!1,!1,i.byteStride,!1,n.byteOffset,t,n.componentType,n.normalized,!0)}))}return n._babylonVertexBuffer},p.prototype._loadMaterialMetallicRoughnessPropertiesAsync=function(e,t,r){if(!(r instanceof A.PBRMaterial))throw new Error(e+": Material type not supported");var n=new Array;return t&&(t.baseColorFactor?(r.albedoColor=A.Color3.FromArray(t.baseColorFactor),r.alpha=t.baseColorFactor[3]):r.albedoColor=A.Color3.White(),r.metallic=null==t.metallicFactor?1:t.metallicFactor,r.roughness=null==t.roughnessFactor?1:t.roughnessFactor,t.baseColorTexture&&n.push(this.loadTextureInfoAsync(e+"/baseColorTexture",t.baseColorTexture,(function(e){r.albedoTexture=e}))),t.metallicRoughnessTexture&&(n.push(this.loadTextureInfoAsync(e+"/metallicRoughnessTexture",t.metallicRoughnessTexture,(function(e){r.metallicTexture=e}))),r.useMetallnessFromMetallicTextureBlue=!0,r.useRoughnessFromMetallicTextureGreen=!0,r.useRoughnessFromMetallicTextureAlpha=!1)),Promise.all(n).then((function(){}))},p.prototype._loadMaterialAsync=function(e,t,r,n,o){void 0===o&&(o=function(){});var a=this._extensionsLoadMaterialAsync(e,t,r,n,o);if(a)return a;t._babylonData=t._babylonData||{};var i=t._babylonData[n];if(!i){this.logOpen(e+" "+(t.name||""));var s=this.createMaterial(e,t,n);i={material:s,meshes:[],promise:this.loadMaterialPropertiesAsync(e,t,s)},t._babylonData[n]=i,this._parent.onMaterialLoadedObservable.notifyObservers(s),this.logClose()}return i.meshes.push(r),r.onDisposeObservable.addOnce((function(){var e=i.meshes.indexOf(r);-1!==e&&i.meshes.splice(e,1)})),o(i.material),i.promise.then((function(){return i.material}))},p.prototype._createDefaultMaterial=function(e,t){var r=new A.PBRMaterial(e,this.babylonScene);return r.sideOrientation=this.babylonScene.useRightHandedSystem?A.Material.CounterClockWiseSideOrientation:A.Material.ClockWiseSideOrientation,r.fillMode=t,r.enableSpecularAntiAliasing=!0,r.useRadianceOverAlpha=!this._parent.transparencyAsCoverage,r.useSpecularOverAlpha=!this._parent.transparencyAsCoverage,r.transparencyMode=A.PBRMaterial.PBRMATERIAL_OPAQUE,r.metallic=1,r.roughness=1,r},p.prototype.createMaterial=function(e,t,r){var n=this._extensionsCreateMaterial(e,t,r);if(n)return n;var o=t.name||"material"+t.index;return this._createDefaultMaterial(o,r)},p.prototype.loadMaterialPropertiesAsync=function(e,t,r){var n=this._extensionsLoadMaterialPropertiesAsync(e,t,r);if(n)return n;var o=new Array;return o.push(this.loadMaterialBasePropertiesAsync(e,t,r)),t.pbrMetallicRoughness&&o.push(this._loadMaterialMetallicRoughnessPropertiesAsync(e+"/pbrMetallicRoughness",t.pbrMetallicRoughness,r)),this.loadMaterialAlphaProperties(e,t,r),Promise.all(o).then((function(){}))},p.prototype.loadMaterialBasePropertiesAsync=function(e,t,r){if(!(r instanceof A.PBRMaterial))throw new Error(e+": Material type not supported");var n=new Array;return r.emissiveColor=t.emissiveFactor?A.Color3.FromArray(t.emissiveFactor):new A.Color3(0,0,0),t.doubleSided&&(r.backFaceCulling=!1,r.twoSidedLighting=!0),t.normalTexture&&(n.push(this.loadTextureInfoAsync(e+"/normalTexture",t.normalTexture,(function(e){r.bumpTexture=e}))),r.invertNormalMapX=!this.babylonScene.useRightHandedSystem,r.invertNormalMapY=this.babylonScene.useRightHandedSystem,null!=t.normalTexture.scale&&(r.bumpTexture.level=t.normalTexture.scale)),t.occlusionTexture&&(n.push(this.loadTextureInfoAsync(e+"/occlusionTexture",t.occlusionTexture,(function(e){r.ambientTexture=e}))),r.useAmbientInGrayScale=!0,null!=t.occlusionTexture.strength&&(r.ambientTextureStrength=t.occlusionTexture.strength)),t.emissiveTexture&&n.push(this.loadTextureInfoAsync(e+"/emissiveTexture",t.emissiveTexture,(function(e){r.emissiveTexture=e}))),Promise.all(n).then((function(){}))},p.prototype.loadMaterialAlphaProperties=function(e,t,r){if(!(r instanceof A.PBRMaterial))throw new Error(e+": Material type not supported");switch(t.alphaMode||"OPAQUE"){case"OPAQUE":r.transparencyMode=A.PBRMaterial.PBRMATERIAL_OPAQUE;break;case"MASK":r.transparencyMode=A.PBRMaterial.PBRMATERIAL_ALPHATEST,r.alphaCutOff=null==t.alphaCutoff?.5:t.alphaCutoff,r.albedoTexture&&(r.albedoTexture.hasAlpha=!0);break;case"BLEND":r.transparencyMode=A.PBRMaterial.PBRMATERIAL_ALPHABLEND,r.albedoTexture&&(r.albedoTexture.hasAlpha=!0,r.useAlphaFromAlbedoTexture=!0);break;default:throw new Error(e+"/alphaMode: Invalid value ("+t.alphaMode+")")}},p.prototype.loadTextureInfoAsync=function(e,t,r){void 0===r&&(r=function(){});var n=this._extensionsLoadTextureInfoAsync(e,t,r);if(n)return n;this.logOpen(""+e);var o=g.Get(e+"/index",this.gltf.textures,t.index),a=this._loadTextureAsync("#/textures/"+t.index,o,(function(e){e.coordinatesIndex=t.texCoord||0,r(e)}));return this.logClose(),a},p.prototype._loadTextureAsync=function(r,e,t){var n=this;void 0===t&&(t=function(){});var o=new Array;this.logOpen(r+" "+(e.name||""));var a=null==e.sampler?p._DefaultSampler:g.Get(r+"/sampler",this.gltf.samplers,e.sampler),i=this._loadSampler("#/samplers/"+a.index,a),s=new A.Deferred,l=new A.Texture(null,this.babylonScene,i.noMipMaps,!1,i.samplingMode,function(){n._disposed||s.resolve()},function(e,t){n._disposed||s.reject(new Error(r+": "+(t&&t.message?t.message:e||"Failed to load texture")))});o.push(s.promise),l.name=e.name||"texture"+e.index,l.wrapU=i.wrapU,l.wrapV=i.wrapV;var u=g.Get(r+"/source",this.gltf.images,e.source);return o.push(this.loadImageAsync("#/images/"+u.index,u).then((function(e){var t=u.uri||n._fileName+"#image"+u.index,r="data:"+n._uniqueRootUrl+t;l.updateURL(r,new Blob([e],{type:u.mimeType}))}))),t(l),this._parent.onTextureLoadedObservable.notifyObservers(l),this.logClose(),Promise.all(o).then((function(){return l}))},p.prototype._loadSampler=function(e,t){return t._data||(t._data={noMipMaps:9728===t.minFilter||9729===t.minFilter,samplingMode:p._GetTextureSamplingMode(e,t),wrapU:p._GetTextureWrapMode(e+"/wrapS",t.wrapS),wrapV:p._GetTextureWrapMode(e+"/wrapT",t.wrapT)}),t._data},p.prototype.loadImageAsync=function(e,t){if(!t._data){if(this.logOpen(e+" "+(t.name||"")),t.uri)t._data=this.loadUriAsync(e+"/uri",t.uri);else{var r=g.Get(e+"/bufferView",this.gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync("#/bufferViews/"+r.index,r)}this.logClose()}return t._data},p.prototype.loadUriAsync=function(o,a){var i=this,e=this._extensionsLoadUriAsync(o,a);if(e)return e;if(!p._ValidateUri(a))throw new Error(o+": '"+a+"' is invalid");if(A.Tools.IsBase64(a)){var t=new Uint8Array(A.Tools.DecodeBase64(a));return this.log("Decoded "+a.substr(0,64)+"... ("+t.length+" bytes)"),Promise.resolve(t)}return this.log("Loading "+a),this._parent.preprocessUrlAsync(this._rootUrl+a).then((function(e){return new Promise(function(r,n){if(!i._disposed){var t=A.Tools.LoadFile(e,(function(e){if(!i._disposed){var t=new Uint8Array(e);i.log("Loaded "+a+" ("+t.length+" bytes)"),r(t)}}),(function(e){if(!i._disposed&&(t&&(t._lengthComputable=e.lengthComputable,t._loaded=e.loaded,t._total=e.total),i._state===A.GLTFLoaderState.LOADING))try{i._onProgress()}catch(e){n(e)}}),i.babylonScene.database,!0,(function(e,t){i._disposed||n(new A.LoadFileError(o+": Failed to load '"+a+"'"+(e?": "+e.status+" "+e.statusText:""),e))}));i._requests.push(t)}})}))},p.prototype._onProgress=function(){if(this._progressCallback){for(var e=!0,t=0,r=0,n=0,o=this._requests;n<o.length;n++){var a=o[n];if(void 0===a._lengthComputable||void 0===a._loaded||void 0===a._total)return;e=e&&a._lengthComputable,t+=a._loaded,r+=a._total}this._progressCallback(new A.SceneLoaderProgressEvent(e,t,e?r:0))}},p._GetTextureWrapMode=function(e,t){switch(t=null==t?10497:t){case 33071:return A.Texture.CLAMP_ADDRESSMODE;case 33648:return A.Texture.MIRROR_ADDRESSMODE;case 10497:return A.Texture.WRAP_ADDRESSMODE;default:return A.Tools.Warn(e+": Invalid value ("+t+")"),A.Texture.WRAP_ADDRESSMODE}},p._GetTextureSamplingMode=function(e,t){var r=null==t.magFilter?9729:t.magFilter,n=null==t.minFilter?9987:t.minFilter;if(9729===r)switch(n){case 9728:return A.Texture.LINEAR_NEAREST;case 9729:return A.Texture.LINEAR_LINEAR;case 9984:return A.Texture.LINEAR_NEAREST_MIPNEAREST;case 9985:return A.Texture.LINEAR_LINEAR_MIPNEAREST;case 9986:return A.Texture.LINEAR_NEAREST_MIPLINEAR;case 9987:return A.Texture.LINEAR_LINEAR_MIPLINEAR;default:return A.Tools.Warn(e+"/minFilter: Invalid value ("+n+")"),A.Texture.LINEAR_LINEAR_MIPLINEAR}else switch(9728!==r&&A.Tools.Warn(e+"/magFilter: Invalid value ("+r+")"),n){case 9728:return A.Texture.NEAREST_NEAREST;case 9729:return A.Texture.NEAREST_LINEAR;case 9984:return A.Texture.NEAREST_NEAREST_MIPNEAREST;case 9985:return A.Texture.NEAREST_LINEAR_MIPNEAREST;case 9986:return A.Texture.NEAREST_NEAREST_MIPLINEAR;case 9987:return A.Texture.NEAREST_LINEAR_MIPLINEAR;default:return A.Tools.Warn(e+"/minFilter: Invalid value ("+n+")"),A.Texture.NEAREST_NEAREST_MIPNEAREST}},p._GetTypedArray=function(t,e,r,n,o){var a=r.buffer;n=r.byteOffset+(n||0);try{switch(e){case 5120:return new Int8Array(a,n,o);case 5121:return new Uint8Array(a,n,o);case 5122:return new Int16Array(a,n,o);case 5123:return new Uint16Array(a,n,o);case 5125:return new Uint32Array(a,n,o);case 5126:return new Float32Array(a,n,o);default:throw new Error("Invalid component type "+e)}}catch(e){throw new Error(t+": "+e)}},p._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(e+": Invalid type ("+t+")")},p._ValidateUri=function(e){return A.Tools.IsBase64(e)||-1===e.indexOf("..")},p._GetDrawMode=function(e,t){switch(null==t&&(t=4),t){case 0:return A.Material.PointListDrawMode;case 1:return A.Material.LineListDrawMode;case 2:return A.Material.LineLoopDrawMode;case 3:return A.Material.LineStripDrawMode;case 4:return A.Material.TriangleFillMode;case 5:return A.Material.TriangleStripDrawMode;case 6:return A.Material.TriangleFanDrawMode}throw new Error(e+": Invalid mesh primitive mode ("+t+")")},p.prototype._compileMaterialsAsync=function(){var e=this;this._parent._startPerformanceCounter("Compile materials");var t=new Array;if(this.gltf.materials)for(var r=0,n=this.gltf.materials;r<n.length;r++){var o=n[r];if(o._babylonData)for(var a in o._babylonData)for(var i=o._babylonData[a],s=0,l=i.meshes;s<l.length;s++){var u=l[s];u.computeWorldMatrix(!0);var c=i.material;t.push(c.forceCompilationAsync(u)),this._parent.useClipPlane&&t.push(c.forceCompilationAsync(u,{clipPlane:!0}))}}return Promise.all(t).then((function(){e._parent._endPerformanceCounter("Compile materials")}))},p.prototype._compileShadowGeneratorsAsync=function(){var e=this;this._parent._startPerformanceCounter("Compile shadow generators");for(var t=new Array,r=0,n=this.babylonScene.lights;r<n.length;r++){var o=n[r].getShadowGenerator();o&&t.push(o.forceCompilationAsync())}return Promise.all(t).then((function(){e._parent._endPerformanceCounter("Compile shadow generators")}))},p.prototype._forEachExtensions=function(e){for(var t=0,r=p._ExtensionNames;t<r.length;t++){var n=r[t],o=this._extensions[n];o.enabled&&e(o)}},p.prototype._applyExtensions=function(e,t){for(var r=0,n=p._ExtensionNames;r<n.length;r++){var o=n[r],a=this._extensions[o];if(a.enabled){var i=e;i._activeLoaderExtensions=i._activeLoaderExtensions||{};var s=i._activeLoaderExtensions;if(!s[o]){s[o]=!0;try{var l=t(a);if(l)return l}finally{delete s[o]}}}}return null},p.prototype._extensionsOnLoading=function(){this._forEachExtensions((function(e){return e.onLoading&&e.onLoading()}))},p.prototype._extensionsOnReady=function(){this._forEachExtensions((function(e){return e.onReady&&e.onReady()}))},p.prototype._extensionsLoadSceneAsync=function(t,r){return this._applyExtensions(r,(function(e){return e.loadSceneAsync&&e.loadSceneAsync(t,r)}))},p.prototype._extensionsLoadNodeAsync=function(t,r,n){return this._applyExtensions(r,(function(e){return e.loadNodeAsync&&e.loadNodeAsync(t,r,n)}))},p.prototype._extensionsLoadCameraAsync=function(t,r,n){return this._applyExtensions(r,(function(e){return e.loadCameraAsync&&e.loadCameraAsync(t,r,n)}))},p.prototype._extensionsLoadVertexDataAsync=function(t,r,n){return this._applyExtensions(r,(function(e){return e._loadVertexDataAsync&&e._loadVertexDataAsync(t,r,n)}))},p.prototype._extensionsLoadMaterialAsync=function(t,r,n,o,a){return this._applyExtensions(r,(function(e){return e._loadMaterialAsync&&e._loadMaterialAsync(t,r,n,o,a)}))},p.prototype._extensionsCreateMaterial=function(t,r,n){return this._applyExtensions({},(function(e){return e.createMaterial&&e.createMaterial(t,r,n)}))},p.prototype._extensionsLoadMaterialPropertiesAsync=function(t,r,n){return this._applyExtensions(r,(function(e){return e.loadMaterialPropertiesAsync&&e.loadMaterialPropertiesAsync(t,r,n)}))},p.prototype._extensionsLoadTextureInfoAsync=function(t,r,n){return this._applyExtensions(r,(function(e){return e.loadTextureInfoAsync&&e.loadTextureInfoAsync(t,r,n)}))},p.prototype._extensionsLoadAnimationAsync=function(t,r){return this._applyExtensions(r,(function(e){return e.loadAnimationAsync&&e.loadAnimationAsync(t,r)}))},p.prototype._extensionsLoadUriAsync=function(t,r){return this._applyExtensions({},(function(e){return e._loadUriAsync&&e._loadUriAsync(t,r)}))},p.LoadExtensionAsync=function(e,t,r,n){if(!t.extensions)return null;var o=t.extensions[r];return o?n(e+"/extensions/"+r,o):null},p.LoadExtraAsync=function(e,t,r,n){if(!t.extras)return null;var o=t.extras[r];return o?n(e+"/extras/"+r,o):null},p.prototype.logOpen=function(e){this._parent._logOpen(e)},p.prototype.logClose=function(){this._parent._logClose()},p.prototype.log=function(e){this._parent._log(e)},p.prototype.startPerformanceCounter=function(e){this._parent._startPerformanceCounter(e)},p.prototype.endPerformanceCounter=function(e){this._parent._endPerformanceCounter(e)},p._DefaultSampler={index:-1},p._ExtensionNames=new Array,p._ExtensionFactories={},p})();e.GLTFLoader=t,A.GLTFFileLoader._CreateGLTFLoaderV2=function(e){return new t(e)}})(A.GLTF2||(A.GLTF2={}))})(BABYLON||(BABYLON={})),(function(l){var d,e,t,r,n;d=l.GLTF2||(l.GLTF2={}),e=d.Loader||(d.Loader={}),t=e.Extensions||(e.Extensions={}),r="MSFT_lod",n=(function(){function e(e){this.name=r,this.enabled=!0,this.maxLODsToLoad=Number.MAX_VALUE,this.onNodeLODsLoadedObservable=new l.Observable,this.onMaterialLODsLoadedObservable=new l.Observable,this._nodeIndexLOD=null,this._nodeSignalLODs=new Array,this._nodePromiseLODs=new Array,this._materialIndexLOD=null,this._materialSignalLODs=new Array,this._materialPromiseLODs=new Array,this._loader=e}return e.prototype.dispose=function(){delete this._loader,this._nodeIndexLOD=null,this._nodeSignalLODs.length=0,this._nodePromiseLODs.length=0,this._materialIndexLOD=null,this._materialSignalLODs.length=0,this._materialPromiseLODs.length=0,this.onMaterialLODsLoadedObservable.clear(),this.onNodeLODsLoadedObservable.clear()},e.prototype.onReady=function(){for(var r=this,e=function(e){var t=Promise.all(n._nodePromiseLODs[e]).then((function(){0!==e&&r._loader.endPerformanceCounter("Node LOD "+e),r._loader.log("Loaded node LOD "+e),r.onNodeLODsLoadedObservable.notifyObservers(e),e!==r._nodePromiseLODs.length-1&&(r._loader.startPerformanceCounter("Node LOD "+(e+1)),r._nodeSignalLODs[e]&&r._nodeSignalLODs[e].resolve())}));n._loader._completePromises.push(t)},n=this,t=0;t<this._nodePromiseLODs.length;t++)e(t);var o=function(e){var t=Promise.all(a._materialPromiseLODs[e]).then((function(){0!==e&&r._loader.endPerformanceCounter("Material LOD "+e),r._loader.log("Loaded material LOD "+e),r.onMaterialLODsLoadedObservable.notifyObservers(e),e!==r._materialPromiseLODs.length-1&&(r._loader.startPerformanceCounter("Material LOD "+(e+1)),r._materialSignalLODs[e]&&r._materialSignalLODs[e].resolve())}));a._loader._completePromises.push(t)},a=this;for(t=0;t<this._materialPromiseLODs.length;t++)o(t)},e.prototype.loadNodeAsync=function(e,i,t){var s=this;return d.GLTFLoader.LoadExtensionAsync(e,i,this.name,(function(e,t){var n,o=s._getLODs(e,i,s._loader.gltf.nodes,t.ids);s._loader.logOpen(""+e);for(var r=function(r){var e=o[r];0!==r&&(s._nodeIndexLOD=r,s._nodeSignalLODs[r]=s._nodeSignalLODs[r]||new l.Deferred);var t=s._loader.loadNodeAsync("#/nodes/"+e.index,e).then((function(e){if(0!==r){var t=o[r-1];t._babylonMesh&&(t._babylonMesh.dispose(),delete t._babylonMesh,s._disposeUnusedMaterials())}return e}));0===r?n=t:s._nodeIndexLOD=null,s._nodePromiseLODs[r]=s._nodePromiseLODs[r]||[],s._nodePromiseLODs[r].push(t)},a=0;a<o.length;a++)r(a);return s._loader.logClose(),n}))},e.prototype._loadMaterialAsync=function(e,i,s,l,u){var c=this;return this._nodeIndexLOD?null:d.GLTFLoader.LoadExtensionAsync(e,i,this.name,(function(e,t){var n,o=c._getLODs(e,i,c._loader.gltf.materials,t.ids);c._loader.logOpen(""+e);for(var r=function(r){var e=o[r];0!==r&&(c._materialIndexLOD=r);var t=c._loader._loadMaterialAsync("#/materials/"+e.index,e,s,l,(function(e){0===r&&u(e)})).then((function(e){if(0!==r){u(e);var t=o[r-1]._babylonData;t[l]&&(t[l].material.dispose(),delete t[l])}return e}));0===r?n=t:c._materialIndexLOD=null,c._materialPromiseLODs[r]=c._materialPromiseLODs[r]||[],c._materialPromiseLODs[r].push(t)},a=0;a<o.length;a++)r(a);return c._loader.logClose(),n}))},e.prototype._loadUriAsync=function(e,t){var r=this;if(null!==this._materialIndexLOD){this._loader.log("deferred");var n=this._materialIndexLOD-1;return this._materialSignalLODs[n]=this._materialSignalLODs[n]||new l.Deferred,this._materialSignalLODs[n].promise.then((function(){return r._loader.loadUriAsync(e,t)}))}return null!==this._nodeIndexLOD?(this._loader.log("deferred"),n=this._nodeIndexLOD-1,this._nodeSignalLODs[n]=this._nodeSignalLODs[n]||new l.Deferred,this._nodeSignalLODs[this._nodeIndexLOD-1].promise.then((function(){return r._loader.loadUriAsync(e,t)}))):null},e.prototype._getLODs=function(e,t,r,n){if(this.maxLODsToLoad<=0)throw new Error("maxLODsToLoad must be greater than zero");for(var o=new Array,a=n.length-1;0<=a;a--)if(o.push(d.ArrayItem.Get(e+"/ids/"+n[a],r,n[a])),o.length===this.maxLODsToLoad)return o;return o.push(t),o},e.prototype._disposeUnusedMaterials=function(){var e=this._loader.gltf.materials;if(e)for(var t=0,r=e;t<r.length;t++){var n=r[t];if(n._babylonData)for(var o in n._babylonData){var a=n._babylonData[o];0===a.meshes.length&&(a.material.dispose(!1,!0),delete n._babylonData[o])}}},e})(),t.MSFT_lod=n,d.GLTFLoader.RegisterExtension(r,(function(e){return new n(e)}))})(BABYLON||(BABYLON={})),(function(s){var t,e,r,n,o;t=s.GLTF2||(s.GLTF2={}),e=t.Loader||(t.Loader={}),r=e.Extensions||(e.Extensions={}),n="MSFT_minecraftMesh",o=(function(){function e(e){this.name=n,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadMaterialPropertiesAsync=function(n,o,a){var i=this;return t.GLTFLoader.LoadExtraAsync(n,o,this.name,(function(e,t){if(t){if(!(a instanceof s.PBRMaterial))throw new Error(e+": Material type not supported");var r=i._loader.loadMaterialPropertiesAsync(n,o,a);return a.needAlphaBlending()&&(a.forceDepthWrite=!0,a.separateCullingPass=!0),a.backFaceCulling=a.forceDepthWrite,a.twoSidedLighting=!0,r}return null}))},e})(),r.MSFT_minecraftMesh=o,t.GLTFLoader.RegisterExtension(n,(function(e){return new o(e)}))})(BABYLON||(BABYLON={})),(function(s){var t,e,r,n,o;t=s.GLTF2||(s.GLTF2={}),e=t.Loader||(t.Loader={}),r=e.Extensions||(e.Extensions={}),n="MSFT_sRGBFactors",o=(function(){function e(e){this.name=n,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadMaterialPropertiesAsync=function(n,o,a){var i=this;return t.GLTFLoader.LoadExtraAsync(n,o,this.name,(function(e,t){if(t){if(!(a instanceof s.PBRMaterial))throw new Error(e+": Material type not supported");var r=i._loader.loadMaterialPropertiesAsync(n,o,a);return a.albedoTexture||a.albedoColor.toLinearSpaceToRef(a.albedoColor),a.reflectivityTexture||a.reflectivityColor.toLinearSpaceToRef(a.reflectivityColor),r}return null}))},e})(),r.MSFT_sRGBFactors=o,t.GLTFLoader.RegisterExtension(n,(function(e){return new o(e)}))})(BABYLON||(BABYLON={})),(function(c){var d,e,t,r,n;d=c.GLTF2||(c.GLTF2={}),e=d.Loader||(d.Loader={}),t=e.Extensions||(e.Extensions={}),r="MSFT_audio_emitter",n=(function(){function e(e){this.name=r,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader,delete this._clips,delete this._emitters},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,d.ArrayItem.Assign(this._clips),d.ArrayItem.Assign(this._emitters)}},e.prototype.loadSceneAsync=function(s,l){var u=this;return d.GLTFLoader.LoadExtensionAsync(s,l,this.name,(function(e,t){var r=new Array;r.push(u._loader.loadSceneAsync(s,l));for(var n=0,o=t.emitters;n<o.length;n++){var a=o[n],i=d.ArrayItem.Get(e+"/emitters",u._emitters,a);if(null!=i.refDistance||null!=i.maxDistance||null!=i.rolloffFactor||null!=i.distanceModel||null!=i.innerAngle||null!=i.outerAngle)throw new Error(e+": Direction or Distance properties are not allowed on emitters attached to a scene");r.push(u._loadEmitterAsync(e+"/emitters/"+i.index,i))}return Promise.all(r).then((function(){}))}))},e.prototype.loadNodeAsync=function(e,t,s){var l=this;return d.GLTFLoader.LoadExtensionAsync(e,t,this.name,(function(a,n){var i=new Array;return l._loader.loadNodeAsync(a,t,(function(o){for(var e=function(e){var n=d.ArrayItem.Get(a+"/emitters",l._emitters,e);i.push(l._loadEmitterAsync(a+"/emitters/"+n.index,n).then((function(){for(var e=0,t=n._babylonSounds;e<t.length;e++){var r=t[e];r.attachToMesh(o),null==n.innerAngle&&null==n.outerAngle||(r.setLocalDirectionToMesh(c.Vector3.Forward()),r.setDirectionalCone(2*c.Tools.ToDegrees(null==n.innerAngle?Math.PI:n.innerAngle),2*c.Tools.ToDegrees(null==n.outerAngle?Math.PI:n.outerAngle),0))}})))},t=0,r=n.emitters;t<r.length;t++)e(r[t]);s(o)})).then((function(e){return Promise.all(i).then((function(){return e}))}))}))},e.prototype.loadAnimationAsync=function(s,l){var u=this;return d.GLTFLoader.LoadExtensionAsync(s,l,this.name,(function(a,i){return u._loader.loadAnimationAsync(s,l).then((function(e){var t=new Array;d.ArrayItem.Assign(i.events);for(var r=0,n=i.events;r<n.length;r++){var o=n[r];t.push(u._loadAnimationEventAsync(a+"/events/"+o.index,s,l,o,e))}return Promise.all(t).then((function(){return e}))}))}))},e.prototype._loadClipAsync=function(e,t){if(t._objectURL)return t._objectURL;var r;if(t.uri)r=this._loader.loadUriAsync(e,t.uri);else{var n=d.ArrayItem.Get(e+"/bufferView",this._loader.gltf.bufferViews,t.bufferView);r=this._loader.loadBufferViewAsync("#/bufferViews/"+n.index,n)}return t._objectURL=r.then((function(e){return URL.createObjectURL(new Blob([e],{type:t.mimeType}))})),t._objectURL},e.prototype._loadEmitterAsync=function(e,n){var o=this;if(n._babylonSounds=n._babylonSounds||[],!n._babylonData){for(var a=new Array,i=n.name||"emitter"+n.index,s={loop:!1,autoplay:!1,volume:null==n.volume?1:n.volume},t=function(r){var e="#/extensions/"+l.name+"/clips",t=d.ArrayItem.Get(e,l._clips,n.clips[r].clip);a.push(l._loadClipAsync(e+"/"+n.clips[r].clip,t).then((function(e){var t=n._babylonSounds[r]=new c.Sound(i,e,o._loader.babylonScene,null,s);t.refDistance=n.refDistance||1,t.maxDistance=n.maxDistance||256,t.rolloffFactor=n.rolloffFactor||1,t.distanceModel=n.distanceModel||"exponential",t._positionInEmitterSpace=!0})))},l=this,r=0;r<n.clips.length;r++)t(r);var u=Promise.all(a).then((function(){var e=n.clips.map((function(e){return e.weight||1})),t=new c.WeightedSound(n.loop||!1,n._babylonSounds,e);n.innerAngle&&(t.directionalConeInnerAngle=2*c.Tools.ToDegrees(n.innerAngle)),n.outerAngle&&(t.directionalConeOuterAngle=2*c.Tools.ToDegrees(n.outerAngle)),n.volume&&(t.volume=n.volume),n._babylonData.sound=t}));n._babylonData={loaded:u}}return n._babylonData.loaded},e.prototype._getEventAction=function(e,r,t,n,o){switch(t){case"play":return function(e){var t=(o||0)+(e-n);r.play(t)};case"stop":return function(e){r.stop()};case"pause":return function(e){r.pause()};default:throw new Error(e+": Unsupported action "+t)}},e.prototype._loadAnimationEventAsync=function(r,e,t,n,o){var a=this;if(0==o.targetedAnimations.length)return Promise.resolve();var i=o.targetedAnimations[0],s=n.emitter,l=d.ArrayItem.Get("#/extensions/"+this.name+"/emitters",this._emitters,s);return this._loadEmitterAsync(r,l).then((function(){var e=l._babylonData.sound;if(e){var t=new c.AnimationEvent(n.time,a._getEventAction(r,e,n.action,n.time,n.startOffset));i.animation.addEvent(t),o.onAnimationGroupEndObservable.add((function(){e.stop()})),o.onAnimationGroupPauseObservable.add((function(){e.pause()}))}}))},e})(),t.MSFT_audio_emitter=n,d.GLTFLoader.RegisterExtension(r,(function(e){return new n(e)}))})(BABYLON||(BABYLON={})),(function(u){var c,e,t,r,n;c=u.GLTF2||(u.GLTF2={}),e=c.Loader||(c.Loader={}),t=e.Extensions||(e.Extensions={}),r="KHR_draco_mesh_compression",n=(function(){function e(e){this.name=r,this.enabled=u.DracoCompression.DecoderAvailable,this._loader=e}return e.prototype.dispose=function(){this._dracoCompression&&(this._dracoCompression.dispose(),delete this._dracoCompression),delete this._loader},e.prototype._loadVertexDataAsync=function(a,i,s){var l=this;return c.GLTFLoader.LoadExtensionAsync(a,i,this.name,(function(e,n){if(null!=i.mode){if(5!==i.mode&&4!==i.mode)throw new Error(a+": Unsupported mode "+i.mode);if(5===i.mode)throw new Error(a+": Mode "+i.mode+" is not currently supported")}var o={},t=function(e,t){var r=n.attributes[e];null!=r&&(s._delayInfo=s._delayInfo||[],-1===s._delayInfo.indexOf(t)&&s._delayInfo.push(t),o[t]=r)};t("POSITION",u.VertexBuffer.PositionKind),t("NORMAL",u.VertexBuffer.NormalKind),t("TANGENT",u.VertexBuffer.TangentKind),t("TEXCOORD_0",u.VertexBuffer.UVKind),t("TEXCOORD_1",u.VertexBuffer.UV2Kind),t("JOINTS_0",u.VertexBuffer.MatricesIndicesKind),t("WEIGHTS_0",u.VertexBuffer.MatricesWeightsKind),t("COLOR_0",u.VertexBuffer.ColorKind);var r=c.ArrayItem.Get(e,l._loader.gltf.bufferViews,n.bufferView);return r._dracoBabylonGeometry||(r._dracoBabylonGeometry=l._loader.loadBufferViewAsync("#/bufferViews/"+r.index,r).then((function(e){return l._dracoCompression||(l._dracoCompression=new u.DracoCompression),l._dracoCompression.decodeMeshAsync(e,o).then((function(e){var t=new u.Geometry(s.name,l._loader.babylonScene);return e.applyToGeometry(t),t})).catch((function(e){throw new Error(a+": "+e.message)}))}))),r._dracoBabylonGeometry}))},e})(),t.KHR_draco_mesh_compression=n,c.GLTFLoader.RegisterExtension(r,(function(e){return new n(e)}))})(BABYLON||(BABYLON={})),(function(a){var t,e,r,n,o;t=a.GLTF2||(a.GLTF2={}),e=t.Loader||(t.Loader={}),r=e.Extensions||(e.Extensions={}),n="KHR_materials_pbrSpecularGlossiness",o=(function(){function e(e){this.name=n,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadMaterialPropertiesAsync=function(n,o,a){var i=this;return t.GLTFLoader.LoadExtensionAsync(n,o,this.name,(function(e,t){var r=new Array;return r.push(i._loader.loadMaterialBasePropertiesAsync(n,o,a)),r.push(i._loadSpecularGlossinessPropertiesAsync(e,o,t,a)),i._loader.loadMaterialAlphaProperties(n,o,a),Promise.all(r).then((function(){}))}))},e.prototype._loadSpecularGlossinessPropertiesAsync=function(e,t,r,n){if(!(n instanceof a.PBRMaterial))throw new Error(e+": Material type not supported");var o=new Array;return n.metallic=null,n.roughness=null,r.diffuseFactor?(n.albedoColor=a.Color3.FromArray(r.diffuseFactor),n.alpha=r.diffuseFactor[3]):n.albedoColor=a.Color3.White(),n.reflectivityColor=r.specularFactor?a.Color3.FromArray(r.specularFactor):a.Color3.White(),n.microSurface=null==r.glossinessFactor?1:r.glossinessFactor,r.diffuseTexture&&o.push(this._loader.loadTextureInfoAsync(e+"/diffuseTexture",r.diffuseTexture,(function(e){return n.albedoTexture=e,Promise.resolve()}))),r.specularGlossinessTexture&&(o.push(this._loader.loadTextureInfoAsync(e+"/specularGlossinessTexture",r.specularGlossinessTexture,(function(e){return n.reflectivityTexture=e,Promise.resolve()}))),n.reflectivityTexture.hasAlpha=!0,n.useMicroSurfaceFromReflectivityMapAlpha=!0),Promise.all(o).then((function(){}))},e})(),r.KHR_materials_pbrSpecularGlossiness=o,t.GLTFLoader.RegisterExtension(n,(function(e){return new o(e)}))})(BABYLON||(BABYLON={})),(function(a){var o,e,t,r,n;o=a.GLTF2||(a.GLTF2={}),e=o.Loader||(o.Loader={}),t=e.Extensions||(e.Extensions={}),r="KHR_materials_unlit",n=(function(){function e(e){this.name=r,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadMaterialPropertiesAsync=function(e,t,r){var n=this;return o.GLTFLoader.LoadExtensionAsync(e,t,this.name,(function(){return n._loadUnlitPropertiesAsync(e,t,r)}))},e.prototype._loadUnlitPropertiesAsync=function(e,t,r){if(!(r instanceof a.PBRMaterial))throw new Error(e+": Material type not supported");var n=new Array;r.unlit=!0;var o=t.pbrMetallicRoughness;return o&&(o.baseColorFactor?(r.albedoColor=a.Color3.FromArray(o.baseColorFactor),r.alpha=o.baseColorFactor[3]):r.albedoColor=a.Color3.White(),o.baseColorTexture&&n.push(this._loader.loadTextureInfoAsync(e+"/baseColorTexture",o.baseColorTexture,(function(e){return r.albedoTexture=e,Promise.resolve()})))),t.doubleSided&&(r.backFaceCulling=!1,r.twoSidedLighting=!0),this._loader.loadMaterialAlphaProperties(e,t,r),Promise.all(n).then((function(){}))},e})(),t.KHR_materials_unlit=n,o.GLTFLoader.RegisterExtension(r,(function(e){return new n(e)}))})(BABYLON||(BABYLON={})),(function(c){var d,e;d=c.GLTF2||(c.GLTF2={}),(function(e){var u,t,r="KHR_lights_punctual";(t=u||(u={})).DIRECTIONAL="directional",t.POINT="point",t.SPOT="spot";var n=(function(){function e(e){this.name=r,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader,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,s){var l=this;return d.GLTFLoader.LoadExtensionAsync(e,t,this.name,(function(a,i){return l._loader.loadNodeAsync(e,t,(function(e){var t,r=d.ArrayItem.Get(a,l._lights,i.light),n=r.name||e.name;switch(r.type){case u.DIRECTIONAL:t=new c.DirectionalLight(n,c.Vector3.Backward(),l._loader.babylonScene);break;case u.POINT:t=new c.PointLight(n,c.Vector3.Zero(),l._loader.babylonScene);break;case u.SPOT:var o=new c.SpotLight(n,c.Vector3.Zero(),c.Vector3.Backward(),0,1,l._loader.babylonScene);o.angle=2*(r.spot&&r.spot.outerConeAngle||Math.PI/4),o.innerAngle=2*(r.spot&&r.spot.innerConeAngle||0),t=o;break;default:throw new Error(a+": Invalid light type ("+r.type+")")}t.falloffType=c.Light.FALLOFF_GLTF,t.diffuse=r.color?c.Color3.FromArray(r.color):c.Color3.White(),t.intensity=null==r.intensity?1:r.intensity,t.range=null==r.range?Number.MAX_VALUE:r.range,t.parent=e,s(e)}))}))},e})();e.KHR_lights=n,d.GLTFLoader.RegisterExtension(r,(function(e){return new n(e)}))})((e=d.Loader||(d.Loader={})).Extensions||(e.Extensions={}))})(BABYLON||(BABYLON={})),(function(i){var t,e,r,n,o;t=i.GLTF2||(i.GLTF2={}),e=t.Loader||(t.Loader={}),r=e.Extensions||(e.Extensions={}),n="KHR_texture_transform",o=(function(){function e(e){this.name=n,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadTextureInfoAsync=function(e,n,o){var a=this;return t.GLTFLoader.LoadExtensionAsync(e,n,this.name,(function(t,r){return a._loader.loadTextureInfoAsync(e,n,(function(e){if(!(e instanceof i.Texture))throw new Error(t+": Texture type not supported");r.offset&&(e.uOffset=r.offset[0],e.vOffset=r.offset[1]),e.uRotationCenter=0,e.vRotationCenter=0,r.rotation&&(e.wAng=-r.rotation),r.scale&&(e.uScale=r.scale[0],e.vScale=r.scale[1]),null!=r.texCoord&&(e.coordinatesIndex=r.texCoord),o(e)}))}))},e})(),r.KHR_texture_transform=o,t.GLTFLoader.RegisterExtension(n,(function(e){return new o(e)}))})(BABYLON||(BABYLON={})),(function(d){var f,e,t,r,n;f=d.GLTF2||(d.GLTF2={}),e=f.Loader||(f.Loader={}),t=e.Extensions||(e.Extensions={}),r="EXT_lights_image_based",n=(function(){function e(e){this.name=r,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader,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(o,a){var i=this;return f.GLTFLoader.LoadExtensionAsync(o,a,this.name,(function(e,t){var r=new Array;r.push(i._loader.loadSceneAsync(o,a)),i._loader.logOpen(""+e);var n=f.ArrayItem.Get(e+"/light",i._lights,t.light);return r.push(i._loadLightAsync("#/extensions/"+i.name+"/lights/"+t.light,n).then((function(e){i._loader.babylonScene.environmentTexture=e}))),i._loader.logClose(),Promise.all(r).then((function(){}))}))},e.prototype._loadLightAsync=function(i,s){var a=this;if(!s._loaded){var l=new Array;this._loader.logOpen(""+i);for(var u=new Array(s.specularImages.length),e=function(o){var a=s.specularImages[o];u[o]=new Array(a.length);for(var e=function(t){var e=i+"/specularImages/"+o+"/"+t;c._loader.logOpen(""+e);var r=a[t],n=f.ArrayItem.Get(e,c._loader.gltf.images,r);l.push(c._loader.loadImageAsync("#/images/"+r,n).then((function(e){u[o][t]=e}))),c._loader.logClose()},t=0;t<a.length;t++)e(t)},c=this,t=0;t<s.specularImages.length;t++)e(t);this._loader.logClose(),s._loaded=Promise.all(l).then((function(){var e=new d.RawCubeTexture(a._loader.babylonScene,null,s.specularImageSize);if(s._babylonTexture=e,null!=s.intensity&&(e.level=s.intensity),s.rotation){var t=d.Quaternion.FromArray(s.rotation);a._loader.babylonScene.useRightHandedSystem||(t=d.Quaternion.Inverse(t)),d.Matrix.FromQuaternionToRef(t,e.getReflectionTextureMatrix())}var r=d.SphericalHarmonics.FromArray(s.irradianceCoefficients);r.scale(s.intensity),r.convertIrradianceToLambertianRadiance();var n=d.SphericalPolynomial.FromHarmonics(r),o=(u.length-1)/d.Scalar.Log2(s.specularImageSize);return e.updateRGBDAsync(u,n,o)}))}return s._loaded.then((function(){return s._babylonTexture}))},e})(),t.EXT_lights_image_based=n,f.GLTFLoader.RegisterExtension(r,(function(e){return new n(e)}))})(BABYLON||(BABYLON={}));
|