ron asset manager
A dead simple crate to manage Ron based assets which depend on other assets.
Assets can hot reload into a running game state. Use it to your advantage!
Any asset, that can be loaded from an asset path is supported!
Harness the power of external configuration.
Shandle<T> is a thin wrapper around Handle<T> that can be serialized by
behaving like a asset path in serialized form.
This crates provides the RonAsset derive macro, RonAssetPlugin and the Shandle.
The idea is to mark asset dependencies via attribute.
| attribute | what is does |
|---|---|
asset |
a single Shandle<A> field |
asset_vec |
a Vec<Shandle<A>> field |
asset_map |
a HashMap<K,Shandle<A>> field |
asset_struct |
A struct deriving RonAsset with its own asset attributes |
asset_struct_vec |
a Vec of RonAssets |
asset_struct_map |
a HashMap of RonAssets |
!Nested structs do not need to be assets themself. Checkout the simple example!
cargo run --example simple
Example
Checkout the simple example. It loads a multi-sprite car with multiple tires each holding unique information
and assets.
// add the provided plugin for your asset struct.
// this steps also initializes the asset for bevy.
// that's all, time to use it
gandalf.ron:
(
name: "Gandalf",
health: 42069,
sprite: "sprite/gandalf.png",
sounds: {
"death" : "audio/gandalf_rebirth.ogg",
"hit" : "audio/gandalf_hurt.ogg",
"angry" : "audio/gandalf_calm.ogg",
},
spells: [
"spells/light.ron",
"spells/cloth_swap.ron",
],
staff : (
damage: 99,
cooldown: 1,
sprite: "staff.png"
)
)