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,
    List<Event?> firedEvents,
    double alpha,
    MixPose pose,
    MixDirection direction) {
  List<Slot> drawOrder = skeleton.drawOrder;
  final List<Slot> slots = skeleton.slots;
  if (direction == MixDirection.mixOut && pose == MixPose.setup) {
    skeleton.drawOrder = ArrayUtils.arrayCopyWithGrowth(skeleton.slots, 0,
        skeleton.drawOrder, 0, skeleton.slots.length, Slot.empty());
    return;
  }

  final Float32List frames = this.frames;
  if (time < frames[0]) {
    if (pose == MixPose.setup) {
      skeleton.drawOrder = ArrayUtils.arrayCopyWithGrowth(skeleton.slots, 0,
          skeleton.drawOrder, 0, skeleton.slots.length, Slot.empty());
    }
    return;
  }

  int frame = 0;
  if (time >= frames[frames.length - 1]) {
    frame = frames.length - 1;
  } else {
    frame = Animation.binarySearch(frames, time) - 1;
  }

  final Int32List? drawOrderToSetupIndex = drawOrders[frame];
  if (drawOrderToSetupIndex == null) {
    drawOrder = ArrayUtils.arrayCopyWithGrowth(
        slots, 0, drawOrder, 0, slots.length, Slot.empty());
  } else {
    final int n = drawOrderToSetupIndex.length;
    for (int i = 0; i < n; i++) {
      drawOrder[i] = slots[drawOrderToSetupIndex[i]];
    }
  }
}