babylon.glTFFileLoader.min.js 61 KB

12
  1. var BABYLON;!(function(e){var n=(function(){function n(){this.extensions={".gltf":{isBinary:!1},".glb":{isBinary:!0}}}return n.prototype.importMeshAsync=function(e,r,t,o,a,i){var s=n._parse(t),l=this._getLoader(s);if(!l)return void i();l.importMeshAsync(e,r,s,o,a,i)},n.prototype.loadAsync=function(e,r,t,o,a){var i=n._parse(r),s=this._getLoader(i);return s?s.loadAsync(e,i,t,o,a):void a()},n.prototype.canDirectLoad=function(e){return-1!==e.indexOf("scene")&&-1!==e.indexOf("node")},n._parse=function(e){return e instanceof ArrayBuffer?n._parseBinary(e):{json:JSON.parse(e),bin:null}},n.prototype._getLoader=function(r){var t={major:2,minor:0},o=r.json.asset||{},a=n._parseVersion(o.version);if(!a)return e.Tools.Error("Invalid version"),null;var i=n._parseVersion(o.minVersion);if(i&&n._compareVersion(i,t)>0)return e.Tools.Error("Incompatible version"),null;var s={1:n.GLTFLoaderV1,2:n.GLTFLoaderV2},l=s[a.major];return void 0===l?(e.Tools.Error("Unsupported version"),null):null===l?(e.Tools.Error("v"+a.major+" loader is not available"),null):l},n._parseBinary=function(t){var o={Magic:1179937895},a=new r(t),i=a.readUint32();if(i!==o.Magic)return e.Tools.Error("Unexpected magic: "+i),null;var s=a.readUint32();switch(s){case 1:return n._parseV1(a);case 2:return n._parseV2(a)}return e.Tools.Error("Unsupported version: "+s),null},n._parseV1=function(r){var t={JSON:0},o=r.readUint32();if(o!=r.getLength())return e.Tools.Error("Length in header does not match actual data length: "+o+" != "+r.getLength()),null;var a,i=r.readUint32(),s=r.readUint32();switch(s){case t.JSON:a=JSON.parse(n._decodeBufferToText(r.readUint8Array(i)));break;default:return e.Tools.Error("Unexpected content format: "+s),null}var l=r.getLength()-r.getPosition();return{json:a,bin:r.readUint8Array(l)}},n._parseV2=function(r){var t={JSON:1313821514,BIN:5130562},o=r.readUint32();if(o!==r.getLength())return e.Tools.Error("Length in header does not match actual data length: "+o+" != "+r.getLength()),null;var a=r.readUint32(),i=r.readUint32();if(i!==t.JSON)return e.Tools.Error("First chunk format is not JSON"),null;for(var s=JSON.parse(n._decodeBufferToText(r.readUint8Array(a))),l=null;r.getPosition()<r.getLength();)switch(a=r.readUint32(),i=r.readUint32()){case t.JSON:return e.Tools.Error("Unexpected JSON chunk"),null;case t.BIN:l=r.readUint8Array(a);break;default:r.skipBytes(a)}return{json:s,bin:l}},n._parseVersion=function(e){if(!e)return null;var n=e.split(".");if(0===n.length)return null;var r=parseInt(n[0]);if(r>1&&2!=n.length)return null;parseInt(n[1]);return{major:r,minor:parseInt(n[0])}},n._compareVersion=function(e,n){return e.major>n.major?1:e.major<n.major?-1:e.minor>n.minor?1:e.minor<n.minor?-1:0},n._decodeBufferToText=function(e){for(var n="",r=e.byteLength,t=0;t<r;++t)n+=String.fromCharCode(e[t]);return n},n})();n.GLTFLoaderV1=null,n.GLTFLoaderV2=null,n.HomogeneousCoordinates=!1,n.IncrementalLoading=!0,e.GLTFFileLoader=n;var r=(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 n=new Uint8Array(this._arrayBuffer,this._byteOffset,e);return this._byteOffset+=e,n},e.prototype.skipBytes=function(e){this._byteOffset+=e},e})();e.SceneLoader.RegisterPlugin(new n)})(BABYLON||(BABYLON={}));var BABYLON;!(function(e){!(function(e){!(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"})(e.EComponentType||(e.EComponentType={}));!(function(e){e[e.FRAGMENT=35632]="FRAGMENT",e[e.VERTEX=35633]="VERTEX"})(e.EShaderType||(e.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"})(e.EParameterType||(e.EParameterType={}));!(function(e){e[e.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e[e.REPEAT=10497]="REPEAT"})(e.ETextureWrapMode||(e.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"})(e.ETextureFilterType||(e.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"})(e.ETextureFormat||(e.ETextureFormat={}));!(function(e){e[e.FRONT=1028]="FRONT",e[e.BACK=1029]="BACK",e[e.FRONT_AND_BACK=1032]="FRONT_AND_BACK"})(e.ECullingType||(e.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"})(e.EBlendingFunction||(e.EBlendingFunction={}))})(e.GLTF1||(e.GLTF1={}))})(BABYLON||(BABYLON={}));var BABYLON;!(function(e){!(function(n){var r;!(function(e){e[e.IDENTIFIER=1]="IDENTIFIER",e[e.UNKNOWN=2]="UNKNOWN",e[e.END_OF_INPUT=3]="END_OF_INPUT"})(r||(r={}));var t=(function(){function e(e){this._pos=0,this.isLetterOrDigitPattern=/^[a-zA-Z0-9]+$/,this._toParse=e,this._maxPos=e.length}return e.prototype.getNextToken=function(){if(this.isEnd())return r.END_OF_INPUT;if(this.currentString=this.read(),this.currentToken=r.UNKNOWN,"_"===this.currentString||this.isLetterOrDigitPattern.test(this.currentString))for(this.currentToken=r.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})(),o=["MODEL","VIEW","PROJECTION","MODELVIEW","MODELVIEWPROJECTION","JOINTMATRIX"],a=["world","view","projection","worldView","worldViewProjection","mBones"],i=["translation","rotation","scale"],s=["position","rotationQuaternion","scaling"],l=function(e,n){for(var r in e){var t=e[r];n.buffers[r]=t,n.buffersCount++}},u=function(e,n){for(var r in e){var t=e[r];n.shaders[r]=t,n.shaderscount++}},f=function(e,n,r){for(var t in e){var o=e[t];r[n][t]=o}},c=function(e){if(e)for(var n=0;n<e.length/2;n++)e[2*n+1]=1-e[2*n+1]},d=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(-1!==e.semantic.indexOf("TEXCOORD_")){var n=Number(e.semantic.split("_")[1]);return"uv"+(0===n?"":n+1)}},m=function(r){for(var t in r.animations)for(var o=r.animations[t],a=null,l=0;l<o.channels.length;l++){var u=o.channels[l],f=o.samplers[u.sampler];if(f){var c=null,d=null;o.parameters?(c=o.parameters[f.input],d=o.parameters[f.output]):(c=f.input,d=f.output);var m=n.GLTFUtils.GetBufferFromAccessor(r,r.accessors[c]),T=n.GLTFUtils.GetBufferFromAccessor(r,r.accessors[d]),A=u.target.id,E=r.scene.getNodeByID(A);if(null===E&&(E=r.scene.getNodeByName(A)),null!==E){var h=E instanceof e.Bone,p=u.target.path,y=i.indexOf(p);-1!==y&&(p=s[y]);var g=e.Animation.ANIMATIONTYPE_MATRIX;h||("rotationQuaternion"===p?(g=e.Animation.ANIMATIONTYPE_QUATERNION,E.rotationQuaternion=new e.Quaternion):g=e.Animation.ANIMATIONTYPE_VECTOR3);var L=null,v=[],b=0,N=!1;h&&a&&a.getKeys().length===m.length&&(L=a,N=!0),N||(L=new e.Animation(t,h?"_matrix":p,1,g,e.Animation.ANIMATIONLOOPMODE_CYCLE));for(var M=0;M<m.length;M++){var _=null;if("rotationQuaternion"===p?(_=e.Quaternion.FromArray([T[b],T[b+1],T[b+2],T[b+3]]),b+=4):(_=e.Vector3.FromArray([T[b],T[b+1],T[b+2]]),b+=3),h){var O=E,x=e.Vector3.Zero(),F=new e.Quaternion,S=e.Vector3.Zero(),R=O.getBaseMatrix();N&&(R=a.getKeys()[M].value),R.decompose(S,F,x),"position"===p?x=_:"rotationQuaternion"===p?F=_:S=_,_=e.Matrix.Compose(S,F,x)}N?a.getKeys()[M].value=_:v.push({frame:m[M],value:_})}N||(L.setKeys(v),E.animations.push(L)),a=L,r.scene.stopAnimation(E),r.scene.beginAnimation(E,0,m[m.length-1],!0,1)}else e.Tools.Warn("Creating animation named "+t+". But cannot find node named "+A+" to attach to")}}},T=function(n){var r=null;if(n.translation||n.rotation||n.scale){var t=e.Vector3.FromArray(n.scale||[1,1,1]),o=e.Quaternion.FromArray(n.rotation||[0,0,0,1]),a=e.Vector3.FromArray(n.translation||[0,0,0]);r=e.Matrix.Compose(t,o,a)}else r=e.Matrix.FromArray(n.matrix);return r},A=function(n,r,t,o){for(var a=0;a<o.bones.length;a++)if(o.bones[a].name===t)return o.bones[a];var i=n.nodes;for(var s in i){var l=i[s];if(l.jointName)for(var u=l.children,a=0;a<u.length;a++){var f=n.nodes[u[a]];if(f.jointName&&f.jointName===t){var c=T(l),d=new e.Bone(l.name,o,A(n,r,l.jointName,o),c);return d.id=s,d}}}return null},E=function(e,n){for(var r=0;r<e.length;r++)for(var t=e[r],o=0;o<t.node.children.length;o++){var a=t.node.children[o];if(a===n)return t.bone}return null},h=function(e,n){var r=e.nodes,t=r[n];if(t)return{node:t,id:n};for(var o in r)if(t=r[o],t.jointName===n)return{node:t,id:o};return null},p=function(e,n){for(var r=0;r<e.jointNames.length;r++)if(e.jointNames[r]===n)return!0;return!1},y=function(n,r,t,o){for(var a in n.nodes){var i=n.nodes[a],s=a;if(i.jointName&&!p(t,i.jointName)){var l=T(i),u=new e.Bone(i.name,r,null,l);u.id=s,o.push({bone:u,node:i,id:s})}}for(var f=0;f<o.length;f++)for(var c=o[f],d=c.node.children,m=0;m<d.length;m++){for(var A=null,E=0;E<o.length;E++)if(o[E].id===d[m]){A=o[E];break}A&&(A.bone._parent=c.bone,c.bone.children.push(A.bone))}},g=function(r,t,o,a,i){if(a||(a=new e.Skeleton(t.name,"",r.scene)),!t.babylonSkeleton)return a;var s=r.accessors[t.inverseBindMatrices],l=(n.GLTFUtils.GetBufferFromAccessor(r,s),e.Matrix.FromArray(t.bindShapeMatrix),[]),u=[];y(r,a,t,l),a.bones=[];for(var f=0;f<t.jointNames.length;f++){var c=h(r,t.jointNames[f]),d=c.node;if(d){var i=c.id,m=r.scene.getBoneByID(i);if(m)a.bones.push(m);else{for(var p=!1,g=null,L=0;L<f;L++){var v=h(r,t.jointNames[L]).node;if(v){var b=v.children;p=!1;for(var N=0;N<b.length;N++)if(b[N]===i){g=A(r,t,t.jointNames[L],a),p=!0;break}if(p)break}else e.Tools.Warn("Joint named "+t.jointNames[L]+" does not exist when looking for parent")}var M=T(d);!g&&l.length>0&&(g=E(l,i))&&-1===u.indexOf(g)&&u.push(g);new e.Bone(d.jointName,a,g,M).id=i}}else e.Tools.Warn("Joint named "+t.jointNames[f]+" does not exist")}var _=a.bones;a.bones=[];for(var f=0;f<t.jointNames.length;f++){var c=h(r,t.jointNames[f]);if(c)for(var L=0;L<_.length;L++)if(_[L].id===c.id){a.bones.push(_[L]);break}}a.prepare();for(var f=0;f<u.length;f++)a.bones.push(u[f]);return a},L=function(r,t,o,a,i){if(i||(i=new e.Mesh(t.name,r.scene),i.id=a),!t.babylonNode)return i;var s=new e.MultiMaterial("multimat"+a,r.scene);i.material||(i.material=s);for(var l=new e.VertexData,u=new e.Geometry(a,r.scene,l,!1,i),f=[],d=[],m=[],T=[],A=0;A<o.length;A++){var E=o[A],h=r.meshes[E];if(h)for(var p=0;p<h.primitives.length;p++){var y=new e.VertexData,g=h.primitives[p];g.mode;var L=g.attributes,v=null,b=null;for(var N in L)if(v=r.accessors[L[N]],b=n.GLTFUtils.GetBufferFromAccessor(r,v),"NORMAL"===N)y.normals=new Float32Array(b.length),y.normals.set(b);else if("POSITION"===N){if(e.GLTFFileLoader.HomogeneousCoordinates){y.positions=new Float32Array(b.length-b.length/4);for(var M=0;M<b.length;M+=4)y.positions[M]=b[M],y.positions[M+1]=b[M+1],y.positions[M+2]=b[M+2]}else y.positions=new Float32Array(b.length),y.positions.set(b);d.push(y.positions.length)}else if(-1!==N.indexOf("TEXCOORD_")){var _=Number(N.split("_")[1]),O=e.VertexBuffer.UVKind+(0===_?"":_+1),x=new Float32Array(b.length);x.set(b),c(x),y.set(x,O)}else"JOINT"===N?(y.matricesIndices=new Float32Array(b.length),y.matricesIndices.set(b)):"WEIGHT"===N?(y.matricesWeights=new Float32Array(b.length),y.matricesWeights.set(b)):"COLOR"===N&&(y.colors=new Float32Array(b.length),y.colors.set(b));if(v=r.accessors[g.indices])b=n.GLTFUtils.GetBufferFromAccessor(r,v),y.indices=new Int32Array(b.length),y.indices.set(b),T.push(y.indices.length);else{for(var F=[],M=0;M<y.positions.length/3;M++)F.push(M);y.indices=new Int32Array(F),T.push(y.indices.length)}l.merge(y),y=void 0;var S=r.scene.getMaterialByID(g.material);s.subMaterials.push(null===S?n.GLTFUtils.GetDefaultMaterial(r.scene):S),f.push(0===f.length?0:f[f.length-1]+d[d.length-2]),m.push(0===m.length?0:m[m.length-1]+T[T.length-2])}}u.setAllVerticesData(l,!1),i.computeWorldMatrix(!0),i.subMeshes=[];for(var R=0,A=0;A<o.length;A++){var E=o[A],h=r.meshes[E];if(h)for(var p=0;p<h.primitives.length;p++){h.primitives[p].mode;new e.SubMesh(R,f[R],d[R],m[R],T[R],i,i,!0);R++}}return i},v=function(e,n,r,t){e.position&&(e.position=n),(e.rotationQuaternion||e.rotation)&&(e.rotationQuaternion=r),e.scaling&&(e.scaling=t)},b=function(n,r,t){if(r.matrix){var o=new e.Vector3(0,0,0),a=new e.Quaternion,i=new e.Vector3(0,0,0);e.Matrix.FromArray(r.matrix).decompose(i,a,o),v(n,o,a,i)}else v(n,e.Vector3.FromArray(r.translation),e.Quaternion.FromArray(r.rotation),e.Vector3.FromArray(r.scale));n.computeWorldMatrix(!0)},N=function(n,r,t,o){var a=null;if(n.importOnlyMeshes&&(r.skin||r.meshes)&&n.importMeshesNames.length>0&&-1===n.importMeshesNames.indexOf(r.name))return null;if(r.skin){if(r.meshes){var i=n.skins[r.skin],s=L(n,r,r.meshes,t,r.babylonNode);s.skeleton=n.scene.getLastSkeletonByID(r.skin),null===s.skeleton&&(s.skeleton=g(n,i,0,i.babylonSkeleton,r.skin),i.babylonSkeleton||(i.babylonSkeleton=s.skeleton)),a=s}}else if(r.meshes){var s=L(n,r,r.mesh?[r.mesh]:r.meshes,t,r.babylonNode);a=s}else if(!r.light||r.babylonNode||n.importOnlyMeshes){if(r.camera&&!r.babylonNode&&!n.importOnlyMeshes){var l=n.cameras[r.camera];if(l)if("orthographic"===l.type){var u=(l[l.type],new e.FreeCamera(r.camera,e.Vector3.Zero(),n.scene));u.name=r.name,u.mode=e.Camera.ORTHOGRAPHIC_CAMERA,u.attachControl(n.scene.getEngine().getRenderingCanvas()),a=u}else if("perspective"===l.type){var f=l[l.type],c=new e.FreeCamera(r.camera,e.Vector3.Zero(),n.scene);c.name=r.name,c.attachControl(n.scene.getEngine().getRenderingCanvas()),f.aspectRatio||(f.aspectRatio=n.scene.getEngine().getRenderWidth()/n.scene.getEngine().getRenderHeight()),f.znear&&f.zfar&&(c.maxZ=f.zfar,c.minZ=f.znear),a=c}}}else{var d=n.lights[r.light];if(d)if("ambient"===d.type){var m=d[d.type],T=new e.HemisphericLight(r.light,e.Vector3.Zero(),n.scene);T.name=r.name,m.color&&(T.diffuse=e.Color3.FromArray(m.color)),a=T}else if("directional"===d.type){var A=d[d.type],E=new e.DirectionalLight(r.light,e.Vector3.Zero(),n.scene);E.name=r.name,A.color&&(E.diffuse=e.Color3.FromArray(A.color)),a=E}else if("point"===d.type){var h=d[d.type],p=new e.PointLight(r.light,e.Vector3.Zero(),n.scene);p.name=r.name,h.color&&(p.diffuse=e.Color3.FromArray(h.color)),a=p}else if("spot"===d.type){var y=d[d.type],N=new e.SpotLight(r.light,e.Vector3.Zero(),e.Vector3.Zero(),0,0,n.scene);N.name=r.name,y.color&&(N.diffuse=e.Color3.FromArray(y.color)),y.fallOfAngle&&(N.angle=y.fallOfAngle),y.fallOffExponent&&(N.exponent=y.fallOffExponent),a=N}}if(!r.jointName){if(r.babylonNode)return r.babylonNode;if(null===a){var M=new e.Mesh(r.name,n.scene);r.babylonNode=M,a=M}}if(null!==a){if(r.matrix&&a instanceof e.Mesh)b(a,r);else{var _=r.translation||[0,0,0],O=r.rotation||[0,0,0,1],x=r.scale||[1,1,1];v(a,e.Vector3.FromArray(_),e.Quaternion.FromArray(O),e.Vector3.FromArray(x))}a.updateCache(!0),r.babylonNode=a}return a},M=function(e,n,r,t){var o=e.nodes[n],a=null;if(t=!(e.importOnlyMeshes&&!t)||(-1!==e.importMeshesNames.indexOf(o.name)||0===e.importMeshesNames.length),!o.jointName&&t&&null!==(a=N(e,o,n))&&(a.id=n,a.parent=r),o.children)for(var i=0;i<o.children.length;i++)M(e,o.children[i],a,t)},_=function(e){var n=e.currentScene;if(n)for(var r=0;r<n.nodes.length;r++)M(e,n.nodes[r],null);else for(var t in e.scenes){n=e.scenes[t];for(var r=0;r<n.nodes.length;r++)M(e,n.nodes[r],null)}m(e);for(var r=0;r<e.scene.skeletons.length;r++){var o=e.scene.skeletons[r];e.scene.beginAnimation(o,0,Number.MAX_VALUE,!0,1)}},O=function(e,r,t,o,a,i,s){var l=i.values||a.parameters;for(var u in t){var f=t[u],c=f.type;if(c===n.EParameterType.FLOAT_MAT2||c===n.EParameterType.FLOAT_MAT3||c===n.EParameterType.FLOAT_MAT4)if(!f.semantic||f.source||f.node){if(f.semantic&&(f.source||f.node)){var d=r.scene.getNodeByName(f.source||f.node);if(null===d&&(d=r.scene.getNodeByID(f.source||f.node)),null===d)continue;n.GLTFUtils.SetMatrix(r.scene,d,f,u,o.getEffect())}}else n.GLTFUtils.SetMatrix(r.scene,e,f,u,o.getEffect());else{var m=l[a.uniforms[u]];if(!m)continue;if(c===n.EParameterType.SAMPLER_2D){var T=r.textures[i.values?m:f.value].babylonTexture;if(null===T||void 0===T)continue;o.getEffect().setTexture(u,T)}else n.GLTFUtils.SetUniform(o.getEffect(),u,m,c)}}s(o)},x=function(e,r,t,o,a){var i=o.values||t.parameters,s=t.uniforms;for(var l in a){var u=a[l],f=u.type,c=i[s[l]];if(void 0===c&&(c=u.value),c){var d=function(e){return function(n){u.value&&(r.setTexture(e,n),delete a[e])}};f===n.EParameterType.SAMPLER_2D?n.GLTFLoaderExtension.LoadTextureAsync(e,o.values?c:u.value,d(l),(function(){return d(null)})):u.value&&n.GLTFUtils.SetUniform(r,l,o.values?c:u.value,f)&&delete a[l]}}},F=function(n,r,t){return function(o,a){e.Tools.Error("Cannot compile program named "+n.name+". Error: "+a+". Default material will be applied"),r.dispose(!0),t()}},S=function(e,n,r,t,o,a){return function(i){x(e,n,r,t,o),n.onBind=function(i){O(i,e,o,n,r,t,a)}}},R=function(e,n,r){for(var t in n.uniforms){var i=n.uniforms[t],s=n.parameters[i];if(e.currentIdentifier===t&&s.semantic&&!s.source&&!s.node){var l=o.indexOf(s.semantic);if(-1!==l)return delete r[t],a[l]}}return e.currentIdentifier},I=function(e){for(var r in e.materials)n.GLTFLoaderExtension.LoadMaterialAsync(e,r,(function(e){}),(function(){}))},B=(function(){function i(){}return i.CreateRuntime=function(e,n,r){var t={extensions:{},accessors:{},buffers:{},bufferViews:{},meshes:{},lights:{},cameras:{},nodes:{},images:{},textures:{},shaders:{},programs:{},samplers:{},techniques:{},materials:{},animations:{},skins:{},extensionsUsed:[],scenes:{},buffersCount:0,shaderscount:0,scene:n,rootUrl:r,loadedBufferCount:0,loadedBufferViews:{},loadedShaderCount:0,importOnlyMeshes:!1,dummyNodes:[]};return e.extensions&&f(e.extensions,"extensions",t),e.extensionsUsed&&f(e.extensionsUsed,"extensionsUsed",t),e.buffers&&l(e.buffers,t),e.bufferViews&&f(e.bufferViews,"bufferViews",t),e.accessors&&f(e.accessors,"accessors",t),e.meshes&&f(e.meshes,"meshes",t),e.lights&&f(e.lights,"lights",t),e.cameras&&f(e.cameras,"cameras",t),e.nodes&&f(e.nodes,"nodes",t),e.images&&f(e.images,"images",t),e.textures&&f(e.textures,"textures",t),e.shaders&&u(e.shaders,t),e.programs&&f(e.programs,"programs",t),e.samplers&&f(e.samplers,"samplers",t),e.techniques&&f(e.techniques,"techniques",t),e.materials&&f(e.materials,"materials",t),e.animations&&f(e.animations,"animations",t),e.skins&&f(e.skins,"skins",t),e.scenes&&(t.scenes=e.scenes),e.scene&&e.scenes&&(t.currentScene=e.scenes[e.scene]),t},i.LoadBufferAsync=function(r,t,o,a,i){var s=r.buffers[t];n.GLTFUtils.IsBase64(s.uri)?setTimeout((function(){return o(new Uint8Array(n.GLTFUtils.DecodeBase64(s.uri)))})):e.Tools.LoadFile(r.rootUrl+s.uri,(function(e){return o(new Uint8Array(e))}),i,null,!0,a)},i.LoadTextureBufferAsync=function(r,t,o,a){var i=r.textures[t];if(!i||!i.source)return void a();if(i.babylonTexture)return void o(null);var s=r.images[i.source];n.GLTFUtils.IsBase64(s.uri)?setTimeout((function(){return o(new Uint8Array(n.GLTFUtils.DecodeBase64(s.uri)))})):e.Tools.LoadFile(r.rootUrl+s.uri,(function(e){return o(new Uint8Array(e))}),null,null,!0,a)},i.CreateTextureAsync=function(r,t,o,a,i){var s=r.textures[t];if(s.babylonTexture)return void a(s.babylonTexture);var l=r.samplers[s.sampler],u=l.minFilter===n.ETextureFilterType.NEAREST_MIPMAP_NEAREST||l.minFilter===n.ETextureFilterType.NEAREST_MIPMAP_LINEAR||l.minFilter===n.ETextureFilterType.LINEAR_MIPMAP_NEAREST||l.minFilter===n.ETextureFilterType.LINEAR_MIPMAP_LINEAR,f=e.Texture.BILINEAR_SAMPLINGMODE,c=new Blob([o]),d=URL.createObjectURL(c),m=function(){return URL.revokeObjectURL(d)},T=new e.Texture(d,r.scene,!u,!0,f,m,m);T.wrapU=n.GLTFUtils.GetWrapMode(l.wrapS),T.wrapV=n.GLTFUtils.GetWrapMode(l.wrapT),T.name=t,s.babylonTexture=T,a(T)},i.LoadShaderStringAsync=function(r,t,o,a){var i=r.shaders[t];if(n.GLTFUtils.IsBase64(i.uri)){o(atob(i.uri.split(",")[1]))}else e.Tools.LoadFile(r.rootUrl+i.uri,o,null,null,!1,a)},i.LoadMaterialAsync=function(i,s,l,u){var f=i.materials[s],c=i.techniques[f.technique];if(!c){var m=new e.StandardMaterial(s,i.scene);return m.diffuseColor=new e.Color3(.5,.5,.5),m.sideOrientation=e.Material.CounterClockWiseSideOrientation,void l(m)}var T=i.programs[c.program],A=c.states,E=e.Effect.ShadersStore[T.vertexShader+"VertexShader"],h=e.Effect.ShadersStore[T.fragmentShader+"PixelShader"],p="",y="",g=new t(E),L=new t(h),v={},b=[],N=[],M=[];for(var _ in c.uniforms){var O=c.uniforms[_],x=c.parameters[O];if(v[_]=x,!x.semantic||x.node||x.source)x.type===n.EParameterType.SAMPLER_2D?M.push(_):b.push(_);else{var I=o.indexOf(x.semantic);-1!==I?(b.push(a[I]),delete v[_]):b.push(_)}}for(var B in c.attributes){var C=c.attributes[B],G=c.parameters[C];G.semantic&&N.push(d(G))}for(;!g.isEnd()&&g.getNextToken();){var P=g.currentToken;if(P===r.IDENTIFIER){var w=!1;for(var B in c.attributes){var C=c.attributes[B],G=c.parameters[C];if(g.currentIdentifier===B&&G.semantic){p+=d(G),w=!0;break}}w||(p+=R(g,c,v))}else p+=g.currentString}for(;!L.isEnd()&&L.getNextToken();){var P=L.currentToken;P===r.IDENTIFIER?y+=R(L,c,v):y+=L.currentString}var U={vertex:T.vertexShader+s,fragment:T.fragmentShader+s},V={attributes:N,uniforms:b,samplers:M,needAlphaBlending:A&&A.enable&&-1!==A.enable.indexOf(3042)};e.Effect.ShadersStore[T.vertexShader+s+"VertexShader"]=p,e.Effect.ShadersStore[T.fragmentShader+s+"PixelShader"]=y;var D=new e.ShaderMaterial(s,i.scene,U,V);if(D.onError=F(T,D,u),D.onCompiled=S(i,D,c,f,v,l),D.sideOrientation=e.Material.CounterClockWiseSideOrientation,A&&A.functions){var k=A.functions;k.cullFace&&k.cullFace[0]!==n.ECullingType.BACK&&(D.backFaceCulling=!1);var W=k.blendFuncSeparate;W&&(W[0]===n.EBlendingFunction.SRC_ALPHA&&W[1]===n.EBlendingFunction.ONE_MINUS_SRC_ALPHA&&W[2]===n.EBlendingFunction.ONE&&W[3]===n.EBlendingFunction.ONE?D.alphaMode=e.Engine.ALPHA_COMBINE:W[0]===n.EBlendingFunction.ONE&&W[1]===n.EBlendingFunction.ONE&&W[2]===n.EBlendingFunction.ZERO&&W[3]===n.EBlendingFunction.ONE?D.alphaMode=e.Engine.ALPHA_ONEONE:W[0]===n.EBlendingFunction.SRC_ALPHA&&W[1]===n.EBlendingFunction.ONE&&W[2]===n.EBlendingFunction.ZERO&&W[3]===n.EBlendingFunction.ONE?D.alphaMode=e.Engine.ALPHA_ADD:W[0]===n.EBlendingFunction.ZERO&&W[1]===n.EBlendingFunction.ONE_MINUS_SRC_COLOR&&W[2]===n.EBlendingFunction.ONE&&W[3]===n.EBlendingFunction.ONE?D.alphaMode=e.Engine.ALPHA_SUBTRACT:W[0]===n.EBlendingFunction.DST_COLOR&&W[1]===n.EBlendingFunction.ZERO&&W[2]===n.EBlendingFunction.ONE&&W[3]===n.EBlendingFunction.ONE?D.alphaMode=e.Engine.ALPHA_MULTIPLY:W[0]===n.EBlendingFunction.SRC_ALPHA&&W[1]===n.EBlendingFunction.ONE_MINUS_SRC_COLOR&&W[2]===n.EBlendingFunction.ONE&&W[3]===n.EBlendingFunction.ONE&&(D.alphaMode=e.Engine.ALPHA_MAXIMIZED))}},i})();n.GLTFLoaderBase=B;var C=(function(){function r(){}return r.RegisterExtension=function(n){if(r.Extensions[n.name])return void e.Tools.Error('Tool with the same name "'+n.name+'" already exists');r.Extensions[n.name]=n},r.prototype.importMeshAsync=function(r,t,o,a,i,s,l){var u=this;t.useRightHandedSystem=!0;n.GLTFLoaderExtension.LoadRuntimeAsync(t,o,a,(function(n){n.importOnlyMeshes=!0,""===r?n.importMeshesNames=[]:"string"==typeof r?n.importMeshesNames=[r]:!r||r instanceof Array?(n.importMeshesNames=[],e.Tools.Warn("Argument meshesNames must be of type string or string[]")):n.importMeshesNames=[r],u._createNodes(n);var t=[],o=[];for(var a in n.nodes){var s=n.nodes[a];s.babylonNode instanceof e.AbstractMesh&&t.push(s.babylonNode)}for(var f in n.skins){var c=n.skins[f];c.babylonSkeleton instanceof e.Skeleton&&o.push(c.babylonSkeleton)}u._loadBuffersAsync(n,(function(){u._loadShadersAsync(n,(function(){I(n),_(n),!e.GLTFFileLoader.IncrementalLoading&&i&&i(t,null,o)}))}),l),e.GLTFFileLoader.IncrementalLoading&&i&&i(t,null,o)}),s);return!0},r.prototype.loadAsync=function(r,t,o,a,i){var s=this;r.useRightHandedSystem=!0,n.GLTFLoaderExtension.LoadRuntimeAsync(r,t,o,(function(r){n.GLTFLoaderExtension.LoadRuntimeExtensionsAsync(r,(function(){s._createNodes(r),s._loadBuffersAsync(r,(function(){s._loadShadersAsync(r,(function(){I(r),_(r),e.GLTFFileLoader.IncrementalLoading||a()}))})),e.GLTFFileLoader.IncrementalLoading&&a()}),i)}),i)},r.prototype._loadShadersAsync=function(r,t){var o=!1,a=function(o,a){n.GLTFLoaderExtension.LoadShaderStringAsync(r,o,(function(i){r.loadedShaderCount++,i&&(e.Effect.ShadersStore[o+(a.type===n.EShaderType.VERTEX?"VertexShader":"PixelShader")]=i),r.loadedShaderCount===r.shaderscount&&t()}),(function(){e.Tools.Error("Error when loading shader program named "+o+" located at "+a.uri)}))};for(var i in r.shaders){o=!0;var s=r.shaders[i];s?a.bind(this,i,s)():e.Tools.Error("No shader named: "+i)}o||t()},r.prototype._loadBuffersAsync=function(r,t,o){var a=!1,i=function(o,a){n.GLTFLoaderExtension.LoadBufferAsync(r,o,(function(n){r.loadedBufferCount++,n&&(n.byteLength!=r.buffers[o].byteLength&&e.Tools.Error("Buffer named "+o+" is length "+n.byteLength+". Expected: "+a.byteLength),r.loadedBufferViews[o]=n),r.loadedBufferCount===r.buffersCount&&t()}),(function(){e.Tools.Error("Error when loading buffer named "+o+" located at "+a.uri)}))};for(var s in r.buffers){a=!0;var l=r.buffers[s];l?i.bind(this,s,l)():e.Tools.Error("No buffer named: "+s)}a||t()},r.prototype._createNodes=function(e){var n=e.currentScene;if(n)for(var r=0;r<n.nodes.length;r++)M(e,n.nodes[r],null);else for(var t in e.scenes){n=e.scenes[t];for(var r=0;r<n.nodes.length;r++)M(e,n.nodes[r],null)}},r})();C.Extensions={},n.GLTFLoader=C,e.GLTFFileLoader.GLTFLoaderV1=new C})(e.GLTF1||(e.GLTF1={}))})(BABYLON||(BABYLON={}));var BABYLON;!(function(e){!(function(n){var r=(function(){function r(){}return r.SetMatrix=function(r,t,o,a,i){var s=null;switch("MODEL"===o.semantic?s=t.getWorldMatrix():"PROJECTION"===o.semantic?s=r.getProjectionMatrix():"VIEW"===o.semantic?s=r.getViewMatrix():"MODELVIEWINVERSETRANSPOSE"===o.semantic?s=e.Matrix.Transpose(t.getWorldMatrix().multiply(r.getViewMatrix()).invert()):"MODELVIEW"===o.semantic?s=t.getWorldMatrix().multiply(r.getViewMatrix()):"MODELVIEWPROJECTION"===o.semantic?s=t.getWorldMatrix().multiply(r.getTransformMatrix()):"MODELINVERSE"===o.semantic?s=t.getWorldMatrix().invert():"VIEWINVERSE"===o.semantic?s=r.getViewMatrix().invert():"PROJECTIONINVERSE"===o.semantic?s=r.getProjectionMatrix().invert():"MODELVIEWINVERSE"===o.semantic?s=t.getWorldMatrix().multiply(r.getViewMatrix()).invert():"MODELVIEWPROJECTIONINVERSE"===o.semantic?s=t.getWorldMatrix().multiply(r.getTransformMatrix()).invert():"MODELINVERSETRANSPOSE"===o.semantic&&(s=e.Matrix.Transpose(t.getWorldMatrix().invert())),o.type){case n.EParameterType.FLOAT_MAT2:i.setMatrix2x2(a,e.Matrix.GetAsMatrix2x2(s));break;case n.EParameterType.FLOAT_MAT3:i.setMatrix3x3(a,e.Matrix.GetAsMatrix3x3(s));break;case n.EParameterType.FLOAT_MAT4:i.setMatrix(a,s)}},r.SetUniform=function(r,t,o,a){switch(a){case n.EParameterType.FLOAT:return r.setFloat(t,o),!0;case n.EParameterType.FLOAT_VEC2:return r.setVector2(t,e.Vector2.FromArray(o)),!0;case n.EParameterType.FLOAT_VEC3:return r.setVector3(t,e.Vector3.FromArray(o)),!0;case n.EParameterType.FLOAT_VEC4:return r.setVector4(t,e.Vector4.FromArray(o)),!0;default:return!1}},r.IsBase64=function(e){return!(e.length<5)&&"data:"===e.substr(0,5)},r.DecodeBase64=function(e){for(var n=atob(e.split(",")[1]),r=n.length,t=new Uint8Array(new ArrayBuffer(r)),o=0;o<r;o++)t[o]=n.charCodeAt(o);return t.buffer},r.GetWrapMode=function(r){switch(r){case n.ETextureWrapMode.CLAMP_TO_EDGE:return e.Texture.CLAMP_ADDRESSMODE;case n.ETextureWrapMode.MIRRORED_REPEAT:return e.Texture.MIRROR_ADDRESSMODE;case n.ETextureWrapMode.REPEAT:default:return e.Texture.WRAP_ADDRESSMODE}},r.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}},r.GetTextureFilterMode=function(r){switch(r){case n.ETextureFilterType.LINEAR:case n.ETextureFilterType.LINEAR_MIPMAP_NEAREST:case n.ETextureFilterType.LINEAR_MIPMAP_LINEAR:return e.Texture.TRILINEAR_SAMPLINGMODE;case n.ETextureFilterType.NEAREST:case n.ETextureFilterType.NEAREST_MIPMAP_NEAREST:return e.Texture.NEAREST_SAMPLINGMODE;default:return e.Texture.BILINEAR_SAMPLINGMODE}},r.GetBufferFromBufferView=function(e,r,t,o,a){var t=r.byteOffset+t,i=e.loadedBufferViews[r.buffer];if(t+o>i.byteLength)throw new Error("Buffer access is out of range");var s=i.buffer;switch(t+=i.byteOffset,a){case n.EComponentType.BYTE:return new Int8Array(s,t,o);case n.EComponentType.UNSIGNED_BYTE:return new Uint8Array(s,t,o);case n.EComponentType.SHORT:return new Int16Array(s,t,o);case n.EComponentType.UNSIGNED_SHORT:return new Uint16Array(s,t,o);default:return new Float32Array(s,t,o)}},r.GetBufferFromAccessor=function(e,n){var t=e.bufferViews[n.bufferView],o=n.count*r.GetByteStrideFromType(n);return r.GetBufferFromBufferView(e,t,n.byteOffset,o,n.componentType)},r.DecodeBufferToText=function(e){for(var n="",r=e.byteLength,t=0;t<r;++t)n+=String.fromCharCode(e[t]);return n},r.GetDefaultMaterial=function(n){if(!r._DefaultMaterial){e.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"),e.Effect.ShadersStore.GLTFDefaultMaterialPixelShader=["precision highp float;","","uniform vec4 u_emission;","","void main(void)","{"," gl_FragColor = u_emission;","}"].join("\n");var t={vertex:"GLTFDefaultMaterial",fragment:"GLTFDefaultMaterial"},o={attributes:["position"],uniforms:["worldView","projection","u_emission"],samplers:[],needAlphaBlending:!1};r._DefaultMaterial=new e.ShaderMaterial("GLTFDefaultMaterial",n,t,o),r._DefaultMaterial.setColor4("u_emission",new e.Color4(.5,.5,.5,1))}return r._DefaultMaterial},r})();r._DefaultMaterial=null,n.GLTFUtils=r})(e.GLTF1||(e.GLTF1={}))})(BABYLON||(BABYLON={}));var BABYLON;!(function(e){!(function(e){var n=(function(){function n(e){this._name=e}return Object.defineProperty(n.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),
  2. n.prototype.loadRuntimeAsync=function(e,n,r,t,o){return!1},n.prototype.loadRuntimeExtensionsAsync=function(e,n,r){return!1},n.prototype.loadBufferAsync=function(e,n,r,t,o){return!1},n.prototype.loadTextureBufferAsync=function(e,n,r,t){return!1},n.prototype.createTextureAsync=function(e,n,r,t,o){return!1},n.prototype.loadShaderStringAsync=function(e,n,r,t){return!1},n.prototype.loadMaterialAsync=function(e,n,r,t){return!1},n.LoadRuntimeAsync=function(r,t,o,a,i){n.ApplyExtensions((function(e){return e.loadRuntimeAsync(r,t,o,a,i)}),(function(){setTimeout((function(){a(e.GLTFLoaderBase.CreateRuntime(t.json,r,o))}))}))},n.LoadRuntimeExtensionsAsync=function(e,r,t){n.ApplyExtensions((function(n){return n.loadRuntimeExtensionsAsync(e,r,t)}),(function(){setTimeout((function(){r()}))}))},n.LoadBufferAsync=function(r,t,o,a,i){n.ApplyExtensions((function(e){return e.loadBufferAsync(r,t,o,a,i)}),(function(){e.GLTFLoaderBase.LoadBufferAsync(r,t,o,a,i)}))},n.LoadTextureAsync=function(e,r,t,o){n.LoadTextureBufferAsync(e,r,(function(a){return n.CreateTextureAsync(e,r,a,t,o)}),o)},n.LoadShaderStringAsync=function(r,t,o,a){n.ApplyExtensions((function(e){return e.loadShaderStringAsync(r,t,o,a)}),(function(){e.GLTFLoaderBase.LoadShaderStringAsync(r,t,o,a)}))},n.LoadMaterialAsync=function(r,t,o,a){n.ApplyExtensions((function(e){return e.loadMaterialAsync(r,t,o,a)}),(function(){e.GLTFLoaderBase.LoadMaterialAsync(r,t,o,a)}))},n.LoadTextureBufferAsync=function(r,t,o,a){n.ApplyExtensions((function(e){return e.loadTextureBufferAsync(r,t,o,a)}),(function(){e.GLTFLoaderBase.LoadTextureBufferAsync(r,t,o,a)}))},n.CreateTextureAsync=function(r,t,o,a,i){n.ApplyExtensions((function(e){return e.createTextureAsync(r,t,o,a,i)}),(function(){e.GLTFLoaderBase.CreateTextureAsync(r,t,o,a,i)}))},n.ApplyExtensions=function(n,r){for(var t in e.GLTFLoader.Extensions){if(n(e.GLTFLoader.Extensions[t]))return}r()},n})();e.GLTFLoaderExtension=n})(e.GLTF1||(e.GLTF1={}))})(BABYLON||(BABYLON={}));var BABYLON;!(function(e){!(function(e){var n;!(function(e){e[e.JSON=0]="JSON"})(n||(n={}));var r=(function(n){function r(){return n.call(this,"KHR_binary_glTF")||this}return __extends(r,n),r.prototype.loadRuntimeAsync=function(n,r,t,o,a){var i=r.json.extensionsUsed;return!(!i||-1===i.indexOf(this.name))&&(this._bin=r.bin,o(e.GLTFLoaderBase.CreateRuntime(r.json,n,t)),!0)},r.prototype.loadBufferAsync=function(e,n,r,t){return-1!==e.extensionsUsed.indexOf(this.name)&&("binary_glTF"===n&&(r(this._bin),!0))},r.prototype.loadTextureBufferAsync=function(n,r,t,o){var a=n.textures[r],i=n.images[a.source];if(!(i.extensions&&this.name in i.extensions))return!1;var s=i.extensions[this.name],l=n.bufferViews[s.bufferView];return t(e.GLTFUtils.GetBufferFromBufferView(n,l,0,l.byteLength,e.EComponentType.UNSIGNED_BYTE)),!0},r.prototype.loadShaderStringAsync=function(n,r,t,o){var a=n.shaders[r];if(!(a.extensions&&this.name in a.extensions))return!1;var i=a.extensions[this.name],s=n.bufferViews[i.bufferView],l=e.GLTFUtils.GetBufferFromBufferView(n,s,0,s.byteLength,e.EComponentType.UNSIGNED_BYTE);return setTimeout((function(){var n=e.GLTFUtils.DecodeBufferToText(l);t(n)})),!0},r})(e.GLTFLoaderExtension);e.GLTFBinaryExtension=r;!(function(){function e(e){this._arrayBuffer=e,this._dataView=new DataView(e),this._byteOffset=0}e.prototype.getUint32=function(){var e=this._dataView.getUint32(this._byteOffset,!0);return this._byteOffset+=4,e},e.prototype.getUint8Array=function(e){e||(e=this._arrayBuffer.byteLength-this._byteOffset);var n=new Uint8Array(this._arrayBuffer,this._byteOffset,e);return this._byteOffset+=e,n}})();e.GLTFLoader.RegisterExtension(new r)})(e.GLTF1||(e.GLTF1={}))})(BABYLON||(BABYLON={}));var BABYLON;!(function(e){!(function(n){var r=(function(r){function t(){return r.call(this,"KHR_materials_common")||this}return __extends(t,r),t.prototype.loadRuntimeExtensionsAsync=function(n,r,t){if(!n.extensions)return!1;var o=n.extensions[this.name];if(!o)return!1;var a=o.lights;if(a)for(var i in a){var s=a[i];switch(s.type){case"ambient":var l=new e.HemisphericLight(s.name,new e.Vector3(0,1,0),n.scene),u=s.ambient;l.diffuse=e.Color3.FromArray(u.color||[1,1,1]);break;case"point":var f=new e.PointLight(s.name,new e.Vector3(10,10,10),n.scene),c=s.point;f.diffuse=e.Color3.FromArray(c.color||[1,1,1]);break;case"directional":var d=new e.DirectionalLight(s.name,new e.Vector3(0,-1,0),n.scene),m=s.directional;d.diffuse=e.Color3.FromArray(m.color||[1,1,1]);break;case"spot":var T=s.spot,A=new e.SpotLight(s.name,new e.Vector3(0,10,0),new e.Vector3(0,-1,0),s.spot.fallOffAngle||Math.PI,s.spot.fallOffExponent||0,n.scene);A.diffuse=e.Color3.FromArray(T.color||[1,1,1]);break;default:e.Tools.Warn('GLTF Material Common extension: light type "'+s.type+"” not supported")}}return!1},t.prototype.loadMaterialAsync=function(n,r,t,o){var a=n.materials[r];if(!a||!a.extensions)return!1;var i=a.extensions[this.name];if(!i)return!1;var s=new e.StandardMaterial(r,n.scene);return s.sideOrientation=e.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(n,i.values.ambient,s,"ambientTexture",o):s.ambientColor=e.Color3.FromArray(i.values.ambient||[0,0,0]),"string"==typeof i.values.diffuse?this._loadTexture(n,i.values.diffuse,s,"diffuseTexture",o):s.diffuseColor=e.Color3.FromArray(i.values.diffuse||[0,0,0]),"string"==typeof i.values.emission?this._loadTexture(n,i.values.emission,s,"emissiveTexture",o):s.emissiveColor=e.Color3.FromArray(i.values.emission||[0,0,0]),"string"==typeof i.values.specular?this._loadTexture(n,i.values.specular,s,"specularTexture",o):s.specularColor=e.Color3.FromArray(i.values.specular||[0,0,0]),!0},t.prototype._loadTexture=function(e,r,t,o,a){n.GLTFLoaderBase.LoadTextureBufferAsync(e,r,(function(i){n.GLTFLoaderBase.CreateTextureAsync(e,r,i,(function(e){return t[o]=e}),a)}),a)},t})(n.GLTFLoaderExtension);n.GLTFMaterialsCommonExtension=r,n.GLTFLoader.RegisterExtension(new r)})(e.GLTF1||(e.GLTF1={}))})(BABYLON||(BABYLON={}));var BABYLON;!(function(e){!(function(e){!(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.UNSIGNED_INT=5125]="UNSIGNED_INT",e[e.FLOAT=5126]="FLOAT"})(e.EComponentType||(e.EComponentType={}));!(function(e){e[e.POINTS=0]="POINTS",e[e.LINES=1]="LINES",e[e.LINE_LOOP=2]="LINE_LOOP",e[e.LINE_STRIP=3]="LINE_STRIP",e[e.TRIANGLES=4]="TRIANGLES",e[e.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",e[e.TRIANGLE_FAN=6]="TRIANGLE_FAN"})(e.EMeshPrimitiveMode||(e.EMeshPrimitiveMode={}));!(function(e){e[e.NEAREST=9728]="NEAREST",e[e.LINEAR=9729]="LINEAR"})(e.ETextureMagFilter||(e.ETextureMagFilter={}));!(function(e){e[e.NEAREST=9728]="NEAREST",e[e.LINEAR=9729]="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"})(e.ETextureMinFilter||(e.ETextureMinFilter={}));!(function(e){e[e.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e[e.REPEAT=10497]="REPEAT"})(e.ETextureWrapMode||(e.ETextureWrapMode={}))})(e.GLTF2||(e.GLTF2={}))})(BABYLON||(BABYLON={}));var BABYLON;!(function(e){!(function(n){var r=function(e){return"node"+e},t=function(t,o,a){for(var i=0;i<o.channels.length;i++){var s=o.channels[i];if(s){var l=s.sampler;if(void 0!==l){var u=o.samplers[l];if(u)if(s.target){var f=t.babylonScene.getNodeByID(r(s.target.node));if(f){var c={translation:"position",rotation:"rotationQuaternion",scale:"scaling",weights:"influence"}[s.target.path];if(c){var d=n.GLTFUtils.GetBufferFromAccessor(t,t.gltf.accessors[u.input]),m=n.GLTFUtils.GetBufferFromAccessor(t,t.gltf.accessors[u.output]),T=0,A={position:e.Animation.ANIMATIONTYPE_VECTOR3,rotationQuaternion:e.Animation.ANIMATIONTYPE_QUATERNION,scale:e.Animation.ANIMATIONTYPE_VECTOR3,influence:e.Animation.ANIMATIONTYPE_FLOAT}[c],E={position:function(){var n=e.Vector3.FromArray(m,T);return T+=3,n},rotationQuaternion:function(){var n=e.Quaternion.FromArray(m,T);return T+=4,n},scale:function(){var n=e.Vector3.FromArray(m,T);return T+=3,n},influence:function(){for(var e=f.morphTargetManager.numTargets,n=new Array(e),r=0;r<e;r++)n[r]=m[T++];return n}}[c],h={LINEAR:function(e){return{frame:d[e],value:E()}},CUBICSPLINE:function(e){return{frame:d[e],inTangent:E(),value:E(),outTangent:E()}}}[u.interpolation];if(h){for(var p=new Array(d.length),y=0;y<d.length;y++)p[y]=h(y);if("influence"===c)for(var g=f,L=0;L<g.morphTargetManager.numTargets;L++){var v=g.morphTargetManager.getTarget(L),b=(o.name||"anim"+a)+"_"+L,N=new e.Animation(b,c,1,A);N.setKeys(p.map((function(e){return{frame:e.frame,inTangent:e.inTangent?e.inTangent[L]:void 0,value:e.value[L],outTangent:e.outTangent?e.outTangent[L]:void 0}}))),v.animations.push(N),t.babylonScene.beginAnimation(v,0,d[d.length-1],!0)}else{var b=o.name||"anim"+a,N=new e.Animation(b,c,1,A);N.setKeys(p),f.animations.push(N),t.babylonScene.beginAnimation(f,0,d[d.length-1],!0)}}else e.Tools.Warn("[Animation "+a+", Channel + "+i+"] Sampler interpolation '"+u.interpolation+"' is invalid")}else e.Tools.Warn("[Animation "+a+", Channel + "+i+"] Target path "+s.target.path+" is invalid")}else e.Tools.Warn("[Animation "+a+", Channel + "+i+"] Target node "+s.target.node+" does not exist")}else e.Tools.Warn("[Animation "+a+", Channel + "+i+"] Target does not exist");else e.Tools.Warn("[Animation "+a+", Channel + "+i+"] Sampler "+l+" does not exist")}else e.Tools.Warn("[Animation "+a+", Channel + "+l+"] Sampler is not defined")}else e.Tools.Warn("[Animation "+a+"] Channel "+i+" does not exist")}},o=function(n){var r=n.gltf.animations;if(r&&0!==r.length)for(var o=0;o<r.length;o++){var a=r[o];a?(a.channels&&0!==a.channels.length||e.Tools.Warn("Animation "+o+" has no channels"),a.samplers&&0!==a.samplers.length?t(n,a,o):e.Tools.Warn("Animation "+o+" has no samplers")):e.Tools.Warn("Animation "+o+" not found")}},a=function(n){var r=null;if(n.translation||n.rotation||n.scale){var t=e.Vector3.FromArray(n.scale||[1,1,1]),o=e.Quaternion.FromArray(n.rotation||[0,0,0,1]),a=e.Vector3.FromArray(n.translation||[0,0,0]);r=e.Matrix.Compose(t,o,a)}else r=n.matrix?e.Matrix.FromArray(n.matrix):e.Matrix.Identity();return r},i=function(n,t,o,s){for(var l=r(o),f=0;f<s.bones.length;f++)if(s.bones[f].id===l)return s.bones[f].getParent();for(var c=t.joints,d=0;d<c.length;d++)for(var m=c[d],T=n.gltf.nodes[m],A=T.children,f=0;f<A.length;f++){var E=A[f];n.gltf.nodes[E];if(u(t,E)&&E===o){var h=a(T),p=new e.Bone(T.name||r(m),s,i(n,t,m,s),h);return p.id=r(m),p}}return null},s=function(e,n){for(var r=0;r<e.length;r++){var t=e[r];if(t.node.children)for(var o=0;o<t.node.children.length;o++){var a=t.node.children[o];if(a===n)return t.bone}}return null},l=function(e,n){var r=e.gltf.nodes[n];return r?{node:r,index:n}:null},u=function(e,n){for(var r=0;r<e.joints.length;r++)if(e.joints[r]===n)return!0;return!1},f=function(n,t,o,i){for(var s=0;s<n.gltf.nodes.length;s++){var l=n.gltf.nodes[s];if(!u(o,s)){var f=a(l),c=new e.Bone(l.name||r(s),t,null,f);c.id=r(s),i.push({bone:c,node:l,index:s})}}for(var s=0;s<i.length;s++){var d=i[s],m=d.node.children;if(m)for(var T=0;T<m.length;T++){for(var A=null,E=0;E<i.length;E++)if(i[E].index===m[T]){A=i[E];break}A&&(A.bone._parent=d.bone,d.bone.children.push(A.bone))}}},c=function(t,o,u){var c=u.name||"skin"+o.skin,d=u.babylonSkeleton;if(d||(d=new e.Skeleton(c,"skin"+o.skin,t.babylonScene)),!u.babylonSkeleton)return d;var m=t.gltf.accessors[u.inverseBindMatrices],T=(n.GLTFUtils.GetBufferFromAccessor(t,m),[]),A=[];f(t,d,u,T),d.bones=[];for(var E=0;E<u.joints.length;E++){var h=l(t,u.joints[E]),p=h.node;if(p){var y=h.index,g=r(y),L=t.babylonScene.getBoneByID(g);if(L)d.bones.push(L);else{for(var v=!1,b=null,N=0;N<E;N++){var M=l(t,u.joints[N]).node;if(M){var _=M.children;v=!1;for(var O=0;O<_.length;O++)if(_[O]===y){b=i(t,u,u.joints[N],d),v=!0;break}if(v)break}else e.Tools.Warn("Joint index "+u.joints[N]+" does not exist when looking for parent")}var x=a(p);!b&&T.length>0&&(b=s(T,y))&&-1===A.indexOf(b)&&A.push(b);new e.Bone(p.name||g,d,b,x).id=g}}else e.Tools.Warn("Joint index "+u.joints[E]+" does not exist")}var F=d.bones;d.bones=[];for(var E=0;E<u.joints.length;E++){var h=l(t,u.joints[E]);if(h)for(var S=r(h.index),N=0;N<F.length;N++)if(F[N].id===S){d.bones.push(F[N]);break}}d.prepare();for(var E=0;E<A.length;E++)d.bones.push(A[E]);return d},d=function(r,t){if(void 0===t)return n.GLTFUtils.GetDefaultMaterial(r);var o=r.gltf.materials;if(!o||t<0||t>=o.length)return e.Tools.Error("Invalid material index"),n.GLTFUtils.GetDefaultMaterial(r);var a=r.gltf.materials[t].babylonMaterial;return a||n.GLTFUtils.GetDefaultMaterial(r)},m=function(r,t,o){var a=o.name||t.name||"mesh"+t.mesh,i=t.babylonNode;if(i||(i=new e.Mesh(a,r.babylonScene)),!t.babylonNode)return i;var s=new e.MultiMaterial(a,r.babylonScene);i.material||(i.material=s);for(var l=new e.VertexData,u=new e.Geometry(a,r.babylonScene,l,!1,i),f=[],c=[],m=[],T=[],A=0;A<o.primitives.length;A++){var E=new e.VertexData,h=o.primitives[A];h.mode,n.EMeshPrimitiveMode.TRIANGLES;var p=h.attributes,y=null,g=null;for(var L in p)if(y=r.gltf.accessors[p[L]],g=n.GLTFUtils.GetBufferFromAccessor(r,y),"NORMAL"===L)E.normals=g;else if("POSITION"===L)E.positions=g,c.push(E.positions.length);else if("TANGENT"===L)E.tangents=g;else if(-1!==L.indexOf("TEXCOORD_")){var v=Number(L.split("_")[1]),b=e.VertexBuffer.UVKind+(0===v?"":v+1);E.set(g,b)}else"JOINT"===L?E.matricesIndices=g:"WEIGHT"===L?E.matricesWeights=g:"COLOR_0"===L?E.colors=g:e.Tools.Warn("Ignoring unrecognized semantic '"+L+"'");if(y=r.gltf.accessors[h.indices])g=n.GLTFUtils.GetBufferFromAccessor(r,y),E.indices=g;else{E.indices=new Uint32Array(E.positions.length/3);for(var N=0;N<E.indices.length;N++)E.indices[N]=N}T.push(E.indices.length),l.merge(E),E=void 0;var M=d(r,h.material);if(s.subMaterials.push(M),h.targets)for(var _=0;_<h.targets.length;_++){var O=h.targets[_],x=0;t.weights?x=t.weights[_]:o.weights&&(x=o.weights[_]);var F=new e.MorphTarget("morph"+_,x);for(var L in O){y=r.gltf.accessors[O[L]];var S=n.GLTFUtils.GetBufferFromAccessor(r,y);if(y.name&&(F.name=y.name),"NORMAL"===L){for(var R=0;R<S.length;R++)S[R]+=l.normals[R];F.setNormals(S)}else if("POSITION"===L){for(var R=0;R<S.length;R++)S[R]+=l.positions[R];F.setPositions(S)}else if("TANGENT"===L){for(var R=0,I=0;R<S.length;R++,I++)S[R]+=l.tangents[I],(R+1)%3==0&&I++;F.setTangents(S)}else e.Tools.Warn("Ignoring unrecognized semantic '"+L+"'")}F.getPositions()?(i.morphTargetManager||(i.morphTargetManager=new e.MorphTargetManager),i.morphTargetManager.addTarget(F)):e.Tools.Warn("Not adding morph target '"+F.name+"' because it has no position data")}f.push(0===f.length?0:f[f.length-1]+c[c.length-2]),m.push(0===m.length?0:m[m.length-1]+T[T.length-2])}u.setAllVerticesData(l,!1),i.computeWorldMatrix(!0),i.subMeshes=[];for(var A=0;A<o.primitives.length;A++){o.primitives[A].mode,n.EMeshPrimitiveMode.TRIANGLES;new e.SubMesh(A,f[A],c[A],m[A],T[A],i,i,!0)}return i},T=function(n,r){var t=e.Vector3.Zero(),o=e.Quaternion.Identity(),a=new e.Vector3(1,1,1);if(r.matrix){e.Matrix.FromArray(r.matrix).decompose(a,o,t)}else r.translation&&(t=e.Vector3.FromArray(r.translation)),r.rotation&&(o=e.Quaternion.FromArray(r.rotation)),r.scale&&(a=e.Vector3.FromArray(r.scale));if(n.position=t,n.rotationQuaternion=o,n instanceof e.Mesh){n.scaling=a}},A=function(n,r){var t=null;if(n.importOnlyMeshes&&(void 0!==r.skin||void 0!==r.mesh)&&n.importMeshesNames.length>0&&-1===n.importMeshesNames.indexOf(r.name))return null;if(void 0!==r.skin){if(void 0!==r.mesh){var o=n.gltf.skins[r.skin],a=m(n,r,n.gltf.meshes[r.mesh]),i=c(n,r,o);i&&(a.skeleton=i,o.babylonSkeleton=i),t=a}}else if(void 0!==r.mesh)t=m(n,r,n.gltf.meshes[r.mesh]);else if(void 0!==r.camera&&!r.babylonNode&&!n.importOnlyMeshes){var s=n.gltf.cameras[r.camera];if(void 0!==s)if("orthographic"===s.type){var l=(s.orthographic,new e.FreeCamera(r.name||"camera"+r.camera,e.Vector3.Zero(),n.babylonScene));l.mode=e.Camera.ORTHOGRAPHIC_CAMERA,l.attachControl(n.babylonScene.getEngine().getRenderingCanvas()),t=l}else if("perspective"===s.type){var u=s.perspective,f=new e.FreeCamera(r.name||"camera"+r.camera,e.Vector3.Zero(),n.babylonScene);f.attachControl(n.babylonScene.getEngine().getRenderingCanvas()),u.aspectRatio||(u.aspectRatio=n.babylonScene.getEngine().getRenderWidth()/n.babylonScene.getEngine().getRenderHeight()),u.znear&&u.zfar&&(f.maxZ=u.zfar,f.minZ=u.znear),t=f}}if(r.babylonNode)return r.babylonNode;if(null===t){var d=new e.Mesh(r.name||"mesh"+r.mesh,n.babylonScene);r.babylonNode=d,t=d}return null!==t&&(T(t,r),t.updateCache(!0),r.babylonNode=t),t},E=function(e,n,t,o){var a=e.gltf.nodes[n],i=null;if(o=!(e.importOnlyMeshes&&!o)||(-1!==e.importMeshesNames.indexOf(a.name)||0===e.importMeshesNames.length),o&&null!==(i=A(e,a))&&(i.id=r(n),i.parent=t),a.children)for(var s=0;s<a.children.length;s++)E(e,a.children[s],i,o)},h=function(e){var n=e.gltf.scene||0,r=e.gltf.scenes;if(r)for(var t=r[n].nodes,o=0;o<t.length;o++)E(e,t[o],null);else for(var o=0;o<e.gltf.nodes.length;o++)E(e,o,null)},p=function(e){h(e),o(e);for(var n=0;n<e.babylonScene.skeletons.length;n++){var r=e.babylonScene.skeletons[n];e.babylonScene.beginAnimation(r,0,Number.MAX_VALUE,!0,1)}if(e.gltf.textures)for(var n=0;n<e.gltf.textures.length;n++){var t=e.gltf.textures[n];t.blobURL&&URL.revokeObjectURL(t.blobURL)}},y=(function(){function e(e){this._arrayBuffer=e,this._dataView=new DataView(e),this._byteOffset=0}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 n=new Uint8Array(this._arrayBuffer,this._byteOffset,e);return this._byteOffset+=e,n},e.prototype.skipBytes=function(e){this._byteOffset+=e}}(),(function(){function r(){}return r.RegisterExtension=function(n){if(r.Extensions[n.name])return void e.Tools.Error('Tool with the same name "'+n.name+'" already exists');r.Extensions[n.name]=n},r.LoadMaterial=function(n,r){var t=n.gltf.materials[r];return t?(t.babylonMaterial=new e.PBRMaterial(t.name||"mat"+r,n.babylonScene),t.babylonMaterial.sideOrientation=e.Material.CounterClockWiseSideOrientation,t.babylonMaterial.useScalarInLinearSpace=!0,t):null},r.LoadCoreMaterialAsync=function(e,n,t,o){var a=r.LoadMaterial(e,n);if(!a)return void t();var i=!1,s=!1,l=function(){i&&s&&t()};r._loadMetallicRoughnessMaterialPropertiesAsync(e,a,(function(){i=!0,l()}),o),r.LoadCommonMaterialPropertiesAsync(e,a,(function(){s=!0,l()}),o)},r._loadMetallicRoughnessMaterialPropertiesAsync=function(n,t,o,a){t.babylonMaterial.metallic=1,t.babylonMaterial.roughness=1;var i=t.pbrMetallicRoughness;if(!i)return void o();if(t.babylonMaterial.albedoColor=i.baseColorFactor?e.Color3.FromArray(i.baseColorFactor):new e.Color3(1,1,1),t.babylonMaterial.metallic=void 0===i.metallicFactor?1:i.metallicFactor,t.babylonMaterial.roughness=void 0===i.roughnessFactor?1:i.roughnessFactor,!i.baseColorTexture&&!i.metallicRoughnessTexture)return void o();var s=function(){i.baseColorTexture&&!t.babylonMaterial.albedoTexture||i.metallicRoughnessTexture&&!t.babylonMaterial.metallicTexture||o()};i.baseColorTexture&&r.LoadTextureAsync(n,i.baseColorTexture,(function(e){t.babylonMaterial.albedoTexture=e,r.LoadAlphaProperties(n,t),s()}),(function(){e.Tools.Error("Failed to load base color texture"),a()})),i.metallicRoughnessTexture&&r.LoadTextureAsync(n,i.metallicRoughnessTexture,(function(e){t.babylonMaterial.metallicTexture=e,t.babylonMaterial.useMetallnessFromMetallicTextureBlue=!0,t.babylonMaterial.useRoughnessFromMetallicTextureGreen=!0,t.babylonMaterial.useRoughnessFromMetallicTextureAlpha=!1,s()}),(function(){e.Tools.Error("Failed to load metallic roughness texture"),a()}))},r.LoadCommonMaterialPropertiesAsync=function(n,t,o,a){if(t.babylonMaterial.useEmissiveAsIllumination=!(!t.emissiveFactor&&!t.emissiveTexture),t.babylonMaterial.emissiveColor=t.emissiveFactor?e.Color3.FromArray(t.emissiveFactor):new e.Color3(0,0,0),t.doubleSided&&(t.babylonMaterial.backFaceCulling=!1,t.babylonMaterial.twoSidedLighting=!0),!t.normalTexture&&!t.occlusionTexture&&!t.emissiveTexture)return void o();var i=function(){t.normalTexture&&!t.babylonMaterial.bumpTexture||t.occlusionTexture&&!t.babylonMaterial.ambientTexture||t.emissiveTexture&&!t.babylonMaterial.emissiveTexture||o()};t.normalTexture&&r.LoadTextureAsync(n,t.normalTexture,(function(e){t.babylonMaterial.bumpTexture=e,void 0!==t.normalTexture.scale&&(t.babylonMaterial.bumpTexture.level=t.normalTexture.scale),i()}),(function(){e.Tools.Error("Failed to load normal texture"),a()})),t.occlusionTexture&&r.LoadTextureAsync(n,t.occlusionTexture,(function(e){t.babylonMaterial.ambientTexture=e,t.babylonMaterial.useAmbientInGrayScale=!0,void 0!==t.occlusionTexture.strength&&(t.babylonMaterial.ambientTextureStrength=t.occlusionTexture.strength),i()}),(function(){e.Tools.Error("Failed to load occlusion texture"),a()})),t.emissiveTexture&&r.LoadTextureAsync(n,t.emissiveTexture,(function(e){t.babylonMaterial.emissiveTexture=e,i()}),(function(){e.Tools.Error("Failed to load emissive texture"),a()}))},r.LoadAlphaProperties=function(n,r){switch(r.alphaMode||"OPAQUE"){case"OPAQUE":break;case"MASK":r.babylonMaterial.albedoTexture.hasAlpha=!0,r.babylonMaterial.useAlphaFromAlbedoTexture=!1,r.babylonMaterial.alphaMode=e.Engine.ALPHA_DISABLE;break;case"BLEND":r.babylonMaterial.albedoTexture.hasAlpha=!0,r.babylonMaterial.useAlphaFromAlbedoTexture=!0,r.babylonMaterial.alphaMode=e.Engine.ALPHA_COMBINE;break;default:e.Tools.Error("Invalid alpha mode '"+r.alphaMode+"'")}},r.LoadTextureAsync=function(e,t,o,a){var i=e.gltf.textures[t.index],s=t.texCoord||0;if(!i||void 0===i.source)return void a();if(i.babylonTextures){var l=i.babylonTextures[s];if(!l)for(var u=0;u<i.babylonTextures.length;u++)if(l=i.babylonTextures[u]){l=l.clone(),l.coordinatesIndex=s;break}return void o(l)}var f=e.gltf.images[i.source],c=e.rootUrl+f.uri;if(i.blobURL)c=i.blobURL;else if(void 0===f.uri){var d=e.gltf.bufferViews[f.bufferView],m=n.GLTFUtils.GetBufferFromBufferView(e,d,0,d.byteLength,n.EComponentType.UNSIGNED_BYTE);i.blobURL=URL.createObjectURL(new Blob([m],{type:f.mimeType})),c=i.blobURL}else if(n.GLTFUtils.IsBase64(f.uri)){var T=new Uint8Array(n.GLTFUtils.DecodeBase64(f.uri));i.blobURL=URL.createObjectURL(new Blob([T],{type:f.mimeType})),c=i.blobURL}r._createTextureAsync(e,i,s,c,o,a)},r._createTextureAsync=function(r,t,o,a,i,s){var l=void 0===t.sampler?{}:r.gltf.samplers[t.sampler],u=l.minFilter===n.ETextureMinFilter.NEAREST||l.minFilter===n.ETextureMinFilter.LINEAR,f=n.GLTFUtils.GetTextureFilterMode(l.minFilter),c=new e.Texture(a,r.babylonScene,u,!1,f,function(){i(c)},s);c.coordinatesIndex=o,c.wrapU=n.GLTFUtils.GetWrapMode(l.wrapS),c.wrapV=n.GLTFUtils.GetWrapMode(l.wrapT),c.name=t.name,t.babylonTextures=t.babylonTextures||[],t.babylonTextures[o]=c},r.prototype.importMeshAsync=function(n,t,o,a,i,s){t.useRightHandedSystem=!0;var l=r._createRuntime(t,o,a,!0);if(!l)return void s();""===n?l.importMeshesNames=[]:"string"==typeof n?l.importMeshesNames=[n]:!n||n instanceof Array?(l.importMeshesNames=[],e.Tools.Warn("Argument meshesNames must be of type string or string[]")):l.importMeshesNames=[n],h(l);for(var u=[],f=[],c=0;c<l.gltf.nodes.length;c++){var d=l.gltf.nodes[c];d.babylonNode instanceof e.AbstractMesh&&u.push(d.babylonNode)}for(var c=0;c<l.gltf.skins.length;c++){var m=l.gltf.skins[c];m.babylonSkeleton instanceof e.Skeleton&&f.push(m.babylonSkeleton)}r._loadBuffersAsync(l,(function(){r._loadMaterialsAsync(l,(function(){p(l),i(u,null,f)}),s)}),s)},r.prototype.loadAsync=function(e,n,t,o,a){e.useRightHandedSystem=!0;var i=r._createRuntime(e,n,t,!1);if(!i)return void a();h(i),r._loadBuffersAsync(i,(function(){r._loadMaterialsAsync(i,(function(){p(i),o()}),a)}),a)},r._loadBuffersAsync=function(e,n,r){var t=this;if(0==e.gltf.buffers.length)return void n();var o=0;e.gltf.buffers.forEach((function(a,i){t._loadBufferAsync(e,i,(function(){++o===e.gltf.buffers.length&&n()}),r)}))},r._loadBufferAsync=function(r,t,o,a){var i=r.gltf.buffers[t];if(void 0===i.uri)o();else if(n.GLTFUtils.IsBase64(i.uri)){var s=n.GLTFUtils.DecodeBase64(i.uri);setTimeout((function(){i.loadedBufferView=new Uint8Array(s),o()}))}else e.Tools.LoadFile(r.rootUrl+i.uri,(function(e){i.loadedBufferView=new Uint8Array(e),o()}),null,null,!0,a)},r._loadMaterialsAsync=function(e,r,t){var o=e.gltf.materials;if(!o||0===o.length)return void r();for(var a=0,i=0;i<o.length;i++)n.GLTFLoaderExtension.LoadMaterialAsync(e,i,(function(){++a===o.length&&r()}),t)},r._createRuntime=function(r,t,o,a){var i,s={gltf:t.json,babylonScene:r,rootUrl:o,importOnlyMeshes:a},l=s.gltf.buffers;if(l.length>0&&void 0===l[0].uri&&(i=l[0]),t.bin){if(!i)return e.Tools.Error("Unexpected BIN chunk"),null;if(i.byteLength!=t.bin.byteLength)return e.Tools.Error("Binary buffer length from JSON does not match chunk length"),null;i.loadedBufferView=t.bin}return n.GLTFLoaderExtension.PostCreateRuntime(s),s},r})());y.Extensions={},n.GLTFLoader=y,e.GLTFFileLoader.GLTFLoaderV2=new y})(e.GLTF2||(e.GLTF2={}))})(BABYLON||(BABYLON={}));var BABYLON;!(function(e){!(function(n){var r=(function(){function r(){}return r.IsBase64=function(e){return!(e.length<5)&&"data:"===e.substr(0,5)},r.DecodeBase64=function(e){for(var n=atob(e.split(",")[1]),r=n.length,t=new Uint8Array(new ArrayBuffer(r)),o=0;o<r;o++)t[o]=n.charCodeAt(o);return t.buffer},r.GetWrapMode=function(r){switch(r){case n.ETextureWrapMode.CLAMP_TO_EDGE:return e.Texture.CLAMP_ADDRESSMODE;case n.ETextureWrapMode.MIRRORED_REPEAT:return e.Texture.MIRROR_ADDRESSMODE;case n.ETextureWrapMode.REPEAT:default:return e.Texture.WRAP_ADDRESSMODE}},r.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}},r.GetTextureFilterMode=function(r){switch(r){case n.ETextureMinFilter.LINEAR:case n.ETextureMinFilter.LINEAR_MIPMAP_NEAREST:case n.ETextureMinFilter.LINEAR_MIPMAP_LINEAR:return e.Texture.TRILINEAR_SAMPLINGMODE;case n.ETextureMinFilter.NEAREST:case n.ETextureMinFilter.NEAREST_MIPMAP_NEAREST:return e.Texture.NEAREST_SAMPLINGMODE;default:return e.Texture.BILINEAR_SAMPLINGMODE}},r.GetBufferFromBufferView=function(e,r,t,o,a){t+=r.byteOffset||0;var i=e.gltf.buffers[r.buffer].loadedBufferView;if(t+o>i.byteLength)throw new Error("Buffer access is out of range");var s=i.buffer;switch(t+=i.byteOffset,a){case n.EComponentType.BYTE:return new Int8Array(s,t,o);case n.EComponentType.UNSIGNED_BYTE:return new Uint8Array(s,t,o);case n.EComponentType.SHORT:return new Int16Array(s,t,o);case n.EComponentType.UNSIGNED_SHORT:return new Uint16Array(s,t,o);case n.EComponentType.UNSIGNED_INT:return new Uint32Array(s,t,o);default:return new Float32Array(s,t,o)}},r.GetBufferFromAccessor=function(e,n){var t=e.gltf.bufferViews[n.bufferView],o=n.byteOffset||0,a=n.count*r.GetByteStrideFromType(n);return r.GetBufferFromBufferView(e,t,o,a,n.componentType)},r.DecodeBufferToText=function(e){for(var n="",r=e.byteLength,t=0;t<r;++t)n+=String.fromCharCode(e[t]);return n},r.GetDefaultMaterial=function(n){if(!n.defaultMaterial){var r=new e.PBRMaterial("gltf_default",n.babylonScene);r.sideOrientation=e.Material.CounterClockWiseSideOrientation,r.metallic=1,r.roughness=1,n.defaultMaterial=r}return n.defaultMaterial},r})();n.GLTFUtils=r})(e.GLTF2||(e.GLTF2={}))})(BABYLON||(BABYLON={}));var BABYLON;!(function(e){!(function(e){var n=(function(){function n(e){this.enabled=!0,this._name=e}return Object.defineProperty(n.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),n.prototype.postCreateRuntime=function(e){},n.prototype.loadMaterialAsync=function(e,n,r,t){return!1},n.PostCreateRuntime=function(n){for(var r in e.GLTFLoader.Extensions){var t=e.GLTFLoader.Extensions[r];t.enabled&&t.postCreateRuntime(n)}},n.LoadMaterialAsync=function(n,r,t,o){for(var a in e.GLTFLoader.Extensions){var i=e.GLTFLoader.Extensions[a];if(i.enabled&&i.loadMaterialAsync(n,r,t,o))return}e.GLTFLoader.LoadCoreMaterialAsync(n,r,t,o)},n})();e.GLTFLoaderExtension=n})(e.GLTF2||(e.GLTF2={}))})(BABYLON||(BABYLON={}));var BABYLON;!(function(e){!(function(n){var r=(function(r){function t(){return r.call(this,"KHR_materials_pbrSpecularGlossiness")||this}return __extends(t,r),t.prototype.loadMaterialAsync=function(r,t,o,a){var i=n.GLTFLoader.LoadMaterial(r,t);if(!i||!i.extensions)return!1;var s=i.extensions[this.name];if(!s)return!1;i.babylonMaterial.albedoColor=s.diffuseFactor?e.Color3.FromArray(s.diffuseFactor):new e.Color3(1,1,1),i.babylonMaterial.reflectivityColor=s.specularFactor?e.Color3.FromArray(s.specularFactor):new e.Color3(1,1,1),i.babylonMaterial.microSurface=void 0===s.glossinessFactor?1:s.glossinessFactor;var l=!1,u=function(){s.diffuseTexture&&!i.babylonMaterial.albedoTexture||s.specularGlossinessTexture&&!i.babylonMaterial.reflectivityTexture||!l||o()};return s.diffuseTexture&&n.GLTFLoader.LoadTextureAsync(r,s.diffuseTexture,(function(e){i.babylonMaterial.albedoTexture=e,n.GLTFLoader.LoadAlphaProperties(r,i),u()}),(function(){e.Tools.Warn("Failed to load diffuse texture"),a()})),s.specularGlossinessTexture&&n.GLTFLoader.LoadTextureAsync(r,s.specularGlossinessTexture,(function(e){i.babylonMaterial.reflectivityTexture=e,i.babylonMaterial.useMicroSurfaceFromReflectivityMapAlpha=!0,u()}),(function(){e.Tools.Warn("Failed to load metallic roughness texture"),a()})),n.GLTFLoader.LoadCommonMaterialPropertiesAsync(r,i,(function(){l=!0,u()}),a),!0},t})(n.GLTFLoaderExtension);n.GLTFMaterialsPbrSpecularGlossinessExtension=r,n.GLTFLoader.RegisterExtension(new r)})(e.GLTF2||(e.GLTF2={}))})(BABYLON||(BABYLON={}));