getAnimations method

  1. @override
List<CharacterAnimation> getAnimations(
  1. double progress,
  2. int charCount
)
override

Generates per-character fire flicker with noise-based color and jitter.

Implementation

@override
List<CharacterAnimation> getAnimations(double progress, int charCount) {
  if (charCount == 0) return [];

  final curved = applyCurve(progress);
  final t = curved * duration.inMicroseconds / 1000000.0;

  return List.generate(charCount, (index) {
    final n = noise(index, (t * 8).floor());
    final n2 = noise(index, (t * 6).floor() + 100);
    final returnT = sin(curved * pi);
    final hue = 15.0 + n * 25.0;
    final sat = 0.9 + n2 * 0.1;
    final light = 0.5 + n * 0.3;
    final dx = (n - 0.5) * jitter * 2 * returnT;
    final dy = -(n2 * jitter) * returnT;
    final scale = 1.0 + (maxScale - 1.0) * n2 * returnT;

    return CharacterAnimation(
      color: returnT > 0.001
          ? HSLColor.fromAHSL(1.0, hue, sat, light).toColor()
          : null,
      translation: Offset(dx, dy),
      scale: scale,
      blurSigma: blurSigma * (0.5 + n * 0.5) * returnT,
    );
  });
}