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 游戏开发

MIT/Apache

29KB
54

seldom_interop

Crates.io MIT/Apache 2.0 Crates.io

seldom_interop 是一个包含Bevy组件互操作性特质的包。这有助于使用替代组件(例如,使用内置组件如 Transform 而不是使用位置)来表示概念的应用程序和第三方插件与操作此类组件的其他第三方插件进行互操作。它目前仅提供位置组件的特质,并将根据需要添加更多特质。如果您希望为您的插件添加其他互操作性特质,请提交一个问题!

此插件仍在维护中,但如果我决定将其功能合并到 seldom_map_nav 中,则可能会停止维护。许可证是宽泛的,因此请随意将其源代码分支到您的项目中或复制到您的项目中!

功能

  • 位置特质: Position2Position3

用法

添加到您的 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