diff options
| -rw-r--r-- | engine/src/renderer.rs | 9 | ||||
| -rw-r--r-- | engine/src/renderer/opengl.rs | 27 |
2 files changed, 13 insertions, 23 deletions
diff --git a/engine/src/renderer.rs b/engine/src/renderer.rs index 6ef1535..970a241 100644 --- a/engine/src/renderer.rs +++ b/engine/src/renderer.rs @@ -67,7 +67,9 @@ builder! { #[builder(name=ExtensionBuilder, derives=(Debug, Clone, Default))] #[derive(Debug, Clone)] #[non_exhaustive] -pub struct Extension {} +pub struct Extension { + pub graphics_props: GraphicsProperties, +} } impl Extension @@ -88,6 +90,8 @@ impl ecs::extension::Extension for Extension let _ = collector.add_sole(RenderPasses::default()); + let _ = collector.add_sole(self.graphics_props); + collector.add_system(*PRE_RENDER_PHASE, main_render_pass::add_main_render_passes); collector.add_system(*RENDER_PHASE, enqueue_commands_from_render_passes); @@ -107,9 +111,8 @@ impl Default for Extension } builder! { -/// Window graphics properties. #[builder(name=GraphicsPropertiesBuilder, derives=(Debug, Clone))] -#[derive(Debug, Clone, Component)] +#[derive(Debug, Clone, Sole)] #[non_exhaustive] pub struct GraphicsProperties { diff --git a/engine/src/renderer/opengl.rs b/engine/src/renderer/opengl.rs index 4e865fb..d744da4 100644 --- a/engine/src/renderer/opengl.rs +++ b/engine/src/renderer/opengl.rs @@ -218,11 +218,7 @@ struct SetupFailed; fn prepare_windows( window_query: Query< - ( - Option<&Window>, - &mut WindowCreationAttributes, - Option<&GraphicsProperties>, - ), + (Option<&Window>, &mut WindowCreationAttributes), ( Without<CreationReady>, Without<WindowGlConfig>, @@ -231,6 +227,7 @@ fn prepare_windows( ), >, windowing_context: Single<WindowingContext>, + graphics_props: Single<GraphicsProperties>, mut actions: Actions, ) { @@ -238,7 +235,7 @@ fn prepare_windows( return; }; - for (window_ent_id, (window, mut window_creation_attrs, graphics_props)) in + for (window_ent_id, (window, mut window_creation_attrs)) in window_query.iter_with_euids() { tracing::debug!("Preparing window entity {window_ent_id} for use in rendering"); @@ -246,15 +243,6 @@ fn prepare_windows( let mut glutin_config_template_builder = glutin::config::ConfigTemplateBuilder::new(); - let graphics_props = match graphics_props.as_ref() { - Some(graphics_props) => &*graphics_props, - None => { - actions.add_components(window_ent_id, (GraphicsProperties::default(),)); - - &GraphicsProperties::default() - } - }; - if let Some(multisampling_sample_cnt) = graphics_props.multisampling_sample_cnt { glutin_config_template_builder = glutin_config_template_builder .with_multisampling(multisampling_sample_cnt); @@ -311,16 +299,15 @@ fn prepare_windows( #[tracing::instrument(skip_all)] fn init_window_graphics( window_query: Query< - (&Window, &WindowGlConfig, &GraphicsProperties), + (&Window, &WindowGlConfig), (Without<SurfaceSpec>, Without<SetupFailed>), >, - mut actions: Actions, windowing_context: Single<WindowingContext>, + graphics_props: Single<GraphicsProperties>, + mut actions: Actions, ) { - for (window_ent_id, (window, window_gl_config, graphics_props)) in - window_query.iter_with_euids() - { + for (window_ent_id, (window, window_gl_config)) in window_query.iter_with_euids() { tracing::info!("Initializing graphics for window {window_ent_id}"); let display = window_gl_config.gl_config.display(); |
