babylon.glTF1FileLoader.min.js 37 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,i,a){var s=n._parse(t),u=this._getLoader(s);if(!u)return void a();u.importMeshAsync(e,r,s,o,i,a)},n.prototype.loadAsync=function(e,r,t,o,i){var a=n._parse(r),s=this._getLoader(a);return s?s.loadAsync(e,a,t,o,i):void i()},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||{},i=n._parseVersion(o.version);if(!i)return e.Tools.Error("Invalid version"),null;var a=n._parseVersion(o.minVersion);if(a&&n._compareVersion(a,t)>0)return e.Tools.Error("Incompatible version"),null;var s={1:n.CreateGLTFLoaderV1,2:n.CreateGLTFLoaderV2},u=s[i.major](this);return null===u?(e.Tools.Error("Unsupported version"),null):u},n._parseBinary=function(t){var o={Magic:1179937895},i=new r(t),a=i.readUint32();if(a!==o.Magic)return e.Tools.Error("Unexpected magic: "+a),null;var s=i.readUint32();switch(s){case 1:return n._parseV1(i);case 2:return n._parseV2(i)}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 i,a=r.readUint32(),s=r.readUint32();switch(s){case t.JSON:i=JSON.parse(n._decodeBufferToText(r.readUint8Array(a)));break;default:return e.Tools.Error("Unexpected content format: "+s),null}var u=r.getLength()-r.getPosition();return{json:i,bin:r.readUint8Array(u)}},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 i=r.readUint32(),a=r.readUint32();if(a!==t.JSON)return e.Tools.Error("First chunk format is not JSON"),null;for(var s=JSON.parse(n._decodeBufferToText(r.readUint8Array(i))),u=null;r.getPosition()<r.getLength();)switch(i=r.readUint32(),a=r.readUint32()){case t.JSON:return e.Tools.Error("Unexpected JSON chunk"),null;case t.BIN:u=r.readUint8Array(i);break;default:r.skipBytes(i)}return{json:s,bin:u}},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.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&&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"],i=["world","view","projection","worldView","worldViewProjection","mBones"],a=["translation","rotation","scale"],s=["position","rotationQuaternion","scaling"],u=function(e,n){for(var r in e){var t=e[r];n.buffers[r]=t,n.buffersCount++}},l=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],i=null,u=0;u<o.channels.length;u++){var l=o.channels[u],f=o.samplers[l.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]),E=n.GLTFUtils.GetBufferFromAccessor(r,r.accessors[d]),T=l.target.id,A=r.scene.getNodeByID(T);if(null===A&&(A=r.scene.getNodeByName(T)),null!==A){var p=A instanceof e.Bone,h=l.target.path,L=a.indexOf(h);-1!==L&&(h=s[L]);var y=e.Animation.ANIMATIONTYPE_MATRIX;p||("rotationQuaternion"===h?(y=e.Animation.ANIMATIONTYPE_QUATERNION,A.rotationQuaternion=new e.Quaternion):y=e.Animation.ANIMATIONTYPE_VECTOR3);var N=null,g=[],O=0,v=!1;p&&i&&i.getKeys().length===m.length&&(N=i,v=!0),v||(N=new e.Animation(t,p?"_matrix":h,1,y,e.Animation.ANIMATIONLOOPMODE_CYCLE));for(var _=0;_<m.length;_++){var S=null;if("rotationQuaternion"===h?(S=e.Quaternion.FromArray([E[O],E[O+1],E[O+2],E[O+3]]),O+=4):(S=e.Vector3.FromArray([E[O],E[O+1],E[O+2]]),O+=3),p){var F=A,M=e.Vector3.Zero(),x=new e.Quaternion,B=e.Vector3.Zero(),R=F.getBaseMatrix();v&&(R=i.getKeys()[_].value),R.decompose(B,x,M),"position"===h?M=S:"rotationQuaternion"===h?x=S:B=S,S=e.Matrix.Compose(B,x,M)}v?i.getKeys()[_].value=S:g.push({frame:m[_],value:S})}v||(N.setKeys(g),A.animations.push(N)),i=N,r.scene.stopAnimation(A),r.scene.beginAnimation(A,0,m[m.length-1],!0,1)}else e.Tools.Warn("Creating animation named "+t+". But cannot find node named "+T+" to attach to")}}},E=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]),i=e.Vector3.FromArray(n.translation||[0,0,0]);r=e.Matrix.Compose(t,o,i)}else r=e.Matrix.FromArray(n.matrix);return r},T=function(n,r,t,o){for(var i=0;i<o.bones.length;i++)if(o.bones[i].name===t)return o.bones[i];var a=n.nodes;for(var s in a){var u=a[s];if(u.jointName)for(var l=u.children,i=0;i<l.length;i++){var f=n.nodes[l[i]];if(f.jointName&&f.jointName===t){var c=E(u),d=new e.Bone(u.name,o,T(n,r,u.jointName,o),c);return d.id=s,d}}}return null},A=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 i=t.node.children[o];if(i===n)return t.bone}return null},p=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},h=function(e,n){for(var r=0;r<e.jointNames.length;r++)if(e.jointNames[r]===n)return!0;return!1},L=function(n,r,t,o){for(var i in n.nodes){var a=n.nodes[i],s=i;if(a.jointName&&!h(t,a.jointName)){var u=E(a),l=new e.Bone(a.name,r,null,u);l.id=s,o.push({bone:l,node:a,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 T=null,A=0;A<o.length;A++)if(o[A].id===d[m]){T=o[A];break}T&&(T.bone._parent=c.bone,c.bone.children.push(T.bone))}},y=function(r,t,o,i,a){if(i||(i=new e.Skeleton(t.name,"",r.scene)),!t.babylonSkeleton)return i;var s=r.accessors[t.inverseBindMatrices],u=(n.GLTFUtils.GetBufferFromAccessor(r,s),e.Matrix.FromArray(t.bindShapeMatrix),[]),l=[];L(r,i,t,u),i.bones=[];for(var f=0;f<t.jointNames.length;f++){var c=p(r,t.jointNames[f]),d=c.node;if(d){var a=c.id,m=r.scene.getBoneByID(a);if(m)i.bones.push(m);else{for(var h=!1,y=null,N=0;N<f;N++){var g=p(r,t.jointNames[N]).node;if(g){var O=g.children;if(O){h=!1;for(var v=0;v<O.length;v++)if(O[v]===a){y=T(r,t,t.jointNames[N],i),h=!0;break}if(h)break}}else e.Tools.Warn("Joint named "+t.jointNames[N]+" does not exist when looking for parent")}var _=E(d);!y&&u.length>0&&(y=A(u,a))&&-1===l.indexOf(y)&&l.push(y);new e.Bone(d.jointName,i,y,_).id=a}}else e.Tools.Warn("Joint named "+t.jointNames[f]+" does not exist")}var S=i.bones;i.bones=[];for(var f=0;f<t.jointNames.length;f++){var c=p(r,t.jointNames[f]);if(c)for(var N=0;N<S.length;N++)if(S[N].id===c.id){i.bones.push(S[N]);break}}i.prepare();for(var f=0;f<l.length;f++)i.bones.push(l[f]);return i},N=function(r,t,o,i,a){if(a||(a=new e.Mesh(t.name,r.scene),a.id=i),!t.babylonNode)return a;var s=new e.MultiMaterial("multimat"+i,r.scene);a.material||(a.material=s);for(var u=new e.VertexData,l=new e.Geometry(i,r.scene,u,!1,a),f=[],d=[],m=[],E=[],T=0;T<o.length;T++){var A=o[T],p=r.meshes[A];if(p)for(var h=0;h<p.primitives.length;h++){var L=new e.VertexData,y=p.primitives[h];y.mode;var N=y.attributes,g=null,O=null;for(var v in N)if(g=r.accessors[N[v]],O=n.GLTFUtils.GetBufferFromAccessor(r,g),"NORMAL"===v)L.normals=new Float32Array(O.length),L.normals.set(O);else if("POSITION"===v){if(e.GLTFFileLoader.HomogeneousCoordinates){L.positions=new Float32Array(O.length-O.length/4);for(var _=0;_<O.length;_+=4)L.positions[_]=O[_],L.positions[_+1]=O[_+1],L.positions[_+2]=O[_+2]}else L.positions=new Float32Array(O.length),L.positions.set(O);d.push(L.positions.length)}else if(-1!==v.indexOf("TEXCOORD_")){var S=Number(v.split("_")[1]),F=e.VertexBuffer.UVKind+(0===S?"":S+1),M=new Float32Array(O.length);M.set(O),c(M),L.set(M,F)}else"JOINT"===v?(L.matricesIndices=new Float32Array(O.length),L.matricesIndices.set(O)):"WEIGHT"===v?(L.matricesWeights=new Float32Array(O.length),L.matricesWeights.set(O)):"COLOR"===v&&(L.colors=new Float32Array(O.length),L.colors.set(O));if(g=r.accessors[y.indices])O=n.GLTFUtils.GetBufferFromAccessor(r,g),L.indices=new Int32Array(O.length),L.indices.set(O),E.push(L.indices.length);else{for(var x=[],_=0;_<L.positions.length/3;_++)x.push(_);L.indices=new Int32Array(x),E.push(L.indices.length)}u.merge(L),L=void 0;var B=r.scene.getMaterialByID(y.material);s.subMaterials.push(null===B?n.GLTFUtils.GetDefaultMaterial(r.scene):B),f.push(0===f.length?0:f[f.length-1]+d[d.length-2]),m.push(0===m.length?0:m[m.length-1]+E[E.length-2])}}l.setAllVerticesData(u,!1),a.computeWorldMatrix(!0),a.subMeshes=[];for(var R=0,T=0;T<o.length;T++){var A=o[T],p=r.meshes[A];if(p)for(var h=0;h<p.primitives.length;h++){p.primitives[h].mode;new e.SubMesh(R,f[R],d[R],m[R],E[R],a,a,!0);R++}}return a},g=function(e,n,r,t){e.position&&(e.position=n),(e.rotationQuaternion||e.rotation)&&(e.rotationQuaternion=r),e.scaling&&(e.scaling=t)},O=function(n,r,t){if(r.matrix){var o=new e.Vector3(0,0,0),i=new e.Quaternion,a=new e.Vector3(0,0,0);e.Matrix.FromArray(r.matrix).decompose(a,i,o),g(n,o,i,a)}else g(n,e.Vector3.FromArray(r.translation),e.Quaternion.FromArray(r.rotation),e.Vector3.FromArray(r.scale));n.computeWorldMatrix(!0)},v=function(n,r,t,o){var i=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 a=n.skins[r.skin],s=N(n,r,r.meshes,t,r.babylonNode);s.skeleton=n.scene.getLastSkeletonByID(r.skin),null===s.skeleton&&(s.skeleton=y(n,a,0,a.babylonSkeleton,r.skin),a.babylonSkeleton||(a.babylonSkeleton=s.skeleton)),i=s}}else if(r.meshes){var s=N(n,r,r.mesh?[r.mesh]:r.meshes,t,r.babylonNode);i=s}else if(!r.light||r.babylonNode||n.importOnlyMeshes){if(r.camera&&!r.babylonNode&&!n.importOnlyMeshes){var u=n.cameras[r.camera];if(u)if("orthographic"===u.type){var l=(u[u.type],new e.FreeCamera(r.camera,e.Vector3.Zero(),n.scene));l.name=r.name,l.mode=e.Camera.ORTHOGRAPHIC_CAMERA,l.attachControl(n.scene.getEngine().getRenderingCanvas()),i=l}else if("perspective"===u.type){var f=u[u.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),i=c}}}else{var d=n.lights[r.light];if(d)if("ambient"===d.type){var m=d[d.type],E=new e.HemisphericLight(r.light,e.Vector3.Zero(),n.scene);E.name=r.name,m.color&&(E.diffuse=e.Color3.FromArray(m.color)),i=E}else if("directional"===d.type){var T=d[d.type],A=new e.DirectionalLight(r.light,e.Vector3.Zero(),n.scene);A.name=r.name,T.color&&(A.diffuse=e.Color3.FromArray(T.color)),i=A}else if("point"===d.type){var p=d[d.type],h=new e.PointLight(r.light,e.Vector3.Zero(),n.scene);h.name=r.name,p.color&&(h.diffuse=e.Color3.FromArray(p.color)),i=h}else if("spot"===d.type){var L=d[d.type],v=new e.SpotLight(r.light,e.Vector3.Zero(),e.Vector3.Zero(),0,0,n.scene);v.name=r.name,L.color&&(v.diffuse=e.Color3.FromArray(L.color)),L.fallOfAngle&&(v.angle=L.fallOfAngle),L.fallOffExponent&&(v.exponent=L.fallOffExponent),i=v}}if(!r.jointName){if(r.babylonNode)return r.babylonNode;if(null===i){var _=new e.Mesh(r.name,n.scene);r.babylonNode=_,i=_}}if(null!==i){if(r.matrix&&i instanceof e.Mesh)O(i,r);else{var S=r.translation||[0,0,0],F=r.rotation||[0,0,0,1],M=r.scale||[1,1,1];g(i,e.Vector3.FromArray(S),e.Quaternion.FromArray(F),e.Vector3.FromArray(M))}i.updateCache(!0),r.babylonNode=i}return i},_=function(e,n,r,t){var o=e.nodes[n],i=null;if(t=!(e.importOnlyMeshes&&!t)||(-1!==e.importMeshesNames.indexOf(o.name)||0===e.importMeshesNames.length),!o.jointName&&t&&null!==(i=v(e,o,n))&&(i.id=n,i.parent=r),o.children)for(var a=0;a<o.children.length;a++)_(e,o.children[a],i,t)},S=function(e){var n=e.currentScene;if(n)for(var r=0;r<n.nodes.length;r++)_(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++)_(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)}},F=function(e,r,t,o,i,a,s){var u=a.values||i.parameters;for(var l in t){var f=t[l],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,l,o.getEffect())}}else n.GLTFUtils.SetMatrix(r.scene,e,f,l,o.getEffect());else{var m=u[i.uniforms[l]];if(!m)continue;if(c===n.EParameterType.SAMPLER_2D){var E=r.textures[a.values?m:f.value].babylonTexture;if(null===E||void 0===E)continue;o.getEffect().setTexture(l,E)}else n.GLTFUtils.SetUniform(o.getEffect(),l,m,c)}}s(o)},M=function(e,r,t,o,i){var a=o.values||t.parameters,s=t.uniforms;for(var u in i){var l=i[u],f=l.type,c=a[s[u]];if(void 0===c&&(c=l.value),c){var d=function(e){return function(n){l.value&&(r.setTexture(e,n),delete i[e])}};f===n.EParameterType.SAMPLER_2D?n.GLTFLoaderExtension.LoadTextureAsync(e,o.values?c:l.value,d(u),(function(){return d(null)})):l.value&&n.GLTFUtils.SetUniform(r,u,o.values?c:l.value,f)&&delete i[u]}}},x=function(n,r,t){return function(o,i){e.Tools.Error("Cannot compile program named "+n.name+". Error: "+i+". Default material will be applied"),r.dispose(!0),t()}},B=function(e,n,r,t,o,i){return function(a){M(e,n,r,t,o),n.onBind=function(a){F(a,e,o,n,r,t,i)}}},R=function(e,n,r){for(var t in n.uniforms){var a=n.uniforms[t],s=n.parameters[a];if(e.currentIdentifier===t&&s.semantic&&!s.source&&!s.node){var u=o.indexOf(s.semantic);if(-1!==u)return delete r[t],i[u]}}return e.currentIdentifier},I=function(e){for(var r in e.materials)n.GLTFLoaderExtension.LoadMaterialAsync(e,r,(function(e){}),(function(){}))},b=(function(){function a(){}return a.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&&u(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&&l(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},a.LoadBufferAsync=function(r,t,o,i,a){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))}),a,null,!0,i)},a.LoadTextureBufferAsync=function(r,t,o,i){var a=r.textures[t];if(!a||!a.source)return void i();if(a.babylonTexture)return void o(null);var s=r.images[a.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,i)},a.CreateTextureAsync=function(r,t,o,i,a){var s=r.textures[t];if(s.babylonTexture)return void i(s.babylonTexture);var u=r.samplers[s.sampler],l=u.minFilter===n.ETextureFilterType.NEAREST_MIPMAP_NEAREST||u.minFilter===n.ETextureFilterType.NEAREST_MIPMAP_LINEAR||u.minFilter===n.ETextureFilterType.LINEAR_MIPMAP_NEAREST||u.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)},E=new e.Texture(d,r.scene,!l,!0,f,m,m);E.wrapU=n.GLTFUtils.GetWrapMode(u.wrapS),E.wrapV=n.GLTFUtils.GetWrapMode(u.wrapT),E.name=t,s.babylonTexture=E,i(E)},a.LoadShaderStringAsync=function(r,t,o,i){var a=r.shaders[t];if(n.GLTFUtils.IsBase64(a.uri)){o(atob(a.uri.split(",")[1]))}else e.Tools.LoadFile(r.rootUrl+a.uri,o,null,null,!1,i)},a.LoadMaterialAsync=function(a,s,u,l){var f=a.materials[s],c=a.techniques[f.technique];if(!c){var m=new e.StandardMaterial(s,a.scene);return m.diffuseColor=new e.Color3(.5,.5,.5),m.sideOrientation=e.Material.CounterClockWiseSideOrientation,void u(m)}var E=a.programs[c.program],T=c.states,A=e.Effect.ShadersStore[E.vertexShader+"VertexShader"],p=e.Effect.ShadersStore[E.fragmentShader+"PixelShader"],h="",L="",y=new t(A),N=new t(p),g={},O=[],v=[],_=[];for(var S in c.uniforms){var F=c.uniforms[S],M=c.parameters[F];if(g[S]=M,!M.semantic||M.node||M.source)M.type===n.EParameterType.SAMPLER_2D?_.push(S):O.push(S);else{var I=o.indexOf(M.semantic);-1!==I?(O.push(i[I]),delete g[S]):O.push(S)}}for(var b in c.attributes){var C=c.attributes[b],P=c.parameters[C];P.semantic&&v.push(d(P))}for(;!y.isEnd()&&y.getNextToken();){var w=y.currentToken;if(w===r.IDENTIFIER){var V=!1;for(var b in c.attributes){var C=c.attributes[b],P=c.parameters[C];if(y.currentIdentifier===b&&P.semantic){h+=d(P),V=!0;break}}V||(h+=R(y,c,g))}else h+=y.currentString}for(;!N.isEnd()&&N.getNextToken();){var w=N.currentToken;w===r.IDENTIFIER?L+=R(N,c,g):L+=N.currentString}var G={vertex:E.vertexShader+s,fragment:E.fragmentShader+s},U={attributes:v,uniforms:O,samplers:_,needAlphaBlending:T&&T.enable&&-1!==T.enable.indexOf(3042)};e.Effect.ShadersStore[E.vertexShader+s+"VertexShader"]=h,e.Effect.ShadersStore[E.fragmentShader+s+"PixelShader"]=L;var D=new e.ShaderMaterial(s,a.scene,G,U);if(D.onError=x(E,D,l),D.onCompiled=B(a,D,c,f,g,u),D.sideOrientation=e.Material.CounterClockWiseSideOrientation,T&&T.functions){var k=T.functions;k.cullFace&&k.cullFace[0]!==n.ECullingType.BACK&&(D.backFaceCulling=!1);var H=k.blendFuncSeparate;H&&(H[0]===n.EBlendingFunction.SRC_ALPHA&&H[1]===n.EBlendingFunction.ONE_MINUS_SRC_ALPHA&&H[2]===n.EBlendingFunction.ONE&&H[3]===n.EBlendingFunction.ONE?D.alphaMode=e.Engine.ALPHA_COMBINE:H[0]===n.EBlendingFunction.ONE&&H[1]===n.EBlendingFunction.ONE&&H[2]===n.EBlendingFunction.ZERO&&H[3]===n.EBlendingFunction.ONE?D.alphaMode=e.Engine.ALPHA_ONEONE:H[0]===n.EBlendingFunction.SRC_ALPHA&&H[1]===n.EBlendingFunction.ONE&&H[2]===n.EBlendingFunction.ZERO&&H[3]===n.EBlendingFunction.ONE?D.alphaMode=e.Engine.ALPHA_ADD:H[0]===n.EBlendingFunction.ZERO&&H[1]===n.EBlendingFunction.ONE_MINUS_SRC_COLOR&&H[2]===n.EBlendingFunction.ONE&&H[3]===n.EBlendingFunction.ONE?D.alphaMode=e.Engine.ALPHA_SUBTRACT:H[0]===n.EBlendingFunction.DST_COLOR&&H[1]===n.EBlendingFunction.ZERO&&H[2]===n.EBlendingFunction.ONE&&H[3]===n.EBlendingFunction.ONE?D.alphaMode=e.Engine.ALPHA_MULTIPLY:H[0]===n.EBlendingFunction.SRC_ALPHA&&H[1]===n.EBlendingFunction.ONE_MINUS_SRC_COLOR&&H[2]===n.EBlendingFunction.ONE&&H[3]===n.EBlendingFunction.ONE&&(D.alphaMode=e.Engine.ALPHA_MAXIMIZED))}},a})();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,i,a,s,u){var l=this;t.useRightHandedSystem=!0;n.GLTFLoaderExtension.LoadRuntimeAsync(t,o,i,(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],l._createNodes(n);var t=[],o=[];for(var i in n.nodes){var s=n.nodes[i];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)}l._loadBuffersAsync(n,(function(){l._loadShadersAsync(n,(function(){I(n),S(n),!e.GLTFFileLoader.IncrementalLoading&&a&&a(t,null,o)}))}),u),e.GLTFFileLoader.IncrementalLoading&&a&&a(t,null,o)}),s);return!0},r.prototype.loadAsync=function(r,t,o,i,a){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),S(r),e.GLTFFileLoader.IncrementalLoading||i()}))})),e.GLTFFileLoader.IncrementalLoading&&i()}),a)}),a)},r.prototype._loadShadersAsync=function(r,t){var o=!1,i=function(o,i){n.GLTFLoaderExtension.LoadShaderStringAsync(r,o,(function(a){r.loadedShaderCount++,a&&(e.Effect.ShadersStore[o+(i.type===n.EShaderType.VERTEX?"VertexShader":"PixelShader")]=a),r.loadedShaderCount===r.shaderscount&&t()}),(function(){e.Tools.Error("Error when loading shader program named "+o+" located at "+i.uri)}))};for(var a in r.shaders){o=!0;var s=r.shaders[a];s?i.bind(this,a,s)():e.Tools.Error("No shader named: "+a)}o||t()},r.prototype._loadBuffersAsync=function(r,t,o){var i=!1,a=function(o,i){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: "+i.byteLength),r.loadedBufferViews[o]=n),r.loadedBufferCount===r.buffersCount&&t()}),(function(){e.Tools.Error("Error when loading buffer named "+o+" located at "+i.uri)}))};for(var s in r.buffers){i=!0;var u=r.buffers[s];u?a.bind(this,s,u)():e.Tools.Error("No buffer named: "+s)}i||t()},r.prototype._createNodes=function(e){var n=e.currentScene;if(n)for(var r=0;r<n.nodes.length;r++)_(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++)_(e,n.nodes[r],null)}},r})();C.Extensions={},n.GLTFLoader=C,e.GLTFFileLoader.CreateGLTFLoaderV1=function(){return 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,i,a){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:a.setMatrix2x2(i,e.Matrix.GetAsMatrix2x2(s));break;case n.EParameterType.FLOAT_MAT3:a.setMatrix3x3(i,e.Matrix.GetAsMatrix3x3(s));break;case n.EParameterType.FLOAT_MAT4:a.setMatrix(i,s)}},r.SetUniform=function(r,t,o,i){switch(i){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,i){var t=r.byteOffset+t,a=e.loadedBufferViews[r.buffer];if(t+o>a.byteLength)throw new Error("Buffer access is out of range");var s=a.buffer;switch(t+=a.byteOffset,i){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}),n.prototype.loadRuntimeAsync=function(e,n,r,t,o){
  2. 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,i,a){n.ApplyExtensions((function(e){return e.loadRuntimeAsync(r,t,o,i,a)}),(function(){setTimeout((function(){i(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,i,a){n.ApplyExtensions((function(e){return e.loadBufferAsync(r,t,o,i,a)}),(function(){e.GLTFLoaderBase.LoadBufferAsync(r,t,o,i,a)}))},n.LoadTextureAsync=function(e,r,t,o){n.LoadTextureBufferAsync(e,r,(function(i){return n.CreateTextureAsync(e,r,i,t,o)}),o)},n.LoadShaderStringAsync=function(r,t,o,i){n.ApplyExtensions((function(e){return e.loadShaderStringAsync(r,t,o,i)}),(function(){e.GLTFLoaderBase.LoadShaderStringAsync(r,t,o,i)}))},n.LoadMaterialAsync=function(r,t,o,i){n.ApplyExtensions((function(e){return e.loadMaterialAsync(r,t,o,i)}),(function(){e.GLTFLoaderBase.LoadMaterialAsync(r,t,o,i)}))},n.LoadTextureBufferAsync=function(r,t,o,i){n.ApplyExtensions((function(e){return e.loadTextureBufferAsync(r,t,o,i)}),(function(){e.GLTFLoaderBase.LoadTextureBufferAsync(r,t,o,i)}))},n.CreateTextureAsync=function(r,t,o,i,a){n.ApplyExtensions((function(e){return e.createTextureAsync(r,t,o,i,a)}),(function(){e.GLTFLoaderBase.CreateTextureAsync(r,t,o,i,a)}))},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,i){var a=r.json.extensionsUsed;return!(!a||-1===a.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 i=n.textures[r],a=n.images[i.source];if(!(a.extensions&&this.name in a.extensions))return!1;var s=a.extensions[this.name],u=n.bufferViews[s.bufferView];return t(e.GLTFUtils.GetBufferFromBufferView(n,u,0,u.byteLength,e.EComponentType.UNSIGNED_BYTE)),!0},r.prototype.loadShaderStringAsync=function(n,r,t,o){var i=n.shaders[r];if(!(i.extensions&&this.name in i.extensions))return!1;var a=i.extensions[this.name],s=n.bufferViews[a.bufferView],u=e.GLTFUtils.GetBufferFromBufferView(n,s,0,s.byteLength,e.EComponentType.UNSIGNED_BYTE);return setTimeout((function(){var n=e.GLTFUtils.DecodeBufferToText(u);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 i=o.lights;if(i)for(var a in i){var s=i[a];switch(s.type){case"ambient":var u=new e.HemisphericLight(s.name,new e.Vector3(0,1,0),n.scene),l=s.ambient;u.diffuse=e.Color3.FromArray(l.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 E=s.spot,T=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);T.diffuse=e.Color3.FromArray(E.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 i=n.materials[r];if(!i||!i.extensions)return!1;var a=i.extensions[this.name];if(!a)return!1;var s=new e.StandardMaterial(r,n.scene);return s.sideOrientation=e.Material.CounterClockWiseSideOrientation,"CONSTANT"===a.technique&&(s.disableLighting=!0),s.backFaceCulling=void 0!==a.doubleSided&&!a.doubleSided,s.alpha=void 0===a.values.transparency?1:a.values.transparency,s.specularPower=void 0===a.values.shininess?0:a.values.shininess,"string"==typeof a.values.ambient?this._loadTexture(n,a.values.ambient,s,"ambientTexture",o):s.ambientColor=e.Color3.FromArray(a.values.ambient||[0,0,0]),"string"==typeof a.values.diffuse?this._loadTexture(n,a.values.diffuse,s,"diffuseTexture",o):s.diffuseColor=e.Color3.FromArray(a.values.diffuse||[0,0,0]),"string"==typeof a.values.emission?this._loadTexture(n,a.values.emission,s,"emissiveTexture",o):s.emissiveColor=e.Color3.FromArray(a.values.emission||[0,0,0]),"string"==typeof a.values.specular?this._loadTexture(n,a.values.specular,s,"specularTexture",o):s.specularColor=e.Color3.FromArray(a.values.specular||[0,0,0]),!0},t.prototype._loadTexture=function(e,r,t,o,i){n.GLTFLoaderBase.LoadTextureBufferAsync(e,r,(function(a){n.GLTFLoaderBase.CreateTextureAsync(e,r,a,(function(e){return t[o]=e}),i)}),i)},t})(n.GLTFLoaderExtension);n.GLTFMaterialsCommonExtension=r,n.GLTFLoader.RegisterExtension(new r)})(e.GLTF1||(e.GLTF1={}))})(BABYLON||(BABYLON={}));