Monitor Component - EricEisaman/cs1-ide GitHub Wiki

Monitor Component



export default (()=>{
 
  document.addEventListener('gameStart',e=>{

   
    const mon1 = document.createElement('a-monitor');
    mon1.setAttribute('type','green');
    mon1.object3D.position.set(-7, 0.1, -6);
    mon1.setAttribute('rotation','0 90 0');
    CS1.scene.appendChild(mon1);
    CS1.log('Hello on the green channel!','green');
    
    const mon2 = document.createElement('a-monitor');
    mon2.setAttribute('type','gray');
    mon2.object3D.position.set(-7, 0.1, -2);
    mon2.setAttribute('rotation','0 90 0');
    CS1.scene.appendChild(mon2);
    CS1.log('Hello on the gray channel!','gray');
    
    const mon3 = document.createElement('a-monitor');
    mon3.setAttribute('type','purple');
    mon3.setAttribute('color','hotpink');
    mon3.object3D.position.set(-7, 0.1, 3);
    mon3.setAttribute('rotation','0 90 0');
    CS1.scene.appendChild(mon3);
    CS1.log('Hello from my new monitor!','purple');
    
    
  });
 
 
  AFRAME.registerComponent('monitor', {
   
   
    schema: {
      type: {default: 'gray'},
      color: {default: 'white'},
    },
 
    init: function(){
      let url,posX,posY,posZ;
      switch(this.data.type){
        case 'gray':
         url = 'https://cdn.glitch.com/b9d48379-1407-4182-9065-97e7d3b2b2fe%2Fmonitor1.glb?v=1571491705385';
         posX = -0.2;
         posY = 1.7;
         posZ = 0.2;
         break;
        case 'green':
         url = 'https://cdn.glitch.com/b9d48379-1407-4182-9065-97e7d3b2b2fe%2Fmonitor2.glb?v=1571492051012';
         posX = 0.0;
         posY = 1.416;
         posZ = 0.2;
         break;
        case 'purple':
          url = 'https://cdn.glitch.com/76fbb411-d921-400e-9dc6-ee5c0f54d76a%2Fpurple_monitor.glb?v=1573050389507';
          posX = -0.3;
          posY = 1.811;
          posZ = 0.4;
          break;
      }
       
      const model = document.createElement('a-gltf-model');
      model.setAttribute('src',url);
      const log = document.createElement('a-entity');
      log.setAttribute('log',`max:10;channel:${this.data.type}`);
      log.setAttribute('geometry','primitive:plane;width:2.7;height:1.6');
      log.setAttribute('material','opacity:0');
      log.object3D.position.set(posX,posY,posZ);//posY original 1.397
      log.setAttribute('text',`color:${this.data.color}`);
      model.appendChild(log);
      this.el.appendChild(model);
    }
   
   
  });
 
  AFRAME.registerPrimitive('a-monitor', {
 
   defaultComponents: {
    monitor: {}
   },
   
   mappings: {
    type: 'monitor.type',
    color: 'monitor.color',
   }
 
  });
 
 
 
 
})()