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()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.majorn.minor?1:e.minor=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;n0&&(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;f0&&-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;ii.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;t0&&(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=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;A0&&-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;s0&&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;oi.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