bevy/crates
Periwink 73b43aa6cf
Fix error in AnyOf (#14027)
# Objective

- Fixes a correctness error introduced in
https://github.com/bevyengine/bevy/pull/14013 ...

## Solution

I've been playing around a lot of with the access code and I realized
that I introduced a soundness error when trying to simplify the code.
When we have a `Or<(With<A>, With<B>)>` filter, we cannot call
```
  let mut intermediate = FilteredAccess::default();
  $name::update_component_access($name, &mut intermediate);
  _new_access.append_or(&intermediate);
```
because that's just equivalent to adding the new components as `Or`
clauses.
For example if the existing `filter_sets` was `vec![With<C>]`, we would
then get `vec![With<C>, With<A>, With<B>]` which translates to `A or B
or C`.
Instead what we want is `(A and B) or (A and C)`, so we need to have
each new OR clause compose with the existing access like so:
```
let mut intermediate = _access.clone();
// if we previously had a With<C> in the filter_set, this will become `With<C> AND With<A>`
$name::update_component_access($name, &mut intermediate);
_new_access.append_or(&intermediate);
```

## Testing

- Added a unit test that is broken in main, but passes in this PR
2024-06-27 22:47:36 +02:00
..
bevy_a11y Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_animation Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_app feat(bevy_app): expose an API to perform updates for a specific sub-app. (#14009) 2024-06-26 00:13:24 +02:00
bevy_asset Allow phase items not associated with meshes to be binned. (#14029) 2024-06-27 19:41:42 +02:00
bevy_audio Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_color Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_core Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_core_pipeline Allow phase items not associated with meshes to be binned. (#14029) 2024-06-27 19:41:42 +02:00
bevy_derive Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_dev_tools Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_diagnostic Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_dylib Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_dynamic_plugin Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_ecs Fix error in AnyOf (#14027) 2024-06-27 22:47:36 +02:00
bevy_encase_derive Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_gilrs Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_gizmos Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_gltf Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_hierarchy Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_input Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_internal don't crash without features bevy_pbr, ktx2, zstd (#14020) 2024-06-26 21:55:00 +02:00
bevy_log Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_macro_utils Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_math Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_mikktspace Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_pbr Allow phase items not associated with meshes to be binned. (#14029) 2024-06-27 19:41:42 +02:00
bevy_ptr Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_reflect Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_render Allow phase items not associated with meshes to be binned. (#14029) 2024-06-27 19:41:42 +02:00
bevy_scene Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_sprite bug: Fix 9-slice textures with asymmetric borders. (#13921) 2024-06-21 19:36:48 +02:00
bevy_state Move StateTransitionSteps registration to states plugin (#13939) 2024-06-21 19:36:48 +02:00
bevy_tasks Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_text Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_time Make time_system public (#13879) 2024-06-19 04:14:58 +02:00
bevy_transform Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_ui add PartialEq to Outline (#14055) 2024-06-27 22:47:36 +02:00
bevy_utils Release Candidate 0.14.0-rc.3 2024-06-16 17:50:19 +02:00
bevy_window apply window scale to window size when creating it (#13967) 2024-06-21 20:27:55 +02:00
bevy_winit Have WindowPosition::Centered take scale_factor_override into account (#13949) 2024-06-26 21:57:12 +02:00