!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("babylonjs")):"function"==typeof define&&define.amd?define("babylonjs-loaders",["babylonjs"],r):"object"==typeof exports?exports["babylonjs-loaders"]=r(require("babylonjs")):e.LOADERS=r(e.BABYLON)}("undefined"!=typeof self?self:"undefined"!=typeof global?global:this,function(e){return function(e){var r={};function n(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=r,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,r){if(1&r&&(e=n(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(n.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)n.d(t,o,function(r){return e[r]}.bind(null,o));return t},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},n.p="",n(n.s=15)}([function(r,n){r.exports=e},,function(e,r,n){"use strict";n.r(r),n.d(r,"GLTFLoaderCoordinateSystemMode",function(){return t}),n.d(r,"GLTFLoaderAnimationStartMode",function(){return o}),n.d(r,"GLTFLoaderState",function(){return i}),n.d(r,"GLTFFileLoader",function(){return s});var t,o,i,a=n(0);!function(e){e[e.AUTO=0]="AUTO",e[e.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED"}(t||(t={})),function(e){e[e.NONE=0]="NONE",e[e.FIRST=1]="FIRST",e[e.ALL=2]="ALL"}(o||(o={})),function(e){e[e.LOADING=0]="LOADING",e[e.READY=1]="READY",e[e.COMPLETE=2]="COMPLETE"}(i||(i={}));var s=function(){function e(){this.onParsedObservable=new a.Observable,this.coordinateSystemMode=t.AUTO,this.animationStartMode=o.FIRST,this.compileMaterials=!1,this.useClipPlane=!1,this.compileShadowGenerators=!1,this.transparencyAsCoverage=!1,this.preprocessUrlAsync=function(e){return Promise.resolve(e)},this.onMeshLoadedObservable=new a.Observable,this.onTextureLoadedObservable=new a.Observable,this.onMaterialLoadedObservable=new a.Observable,this.onCameraLoadedObservable=new a.Observable,this.onCompleteObservable=new a.Observable,this.onErrorObservable=new a.Observable,this.onDisposeObservable=new a.Observable,this.onExtensionLoadedObservable=new a.Observable,this.validate=!1,this.onValidatedObservable=new a.Observable,this._loader=null,this.name="gltf",this.extensions={".gltf":{isBinary:!1},".glb":{isBinary:!0}},this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled}return Object.defineProperty(e.prototype,"onParsed",{set:function(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),this._onParsedObserver=this.onParsedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onMeshLoaded",{set:function(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onTextureLoaded",{set:function(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onMaterialLoaded",{set:function(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onCameraLoaded",{set:function(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onComplete",{set:function(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onError",{set:function(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onDispose",{set:function(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onExtensionLoaded",{set:function(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"loggingEnabled",{get:function(){return this._loggingEnabled},set:function(e){this._loggingEnabled!==e&&(this._loggingEnabled=e,this._loggingEnabled?this._log=this._logEnabled:this._log=this._logDisabled)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"capturePerformanceCounters",{get:function(){return this._capturePerformanceCounters},set:function(e){this._capturePerformanceCounters!==e&&(this._capturePerformanceCounters=e,this._capturePerformanceCounters?(this._startPerformanceCounter=this._startPerformanceCounterEnabled,this._endPerformanceCounter=this._endPerformanceCounterEnabled):(this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onValidated",{set:function(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this._loader&&(this._loader.dispose(),this._loader=null),this._clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()},e.prototype._clear=function(){this.preprocessUrlAsync=function(e){return Promise.resolve(e)},this.onMeshLoadedObservable.clear(),this.onTextureLoadedObservable.clear(),this.onMaterialLoadedObservable.clear(),this.onCameraLoadedObservable.clear(),this.onCompleteObservable.clear(),this.onExtensionLoadedObservable.clear()},e.prototype.importMeshAsync=function(e,r,n,t,o,i){var a=this;return this._parseAsync(r,n,t,i).then(function(n){return a._log("Loading "+(i||"")),a._loader=a._getLoader(n),a._loader.importMeshAsync(e,r,n,t,o,i)})},e.prototype.loadAsync=function(e,r,n,t,o){var i=this;return this._parseAsync(e,r,n,o).then(function(r){return i._log("Loading "+(o||"")),i._loader=i._getLoader(r),i._loader.loadAsync(e,r,n,t,o)})},e.prototype.loadAssetContainerAsync=function(e,r,n,t,o){var i=this;return this._parseAsync(e,r,n,o).then(function(r){i._log("Loading "+(o||"")),i._loader=i._getLoader(r);var s=[];i.onMaterialLoadedObservable.add(function(e){s.push(e)});var u=[];return i.onTextureLoadedObservable.add(function(e){u.push(e)}),i._loader.importMeshAsync(null,e,r,n,t,o).then(function(r){var n=new a.AssetContainer(e);return Array.prototype.push.apply(n.meshes,r.meshes),Array.prototype.push.apply(n.particleSystems,r.particleSystems),Array.prototype.push.apply(n.skeletons,r.skeletons),Array.prototype.push.apply(n.animationGroups,r.animationGroups),Array.prototype.push.apply(n.materials,s),Array.prototype.push.apply(n.textures,u),n.removeAllFromScene(),n})})},e.prototype.canDirectLoad=function(e){return-1!==e.indexOf("scene")&&-1!==e.indexOf("node")},e.prototype.createPlugin=function(){return new e},Object.defineProperty(e.prototype,"loaderState",{get:function(){return this._loader?this._loader.state:null},enumerable:!0,configurable:!0}),e.prototype.whenCompleteAsync=function(){var e=this;return new Promise(function(r,n){e.onCompleteObservable.addOnce(function(){r()}),e.onErrorObservable.addOnce(function(e){n(e)})})},e.prototype._parseAsync=function(e,r,n,t){var o=this;return Promise.resolve().then(function(){var i=r instanceof ArrayBuffer?o._unpackBinary(r):{json:r,bin:null};return o._validateAsync(e,i.json,n,t).then(function(){o._startPerformanceCounter("Parse JSON"),o._log("JSON length: "+i.json.length);var e={json:JSON.parse(i.json),bin:i.bin};return o._endPerformanceCounter("Parse JSON"),o.onParsedObservable.notifyObservers(e),o.onParsedObservable.clear(),e})})},e.prototype._validateAsync=function(e,r,n,t){var o=this;if(!this.validate||"undefined"==typeof GLTFValidator)return Promise.resolve();this._startPerformanceCounter("Validate JSON");var i={externalResourceFunction:function(r){return o.preprocessUrlAsync(n+r).then(function(r){return e._loadFileAsync(r,!0,!0)}).then(function(e){return new Uint8Array(e)})}};return t&&"data:"!==t.substr(0,5)&&(i.uri="file:"===n?t:""+n+t),GLTFValidator.validateString(r,i).then(function(e){o._endPerformanceCounter("Validate JSON"),o.onValidatedObservable.notifyObservers(e),o.onValidatedObservable.clear()},function(e){o._endPerformanceCounter("Validate JSON"),a.Tools.Warn("Failed to validate: "+e),o.onValidatedObservable.clear()})},e.prototype._getLoader=function(r){var n=r.json.asset||{};this._log("Asset version: "+n.version),n.minVersion&&this._log("Asset minimum version: "+n.minVersion),n.generator&&this._log("Asset generator: "+n.generator);var t=e._parseVersion(n.version);if(!t)throw new Error("Invalid version: "+n.version);if(void 0!==n.minVersion){var o=e._parseVersion(n.minVersion);if(!o)throw new Error("Invalid minimum version: "+n.minVersion);if(e._compareVersion(o,{major:2,minor:0})>0)throw new Error("Incompatible minimum version: "+n.minVersion)}var i={1:e._CreateGLTF1Loader,2:e._CreateGLTF2Loader}[t.major];if(!i)throw new Error("Unsupported version: "+n.version);return i(this)},e.prototype._unpackBinary=function(e){this._startPerformanceCounter("Unpack binary"),this._log("Binary length: "+e.byteLength);var r=new u(e),n=r.readUint32();if(1179937895!==n)throw new Error("Unexpected magic: "+n);var t,o=r.readUint32();switch(this.loggingEnabled&&this._log("Binary version: "+o),o){case 1:t=this._unpackBinaryV1(r);break;case 2:t=this._unpackBinaryV2(r);break;default:throw new Error("Unsupported version: "+o)}return this._endPerformanceCounter("Unpack binary"),t},e.prototype._unpackBinaryV1=function(r){var n=r.readUint32();if(n!=r.getLength())throw new Error("Length in header does not match actual data length: "+n+" != "+r.getLength());var t,o=r.readUint32(),i=r.readUint32();switch(i){case 0:t=e._decodeBufferToText(r.readUint8Array(o));break;default:throw new Error("Unexpected content format: "+i)}var a=r.getLength()-r.getPosition();return{json:t,bin:r.readUint8Array(a)}},e.prototype._unpackBinaryV2=function(r){var n=1313821514,t=5130562,o=r.readUint32();if(o!==r.getLength())throw new Error("Length in header does not match actual data length: "+o+" != "+r.getLength());var i=r.readUint32();if(r.readUint32()!==n)throw new Error("First chunk format is not JSON");for(var a=e._decodeBufferToText(r.readUint8Array(i)),s=null;r.getPosition()r.major?1:e.majorr.minor?1:e.minora.byteLength)throw new Error("Buffer access is out of range");var s=a.buffer;switch(n+=a.byteOffset,o){case i.BYTE:return new Int8Array(s,n,t);case i.UNSIGNED_BYTE:return new Uint8Array(s,n,t);case i.SHORT:return new Int16Array(s,n,t);case i.UNSIGNED_SHORT:return new Uint16Array(s,n,t);default:return new Float32Array(s,n,t)}},e.GetBufferFromAccessor=function(r,n){var t=r.bufferViews[n.bufferView],o=n.count*e.GetByteStrideFromType(n);return e.GetBufferFromBufferView(r,t,n.byteOffset,o,n.componentType)},e.DecodeBufferToText=function(e){for(var r="",n=e.byteLength,t=0;t=this._maxPos},e}(),b=["MODEL","VIEW","PROJECTION","MODELVIEW","MODELVIEWPROJECTION","JOINTMATRIX"],y=["world","view","projection","worldView","worldViewProjection","mBones"],_=["translation","rotation","scale"],O=["position","rotationQuaternion","scaling"],E=function(e,r,n){for(var t in e){var o=e[t];n[r][t]=o}},g=function(e){if(e)for(var r=0;r0&&(f=S(i,o))&&-1===a.indexOf(f)&&a.push(f),new m.Bone(u.jointName||"",t,f,b).id=o}}else m.Tools.Warn("Joint named "+r.jointNames[s]+" does not exist")}}var y=t.bones;t.bones=[];for(s=0;s1?(i=new m.MultiMaterial("multimat"+t,e.scene)).subMaterials=a:i=new m.StandardMaterial("multimat"+t,e.scene),1===a.length&&(i=a[0]),o.material||(o.material=i),new m.Geometry(t,e.scene,s,!1,o),o.computeWorldMatrix(!0),o.subMeshes=[];var R=0;for(d=0;d0&&-1===e.importMeshesNames.indexOf(r.name||""))return null;if(r.skin){if(r.meshes){var i=e.skins[r.skin];(a=R(e,r,r.meshes,n,r.babylonNode)).skeleton=e.scene.getLastSkeletonByID(r.skin),null===a.skeleton&&(a.skeleton=C(e,i,0,i.babylonSkeleton,r.skin),i.babylonSkeleton||(i.babylonSkeleton=a.skeleton)),o=a}}else if(r.meshes){var a;o=a=R(e,r,r.mesh?[r.mesh]:r.meshes,n,r.babylonNode)}else if(!r.light||r.babylonNode||e.importOnlyMeshes){if(r.camera&&!r.babylonNode&&!e.importOnlyMeshes){var s=e.cameras[r.camera];if(s)if("orthographic"===s.type){var u=new m.FreeCamera(r.camera,m.Vector3.Zero(),e.scene,!1);u.name=r.name||"",u.mode=m.Camera.ORTHOGRAPHIC_CAMERA,u.attachControl(e.scene.getEngine().getRenderingCanvas()),o=u}else if("perspective"===s.type){var l=s[s.type],c=new m.FreeCamera(r.camera,m.Vector3.Zero(),e.scene,!1);c.name=r.name||"",c.attachControl(e.scene.getEngine().getRenderingCanvas()),l.aspectRatio||(l.aspectRatio=e.scene.getEngine().getRenderWidth()/e.scene.getEngine().getRenderHeight()),l.znear&&l.zfar&&(c.maxZ=l.zfar,c.minZ=l.znear),o=c}}}else{var f=e.lights[r.light];if(f)if("ambient"===f.type){var d=f[f.type],h=new m.HemisphericLight(r.light,m.Vector3.Zero(),e.scene);h.name=r.name||"",d.color&&(h.diffuse=m.Color3.FromArray(d.color)),o=h}else if("directional"===f.type){var p=f[f.type],A=new m.DirectionalLight(r.light,m.Vector3.Zero(),e.scene);A.name=r.name||"",p.color&&(A.diffuse=m.Color3.FromArray(p.color)),o=A}else if("point"===f.type){var v=f[f.type],b=new m.PointLight(r.light,m.Vector3.Zero(),e.scene);b.name=r.name||"",v.color&&(b.diffuse=m.Color3.FromArray(v.color)),o=b}else if("spot"===f.type){var y=f[f.type],_=new m.SpotLight(r.light,m.Vector3.Zero(),m.Vector3.Zero(),0,0,e.scene);_.name=r.name||"",y.color&&(_.diffuse=m.Color3.FromArray(y.color)),y.fallOfAngle&&(_.angle=y.fallOfAngle),y.fallOffExponent&&(_.exponent=y.fallOffExponent),o=_}}if(!r.jointName){if(r.babylonNode)return r.babylonNode;if(null===o){var O=new m.Mesh(r.name||"",e.scene);r.babylonNode=O,o=O}}if(null!==o){if(r.matrix&&o instanceof m.Mesh)!function(e,r,n){if(r.matrix){var t=new m.Vector3(0,0,0),o=new m.Quaternion,i=new m.Vector3(0,0,0);m.Matrix.FromArray(r.matrix).decompose(i,o,t),I(e,t,o,i)}else r.translation&&r.rotation&&r.scale&&I(e,m.Vector3.FromArray(r.translation),m.Quaternion.FromArray(r.rotation),m.Vector3.FromArray(r.scale));e.computeWorldMatrix(!0)}(o,r);else{var E=r.translation||[0,0,0],g=r.rotation||[0,0,0,1],T=r.scale||[1,1,1];I(o,m.Vector3.FromArray(E),m.Quaternion.FromArray(g),m.Vector3.FromArray(T))}o.updateCache(!0),r.babylonNode=o}return o},P=function(e,r,n,t){void 0===t&&(t=!1);var o=e.nodes[r],i=null;if(t=!(e.importOnlyMeshes&&!t&&e.importMeshesNames)||(-1!==e.importMeshesNames.indexOf(o.name||"")||0===e.importMeshesNames.length),!o.jointName&&t&&null!==(i=w(e,o,r))&&(i.id=r,i.parent=n),o.children)for(var a=0;a