some impls
This commit is contained in:
parent
59be1ceddc
commit
e6f0b2c32b
2 changed files with 51 additions and 2 deletions
52
src/lib.rs
52
src/lib.rs
|
|
@ -1,15 +1,63 @@
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests;
|
||||||
|
|
||||||
pub struct Tween<T> {
|
pub struct Tween<T> {
|
||||||
tweeners: Vec<Tweener<T>>,
|
tweeners: Vec<(f32, Tweener<T>)>,
|
||||||
|
time: f32,
|
||||||
|
current_tweener: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum Tweener<T> {
|
pub enum Tweener<T> {
|
||||||
TweenFunction {
|
TweenFunction {
|
||||||
function: fn(t: f32, min: T, max: T) -> T,
|
function: fn(t: f32, min: T, max: T) -> T,
|
||||||
|
duration: f32,
|
||||||
},
|
},
|
||||||
TweenInterval {
|
TweenInterval {
|
||||||
interval: f32,
|
duration: f32,
|
||||||
},
|
},
|
||||||
TweenCallback {
|
TweenCallback {
|
||||||
callback: fn(),
|
callback: fn(),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<T> Tweener<T> {
|
||||||
|
pub fn duration(&self) -> f32 {
|
||||||
|
match self {
|
||||||
|
Tweener::TweenFunction { function, duration } => duration.clone(),
|
||||||
|
Tweener::TweenInterval { duration } => duration.clone(),
|
||||||
|
Tweener::TweenCallback { callback } => 0f32,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn is_completed(&self, time: f32) -> bool {
|
||||||
|
match self {
|
||||||
|
Tweener::TweenFunction { function, duration } => *duration >= time,
|
||||||
|
Tweener::TweenInterval { duration } => *duration >= time,
|
||||||
|
Tweener::TweenCallback { callback } => true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl<T> Tween<T> {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
tweeners: vec![],
|
||||||
|
time: 0f32,
|
||||||
|
current_tweener: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_tweener(&mut self, tweener: Tweener<T>) {
|
||||||
|
self.tweeners.push((self.duration(), tweener));
|
||||||
|
}
|
||||||
|
#[inline]
|
||||||
|
pub fn duration(&self) -> f32 {
|
||||||
|
self.tweeners.iter().map(|el| el.1.duration()).sum::<f32>()
|
||||||
|
}
|
||||||
|
pub fn is_completed(&self) -> bool {
|
||||||
|
self.duration() <= self.time
|
||||||
|
}
|
||||||
|
pub fn step(&mut self, delta: f32) {
|
||||||
|
//for (offset,tween) in self.tweeners.iter().step_by(self.current_tweener) {
|
||||||
|
// if tween
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
1
src/tests.rs
Normal file
1
src/tests.rs
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue