[][src]Crate keyframe

A simple library for animation in Rust

Usage

Tweening between two values is done with ease(function, from, to, time). from and to can be any type that implements CanTween, such as f64 or mint::Vector2, while time needs to be a floating-point value between zero and one. function specifies the transition between from and to and is any type that implements EasingFunction.

AnimationSequence can be used to create more complex animations that keep track of keyframes, time, etc. You can create animation sequences with the keyframes![...] macro, from an iterator or from a vector.

Examples

An example visualizer is included in examples/. Run cargo run --example visualizer --release to start it. (ggez is really slow in debug mode!)

Tweening:

use keyframe::{ease, functions::*};
 
fn example() -> f64 {
    let a = 0.0;
    let b = 2.0;
    let time = 0.5;
 
    ease(EaseInOut, a, b, time)
}

Animation sequences:

#[macro_use]
extern crate keyframe;
 
use keyframe::{Keyframe, AnimationSequence};
 
fn example() {
    // (value, time) or (value, time, function)
    let sequence = keyframes![
        (0.5, 0.0), 
        (1.5, 0.3, EaseIn), // <-- EaseIn used from 0.0 to 0.3
        (2.5, 1.0, Linear) // <-- Linear used from 0.3 to 1.0
    ];

    sequence.advance_by(0.65);

    assert_eq!(sequence.now(), 2.0);
    assert_eq!(sequence.duration(), 1.0);
}

Modules

functions

Definitions for various easing functions

Macros

keyframes

Creates an animation sequence containing any arguments that can be made into keyframes

Structs

AnimationSequence

A collection of keyframes that can be played back in sequence

Keyframe

Intermediate step in an animation sequence

Enums

AnimationSequenceError

Category of animation sequence error

Traits

CanTween

Type that can be used with an easing function

EasingFunction

Implementation of a 2D curve function for easing between two points

Functions

ease

Returns the value at a specified X position on the curve between point A and point B. Time is limited to a range between 0.0 and 1.0.

ease_with_scaled_time

Returns the value at a specified X position on the curve between point A and point B. Time is limited to a range between 0.0 and max_time.

ease_with_unbounded_time

Returns the value at a specified X position on the curve between point A and point B. Bounds are 0.0-1.0 for the time argument but it can go out of bounds.