updateParticles method

void updateParticles(
  1. double deltaTime,
  2. double width,
  3. double height,
  4. Size size,
)

Per-frame update for burst particles. Called by engine's _engine() loop.

Implementation

void updateParticles(
  double deltaTime,
  double width,
  double height,
  Size size,
) {
  tickController(size);
  final pool = _pool;
  if (pool == null) return;

  for (int i = 0; i < pool.length; i++) {
    final p = pool[i];
    if (p.lifetime != null && p.isExpired) continue;

    if (p.lifetime != null) {
      p.updateAge = p.age + deltaTime;
      if (p.isExpired) continue;
      _updateLifetime(p);
    }

    if (enableTrails && p.trailEnabled) p.pushTrailPosition(p.position);

    final dx = p.position.dx + deltaTime * p.currentVelocity.dx;
    final dy = p.position.dy + deltaTime * p.currentVelocity.dy;
    p.updatePosition = Offset(dx, dy);

    if (physics != null) {
      p.updateVelocity = physics!.applyGravity(p.currentVelocity, deltaTime);
    }

    p.updateRotation = p.rotation + deltaTime * p.rotationSpeed;
  }
}