!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("babylonjs")):"function"==typeof define&&define.amd?define("babylonjs-loaders",["babylonjs"],t):"object"==typeof exports?exports["babylonjs-loaders"]=t(require("babylonjs")):e.LOADERS=t(e.BABYLON)}("undefined"!=typeof self?self:"undefined"!=typeof global?global:this,function(e){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=13)}({0:function(t,r){t.exports=e},13:function(e,t,r){"use strict";r.r(t),function(e){var o=r(7);r.d(t,"MTLFileLoader",function(){return o.MTLFileLoader}),r.d(t,"OBJFileLoader",function(){return o.OBJFileLoader});var n=void 0!==e?e:"undefined"!=typeof window?window:void 0;if(void 0!==n)for(var s in o)n.BABYLON[s]=o[s]}.call(this,r(3))},3:function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},7:function(e,t,r){"use strict";r.r(t);var o=r(0),n=function(){function e(){this.materials=[]}return e.prototype.parseMTL=function(t,r,n){if(!(r instanceof ArrayBuffer)){for(var s,i=r.split("\n"),a=/\s+/,l=null,u=0;u=0?p.substring(0,f):p;c=c.toLowerCase();var d=f>=0?p.substring(f+1).trim():"";"newmtl"===c?(l&&this.materials.push(l),l=new o.StandardMaterial(d,t)):"kd"===c&&l?(s=d.split(a,3).map(parseFloat),l.diffuseColor=o.Color3.FromArray(s)):"ka"===c&&l?(s=d.split(a,3).map(parseFloat),l.ambientColor=o.Color3.FromArray(s)):"ks"===c&&l?(s=d.split(a,3).map(parseFloat),l.specularColor=o.Color3.FromArray(s)):"ke"===c&&l?(s=d.split(a,3).map(parseFloat),l.emissiveColor=o.Color3.FromArray(s)):"ns"===c&&l?l.specularPower=parseFloat(d):"d"===c&&l?l.alpha=parseFloat(d):"map_ka"===c&&l?l.ambientTexture=e._getTexture(n,d,t):"map_kd"===c&&l?l.diffuseTexture=e._getTexture(n,d,t):"map_ks"===c&&l?l.specularTexture=e._getTexture(n,d,t):"map_ns"===c||("map_bump"===c&&l?l.bumpTexture=e._getTexture(n,d,t):"map_d"===c&&l&&(l.opacityTexture=e._getTexture(n,d,t)))}}l&&this.materials.push(l)}},e._getTexture=function(e,t,r){if(!t)return null;var n=e;if("file:"===e){var s=t.lastIndexOf("\\");-1===s&&(s=t.lastIndexOf("/")),n+=s>-1?t.substr(s+1):t}else n+=t;return new o.Texture(n,r)},e}(),s=function(){function e(t){this.name="obj",this.extensions=".obj",this.obj=/^o/,this.group=/^g/,this.mtllib=/^mtllib /,this.usemtl=/^usemtl /,this.smooth=/^s /,this.vertexPattern=/v( +[\d|\.|\+|\-|e|E]+){3,7}/,this.normalPattern=/vn( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,this.uvPattern=/vt( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,this.facePattern1=/f\s+(([\d]{1,}[\s]?){3,})+/,this.facePattern2=/f\s+((([\d]{1,}\/[\d]{1,}[\s]?){3,})+)/,this.facePattern3=/f\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){3,})+)/,this.facePattern4=/f\s+((([\d]{1,}\/\/[\d]{1,}[\s]?){3,})+)/,this.facePattern5=/f\s+(((-[\d]{1,}\/-[\d]{1,}\/-[\d]{1,}[\s]?){3,})+)/,this._meshLoadOptions=t||e.currentMeshLoadOptions}return Object.defineProperty(e,"currentMeshLoadOptions",{get:function(){return{ComputeNormals:e.COMPUTE_NORMALS,ImportVertexColors:e.IMPORT_VERTEX_COLORS,InvertY:e.INVERT_Y,MaterialLoadingFailsSilently:e.MATERIAL_LOADING_FAILS_SILENTLY,OptimizeWithUV:e.OPTIMIZE_WITH_UV,SkipMaterials:e.SKIP_MATERIALS}},enumerable:!0,configurable:!0}),e.prototype._loadMTL=function(e,t,r,n){var s=o.Tools.BaseUrl+t+e;o.Tools.LoadFile(s,r,void 0,void 0,!1,function(e,t){n(s,t)})},e.prototype.createPlugin=function(){return new e(e.currentMeshLoadOptions)},e.prototype.canDirectLoad=function(e){return!1},e.prototype.importMeshAsync=function(e,t,r,o,n,s){return this._parseSolid(e,t,r,o).then(function(e){return{meshes:e,particleSystems:[],skeletons:[],animationGroups:[]}})},e.prototype.loadAsync=function(e,t,r,o,n){return this.importMeshAsync(null,e,t,r,o).then(function(){})},e.prototype.loadAssetContainerAsync=function(e,t,r,n,s){return this.importMeshAsync(null,e,t,r).then(function(t){var r=new o.AssetContainer(e);return t.meshes.forEach(function(e){return r.meshes.push(e)}),r.removeAllFromScene(),r})},e.prototype._parseSolid=function(e,t,r,s){for(var i,a=this,l=[],u=[],p=[],f=[],c=[],d=[],h=[],m=[],v=[],g=[],L=[],x=0,y=!1,_=[],O=[],b=[],I=[],T=[],M="",F="",A=new n,P=1,S=!0,w=new o.Color4(.5,.5,.5,1),C=function(e,t,r,o,n,s,i){var l;-1==(l=a._meshLoadOptions.OptimizeWithUV?function(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[],uv:[]});var r=e[t[0]].normals.indexOf(t[1]);return 1!=r&&t[2]==e[t[0]].uv[r]?e[t[0]].idx[r]:-1}(L,[e,r,t]):function(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[]});var r=e[t[0]].normals.indexOf(t[1]);return-1===r?-1:e[t[0]].idx[r]}(L,[e,r]))?(d.push(h.length),h.push(o),m.push(n),g.push(s),void 0!==i&&v.push(i),L[e].normals.push(r),L[e].idx.push(x++),a._meshLoadOptions.OptimizeWithUV&&L[e].uv.push(t)):d.push(l)},V=function(){for(var e=0;e0&&(i=c[c.length-1],V(),d.reverse(),i.indices=d.slice(),i.positions=_.slice(),i.normals=b.slice(),i.uvs=I.slice(),!0===a._meshLoadOptions.ImportVertexColors&&(i.colors=O.slice()),d=[],_=[],O=[],b=[],I=[])},Y=r.split("\n"),W=0;W=7?f.push(new o.Color4(parseFloat(D[4]),parseFloat(D[5]),parseFloat(D[6]),7===D.length||void 0===D[7]?1:parseFloat(D[7]))):f.push(w));else if(null!==(D=this.normalPattern.exec(z)))u.push(new o.Vector3(parseFloat(D[1]),parseFloat(D[2]),parseFloat(D[3])));else if(null!==(D=this.uvPattern.exec(z)))p.push(new o.Vector2(parseFloat(D[1]),parseFloat(D[2])));else if(null!==(D=this.facePattern3.exec(z)))R(D[1].trim().split(" "),1);else if(null!==(D=this.facePattern4.exec(z)))U(D[1].trim().split(" "),1);else if(null!==(D=this.facePattern5.exec(z)))k(D[1].trim().split(" "),1);else if(null!==(D=this.facePattern2.exec(z)))N(D[1].trim().split(" "),1);else if(null!==(D=this.facePattern1.exec(z)))j(D[1].trim().split(" "),1);else if(this.group.test(z)||this.obj.test(z)){var G={name:z.substring(2).trim(),indices:void 0,positions:void 0,normals:void 0,uvs:void 0,colors:void 0,materialName:""};B(),c.push(G),y=!0,S=!0,P=1}else if(this.usemtl.test(z)){if(M=z.substring(7).trim(),!S){B();G={name:"_mm"+P.toString(),indices:void 0,positions:void 0,normals:void 0,uvs:void 0,colors:void 0,materialName:M};P++,c.push(G)}y&&S&&(c[c.length-1].materialName=M,S=!1)}else this.mtllib.test(z)?F=z.substring(7).trim():this.smooth.test(z)||console.log("Unhandled expression at line : "+z)}y&&(i=c[c.length-1],d.reverse(),V(),i.indices=d,i.positions=_,i.normals=b,i.uvs=I,!0===this._meshLoadOptions.ImportVertexColors&&(i.colors=O)),y||(d.reverse(),V(),c.push({name:o.Geometry.RandomId(),indices:d,positions:_,colors:O,normals:b,uvs:I,materialName:M}));for(var Z=[],J=new Array,q=0;q-1;)p.push(l),u=l+1;if(-1==l&&0==p.length)A.materials[i].dispose();else for(var f=0;f