vleue_kinetoscope

Crates.iovleue_kinetoscope
lib.rsvleue_kinetoscope
version0.4.1
created_at2024-05-24 22:53:36.556406+00
updated_at2025-04-30 17:49:03.76672+00
descriptionAnimated GIF player for Bevy
homepagehttps://github.com/vleue/vleue_kinetoscope
repositoryhttps://github.com/vleue/vleue_kinetoscope
max_upload_size
id1251609
size1,414,999
publish (github:vleue:publish)

documentation

https://docs.rs/vleue_kinetoscope

README

vleue_kinetoscope

MIT/Apache 2.0 Doc Crate Bevy Tracking CI

Animated GIF and WebP player for Bevy.

animated-gif

Usage

System setup

Add the plugin to your app:

use bevy::prelude::*;
use vleue_kinetoscope::AnimatedImagePlugin;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(AnimatedImagePlugin);
}

Play an animated gif

Spawn an entity with the component AnimatedImageController:

use bevy::prelude::*;
use vleue_kinetoscope::*;

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn(Camera2d);

    commands.spawn(AnimatedImageController::play(asset_server.load("cube.gif")));
}

Play an animated WebP

Spawn an entity with the component AnimatedImageController:

use bevy::prelude::*;
use vleue_kinetoscope::*;

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn(Camera2d);

    commands.spawn(AnimatedImageController::play(asset_server.load("cube.webp")));
}

Streaming animations

It is possible to stream an animated GIF or WebP, so that it's not loaded completely into Memory:

use bevy::prelude::*;
use vleue_kinetoscope::*;

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn(Camera2d);

    commands.spawn(StreamingAnimatedImageController::play(asset_server.load("big-buck-bunny.webp")));
}

Streaming animated images are only played once, and can't loop.

Wasm is not yet supported for streaming animations.

Bevy Support

Bevy vleue_kinetoscope
main main
0.16 0.4
0.15 0.3
0.14 0.2
0.13 0.1
Commit count: 46

cargo fmt