diff --git a/crates/bevy_ecs/src/change_detection.rs b/crates/bevy_ecs/src/change_detection.rs index 93ae4c1ca7..08710679a5 100644 --- a/crates/bevy_ecs/src/change_detection.rs +++ b/crates/bevy_ecs/src/change_detection.rs @@ -146,7 +146,7 @@ pub trait DetectChangesMut: DetectChanges { /// } /// # let mut world = World::new(); /// # world.insert_resource(Score(1)); - /// # let mut score_changed = IntoSystem::into_system(resource_changed::()); + /// # let mut score_changed = IntoSystem::into_system(resource_changed::); /// # score_changed.initialize(&mut world); /// # score_changed.run((), &mut world); /// # @@ -210,7 +210,7 @@ pub trait DetectChangesMut: DetectChanges { /// # let mut world = World::new(); /// # world.insert_resource(Events::::default()); /// # world.insert_resource(Score(1)); - /// # let mut score_changed = IntoSystem::into_system(resource_changed::()); + /// # let mut score_changed = IntoSystem::into_system(resource_changed::); /// # score_changed.initialize(&mut world); /// # score_changed.run((), &mut world); /// # diff --git a/crates/bevy_ecs/src/schedule/condition.rs b/crates/bevy_ecs/src/schedule/condition.rs index 916fc12cea..95173181e0 100644 --- a/crates/bevy_ecs/src/schedule/condition.rs +++ b/crates/bevy_ecs/src/schedule/condition.rs @@ -107,7 +107,7 @@ pub trait Condition: sealed::Condition { /// # fn my_system() {} /// app.add_systems( /// // `resource_equals` will only get run if the resource `R` exists. - /// my_system.run_if(resource_exists::().and_then(resource_equals(R(0)))), + /// my_system.run_if(resource_exists::.and_then(resource_equals(R(0)))), /// ); /// # app.run(&mut world); /// ``` @@ -145,7 +145,7 @@ pub trait Condition: sealed::Condition { /// # fn my_system(mut c: ResMut) { c.0 = true; } /// app.add_systems( /// // Only run the system if either `A` or `B` exist. - /// my_system.run_if(resource_exists::().or_else(resource_exists::())), + /// my_system.run_if(resource_exists::.or_else(resource_exists::)), /// ); /// # /// # world.insert_resource(C(false)); @@ -245,7 +245,7 @@ pub mod common_conditions { } } - /// Generates a [`Condition`](super::Condition)-satisfying closure that returns `true` + /// A [`Condition`](super::Condition)-satisfying system that returns `true` /// if the resource exists. /// /// # Example @@ -258,7 +258,7 @@ pub mod common_conditions { /// # let mut world = World::new(); /// app.add_systems( /// // `resource_exists` will only return true if the given resource exists in the world - /// my_system.run_if(resource_exists::()), + /// my_system.run_if(resource_exists::), /// ); /// /// fn my_system(mut counter: ResMut) { @@ -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` @@ -365,7 +365,7 @@ pub mod common_conditions { } } - /// Generates a [`Condition`](super::Condition)-satisfying closure that returns `true` + /// A [`Condition`](super::Condition)-satisfying system that returns `true` /// if the resource of the given type has been added since the condition was last checked. /// /// # Example @@ -379,7 +379,7 @@ pub mod common_conditions { /// app.add_systems( /// // `resource_added` will only return true if the /// // given resource was just added - /// my_system.run_if(resource_added::()), + /// my_system.run_if(resource_added::), /// ); /// /// fn my_system(mut counter: ResMut) { @@ -396,17 +396,17 @@ 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, } } - /// Generates a [`Condition`](super::Condition)-satisfying closure that returns `true` + /// A [`Condition`](super::Condition)-satisfying system that returns `true` /// if the resource of the given type has had its value changed since the condition /// was last checked. /// @@ -431,11 +431,11 @@ pub mod common_conditions { /// // `resource_changed` will only return true if the /// // given resource was just changed (or added) /// my_system.run_if( - /// resource_changed::() + /// resource_changed:: /// // By default detecting changes will also trigger if the resource was /// // just added, this won't work with my example so I will add a second /// // condition to make sure the resource wasn't just added - /// .and_then(not(resource_added::())) + /// .and_then(not(resource_added::)) /// ), /// ); /// @@ -453,14 +453,14 @@ 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` + /// A [`Condition`](super::Condition)-satisfying system that returns `true` /// if the resource of the given type has had its value changed since the condition /// was last checked. /// @@ -484,11 +484,11 @@ pub mod common_conditions { /// // `resource_exists_and_changed` will only return true if the /// // given resource exists and was just changed (or added) /// my_system.run_if( - /// resource_exists_and_changed::() + /// resource_exists_and_changed:: /// // By default detecting changes will also trigger if the resource was /// // just added, this won't work with my example so I will add a second /// // condition to make sure the resource wasn't just added - /// .and_then(not(resource_added::())) + /// .and_then(not(resource_added::)) /// ), /// ); /// @@ -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, } @@ -550,7 +550,7 @@ pub mod common_conditions { /// // By default detecting changes will also trigger if the resource was /// // just added, this won't work with my example so I will add a second /// // condition to make sure the resource wasn't just added - /// .and_then(not(resource_added::())) + /// .and_then(not(resource_added::)) /// ), /// ); /// @@ -655,7 +655,7 @@ pub mod common_conditions { } } - /// Generates a [`Condition`](super::Condition)-satisfying closure that returns `true` + /// A [`Condition`](super::Condition)-satisfying system that returns `true` /// if the state machine exists. /// /// # Example @@ -677,7 +677,7 @@ pub mod common_conditions { /// app.add_systems( /// // `state_exists` will only return true if the /// // given state exists - /// my_system.run_if(state_exists::()), + /// my_system.run_if(state_exists::), /// ); /// /// fn my_system(mut counter: ResMut) { @@ -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` @@ -813,7 +813,7 @@ pub mod common_conditions { } } - /// Generates a [`Condition`](super::Condition)-satisfying closure that returns `true` + /// A [`Condition`](super::Condition)-satisfying system that returns `true` /// if the state machine changed state. /// /// To do things on transitions to/from specific states, use their respective OnEnter/OnExit @@ -845,7 +845,7 @@ pub mod common_conditions { /// // `state_changed` will only return true if the /// // given states value has just been updated or /// // the state has just been added - /// my_system.run_if(state_changed::()), + /// my_system.run_if(state_changed::), /// ); /// /// fn my_system(mut counter: ResMut) { @@ -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` @@ -914,7 +914,7 @@ pub mod common_conditions { move |mut reader: EventReader| reader.read().count() > 0 } - /// Generates a [`Condition`](super::Condition)-satisfying closure that returns `true` + /// A [`Condition`](super::Condition)-satisfying system that returns `true` /// if there are any entities with the given component type. /// /// # Example @@ -927,7 +927,7 @@ pub mod common_conditions { /// # let mut world = World::new(); /// # world.init_resource::(); /// app.add_systems( - /// my_system.run_if(any_with_component::()), + /// my_system.run_if(any_with_component::), /// ); /// /// #[derive(Component)] @@ -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 d1111f18f1..630eb22bdf 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 dc1075090c..e779a1668d 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 5e115e5f18..b2fbea9176 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.