Add RunIfExists
command for only executing if a given entity exists.
This commit is contained in:
parent
27baaceaea
commit
0b9fd0921d
22
src/commands.rs
Normal file
22
src/commands.rs
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
use bevy::{
|
||||||
|
ecs::{system::Command, world::EntityMut},
|
||||||
|
prelude::*,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct RunIfExistsCommand<F>(Entity, F);
|
||||||
|
|
||||||
|
impl<F: FnOnce(EntityMut) + Send + Sync + 'static> Command for RunIfExistsCommand<F> {
|
||||||
|
fn write(self, world: &mut World) {
|
||||||
|
world.get_entity_mut(self.0).map(self.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait RunIfExistsExt {
|
||||||
|
fn run_if_exists(&mut self, entity: Entity, f: impl FnOnce(EntityMut) + Send + Sync + 'static);
|
||||||
|
}
|
||||||
|
|
||||||
|
impl RunIfExistsExt for Commands<'_, '_> {
|
||||||
|
fn run_if_exists(&mut self, entity: Entity, f: impl FnOnce(EntityMut) + Send + Sync + 'static) {
|
||||||
|
self.add(RunIfExistsCommand(entity, f));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user