Just a simple text format for declaring basic components and convert them to rust data types under build-time.
No more repetitive macro calls or extensive declarations for simple structures, just a blissfull list of components with simple control of use of crate/module/function and derive for all, modules or specific structs.
Empowered by pest
Todo
build.rs ```rust use std::env; use std::path::PathBuf;
fn main() { println!("cargo:rerun-if-changed=src/components"); let outpath = PathBuf::from(env::var("OUTDIR").unwrap()); genesys::generate("src/components", out_path.join("components.rs")).unwrap(); } ```
main.rs/lib.rs
Add this to the beginning of your file ```rust include!(concat!(env!("OUT_DIR"), "/components.rs"));
```
```
global_use { # Comma-separated modules/functions bevy::prelude::Entity, bevy::prelude::* }
global_derive (Debug, Entity)
MyComponent MyTupleComponent str # str gets translated to String MyNamedComponent name: String, weight: f32
%object { # Local use(overrides global use) use { entities::MySpecialEntity }
# Local derive(overrides global)
derive (MySpecialEntity)
Name str
Weight f32
%item {
Item
Food
TradeGood
Weapon
Armor
}
} ```
cargo run -- example/components # Prints components as rust
cargo run -- example/components components.rs # Writes output to components.rs