mirror of
https://github.com/bevyengine/bevy
synced 2025-02-16 22:18:33 +00:00
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
1 changed files with 5 additions and 1 deletions
|
@ -63,7 +63,11 @@ impl Scene {
|
||||||
let type_registry = type_registry.read();
|
let type_registry = type_registry.read();
|
||||||
|
|
||||||
// Resources archetype
|
// 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
|
let component_info = self
|
||||||
.world
|
.world
|
||||||
.components()
|
.components()
|
||||||
|
|
Loading…
Add table
Reference in a new issue