From b110ca9416f70d4c030f7e37faa385fc0c5fbc29 Mon Sep 17 00:00:00 2001 From: David Cormack Date: Tue, 24 Jul 2018 08:10:55 +0100 Subject: [PATCH] Defaulted crossOrigin to anonymous. --- examples/js/loaders/BOMLoader.js | 1 + examples/js/loaders/BOMLoader.min.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/js/loaders/BOMLoader.js b/examples/js/loaders/BOMLoader.js index 1130286..2d73938 100644 --- a/examples/js/loaders/BOMLoader.js +++ b/examples/js/loaders/BOMLoader.js @@ -8,6 +8,7 @@ THREE.BOMLoader = function ( manager ) { this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + this.crossOrigin = 'anonymous'; }; diff --git a/examples/js/loaders/BOMLoader.min.js b/examples/js/loaders/BOMLoader.min.js index c05d4b8..3615037 100644 --- a/examples/js/loaders/BOMLoader.min.js +++ b/examples/js/loaders/BOMLoader.min.js @@ -1 +1 @@ -THREE.BOMLoader=function(e){this.manager=void 0!==e?e:THREE.DefaultLoadingManager},THREE.BOMLoader.prototype={constructor:THREE.BOMLoader,load:function(e,t,s,r){var a=this;this.defaultTexturePath=e.split("/").slice(0,-1).join("/")+"/";var i=THREE.FileLoader?new THREE.FileLoader(this.manager):new THREE.XHRLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.load(e,function(e){t(a.parse(e))},s,r)},setPath:function(e){this.path=e},setTexturePath:function(e){this.texturePath=e},setCrossOrigin:function(e){this.crossOrigin=e},setDebug:function(e){this.debug=e},setPerfTimer:function(e){this.performanceTimer=e},setResponseType:function(e){this.responseType=e},parse:function(e){function t(){var e=h.getUint8(g);return g+=Uint8Array.BYTES_PER_ELEMENT,e}function s(){var e=h.getUint16(g,!0);return g+=Uint16Array.BYTES_PER_ELEMENT,e}function r(){var e=h.getUint32(g,!0);return g+=Uint32Array.BYTES_PER_ELEMENT,e}function a(){var e=h.getFloat32(g,!0);return g+=Float32Array.BYTES_PER_ELEMENT,e}function i(e){var t=String.fromCharCode.apply(null,e>0?new Uint8Array(h.buffer,g,e):new Uint8Array);return g+=Uint8Array.BYTES_PER_ELEMENT*e,t}function o(e){if(0===g%Uint16Array.BYTES_PER_ELEMENT){var t=new Uint16Array(h.buffer,g,e);return g+=Uint16Array.BYTES_PER_ELEMENT*e,t}for(var t=new Uint16Array(e),s=0;e>s;++s,g+=Uint16Array.BYTES_PER_ELEMENT)t[s]=h.getUint16(g,!0);return t}function n(e){if(0===g%Float32Array.BYTES_PER_ELEMENT){var t=new Float32Array(h.buffer,g,e);return g+=Float32Array.BYTES_PER_ELEMENT*e,t}for(var t=new Float32Array(e),s=0;e>s;++s,g+=Float32Array.BYTES_PER_ELEMENT)t[s]=h.getFloat32(g,!0);return t}function E(e){if("string"!=typeof e||""===e)return"";if(/^https?:\/\//i.test(e))return e;var t=new URL((S.texturePath||S.path||S.defaultTexturePath||"")+e,location.href.substring(0,location.href.lastIndexOf("/")+1));return""+t}function l(e){e=E(e);var t;if(altspace&&altspace.inClient)t=new THREE.Texture({src:e});else{var s=THREE.Loader.Handlers.get(e);null===s&&(s=new THREE.TextureLoader(S.manager)),s.setCrossOrigin(S.crossOrigin),t=s.load(e)}return t.side=THREE.FrontSide,t.wrapS=t.wrapT=THREE.RepeatWrapping,t}this.performanceTimer&&console.time("BOMLoader");var u={NONE:0,FRONT:1,BACK:2,ALL:3},A={NONE:1,MATERIAL_LIBRARY:2},T={NONE:1,NAME:2},M={NONE:1,NAME:2,INDEX:4,SMOOTHING:8,MATERIAL:16},f={NONE:1,GEOMETRY:2},p={NONE:1,NORMAL:2,UV1:4,UV2:8},c={NONE:1,ILLUMINATION_MODEL:2,SPECULAR_EXPONENT:4,OPTICAL_DENSITY:8,DISSOLVE:16,TRANSMISSION_FILTER:32,AMBIENT_REFLECTANCE:64,DIFFUSE_REFLECTANCE:128,SPECULAR_REFLECTANCE:256,EMISSIVE_REFLECTANCE:512,AMBIENT_MAP:1024,DIFFUSE_MAP:2048,SPECULAR_MAP:4096,EMISSIVE_MAP:8192,DISSOLVE_MAP:16384,BUMP_MAP:32768,DISPLACEMENT_MAP:65536,FACE_CULLING:1<<17,LIGHT_MAP:1<<18},d={NONE:1,PATH:2,SCALE:4,OFFSET:8,BUMP_SCALE:16,DISPLACEMENT_SCALE:32,LIGHTMAP_INTENSITY:64},h=new DataView(e),g=0,L="array"===this.responseType,R=L?[]:new THREE.Group,S=this,N=i(3);this.debug&&console.log("File Signature",N);var m=t();this.debug&&console.log("Version",m);var P=s();this.debug&&console.log("FileAttributes:","\n","Material Library",x&A.MATERIAL_LIBRARY?!0:!1);var I=[];if(P&A.MATERIAL_LIBRARY){var b=s();this.debug&&console.log("Material Count",b);for(var v=0;b>v;++v){var O=r();this.debug&&console.log("MaterialAttributes:","\n","Illumination Model",O&c.ILLUMINATION_MODEL?!0:!1,"\n","Specular Exponent",O&c.SPECULAR_EXPONENT?!0:!1,"\n","Optical Density",O&c.OPTICAL_DENSITY?!0:!1,"\n","Dissolve",O&c.DISSOLVE?!0:!1,"\n","Transmission Filter",O&c.TRANSMISSION_FILTER?!0:!1,"\n","Ambient Reflectance",O&c.AMBIENT_REFLECTANCE?!0:!1,"\n","Diffuse Reflectance",O&c.DIFFUSE_REFLECTANCE?!0:!1,"\n","Specular Reflectance",O&c.SPECULAR_REFLECTANCE?!0:!1,"\n","Ambient Map",O&c.AMBIENT_MAP?!0:!1,"\n","Diffuse Map",O&c.DIFFUSE_MAP?!0:!1,"\n","Specular Map",O&c.SPECULAR_MAP?!0:!1,"\n","Dissolve Map",O&c.DISSOLVE_MAP?!0:!1,"\n","Bump Map",O&c.BUMP_MAP?!0:!1,"\n","Displacement Map",O&c.DISPLACEMENT_MAP?!0:!1,"\n","Face Culling",O&c.FACE_CULLING?!0:!1,"\n","Light Map",O&c.LIGHT_MAP?!0:!1);var _={};if(_.name=i(s()),this.debug&&console.log("Material Name",_.name),O&c.ILLUMINATION_MODEL&&t(),O&c.SPECULAR_EXPONENT&&(_.shininess=a(),this.debug&&console.log("Specular Exponent",_.shininess)),O&c.OPTICAL_DENSITY&&a(),O&c.DISSOLVE&&(_.opacity=a(),_.transparent=!0,this.debug&&console.log("Dissolve",_.opacity)),O&c.TRANSMISSION_FILTER&&(a(),a(),a()),O&c.AMBIENT_REFLECTANCE&&(a(),a(),a()),O&c.DIFFUSE_REFLECTANCE&&(_.color=new THREE.Color(a(),a(),a()),this.debug&&console.log("Diffuse Reflectance",_.color)),O&c.SPECULAR_REFLECTANCE&&(_.specular=new THREE.Color(a(),a(),a()),this.debug&&console.log("Specular Reflectance",_.specular)),O&c.EMISSIVE_REFLECTANCE&&(_.emissive=new THREE.Color(a(),a(),a()),this.debug&&console.log("Emissive Reflectance",_.emissive)),O&c.AMBIENT_MAP){var C=s();C&d.PATH&&i(s()),C&d.SCALE&&(a(),a()),C&d.OFFSET&&(a(),a())}if(O&c.DIFFUSE_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),_.map=F,this.debug&&C&d.PATH&&console.log("Diffuse Map",F)}if(O&c.SPECULAR_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),_.specularMap=F}if(O&c.EMISSIVE_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),_.emissiveMap=F}if(O&c.DISSOLVE_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),_.alphaMap=F,_.transparent=!0}if(O&c.BUMP_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),C&d.BUMP_SCALE&&(_.bumpScale=a()),_.bumpMap=F}if(O&c.DISPLACEMENT_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),C&d.DISPLACEMENT_SCALE&&(_.displacementScale=a()),_.displacementMap=F}if(O&c.FACE_CULLING){var y=t();y===u.ALL?_.visible=!1:_.side=y===u.FRONT?THREE.BackSide:y===u.BACK?THREE.FrontSide:THREE.DoubleSide}if(O&c.LIGHT_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),C&d.LIGHTMAP_INTENSITY&&(_.lightMapIntensity=a()),_.lightMap=F}var H=new THREE.MeshPhongMaterial(_);I.push(H)}}var U=s();this.debug&&console.log("Asset Count",U);for(var B=0;U>B;++B){var D=s();this.debug&&console.log("AssetAttributes:","\n","Name",D&T.NAME?!0:!1);var w=R;if(L&&(w=new THREE.Group,R.push(w)),D&T.NAME){var G=i(s());this.debug&&console.log("Asset Name",G),L||(w.name=G)}var Y=s();this.debug&&console.log("Object Count",Y);for(var v=0;Y>v;++v){var x=s();this.debug&&console.log("ObjectAttributes:","\n","Geometry",x&f.GEOMETRY?!0:!1);var V={};if(x&f.GEOMETRY){var j=s();this.debug&&console.log("GeometryAttributes:","\n","Normal",j&p.NORMAL?!0:!1,"\n","UV1",j&p.UV1?!0:!1,"\n","UV2",j&p.UV2?!0:!1);var X=r();this.debug&&console.log("Vertex Count",X),V.positions=n(3*X),j&p.NORMAL&&(V.normals=n(3*X)),j&p.UV1&&(V.uvs=n(2*X)),j&p.UV2&&(V.uvs2=n(2*X))}var K=s();this.debug&&console.log("Group Count",K);for(var k=0;K>k;++k){var W=s();this.debug&&console.log("GroupAttributes:","\n","Index",W&M.INDEX?!0:!1,"\n","Smoothing",W&M.SMOOTHING?!0:!1,"\n","Material",W&M.MATERIAL?!0:!1);var q;if(W&M.NAME&&(q=i(s()),this.debug&&console.log("Group Name",q)),x&f.GEOMETRY){var z;if(W&M.INDEX){var J=r();this.debug&&console.log("Index Count",J),z=o(J)}var Q=W&M.SMOOTHING?t():0;this.debug&&W&M.SMOOTHING&&console.log("Smoothing",Q);var Z=new THREE.BufferGeometry;V.positions&&Z.addAttribute("position",new THREE.BufferAttribute(V.positions,3)),V.normals?Z.addAttribute("normal",new THREE.BufferAttribute(V.normals,3)):Z.computeVertexNormals(),V.uvs&&Z.addAttribute("uv",new THREE.BufferAttribute(V.uvs,2)),V.uvs2&&Z.addAttribute("uv2",new THREE.BufferAttribute(V.uvs2,2)),z&&Z.setIndex(new THREE.BufferAttribute(z,1)),Z.addGroup(0,1,0);var H;if(W&M.MATERIAL){var $=s();H=I[$].clone()||new THREE.MeshPhongMaterial,void 0!==H.flatShading?H.flatShading=0>=Q:H.shading=Q>0?THREE.SmoothShading:THREE.FlatShading,this.debug&&console.log("Group Material",$,H)}var et=new THREE.Mesh(Z,H);q&&(et.name=q),w.add(et)}}}}return this.performanceTimer&&console.timeEnd("BOMLoader"),R}},THREE.BOMLoaderUtil=THREE.BOMLoaderUtil||{},THREE.BOMLoaderUtil.multiload=function(e,t){function s(e,s){var i=new THREE.BOMLoader;i.setTexturePath(s.url.split("/").slice(0,-1).join("/")+"/"),void 0!==s.debug&&i.setDebug(s.debug),void 0!==s.timer&&i.setPerfTimer(s.timer),void 0!==s.crossOrigin&&i.setCrossOrigin(s.crossOrigin),void 0!==s.responseType&&i.setResponseType(s.responseType),i.load(s.url,function(i){s.object=i,a[e]=s,0>=--r&&t(a)})}e=e.constructor===Array?e:[e];for(var r=e.length,a=[],i=0;e.length>i;++i)s(i,e[i])},window.AFRAME&&(AFRAME.systems["bom-assets"]&&delete AFRAME.systems["bom-assets"],AFRAME.registerSystem("bom-assets",{init:function(){this.assets=[]},registerAsset:function(e){this.assets.push(e)},unregisterAsset:function(e){var t=this.assets.indexOf(e);t>=0&&this.assets.splice(t,1)}}),AFRAME.components["bom-asset"]&&delete AFRAME.components["bom-asset"],AFRAME.registerComponent("bom-asset",{schema:{src:{type:"string"},crossOrigin:{type:"string","default":"anonymous"},debug:{type:"boolean","default":!1},perfTimer:{type:"boolean","default":!1},responseType:{type:"string","default":""},path:{type:"string"},texturePath:{type:"string"}},init:function(){this.asset=null,this.loader=new THREE.BOMLoader},update:function(){var e=this;this.data.src&&(this.remove(),this.loader.setCrossOrigin(this.data.crossOrigin),this.loader.setDebug(this.data.debug),this.loader.setPerfTimer(this.data.perfTimer),this.loader.setResponseType(this.data.responseType),this.loader.setPath(this.data.path),this.loader.setTexturePath(this.data.texturePath),this.loader.load(this.data.src,function(t){e.asset=t,e.system&&e.system.registerModel(e.asset),e.el.setObject3D("mesh",e.asset),e.el.emit("model-loaded",{format:"bom",model:e.asset})}))},remove:function(){this.asset&&(this.el.removeObject3D("mesh"),this.system&&this.system.unregisterModel(this.asset))}}),AFRAME.registerPrimitive("a-bom-asset",{mappings:{src:"bom-asset.src",crossOrigin:"bom-asset.crossOrigin",debug:"bom-asset.debug",perfTimer:"bom-asset.perfTimer",responseType:"bom-asset.responseType",path:"bom-asset.path",texturePath:"bom-asset.texturePath"}})); \ No newline at end of file +THREE.BOMLoader=function(e){this.manager=void 0!==e?e:THREE.DefaultLoadingManager,this.crossOrigin="anonymous"},THREE.BOMLoader.prototype={constructor:THREE.BOMLoader,load:function(e,t,s,r){var a=this;this.defaultTexturePath=e.split("/").slice(0,-1).join("/")+"/";var i=THREE.FileLoader?new THREE.FileLoader(this.manager):new THREE.XHRLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.load(e,function(e){t(a.parse(e))},s,r)},setPath:function(e){this.path=e},setTexturePath:function(e){this.texturePath=e},setCrossOrigin:function(e){this.crossOrigin=e},setDebug:function(e){this.debug=e},setPerfTimer:function(e){this.performanceTimer=e},setResponseType:function(e){this.responseType=e},parse:function(e){function t(){var e=h.getUint8(g);return g+=Uint8Array.BYTES_PER_ELEMENT,e}function s(){var e=h.getUint16(g,!0);return g+=Uint16Array.BYTES_PER_ELEMENT,e}function r(){var e=h.getUint32(g,!0);return g+=Uint32Array.BYTES_PER_ELEMENT,e}function a(){var e=h.getFloat32(g,!0);return g+=Float32Array.BYTES_PER_ELEMENT,e}function i(e){var t=String.fromCharCode.apply(null,e>0?new Uint8Array(h.buffer,g,e):new Uint8Array);return g+=Uint8Array.BYTES_PER_ELEMENT*e,t}function o(e){if(0===g%Uint16Array.BYTES_PER_ELEMENT){var t=new Uint16Array(h.buffer,g,e);return g+=Uint16Array.BYTES_PER_ELEMENT*e,t}for(var t=new Uint16Array(e),s=0;e>s;++s,g+=Uint16Array.BYTES_PER_ELEMENT)t[s]=h.getUint16(g,!0);return t}function n(e){if(0===g%Float32Array.BYTES_PER_ELEMENT){var t=new Float32Array(h.buffer,g,e);return g+=Float32Array.BYTES_PER_ELEMENT*e,t}for(var t=new Float32Array(e),s=0;e>s;++s,g+=Float32Array.BYTES_PER_ELEMENT)t[s]=h.getFloat32(g,!0);return t}function E(e){if("string"!=typeof e||""===e)return"";if(/^https?:\/\//i.test(e))return e;var t=new URL((S.texturePath||S.path||S.defaultTexturePath||"")+e,location.href.substring(0,location.href.lastIndexOf("/")+1));return""+t}function l(e){e=E(e);var t;if(altspace&&altspace.inClient)t=new THREE.Texture({src:e});else{var s=THREE.Loader.Handlers.get(e);null===s&&(s=new THREE.TextureLoader(S.manager)),s.setCrossOrigin(S.crossOrigin),t=s.load(e)}return t.side=THREE.FrontSide,t.wrapS=t.wrapT=THREE.RepeatWrapping,t}this.performanceTimer&&console.time("BOMLoader");var u={NONE:0,FRONT:1,BACK:2,ALL:3},A={NONE:1,MATERIAL_LIBRARY:2},T={NONE:1,NAME:2},M={NONE:1,NAME:2,INDEX:4,SMOOTHING:8,MATERIAL:16},f={NONE:1,GEOMETRY:2},p={NONE:1,NORMAL:2,UV1:4,UV2:8},c={NONE:1,ILLUMINATION_MODEL:2,SPECULAR_EXPONENT:4,OPTICAL_DENSITY:8,DISSOLVE:16,TRANSMISSION_FILTER:32,AMBIENT_REFLECTANCE:64,DIFFUSE_REFLECTANCE:128,SPECULAR_REFLECTANCE:256,EMISSIVE_REFLECTANCE:512,AMBIENT_MAP:1024,DIFFUSE_MAP:2048,SPECULAR_MAP:4096,EMISSIVE_MAP:8192,DISSOLVE_MAP:16384,BUMP_MAP:32768,DISPLACEMENT_MAP:65536,FACE_CULLING:1<<17,LIGHT_MAP:1<<18},d={NONE:1,PATH:2,SCALE:4,OFFSET:8,BUMP_SCALE:16,DISPLACEMENT_SCALE:32,LIGHTMAP_INTENSITY:64},h=new DataView(e),g=0,L="array"===this.responseType,R=L?[]:new THREE.Group,S=this,N=i(3);this.debug&&console.log("File Signature",N);var m=t();this.debug&&console.log("Version",m);var P=s();this.debug&&console.log("FileAttributes:","\n","Material Library",x&A.MATERIAL_LIBRARY?!0:!1);var I=[];if(P&A.MATERIAL_LIBRARY){var O=s();this.debug&&console.log("Material Count",O);for(var b=0;O>b;++b){var v=r();this.debug&&console.log("MaterialAttributes:","\n","Illumination Model",v&c.ILLUMINATION_MODEL?!0:!1,"\n","Specular Exponent",v&c.SPECULAR_EXPONENT?!0:!1,"\n","Optical Density",v&c.OPTICAL_DENSITY?!0:!1,"\n","Dissolve",v&c.DISSOLVE?!0:!1,"\n","Transmission Filter",v&c.TRANSMISSION_FILTER?!0:!1,"\n","Ambient Reflectance",v&c.AMBIENT_REFLECTANCE?!0:!1,"\n","Diffuse Reflectance",v&c.DIFFUSE_REFLECTANCE?!0:!1,"\n","Specular Reflectance",v&c.SPECULAR_REFLECTANCE?!0:!1,"\n","Ambient Map",v&c.AMBIENT_MAP?!0:!1,"\n","Diffuse Map",v&c.DIFFUSE_MAP?!0:!1,"\n","Specular Map",v&c.SPECULAR_MAP?!0:!1,"\n","Dissolve Map",v&c.DISSOLVE_MAP?!0:!1,"\n","Bump Map",v&c.BUMP_MAP?!0:!1,"\n","Displacement Map",v&c.DISPLACEMENT_MAP?!0:!1,"\n","Face Culling",v&c.FACE_CULLING?!0:!1,"\n","Light Map",v&c.LIGHT_MAP?!0:!1);var _={};if(_.name=i(s()),this.debug&&console.log("Material Name",_.name),v&c.ILLUMINATION_MODEL&&t(),v&c.SPECULAR_EXPONENT&&(_.shininess=a(),this.debug&&console.log("Specular Exponent",_.shininess)),v&c.OPTICAL_DENSITY&&a(),v&c.DISSOLVE&&(_.opacity=a(),_.transparent=!0,this.debug&&console.log("Dissolve",_.opacity)),v&c.TRANSMISSION_FILTER&&(a(),a(),a()),v&c.AMBIENT_REFLECTANCE&&(a(),a(),a()),v&c.DIFFUSE_REFLECTANCE&&(_.color=new THREE.Color(a(),a(),a()),this.debug&&console.log("Diffuse Reflectance",_.color)),v&c.SPECULAR_REFLECTANCE&&(_.specular=new THREE.Color(a(),a(),a()),this.debug&&console.log("Specular Reflectance",_.specular)),v&c.EMISSIVE_REFLECTANCE&&(_.emissive=new THREE.Color(a(),a(),a()),this.debug&&console.log("Emissive Reflectance",_.emissive)),v&c.AMBIENT_MAP){var C=s();C&d.PATH&&i(s()),C&d.SCALE&&(a(),a()),C&d.OFFSET&&(a(),a())}if(v&c.DIFFUSE_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),_.map=F,this.debug&&C&d.PATH&&console.log("Diffuse Map",F)}if(v&c.SPECULAR_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),_.specularMap=F}if(v&c.EMISSIVE_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),_.emissiveMap=F}if(v&c.DISSOLVE_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),_.alphaMap=F,_.transparent=!0}if(v&c.BUMP_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),C&d.BUMP_SCALE&&(_.bumpScale=a()),_.bumpMap=F}if(v&c.DISPLACEMENT_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),C&d.DISPLACEMENT_SCALE&&(_.displacementScale=a()),_.displacementMap=F}if(v&c.FACE_CULLING){var y=t();y===u.ALL?_.visible=!1:_.side=y===u.FRONT?THREE.BackSide:y===u.BACK?THREE.FrontSide:THREE.DoubleSide}if(v&c.LIGHT_MAP){var C=s(),F=l(C&d.PATH?i(s()):"");C&d.SCALE&&F.repeat.set(a(),a()),C&d.OFFSET&&F.offset.set(a(),a()),C&d.LIGHTMAP_INTENSITY&&(_.lightMapIntensity=a()),_.lightMap=F}var H=new THREE.MeshPhongMaterial(_);I.push(H)}}var U=s();this.debug&&console.log("Asset Count",U);for(var B=0;U>B;++B){var D=s();this.debug&&console.log("AssetAttributes:","\n","Name",D&T.NAME?!0:!1);var w=R;if(L&&(w=new THREE.Group,R.push(w)),D&T.NAME){var G=i(s());this.debug&&console.log("Asset Name",G),L||(w.name=G)}var Y=s();this.debug&&console.log("Object Count",Y);for(var b=0;Y>b;++b){var x=s();this.debug&&console.log("ObjectAttributes:","\n","Geometry",x&f.GEOMETRY?!0:!1);var V={};if(x&f.GEOMETRY){var j=s();this.debug&&console.log("GeometryAttributes:","\n","Normal",j&p.NORMAL?!0:!1,"\n","UV1",j&p.UV1?!0:!1,"\n","UV2",j&p.UV2?!0:!1);var X=r();this.debug&&console.log("Vertex Count",X),V.positions=n(3*X),j&p.NORMAL&&(V.normals=n(3*X)),j&p.UV1&&(V.uvs=n(2*X)),j&p.UV2&&(V.uvs2=n(2*X))}var K=s();this.debug&&console.log("Group Count",K);for(var k=0;K>k;++k){var W=s();this.debug&&console.log("GroupAttributes:","\n","Index",W&M.INDEX?!0:!1,"\n","Smoothing",W&M.SMOOTHING?!0:!1,"\n","Material",W&M.MATERIAL?!0:!1);var q;if(W&M.NAME&&(q=i(s()),this.debug&&console.log("Group Name",q)),x&f.GEOMETRY){var z;if(W&M.INDEX){var J=r();this.debug&&console.log("Index Count",J),z=o(J)}var Q=W&M.SMOOTHING?t():0;this.debug&&W&M.SMOOTHING&&console.log("Smoothing",Q);var Z=new THREE.BufferGeometry;V.positions&&Z.addAttribute("position",new THREE.BufferAttribute(V.positions,3)),V.normals?Z.addAttribute("normal",new THREE.BufferAttribute(V.normals,3)):Z.computeVertexNormals(),V.uvs&&Z.addAttribute("uv",new THREE.BufferAttribute(V.uvs,2)),V.uvs2&&Z.addAttribute("uv2",new THREE.BufferAttribute(V.uvs2,2)),z&&Z.setIndex(new THREE.BufferAttribute(z,1)),Z.addGroup(0,1,0);var H;if(W&M.MATERIAL){var $=s();H=I[$].clone()||new THREE.MeshPhongMaterial,void 0!==H.flatShading?H.flatShading=0>=Q:H.shading=Q>0?THREE.SmoothShading:THREE.FlatShading,this.debug&&console.log("Group Material",$,H)}var et=new THREE.Mesh(Z,H);q&&(et.name=q),w.add(et)}}}}return this.performanceTimer&&console.timeEnd("BOMLoader"),R}},THREE.BOMLoaderUtil=THREE.BOMLoaderUtil||{},THREE.BOMLoaderUtil.multiload=function(e,t){function s(e,s){var i=new THREE.BOMLoader;i.setTexturePath(s.url.split("/").slice(0,-1).join("/")+"/"),void 0!==s.debug&&i.setDebug(s.debug),void 0!==s.timer&&i.setPerfTimer(s.timer),void 0!==s.crossOrigin&&i.setCrossOrigin(s.crossOrigin),void 0!==s.responseType&&i.setResponseType(s.responseType),i.load(s.url,function(i){s.object=i,a[e]=s,0>=--r&&t(a)})}e=e.constructor===Array?e:[e];for(var r=e.length,a=[],i=0;e.length>i;++i)s(i,e[i])},window.AFRAME&&(AFRAME.systems["bom-assets"]&&delete AFRAME.systems["bom-assets"],AFRAME.registerSystem("bom-assets",{init:function(){this.assets=[]},registerAsset:function(e){this.assets.push(e)},unregisterAsset:function(e){var t=this.assets.indexOf(e);t>=0&&this.assets.splice(t,1)}}),AFRAME.components["bom-asset"]&&delete AFRAME.components["bom-asset"],AFRAME.registerComponent("bom-asset",{schema:{src:{type:"string"},crossOrigin:{type:"string","default":"anonymous"},debug:{type:"boolean","default":!1},perfTimer:{type:"boolean","default":!1},responseType:{type:"string","default":""},path:{type:"string"},texturePath:{type:"string"}},init:function(){this.asset=null,this.loader=new THREE.BOMLoader},update:function(){var e=this;this.data.src&&(this.remove(),this.loader.setCrossOrigin(this.data.crossOrigin),this.loader.setDebug(this.data.debug),this.loader.setPerfTimer(this.data.perfTimer),this.loader.setResponseType(this.data.responseType),this.loader.setPath(this.data.path),this.loader.setTexturePath(this.data.texturePath),this.loader.load(this.data.src,function(t){e.asset=t,e.system&&e.system.registerModel(e.asset),e.el.setObject3D("mesh",e.asset),e.el.emit("model-loaded",{format:"bom",model:e.asset})}))},remove:function(){this.asset&&(this.el.removeObject3D("mesh"),this.system&&this.system.unregisterModel(this.asset))}}),AFRAME.registerPrimitive("a-bom-asset",{mappings:{src:"bom-asset.src",crossOrigin:"bom-asset.crossOrigin",debug:"bom-asset.debug",perfTimer:"bom-asset.perfTimer",responseType:"bom-asset.responseType",path:"bom-asset.path",texturePath:"bom-asset.texturePath"}})); \ No newline at end of file