Newer
Older
reroad-test / 2020-ryusei / aframe-master / examples / test / raycaster / components / entity-generator.js
@ryusei ryusei on 22 Oct 2020 1 KB パノラマ表示
/* global AFRAME */

/**
 * Create ton of entities at random positions.
 * Update raycasters to realize the boxes.
 */
AFRAME.registerComponent('entity-generator', {
  schema: {
    mixin: {default: ''},
    num: {default: 1000},
    raycasterEls: {default: '[mixin~="raycaster"]', type: 'selectorAll'},
    spread: {default: 20}
  },

  init: function () {
    var data = this.data;

    // Create entities with supplied mixin.
    for (var i = 0; i < data.num; i++) {
      var entity = document.createElement('a-entity');
      entity.setAttribute('mixin', data.mixin);
      // Set random position with supplied spread.
      entity.setAttribute('position', {
        x: getSpread(data.spread),
        y: getSpread(data.spread),
        z: getSpread(data.spread)
      });
      this.el.appendChild(entity);
    }

    // Refresh raycasters.
    if (!data.raycasterEls) { return; }
    for (i = 0; i < data.raycasterEls.length; i++) {
      data.raycasterEls[i].components.raycaster.refreshObjects();
    }
  }
});

function getSpread (spread) {
  return Math.random() * spread - spread / 2;
}