apply method

  1. @override
void apply(
  1. Skeleton skeleton,
  2. double lastTime,
  3. double time,
  4. List<Event?> firedEvents,
  5. double alpha,
  6. MixPose pose,
  7. MixDirection direction,
)
override

Implementation

@override
void apply(
    Skeleton skeleton,
    double lastTime,
    double time,
    // ignore: avoid_renaming_method_parameters
    List<Event?> firedEvents,
    double alpha,
    MixPose pose,
    MixDirection direction) {
  if (firedEvents.isEmpty) return;
  final Float32List frames = this.frames;
  final int frameCount = this.frames.length;

  if (lastTime > time) {
    // Fire events after last time for looped animations.
    apply(skeleton, lastTime, double.maxFinite, firedEvents, alpha, pose,
        direction);
    lastTime = -1.0;
  } else if (lastTime >= frames[frameCount - 1]) {
    return;
  }
  if (time < frames[0]) return; // Time is before first frame.
  int frame = 0;
  if (lastTime < frames[0]) {
    frame = 0;
  } else {
    frame = Animation.binarySearch(frames, lastTime);
    final double frameTime = frames[frame];
    while (frame > 0) {
      // Fire multiple events with the same frame.
      if (frames[frame - 1] != frameTime) break;
      frame--;
    }
  }
  for (; frame < frameCount && time >= frames[frame]; frame++) {
    firedEvents.add(events[frame]);
  }
}