babylonjs.loaders.min.js 115 KB

12
  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)}(window,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=11)}([function(t,r){t.exports=e},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(2),a=function(){function e(){}return e.Get=function(e,t,r){if(!t||void 0==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}();t.ArrayItem=a;var i=function(){function e(e){this._completePromises=new Array,this._disposed=!1,this._state=null,this._extensions={},this._defaultBabylonMaterialData={},this._requests=new Array,this._parent=e}return e.RegisterExtension=function(t,r){e.UnregisterExtension(t)&&n.Tools.Warn("Extension with the name '"+t+"' already exists"),e._ExtensionFactories[t]=r,e._ExtensionNames.push(t)},e.UnregisterExtension=function(t){if(!e._ExtensionFactories[t])return!1;delete e._ExtensionFactories[t];var r=e._ExtensionNames.indexOf(t);return-1!==r&&e._ExtensionNames.splice(r,1),!0},Object.defineProperty(e.prototype,"state",{get:function(){return this._state},enumerable:!0,configurable:!0}),e.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()}},e.prototype.importMeshAsync=function(e,t,r,n,o,a){var i=this;return Promise.resolve().then(function(){i.babylonScene=t,i._rootUrl=n,i._fileName=a||"scene",i._progressCallback=o,i._loadData(r);var s=null;if(e){var l={};if(i.gltf.nodes)for(var u=0,c=i.gltf.nodes;u<c.length;u++){var f=c[u];f.name&&(l[f.name]=f.index)}s=(e instanceof Array?e:[e]).map(function(e){var t=l[e];if(void 0===t)throw new Error("Failed to find node '"+e+"'");return t})}return i._loadAsync(s,function(){return{meshes:i._getMeshes(),particleSystems:[],skeletons:i._getSkeletons(),animationGroups:i._getAnimationGroups()}})})},e.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(){})})},e.prototype._loadAsync=function(e,t){var r=this;return Promise.resolve().then(function(){r._uniqueRootUrl=-1===r._rootUrl.indexOf("file:")&&r._fileName?r._rootUrl:""+r._rootUrl+Date.now()+"/",r._loadExtensions(),r._checkExtensions();var i=o.GLTFLoaderState[o.GLTFLoaderState.LOADING]+" => "+o.GLTFLoaderState[o.GLTFLoaderState.READY],s=o.GLTFLoaderState[o.GLTFLoaderState.LOADING]+" => "+o.GLTFLoaderState[o.GLTFLoaderState.COMPLETE];r._parent._startPerformanceCounter(i),r._parent._startPerformanceCounter(s),r._setState(o.GLTFLoaderState.LOADING),r._extensionsOnLoading();var l=new Array;if(e)l.push(r.loadSceneAsync("#/nodes",{nodes:e,index:-1}));else{var u=a.Get("#/scene",r.gltf.scenes,r.gltf.scene||0);l.push(r.loadSceneAsync("#/scenes/"+u.index,u))}r._parent.compileMaterials&&l.push(r._compileMaterialsAsync()),r._parent.compileShadowGenerators&&l.push(r._compileShadowGeneratorsAsync());var c=Promise.all(l).then(function(){return r._setState(o.GLTFLoaderState.READY),r._extensionsOnReady(),r._startAnimations(),t()});return c.then(function(){r._parent._endPerformanceCounter(i),n.Tools.SetImmediate(function(){r._disposed||Promise.all(r._completePromises).then(function(){r._parent._endPerformanceCounter(s),r._setState(o.GLTFLoaderState.COMPLETE),r._parent.onCompleteObservable.notifyObservers(void 0),r._parent.onCompleteObservable.clear(),r.dispose()},function(e){r._parent.onErrorObservable.notifyObservers(e),r._parent.onErrorObservable.clear(),r.dispose()})})}),c},function(e){throw r._disposed||(r._parent.onErrorObservable.notifyObservers(e),r._parent.onErrorObservable.clear(),r.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 r=t[0];(r.byteLength<e.bin.byteLength-3||r.byteLength>e.bin.byteLength)&&n.Tools.Warn("Binary buffer length ("+r.byteLength+") from JSON does not match chunk length ("+e.bin.byteLength+")"),r._data=Promise.resolve(e.bin)}else n.Tools.Warn("Unexpected BIN chunk")}},e.prototype._setupData=function(){if(a.Assign(this.gltf.accessors),a.Assign(this.gltf.animations),a.Assign(this.gltf.buffers),a.Assign(this.gltf.bufferViews),a.Assign(this.gltf.cameras),a.Assign(this.gltf.images),a.Assign(this.gltf.materials),a.Assign(this.gltf.meshes),a.Assign(this.gltf.nodes),a.Assign(this.gltf.samplers),a.Assign(this.gltf.scenes),a.Assign(this.gltf.skins),a.Assign(this.gltf.textures),this.gltf.nodes){for(var e={},t=0,r=this.gltf.nodes;t<r.length;t++){if((u=r[t]).children)for(var n=0,o=u.children;n<o.length;n++){e[o[n]]=u.index}}for(var i=this._createRootNode(),s=0,l=this.gltf.nodes;s<l.length;s++){var u,c=e[(u=l[s]).index];u.parent=void 0===c?i:this.gltf.nodes[c]}}},e.prototype._loadExtensions=function(){for(var t=0,r=e._ExtensionNames;t<r.length;t++){var n=r[t],o=e._ExtensionFactories[n](this);this._extensions[n]=o,this._parent.onExtensionLoadedObservable.notifyObservers(o)}this._parent.onExtensionLoadedObservable.clear()},e.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")}},e.prototype._setState=function(e){this._state=e,this.log(o.GLTFLoaderState[this._state])},e.prototype._createRootNode=function(){this._rootBabylonMesh=new n.Mesh("__root__",this.babylonScene);var t={_babylonMesh:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case o.GLTFLoaderCoordinateSystemMode.AUTO:this.babylonScene.useRightHandedSystem||(t.rotation=[0,1,0,0],t.scale=[1,1,-1],e._LoadTransform(t,this._rootBabylonMesh));break;case o.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),t},e.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 i=0,s=t.nodes;i<s.length;i++){var l=s[i],u=a.Get(e+"/nodes/"+l,this.gltf.nodes,l);o.push(this.loadNodeAsync("#/nodes/"+u.index,u,function(e){e.parent=r._rootBabylonMesh}))}return o.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(o).then(function(){})},e.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)},e.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},e.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},e.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},e.prototype._startAnimations=function(){switch(this._parent.animationStartMode){case o.GLTFLoaderAnimationStartMode.NONE:break;case o.GLTFLoaderAnimationStartMode.FIRST:0!==(e=this._getAnimationGroups()).length&&e[0].start(!0);break;case o.GLTFLoaderAnimationStartMode.ALL:for(var e,t=0,r=e=this._getAnimationGroups();t<r.length;t++){r[t].start(!0)}break;default:return void n.Tools.Error("Invalid animation start mode ("+this._parent.animationStartMode+")")}},e.prototype.loadNodeAsync=function(t,r,o){var i=this;void 0===o&&(o=function(){});var s=this._extensionsLoadNodeAsync(t,r,o);if(s)return s;if(r._babylonMesh)throw new Error(t+": Invalid recursive node hierarchy");var l=new Array;this.logOpen(t+" "+(r.name||""));var u=new n.Mesh(r.name||"node"+r.index,this.babylonScene);if(r._babylonMesh=u,u.setEnabled(!1),e._LoadTransform(r,u),void 0!=r.mesh){var c=a.Get(t+"/mesh",this.gltf.meshes,r.mesh);l.push(this._loadMeshAsync("#/meshes/"+c.index,r,c,u))}if(void 0!=r.camera){var f=a.Get(t+"/camera",this.gltf.cameras,r.camera);l.push(this.loadCameraAsync("#/cameras/"+f.index,f,function(e){e.parent=u}))}if(r.children)for(var d=function(e){var n=a.Get(t+"/children/"+e,h.gltf.nodes,e);l.push(h.loadNodeAsync("#/nodes/"+r.index,n,function(e){void 0==n.skin?e.parent=u:e.parent=i._rootBabylonMesh}))},h=this,p=0,m=r.children;p<m.length;p++){d(m[p])}return o(u),this._parent.onMeshLoadedObservable.notifyObservers(u),this.logClose(),Promise.all(l).then(function(){return u.setEnabled(!0),u})},e.prototype._loadMeshAsync=function(e,t,r,o){var i=this,s=new Array;this.logOpen(e+" "+(r.name||""));var l=r.primitives;if(!l||0===l.length)throw new Error(e+": Primitives are missing");if(a.Assign(l),1===l.length){var u=l[0];s.push(this._loadMeshPrimitiveAsync(e+"/primitives/"+u.index,t,r,u,o))}else{t._primitiveBabylonMeshes=[];for(var c=0,f=l;c<f.length;c++){u=f[c];var d=new n.Mesh((r.name||o.name)+"_"+u.index,this.babylonScene,o);t._primitiveBabylonMeshes.push(d),s.push(this._loadMeshPrimitiveAsync(e+"/primitives/"+u.index,t,r,u,d)),this._parent.onMeshLoadedObservable.notifyObservers(o)}}if(void 0!=t.skin){var h=a.Get(e+"/skin",this.gltf.skins,t.skin);s.push(this._loadSkinAsync("#/skins/"+h.index,t,h))}return this.logClose(),Promise.all(s).then(function(){i._forEachPrimitive(t,function(e){e._refreshBoundingInfo(!0)})})},e.prototype._loadMeshPrimitiveAsync=function(t,r,n,o,i){var s=this,l=new Array;this.logOpen(""+t),this._createMorphTargets(t,r,n,o,i),l.push(this._loadVertexDataAsync(t,o,i).then(function(e){return s._loadMorphTargetsAsync(t,o,i,e).then(function(){e.applyToMesh(i)})}));var u=e._GetDrawMode(t,o.mode);if(void 0==o.material){var c=this._defaultBabylonMaterialData[u];c||(c=this._createDefaultMaterial("__gltf_default",u),this._parent.onMaterialLoadedObservable.notifyObservers(c),this._defaultBabylonMaterialData[u]=c),i.material=c}else{var f=a.Get(t+"/material",this.gltf.materials,o.material);l.push(this._loadMaterialAsync("#/materials/"+f.index,f,i,u,function(e){i.material=e}))}return this.logClose(),Promise.all(l).then(function(){})},e.prototype._loadVertexDataAsync=function(e,t,r){var o=this,i=this._extensionsLoadVertexDataAsync(e,t,r);if(i)return i;var s=t.attributes;if(!s)throw new Error(e+": Attributes are missing");var l=new Array,u=new n.Geometry(r.name,this.babylonScene);if(void 0==t.indices)r.isUnIndexed=!0;else{var c=a.Get(e+"/indices",this.gltf.accessors,t.indices);l.push(this._loadIndicesAccessorAsync("#/accessors/"+c.index,c).then(function(e){u.setIndices(e)}))}var f=function(t,n,i){if(void 0!=s[t]){r._delayInfo=r._delayInfo||[],-1===r._delayInfo.indexOf(n)&&r._delayInfo.push(n);var c=a.Get(e+"/attributes/"+t,o.gltf.accessors,s[t]);l.push(o._loadVertexAccessorAsync("#/accessors/"+c.index,c,n).then(function(e){u.setVerticesBuffer(e,c.count)})),i&&i(c)}};return f("POSITION",n.VertexBuffer.PositionKind),f("NORMAL",n.VertexBuffer.NormalKind),f("TANGENT",n.VertexBuffer.TangentKind),f("TEXCOORD_0",n.VertexBuffer.UVKind),f("TEXCOORD_1",n.VertexBuffer.UV2Kind),f("JOINTS_0",n.VertexBuffer.MatricesIndicesKind),f("WEIGHTS_0",n.VertexBuffer.MatricesWeightsKind),f("COLOR_0",n.VertexBuffer.ColorKind,function(e){"VEC4"===e.type&&(r.hasVertexAlpha=!0)}),Promise.all(l).then(function(){return u})},e.prototype._createMorphTargets=function(e,t,r,o,a){if(o.targets){if(void 0==t._numMorphTargets)t._numMorphTargets=o.targets.length;else if(o.targets.length!==t._numMorphTargets)throw new Error(e+": Primitives do not have the same number of targets");a.morphTargetManager=new n.MorphTargetManager;for(var i=0;i<o.targets.length;i++){var s=t.weights?t.weights[i]:r.weights?r.weights[i]:0;a.morphTargetManager.addTarget(new n.MorphTarget("morphTarget"+i,s))}}},e.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(){})},e.prototype._loadMorphTargetVertexDataAsync=function(e,t,r,o){var i=this,s=new Array,l=function(n,o,l){if(void 0!=r[n]){var u=t.getVertexBuffer(o);if(u){var c=a.Get(e+"/"+n,i.gltf.accessors,r[n]);s.push(i._loadFloatAccessorAsync("#/accessors/"+c.index,c).then(function(e){l(u,e)}))}}};return l("POSITION",n.VertexBuffer.PositionKind,function(e,t){e.forEach(t.length,function(e,r){t[r]+=e}),o.setPositions(t)}),l("NORMAL",n.VertexBuffer.NormalKind,function(e,t){e.forEach(t.length,function(e,r){t[r]+=e}),o.setNormals(t)}),l("TANGENT",n.VertexBuffer.TangentKind,function(e,t){var r=0;e.forEach(t.length/3*4,function(e,n){(n+1)%4!=0&&(t[r++]+=e)}),o.setTangents(t)}),Promise.all(s).then(function(){})},e._LoadTransform=function(e,t){var r=n.Vector3.Zero(),o=n.Quaternion.Identity(),a=n.Vector3.One();e.matrix?n.Matrix.FromArray(e.matrix).decompose(a,o,r):(e.translation&&(r=n.Vector3.FromArray(e.translation)),e.rotation&&(o=n.Quaternion.FromArray(e.rotation)),e.scale&&(a=n.Vector3.FromArray(e.scale)));t.position=r,t.rotationQuaternion=o,t.scaling=a},e.prototype._loadSkinAsync=function(e,t,r){var o=this,a=function(e){o._forEachPrimitive(t,function(t){t.skeleton=e}),t._babylonMesh.position=n.Vector3.Zero(),t._babylonMesh.rotationQuaternion=n.Quaternion.Identity(),t._babylonMesh.scaling=n.Vector3.One()};if(r._promise)return r._promise.then(function(){a(r._babylonSkeleton)});var i="skeleton"+r.index,s=new n.Skeleton(r.name||i,i,this.babylonScene);return r._babylonSkeleton=s,this._loadBones(e,r),a(s),r._promise=this._loadSkinInverseBindMatricesDataAsync(e,r).then(function(e){o._updateBoneMatrices(s,e)})},e.prototype._loadBones=function(e,t){for(var r={},n=0,o=t.joints;n<o.length;n++){var i=o[n],s=a.Get(e+"/joints/"+i,this.gltf.nodes,i);this._loadBone(s,t,r)}},e.prototype._loadBone=function(e,t,r){var o=r[e.index];if(o)return o;var a=null;e.parent&&e.parent._babylonMesh!==this._rootBabylonMesh&&(a=this._loadBone(e.parent,t,r));var i=t.joints.indexOf(e.index);return o=new n.Bone(e.name||"joint"+e.index,t._babylonSkeleton,a,this._getNodeMatrix(e),null,null,i),r[e.index]=o,e._babylonBones=e._babylonBones||[],e._babylonBones.push(o),o},e.prototype._loadSkinInverseBindMatricesDataAsync=function(e,t){if(void 0==t.inverseBindMatrices)return Promise.resolve(null);var r=a.Get(e+"/inverseBindMatrices",this.gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync("#/accessors/"+r.index,r)},e.prototype._updateBoneMatrices=function(e,t){for(var r=0,o=e.bones;r<o.length;r++){var a=o[r],i=n.Matrix.Identity(),s=a._index;t&&-1!==s&&(n.Matrix.FromArrayToRef(t,16*s,i),i.invertToRef(i));var l=a.getParent();l&&i.multiplyToRef(l.getInvertedAbsoluteTransform(),i),a.updateMatrix(i,!1,!1),a._updateDifferenceMatrix(void 0,!1)}},e.prototype._getNodeMatrix=function(e){return e.matrix?n.Matrix.FromArray(e.matrix):n.Matrix.Compose(e.scale?n.Vector3.FromArray(e.scale):n.Vector3.One(),e.rotation?n.Quaternion.FromArray(e.rotation):n.Quaternion.Identity(),e.translation?n.Vector3.FromArray(e.translation):n.Vector3.Zero())},e.prototype.loadCameraAsync=function(e,t,r){void 0===r&&(r=function(){});var o=this._extensionsLoadCameraAsync(e,t,r);if(o)return o;var a=new Array;this.logOpen(e+" "+(t.name||""));var i=new n.FreeCamera(t.name||"camera"+t.index,n.Vector3.Zero(),this.babylonScene,!1);switch(i.rotation=new n.Vector3(0,Math.PI,0),t.type){case"perspective":var s=t.perspective;if(!s)throw new Error(e+": Camera perspective properties are missing");i.fov=s.yfov,i.minZ=s.znear,i.maxZ=s.zfar||Number.MAX_VALUE;break;case"orthographic":if(!t.orthographic)throw new Error(e+": Camera orthographic properties are missing");i.mode=n.Camera.ORTHOGRAPHIC_CAMERA,i.orthoLeft=-t.orthographic.xmag,i.orthoRight=t.orthographic.xmag,i.orthoBottom=-t.orthographic.ymag,i.orthoTop=t.orthographic.ymag,i.minZ=t.orthographic.znear,i.maxZ=t.orthographic.zfar;break;default:throw new Error(e+": Invalid camera type ("+t.type+")")}return r(i),this._parent.onCameraLoadedObservable.notifyObservers(i),Promise.all(a).then(function(){return i})},e.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(){})},e.prototype.loadAnimationAsync=function(e,t){var r=this._extensionsLoadAnimationAsync(e,t);if(r)return r;var o=new n.AnimationGroup(t.name||"animation"+t.index,this.babylonScene);t._babylonAnimationGroup=o;var i=new Array;a.Assign(t.channels),a.Assign(t.samplers);for(var s=0,l=t.channels;s<l.length;s++){var u=l[s];i.push(this._loadAnimationChannelAsync(e+"/channels/"+u.index,e,t,u,o))}return Promise.all(i).then(function(){return o.normalize(0),o})},e.prototype._loadAnimationChannelAsync=function(e,t,r,o,i){var s=this;if(void 0==o.target.node)return Promise.resolve();var l=a.Get(e+"/target/node",this.gltf.nodes,o.target.node);if("weights"===o.target.path&&!l._numMorphTargets||"weights"!==o.target.path&&!l._babylonMesh)return Promise.resolve();if(void 0!=l.skin&&"weights"!==o.target.path)return Promise.resolve();var u=a.Get(e+"/sampler",r.samplers,o.sampler);return this._loadAnimationSamplerAsync(t+"/samplers/"+o.sampler,u).then(function(t){var r,a;switch(o.target.path){case"translation":r="position",a=n.Animation.ANIMATIONTYPE_VECTOR3;break;case"rotation":r="rotationQuaternion",a=n.Animation.ANIMATIONTYPE_QUATERNION;break;case"scale":r="scaling",a=n.Animation.ANIMATIONTYPE_VECTOR3;break;case"weights":r="influence",a=n.Animation.ANIMATIONTYPE_FLOAT;break;default:throw new Error(e+"/target/path: Invalid value ("+o.target.path+")")}var u,c,f=0;switch(r){case"position":u=function(){var e=n.Vector3.FromArray(t.output,f);return f+=3,e};break;case"rotationQuaternion":u=function(){var e=n.Quaternion.FromArray(t.output,f);return f+=4,e};break;case"scaling":u=function(){var e=n.Vector3.FromArray(t.output,f);return f+=3,e};break;case"influence":u=function(){for(var e=new Array(l._numMorphTargets),r=0;r<l._numMorphTargets;r++)e[r]=t.output[f++];return e}}switch(t.interpolation){case"STEP":c=function(e){return{frame:t.input[e],value:u(),interpolation:n.AnimationKeyInterpolation.STEP}};break;case"LINEAR":c=function(e){return{frame:t.input[e],value:u()}};break;case"CUBICSPLINE":c=function(e){return{frame:t.input[e],inTangent:u(),value:u(),outTangent:u()}}}for(var d=new Array(t.input.length),h=0;h<t.input.length;h++)d[h]=c(h);if("influence"===r)for(var p=function(e){var t=i.name+"_channel"+i.targetedAnimations.length,o=new n.Animation(t,r,1,a);o.setKeys(d.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(l,function(t){var r=t.morphTargetManager.getTarget(e),n=o.clone();r.animations.push(n),i.addTargetedAnimation(n,r)})},m=0;m<l._numMorphTargets;m++)p(m);else{var _=i.name+"_channel"+i.targetedAnimations.length,y=new n.Animation(_,r,1,a);if(y.setKeys(d),l._babylonBones){for(var v=[l._babylonMesh].concat(l._babylonBones),A=0,g=v;A<g.length;A++){g[A].animations.push(y)}i.addTargetedAnimation(y,v)}else l._babylonMesh.animations.push(y),i.addTargetedAnimation(y,l._babylonMesh)}})},e.prototype._loadAnimationSamplerAsync=function(e,t){if(t._data)return t._data;var r=t.interpolation||"LINEAR";switch(r){case"STEP":case"LINEAR":case"CUBICSPLINE":break;default:throw new Error(e+"/interpolation: Invalid value ("+t.interpolation+")")}var n=a.Get(e+"/input",this.gltf.accessors,t.input),o=a.Get(e+"/output",this.gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync("#/accessors/"+n.index,n),this._loadFloatAccessorAsync("#/accessors/"+o.index,o)]).then(function(e){var t=e[0],n=e[1];return{input:t,interpolation:r,output:n}}),t._data},e.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},e.prototype.loadBufferViewAsync=function(e,t){if(t._data)return t._data;var r=a.Get(e+"/buffer",this.gltf.buffers,t.buffer);return t._data=this._loadBufferAsync("#/buffers/"+r.index,r).then(function(r){try{return new Uint8Array(r.buffer,r.byteOffset+(t.byteOffset||0),t.byteLength)}catch(t){throw new Error(e+": "+t.message)}}),t._data},e.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 n=a.Get(t+"/bufferView",this.gltf.bufferViews,r.bufferView);return r._data=this.loadBufferViewAsync("#/bufferViews/"+n.index,n).then(function(n){return e._GetTypedArray(t,r.componentType,n,r.byteOffset,r.count)}),r._data},e.prototype._loadFloatAccessorAsync=function(t,r){var n=this;if(5126!==r.componentType)throw new Error("Invalid component type "+r.componentType);if(r._data)return r._data;var o=e._GetNumComponents(t,r.type),i=o*r.count;if(void 0==r.bufferView)r._data=Promise.resolve(new Float32Array(i));else{var s=a.Get(t+"/bufferView",this.gltf.bufferViews,r.bufferView);r._data=this.loadBufferViewAsync("#/bufferViews/"+s.index,s).then(function(n){return e._GetTypedArray(t,r.componentType,n,r.byteOffset,i)})}if(r.sparse){var l=r.sparse;r._data=r._data.then(function(i){var s=a.Get(t+"/sparse/indices/bufferView",n.gltf.bufferViews,l.indices.bufferView),u=a.Get(t+"/sparse/values/bufferView",n.gltf.bufferViews,l.values.bufferView);return Promise.all([n.loadBufferViewAsync("#/bufferViews/"+s.index,s),n.loadBufferViewAsync("#/bufferViews/"+u.index,u)]).then(function(n){for(var a=n[0],s=n[1],u=e._GetTypedArray(t+"/sparse/indices",l.indices.componentType,a,l.indices.byteOffset,l.count),c=e._GetTypedArray(t+"/sparse/values",r.componentType,s,l.values.byteOffset,o*l.count),f=0,d=0;d<u.length;d++)for(var h=u[d]*o,p=0;p<o;p++)i[h++]=c[f++];return i})})}return r._data},e.prototype._loadVertexBufferViewAsync=function(e,t){var r=this;return e._babylonBuffer?e._babylonBuffer:(e._babylonBuffer=this.loadBufferViewAsync("#/bufferViews/"+e.index,e).then(function(e){return new n.Buffer(r.babylonScene.getEngine(),e,!1)}),e._babylonBuffer)},e.prototype._loadVertexAccessorAsync=function(t,r,o){var i=this;if(r._babylonVertexBuffer)return r._babylonVertexBuffer;if(r.sparse)r._babylonVertexBuffer=this._loadFloatAccessorAsync("#/accessors/"+r.index,r).then(function(e){return new n.VertexBuffer(i.babylonScene.getEngine(),e,o,!1)});else if(r.byteOffset&&r.byteOffset%n.VertexBuffer.GetTypeByteLength(r.componentType)!=0)n.Tools.Warn("Accessor byte offset is not a multiple of component type byte length"),r._babylonVertexBuffer=this._loadFloatAccessorAsync("#/accessors/"+r.index,r).then(function(e){return new n.VertexBuffer(i.babylonScene.getEngine(),e,o,!1)});else{var s=a.Get(t+"/bufferView",this.gltf.bufferViews,r.bufferView);r._babylonVertexBuffer=this._loadVertexBufferViewAsync(s,o).then(function(a){var l=e._GetNumComponents(t,r.type);return new n.VertexBuffer(i.babylonScene.getEngine(),a,o,!1,!1,s.byteStride,!1,r.byteOffset,l,r.componentType,r.normalized,!0)})}return r._babylonVertexBuffer},e.prototype._loadMaterialMetallicRoughnessPropertiesAsync=function(e,t,r){if(!(r instanceof n.PBRMaterial))throw new Error(e+": Material type not supported");var o=new Array;return t&&(t.baseColorFactor?(r.albedoColor=n.Color3.FromArray(t.baseColorFactor),r.alpha=t.baseColorFactor[3]):r.albedoColor=n.Color3.White(),r.metallic=void 0==t.metallicFactor?1:t.metallicFactor,r.roughness=void 0==t.roughnessFactor?1:t.roughnessFactor,t.baseColorTexture&&o.push(this.loadTextureInfoAsync(e+"/baseColorTexture",t.baseColorTexture,function(e){r.albedoTexture=e})),t.metallicRoughnessTexture&&(o.push(this.loadTextureInfoAsync(e+"/metallicRoughnessTexture",t.metallicRoughnessTexture,function(e){r.metallicTexture=e})),r.useMetallnessFromMetallicTextureBlue=!0,r.useRoughnessFromMetallicTextureGreen=!0,r.useRoughnessFromMetallicTextureAlpha=!1)),Promise.all(o).then(function(){})},e.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})},e.prototype._createDefaultMaterial=function(e,t){var r=new n.PBRMaterial(e,this.babylonScene);return r.sideOrientation=this.babylonScene.useRightHandedSystem?n.Material.CounterClockWiseSideOrientation:n.Material.ClockWiseSideOrientation,r.fillMode=t,r.enableSpecularAntiAliasing=!0,r.useRadianceOverAlpha=!this._parent.transparencyAsCoverage,r.useSpecularOverAlpha=!this._parent.transparencyAsCoverage,r.transparencyMode=n.PBRMaterial.PBRMATERIAL_OPAQUE,r.metallic=1,r.roughness=1,r},e.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)},e.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(){})},e.prototype.loadMaterialBasePropertiesAsync=function(e,t,r){if(!(r instanceof n.PBRMaterial))throw new Error(e+": Material type not supported");var o=new Array;return r.emissiveColor=t.emissiveFactor?n.Color3.FromArray(t.emissiveFactor):new n.Color3(0,0,0),t.doubleSided&&(r.backFaceCulling=!1,r.twoSidedLighting=!0),t.normalTexture&&(o.push(this.loadTextureInfoAsync(e+"/normalTexture",t.normalTexture,function(e){r.bumpTexture=e})),r.invertNormalMapX=!this.babylonScene.useRightHandedSystem,r.invertNormalMapY=this.babylonScene.useRightHandedSystem,void 0!=t.normalTexture.scale&&(r.bumpTexture.level=t.normalTexture.scale)),t.occlusionTexture&&(o.push(this.loadTextureInfoAsync(e+"/occlusionTexture",t.occlusionTexture,function(e){r.ambientTexture=e})),r.useAmbientInGrayScale=!0,void 0!=t.occlusionTexture.strength&&(r.ambientTextureStrength=t.occlusionTexture.strength)),t.emissiveTexture&&o.push(this.loadTextureInfoAsync(e+"/emissiveTexture",t.emissiveTexture,function(e){r.emissiveTexture=e})),Promise.all(o).then(function(){})},e.prototype.loadMaterialAlphaProperties=function(e,t,r){if(!(r instanceof n.PBRMaterial))throw new Error(e+": Material type not supported");switch(t.alphaMode||"OPAQUE"){case"OPAQUE":r.transparencyMode=n.PBRMaterial.PBRMATERIAL_OPAQUE;break;case"MASK":r.transparencyMode=n.PBRMaterial.PBRMATERIAL_ALPHATEST,r.alphaCutOff=void 0==t.alphaCutoff?.5:t.alphaCutoff,r.albedoTexture&&(r.albedoTexture.hasAlpha=!0);break;case"BLEND":r.transparencyMode=n.PBRMaterial.PBRMATERIAL_ALPHABLEND,r.albedoTexture&&(r.albedoTexture.hasAlpha=!0,r.useAlphaFromAlbedoTexture=!0);break;default:throw new Error(e+"/alphaMode: Invalid value ("+t.alphaMode+")")}},e.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=a.Get(e+"/index",this.gltf.textures,t.index),i=this._loadTextureAsync("#/textures/"+t.index,o,function(e){e.coordinatesIndex=t.texCoord||0,r(e)});return this.logClose(),i},e.prototype._loadTextureAsync=function(t,r,o){var i=this;void 0===o&&(o=function(){});var s=new Array;this.logOpen(t+" "+(r.name||""));var l=void 0==r.sampler?e._DefaultSampler:a.Get(t+"/sampler",this.gltf.samplers,r.sampler),u=this._loadSampler("#/samplers/"+l.index,l),c=new n.Deferred,f=new n.Texture(null,this.babylonScene,u.noMipMaps,!1,u.samplingMode,function(){i._disposed||c.resolve()},function(e,r){i._disposed||c.reject(new Error(t+": "+(r&&r.message?r.message:e||"Failed to load texture")))});s.push(c.promise),f.name=r.name||"texture"+r.index,f.wrapU=u.wrapU,f.wrapV=u.wrapV;var d=a.Get(t+"/source",this.gltf.images,r.source);return s.push(this.loadImageAsync("#/images/"+d.index,d).then(function(e){var t=d.uri||i._fileName+"#image"+d.index,r="data:"+i._uniqueRootUrl+t;f.updateURL(r,new Blob([e],{type:d.mimeType}))})),o(f),this._parent.onTextureLoadedObservable.notifyObservers(f),this.logClose(),Promise.all(s).then(function(){return f})},e.prototype._loadSampler=function(t,r){return r._data||(r._data={noMipMaps:9728===r.minFilter||9729===r.minFilter,samplingMode:e._GetTextureSamplingMode(t,r),wrapU:e._GetTextureWrapMode(t+"/wrapS",r.wrapS),wrapV:e._GetTextureWrapMode(t+"/wrapT",r.wrapT)}),r._data},e.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=a.Get(e+"/bufferView",this.gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync("#/bufferViews/"+r.index,r)}this.logClose()}return t._data},e.prototype.loadUriAsync=function(t,r){var a=this,i=this._extensionsLoadUriAsync(t,r);if(i)return i;if(!e._ValidateUri(r))throw new Error(t+": '"+r+"' is invalid");if(n.Tools.IsBase64(r)){var s=new Uint8Array(n.Tools.DecodeBase64(r));return this.log("Decoded "+r.substr(0,64)+"... ("+s.length+" bytes)"),Promise.resolve(s)}return this.log("Loading "+r),this._parent.preprocessUrlAsync(this._rootUrl+r).then(function(e){return new Promise(function(i,s){if(!a._disposed){var l=n.Tools.LoadFile(e,function(e){if(!a._disposed){var t=new Uint8Array(e);a.log("Loaded "+r+" ("+t.length+" bytes)"),i(t)}},function(e){if(!a._disposed&&(l&&(l._lengthComputable=e.lengthComputable,l._loaded=e.loaded,l._total=e.total),a._state===o.GLTFLoaderState.LOADING))try{a._onProgress()}catch(e){s(e)}},a.babylonScene.offlineProvider,!0,function(e,o){a._disposed||s(new n.LoadFileError(t+": Failed to load '"+r+"'"+(e?": "+e.status+" "+e.statusText:""),e))});a._requests.push(l)}})})},e.prototype._onProgress=function(){if(this._progressCallback){for(var e=!0,t=0,r=0,o=0,a=this._requests;o<a.length;o++){var i=a[o];if(void 0===i._lengthComputable||void 0===i._loaded||void 0===i._total)return;e=e&&i._lengthComputable,t+=i._loaded,r+=i._total}this._progressCallback(new n.SceneLoaderProgressEvent(e,t,e?r:0))}},e._GetTextureWrapMode=function(e,t){switch(t=void 0==t?10497:t){case 33071:return n.Texture.CLAMP_ADDRESSMODE;case 33648:return n.Texture.MIRROR_ADDRESSMODE;case 10497:return n.Texture.WRAP_ADDRESSMODE;default:return n.Tools.Warn(e+": Invalid value ("+t+")"),n.Texture.WRAP_ADDRESSMODE}},e._GetTextureSamplingMode=function(e,t){var r=void 0==t.magFilter?9729:t.magFilter,o=void 0==t.minFilter?9987:t.minFilter;if(9729===r)switch(o){case 9728:return n.Texture.LINEAR_NEAREST;case 9729:return n.Texture.LINEAR_LINEAR;case 9984:return n.Texture.LINEAR_NEAREST_MIPNEAREST;case 9985:return n.Texture.LINEAR_LINEAR_MIPNEAREST;case 9986:return n.Texture.LINEAR_NEAREST_MIPLINEAR;case 9987:return n.Texture.LINEAR_LINEAR_MIPLINEAR;default:return n.Tools.Warn(e+"/minFilter: Invalid value ("+o+")"),n.Texture.LINEAR_LINEAR_MIPLINEAR}else switch(9728!==r&&n.Tools.Warn(e+"/magFilter: Invalid value ("+r+")"),o){case 9728:return n.Texture.NEAREST_NEAREST;case 9729:return n.Texture.NEAREST_LINEAR;case 9984:return n.Texture.NEAREST_NEAREST_MIPNEAREST;case 9985:return n.Texture.NEAREST_LINEAR_MIPNEAREST;case 9986:return n.Texture.NEAREST_NEAREST_MIPLINEAR;case 9987:return n.Texture.NEAREST_LINEAR_MIPLINEAR;default:return n.Tools.Warn(e+"/minFilter: Invalid value ("+o+")"),n.Texture.NEAREST_NEAREST_MIPNEAREST}},e._GetTypedArray=function(e,t,r,n,o){var a=r.buffer;n=r.byteOffset+(n||0);try{switch(t){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 "+t)}}catch(t){throw new Error(e+": "+t)}},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(e+": Invalid type ("+t+")")},e._ValidateUri=function(e){return n.Tools.IsBase64(e)||-1===e.indexOf("..")},e._GetDrawMode=function(e,t){switch(void 0==t&&(t=4),t){case 0:return n.Material.PointListDrawMode;case 1:return n.Material.LineListDrawMode;case 2:return n.Material.LineLoopDrawMode;case 3:return n.Material.LineStripDrawMode;case 4:return n.Material.TriangleFillMode;case 5:return n.Material.TriangleStripDrawMode;case 6:return n.Material.TriangleFanDrawMode}throw new Error(e+": Invalid mesh primitive mode ("+t+")")},e.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")})},e.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")})},e.prototype._forEachExtensions=function(t){for(var r=0,n=e._ExtensionNames;r<n.length;r++){var o=n[r],a=this._extensions[o];a.enabled&&t(a)}},e.prototype._applyExtensions=function(t,r){for(var n=0,o=e._ExtensionNames;n<o.length;n++){var a=o[n],i=this._extensions[a];if(i.enabled){var s=t;s._activeLoaderExtensions=s._activeLoaderExtensions||{};var l=s._activeLoaderExtensions;if(!l[a]){l[a]=!0;try{var u=r(i);if(u)return u}finally{delete l[a]}}}}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,function(r){return r.loadSceneAsync&&r.loadSceneAsync(e,t)})},e.prototype._extensionsLoadNodeAsync=function(e,t,r){return this._applyExtensions(t,function(n){return n.loadNodeAsync&&n.loadNodeAsync(e,t,r)})},e.prototype._extensionsLoadCameraAsync=function(e,t,r){return this._applyExtensions(t,function(n){return n.loadCameraAsync&&n.loadCameraAsync(e,t,r)})},e.prototype._extensionsLoadVertexDataAsync=function(e,t,r){return this._applyExtensions(t,function(n){return n._loadVertexDataAsync&&n._loadVertexDataAsync(e,t,r)})},e.prototype._extensionsLoadMaterialAsync=function(e,t,r,n,o){return this._applyExtensions(t,function(a){return a._loadMaterialAsync&&a._loadMaterialAsync(e,t,r,n,o)})},e.prototype._extensionsCreateMaterial=function(e,t,r){return this._applyExtensions({},function(n){return n.createMaterial&&n.createMaterial(e,t,r)})},e.prototype._extensionsLoadMaterialPropertiesAsync=function(e,t,r){return this._applyExtensions(t,function(n){return n.loadMaterialPropertiesAsync&&n.loadMaterialPropertiesAsync(e,t,r)})},e.prototype._extensionsLoadTextureInfoAsync=function(e,t,r){return this._applyExtensions(t,function(n){return n.loadTextureInfoAsync&&n.loadTextureInfoAsync(e,t,r)})},e.prototype._extensionsLoadAnimationAsync=function(e,t){return this._applyExtensions(t,function(r){return r.loadAnimationAsync&&r.loadAnimationAsync(e,t)})},e.prototype._extensionsLoadUriAsync=function(e,t){return this._applyExtensions({},function(r){return r._loadUriAsync&&r._loadUriAsync(e,t)})},e.LoadExtensionAsync=function(e,t,r,n){if(!t.extensions)return null;var o=t.extensions[r];return o?n(e+"/extensions/"+r,o):null},e.LoadExtraAsync=function(e,t,r,n){if(!t.extras)return null;var o=t.extras[r];return o?n(e+"/extras/"+r,o):null},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._DefaultSampler={index:-1},e._ExtensionNames=new Array,e._ExtensionFactories={},e}();t.GLTF2Loader=i,o.GLTFFileLoader._CreateGLTF2Loader=function(e){return new i(e)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,o,a=r(0);!function(e){e[e.AUTO=0]="AUTO",e[e.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED"}(n=t.GLTFLoaderCoordinateSystemMode||(t.GLTFLoaderCoordinateSystemMode={})),function(e){e[e.NONE=0]="NONE",e[e.FIRST=1]="FIRST",e[e.ALL=2]="ALL"}(o=t.GLTFLoaderAnimationStartMode||(t.GLTFLoaderAnimationStartMode={})),function(e){e[e.LOADING=0]="LOADING",e[e.READY=1]="READY",e[e.COMPLETE=2]="COMPLETE"}(t.GLTFLoaderState||(t.GLTFLoaderState={}));var i=function(){function e(){this.onParsedObservable=new a.Observable,this.coordinateSystemMode=n.AUTO,this.animationStartMode=o.FIRST,this.compileMaterials=!1,this.useClipPlane=!1,this.compileShadowGenerators=!1,this.transparencyAsCoverage=!1,this.preprocessUrlAsync=function(e){return Promise.resolve(e)},this.onMeshLoadedObservable=new a.Observable,this.onTextureLoadedObservable=new a.Observable,this.onMaterialLoadedObservable=new a.Observable,this.onCameraLoadedObservable=new a.Observable,this.onCompleteObservable=new a.Observable,this.onErrorObservable=new a.Observable,this.onDisposeObservable=new a.Observable,this.onExtensionLoadedObservable=new a.Observable,this.validate=!1,this.onValidatedObservable=new a.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(e.prototype,"onParsed",{set:function(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),this._onParsedObserver=this.onParsedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onMeshLoaded",{set:function(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onTextureLoaded",{set:function(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onMaterialLoaded",{set:function(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onCameraLoaded",{set:function(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onComplete",{set:function(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onError",{set:function(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onDispose",{set:function(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onExtensionLoaded",{set:function(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)},enumerable:!0,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:!0,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:!0,configurable:!0}),Object.defineProperty(e.prototype,"onValidated",{set:function(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this._loader&&(this._loader.dispose(),this._loader=null),this._clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()},e.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()},e.prototype.importMeshAsync=function(e,t,r,n,o,a){var i=this;return this._parseAsync(t,r,n,a).then(function(r){return i._log("Loading "+(a||"")),i._loader=i._getLoader(r),i._loader.importMeshAsync(e,t,r,n,o,a)})},e.prototype.loadAsync=function(e,t,r,n,o){var a=this;return this._parseAsync(e,t,r,o).then(function(t){return a._log("Loading "+(o||"")),a._loader=a._getLoader(t),a._loader.loadAsync(e,t,r,n,o)})},e.prototype.loadAssetContainerAsync=function(e,t,r,n,o){var i=this;return this._parseAsync(e,t,r,o).then(function(t){return i._log("Loading "+(o||"")),i._loader=i._getLoader(t),i._loader.importMeshAsync(null,e,t,r,n,o).then(function(t){var r=new a.AssetContainer(e);return Array.prototype.push.apply(r.meshes,t.meshes),Array.prototype.push.apply(r.particleSystems,t.particleSystems),Array.prototype.push.apply(r.skeletons,t.skeletons),Array.prototype.push.apply(r.animationGroups,t.animationGroups),r.removeAllFromScene(),r})})},e.prototype.canDirectLoad=function(e){return-1!==e.indexOf("scene")&&-1!==e.indexOf("node")},e.prototype.createPlugin=function(){return new e},Object.defineProperty(e.prototype,"loaderState",{get:function(){return this._loader?this._loader.state:null},enumerable:!0,configurable:!0}),e.prototype.whenCompleteAsync=function(){var e=this;return new Promise(function(t,r){e.onCompleteObservable.addOnce(function(){t()}),e.onErrorObservable.addOnce(function(e){r(e)})})},e.prototype._parseAsync=function(e,t,r,n){var o=this;return Promise.resolve().then(function(){var a=t instanceof ArrayBuffer?o._unpackBinary(t):{json:t,bin:null};return o._validateAsync(e,a.json,r,n).then(function(){o._startPerformanceCounter("Parse JSON"),o._log("JSON length: "+a.json.length);var e={json:JSON.parse(a.json),bin:a.bin};return o._endPerformanceCounter("Parse JSON"),o.onParsedObservable.notifyObservers(e),o.onParsedObservable.clear(),e})})},e.prototype._validateAsync=function(e,t,r,n){var o=this;if(!this.validate||"undefined"==typeof GLTFValidator)return Promise.resolve();this._startPerformanceCounter("Validate JSON");var i={externalResourceFunction:function(t){return o.preprocessUrlAsync(r+t).then(function(t){return e._loadFileAsync(t,!0,!0)}).then(function(e){return new Uint8Array(e)})}};return n&&"data:"!==n.substr(0,5)&&(i.uri="file:"===r?n:""+r+n),GLTFValidator.validateString(t,i).then(function(e){o._endPerformanceCounter("Validate JSON"),o.onValidatedObservable.notifyObservers(e),o.onValidatedObservable.clear()},function(e){o._endPerformanceCounter("Validate JSON"),a.Tools.Warn("Failed to validate: "+e),o.onValidatedObservable.clear()})},e.prototype._getLoader=function(t){var r=t.json.asset||{};this._log("Asset version: "+r.version),r.minVersion&&this._log("Asset minimum version: "+r.minVersion),r.generator&&this._log("Asset generator: "+r.generator);var n=e._parseVersion(r.version);if(!n)throw new Error("Invalid version: "+r.version);if(void 0!==r.minVersion){var o=e._parseVersion(r.minVersion);if(!o)throw new Error("Invalid minimum version: "+r.minVersion);if(e._compareVersion(o,{major:2,minor:0})>0)throw new Error("Incompatible minimum version: "+r.minVersion)}var a={1:e._CreateGLTF1Loader,2:e._CreateGLTF2Loader}[n.major];if(!a)throw new Error("Unsupported version: "+r.version);return a(this)},e.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},e.prototype._unpackBinaryV1=function(t){var r=t.readUint32();if(r!=t.getLength())throw new Error("Length in header does not match actual data length: "+r+" != "+t.getLength());var n,o=t.readUint32(),a=t.readUint32();switch(a){case 0:n=e._decodeBufferToText(t.readUint8Array(o));break;default:throw new Error("Unexpected content format: "+a)}var i=t.getLength()-t.getPosition();return{json:n,bin:t.readUint8Array(i)}},e.prototype._unpackBinaryV2=function(t){var r=1313821514,n=5130562,o=t.readUint32();if(o!==t.getLength())throw new Error("Length in header does not match actual data length: "+o+" != "+t.getLength());var a=t.readUint32();if(t.readUint32()!==r)throw new Error("First chunk format is not JSON");for(var i=e._decodeBufferToText(t.readUint8Array(a)),s=null;t.getPosition()<t.getLength();){var l=t.readUint32();switch(t.readUint32()){case r:throw new Error("Unexpected JSON chunk");case n:s=t.readUint8Array(l);break;default:t.skipBytes(l)}}return{json:i,bin: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._decodeBufferToText=function(e){for(var t="",r=e.byteLength,n=0;n<r;n++)t+=String.fromCharCode(e[n]);return t},e.prototype._logOpen=function(e){this._log(e),this._logIndentLevel++},e.prototype._logClose=function(){--this._logIndentLevel},e.prototype._logEnabled=function(t){var r=e._logSpaces.substr(0,2*this._logIndentLevel);a.Tools.Log(""+r+t)},e.prototype._logDisabled=function(e){},e.prototype._startPerformanceCounterEnabled=function(e){a.Tools.StartPerformanceCounter(e)},e.prototype._startPerformanceCounterDisabled=function(e){},e.prototype._endPerformanceCounterEnabled=function(e){a.Tools.EndPerformanceCounter(e)},e.prototype._endPerformanceCounterDisabled=function(e){},e.IncrementalLoading=!0,e.HomogeneousCoordinates=!1,e._logSpaces=" ",e}();t.GLTFFileLoader=i;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}();a.SceneLoader&&a.SceneLoader.RegisterPlugin(new i)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,o=r(4),a=r(7),i=r(0),s=r(2),l=r(6);!function(e){e[e.IDENTIFIER=1]="IDENTIFIER",e[e.UNKNOWN=2]="UNKNOWN",e[e.END_OF_INPUT=3]="END_OF_INPUT"}(n||(n={}));var u=function(){function e(e){this._pos=0,this.currentToken=n.UNKNOWN,this.currentIdentifier="",this.currentString="",this.isLetterOrDigitPattern=/^[a-zA-Z0-9]+$/,this._toParse=e,this._maxPos=e.length}return e.prototype.getNextToken=function(){if(this.isEnd())return n.END_OF_INPUT;if(this.currentString=this.read(),this.currentToken=n.UNKNOWN,"_"===this.currentString||this.isLetterOrDigitPattern.test(this.currentString))for(this.currentToken=n.IDENTIFIER,this.currentIdentifier=this.currentString;!this.isEnd()&&(this.isLetterOrDigitPattern.test(this.currentString=this.peek())||"_"===this.currentString);)this.currentIdentifier+=this.currentString,this.forward();return this.currentToken},e.prototype.peek=function(){return this._toParse[this._pos]},e.prototype.read=function(){return this._toParse[this._pos++]},e.prototype.forward=function(){this._pos++},e.prototype.isEnd=function(){return this._pos>=this._maxPos},e}(),c=["MODEL","VIEW","PROJECTION","MODELVIEW","MODELVIEWPROJECTION","JOINTMATRIX"],f=["world","view","projection","worldView","worldViewProjection","mBones"],d=["translation","rotation","scale"],h=["position","rotationQuaternion","scaling"],p=function(e,t,r){for(var n in e){var o=e[n];r[t][n]=o}},m=function(e){if(e)for(var t=0;t<e.length/2;t++)e[2*t+1]=1-e[2*t+1]},_=function(e){if("NORMAL"===e.semantic)return"normal";if("POSITION"===e.semantic)return"position";if("JOINT"===e.semantic)return"matricesIndices";if("WEIGHT"===e.semantic)return"matricesWeights";if("COLOR"===e.semantic)return"color";if(e.semantic&&-1!==e.semantic.indexOf("TEXCOORD_")){var t=Number(e.semantic.split("_")[1]);return"uv"+(0===t?"":t+1)}return null},y=function(e){var t=null;if(e.translation||e.rotation||e.scale){var r=i.Vector3.FromArray(e.scale||[1,1,1]),n=i.Quaternion.FromArray(e.rotation||[0,0,0,1]),o=i.Vector3.FromArray(e.translation||[0,0,0]);t=i.Matrix.Compose(r,n,o)}else t=i.Matrix.FromArray(e.matrix);return t},v=function(e,t,r,n){for(var o=0;o<n.bones.length;o++)if(n.bones[o].name===r)return n.bones[o];var a=e.nodes;for(var s in a){var l=a[s];if(l.jointName){var u=l.children;for(o=0;o<u.length;o++){var c=e.nodes[u[o]];if(c.jointName&&c.jointName===r){var f=y(l),d=new i.Bone(l.name||"",n,v(e,t,l.jointName,n),f);return d.id=s,d}}}}return null},A=function(e,t){for(var r=0;r<e.length;r++)for(var n=e[r],o=0;o<n.node.children.length;o++){if(n.node.children[o]===t)return n.bone}return null},g=function(e,t){var r=e.nodes,n=r[t];if(n)return{node:n,id:t};for(var o in r)if((n=r[o]).jointName===t)return{node:n,id:o};return null},b=function(e,t){for(var r=0;r<e.jointNames.length;r++)if(e.jointNames[r]===t)return!0;return!1},T=function(e,t,r,n,o){if(n||(n=new i.Skeleton(t.name||"","",e.scene)),!t.babylonSkeleton)return n;var a=[],s=[];!function(e,t,r,n){for(var o in e.nodes){var a=e.nodes[o],s=o;if(a.jointName&&!b(r,a.jointName)){var l=y(a),u=new i.Bone(a.name||"",t,null,l);u.id=s,n.push({bone:u,node:a,id:s})}}for(var c=0;c<n.length;c++)for(var f=n[c],d=f.node.children,h=0;h<d.length;h++){for(var p=null,m=0;m<n.length;m++)if(n[m].id===d[h]){p=n[m];break}p&&(p.bone._parent=f.bone,f.bone.children.push(p.bone))}}(e,n,t,a),n.bones=[];for(var l=0;l<t.jointNames.length;l++){if(x=g(e,t.jointNames[l])){var u=x.node;if(u){o=x.id;var c=e.scene.getBoneByID(o);if(c)n.bones.push(c);else{for(var f=!1,d=null,h=0;h<l;h++){var p=g(e,t.jointNames[h]);if(p){var m=p.node;if(m){var _=m.children;if(_){f=!1;for(var T=0;T<_.length;T++)if(_[T]===o){d=v(e,t,t.jointNames[h],n),f=!0;break}if(f)break}}else i.Tools.Warn("Joint named "+t.jointNames[h]+" does not exist when looking for parent")}}var E=y(u);!d&&a.length>0&&(d=A(a,o))&&-1===s.indexOf(d)&&s.push(d),new i.Bone(u.jointName||"",n,d,E).id=o}}else i.Tools.Warn("Joint named "+t.jointNames[l]+" does not exist")}}var L=n.bones;n.bones=[];for(l=0;l<t.jointNames.length;l++){var x;if(x=g(e,t.jointNames[l]))for(h=0;h<L.length;h++)if(L[h].id===x.id){n.bones.push(L[h]);break}}n.prepare();for(l=0;l<s.length;l++)n.bones.push(s[l]);return n},E=function(e,t,r,n,o){if(o||((o=new i.Mesh(t.name||"",e.scene)).id=n),!t.babylonNode)return o;for(var l,u=[],c=null,f=new Array,d=new Array,h=new Array,p=new Array,_=0;_<r.length;_++){var y=r[_];if(C=e.meshes[y])for(var v=0;v<C.primitives.length;v++){var A=new i.VertexData,g=C.primitives[v];g.mode;var b=g.attributes,T=null,E=null;for(var L in b)if(T=e.accessors[b[L]],E=a.GLTFUtils.GetBufferFromAccessor(e,T),"NORMAL"===L)A.normals=new Float32Array(E.length),A.normals.set(E);else if("POSITION"===L){if(s.GLTFFileLoader.HomogeneousCoordinates){A.positions=new Float32Array(E.length-E.length/4);for(var x=0;x<E.length;x+=4)A.positions[x]=E[x],A.positions[x+1]=E[x+1],A.positions[x+2]=E[x+2]}else A.positions=new Float32Array(E.length),A.positions.set(E);d.push(A.positions.length)}else if(-1!==L.indexOf("TEXCOORD_")){var O=Number(L.split("_")[1]),M=i.VertexBuffer.UVKind+(0===O?"":O+1),w=new Float32Array(E.length);w.set(E),m(w),A.set(w,M)}else"JOINT"===L?(A.matricesIndices=new Float32Array(E.length),A.matricesIndices.set(E)):"WEIGHT"===L?(A.matricesWeights=new Float32Array(E.length),A.matricesWeights.set(E)):"COLOR"===L&&(A.colors=new Float32Array(E.length),A.colors.set(E));if(T=e.accessors[g.indices])E=a.GLTFUtils.GetBufferFromAccessor(e,T),A.indices=new Int32Array(E.length),A.indices.set(E),p.push(A.indices.length);else{var S=[];for(x=0;x<A.positions.length/3;x++)S.push(x);A.indices=new Int32Array(S),p.push(A.indices.length)}c?c.merge(A):c=A;var P=e.scene.getMaterialByID(g.material);u.push(null===P?a.GLTFUtils.GetDefaultMaterial(e.scene):P),f.push(0===f.length?0:f[f.length-1]+d[d.length-2]),h.push(0===h.length?0:h[h.length-1]+p[p.length-2])}}u.length>1?(l=new i.MultiMaterial("multimat"+n,e.scene)).subMaterials=u:l=new i.StandardMaterial("multimat"+n,e.scene),1===u.length&&(l=u[0]),o.material||(o.material=l),new i.Geometry(n,e.scene,c,!1,o),o.computeWorldMatrix(!0),o.subMeshes=[];var N=0;for(_=0;_<r.length;_++){var C;y=r[_];if(C=e.meshes[y])for(v=0;v<C.primitives.length;v++)C.primitives[v].mode,i.SubMesh.AddToMesh(N,f[N],d[N],h[N],p[N],o,o,!0),N++}return o},L=function(e,t,r,n){e.position&&(e.position=t),(e.rotationQuaternion||e.rotation)&&(e.rotationQuaternion=r),e.scaling&&(e.scaling=n)},x=function(e,t,r,n){var o=null;if(e.importOnlyMeshes&&(t.skin||t.meshes)&&e.importMeshesNames&&e.importMeshesNames.length>0&&-1===e.importMeshesNames.indexOf(t.name||""))return null;if(t.skin){if(t.meshes){var a=e.skins[t.skin];(s=E(e,t,t.meshes,r,t.babylonNode)).skeleton=e.scene.getLastSkeletonByID(t.skin),null===s.skeleton&&(s.skeleton=T(e,a,0,a.babylonSkeleton,t.skin),a.babylonSkeleton||(a.babylonSkeleton=s.skeleton)),o=s}}else if(t.meshes){var s;o=s=E(e,t,t.mesh?[t.mesh]:t.meshes,r,t.babylonNode)}else if(!t.light||t.babylonNode||e.importOnlyMeshes){if(t.camera&&!t.babylonNode&&!e.importOnlyMeshes){var l=e.cameras[t.camera];if(l)if("orthographic"===l.type){var u=new i.FreeCamera(t.camera,i.Vector3.Zero(),e.scene,!1);u.name=t.name||"",u.mode=i.Camera.ORTHOGRAPHIC_CAMERA,u.attachControl(e.scene.getEngine().getRenderingCanvas()),o=u}else if("perspective"===l.type){var c=l[l.type],f=new i.FreeCamera(t.camera,i.Vector3.Zero(),e.scene,!1);f.name=t.name||"",f.attachControl(e.scene.getEngine().getRenderingCanvas()),c.aspectRatio||(c.aspectRatio=e.scene.getEngine().getRenderWidth()/e.scene.getEngine().getRenderHeight()),c.znear&&c.zfar&&(f.maxZ=c.zfar,f.minZ=c.znear),o=f}}}else{var d=e.lights[t.light];if(d)if("ambient"===d.type){var h=d[d.type],p=new i.HemisphericLight(t.light,i.Vector3.Zero(),e.scene);p.name=t.name||"",h.color&&(p.diffuse=i.Color3.FromArray(h.color)),o=p}else if("directional"===d.type){var m=d[d.type],_=new i.DirectionalLight(t.light,i.Vector3.Zero(),e.scene);_.name=t.name||"",m.color&&(_.diffuse=i.Color3.FromArray(m.color)),o=_}else if("point"===d.type){var y=d[d.type],v=new i.PointLight(t.light,i.Vector3.Zero(),e.scene);v.name=t.name||"",y.color&&(v.diffuse=i.Color3.FromArray(y.color)),o=v}else if("spot"===d.type){var A=d[d.type],g=new i.SpotLight(t.light,i.Vector3.Zero(),i.Vector3.Zero(),0,0,e.scene);g.name=t.name||"",A.color&&(g.diffuse=i.Color3.FromArray(A.color)),A.fallOfAngle&&(g.angle=A.fallOfAngle),A.fallOffExponent&&(g.exponent=A.fallOffExponent),o=g}}if(!t.jointName){if(t.babylonNode)return t.babylonNode;if(null===o){var b=new i.Mesh(t.name||"",e.scene);t.babylonNode=b,o=b}}if(null!==o){if(t.matrix&&o instanceof i.Mesh)!function(e,t,r){if(t.matrix){var n=new i.Vector3(0,0,0),o=new i.Quaternion,a=new i.Vector3(0,0,0);i.Matrix.FromArray(t.matrix).decompose(a,o,n),L(e,n,o,a)}else t.translation&&t.rotation&&t.scale&&L(e,i.Vector3.FromArray(t.translation),i.Quaternion.FromArray(t.rotation),i.Vector3.FromArray(t.scale));e.computeWorldMatrix(!0)}(o,t);else{var x=t.translation||[0,0,0],O=t.rotation||[0,0,0,1],M=t.scale||[1,1,1];L(o,i.Vector3.FromArray(x),i.Quaternion.FromArray(O),i.Vector3.FromArray(M))}o.updateCache(!0),t.babylonNode=o}return o},O=function(e,t,r,n){void 0===n&&(n=!1);var o=e.nodes[t],a=null;if(n=!(e.importOnlyMeshes&&!n&&e.importMeshesNames)||(-1!==e.importMeshesNames.indexOf(o.name||"")||0===e.importMeshesNames.length),!o.jointName&&n&&null!==(a=x(e,o,t))&&(a.id=t,a.parent=r),o.children)for(var i=0;i<o.children.length;i++)O(e,o.children[i],a,n)},M=function(e){var t=e.currentScene;if(t)for(var r=0;r<t.nodes.length;r++)O(e,t.nodes[r],null);else for(var n in e.scenes){t=e.scenes[n];for(r=0;r<t.nodes.length;r++)O(e,t.nodes[r],null)}!function(e){for(var t in e.animations){var r=e.animations[t];if(r.channels&&r.samplers)for(var n=null,o=0;o<r.channels.length;o++){var s=r.channels[o],l=r.samplers[s.sampler];if(l){var u=null,c=null;r.parameters?(u=r.parameters[l.input],c=r.parameters[l.output]):(u=l.input,c=l.output);var f=a.GLTFUtils.GetBufferFromAccessor(e,e.accessors[u]),p=a.GLTFUtils.GetBufferFromAccessor(e,e.accessors[c]),m=s.target.id,_=e.scene.getNodeByID(m);if(null===_&&(_=e.scene.getNodeByName(m)),null!==_){var y=_ instanceof i.Bone,v=s.target.path,A=d.indexOf(v);-1!==A&&(v=h[A]);var g=i.Animation.ANIMATIONTYPE_MATRIX;y||("rotationQuaternion"===v?(g=i.Animation.ANIMATIONTYPE_QUATERNION,_.rotationQuaternion=new i.Quaternion):g=i.Animation.ANIMATIONTYPE_VECTOR3);var b=null,T=[],E=0,L=!1;y&&n&&n.getKeys().length===f.length&&(b=n,L=!0),L||(b=new i.Animation(t,y?"_matrix":v,1,g,i.Animation.ANIMATIONLOOPMODE_CYCLE));for(var x=0;x<f.length;x++){var O=null;if("rotationQuaternion"===v?(O=i.Quaternion.FromArray([p[E],p[E+1],p[E+2],p[E+3]]),E+=4):(O=i.Vector3.FromArray([p[E],p[E+1],p[E+2]]),E+=3),y){var M=_,w=i.Vector3.Zero(),S=new i.Quaternion,P=i.Vector3.Zero(),N=M.getBaseMatrix();L&&n&&(N=n.getKeys()[x].value),N.decompose(P,S,w),"position"===v?w=O:"rotationQuaternion"===v?S=O:P=O,O=i.Matrix.Compose(P,S,w)}L?n&&(n.getKeys()[x].value=O):T.push({frame:f[x],value:O})}!L&&b&&(b.setKeys(T),_.animations.push(b)),n=b,e.scene.stopAnimation(_),e.scene.beginAnimation(_,0,f[f.length-1],!0,1)}else i.Tools.Warn("Creating animation named "+t+". But cannot find node named "+m+" to attach to")}}}}(e);for(r=0;r<e.scene.skeletons.length;r++){var o=e.scene.skeletons[r];e.scene.beginAnimation(o,0,Number.MAX_VALUE,!0,1)}},w=function(e,t,r,n,i,s){return function(u){!function(e,t,r,n,i){var s=n.values||r.parameters,u=r.uniforms;for(var c in i){var f=i[c],d=f.type,h=s[u[c]];if(void 0===h&&(h=f.value),h){var p=function(e){return function(r){f.value&&e&&(t.setTexture(e,r),delete i[e])}};d===o.EParameterType.SAMPLER_2D?l.GLTFLoaderExtension.LoadTextureAsync(e,n.values?h:f.value,p(c),function(){return p(null)}):f.value&&a.GLTFUtils.SetUniform(t,c,n.values?h:f.value,d)&&delete i[c]}}}(e,t,r,n,i),t.onBind=function(l){!function(e,t,r,n,i,s,l){var u=s.values||i.parameters;for(var c in r){var f=r[c],d=f.type;if(d===o.EParameterType.FLOAT_MAT2||d===o.EParameterType.FLOAT_MAT3||d===o.EParameterType.FLOAT_MAT4)if(!f.semantic||f.source||f.node){if(f.semantic&&(f.source||f.node)){var h=t.scene.getNodeByName(f.source||f.node||"");if(null===h&&(h=t.scene.getNodeByID(f.source||f.node||"")),null===h)continue;a.GLTFUtils.SetMatrix(t.scene,h,f,c,n.getEffect())}}else a.GLTFUtils.SetMatrix(t.scene,e,f,c,n.getEffect());else{var p=u[i.uniforms[c]];if(!p)continue;if(d===o.EParameterType.SAMPLER_2D){var m=t.textures[s.values?p:f.value].babylonTexture;if(null===m||void 0===m)continue;n.getEffect().setTexture(c,m)}else a.GLTFUtils.SetUniform(n.getEffect(),c,p,d)}}l(n)}(l,e,i,t,r,n,s)}}},S=function(e,t,r){for(var n in t.uniforms){var o=t.uniforms[n],a=t.parameters[o];if(e.currentIdentifier===n&&a.semantic&&!a.source&&!a.node){var i=c.indexOf(a.semantic);if(-1!==i)return delete r[n],f[i]}}return e.currentIdentifier},P=function(e){for(var t in e.materials)l.GLTFLoaderExtension.LoadMaterialAsync(e,t,function(e){},function(){})},N=function(){function e(){}return e.CreateRuntime=function(e,t,r){var n={extensions:{},accessors:{},buffers:{},bufferViews:{},meshes:{},lights:{},cameras:{},nodes:{},images:{},textures:{},shaders:{},programs:{},samplers:{},techniques:{},materials:{},animations:{},skins:{},extensionsUsed:[],scenes:{},buffersCount:0,shaderscount:0,scene:t,rootUrl:r,loadedBufferCount:0,loadedBufferViews:{},loadedShaderCount:0,importOnlyMeshes:!1,dummyNodes:[]};return e.extensions&&p(e.extensions,"extensions",n),e.extensionsUsed&&p(e.extensionsUsed,"extensionsUsed",n),e.buffers&&function(e,t){for(var r in e){var n=e[r];t.buffers[r]=n,t.buffersCount++}}(e.buffers,n),e.bufferViews&&p(e.bufferViews,"bufferViews",n),e.accessors&&p(e.accessors,"accessors",n),e.meshes&&p(e.meshes,"meshes",n),e.lights&&p(e.lights,"lights",n),e.cameras&&p(e.cameras,"cameras",n),e.nodes&&p(e.nodes,"nodes",n),e.images&&p(e.images,"images",n),e.textures&&p(e.textures,"textures",n),e.shaders&&function(e,t){for(var r in e){var n=e[r];t.shaders[r]=n,t.shaderscount++}}(e.shaders,n),e.programs&&p(e.programs,"programs",n),e.samplers&&p(e.samplers,"samplers",n),e.techniques&&p(e.techniques,"techniques",n),e.materials&&p(e.materials,"materials",n),e.animations&&p(e.animations,"animations",n),e.skins&&p(e.skins,"skins",n),e.scenes&&(n.scenes=e.scenes),e.scene&&e.scenes&&(n.currentScene=e.scenes[e.scene]),n},e.LoadBufferAsync=function(e,t,r,n,o){var a=e.buffers[t];i.Tools.IsBase64(a.uri)?setTimeout(function(){return r(new Uint8Array(i.Tools.DecodeBase64(a.uri)))}):i.Tools.LoadFile(e.rootUrl+a.uri,function(e){return r(new Uint8Array(e))},o,void 0,!0,function(e){e&&n(e.status+" "+e.statusText)})},e.LoadTextureBufferAsync=function(e,t,r,n){var o=e.textures[t];if(o&&o.source)if(o.babylonTexture)r(null);else{var a=e.images[o.source];i.Tools.IsBase64(a.uri)?setTimeout(function(){return r(new Uint8Array(i.Tools.DecodeBase64(a.uri)))}):i.Tools.LoadFile(e.rootUrl+a.uri,function(e){return r(new Uint8Array(e))},void 0,void 0,!0,function(e){e&&n(e.status+" "+e.statusText)})}else n("")},e.CreateTextureAsync=function(e,t,r,n,s){var l=e.textures[t];if(l.babylonTexture)n(l.babylonTexture);else{var u=e.samplers[l.sampler],c=u.minFilter===o.ETextureFilterType.NEAREST_MIPMAP_NEAREST||u.minFilter===o.ETextureFilterType.NEAREST_MIPMAP_LINEAR||u.minFilter===o.ETextureFilterType.LINEAR_MIPMAP_NEAREST||u.minFilter===o.ETextureFilterType.LINEAR_MIPMAP_LINEAR,f=i.Texture.BILINEAR_SAMPLINGMODE,d=null==r?new Blob:new Blob([r]),h=URL.createObjectURL(d),p=function(){return URL.revokeObjectURL(h)},m=new i.Texture(h,e.scene,!c,!0,f,p,p);void 0!==u.wrapS&&(m.wrapU=a.GLTFUtils.GetWrapMode(u.wrapS)),void 0!==u.wrapT&&(m.wrapV=a.GLTFUtils.GetWrapMode(u.wrapT)),m.name=t,l.babylonTexture=m,n(m)}},e.LoadShaderStringAsync=function(e,t,r,n){var o=e.shaders[t];if(i.Tools.IsBase64(o.uri)){var a=atob(o.uri.split(",")[1]);r&&r(a)}else i.Tools.LoadFile(e.rootUrl+o.uri,r,void 0,void 0,!1,function(e){e&&n&&n(e.status+" "+e.statusText)})},e.LoadMaterialAsync=function(e,t,r,a){var s=e.materials[t];if(s.technique){var l=e.techniques[s.technique];if(!l){var d=new i.StandardMaterial(t,e.scene);return d.diffuseColor=new i.Color3(.5,.5,.5),d.sideOrientation=i.Material.CounterClockWiseSideOrientation,void r(d)}var h=e.programs[l.program],p=l.states,m=i.Effect.ShadersStore[h.vertexShader+"VertexShader"],y=i.Effect.ShadersStore[h.fragmentShader+"PixelShader"],v="",A="",g=new u(m),b=new u(y),T={},E=[],L=[],x=[];for(var O in l.uniforms){var M=l.uniforms[O],P=l.parameters[M];if(T[O]=P,!P.semantic||P.node||P.source)P.type===o.EParameterType.SAMPLER_2D?x.push(O):E.push(O);else{var N=c.indexOf(P.semantic);-1!==N?(E.push(f[N]),delete T[O]):E.push(O)}}for(var C in l.attributes){var I=l.attributes[C];if((B=l.parameters[I]).semantic){var F=_(B);F&&L.push(F)}}for(;!g.isEnd()&&g.getNextToken();){if(g.currentToken===n.IDENTIFIER){var R=!1;for(var C in l.attributes){I=l.attributes[C];var B=l.parameters[I];if(g.currentIdentifier===C&&B.semantic){v+=_(B),R=!0;break}}R||(v+=S(g,l,T))}else v+=g.currentString}for(;!b.isEnd()&&b.getNextToken();){b.currentToken===n.IDENTIFIER?A+=S(b,l,T):A+=b.currentString}var D={vertex:h.vertexShader+t,fragment:h.fragmentShader+t},V={attributes:L,uniforms:E,samplers:x,needAlphaBlending:p&&p.enable&&-1!==p.enable.indexOf(3042)};i.Effect.ShadersStore[h.vertexShader+t+"VertexShader"]=v,i.Effect.ShadersStore[h.fragmentShader+t+"PixelShader"]=A;var G=new i.ShaderMaterial(t,e.scene,D,V);if(G.onError=function(e,t,r){return function(n,o){t.dispose(!0),r("Cannot compile program named "+e.name+". Error: "+o+". Default material will be applied")}}(h,G,a),G.onCompiled=w(e,G,l,s,T,r),G.sideOrientation=i.Material.CounterClockWiseSideOrientation,p&&p.functions){var U=p.functions;U.cullFace&&U.cullFace[0]!==o.ECullingType.BACK&&(G.backFaceCulling=!1);var k=U.blendFuncSeparate;k&&(k[0]===o.EBlendingFunction.SRC_ALPHA&&k[1]===o.EBlendingFunction.ONE_MINUS_SRC_ALPHA&&k[2]===o.EBlendingFunction.ONE&&k[3]===o.EBlendingFunction.ONE?G.alphaMode=i.Engine.ALPHA_COMBINE:k[0]===o.EBlendingFunction.ONE&&k[1]===o.EBlendingFunction.ONE&&k[2]===o.EBlendingFunction.ZERO&&k[3]===o.EBlendingFunction.ONE?G.alphaMode=i.Engine.ALPHA_ONEONE:k[0]===o.EBlendingFunction.SRC_ALPHA&&k[1]===o.EBlendingFunction.ONE&&k[2]===o.EBlendingFunction.ZERO&&k[3]===o.EBlendingFunction.ONE?G.alphaMode=i.Engine.ALPHA_ADD:k[0]===o.EBlendingFunction.ZERO&&k[1]===o.EBlendingFunction.ONE_MINUS_SRC_COLOR&&k[2]===o.EBlendingFunction.ONE&&k[3]===o.EBlendingFunction.ONE?G.alphaMode=i.Engine.ALPHA_SUBTRACT:k[0]===o.EBlendingFunction.DST_COLOR&&k[1]===o.EBlendingFunction.ZERO&&k[2]===o.EBlendingFunction.ONE&&k[3]===o.EBlendingFunction.ONE?G.alphaMode=i.Engine.ALPHA_MULTIPLY:k[0]===o.EBlendingFunction.SRC_ALPHA&&k[1]===o.EBlendingFunction.ONE_MINUS_SRC_COLOR&&k[2]===o.EBlendingFunction.ONE&&k[3]===o.EBlendingFunction.ONE&&(G.alphaMode=i.Engine.ALPHA_MAXIMIZED))}}else a&&a("No technique found.")},e}();t.GLTFLoaderBase=N;var C=function(){function e(){this.state=null}return e.RegisterExtension=function(t){e.Extensions[t.name]?i.Tools.Error('Tool with the same name "'+t.name+'" already exists'):e.Extensions[t.name]=t},e.prototype.dispose=function(){},e.prototype._importMeshAsync=function(e,t,r,n,o,a,u){var c=this;return t.useRightHandedSystem=!0,l.GLTFLoaderExtension.LoadRuntimeAsync(t,r,n,function(t){t.importOnlyMeshes=!0,""===e?t.importMeshesNames=[]:"string"==typeof e?t.importMeshesNames=[e]:!e||e instanceof Array?(t.importMeshesNames=[],i.Tools.Warn("Argument meshesNames must be of type string or string[]")):t.importMeshesNames=[e],c._createNodes(t);var r=new Array,n=new Array;for(var l in t.nodes){var u=t.nodes[l];u.babylonNode instanceof i.AbstractMesh&&r.push(u.babylonNode)}for(var f in t.skins){var d=t.skins[f];d.babylonSkeleton instanceof i.Skeleton&&n.push(d.babylonSkeleton)}c._loadBuffersAsync(t,function(){c._loadShadersAsync(t,function(){P(t),M(t),!s.GLTFFileLoader.IncrementalLoading&&o&&o(r,n)})},a),s.GLTFFileLoader.IncrementalLoading&&o&&o(r,n)},u),!0},e.prototype.importMeshAsync=function(e,t,r,n,o){var a=this;return new Promise(function(i,s){a._importMeshAsync(e,t,r,n,function(e,t){i({meshes:e,particleSystems:[],skeletons:t,animationGroups:[]})},o,function(e){s(new Error(e))})})},e.prototype._loadAsync=function(e,t,r,n,o,a){var i=this;e.useRightHandedSystem=!0,l.GLTFLoaderExtension.LoadRuntimeAsync(e,t,r,function(e){l.GLTFLoaderExtension.LoadRuntimeExtensionsAsync(e,function(){i._createNodes(e),i._loadBuffersAsync(e,function(){i._loadShadersAsync(e,function(){P(e),M(e),s.GLTFFileLoader.IncrementalLoading||n()})}),s.GLTFFileLoader.IncrementalLoading&&n()},a)},a)},e.prototype.loadAsync=function(e,t,r,n){var o=this;return new Promise(function(a,i){o._loadAsync(e,t,r,function(){a()},n,function(e){i(new Error(e))})})},e.prototype._loadShadersAsync=function(e,t){var r=!1,n=function(r,n){l.GLTFLoaderExtension.LoadShaderStringAsync(e,r,function(a){a instanceof ArrayBuffer||(e.loadedShaderCount++,a&&(i.Effect.ShadersStore[r+(n.type===o.EShaderType.VERTEX?"VertexShader":"PixelShader")]=a),e.loadedShaderCount===e.shaderscount&&t())},function(){i.Tools.Error("Error when loading shader program named "+r+" located at "+n.uri)})};for(var a in e.shaders){r=!0;var s=e.shaders[a];s?n.bind(this,a,s)():i.Tools.Error("No shader named: "+a)}r||t()},e.prototype._loadBuffersAsync=function(e,t,r){var n=!1,o=function(r,n){l.GLTFLoaderExtension.LoadBufferAsync(e,r,function(o){e.loadedBufferCount++,o&&(o.byteLength!=e.buffers[r].byteLength&&i.Tools.Error("Buffer named "+r+" is length "+o.byteLength+". Expected: "+n.byteLength),e.loadedBufferViews[r]=o),e.loadedBufferCount===e.buffersCount&&t()},function(){i.Tools.Error("Error when loading buffer named "+r+" located at "+n.uri)})};for(var a in e.buffers){n=!0;var s=e.buffers[a];s?o.bind(this,a,s)():i.Tools.Error("No buffer named: "+a)}n||t()},e.prototype._createNodes=function(e){var t=e.currentScene;if(t)for(var r=0;r<t.nodes.length;r++)O(e,t.nodes[r],null);else for(var n in e.scenes){t=e.scenes[n];for(r=0;r<t.nodes.length;r++)O(e,t.nodes[r],null)}},e.Extensions={},e}();t.GLTF1Loader=C,s.GLTFFileLoader._CreateGLTF1Loader=function(){return new C}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.FLOAT=5126]="FLOAT"}(t.EComponentType||(t.EComponentType={})),function(e){e[e.FRAGMENT=35632]="FRAGMENT",e[e.VERTEX=35633]="VERTEX"}(t.EShaderType||(t.EShaderType={})),function(e){e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.INT=5124]="INT",e[e.UNSIGNED_INT=5125]="UNSIGNED_INT",e[e.FLOAT=5126]="FLOAT",e[e.FLOAT_VEC2=35664]="FLOAT_VEC2",e[e.FLOAT_VEC3=35665]="FLOAT_VEC3",e[e.FLOAT_VEC4=35666]="FLOAT_VEC4",e[e.INT_VEC2=35667]="INT_VEC2",e[e.INT_VEC3=35668]="INT_VEC3",e[e.INT_VEC4=35669]="INT_VEC4",e[e.BOOL=35670]="BOOL",e[e.BOOL_VEC2=35671]="BOOL_VEC2",e[e.BOOL_VEC3=35672]="BOOL_VEC3",e[e.BOOL_VEC4=35673]="BOOL_VEC4",e[e.FLOAT_MAT2=35674]="FLOAT_MAT2",e[e.FLOAT_MAT3=35675]="FLOAT_MAT3",e[e.FLOAT_MAT4=35676]="FLOAT_MAT4",e[e.SAMPLER_2D=35678]="SAMPLER_2D"}(t.EParameterType||(t.EParameterType={})),function(e){e[e.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e[e.REPEAT=10497]="REPEAT"}(t.ETextureWrapMode||(t.ETextureWrapMode={})),function(e){e[e.NEAREST=9728]="NEAREST",e[e.LINEAR=9728]="LINEAR",e[e.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",e[e.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",e[e.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",e[e.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR"}(t.ETextureFilterType||(t.ETextureFilterType={})),function(e){e[e.ALPHA=6406]="ALPHA",e[e.RGB=6407]="RGB",e[e.RGBA=6408]="RGBA",e[e.LUMINANCE=6409]="LUMINANCE",e[e.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA"}(t.ETextureFormat||(t.ETextureFormat={})),function(e){e[e.FRONT=1028]="FRONT",e[e.BACK=1029]="BACK",e[e.FRONT_AND_BACK=1032]="FRONT_AND_BACK"}(t.ECullingType||(t.ECullingType={})),function(e){e[e.ZERO=0]="ZERO",e[e.ONE=1]="ONE",e[e.SRC_COLOR=768]="SRC_COLOR",e[e.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",e[e.DST_COLOR=774]="DST_COLOR",e[e.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",e[e.SRC_ALPHA=770]="SRC_ALPHA",e[e.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",e[e.DST_ALPHA=772]="DST_ALPHA",e[e.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",e[e.CONSTANT_COLOR=32769]="CONSTANT_COLOR",e[e.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",e[e.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",e[e.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",e[e.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE"}(t.EBlendingFunction||(t.EBlendingFunction={}))},function(e,t,r){"use strict";function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}Object.defineProperty(t,"__esModule",{value:!0}),n(r(13)),n(r(3)),n(r(6)),n(r(4)),n(r(7)),n(r(14))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(3),o=function(){function e(e){this._name=e}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),e.prototype.loadRuntimeAsync=function(e,t,r,n,o){return!1},e.prototype.loadRuntimeExtensionsAsync=function(e,t,r){return!1},e.prototype.loadBufferAsync=function(e,t,r,n,o){return!1},e.prototype.loadTextureBufferAsync=function(e,t,r,n){return!1},e.prototype.createTextureAsync=function(e,t,r,n,o){return!1},e.prototype.loadShaderStringAsync=function(e,t,r,n){return!1},e.prototype.loadMaterialAsync=function(e,t,r,n){return!1},e.LoadRuntimeAsync=function(t,r,o,a,i){e.ApplyExtensions(function(e){return e.loadRuntimeAsync(t,r,o,a,i)},function(){setTimeout(function(){a&&a(n.GLTFLoaderBase.CreateRuntime(r.json,t,o))})})},e.LoadRuntimeExtensionsAsync=function(t,r,n){e.ApplyExtensions(function(e){return e.loadRuntimeExtensionsAsync(t,r,n)},function(){setTimeout(function(){r()})})},e.LoadBufferAsync=function(t,r,o,a,i){e.ApplyExtensions(function(e){return e.loadBufferAsync(t,r,o,a,i)},function(){n.GLTFLoaderBase.LoadBufferAsync(t,r,o,a,i)})},e.LoadTextureAsync=function(t,r,n,o){e.LoadTextureBufferAsync(t,r,function(a){a&&e.CreateTextureAsync(t,r,a,n,o)},o)},e.LoadShaderStringAsync=function(t,r,o,a){e.ApplyExtensions(function(e){return e.loadShaderStringAsync(t,r,o,a)},function(){n.GLTFLoaderBase.LoadShaderStringAsync(t,r,o,a)})},e.LoadMaterialAsync=function(t,r,o,a){e.ApplyExtensions(function(e){return e.loadMaterialAsync(t,r,o,a)},function(){n.GLTFLoaderBase.LoadMaterialAsync(t,r,o,a)})},e.LoadTextureBufferAsync=function(t,r,o,a){e.ApplyExtensions(function(e){return e.loadTextureBufferAsync(t,r,o,a)},function(){n.GLTFLoaderBase.LoadTextureBufferAsync(t,r,o,a)})},e.CreateTextureAsync=function(t,r,o,a,i){e.ApplyExtensions(function(e){return e.createTextureAsync(t,r,o,a,i)},function(){n.GLTFLoaderBase.CreateTextureAsync(t,r,o,a,i)})},e.ApplyExtensions=function(e,t){for(var r in n.GLTF1Loader.Extensions){if(e(n.GLTF1Loader.Extensions[r]))return}t()},e}();t.GLTFLoaderExtension=o},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(4),a=function(){function e(){}return e.SetMatrix=function(e,t,r,a,i){var s=null;if("MODEL"===r.semantic?s=t.getWorldMatrix():"PROJECTION"===r.semantic?s=e.getProjectionMatrix():"VIEW"===r.semantic?s=e.getViewMatrix():"MODELVIEWINVERSETRANSPOSE"===r.semantic?s=n.Matrix.Transpose(t.getWorldMatrix().multiply(e.getViewMatrix()).invert()):"MODELVIEW"===r.semantic?s=t.getWorldMatrix().multiply(e.getViewMatrix()):"MODELVIEWPROJECTION"===r.semantic?s=t.getWorldMatrix().multiply(e.getTransformMatrix()):"MODELINVERSE"===r.semantic?s=t.getWorldMatrix().invert():"VIEWINVERSE"===r.semantic?s=e.getViewMatrix().invert():"PROJECTIONINVERSE"===r.semantic?s=e.getProjectionMatrix().invert():"MODELVIEWINVERSE"===r.semantic?s=t.getWorldMatrix().multiply(e.getViewMatrix()).invert():"MODELVIEWPROJECTIONINVERSE"===r.semantic?s=t.getWorldMatrix().multiply(e.getTransformMatrix()).invert():"MODELINVERSETRANSPOSE"===r.semantic&&(s=n.Matrix.Transpose(t.getWorldMatrix().invert())),s)switch(r.type){case o.EParameterType.FLOAT_MAT2:i.setMatrix2x2(a,n.Matrix.GetAsMatrix2x2(s));break;case o.EParameterType.FLOAT_MAT3:i.setMatrix3x3(a,n.Matrix.GetAsMatrix3x3(s));break;case o.EParameterType.FLOAT_MAT4:i.setMatrix(a,s)}},e.SetUniform=function(e,t,r,a){switch(a){case o.EParameterType.FLOAT:return e.setFloat(t,r),!0;case o.EParameterType.FLOAT_VEC2:return e.setVector2(t,n.Vector2.FromArray(r)),!0;case o.EParameterType.FLOAT_VEC3:return e.setVector3(t,n.Vector3.FromArray(r)),!0;case o.EParameterType.FLOAT_VEC4:return e.setVector4(t,n.Vector4.FromArray(r)),!0;default:return!1}},e.GetWrapMode=function(e){switch(e){case o.ETextureWrapMode.CLAMP_TO_EDGE:return n.Texture.CLAMP_ADDRESSMODE;case o.ETextureWrapMode.MIRRORED_REPEAT:return n.Texture.MIRROR_ADDRESSMODE;case o.ETextureWrapMode.REPEAT:default:return n.Texture.WRAP_ADDRESSMODE}},e.GetByteStrideFromType=function(e){switch(e.type){case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16;default:return 1}},e.GetTextureFilterMode=function(e){switch(e){case o.ETextureFilterType.LINEAR:case o.ETextureFilterType.LINEAR_MIPMAP_NEAREST:case o.ETextureFilterType.LINEAR_MIPMAP_LINEAR:return n.Texture.TRILINEAR_SAMPLINGMODE;case o.ETextureFilterType.NEAREST:case o.ETextureFilterType.NEAREST_MIPMAP_NEAREST:return n.Texture.NEAREST_SAMPLINGMODE;default:return n.Texture.BILINEAR_SAMPLINGMODE}},e.GetBufferFromBufferView=function(e,t,r,n,a){r=t.byteOffset+r;var i=e.loadedBufferViews[t.buffer];if(r+n>i.byteLength)throw new Error("Buffer access is out of range");var s=i.buffer;switch(r+=i.byteOffset,a){case o.EComponentType.BYTE:return new Int8Array(s,r,n);case o.EComponentType.UNSIGNED_BYTE:return new Uint8Array(s,r,n);case o.EComponentType.SHORT:return new Int16Array(s,r,n);case o.EComponentType.UNSIGNED_SHORT:return new Uint16Array(s,r,n);default:return new Float32Array(s,r,n)}},e.GetBufferFromAccessor=function(t,r){var n=t.bufferViews[r.bufferView],o=r.count*e.GetByteStrideFromType(r);return e.GetBufferFromBufferView(t,n,r.byteOffset,o,r.componentType)},e.DecodeBufferToText=function(e){for(var t="",r=e.byteLength,n=0;n<r;++n)t+=String.fromCharCode(e[n]);return t},e.GetDefaultMaterial=function(t){if(!e._DefaultMaterial){n.Effect.ShadersStore.GLTFDefaultMaterialVertexShader=["precision highp float;","","uniform mat4 worldView;","uniform mat4 projection;","","attribute vec3 position;","","void main(void)","{"," gl_Position = projection * worldView * vec4(position, 1.0);","}"].join("\n"),n.Effect.ShadersStore.GLTFDefaultMaterialPixelShader=["precision highp float;","","uniform vec4 u_emission;","","void main(void)","{"," gl_FragColor = u_emission;","}"].join("\n");var r={attributes:["position"],uniforms:["worldView","projection","u_emission"],samplers:new Array,needAlphaBlending:!1};e._DefaultMaterial=new n.ShaderMaterial("GLTFDefaultMaterial",t,{vertex:"GLTFDefaultMaterial",fragment:"GLTFDefaultMaterial"},r),e._DefaultMaterial.setColor4("u_emission",new n.Color4(.5,.5,.5,1))}return e._DefaultMaterial},e._DefaultMaterial=null,e}();t.GLTFUtils=a},function(e,t,r){"use strict";function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}Object.defineProperty(t,"__esModule",{value:!0}),n(r(1)),n(r(15)),n(r(16)),n(r(17))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}(r(28))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}(r(29))},function(e,t,r){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var n=r(2),o=r(5),a=r(8),i=r(9),s=r(10),l=void 0!==e?e:"undefined"!=typeof window?window:void 0;if(void 0!==l){for(var u in l.BABYLON=l.BABYLON||{},n)l.BABYLON[u]=n[u];for(var u in l.BABYLON.GLTF1=l.BABYLON.GLTF1||{},o)l.BABYLON.GLTF1[u]=o[u];for(var u in a)l.BABYLON[u]=a[u];for(var u in i)l.BABYLON[u]=i[u];for(var u in s)l.BABYLON[u]=s[u]}!function(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}(r(30))}).call(this,r(12))},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";var n=this&&this.__extends||function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(t,r)};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=r(6),a=r(7),i=r(4),s=r(3),l=function(e){function t(){return e.call(this,"KHR_binary_glTF")||this}return n(t,e),t.prototype.loadRuntimeAsync=function(e,t,r,n,o){var a=t.json.extensionsUsed;return!(!a||-1===a.indexOf(this.name)||!t.bin)&&(this._bin=t.bin,n(s.GLTFLoaderBase.CreateRuntime(t.json,e,r)),!0)},t.prototype.loadBufferAsync=function(e,t,r,n){return-1!==e.extensionsUsed.indexOf(this.name)&&("binary_glTF"===t&&(r(this._bin),!0))},t.prototype.loadTextureBufferAsync=function(e,t,r,n){var o=e.textures[t],s=e.images[o.source];if(!(s.extensions&&this.name in s.extensions))return!1;var l=s.extensions[this.name],u=e.bufferViews[l.bufferView];return r(a.GLTFUtils.GetBufferFromBufferView(e,u,0,u.byteLength,i.EComponentType.UNSIGNED_BYTE)),!0},t.prototype.loadShaderStringAsync=function(e,t,r,n){var o=e.shaders[t];if(!(o.extensions&&this.name in o.extensions))return!1;var s=o.extensions[this.name],l=e.bufferViews[s.bufferView],u=a.GLTFUtils.GetBufferFromBufferView(e,l,0,l.byteLength,i.EComponentType.UNSIGNED_BYTE);return setTimeout(function(){var e=a.GLTFUtils.DecodeBufferToText(u);r(e)}),!0},t}(o.GLTFLoaderExtension);t.GLTFBinaryExtension=l,s.GLTF1Loader.RegisterExtension(new l)},function(e,t,r){"use strict";var n=this&&this.__extends||function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(t,r)};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=r(5),a=r(0),i=r(3),s=function(e){function t(){return e.call(this,"KHR_materials_common")||this}return n(t,e),t.prototype.loadRuntimeExtensionsAsync=function(e,t,r){if(!e.extensions)return!1;var n=e.extensions[this.name];if(!n)return!1;var o=n.lights;if(o)for(var i in o){var s=o[i];switch(s.type){case"ambient":var l=new a.HemisphericLight(s.name,new a.Vector3(0,1,0),e.scene),u=s.ambient;u&&(l.diffuse=a.Color3.FromArray(u.color||[1,1,1]));break;case"point":var c=new a.PointLight(s.name,new a.Vector3(10,10,10),e.scene),f=s.point;f&&(c.diffuse=a.Color3.FromArray(f.color||[1,1,1]));break;case"directional":var d=new a.DirectionalLight(s.name,new a.Vector3(0,-1,0),e.scene),h=s.directional;h&&(d.diffuse=a.Color3.FromArray(h.color||[1,1,1]));break;case"spot":var p=s.spot;if(p)new a.SpotLight(s.name,new a.Vector3(0,10,0),new a.Vector3(0,-1,0),p.fallOffAngle||Math.PI,p.fallOffExponent||0,e.scene).diffuse=a.Color3.FromArray(p.color||[1,1,1]);break;default:a.Tools.Warn('GLTF Material Common extension: light type "'+s.type+"” not supported")}}return!1},t.prototype.loadMaterialAsync=function(e,t,r,n){var o=e.materials[t];if(!o||!o.extensions)return!1;var i=o.extensions[this.name];if(!i)return!1;var s=new a.StandardMaterial(t,e.scene);return s.sideOrientation=a.Material.CounterClockWiseSideOrientation,"CONSTANT"===i.technique&&(s.disableLighting=!0),s.backFaceCulling=void 0!==i.doubleSided&&!i.doubleSided,s.alpha=void 0===i.values.transparency?1:i.values.transparency,s.specularPower=void 0===i.values.shininess?0:i.values.shininess,"string"==typeof i.values.ambient?this._loadTexture(e,i.values.ambient,s,"ambientTexture",n):s.ambientColor=a.Color3.FromArray(i.values.ambient||[0,0,0]),"string"==typeof i.values.diffuse?this._loadTexture(e,i.values.diffuse,s,"diffuseTexture",n):s.diffuseColor=a.Color3.FromArray(i.values.diffuse||[0,0,0]),"string"==typeof i.values.emission?this._loadTexture(e,i.values.emission,s,"emissiveTexture",n):s.emissiveColor=a.Color3.FromArray(i.values.emission||[0,0,0]),"string"==typeof i.values.specular?this._loadTexture(e,i.values.specular,s,"specularTexture",n):s.specularColor=a.Color3.FromArray(i.values.specular||[0,0,0]),!0},t.prototype._loadTexture=function(e,t,r,n,a){o.GLTFLoaderBase.LoadTextureBufferAsync(e,t,function(i){o.GLTFLoaderBase.CreateTextureAsync(e,t,i,function(e){return r[n]=e},a)},a)},t}(o.GLTFLoaderExtension);t.GLTFMaterialsCommonExtension=s,i.GLTF1Loader.RegisterExtension(new s)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.__IGLTFLoaderExtensionV2=0},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.__IGLTFLoaderInterfacesV2=0},function(e,t,r){"use strict";function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}Object.defineProperty(t,"__esModule",{value:!0}),n(r(18)),n(r(19)),n(r(20)),n(r(21)),n(r(22)),n(r(23)),n(r(24)),n(r(25)),n(r(26)),n(r(27))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1),a="EXT_lights_image_based",i=function(){function e(e){this.name=a,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(e,t){var r=this;return o.GLTF2Loader.LoadExtensionAsync(e,t,this.name,function(n,a){var i=new Array;i.push(r._loader.loadSceneAsync(e,t)),r._loader.logOpen(""+n);var s=o.ArrayItem.Get(n+"/light",r._lights,a.light);return i.push(r._loadLightAsync("#/extensions/"+r.name+"/lights/"+a.light,s).then(function(e){r._loader.babylonScene.environmentTexture=e})),r._loader.logClose(),Promise.all(i).then(function(){})})},e.prototype._loadLightAsync=function(e,t){var r=this;if(!t._loaded){var a=new Array;this._loader.logOpen(""+e);for(var i=new Array(t.specularImages.length),s=function(r){var n=t.specularImages[r];i[r]=new Array(n.length);for(var s=function(t){var s=e+"/specularImages/"+r+"/"+t;l._loader.logOpen(""+s);var u=n[t],c=o.ArrayItem.Get(s,l._loader.gltf.images,u);a.push(l._loader.loadImageAsync("#/images/"+u,c).then(function(e){i[r][t]=e})),l._loader.logClose()},u=0;u<n.length;u++)s(u)},l=this,u=0;u<t.specularImages.length;u++)s(u);this._loader.logClose(),t._loaded=Promise.all(a).then(function(){var e=new n.RawCubeTexture(r._loader.babylonScene,null,t.specularImageSize);if(t._babylonTexture=e,void 0!=t.intensity&&(e.level=t.intensity),t.rotation){var o=n.Quaternion.FromArray(t.rotation);r._loader.babylonScene.useRightHandedSystem||(o=n.Quaternion.Inverse(o)),n.Matrix.FromQuaternionToRef(o,e.getReflectionTextureMatrix())}var a=n.SphericalHarmonics.FromArray(t.irradianceCoefficients);a.scale(t.intensity),a.convertIrradianceToLambertianRadiance();var s=n.SphericalPolynomial.FromHarmonics(a),l=(i.length-1)/n.Scalar.Log2(t.specularImageSize);return e.updateRGBDAsync(i,s,l)})}return t._loaded.then(function(){return t._babylonTexture})},e}();t.EXT_lights_image_based=i,o.GLTF2Loader.RegisterExtension(a,function(e){return new i(e)})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1),a="KHR_draco_mesh_compression",i=function(){function e(e){this.name=a,this.enabled=n.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(e,t,r){var a=this;return o.GLTF2Loader.LoadExtensionAsync(e,t,this.name,function(i,s){if(void 0!=t.mode){if(5!==t.mode&&4!==t.mode)throw new Error(e+": Unsupported mode "+t.mode);if(5===t.mode)throw new Error(e+": Mode "+t.mode+" is not currently supported")}var l={},u=function(e,t){var n=s.attributes[e];void 0!=n&&(r._delayInfo=r._delayInfo||[],-1===r._delayInfo.indexOf(t)&&r._delayInfo.push(t),l[t]=n)};u("POSITION",n.VertexBuffer.PositionKind),u("NORMAL",n.VertexBuffer.NormalKind),u("TANGENT",n.VertexBuffer.TangentKind),u("TEXCOORD_0",n.VertexBuffer.UVKind),u("TEXCOORD_1",n.VertexBuffer.UV2Kind),u("JOINTS_0",n.VertexBuffer.MatricesIndicesKind),u("WEIGHTS_0",n.VertexBuffer.MatricesWeightsKind),u("COLOR_0",n.VertexBuffer.ColorKind);var c=o.ArrayItem.Get(i,a._loader.gltf.bufferViews,s.bufferView);return c._dracoBabylonGeometry||(c._dracoBabylonGeometry=a._loader.loadBufferViewAsync("#/bufferViews/"+c.index,c).then(function(t){return a._dracoCompression||(a._dracoCompression=new n.DracoCompression),a._dracoCompression.decodeMeshAsync(t,l).then(function(e){var t=new n.Geometry(r.name,a._loader.babylonScene);return e.applyToGeometry(t),t}).catch(function(t){throw new Error(e+": "+t.message)})})),c._dracoBabylonGeometry})},e}();t.KHR_draco_mesh_compression=i,o.GLTF2Loader.RegisterExtension(a,function(e){return new i(e)})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,o=r(0),a=r(1),i="KHR_lights_punctual";!function(e){e.DIRECTIONAL="directional",e.POINT="point",e.SPOT="spot"}(n||(n={}));var s=function(){function e(e){this.name=i,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,r){var i=this;return a.GLTF2Loader.LoadExtensionAsync(e,t,this.name,function(s,l){return i._loader.loadNodeAsync(e,t,function(e){var t,u=a.ArrayItem.Get(s,i._lights,l.light),c=u.name||e.name;switch(u.type){case n.DIRECTIONAL:t=new o.DirectionalLight(c,o.Vector3.Backward(),i._loader.babylonScene);break;case n.POINT:t=new o.PointLight(c,o.Vector3.Zero(),i._loader.babylonScene);break;case n.SPOT:var f=new o.SpotLight(c,o.Vector3.Zero(),o.Vector3.Backward(),0,1,i._loader.babylonScene);f.angle=2*(u.spot&&u.spot.outerConeAngle||Math.PI/4),f.innerAngle=2*(u.spot&&u.spot.innerConeAngle||0),t=f;break;default:throw new Error(s+": Invalid light type ("+u.type+")")}t.falloffType=o.Light.FALLOFF_GLTF,t.diffuse=u.color?o.Color3.FromArray(u.color):o.Color3.White(),t.intensity=void 0==u.intensity?1:u.intensity,t.range=void 0==u.range?Number.MAX_VALUE:u.range,t.parent=e,r(e)})})},e}();t.KHR_lights=s,a.GLTF2Loader.RegisterExtension(i,function(e){return new s(e)})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1),a="KHR_materials_pbrSpecularGlossiness",i=function(){function e(e){this.name=a,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.GLTF2Loader.LoadExtensionAsync(e,t,this.name,function(o,a){var i=new Array;return i.push(n._loader.loadMaterialBasePropertiesAsync(e,t,r)),i.push(n._loadSpecularGlossinessPropertiesAsync(o,t,a,r)),n._loader.loadMaterialAlphaProperties(e,t,r),Promise.all(i).then(function(){})})},e.prototype._loadSpecularGlossinessPropertiesAsync=function(e,t,r,o){if(!(o instanceof n.PBRMaterial))throw new Error(e+": Material type not supported");var a=new Array;return o.metallic=null,o.roughness=null,r.diffuseFactor?(o.albedoColor=n.Color3.FromArray(r.diffuseFactor),o.alpha=r.diffuseFactor[3]):o.albedoColor=n.Color3.White(),o.reflectivityColor=r.specularFactor?n.Color3.FromArray(r.specularFactor):n.Color3.White(),o.microSurface=void 0==r.glossinessFactor?1:r.glossinessFactor,r.diffuseTexture&&a.push(this._loader.loadTextureInfoAsync(e+"/diffuseTexture",r.diffuseTexture,function(e){return o.albedoTexture=e,Promise.resolve()})),r.specularGlossinessTexture&&(a.push(this._loader.loadTextureInfoAsync(e+"/specularGlossinessTexture",r.specularGlossinessTexture,function(e){return o.reflectivityTexture=e,Promise.resolve()})),o.reflectivityTexture.hasAlpha=!0,o.useMicroSurfaceFromReflectivityMapAlpha=!0),Promise.all(a).then(function(){})},e}();t.KHR_materials_pbrSpecularGlossiness=i,o.GLTF2Loader.RegisterExtension(a,function(e){return new i(e)})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1),a="KHR_materials_unlit",i=function(){function e(e){this.name=a,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.GLTF2Loader.LoadExtensionAsync(e,t,this.name,function(){return n._loadUnlitPropertiesAsync(e,t,r)})},e.prototype._loadUnlitPropertiesAsync=function(e,t,r){if(!(r instanceof n.PBRMaterial))throw new Error(e+": Material type not supported");var o=new Array;r.unlit=!0;var a=t.pbrMetallicRoughness;return a&&(a.baseColorFactor?(r.albedoColor=n.Color3.FromArray(a.baseColorFactor),r.alpha=a.baseColorFactor[3]):r.albedoColor=n.Color3.White(),a.baseColorTexture&&o.push(this._loader.loadTextureInfoAsync(e+"/baseColorTexture",a.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(o).then(function(){})},e}();t.KHR_materials_unlit=i,o.GLTF2Loader.RegisterExtension(a,function(e){return new i(e)})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1),a="KHR_texture_transform",i=function(){function e(e){this.name=a,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadTextureInfoAsync=function(e,t,r){var a=this;return o.GLTF2Loader.LoadExtensionAsync(e,t,this.name,function(o,i){return a._loader.loadTextureInfoAsync(e,t,function(e){if(!(e instanceof n.Texture))throw new Error(o+": Texture type not supported");i.offset&&(e.uOffset=i.offset[0],e.vOffset=i.offset[1]),e.uRotationCenter=0,e.vRotationCenter=0,i.rotation&&(e.wAng=-i.rotation),i.scale&&(e.uScale=i.scale[0],e.vScale=i.scale[1]),void 0!=i.texCoord&&(e.coordinatesIndex=i.texCoord),r(e)})})},e}();t.KHR_texture_transform=i,o.GLTF2Loader.RegisterExtension(a,function(e){return new i(e)})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1),a="MSFT_audio_emitter",i=function(){function e(e){this.name=a,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,o.ArrayItem.Assign(this._clips),o.ArrayItem.Assign(this._emitters)}},e.prototype.loadSceneAsync=function(e,t){var r=this;return o.GLTF2Loader.LoadExtensionAsync(e,t,this.name,function(n,a){var i=new Array;i.push(r._loader.loadSceneAsync(e,t));for(var s=0,l=a.emitters;s<l.length;s++){var u=l[s],c=o.ArrayItem.Get(n+"/emitters",r._emitters,u);if(void 0!=c.refDistance||void 0!=c.maxDistance||void 0!=c.rolloffFactor||void 0!=c.distanceModel||void 0!=c.innerAngle||void 0!=c.outerAngle)throw new Error(n+": Direction or Distance properties are not allowed on emitters attached to a scene");i.push(r._loadEmitterAsync(n+"/emitters/"+c.index,c))}return Promise.all(i).then(function(){})})},e.prototype.loadNodeAsync=function(e,t,r){var a=this;return o.GLTF2Loader.LoadExtensionAsync(e,t,this.name,function(e,i){var s=new Array;return a._loader.loadNodeAsync(e,t,function(t){for(var l=function(r){var i=o.ArrayItem.Get(e+"/emitters",a._emitters,r);s.push(a._loadEmitterAsync(e+"/emitters/"+i.index,i).then(function(){for(var e=0,r=i._babylonSounds;e<r.length;e++){var o=r[e];o.attachToMesh(t),void 0==i.innerAngle&&void 0==i.outerAngle||(o.setLocalDirectionToMesh(n.Vector3.Forward()),o.setDirectionalCone(2*n.Tools.ToDegrees(void 0==i.innerAngle?Math.PI:i.innerAngle),2*n.Tools.ToDegrees(void 0==i.outerAngle?Math.PI:i.outerAngle),0))}}))},u=0,c=i.emitters;u<c.length;u++){l(c[u])}r(t)}).then(function(e){return Promise.all(s).then(function(){return e})})})},e.prototype.loadAnimationAsync=function(e,t){var r=this;return o.GLTF2Loader.LoadExtensionAsync(e,t,this.name,function(n,a){return r._loader.loadAnimationAsync(e,t).then(function(i){var s=new Array;o.ArrayItem.Assign(a.events);for(var l=0,u=a.events;l<u.length;l++){var c=u[l];s.push(r._loadAnimationEventAsync(n+"/events/"+c.index,e,t,c,i))}return Promise.all(s).then(function(){return i})})})},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=o.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,t){var r=this;if(t._babylonSounds=t._babylonSounds||[],!t._babylonData){for(var a=new Array,i=t.name||"emitter"+t.index,s={loop:!1,autoplay:!1,volume:void 0==t.volume?1:t.volume},l=function(e){var l="#/extensions/"+u.name+"/clips",c=o.ArrayItem.Get(l,u._clips,t.clips[e].clip);a.push(u._loadClipAsync(l+"/"+t.clips[e].clip,c).then(function(o){var a=t._babylonSounds[e]=new n.Sound(i,o,r._loader.babylonScene,null,s);a.refDistance=t.refDistance||1,a.maxDistance=t.maxDistance||256,a.rolloffFactor=t.rolloffFactor||1,a.distanceModel=t.distanceModel||"exponential",a._positionInEmitterSpace=!0}))},u=this,c=0;c<t.clips.length;c++)l(c);var f=Promise.all(a).then(function(){var e=t.clips.map(function(e){return e.weight||1}),r=new n.WeightedSound(t.loop||!1,t._babylonSounds,e);t.innerAngle&&(r.directionalConeInnerAngle=2*n.Tools.ToDegrees(t.innerAngle)),t.outerAngle&&(r.directionalConeOuterAngle=2*n.Tools.ToDegrees(t.outerAngle)),t.volume&&(r.volume=t.volume),t._babylonData.sound=r});t._babylonData={loaded:f}}return t._babylonData.loaded},e.prototype._getEventAction=function(e,t,r,n,o){switch(r){case"play":return function(e){var r=(o||0)+(e-n);t.play(r)};case"stop":return function(e){t.stop()};case"pause":return function(e){t.pause()};default:throw new Error(e+": Unsupported action "+r)}},e.prototype._loadAnimationEventAsync=function(e,t,r,a,i){var s=this;if(0==i.targetedAnimations.length)return Promise.resolve();var l=i.targetedAnimations[0],u=a.emitter,c=o.ArrayItem.Get("#/extensions/"+this.name+"/emitters",this._emitters,u);return this._loadEmitterAsync(e,c).then(function(){var t=c._babylonData.sound;if(t){var r=new n.AnimationEvent(a.time,s._getEventAction(e,t,a.action,a.time,a.startOffset));l.animation.addEvent(r),i.onAnimationGroupEndObservable.add(function(){t.stop()}),i.onAnimationGroupPauseObservable.add(function(){t.pause()})}})},e}();t.MSFT_audio_emitter=i,o.GLTF2Loader.RegisterExtension(a,function(e){return new i(e)})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1),a="MSFT_lod",i=function(){function e(e){this.name=a,this.enabled=!0,this.maxLODsToLoad=Number.MAX_VALUE,this.onNodeLODsLoadedObservable=new n.Observable,this.onMaterialLODsLoadedObservable=new n.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 e=this,t=function(t){var n=Promise.all(r._nodePromiseLODs[t]).then(function(){0!==t&&e._loader.endPerformanceCounter("Node LOD "+t),e._loader.log("Loaded node LOD "+t),e.onNodeLODsLoadedObservable.notifyObservers(t),t!==e._nodePromiseLODs.length-1&&(e._loader.startPerformanceCounter("Node LOD "+(t+1)),e._nodeSignalLODs[t]&&e._nodeSignalLODs[t].resolve())});r._loader._completePromises.push(n)},r=this,n=0;n<this._nodePromiseLODs.length;n++)t(n);var o=function(t){var r=Promise.all(a._materialPromiseLODs[t]).then(function(){0!==t&&e._loader.endPerformanceCounter("Material LOD "+t),e._loader.log("Loaded material LOD "+t),e.onMaterialLODsLoadedObservable.notifyObservers(t),t!==e._materialPromiseLODs.length-1&&(e._loader.startPerformanceCounter("Material LOD "+(t+1)),e._materialSignalLODs[t]&&e._materialSignalLODs[t].resolve())});a._loader._completePromises.push(r)},a=this;for(n=0;n<this._materialPromiseLODs.length;n++)o(n)},e.prototype.loadNodeAsync=function(e,t,r){var a=this;return o.GLTF2Loader.LoadExtensionAsync(e,t,this.name,function(e,r){var o,i=a._getLODs(e,t,a._loader.gltf.nodes,r.ids);a._loader.logOpen(""+e);for(var s=function(e){var t=i[e];0!==e&&(a._nodeIndexLOD=e,a._nodeSignalLODs[e]=a._nodeSignalLODs[e]||new n.Deferred);var r=a._loader.loadNodeAsync("#/nodes/"+t.index,t).then(function(t){if(0!==e){var r=i[e-1];r._babylonMesh&&(r._babylonMesh.dispose(),delete r._babylonMesh,a._disposeUnusedMaterials())}return t});0===e?o=r:a._nodeIndexLOD=null,a._nodePromiseLODs[e]=a._nodePromiseLODs[e]||[],a._nodePromiseLODs[e].push(r)},l=0;l<i.length;l++)s(l);return a._loader.logClose(),o})},e.prototype._loadMaterialAsync=function(e,t,r,n,a){var i=this;return this._nodeIndexLOD?null:o.GLTF2Loader.LoadExtensionAsync(e,t,this.name,function(e,o){var s,l=i._getLODs(e,t,i._loader.gltf.materials,o.ids);i._loader.logOpen(""+e);for(var u=function(e){var t=l[e];0!==e&&(i._materialIndexLOD=e);var o=i._loader._loadMaterialAsync("#/materials/"+t.index,t,r,n,function(t){0===e&&a(t)}).then(function(t){if(0!==e){a(t);var r=l[e-1]._babylonData;r[n]&&(r[n].material.dispose(),delete r[n])}return t});0===e?s=o:i._materialIndexLOD=null,i._materialPromiseLODs[e]=i._materialPromiseLODs[e]||[],i._materialPromiseLODs[e].push(o)},c=0;c<l.length;c++)u(c);return i._loader.logClose(),s})},e.prototype._loadUriAsync=function(e,t){var r=this;if(null!==this._materialIndexLOD){this._loader.log("deferred");var o=this._materialIndexLOD-1;return this._materialSignalLODs[o]=this._materialSignalLODs[o]||new n.Deferred,this._materialSignalLODs[o].promise.then(function(){return r._loader.loadUriAsync(e,t)})}if(null!==this._nodeIndexLOD){this._loader.log("deferred");o=this._nodeIndexLOD-1;return this._nodeSignalLODs[o]=this._nodeSignalLODs[o]||new n.Deferred,this._nodeSignalLODs[this._nodeIndexLOD-1].promise.then(function(){return r._loader.loadUriAsync(e,t)})}return null},e.prototype._getLODs=function(e,t,r,n){if(this.maxLODsToLoad<=0)throw new Error("maxLODsToLoad must be greater than zero");for(var a=new Array,i=n.length-1;i>=0;i--)if(a.push(o.ArrayItem.Get(e+"/ids/"+n[i],r,n[i])),a.length===this.maxLODsToLoad)return a;return a.push(t),a},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=i,o.GLTF2Loader.RegisterExtension(a,function(e){return new i(e)})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1),a="MSFT_minecraftMesh",i=function(){function e(e){this.name=a,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadMaterialPropertiesAsync=function(e,t,r){var a=this;return o.GLTF2Loader.LoadExtraAsync(e,t,this.name,function(o,i){if(i){if(!(r instanceof n.PBRMaterial))throw new Error(o+": Material type not supported");var s=a._loader.loadMaterialPropertiesAsync(e,t,r);return r.needAlphaBlending()&&(r.forceDepthWrite=!0,r.separateCullingPass=!0),r.backFaceCulling=r.forceDepthWrite,r.twoSidedLighting=!0,s}return null})},e}();t.MSFT_minecraftMesh=i,o.GLTF2Loader.RegisterExtension(a,function(e){return new i(e)})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1),a="MSFT_sRGBFactors",i=function(){function e(e){this.name=a,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadMaterialPropertiesAsync=function(e,t,r){var a=this;return o.GLTF2Loader.LoadExtraAsync(e,t,this.name,function(o,i){if(i){if(!(r instanceof n.PBRMaterial))throw new Error(o+": Material type not supported");var s=a._loader.loadMaterialPropertiesAsync(e,t,r);return r.albedoTexture||r.albedoColor.toLinearSpaceToRef(r.albedoColor),r.reflectivityTexture||r.reflectivityColor.toLinearSpaceToRef(r.reflectivityColor),s}return null})},e}();t.MSFT_sRGBFactors=i,o.GLTF2Loader.RegisterExtension(a,function(e){return new i(e)})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=function(){function e(){this.materials=[]}return e.prototype.parseMTL=function(t,r,o){if(!(r instanceof ArrayBuffer)){for(var a,i=r.split("\n"),s=/\s+/,l=null,u=0;u<i.length;u++){var c=i[u].trim();if(0!==c.length&&"#"!==c.charAt(0)){var f=c.indexOf(" "),d=f>=0?c.substring(0,f):c;d=d.toLowerCase();var h=f>=0?c.substring(f+1).trim():"";"newmtl"===d?(l&&this.materials.push(l),l=new n.StandardMaterial(h,t)):"kd"===d&&l?(a=h.split(s,3).map(parseFloat),l.diffuseColor=n.Color3.FromArray(a)):"ka"===d&&l?(a=h.split(s,3).map(parseFloat),l.ambientColor=n.Color3.FromArray(a)):"ks"===d&&l?(a=h.split(s,3).map(parseFloat),l.specularColor=n.Color3.FromArray(a)):"ke"===d&&l?(a=h.split(s,3).map(parseFloat),l.emissiveColor=n.Color3.FromArray(a)):"ns"===d&&l?l.specularPower=parseFloat(h):"d"===d&&l?l.alpha=parseFloat(h):"map_ka"===d&&l?l.ambientTexture=e._getTexture(o,h,t):"map_kd"===d&&l?l.diffuseTexture=e._getTexture(o,h,t):"map_ks"===d&&l?l.specularTexture=e._getTexture(o,h,t):"map_ns"===d||("map_bump"===d&&l?l.bumpTexture=e._getTexture(o,h,t):"map_d"===d&&l&&(l.opacityTexture=e._getTexture(o,h,t)))}}l&&this.materials.push(l)}},e._getTexture=function(e,t,r){if(!t)return null;var o=e;if("file:"===e){var a=t.lastIndexOf("\\");-1===a&&(a=t.lastIndexOf("/")),o+=a>-1?t.substr(a+1):t}else o+=t;return new n.Texture(o,r)},e}();t.MTLFileLoader=o;var a=function(){function e(){this.name="obj",this.extensions=".obj",this.obj=/^o/,this.group=/^g/,this.mtllib=/^mtllib /,this.usemtl=/^usemtl /,this.smooth=/^s /,this.vertexPattern=/v( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,this.normalPattern=/vn( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,this.uvPattern=/vt( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,this.facePattern1=/f\s+(([\d]{1,}[\s]?){3,})+/,this.facePattern2=/f\s+((([\d]{1,}\/[\d]{1,}[\s]?){3,})+)/,this.facePattern3=/f\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){3,})+)/,this.facePattern4=/f\s+((([\d]{1,}\/\/[\d]{1,}[\s]?){3,})+)/,this.facePattern5=/f\s+(((-[\d]{1,}\/-[\d]{1,}\/-[\d]{1,}[\s]?){3,})+)/}return e.prototype._loadMTL=function(e,t,r){var o=n.Tools.BaseUrl+t+e;n.Tools.LoadFile(o,r,void 0,void 0,!1,function(){console.warn("Error - Unable to load "+o)})},e.prototype.importMeshAsync=function(e,t,r,n,o,a){return this._parseSolid(e,t,r,n).then(function(e){return{meshes:e,particleSystems:[],skeletons:[],animationGroups:[]}})},e.prototype.loadAsync=function(e,t,r,n,o){return this.importMeshAsync(null,e,t,r,n).then(function(){})},e.prototype.loadAssetContainerAsync=function(e,t,r,o,a){return this.importMeshAsync(null,e,t,r).then(function(t){var r=new n.AssetContainer(e);return t.meshes.forEach(function(e){return r.meshes.push(e)}),r.removeAllFromScene(),r})},e.prototype._parseSolid=function(t,r,a,i){for(var s,l=this,u=[],c=[],f=[],d=[],h=[],p=[],m=[],_=[],y=[],v=0,A=!1,g=[],b=[],T=[],E=[],L="",x="",O=new o,M=1,w=!0,S=function(t,r,n,o,a,i){var s;-1==(s=e.OPTIMIZE_WITH_UV?function(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[],uv:[]});var r=e[t[0]].normals.indexOf(t[1]);return 1!=r&&t[2]==e[t[0]].uv[r]?e[t[0]].idx[r]:-1}(y,[t,n,r]):function(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[]});var r=e[t[0]].normals.indexOf(t[1]);return-1===r?-1:e[t[0]].idx[r]}(y,[t,n]))?(h.push(p.length),p.push(o),m.push(a),_.push(i),y[t].normals.push(n),y[t].idx.push(v++),e.OPTIMIZE_WITH_UV&&y[t].uv.push(r)):h.push(s)},P=function(){for(var e=0;e<p.length;e++)g.push(p[e].x,p[e].y,p[e].z),b.push(_[e].x,_[e].y,_[e].z),T.push(m[e].x,m[e].y);p=[],_=[],m=[],y=[],v=0},N=function(e,t){t+1<e.length&&(E.push(e[0],e[t],e[t+1]),N(e,t+=1))},C=function(e,t){N(e,t);for(var r=0;r<E.length;r++){var o=parseInt(E[r])-1;S(o,0,0,u[o],n.Vector2.Zero(),n.Vector3.Up())}E=[]},I=function(e,t){N(e,t);for(var r=0;r<E.length;r++){var o=E[r].split("/"),a=parseInt(o[0])-1,i=parseInt(o[1])-1;S(a,i,0,u[a],f[i],n.Vector3.Up())}E=[]},F=function(e,t){N(e,t);for(var r=0;r<E.length;r++){var n=E[r].split("/"),o=parseInt(n[0])-1,a=parseInt(n[1])-1,i=parseInt(n[2])-1;S(o,a,i,u[o],f[a],c[i])}E=[]},R=function(e,t){N(e,t);for(var r=0;r<E.length;r++){var o=E[r].split("//"),a=parseInt(o[0])-1,i=parseInt(o[1])-1;S(a,1,i,u[a],n.Vector2.Zero(),c[i])}E=[]},B=function(e,t){N(e,t);for(var r=0;r<E.length;r++){var n=E[r].split("/"),o=u.length+parseInt(n[0]),a=f.length+parseInt(n[1]),i=c.length+parseInt(n[2]);S(o,a,i,u[o],f[a],c[i])}E=[]},D=function(){d.length>0&&(s=d[d.length-1],P(),h.reverse(),s.indices=h.slice(),s.positions=g.slice(),s.normals=b.slice(),s.uvs=T.slice(),h=[],g=[],b=[],T=[])},V=a.split("\n"),G=0;G<V.length;G++){var U,k=V[G].trim();if(0!==k.length&&"#"!==k.charAt(0))if(null!==(U=this.vertexPattern.exec(k)))u.push(new n.Vector3(parseFloat(U[1]),parseFloat(U[2]),parseFloat(U[3])));else if(null!==(U=this.normalPattern.exec(k)))c.push(new n.Vector3(parseFloat(U[1]),parseFloat(U[2]),parseFloat(U[3])));else if(null!==(U=this.uvPattern.exec(k)))f.push(new n.Vector2(parseFloat(U[1]),parseFloat(U[2])));else if(null!==(U=this.facePattern3.exec(k)))F(U[1].trim().split(" "),1);else if(null!==(U=this.facePattern4.exec(k)))R(U[1].trim().split(" "),1);else if(null!==(U=this.facePattern5.exec(k)))B(U[1].trim().split(" "),1);else if(null!==(U=this.facePattern2.exec(k)))I(U[1].trim().split(" "),1);else if(null!==(U=this.facePattern1.exec(k)))C(U[1].trim().split(" "),1);else if(this.group.test(k)||this.obj.test(k)){var j={name:k.substring(2).trim(),indices:void 0,positions:void 0,normals:void 0,uvs:void 0,materialName:""};D(),d.push(j),A=!0,w=!0,M=1}else if(this.usemtl.test(k)){if(L=k.substring(7).trim(),!w){D();j={name:"_mm"+M.toString(),indices:void 0,positions:void 0,normals:void 0,uvs:void 0,materialName:L};M++,d.push(j)}A&&w&&(d[d.length-1].materialName=L,w=!1)}else this.mtllib.test(k)?x=k.substring(7).trim():this.smooth.test(k)||console.log("Unhandled expression at line : "+k)}A&&(s=d[d.length-1],h.reverse(),P(),s.indices=h,s.positions=g,s.normals=b,s.uvs=T),A||(h.reverse(),P(),d.push({name:n.Geometry.RandomId(),indices:h,positions:g,normals:b,uvs:T,materialName:L}));for(var H=[],W=new Array,K=0;K<d.length;K++){if(t&&d[K].name)if(t instanceof Array){if(-1==t.indexOf(d[K].name))continue}else if(d[K].name!==t)continue;s=d[K];var Y=new n.Mesh(d[K].name,r);W.push(d[K].materialName);var Z=new n.VertexData;Z.positions=s.positions,Z.normals=s.normals,Z.uvs=s.uvs,Z.indices=s.indices,Z.applyToMesh(Y),e.INVERT_Y&&(Y.scaling.y*=-1),H.push(Y)}var Q=[];return""!==x&&Q.push(new Promise(function(e,t){l._loadMTL(x,i,function(n){try{O.parseMTL(r,n,i);for(var o=0;o<O.materials.length;o++){for(var a,s=0,l=[];(a=W.indexOf(O.materials[o].name,s))>-1;)l.push(a),s=a+1;if(-1==a&&0==l.length)O.materials[o].dispose();else for(var u=0;u<l.length;u++)H[l[u]].material=O.materials[o]}e()}catch(e){t(e)}})})),Promise.all(Q).then(function(){return H})},e.OPTIMIZE_WITH_UV=!1,e.INVERT_Y=!1,e}();t.OBJFileLoader=a,n.SceneLoader&&n.SceneLoader.RegisterPlugin(new a)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=function(){function e(){this.solidPattern=/solid (\S*)([\S\s]*)endsolid[ ]*(\S*)/g,this.facetsPattern=/facet([\s\S]*?)endfacet/g,this.normalPattern=/normal[\s]+([\-+]?[0-9]+\.?[0-9]*([eE][\-+]?[0-9]+)?)+[\s]+([\-+]?[0-9]*\.?[0-9]+([eE][\-+]?[0-9]+)?)+[\s]+([\-+]?[0-9]*\.?[0-9]+([eE][\-+]?[0-9]+)?)+/g,this.vertexPattern=/vertex[\s]+([\-+]?[0-9]+\.?[0-9]*([eE][\-+]?[0-9]+)?)+[\s]+([\-+]?[0-9]*\.?[0-9]+([eE][\-+]?[0-9]+)?)+[\s]+([\-+]?[0-9]*\.?[0-9]+([eE][\-+]?[0-9]+)?)+/g,this.name="stl",this.extensions={".stl":{isBinary:!0}}}return e.prototype.importMesh=function(e,t,r,o,a,i,s){var l;if("string"!=typeof r){if(this._isBinary(r)){var u=new n.Mesh("stlmesh",t);return this._parseBinary(u,r),a&&a.push(u),!0}for(var c=new Uint8Array(r),f="",d=0;d<r.byteLength;d++)f+=String.fromCharCode(c[d]);r=f}for(;l=this.solidPattern.exec(r);){var h=l[1];if(h!=l[3])return n.Tools.Error("Error in STL, solid name != endsolid name"),!1;if(e&&h)if(e instanceof Array){if(!e.indexOf(h))continue}else if(h!==e)continue;h=h||"stlmesh";u=new n.Mesh(h,t);this._parseASCII(u,l[2]),a&&a.push(u)}return!0},e.prototype.load=function(e,t,r){var n=this.importMesh(null,e,t,r,null,null,null);return n&&e.createDefaultCameraOrLight(),n},e.prototype.loadAssetContainer=function(e,t,r,o){var a=new n.AssetContainer(e);return this.importMesh(null,e,t,r,a.meshes,null,null),a.removeAllFromScene(),a},e.prototype._isBinary=function(e){var t;if(50,84+50*(t=new DataView(e)).getUint32(80,!0)===t.byteLength)return!0;for(var r=t.byteLength,n=0;n<r;n++)if(t.getUint8(n)>127)return!0;return!1},e.prototype._parseBinary=function(e,t){for(var r=new DataView(t),o=r.getUint32(80,!0),a=0,i=new Float32Array(3*o*3),s=new Float32Array(3*o*3),l=new Uint32Array(3*o),u=0,c=0;c<o;c++){for(var f=84+50*c,d=r.getFloat32(f,!0),h=r.getFloat32(f+4,!0),p=r.getFloat32(f+8,!0),m=1;m<=3;m++){var _=f+12*m;i[a]=r.getFloat32(_,!0),i[a+2]=r.getFloat32(_+4,!0),i[a+1]=r.getFloat32(_+8,!0),s[a]=d,s[a+2]=h,s[a+1]=p,a+=3}l[u]=u++,l[u]=u++,l[u]=u++}e.setVerticesData(n.VertexBuffer.PositionKind,i),e.setVerticesData(n.VertexBuffer.NormalKind,s),e.setIndices(l),e.computeWorldMatrix(!0)},e.prototype._parseASCII=function(e,t){for(var r,o=[],a=[],i=[],s=0;r=this.facetsPattern.exec(t);){var l=r[1],u=this.normalPattern.exec(l);if(this.normalPattern.lastIndex=0,u){for(var c,f=[Number(u[1]),Number(u[5]),Number(u[3])];c=this.vertexPattern.exec(l);)o.push(Number(c[1]),Number(c[5]),Number(c[3])),a.push(f[0],f[1],f[2]);i.push(s++,s++,s++),this.vertexPattern.lastIndex=0}}this.facetsPattern.lastIndex=0,e.setVerticesData(n.VertexBuffer.PositionKind,o),e.setVerticesData(n.VertexBuffer.NormalKind,a),e.setIndices(i),e.computeWorldMatrix(!0)},e}();t.STLFileLoader=o,n.SceneLoader&&n.SceneLoader.RegisterPlugin(new o)},function(e,t,r){"use strict";function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}Object.defineProperty(t,"__esModule",{value:!0}),n(r(31)),n(r(9)),n(r(10))},function(e,t,r){"use strict";function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}Object.defineProperty(t,"__esModule",{value:!0}),n(r(2)),n(r(5)),n(r(8))}])});
  2. //# sourceMappingURL=babylonjs.loaders.min.js.map