Dart Documentationsystem_particlesParticles

Particles class

class Particles extends Component {
 static final CT = ComponentTypeManager.getTypeFor(Particles);
 final int length;
 List<Vector3> position3d;
 //List<Vector3> get position3d => _position3d;
 /// all the positions in a single list (can be used in webgl to set vertices in one call)
 final Float32List position3dBuff;
 final List<Vector3> position3dPrevious;

 final ItemOption<int> color;

 /// The lifetime of the particle, in seconds.
 //final ItemOption<double> lifetime; = double.INFINITY;

 /// The mass of the particle ( 1.0 is the default ) is used to resolve Constraint distance.
 final ItemOption<double> mass;
 /// The radius of the particle, for collision approximation
 final ItemOption<double> radius;
 /// if the particule collide
 final ItemOption<int> collide;
 bool intraCollide;
 /// the (accumulated) acceleration on particule
 final ItemOption<Vector3> acc;
 /// the inertia on particule how it keep movement (velocity)
 final ItemOption<double> inertia;
 /// link to extra data, can be the host Entity or array, map, structure
 /// for energy, ttl, kind,...
 var extradata;

 Particles(length, {
   withPrevious: true,
   withColors: false, color0: 0x000000ff,
   withMass:   false, mass0: 1.0,
   withRadius: false, radius0: 1.0,
   withCollides: false, collide0: 0,
   withAccs: false, acc0: null,
   withInertias: false, inertia0: 1.0,
   this.intraCollide: false
 }) :
   this.length = length,
   position3dBuff = new Float32List(length * 3),
   position3dPrevious = withPrevious ? new List.generate(length, (i) => new Vector3.zero()) : null,
   color = withColors ? new ItemSome(new List.generate(length, (i) => color0)) : new ItemDefault(color0),
   mass = withMass ? new ItemSome(new List.generate(length, (i) => mass0)) : new ItemDefault(mass0),
   radius = withRadius ? new ItemSome(new List.generate(length, (i) => radius0)) : new ItemDefault(radius0),
   collide = withCollides ? new ItemSome(new List.generate(length, (i) => collide0)) : new ItemDefault(collide0),
   acc = withAccs ? new ItemSome(new List.generate(length, (i) => acc0 == null ? new Vector3.zero() : new Vector3.copy(acc0))) : new ItemDefault(acc0 == null ? new Vector3.zero() : acc0),
   inertia = withInertias ? new ItemSome(new List.generate(length, (i) => inertia0)) : new ItemDefault(inertia0)
 {
   position3d = new List.generate(length, (i) => new Vector3.view(new Float32List.view(position3dBuff.buffer, i * 4 * 3, 3)));
 }

 copyPosition3dIntoPrevious() {
   for (int i = length -1; i > -1; --i) {
     position3dPrevious[i].setFrom(position3d[i]);
   }
 }
}

Extends

Component > Particles

Static Properties

final CT #

static final CT = ComponentTypeManager.getTypeFor(Particles)

Constructors

new Particles(length, {withPrevious: true, withColors: false, color0: 0x000000ff, withMass: false, mass0: 1.0, withRadius: false, radius0: 1.0, withCollides: false, collide0: 0, withAccs: false, acc0: null, withInertias: false, inertia0: 1.0, bool intraCollide: false}) #

Creates a new Object instance.

Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.

docs inherited from Object
Particles(length, {
 withPrevious: true,
 withColors: false, color0: 0x000000ff,
 withMass:   false, mass0: 1.0,
 withRadius: false, radius0: 1.0,
 withCollides: false, collide0: 0,
 withAccs: false, acc0: null,
 withInertias: false, inertia0: 1.0,
 this.intraCollide: false
}) :
 this.length = length,
 position3dBuff = new Float32List(length * 3),
 position3dPrevious = withPrevious ? new List.generate(length, (i) => new Vector3.zero()) : null,
 color = withColors ? new ItemSome(new List.generate(length, (i) => color0)) : new ItemDefault(color0),
 mass = withMass ? new ItemSome(new List.generate(length, (i) => mass0)) : new ItemDefault(mass0),
 radius = withRadius ? new ItemSome(new List.generate(length, (i) => radius0)) : new ItemDefault(radius0),
 collide = withCollides ? new ItemSome(new List.generate(length, (i) => collide0)) : new ItemDefault(collide0),
 acc = withAccs ? new ItemSome(new List.generate(length, (i) => acc0 == null ? new Vector3.zero() : new Vector3.copy(acc0))) : new ItemDefault(acc0 == null ? new Vector3.zero() : acc0),
 inertia = withInertias ? new ItemSome(new List.generate(length, (i) => inertia0)) : new ItemDefault(inertia0)
{
 position3d = new List.generate(length, (i) => new Vector3.view(new Float32List.view(position3dBuff.buffer, i * 4 * 3, 3)));
}

Properties

final ItemOption<Vector3> acc #

the (accumulated) acceleration on particule

final ItemOption<Vector3> acc

final ItemOption<int> collide #

if the particule collide

final ItemOption<int> collide

final ItemOption<int> color #

final ItemOption<int> color

var extradata #

link to extra data, can be the host Entity or array, map, structure for energy, ttl, kind,...

var extradata

final ItemOption<double> inertia #

the inertia on particule how it keep movement (velocity)

final ItemOption<double> inertia

bool intraCollide #

bool intraCollide

final int length #

final int length

final ItemOption<double> mass #

The lifetime of the particle, in seconds. The mass of the particle ( 1.0 is the default ) is used to resolve Constraint distance.

final ItemOption<double> mass

List<Vector3> position3d #

List<Vector3> position3d

final Float32List position3dBuff #

all the positions in a single list (can be used in webgl to set vertices in one call)

final Float32List position3dBuff

final List<Vector3> position3dPrevious #

final List<Vector3> position3dPrevious

final ItemOption<double> radius #

The radius of the particle, for collision approximation

final ItemOption<double> radius

Methods

dynamic copyPosition3dIntoPrevious() #

copyPosition3dIntoPrevious() {
 for (int i = length -1; i > -1; --i) {
   position3dPrevious[i].setFrom(position3d[i]);
 }
}