ParticleSystem constructor
ParticleSystem({
- int maxParticles = 1024,
- required EmitterShape shape,
- required Spawner spawner,
- List<
ParticleModule> modules = const <ParticleModule>[], - FloatDistribution lifetime = const ConstantFloat(1.0),
- FloatDistribution startSpeed = const ConstantFloat(0.0),
- FloatDistribution startSize = const ConstantFloat(1.0),
- FloatDistribution startRotation = const ConstantFloat(0.0),
- FloatDistribution startAngularVelocity = const ConstantFloat(0.0),
- ColorDistribution? startColor,
- Vector3? gravity,
- bool looping = true,
- double duration = 5.0,
- double fixedStep = 1.0 / 60.0,
- double maxFrameTime = 0.25,
- int seed = 0,
- double prewarm = 0.0,
Creates a particle system. The distributions, shape, spawner, gravity,
looping behaviour, fixed-step size, and seed are all configurable; only
shape and spawner are required.
When prewarm is positive the system is advanced that many seconds at
construction so it starts already populated.
Implementation
ParticleSystem({
int maxParticles = 1024,
required this.shape,
required this.spawner,
List<ParticleModule> modules = const <ParticleModule>[],
this.lifetime = const ConstantFloat(1.0),
this.startSpeed = const ConstantFloat(0.0),
this.startSize = const ConstantFloat(1.0),
this.startRotation = const ConstantFloat(0.0),
this.startAngularVelocity = const ConstantFloat(0.0),
ColorDistribution? startColor,
Vector3? gravity,
this.looping = true,
this.duration = 5.0,
this.fixedStep = 1.0 / 60.0,
this.maxFrameTime = 0.25,
this.seed = 0,
double prewarm = 0.0,
}) : assert(maxParticles > 0),
assert(duration > 0),
assert(fixedStep > 0),
assert(maxFrameTime >= fixedStep),
assert(prewarm >= 0),
storage = ParticleStorage(maxParticles),
modules = List<ParticleModule>.unmodifiable(modules),
startColor = startColor ?? ConstantColor(Vector4(1, 1, 1, 1)),
gravity = gravity?.clone() ?? Vector3.zero(),
_random = math.Random(seed) {
if (prewarm > 0.0) {
final steps = (prewarm / fixedStep).floor();
for (var i = 0; i < steps; i++) {
_stepFixed(fixedStep);
}
}
}