MeshParticleEmitterComponent constructor

MeshParticleEmitterComponent({
  1. required ParticleSystem system,
  2. required List<Geometry> geometries,
  3. required Material material,
  4. MeshParticleFacing facing = MeshParticleFacing.tumble,
})

Creates an emitter that draws system's particles as instances of geometries (each particle picks one), all sharing material.

Implementation

MeshParticleEmitterComponent({
  required this.system,
  required List<Geometry> geometries,
  required Material material,
  this.facing = MeshParticleFacing.tumble,
}) : assert(geometries.isNotEmpty),
     _meshes = [
       for (final geometry in geometries)
         InstancedMesh(geometry: geometry, material: material),
     ] {
  // Fixed instance slots (hidden when unused) so per-frame updates never
  // churn the instance lists.
  for (final mesh in _meshes) {
    for (var i = 0; i < system.storage.capacity; i++) {
      mesh.addInstance(_hiddenTransform);
    }
  }
  _liveCounts = List<int>.filled(_meshes.length, 0);
}