13 个版本
0.6.1 | 2023年10月19日 |
---|---|
0.6.0 | 2022年9月4日 |
0.3.3 | 2020年9月15日 |
0.3.2 | 2020年5月28日 |
0.1.3 | 2020年3月28日 |
#153 在 并发
每月 25 次下载
62KB
1.5K SLoC
这是什么?
shipyard ECS 的场景图 Crate
基于并重新导出 shipyard-hierarchy
泛型于特定的数字类型,并与第三方数学库互操作(可选择携带自己的数学库)
如何使用
目前 - 直接指向仓库... 由于它们依赖于 shipyard master 分支,最新的更新不在 crates.io 上
测试中有强大的示例。故意将实时演示保持在最小的 2d 示例,而不是花哨的示例,以便更容易学习。
所有情况
-
首先,确定您的数学库 - 默认情况下有一个非常小的本地库,以及与
nalgebra
f64 的互操作。启用相应的功能(例如native_math
或nalgebra_math
)。 -
在所有地方使用
shipyard_scenegraph::prelude::*
-
调用
shipyard_scenegraph::init::init_scenegraph()
创建根节点 -
要向树中添加实体,借用
SceneGraphStoragesMut
然后在上面调用spawn_child_*()
-
要更新事物 - 可变借用
Translation
、Rotation
、Scale 和
Origin
。还有一个用于更新单个实体的辅助视图(《TrsStoragesMut》)。或者 - 直接与 LocalTransform 一起工作(但请注意,它目前无法回传。请参阅 https://github.com/dakom/shipyard-scenegraph/issues/22) -
运行
local_transform_sys
和world_transform_sys
系统(即每次渲染器或物理时间戳),所有局部和世界转换将传播。 -
不可变借用
WorldTransform
并渲染
组件和系统
组件
- TransformRoot(pub EntityId) - 树的根节点
- DirtyTransform(pub bool) - 标记脏转换的组件
- Translation
- Rotation
- Scale
- 原始
- 本地变换
- 全局变换
系统
- local_transform_sys
- world_transform_sys
自定义视图
- SceneGraphStoragesMut
- TrsStoragesMut
提供了对支持的数学互操作库的别名,这些具体类型在序言中。
运行测试
核心测试: cargo test --features native_math -- --nocapture
Nalgebra 兼容测试: cargo test --features nalgebra_math -- --nocapture
更多数学库互操作
通过 native_math
功能包含了一个最小且高效的数学库,它足够用于小型演示 - 然而,它非常基础,仅包含处理基本变换所需的基本操作(矩阵乘法、从四元数旋转等)。
如果您正在使用 nalgebra,可以通过启用 nalgebra_math
功能来获得底层类型。
其他库可以很容易地添加。
如果在场景图中使用多个数学库,出于某种原因,请不要从序言中导入,而是直接从数学模块导入(这非常不常见 - 连测试都不这样做)
额外内容
由于它基于 shipyard-hierarchy,因此可用于遍历和更新层次结构的方法相同。
场景图给父和子组件提供了一个标签结构 SceneGraph
,并且不应与任何其他层次结构冲突,甚至在同一个世界中。
依赖项
约2-3.5MB
约68K SLoC