added any_match_filter
common condition (#17327)
# Objective resolves #17326. ## Solution Simply added the suggested run condition. ## Testing A self-explanatory run condition. Fully verified by the operation of `QueryFilter` in a system.
This commit is contained in:
parent
276d6e8014
commit
9ef1964d34
@ -398,6 +398,7 @@ pub mod common_conditions {
|
|||||||
change_detection::DetectChanges,
|
change_detection::DetectChanges,
|
||||||
event::{Event, EventReader},
|
event::{Event, EventReader},
|
||||||
prelude::{Component, Query, With},
|
prelude::{Component, Query, With},
|
||||||
|
query::QueryFilter,
|
||||||
removal_detection::RemovedComponents,
|
removal_detection::RemovedComponents,
|
||||||
system::{In, IntoSystem, Local, Res, Resource, System, SystemInput},
|
system::{In, IntoSystem, Local, Res, Resource, System, SystemInput},
|
||||||
};
|
};
|
||||||
@ -937,6 +938,12 @@ pub mod common_conditions {
|
|||||||
removals.read().count() > 0
|
removals.read().count() > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A [`Condition`]-satisfying system that returns `true`
|
||||||
|
/// if there are any entities that match the given [`QueryFilter`].
|
||||||
|
pub fn any_match_filter<F: QueryFilter>(query: Query<(), F>) -> bool {
|
||||||
|
!query.is_empty()
|
||||||
|
}
|
||||||
|
|
||||||
/// Generates a [`Condition`] that inverses the result of passed one.
|
/// Generates a [`Condition`] that inverses the result of passed one.
|
||||||
///
|
///
|
||||||
/// # Example
|
/// # Example
|
||||||
@ -1256,6 +1263,7 @@ where
|
|||||||
mod tests {
|
mod tests {
|
||||||
use super::{common_conditions::*, Condition};
|
use super::{common_conditions::*, Condition};
|
||||||
use crate as bevy_ecs;
|
use crate as bevy_ecs;
|
||||||
|
use crate::query::With;
|
||||||
use crate::{
|
use crate::{
|
||||||
change_detection::ResMut,
|
change_detection::ResMut,
|
||||||
component::Component,
|
component::Component,
|
||||||
@ -1396,6 +1404,7 @@ mod tests {
|
|||||||
.distributive_run_if(resource_removed::<TestResource>)
|
.distributive_run_if(resource_removed::<TestResource>)
|
||||||
.distributive_run_if(on_event::<TestEvent>)
|
.distributive_run_if(on_event::<TestEvent>)
|
||||||
.distributive_run_if(any_with_component::<TestComponent>)
|
.distributive_run_if(any_with_component::<TestComponent>)
|
||||||
|
.distributive_run_if(any_match_filter::<With<TestComponent>>)
|
||||||
.distributive_run_if(not(run_once)),
|
.distributive_run_if(not(run_once)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user