diff --git a/crates/bevy_ecs/src/schedule/condition.rs b/crates/bevy_ecs/src/schedule/condition.rs index 916fc12ceaac3d..ea1c1380dd55b9 100644 --- a/crates/bevy_ecs/src/schedule/condition.rs +++ b/crates/bevy_ecs/src/schedule/condition.rs @@ -273,11 +273,11 @@ pub mod common_conditions { /// app.run(&mut world); /// assert_eq!(world.resource::().0, 1); /// ``` - pub fn resource_exists() -> impl FnMut(Option>) -> bool + Clone + pub fn resource_exists(res: Option>) -> bool where T: Resource, { - move |res: Option>| res.is_some() + res.is_some() } /// Generates a [`Condition`](super::Condition)-satisfying closure that returns `true` @@ -396,11 +396,11 @@ pub mod common_conditions { /// app.run(&mut world); /// assert_eq!(world.resource::().0, 1); /// ``` - pub fn resource_added() -> impl FnMut(Option>) -> bool + Clone + pub fn resource_added(res: Option>) -> bool where T: Resource, { - move |res: Option>| match res { + match res { Some(res) => res.is_added(), None => false, } @@ -453,11 +453,11 @@ pub mod common_conditions { /// app.run(&mut world); /// assert_eq!(world.resource::().0, 51); /// ``` - pub fn resource_changed() -> impl FnMut(Res) -> bool + Clone + pub fn resource_changed(res: Res) -> bool where T: Resource, { - move |res: Res| res.is_changed() + res.is_changed() } /// Generates a [`Condition`](super::Condition)-satisfying closure that returns `true` @@ -510,11 +510,11 @@ pub mod common_conditions { /// app.run(&mut world); /// assert_eq!(world.resource::().0, 51); /// ``` - pub fn resource_exists_and_changed() -> impl FnMut(Option>) -> bool + Clone + pub fn resource_exists_and_changed(res: Option>) -> bool where T: Resource, { - move |res: Option>| match res { + match res { Some(res) => res.is_changed(), None => false, } @@ -694,8 +694,8 @@ pub mod common_conditions { /// app.run(&mut world); /// assert_eq!(world.resource::().0, 1); /// ``` - pub fn state_exists() -> impl FnMut(Option>>) -> bool + Clone { - move |current_state: Option>>| current_state.is_some() + pub fn state_exists(current_state: Option>>) -> bool { + current_state.is_some() } /// Generates a [`Condition`](super::Condition)-satisfying closure that returns `true` @@ -866,8 +866,8 @@ pub mod common_conditions { /// app.run(&mut world); /// assert_eq!(world.resource::().0, 2); /// ``` - pub fn state_changed() -> impl FnMut(Res>) -> bool + Clone { - move |current_state: Res>| current_state.is_changed() + pub fn state_changed(current_state: Res>) -> bool { + current_state.is_changed() } /// Generates a [`Condition`](super::Condition)-satisfying closure that returns `true` @@ -947,8 +947,8 @@ pub mod common_conditions { /// app.run(&mut world); /// assert_eq!(world.resource::().0, 1); /// ``` - pub fn any_with_component() -> impl FnMut(Query<(), With>) -> bool + Clone { - move |query: Query<(), With>| !query.is_empty() + pub fn any_with_component(query: Query<(), With>) -> bool { + !query.is_empty() } /// Generates a [`Condition`](super::Condition)-satisfying closure that returns `true` @@ -1199,17 +1199,17 @@ mod tests { Schedule::default().add_systems( (test_system, test_system) .distributive_run_if(run_once()) - .distributive_run_if(resource_exists::>()) - .distributive_run_if(resource_added::>()) - .distributive_run_if(resource_changed::>()) - .distributive_run_if(resource_exists_and_changed::>()) + .distributive_run_if(resource_exists::>) + .distributive_run_if(resource_added::>) + .distributive_run_if(resource_changed::>) + .distributive_run_if(resource_exists_and_changed::>) .distributive_run_if(resource_changed_or_removed::>()) .distributive_run_if(resource_removed::>()) - .distributive_run_if(state_exists::()) + .distributive_run_if(state_exists::) .distributive_run_if(in_state(TestState::A).or_else(in_state(TestState::B))) - .distributive_run_if(state_changed::()) + .distributive_run_if(state_changed::) .distributive_run_if(on_event::()) - .distributive_run_if(any_with_component::()) + .distributive_run_if(any_with_component::) .distributive_run_if(not(run_once())), ); } diff --git a/crates/bevy_ecs/src/system/mod.rs b/crates/bevy_ecs/src/system/mod.rs index d1111f18f1a088..630eb22bdff1d4 100644 --- a/crates/bevy_ecs/src/system/mod.rs +++ b/crates/bevy_ecs/src/system/mod.rs @@ -1740,7 +1740,7 @@ mod tests { res.0 += 2; }, ) - .distributive_run_if(resource_exists::().or_else(resource_exists::())), + .distributive_run_if(resource_exists::.or_else(resource_exists::)), ); sched.initialize(&mut world).unwrap(); sched.run(&mut world); diff --git a/crates/bevy_pbr/src/wireframe.rs b/crates/bevy_pbr/src/wireframe.rs index dc1075090c8917..e779a1668d2f98 100644 --- a/crates/bevy_pbr/src/wireframe.rs +++ b/crates/bevy_pbr/src/wireframe.rs @@ -43,10 +43,10 @@ impl Plugin for WireframePlugin { .add_systems( Update, ( - global_color_changed.run_if(resource_changed::()), + global_color_changed.run_if(resource_changed::), wireframe_color_changed, apply_wireframe_material, - apply_global_wireframe_material.run_if(resource_changed::()), + apply_global_wireframe_material.run_if(resource_changed::), ), ); } diff --git a/examples/ecs/run_conditions.rs b/examples/ecs/run_conditions.rs index 5e115e5f18bafc..b2fbea9176ea58 100644 --- a/examples/ecs/run_conditions.rs +++ b/examples/ecs/run_conditions.rs @@ -17,12 +17,12 @@ fn main() { increment_input_counter // The common_conditions module has a few useful run conditions // for checking resources and states. These are included in the prelude. - .run_if(resource_exists::()) + .run_if(resource_exists::) // `.or_else()` is a run condition combinator that only evaluates the second condition // if the first condition returns `false`. This behavior is known as "short-circuiting", // and is how the `||` operator works in Rust (as well as most C-family languages). // In this case, the `has_user_input` run condition will be evaluated since the `Unused` resource has not been initialized. - .run_if(resource_exists::().or_else( + .run_if(resource_exists::.or_else( // This is a custom run condition, defined using a system that returns // a `bool` and which has read-only `SystemParam`s. // Both run conditions must return `true` in order for the system to run. @@ -34,7 +34,7 @@ fn main() { // if the first condition returns `true`, analogous to the `&&` operator. // In this case, the short-circuiting behavior prevents the second run condition from // panicking if the `InputCounter` resource has not been initialized. - .run_if(resource_exists::().and_then( + .run_if(resource_exists::.and_then( // This is a custom run condition in the form of a closure. // This is useful for small, simple run conditions you don't need to reuse. // All the normal rules still apply: all parameters must be read only except for local parameters.