use std::time::{Duration as StdDuration, Instant};
use crate::{IconId, Point};
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum StopMode {
LeaveInPlace,
TeleportToTarget,
}
#[derive(Clone, Debug, PartialEq)]
pub enum FinishReason {
Completed,
Stopped(StopMode),
Error(String),
}
#[derive(Clone, Debug, PartialEq)]
pub struct IconAnimationState {
pub id: IconId,
pub origin: Point,
pub current: Point,
pub target: Point,
pub t: f32,
pub is_final: bool,
}
#[derive(Clone, Debug)]
pub struct StartContext {
pub total_icons: usize,
pub missing_icons: usize,
pub started_at: Instant,
}
#[derive(Clone, Debug)]
pub struct TickContext {
pub elapsed: StdDuration,
pub progress: f32,
pub active_icons: usize,
pub finalized_icons: usize,
}