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
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
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 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]); } }