use crate::{
Transform,
AnimationData,
};
pub trait Animation {
fn animated_transform(&mut self, original_transform: Transform, duration_seconds: f64) -> Transform;
fn is_done(&self, duration_seconds: f64) -> bool;
}
pub fn animate<A: Animation>(
animation: &mut A,
animation_data: &AnimationData,
original_transform: Transform,
offset: f64,
) -> Transform {
let duration = animation_data.duration().as_secs_f64() + offset;
let animated_transform = animation.animated_transform(original_transform, duration);
return animated_transform;
}