#bevy

bevy_ecs_markers

🏷️ Markers for Bevy ECS Entities

10 releases (5 stable)

1.0.4 Dec 26, 2022
1.0.0 Dec 24, 2022
0.1.4 Dec 23, 2022

#568 in Game dev

36 downloads per month

MIT/Apache

9KB
95 lines

Bevy ECS Markers

Crates.io MIT/Apache 2.0

Adds the support for marking entites and fetching them in queries

Example

View more examples here

#[derive(EntityMarker)]
enum Players {
    Red,
    Blue,
}

#[derive(EntityMarker)]
#[marker(data_name = "CurrentPlayerMarker")] // specify how the generated MarkerData struct should be called
struct CurrentPlayer;

#[derive(Component)]
struct Player(u32);

fn setup(
    mut commands: Commands,
    mut markers: MarkerMut<Players>,
    mut current: MarkerMut<CurrentPlayer>,
) {
    let red = commands.spawn(Player(12)).id();
    markers[Players::Red] = red;

    let blue = commands.spawn(Player(7)).id();
    markers[Players::Blue] = blue;

    **current = blue;
}

fn get_red_player(mut query: Query<&mut Player>, markers: Marker<Players>) {
    if let Ok(mut player) = query.get_mut(markers[Players::Red]) {
        player.0 = 15;
    }
}

fn get_current_player(mut query: Query<&mut Player>, current: Marker<CurrentPlayer>) {
    if let Ok(mut player) = query.get_mut(**current) {
        player.0 = 2;
    }
}

License

at your option.

Dependencies

~5–16MB
~296K SLoC