Only attempt to copy resources that still exist from scenes (#9984)
# Objective
Avert a panic when removing resources from Scenes.
### Reproduction Steps
```rust
let mut scene = Scene::new(World::default());
scene.world.init_resource::<Time>();
scene.world.remove_resource::<Time>();
scene.clone_with(&app.resource::<AppTypeRegistry>());
```
### Panic Message
```
thread 'Compute Task Pool (10)' panicked at 'Requested resource bevy_time::time::Time does not exist in the `World`.
Did you forget to add it using `app.insert_resource` / `app.init_resource`?
Resources are also implicitly added via `app.add_event`,
and can be added by plugins.', .../bevy/crates/bevy_ecs/src/reflect/resource.rs:203:52
```
## Solution
Check that the resource actually still exists before copying.
---
## Changelog
- resolved a panic caused by removing resources from scenes
This commit is contained in:
parent
0792dde8d5
commit
0f20cfaa57
@ -63,7 +63,11 @@ impl Scene {
|
||||
let type_registry = type_registry.read();
|
||||
|
||||
// Resources archetype
|
||||
for (component_id, _) in self.world.storages().resources.iter() {
|
||||
for (component_id, resource_data) in self.world.storages().resources.iter() {
|
||||
if !resource_data.is_present() {
|
||||
continue;
|
||||
}
|
||||
|
||||
let component_info = self
|
||||
.world
|
||||
.components()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user