use beet_flow::prelude::RunTimer;
use beet_core::prelude::*;
use std::time::Duration;
#[derive(Debug, Copy, Clone, Reflect)]
pub enum ProceduralAnimationSpeed {
Duration(Duration),
MetersPerSecond(f32),
}
impl Default for ProceduralAnimationSpeed {
fn default() -> Self { Self::Duration(Duration::from_secs(1)) }
}
impl ProceduralAnimationSpeed {
pub fn calculate_t(
&self,
total_len_meters: f32,
run_timer: &RunTimer,
) -> f32 {
let duration_secs = match self {
Self::Duration(duration) => duration.as_secs_f32(),
Self::MetersPerSecond(mps) => total_len_meters / mps,
};
run_timer.last_run.elapsed().as_secs_f32() / duration_secs
}
}