9 releases (breaking)

0.8.1 Aug 27, 2024
0.7.0 Jul 7, 2024
0.6.0 Feb 18, 2024
0.5.0 Nov 22, 2023
0.2.0 Mar 27, 2023

#699 in Game dev

49 downloads per month
Used in bevy_trickfilm

MIT/Apache

41KB
290 lines

bevy_titan

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

bevy bevy_titan
main main
0.14 0.7.0, 0.8.1
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. Supports hot reloading.

Quickstart

# In your Cargo.toml
bevy_titan = "0.8.1"

homogeneous-sprite-sheet.titan.ron

//! A basic example of a titan ron 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.ron

//! A basic example of a titan ron 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((
        SpriteBundle {
            texture: asset_server.load("example.titan.ron#texture"),
            transform: Transform::from_scale(Vec3::splat(6.0)),
            ..default()
        },
        TextureAtlas {
            layout: asset_server.load("example.titan.ron#layout"),
            ..Default::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

~37–74MB
~1.5M SLoC