7 releases (breaking)

0.6.0 Feb 18, 2024
0.5.0 Nov 22, 2023
0.4.0 Nov 8, 2023
0.3.0 Aug 12, 2023
0.1.1 Feb 19, 2023

#626 in Game dev

48 downloads per month
Used in bevy_trickfilm

MIT/Apache

39KB
301 lines

bevy_titan

crates.io Bevy tracking docs.rs MIT/Apache 2.0

bevy bevy_titan
0.13 0.6.0
0.12 0.4.0, 0.5.0
0.11 0.3.0
0.10 0.2.0
0.9 0.1.1

What is bevy_titan?

bevy_titan is a simple bevy plugin to load textures atlases from spritesheet manifest files written in ron. It also supports creating a texture atlas from multiple sprites and even multiple sprite sheets.

Quickstart

# In your Cargo.toml
bevy_titan = "0.6"

homogeneous-sprite-sheet.titan

//! A basic example of a titan file for a homogeneous sprite sheet.
(
    textures: [
        (
            path: "path-to-homogeneous-sprite-sheet",
            sprite_sheet: Homogeneous (
                tile_size: (
                    32,
                    32,
                ),
                columns: 4,
                rows: 1,
            ),
        ),
    ]
)

heterogeneous-sprite-sheet.titan

//! A basic example of a titan file for a heterogeneous sprite sheet.
(
    textures: [
        (
            path: "path-to-heterogeneous-sprite-sheet",
            sprite_sheet: Heterogeneous (
                [
                    (
                        (0, 0),
                        (16, 16),
                    ),
                    (
                        (16, 0),
                        (32, 128),
                    ),
                    (
                        (48, 0),
                        (64, 16),
                    ),
                ]
            ),
        ),
    ]
)

main.rs

//! A basic example of how to create a TextureAtlas asset from a titan file.
use bevy::prelude::*;
use bevy_titan::SpriteSheetLoaderPlugin;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(SpriteSheetLoaderPlugin)
        .add_systems(Startup, (setup, load_texture_atlas).chain())
        .run();
}

fn setup() {
    /* Setup camera and other stuff */
}

fn load_texture_atlas(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn(
        SpriteSheetBundle {
            texture_atlas: asset_server.load("example.titan"),
            ..default()
        }
    );
}

Documentation

Full API Documentation

File format specifiction

Examples

Future Work

  • Make use of bevy's AssetProcessor.

License

bevy_titan is free, open source and permissively licensed! Except where noted (below and/or in individual files), all code in this repository is dual-licensed under either:

at your option. This means you can select the license you prefer!

Some of the code was adapted from other sources. The assets included in this repository fall under different open licenses. See CREDITS.md for the details of the origin of the adapted code and licenses of those files.

Your contributions

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~40–81MB
~1M SLoC