Skip to content

Commit 0f20cfa

Browse files
authored
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
1 parent 0792dde commit 0f20cfa

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

crates/bevy_scene/src/scene.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,11 @@ impl Scene {
6363
let type_registry = type_registry.read();
6464

6565
// Resources archetype
66-
for (component_id, _) in self.world.storages().resources.iter() {
66+
for (component_id, resource_data) in self.world.storages().resources.iter() {
67+
if !resource_data.is_present() {
68+
continue;
69+
}
70+
6771
let component_info = self
6872
.world
6973
.components()

0 commit comments

Comments
 (0)