10个版本

0.3.1 2022年3月22日
0.3.0 2020年8月13日
0.2.0 2019年11月15日
0.1.6 2019年1月16日
0.1.1 2018年10月15日

⚠️ 报告的问题

#715 in 游戏开发

Download history 50/week @ 2024-03-11 34/week @ 2024-03-18 14/week @ 2024-03-25 84/week @ 2024-04-01 12/week @ 2024-04-08 19/week @ 2024-04-15 36/week @ 2024-04-22 21/week @ 2024-04-29 19/week @ 2024-05-06 34/week @ 2024-05-13 69/week @ 2024-05-20 52/week @ 2024-05-27 47/week @ 2024-06-03 39/week @ 2024-06-10 41/week @ 2024-06-17 52/week @ 2024-06-24

每月186次下载
5 个Crate中使用(4个直接使用)5

MIT 协议

44KB
895 代码行

DCES

DCES是一个提供实体组件系统变体的库:https://en.wikipedia.org/wiki/Entity–component–system

DCES的目标是创建一个轻量级的ECS库,无依赖项,用于UI框架和游戏引擎。它作为OrbTk的一部分开发,OrbTk是一个用Rust编写的(G)UI框架。OrbTk的所有小部件和属性都由DCES处理。

Build status MIT licensed crates.io docs.rs

特性

  • 使用组件注册实体
  • 在实体之间共享组件
  • 注册系统并读取/写入实体的组件
  • 按优先级排序系统执行
  • 注册实体组织容器(Vec、FxHashMap、自定义容器等)
  • 注册初始化和清理系统

用法

要将DCES包含到您的项目中,只需将依赖项行添加到您的Cargo.toml文件中

dces = "0.3"

要使用DCES主版本,只需将依赖项行添加到您的Cargo.toml文件中

dces = { git = https://gitlab.redox-os.org/redox-os/dces-rust.git }

示例

use dces::prelude::*;

#[derive(Default)]
struct Name {
    value: String,
}

struct PrintSystem;

impl System<EntityStore, ComponentStore> for PrintSystem {
    fn run(&self, ecm: &mut EntityComponentManager<EntityStore, ComponentStore>) {
        let (e_store, c_store) = ecm.stores();

        for entity in &e_store.inner {
            if let Ok(comp) = c_store.get::<Name>(*entity) {
                println!("{}", comp.value);
            }
        }
    }
}

fn main() {
    let mut world = World::<EntityStore, ComponentStore>::new();

    world
        .create_entity()
        .components(
            ComponentBuilder::new()
                .with(Name {
                    value: String::from("DCES"),
                })
                .build(),
        )
        .build();

    world.create_system(PrintSystem).build();
    world.run();
}

您可以在examples/目录中找到更多示例。

您可以通过执行以下命令启动basic示例

cargo run --example basic

构建和运行文档

您可以通过执行以下命令构建和运行最新文档

cargo doc --no-deps --open

未来特性

  • 具有相同优先级的系统并发
  • 高级示例
  • 书籍

灵感

常见问题解答

为什么不使用Specs?

因为DCES是为满足OrbTk的要求而开发的。为了减少OrbTk的依赖项树,DCES依赖于零个Crate。

许可

在MIT许可证下发布(LICENSE)。

依赖项

~135KB