1个不稳定版本
0.1.0 | 2021年11月12日 |
---|
#1426 在 编码
255KB
5.5K SLoC
Heavy ECS - hecs
适配器
该crate存在是为了在hecs
和Heavy之间提供一个适配器,因为当前的Heavy依赖于几个我们希望尽快合并到上游的hecs
扩展。直到那时,这个crate包含我们分叉的hecs
源代码的直接副本,受与hecs
相同的许可证约束。
一旦分叉代码合并到上游,这个crate将变成一个包含单行重导出hecs
的单个模块。
这个crate不期望在Heavy之外使用。
lib.rs
:
方便的ECS
hecs提供了一个高性能、简洁的实体-组件-系统(ECS)世界。它是一个库,而不是一个框架。在不需要显式的“系统”抽象的情况下,World
的实体可以轻松地从常规代码中查询。以任何您喜欢的方式组织您的应用程序!
按重要性排序,hecs追求以下目标:
- 快速遍历
- 简单的接口
- 小的依赖关系
- 排除外部可实现的功能
let mut world = World::new();
// Nearly any type can be used as a component with zero boilerplate
let a = world.spawn((123, true, "abc"));
let b = world.spawn((42, false));
// Systems can be simple for loops
for (id, (number, &flag)) in world.query_mut::<(&mut i32, &bool)>() {
if flag { *number *= 2; }
}
// Random access is simple and safe
assert_eq!(*world.get::<i32>(a).unwrap(), 246);
assert_eq!(*world.get::<i32>(b).unwrap(), 42);
依赖关系
~1–1.3MB
~20K SLoC