summaryrefslogtreecommitdiff
path: root/engine/src/rendering.rs
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/rendering.rs')
-rw-r--r--engine/src/rendering.rs14
1 files changed, 13 insertions, 1 deletions
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>,)>,
+ window_surface_spec_query: Query<(&SurfaceSpec,), (With<Window>, With<TargetWindow>)>,
mut command_queue: Single<CommandQueue>,
mut render_passes: Single<RenderPasses>,
mut active_draw_props: Local<ActiveDrawProperties>,
@@ -450,6 +454,10 @@ fn handle_window_changed(
for evt_match in &observe {
let window_ent = evt_match.get_entity();
+ if window_ent.get::<TargetWindow>().is_none() {
+ continue;
+ }
+
let Some(window_surface_spec) = window_ent.get::<SurfaceSpec>() else {
continue;
};
@@ -485,6 +493,10 @@ fn handle_window_removed(
let window_ent = evt_match.get_entity();
+ if window_ent.get::<TargetWindow>().is_none() {
+ continue;
+ }
+
tracing::debug!(
entity_id = %window_ent_id,
title = %evt_match.get_ent_target_comp().title,