apply method
void
apply(
- Skeleton skeleton,
- double lastTime,
- double time,
- List<
Event?> firedEvents, - double alpha,
- MixPose pose,
- 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]];
}
}
}