-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaframe-gltf-helpers.min.js
1 lines (1 loc) · 3.34 KB
/
aframe-gltf-helpers.min.js
1
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var o=t();for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(this,(function(){return function(e){var t={};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(r,n,function(t){return e[t]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t){if("undefined"==typeof AFRAME)throw new Error("Component attempted to register before AFRAME was available.");var o={},r={};AFRAME.registerComponent("gltf-part-plus",{schema:{buffer:{default:!0},part:{type:"string"},src:{type:"asset"},resetPosition:{default:!1}},init:function(){this.dracoLoader=document.querySelector("a-scene").systems["gltf-model"].getDRACOLoader()},update:function(){var e=this.el,t=this.data;!this.data.part&&this.data.src||this.getModel((function(o){o&&(t.resetPosition&&(e.setAttribute("position",o.position.x+" "+o.position.y+" "+o.position.z),o.position.set(0,0,0)),e.setObject3D("mesh",o),e.emit("model-loaded",{format:"gltf",part:this.modelPart}))}))},getModel:function(e){var t=this;if(!r[this.data.src])return o[this.data.src]?o[this.data.src].then((function(o){e(t.selectFromModel(o))})):void(o[this.data.src]=new Promise((function(n){var i=new THREE.GLTFLoader;t.dracoLoader&&i.setDRACOLoader(t.dracoLoader),i.load(t.data.src,(function(i){var a=i.scene||i.scenes[0];r[t.data.src]=a,delete o[t.data.src],e(t.selectFromModel(a)),n(a)}),(function(){}),console.error)})));e(this.selectFromModel(r[this.data.src]))},selectFromModel:function(e){var t,o;if(o=e.getObjectByName(this.data.part))return t=o.getObjectByProperty("type","Mesh").clone(!0),this.data.buffer?(t.geometry=t.geometry.toNonIndexed(),t):(t.geometry=(new THREE.Geometry).fromBufferGeometry(t.geometry),t);console.error("[gltf-part] `"+this.data.part+"` not found in model.")}}),AFRAME.registerComponent("model-center",{schema:{bottomAlign:{default:!1}},init:function(){this.el.addEventListener("model-loaded",e=>{var t=this.el.getObject3D("mesh");if(t.position.set(0,0,0),t.geometry.center(),this.data.bottomAlign){var o=(new THREE.Box3).setFromObject(t),r=o.max.sub(o.min).y;t.position.y=r/2}})}}),AFRAME.registerComponent("anisotropy",{schema:{default:0},dependencies:["material","geometry"],init:function(){this.maxAnisotropy=this.el.sceneEl.renderer.capabilities.getMaxAnisotropy(),this.el.addEventListener("model-loaded",()=>{const e=this.el.getObject3D("mesh");var t=this.data;0===(t=+t||0)&&(t=this.maxAnisotropy),e.traverse(e=>{!0===e.isMesh&&null!==e.material.map&&(e.material.map.anisotropy=t,e.material.map.needsUpdate=!0)})})}})}])}));