From 1a3cc9a6b7c20589db5c56e20aa2c69ac61763a0 Mon Sep 17 00:00:00 2001 From: HampusM Date: Thu, 25 Jun 2026 01:05:56 +0200 Subject: refactor(engine): render only to window targeted windows --- engine/src/rendering.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'engine/src/rendering.rs') diff --git a/engine/src/rendering.rs b/engine/src/rendering.rs index 2ec0b38..e9e620e 100644 --- a/engine/src/rendering.rs +++ b/engine/src/rendering.rs @@ -121,6 +121,10 @@ impl Default for Extension } } +/// Marker component for windows that should be renderer to. +#[derive(Debug, Clone, Copy, Component)] +pub struct TargetWindow; + builder! { #[builder(name=GraphicsPropertiesBuilder, derives=(Debug, Clone))] #[derive(Debug, Clone, Sole)] @@ -400,7 +404,7 @@ impl Default for CommandQueue #[tracing::instrument(skip_all)] fn enqueue_commands_from_render_passes( - window_surface_spec_query: Query<(&SurfaceSpec,), (With,)>, + window_surface_spec_query: Query<(&SurfaceSpec,), (With, With)>, mut command_queue: Single, mut render_passes: Single, mut active_draw_props: Local, @@ -450,6 +454,10 @@ fn handle_window_changed( for evt_match in &observe { let window_ent = evt_match.get_entity(); + if window_ent.get::().is_none() { + continue; + } + let Some(window_surface_spec) = window_ent.get::() else { continue; }; @@ -485,6 +493,10 @@ fn handle_window_removed( let window_ent = evt_match.get_entity(); + if window_ent.get::().is_none() { + continue; + } + tracing::debug!( entity_id = %window_ent_id, title = %evt_match.get_ent_target_comp().title, -- cgit v1.2.3-18-g5258