parent
8bc7320a35
commit
4f1a65113d
@ -105,6 +105,7 @@ impl ExclusiveSystem for ExclusiveSystemCoerced {
|
|||||||
|
|
||||||
fn run(&mut self, world: &mut World, resources: &mut Resources) {
|
fn run(&mut self, world: &mut World, resources: &mut Resources) {
|
||||||
self.system.run((), world, resources);
|
self.system.run((), world, resources);
|
||||||
|
self.system.apply_buffers(world, resources);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn initialize(&mut self, world: &mut World, resources: &mut Resources) {
|
fn initialize(&mut self, world: &mut World, resources: &mut Resources) {
|
||||||
@ -123,3 +124,38 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parallel_with_commands_as_exclusive() {
|
||||||
|
use crate::{
|
||||||
|
Commands, Entity, IntoExclusiveSystem, IntoSystem, ResMut, Resources, Stage, SystemStage,
|
||||||
|
With, World,
|
||||||
|
};
|
||||||
|
let mut world = World::new();
|
||||||
|
let mut resources = Resources::default();
|
||||||
|
|
||||||
|
fn removal(
|
||||||
|
commands: &mut Commands,
|
||||||
|
query: Query<Entity, With<f32>>,
|
||||||
|
mut counter: ResMut<usize>,
|
||||||
|
) {
|
||||||
|
for entity in query.iter() {
|
||||||
|
*counter += 1;
|
||||||
|
commands.remove_one::<f32>(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut stage = SystemStage::parallel().with_system(removal.system());
|
||||||
|
world.spawn((0.0f32,));
|
||||||
|
resources.insert(0usize);
|
||||||
|
stage.run(&mut world, &mut resources);
|
||||||
|
stage.run(&mut world, &mut resources);
|
||||||
|
assert_eq!(*resources.get::<usize>().unwrap(), 1);
|
||||||
|
|
||||||
|
let mut stage = SystemStage::parallel().with_system(removal.exclusive_system());
|
||||||
|
world.spawn((0.0f32,));
|
||||||
|
resources.insert(0usize);
|
||||||
|
stage.run(&mut world, &mut resources);
|
||||||
|
stage.run(&mut world, &mut resources);
|
||||||
|
assert_eq!(*resources.get::<usize>().unwrap(), 1);
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user