bevy_asset_ron

Crates.iobevy_asset_ron
lib.rsbevy_asset_ron
version0.4.0
sourcesrc
created_at2021-02-01 03:11:18.682538
updated_at2022-04-16 09:16:21.626299
descriptionCustom RON assets for Bevy
homepage
repositoryhttps://github.com/inodentry/bevy_asset_ron
max_upload_size
id349108
size87,584
Ida "Iyes" (inodentry)

documentation

https://docs.rs/bevy_asset_ron/latest/bevy_asset_ron/

README

Custom RON Assets for Bevy

This crate allows you to easily register arbitrary custom data to be loaded by Bevy as an Asset, from files using the RON format.

It minimizes the amount of boilerplate needed for such custom asset types.

You only need to derive the required traits on your custom type, and add a RonAssetPlugin to your App!

Caveat: you need to come up with a unique file name extension for each new asset type. Bevy also requires a unique UUID for TypeUuid.

#[derive(serde::Deserialize)]
#[derive(TypeUuid)]
#[uuid = "1df82c01-9c71-4fa8-adc4-78c5822268f8"]
struct GameItemDescriptionAsset {
    damage: f32,
    durability: f32,
    min_level: u8,
}

fn main() {
    App::new()
        // bevy
        .add_plugins(DefaultPlugins)
        // our asset
        .add_plugin(
            // load `*.item` files
            RonAssetPlugin::<GameItemDescriptionAsset>::new(&["item"])
        )
        .add_startup_system(setup)
        .run();
}

fn setup(server: Res<AssetServer>) {
    // load our item configs!
    let handles = server.load_folder("items");

    // TODO: store the handles somewhere
}

Now you can just create files like assets/items/big_gun.item:

(
  damage: 25.0,
  durability: 170.0,
  min_level: 4,
)

See examples/load_rons.rs for a more elaborate example!

$ cargo run --example load_rons

Compatible Bevy versions

Compatibility of published bevy_asset_ron versions:

bevy bevy_asset_ron
0.7 0.4
0.6 0.3
0.5 0.2
0.4 0.1
Commit count: 16

cargo fmt