Function emath::interpolation_factor
source ยท pub fn interpolation_factor(
(start_time, end_time): (f64, f64),
current_time: f64,
dt: f32,
easing: impl Fn(f32) -> f32,
) -> f32
Expand description
If you have a value animating over time, how much towards its target do you need to move it this frame?
You only need to store the start time and target value in order to animate using this function.
struct Animation {
current_value: f32,
animation_time_span: (f64, f64),
target_value: f32,
}
impl Animation {
fn update(&mut self, now: f64, dt: f32) {
let t = interpolation_factor(self.animation_time_span, now, dt, ease_in_ease_out);
self.current_value = emath::lerp(self.current_value..=self.target_value, t);
}
}