apply logo light only to logo
This commit is contained in:
42
src/components/logo-light.js
Normal file
42
src/components/logo-light.js
Normal file
@@ -0,0 +1,42 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user