AFRAME.registerSystem('materials', {
  init: function () {
    this.black = new THREE.MeshLambertMaterial({color: 0x000000, flatShading: true});
    this.default = new THREE.MeshLambertMaterial({color: 0xff0000, flatShading: true});
    this.neon = new THREE.MeshBasicMaterial({color: 0x9999ff, fog: false});
  }
});

AFRAME.registerComponent('materials', {
  schema: {
    default: 'black',
    oneOf: ['black', 'default', 'neon']
  },

  update: function () {
    this.el.object3D.traverse(o => {
      o.material = this.system[this.data]
    });
  }
});
