bevy/examples/ecs
Alice Cecile 5d514fb24f Reduce internal system order ambiguities, and add an example explaining them (#7383)
# Objective

- Bevy should not have any "internal" execution order ambiguities. These clutter the output of user-facing error reporting, and can result in nasty, nondetermistic, very difficult to solve bugs.
- Verifying this currently involves repeated non-trivial manual work. 

## Solution

- [x] add an example to quickly check this
- ~~[ ] ensure that this example panics if there are any unresolved ambiguities~~
- ~~[ ] run the example in CI 😈~~

There's one tricky ambiguity left, between UI and animation. I don't have the tools to fix this without system set configuration, so the remaining work is going to be left to #7267 or another PR after that.

```
2023-01-27T18:38:42.989405Z  INFO bevy_ecs::schedule::ambiguity_detection: Execution order ambiguities detected, you might want to add an explicit dependency relation between some of these systems:
 * Parallel systems:
 -- "bevy_animation::animation_player" and "bevy_ui::flex::flex_node_system"
    conflicts: ["bevy_transform::components::transform::Transform"]
  ```

## Changelog

Resolved internal execution order ambiguities for:
1. Transform propagation (ignored, we need smarter filter checking).
2. Gamepad processing (fixed).
3. bevy_winit's window handling (fixed).
4. Cascaded shadow maps and perspectives (fixed).

Also fixed a desynchronized state bug that could occur when the `Window` component is removed and then added to the same entity in a single frame.
2023-01-31 01:47:00 +00:00
..
component_change_detection.rs Fix minor typos in code and docs (#7378) 2023-01-27 12:12:53 +00:00
custom_query_param.rs fix nightly clippy warnings (#6395) 2022-10-28 21:03:01 +00:00
ecs_guide.rs fix nightly clippy warnings (#6395) 2022-10-28 21:03:01 +00:00
event.rs Replace the bool argument of Timer with TimerMode (#6247) 2022-10-17 13:47:01 +00:00
fixed_timestep.rs Add global time scaling (#5752) 2022-10-22 18:52:29 +00:00
generic_system.rs Replace the bool argument of Timer with TimerMode (#6247) 2022-10-17 13:47:01 +00:00
hierarchy.rs Add global time scaling (#5752) 2022-10-22 18:52:29 +00:00
iter_combinations.rs use Mul<f32> to double the value of Vec3 (#6607) 2022-11-14 23:08:30 +00:00
nondeterministic_system_order.rs Reduce internal system order ambiguities, and add an example explaining them (#7383) 2023-01-31 01:47:00 +00:00
parallel_query.rs Basic adaptive batching for parallel query iteration (#4777) 2023-01-20 08:47:20 +00:00
removal_detection.rs Fix minor typos in code and docs (#7378) 2023-01-27 12:12:53 +00:00
startup_system.rs Doc/module style doc blocks for examples (#4438) 2022-05-16 13:53:20 +00:00
state.rs Remove auto-margin properties from the examples (#6535) 2022-11-21 14:38:35 +00:00
system_closure.rs fix nightly clippy warnings (#6395) 2022-10-28 21:03:01 +00:00
system_param.rs Spawn now takes a Bundle (#6054) 2022-09-23 19:55:54 +00:00
system_piping.rs [Fixes #6224] Add logging variants of system piping (#6751) 2022-12-11 18:10:03 +00:00
system_sets.rs Fix minor typos in code and docs (#7378) 2023-01-27 12:12:53 +00:00
timers.rs Replace the bool argument of Timer with TimerMode (#6247) 2022-10-17 13:47:01 +00:00