diff --git a/crates/bevy_render/src/camera/camera.rs b/crates/bevy_render/src/camera/camera.rs index 528926ebd4..ca9f69f5cf 100644 --- a/crates/bevy_render/src/camera/camera.rs +++ b/crates/bevy_render/src/camera/camera.rs @@ -269,14 +269,22 @@ impl ActiveCamera { pub fn set_active_camera( mut active_camera: ResMut>, - cameras: Query>, + cameras: Query, With)>, ) { - if active_camera.get().is_some() { - return; + // Check if there is already an active camera set and + // that it has not been deleted on the previous frame + if let Some(camera) = active_camera.get() { + if cameras.contains(camera) { + return; + } } + // If the previous active camera ceased to exist + // fallback to another camera of the same type T if let Some(camera) = cameras.iter().next() { active_camera.camera = Some(camera); + } else { + active_camera.camera = None; } }