Files
junisaber/src/components/logo-light.js
2018-10-10 14:04:09 -07:00

43 lines
1.0 KiB
JavaScript

var ONCE = {once: true};
/**
* Delay logo light so it only applies to the logo.
*/
AFRAME.registerComponent('logo-light', {
init: function () {
this.logoBack = document.getElementById('logoBack');
this.logoFront = document.getElementById('logoFront');
this.logoFrontU = document.getElementById('logoFrontU');
},
play: function () {
setTimeout(() => {
this.el.setAttribute('light', {
type: 'spot',
penumbra: 1,
intensity: 5,
angle: 20
});
this.waitAndUpdate(this.logoBack);
this.waitAndUpdate(this.logoFront);
this.waitAndUpdate(this.logoFrontU);
}, 1000);
},
waitAndUpdate: function (el) {
if (el.getObject3D('mesh')) {
el.object3D.traverse(this.updateMaterials);
} else {
el.addEventListener('model-loaded', () => {
el.object3D.traverse(this.updateMaterials);
}, ONCE);
}
},
updateMaterials: function (node) {
if (node.material) {
node.material.needsUpdate = true;
}
}
});