#bevy #query #gamedev

no-std bevy_two_entities

A few convenience traits for working with Bevy Queries

4 releases (breaking)

Uses new Rust 2024

new 0.4.0 Apr 25, 2025
0.3.0 Dec 1, 2024
0.2.0 Jul 4, 2024
0.1.0 May 16, 2024

#1283 in Game dev

Download history 8/week @ 2025-02-01 5/week @ 2025-02-08 11/week @ 2025-02-15 12/week @ 2025-02-22 11/week @ 2025-03-01 6/week @ 2025-03-08 5/week @ 2025-03-15 3/week @ 2025-04-05 10/week @ 2025-04-12 52/week @ 2025-04-19

67 downloads per month

MIT/Apache

20KB
397 lines

bevy_two_entities

crates.io docs Following released Bevy versions

A tiny crate offering a few convenience traits on Bevy's Query and (&Query, &Query) for scenarios involving exactly two entities.

Examples

fn game_over(
    collisions: Query<&Collision>,
    players: Query<(), With<Player>>,
    enemies: Query<(), With<Enemy>>,
    mut next_state: ResMut<NextState<GameState>>,
) {
    for collision in &collisions {
        if (&players, &enemies).both(collision.0, collision.1) {
            next_state.set(GameState::GameOver);
        }
    }
}
fn damage_enemy(
    collisions: Query<&Collision>,
    players: Query<(), With<Player>>,
    mut enemies: Query<&mut HitPoints, With<Enemy>>,
) {
    for collision in &collisions {
        let mut queries = (&players, &mut enemies);
        let Some((_, mut enemy_hp)) = queries.get_both_mut(collision.0, collision.1) else {
            continue;
        };

        enemy_hp.0 -= 1;
    }
}

Compatibility

bevy_two_entities bevy
0.4 0.16
0.3 0.15
0.2 0.14
0.1 0.13

Dependencies

~18–30MB
~522K SLoC