Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/choppedstudio/bevy_ecs_markers

🏷️ Markers for Bevy ECS Entities
https://github.com/choppedstudio/bevy_ecs_markers

bevy

Last synced: 3 months ago
JSON representation

🏷️ Markers for Bevy ECS Entities

Awesome Lists containing this project

README

        

# Bevy ECS Markers

[![Crates.io](https://img.shields.io/crates/v/bevy_ecs_markers.svg)](https://crates.io/crates/bevy_ecs_markers)
[![MIT/Apache 2.0](https://img.shields.io/badge/license-MIT%2FApache-blue.svg)](https://github.com/ChoppedStudio/bevy_ecs_markers#license)

Adds the support for marking entites and fetching them in queries

## Example

View more examples [here](examples/)

```rust
#[derive(EntityMarker)]
enum Players {
Red,
Blue,
Green,
Yellow,
}

#[derive(Component)]
struct Player {
field: usize,
}

fn main() {
App::new()
.add_plugins(LogPlugin::default())
.init_marker::()
.add_systems(Startup, (setup, move_red_player).chain())
.run();
}

fn setup(mut commands: Commands, mut players: MarkerMut) {
players[Players::Red].assign(commands.spawn(Player { field: 2 }).id());
players[Players::Blue].assign(commands.spawn(Player { field: 5 }).id());
players[Players::Green].assign(commands.spawn(Player { field: 7 }).id());
players[Players::Yellow].assign(commands.spawn(Player { field: 1 }).id());
}

fn move_red_player(mut query: Query<&mut Player>, current: Marker) {
let Ok(mut player) = query.get_mut(current[Players::Red].id()) else {
warn!("Red Player not set yet!");
return;
};

let old = player.field;
player.field += 2;
let new = player.field;

info!("Player moved from field {old} to field {new}");
}
```

## License

- MIT License ([LICENSE-MIT](LICENSE-MIT) or [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT))
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0))

at your option.