bevy/crates
Periwink 6573887d5c
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 20:20:50 +00:00
..
bevy_a11y Update accesskit and accesskit_winit (#13841) 2024-06-17 15:08:53 +00:00
bevy_animation Remove unnecessary compute for rotation interpolation (#14019) 2024-06-25 21:14:37 +00:00
bevy_app feat(bevy_app): expose an API to perform updates for a specific sub-app. (#14009) 2024-06-25 14:04:31 +00:00
bevy_asset Allow phase items not associated with meshes to be binned. (#14029) 2024-06-27 16:13:03 +00:00
bevy_audio Fix a few "repeated word" typos (#13955) 2024-06-20 21:35:20 +00:00
bevy_color Allow bevy_color use without bevy_reflect support (#13870) 2024-06-16 15:47:30 +00:00
bevy_core Don't show .to_bits in Display impl for Entity (#14011) 2024-06-25 17:08:24 +00:00
bevy_core_pipeline Allow phase items not associated with meshes to be binned. (#14029) 2024-06-27 16:13:03 +00:00
bevy_derive Deprecate dynamic plugins (#13080) 2024-05-20 20:01:28 +00:00
bevy_dev_tools Fix lints introduced in Rust beta 1.80 (#13899) 2024-06-17 17:22:01 +00:00
bevy_diagnostic Poll system information in separate tasks (#13693) 2024-06-10 19:06:22 +00:00
bevy_dylib Add README.md to all crates (#13184) 2024-05-02 18:56:00 +00:00
bevy_dynamic_plugin Deprecate dynamic plugins (#13080) 2024-05-20 20:01:28 +00:00
bevy_ecs Fix error in AnyOf (#14027) 2024-06-27 20:20:50 +00:00
bevy_encase_derive Add README.md to all crates (#13184) 2024-05-02 18:56:00 +00:00
bevy_gilrs Add README.md to all crates (#13184) 2024-05-02 18:56:00 +00:00
bevy_gizmos Use u32 for all resolution/subdivision fields in bevy_gizmos (#13927) 2024-06-19 17:28:10 +00:00
bevy_gltf Add labels to Gltf Node and Mesh assets (#13558) 2024-06-05 23:10:33 +00:00
bevy_hierarchy Fix EntityCommands::despawn docs (#13774) 2024-06-09 17:59:19 +00:00
bevy_input Fix a few "repeated word" typos (#13955) 2024-06-20 21:35:20 +00:00
bevy_internal don't crash without features bevy_pbr, ktx2, zstd (#14020) 2024-06-26 03:08:23 +00:00
bevy_log Document use of NO_COLOR in LogPlugin (#13984) 2024-06-24 21:04:55 +00:00
bevy_macro_utils Add README.md to all crates (#13184) 2024-05-02 18:56:00 +00:00
bevy_math Fix a few "repeated word" typos (#13955) 2024-06-20 21:35:20 +00:00
bevy_mikktspace Fixed a link to Blender's mikktspace docs (#13924) 2024-06-19 12:37:10 +00:00
bevy_pbr Allow phase items not associated with meshes to be binned. (#14029) 2024-06-27 16:13:03 +00:00
bevy_picking Upstream CorePlugin from bevy_mod_picking (#13677) 2024-06-15 11:59:57 +00:00
bevy_ptr add Debug for ptr types (#13498) 2024-05-24 21:25:11 +00:00
bevy_reflect bevy_reflect: Improve reflection serialization error messages (#13867) 2024-06-17 18:13:46 +00:00
bevy_render Allow phase items not associated with meshes to be binned. (#14029) 2024-06-27 16:13:03 +00:00
bevy_scene Fix lints introduced in Rust beta 1.80 (#13899) 2024-06-17 17:22:01 +00:00
bevy_sprite bug: Fix 9-slice textures with asymmetric borders. (#13921) 2024-06-19 17:30:18 +00:00
bevy_state Move StateTransitionSteps registration to states plugin (#13939) 2024-06-20 00:57:40 +00:00
bevy_tasks fix: upgrade to winit v0.30 (#13366) 2024-06-03 13:06:48 +00:00
bevy_text Fix lints introduced in Rust beta 1.80 (#13899) 2024-06-17 17:22:01 +00:00
bevy_time Make time_system public (#13879) 2024-06-16 18:07:41 +00:00
bevy_transform impl BuildChildrenTransformExt for EntityWorldMut (#14022) 2024-06-26 14:59:20 +00:00
bevy_ui add PartialEq to Outline (#14055) 2024-06-27 20:03:07 +00:00
bevy_utils Fix parameter name of all_tuples's document (#13896) 2024-06-17 15:17:24 +00:00
bevy_window apply window scale to window size when creating it (#13967) 2024-06-21 18:04:57 +00:00
bevy_winit only run one update per frame drawn (#14023) 2024-06-26 20:23:17 +00:00