easings-rs 0.1.0

Simple easings crate without any bells and whistles
Documentation

easings-rs

This is a very simple implementation of the the easings found at https://easings.net/en. The intent is to provide easy functionality without a ton of bells and whistles.

There is a single enum with a variant for each easing effect documented on the above site, along with a Linear easing as well. They are provided as <category><in/out/inout>, such as ElasticOut or SineInOut. There is one exported function called ease which can called to get the easing value for a percentage progress (f32 between 0 and 1).

So, let's say you are using this in a game engine like Amethyst, and you are easing between two positions for an object:

#[derive(Component)]
pub struct EaseEffect {
    pub duration_frames: u64,
    pub start_frame: u64,
    pub easing: Easing,
}

// ...

let frames_elapsed = time.frame_number() - ease_effect.start_frame;
let percent = frames_elapsed as f32 / ease_effect.duration_frames as f32;
let progress = ease(ease_effect.easing, percent);
*transform.translation_mut() = source + progress * (destination - source);