6 个版本 (破坏性更新)
0.5.0 | 2023年11月12日 |
---|---|
0.4.0 | 2023年7月15日 |
0.3.0 | 2023年3月12日 |
0.2.0 | 2022年11月13日 |
0.0.1 | 2022年10月4日 |
#1681 in 游戏开发
29KB
54 行
seldom_interop
seldom_interop
是一个包含Bevy组件互操作性特质的包。这有助于使用替代组件(例如,使用内置组件如 Transform
而不是使用位置)来表示概念的应用程序和第三方插件与操作此类组件的其他第三方插件进行互操作。它目前仅提供位置组件的特质,并将根据需要添加更多特质。如果您希望为您的插件添加其他互操作性特质,请提交一个问题!
此插件仍在维护中,但如果我决定将其功能合并到 seldom_map_nav
中,则可能会停止维护。许可证是宽泛的,因此请随意将其源代码分支到您的项目中或复制到您的项目中!
功能
- 位置特质:
Position2
和Position3
用法
添加到您的 Cargo.toml
# Replace * with your desired version
[dependencies]
seldom_interop = "*"
对于您希望添加互操作性的组件的应用程序和插件,实现您组件的相关特质。对于希望以互操作性方式使用组件的插件,向您的插件和相关系统添加类型参数。例如
use std::marker::PhantomData;
use bevy::prelude::*;
use seldom_interop::prelude::*;
struct MyPlugin<T: Position2<Position = Vec2> = Transform>(PhantomData<T>);
impl<T: Position2<Position = Vec2>> Plugin for MyPlugin<T> {
fn build(&self, app: &mut App) {
app.add_system(my_system::<T>);
}
}
fn my_system<T: Position2<Position = Vec2>>(mut positions: Query<&mut T>, time: Res<Time>) {
for mut position in &mut positions {
let mut position_vec = position.get();
position_vec.x += time.delta_seconds();
position.set(position_vec);
}
}
兼容性
Bevy | seldom_interop |
---|---|
0.12 | 0.5 |
0.11 | 0.4 |
0.10 | 0.3 |
0.9 | 0.2 |
0.8 | 0.1 |
许可证
seldom_interop
根据您的选择以 MIT 和 Apache 2.0 许可证双授权。
贡献
除非您明确声明,否则您有意提交以供包含在根据 Apache-2.0 许可证定义的工作中的任何贡献,都将按上述方式双授权,而无需任何额外条款或条件。
依赖项
~22MB
~403K SLoC