48 个版本
0.7.7 | 2024 年 1 月 28 日 |
---|---|
0.7.6 | 2023 年 11 月 11 日 |
0.7.5 | 2023 年 9 月 11 日 |
0.7.4 | 2023 年 4 月 10 日 |
0.3.3 | 2021 年 7 月 28 日 |
23 在 模拟 中
每月 246 次下载
110KB
2.5K SLoC
rs-ecs
为赫尔姆霍兹环境研究中心 EcoEpi 项目组的项目模拟模型开发的一个相当简单的实体组件系统 (ECS)。设计基于 hecs,但 API 表面积显著减少。
它还有一些针对我们使用案例的具体更改和补充
- 它的借用检查不是线程安全的。单线程模拟通常更可取,因为它们的执行是明显确定性的。此外,并行运行多个实例通常可以获得最高的吞吐量。
- 它通过使用
QueryRef::map
方法 对实体标识符进行平均随机访问以查询结果。这可以用于有效地遍历实体之间类似图的关系。 - 可以使用
World::transfer
方法 在世界之间传输实体而无需序列化。我们使用此方法从模拟中完全删除实体,同时保留它们的全部动态状态以供以后检查。 - 可以将世界快照以启用例如回滚网络代码。由于稳定的 Rust 中缺少特殊化,这需要一个
Cloner
来收集所有组件类型的克隆和复制方法。 World::exchange
方法 结合了删除某些组件然后为给定实体添加其他组件。这可以用于优化类型级别的状态机。- 虽然查询必须从单个线程发送,但可以使用多个线程通过
QueryRef::par_iter
方法迭代其结果。此方法为可选,使用Rayon实现,并通过rayon
Cargo功能启用。
许可证
许可下
任选其一。
贡献
除非你明确表示,否则根据Apache-2.0许可证定义的,你有意提交以包含在工作中的任何贡献,将按上述方式双许可,不附加任何额外条款或条件。
依赖项
~0–265KB