Creación de Objetos en Tiempo de Ejecución

Muy a menudo, los juegos o aplicaciones añaden nuevos objetos en tiempo de ejecución, quizá en reacción al usuario o para crear un efecto visual.

En Wonderland Engine, puedes crear objetos desde un componente personalizado de JavaScript usando Scene.addObject o Scene.addObjects.

Añadir un Solo Objeto 

Añadir un solo objeto se realiza mediante Scene.addObject:

import {Component, Property} from '@wonderlandengine/api';

export class Spawner extends Component {
  static TypeName = 'spawner';
  static Properties = {
    mesh: Property.mesh(),
    material: Property.material(),
  };

  start() {
    /* Crear un nuevo objeto con this.object como padre */
    const o = this.engine.scene.addObject(this.object);

    /* Adjuntar una malla */
    o.addComponent('mesh', {
      mesh: this.mesh,
      material: this.material,
    });
  }
}

Añadir Muchos Objetos 

Para añadir múltiples objetos, Scene.addObjects ofrece un mejor rendimiento:

import {Component, Property} from '@wonderlandengine/api';

export class BatchSpawner extends Component {
  static TypeName = 'batch-spawner';
  static Properties = {
    mesh: Property.mesh(),
    material: Property.material(),
    count: Property.int(10),
  };

  start() {
    /* Crear 'count' nuevos objetos con this.object como padre y
     * informar a Wonderland Engine que necesitaremos 'count' componentes (uno por objeto) */
    const objs = this.engine.scene.addObjects(10, this.object, this.count);

    /* Adjuntar mallas */
    for(let o of objs) {
      o.addComponent('mesh', {
        mesh: this.mesh,
        material: this.material,
      });
      /* Posicionar el objeto en una ubicación aleatoria dentro de un volumen de cubo 10x10x10 */
      o.translate([Math.random()*10, Math.random()*10, Math.random()*10]);
    }
  }
}