sample method

T sample(
  1. double time
)

Implementation

T sample(double time) {
  final values = animation.values;

  if (time < values.first.$1) {
    return values.first.$2;
  }

  if (time > values.last.$1) {
    return values.last.$2;
  }

  for (var i = 0; i < values.length - 1; i++) {
    final t0 = values[i].$1;
    final t1 = values[i + 1].$1;

    if (time >= t0 && time < t1) {
      final t = (time - t0) / (t1 - t0);
      final value0 = values[i].$2;
      final value1 = values[i + 1].$2;
      return animation.lerp(value0, value1, t);
    }
  }

  throw Exception('This should never happen');
}