#component #hecs #world #ecs #heavy #entities #patching

no-std hv-ecs

hecs的封装,为Heavy提供重导出/版本补丁

1个不稳定版本

0.1.0 2021年11月12日

#1426编码


hv-guarded-borrow中使用

MIT/Apache

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