# 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. |
||
|---|---|---|
| .. | ||
| component_change_detection.rs | ||
| custom_query_param.rs | ||
| ecs_guide.rs | ||
| event.rs | ||
| fixed_timestep.rs | ||
| generic_system.rs | ||
| hierarchy.rs | ||
| iter_combinations.rs | ||
| nondeterministic_system_order.rs | ||
| parallel_query.rs | ||
| removal_detection.rs | ||
| startup_system.rs | ||
| state.rs | ||
| system_closure.rs | ||
| system_param.rs | ||
| system_piping.rs | ||
| system_sets.rs | ||
| timers.rs | ||