27 lines
643 B
Rust
27 lines
643 B
Rust
use std::time::Duration;
|
|
|
|
pub struct FadeTimer {
|
|
duration: Duration,
|
|
start_time: std::time::Instant,
|
|
}
|
|
|
|
impl FadeTimer {
|
|
pub fn new(duration: Duration) -> Self {
|
|
Self {
|
|
duration,
|
|
start_time: std::time::Instant::now(),
|
|
}
|
|
}
|
|
|
|
pub fn update(&mut self) -> bool {
|
|
let elapsed = self.start_time.elapsed();
|
|
let progress = elapsed.as_secs_f64() / self.duration.as_secs_f64();
|
|
progress >= 1.0
|
|
}
|
|
|
|
pub fn current_alpha(&self) -> f64 {
|
|
let elapsed = self.start_time.elapsed();
|
|
(elapsed.as_secs_f64() / self.duration.as_secs_f64()).min(1.0)
|
|
}
|
|
}
|