getAnimations method
Generates per-character wave based on distance from text center.
Implementation
@override
List<CharacterAnimation> getAnimations(double progress, int charCount) {
if (charCount == 0) return [];
final curved = applyCurve(progress);
return List.generate(charCount, (index) {
final center = (charCount - 1) / 2.0;
final dist = (index - center).abs() / max(center, 1.0);
final returnT = sin(curved * pi);
final localProgress = (curved - dist * 0.3).clamp(0.0, 1.0);
final wave = sin(localProgress * pi);
final eased = localProgress * (2 - localProgress);
final scale = 1.0 + (scaleMin + (scaleMax - scaleMin) * wave - 1.0) * returnT;
final dy = -height * wave * returnT;
final opacity = 1.0 + (opacityMin + (1.0 - opacityMin) * eased - 1.0) * returnT;
return CharacterAnimation(
scale: scale,
translation: Offset(0, dy),
opacity: opacity.clamp(0.0, 1.0),
);
});
}