1 个不稳定版本
0.10.0 | 2022 年 1 月 8 日 |
---|
606 在 图像 中
每月 89 次下载
用于 9 个 crate(直接使用 3 个)
70KB
126 行
Ivy
这是什么
Ivy 是一个用于 Rust 的模块化应用程序和游戏框架。
此 crate 提供了多个 ivy
crate 的合并、重新导出以及别名。
功能
- Vulkan 高级渲染
- PBR 渲染和后期处理
- 渲染图抽象
- 碰撞检测和真实物理响应
- 由 ECS 驱动的架构
- 使用观察者模式进行延迟动态事件
- 用于任意凸形状的射线投射
- 基于句柄的动态存储
- 具有可组合向量生成的输入系统
- 具有可配置小部件和定位系统的 UI 系统
- ... 更多
如何工作
层
程序的核心是一个应用程序。 [core::App
]。它定义了更新循环和事件处理。
从那里,逻辑被提取到层中,每个迭代都会运行这些层。在层内,用户可以自由地进行任何操作,从读取套接字,使用 vulkan 进行渲染,到调度 ECS 工作负载。
由于分层设计,几个高级概念可以协同工作而不互相干扰,还可以根据不同的配置插入。
可以将层视为高级容器中的插件。
层的存在允许从其他 crate 导入行为,而不必担心实现细节。
层间通信
应用程序公开了两种层可以相互影响的方式。
world
包含具有所有实体和组件的 ECS 世界。resources
是通过句柄访问的 typed 存储。这对于存储纹理、模型或要在层之间以及层内共享的单例很有用,并且具有动态借用检查。events
促进了一个广播频道,其中可以发送和监听事件。每个层都可以设置接收器并迭代特定类型的发送事件。这最好用于低频数据,以避免忙等待,如用户输入、状态更改等。
请参阅 [core::Layer
] 的文档
依赖关系
~0.3–1MB
~22K SLoC