bevy/crates
JoJoJet 5efc226290 Allow piping run conditions (#7547)
# Objective

Run conditions are a special type of system that do not modify the world, and which return a bool. Due to the way they are currently implemented, you can *only* use bare function systems as a run condition. Among other things, this prevents the use of system piping with run conditions. This make very basic constructs impossible, such as `my_system.run_if(my_condition.pipe(not))`.

Unblocks a basic solution for #7202.

## Solution

Add the trait `ReadOnlySystem`, which is implemented for any system whose parameters all implement `ReadOnlySystemParam`. Allow any `-> bool` system implementing this trait to be used as a run condition.

---

## Changelog

+ Added the trait `ReadOnlySystem`, which is implemented for any `System` type whose parameters all implement `ReadOnlySystemParam`.
+ Added the function `bevy::ecs::system::assert_is_read_only_system`.
2023-02-07 22:22:16 +00:00
..
bevy_animation Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_app Rename schedule v3 to schedule (#7519) 2023-02-06 18:44:40 +00:00
bevy_asset Fix crash with debug_asset_server due to base set changes (#7538) 2023-02-07 14:18:15 +00:00
bevy_audio IOS, Android... same thing (#7493) 2023-02-06 18:08:49 +00:00
bevy_core Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_core_pipeline bevy_core_pipeline: Fix prepass sort orders (#7539) 2023-02-07 11:31:35 +00:00
bevy_derive update winit to 0.28 (#7480) 2023-02-03 16:41:39 +00:00
bevy_diagnostic Rename schedule v3 to schedule (#7519) 2023-02-06 18:44:40 +00:00
bevy_dylib Rename dynamic feature (#7340) 2023-01-23 14:28:00 +00:00
bevy_dynamic_plugin Adapt path type of dynamically_load_plugin (#6734) 2022-12-05 23:39:43 +00:00
bevy_ecs Allow piping run conditions (#7547) 2023-02-07 22:22:16 +00:00
bevy_ecs_compile_fail_tests Fix clippy lints and failed test with Rust 1.66 (#6945) 2022-12-15 18:05:15 +00:00
bevy_encase_derive add helper for macro to get either bevy::x or bevy_x depending on how it was imported (#7164) 2023-01-11 21:12:02 +00:00
bevy_gilrs Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_gltf enum Visibility component (#6320) 2022-12-25 00:39:29 +00:00
bevy_hierarchy Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_input Rename schedule v3 to schedule (#7519) 2023-02-06 18:44:40 +00:00
bevy_internal IOS, Android... same thing (#7493) 2023-02-06 18:08:49 +00:00
bevy_log Fix suppression of all console logs when trace_tracy is enabled (#6955) 2022-12-20 23:45:43 +00:00
bevy_macro_utils Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_math Improve code/comments for Ray::intersect_plane and its tests (#6823) 2022-12-05 22:49:06 +00:00
bevy_mikktspace Release 0.9.0 (#6568) 2022-11-12 20:01:29 +00:00
bevy_pbr Cam scale cluster fix (#7078) 2023-02-07 16:10:54 +00:00
bevy_ptr Fix minor typos in code and docs (#7378) 2023-01-27 12:12:53 +00:00
bevy_reflect bevy_reflect: Support tuple reflection paths (#7324) 2023-02-06 21:22:45 +00:00
bevy_reflect_compile_fail_tests Enable deriving Reflect on structs with generic types (#7364) 2023-01-28 00:12:06 +00:00
bevy_render Fix Window feedback loop between the OS and Bevy (#7517) 2023-02-07 14:18:13 +00:00
bevy_scene Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_sprite Migrate engine to Schedule v3 (#7267) 2023-02-06 02:04:50 +00:00
bevy_tasks Migrate engine to Schedule v3 (#7267) 2023-02-06 02:04:50 +00:00
bevy_text Fix Window feedback loop between the OS and Bevy (#7517) 2023-02-07 14:18:13 +00:00
bevy_time Rename schedule v3 to schedule (#7519) 2023-02-06 18:44:40 +00:00
bevy_transform Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_ui Fix Window feedback loop between the OS and Bevy (#7517) 2023-02-07 14:18:13 +00:00
bevy_utils Migrate engine to Schedule v3 (#7267) 2023-02-06 02:04:50 +00:00
bevy_window Fix Window feedback loop between the OS and Bevy (#7517) 2023-02-07 14:18:13 +00:00
bevy_winit Fix Window feedback loop between the OS and Bevy (#7517) 2023-02-07 14:18:13 +00:00