Skip to content

Commit cfd614c

Browse files
committed
Fix deactivated camera still being used in render world
Switch to retained render world causes the extracted cameras in render world to not be removed until camera in main world is despawned. When extracting data from main world inactive cameras are skipped. Therefore camera that was active and became inactive has a retained `ExtractedCamera` component from previous frames (when it was active) and is processed the same way as if it were active (there is no `active` field on `ExtractedCamera`). This breakes switching between cameras in `render_primitives` example. Fix it by removing `ExtractedCamera` and related components from inactive cameras. Note that despawning inactive camera seems to be bad option because they are spawned using `SyncToRenderWorld` component. Fixes #15822
1 parent b109787 commit cfd614c

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

crates/bevy_render/src/camera/camera.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,8 +1054,12 @@ pub fn extract_cameras(
10541054
) in query.iter()
10551055
{
10561056
if !camera.is_active {
1057+
commands.entity(render_entity).remove::<RenderVisibleEntities>();
1058+
commands.entity(render_entity).remove::<ExtractedCamera>();
1059+
commands.entity(render_entity).remove::<ExtractedView>();
10571060
continue;
10581061
}
1062+
10591063
let color_grading = color_grading.unwrap_or(&ColorGrading::default()).clone();
10601064

10611065
if let (

0 commit comments

Comments
 (0)