A bare-bones macro-based Entity-Component-System
```rust use nano_ecs::*;
pub struct Position(pub f32);
pub struct Velocity(pub f32);
ecs!{4: Position, Velocity}
fn main() { let mut world = World::new(); world.push(Position(0.0)); world.push((Position(0.0), Velocity(0.0))); let dt = 1.0; system!(world, |pos: &mut Position, vel: &Velocity| { pos.0 = pos.0 + vel.0 * dt; }); } ```
The ecs!
macro generates a World
and Component
object.
Can be used with any Rust data structure that implements Clone
.
The order of declared components is used to assign every component an index. This index is used in the mask per entity and to handle slice memory correctly.
World
.