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,
// 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]);
}
}