`World::register_required_components` can make bundles outdated
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 161
Description
## Bevy version
main
## What you did
Adding required components manually can make a `Bundle` outdated. This can cause diverging behavior depending on if you use bundles registered before or after manually requiring components in these bundles.
```rs
#[derive(Component)]
struct C1;
#[derive(Component, Default)]
struct C2;
let mut world = World::new();
world.register_bundle::();
world.register_required_components::(); // succeeds, no C1 anywhere yet
assert!(world.spawn((C1,)).contains::()); // succeeds, registers new bundle after requiring C2
assert!(world.spawn(C1).contains::()); // fails, uses outdated bundle
```
Worth noting you can register bundles in many ways so a solution that minds only bundles registered by type is not enough.
Contributor guide
Assessment
This issue has not been assessed yet.