mathio/
tween.rs

1#[cfg(feature = "bevy")]
2use bevy::prelude::Vec2;
3
4/// # Tween
5/// Very simple function for linear interpolation between 2 values.
6/// 
7/// * `slide` ranges from 0.0 to 1.0
8pub fn tween(value_1: f32, value_2: f32, slider: f32) -> f32 {
9    value_1 + (value_2 - value_1) * slider
10}
11
12/// # Tween Trait
13/// Trait for implementing tweening logic for data types.
14pub trait Tween {
15    /// # Tween
16    /// Function for linear interpolation between 2 values.
17    /// 
18    /// * `slide` ranges from 0.0 to 1.0
19    fn tween(&mut self, value_1: &Self, value_2: &Self, slider: f32);
20}
21
22
23impl Tween for f32 {
24    fn tween(&mut self, value_1: &Self, value_2: &Self, slider: f32) {
25        *self = value_1 + (*value_2 - *value_1) * slider;
26    }
27}
28
29#[cfg(feature = "bevy")]
30impl Tween for Vec2 {
31    fn tween(&mut self, value_1: &Self, value_2: &Self, slider: f32) {
32        self.x.tween(&value_1.x, &value_2.x, slider);
33        self.y.tween(&value_1.y, &value_2.y, slider);
34    }
35}