12个版本 (破坏性)
0.9.0 | 2020年8月29日 |
---|---|
0.7.0 | 2020年8月27日 |
#952 in 游戏开发
每月21次下载
28KB
514 行
Nano-ECS
基于宏的裸骨实体-组件-系统
- 每个实体最多64个组件
- 在相同的数组中顺序存储组件
- 启用/禁用组件的掩码
use nano_ecs::*;
#[derive(Clone)]
pub struct Position(pub f32);
#[derive(Clone)]
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;
});
}
设计
ecs!
宏生成一个World
和一个Component
对象。
可以与实现Clone
的任何Rust数据结构一起使用。
声明的组件的顺序用于为每个组件分配一个索引。这个索引用于每个实体的掩码以及正确处理切片内存。
- 所有组件都存储在
World
内部的一个数组中。 - 所有实体都有一个指向组件的切片
- 所有实体都有一个启用/禁用组件的掩码