Genesys
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
- Use crates/mods in modules
- Custom derive for modules
- Impl Default for tuple structs
- Generate enums
- Identify single tuple structs primitive type to generate relevant ops code
Usage
build.rs
use env;
use PathBuf;
main.rs/lib.rs
Add this to the beginning of your file
include!;
use *;
Cheat sheet, genesys format
# Default use, applied to all modules
global_use {
# Comma-separated modules/functions
bevy::prelude::Entity,
bevy::prelude::*
}
# Default derive, applied to all components
global_derive (Debug, Entity)
# Components are either empty structs, tuple structs or named structs (enum comming soon)
# One component declaration per line
MyComponent
MyTupleComponent str # str gets translated to String
MyNamedComponent name: String, weight: f32
# Modules are declared with the modulus symbol "%"
%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
}
}