bevy/crates
Alexander Sepity d3e020a1e7 System sets and run criteria v2 (#1675)
I'm opening this prematurely; consider this an RFC that predates RFCs and therefore not super-RFC-like.

This PR does two "big" things: decouple run criteria from system sets, reimagine system sets as weapons of mass system description.

### What it lets us do:

* Reuse run criteria within a stage.
* Pipe output of one run criteria as input to another.
* Assign labels, dependencies, run criteria, and ambiguity sets to many systems at the same time.

### Things already done:
* Decoupled run criteria from system sets.
* Mass system description superpowers to `SystemSet`.
* Implemented `RunCriteriaDescriptor`.
* Removed `VirtualSystemSet`.
* Centralized all run criteria of `SystemStage`.
* Extended system descriptors with per-system run criteria.
* `.before()` and `.after()` for run criteria.
* Explicit order between state driver and related run criteria. Fixes #1672.
* Opt-in run criteria deduplication; default behavior is to panic.
* Labels (not exposed) for state run criteria; state run criteria are deduplicated.

### API issues that need discussion:

* [`FixedTimestep::step(1.0).label("my label")`](eaccf857cd/crates/bevy_ecs/src/schedule/run_criteria.rs (L120-L122)) and [`FixedTimestep::step(1.0).with_label("my label")`](eaccf857cd/crates/bevy_core/src/time/fixed_timestep.rs (L86-L89)) are both valid but do very different things.

---

I will try to maintain this post up-to-date as things change. Do check the diffs in "edited" thingy from time to time.

Co-authored-by: Carter Anderson <mcanders1@gmail.com>
2021-03-24 20:11:55 +00:00
..
bevy_app System sets and run criteria v2 (#1675) 2021-03-24 20:11:55 +00:00
bevy_asset improve error message when asset type hasn't beed added to app (#1487) 2021-03-14 00:36:15 +00:00
bevy_audio Bevy ECS V2 (#1525) 2021-03-05 07:54:35 +00:00
bevy_core Reliable change detection (#1471) 2021-03-19 17:53:26 +00:00
bevy_derive format comments (#1612) 2021-03-11 00:27:30 +00:00
bevy_diagnostic ♻️ Timer refactor to duration. Add Stopwatch struct. (#1151) 2021-03-05 19:59:14 +00:00
bevy_dylib release 0.4.0 (#1093) 2020-12-19 13:28:00 -06:00
bevy_dynamic_plugin update libloading (#1543) 2021-03-03 03:11:12 +00:00
bevy_ecs System sets and run criteria v2 (#1675) 2021-03-24 20:11:55 +00:00
bevy_gilrs Resolve (most) internal system ambiguities (#1606) 2021-03-10 22:37:02 +00:00
bevy_gltf Make Commands and World apis consistent (#1703) 2021-03-23 00:23:40 +00:00
bevy_input format comments (#1612) 2021-03-11 00:27:30 +00:00
bevy_internal Rebase of existing PBR work (#1554) 2021-03-20 03:22:33 +00:00
bevy_log Bevy ECS V2 (#1525) 2021-03-05 07:54:35 +00:00
bevy_math use std clamp instead of Bevy's (#1644) 2021-03-13 18:07:14 +00:00
bevy_pbr Rebase of existing PBR work (#1554) 2021-03-20 03:22:33 +00:00
bevy_reflect fix dyn warning (#1690) 2021-03-19 02:53:26 +00:00
bevy_render Remove remaining camerapos bindings (#1708) 2021-03-22 18:10:35 +00:00
bevy_scene Make Commands and World apis consistent (#1703) 2021-03-23 00:23:40 +00:00
bevy_sprite update rectangle-pack to latest release (#1742) 2021-03-24 00:21:37 +00:00
bevy_tasks format comments (#1612) 2021-03-11 00:27:30 +00:00
bevy_text color spaces and representation (#1572) 2021-03-17 23:59:51 +00:00
bevy_transform Make Commands and World apis consistent (#1703) 2021-03-23 00:23:40 +00:00
bevy_ui Make Commands and World apis consistent (#1703) 2021-03-23 00:23:40 +00:00
bevy_utils Update ahash requirement from 0.6.1 to 0.7.0 (#1370) 2021-02-01 13:29:54 -08:00
bevy_wgpu color spaces and representation (#1572) 2021-03-17 23:59:51 +00:00
bevy_window Derive PartialEq for WindowMode (#1688) 2021-03-18 23:47:34 +00:00
bevy_winit format comments (#1612) 2021-03-11 00:27:30 +00:00