13 releases
Uses new Rust 2024
| 0.5.0 | Jan 29, 2026 |
|---|---|
| 0.4.1 | Apr 30, 2025 |
| 0.3.1 | Nov 30, 2024 |
| 0.2.0 | Jul 4, 2024 |
| 0.1.1 | May 24, 2024 |
#2330 in Game dev
1.5MB
563 lines
vleue_kinetoscope
Animated GIF and WebP player for Bevy.

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.18 | 0.5 |
| 0.16 | 0.4 |
| 0.15 | 0.3 |
| 0.14 | 0.2 |
| 0.13 | 0.1 |
Dependencies
~51MB
~1M SLoC