From 27ffb7d6964c021b3a9a7fd4a72100b3698de3b5 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Fri, 28 Mar 2025 19:06:25 +0100 Subject: [PATCH] Simplify API of `window` --- crates/fj-viewer/src/display.rs | 4 +--- crates/fj-viewer/src/window.rs | 22 ++++++++-------------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/crates/fj-viewer/src/display.rs b/crates/fj-viewer/src/display.rs index d688e7c76..f359afb49 100644 --- a/crates/fj-viewer/src/display.rs +++ b/crates/fj-viewer/src/display.rs @@ -155,9 +155,7 @@ impl ApplicationHandler for DisplayState { fn about_to_wait(&mut self, event_loop: &ActiveEventLoop) { while let Ok(tri_mesh) = self.next_tri_mesh.try_recv() { - let mut window = block_on(Window::new(event_loop)).unwrap(); - window.handle_model_update(tri_mesh); - + let window = block_on(Window::new(tri_mesh, event_loop)).unwrap(); self.windows.insert(window.winit_window().id(), window); } } diff --git a/crates/fj-viewer/src/window.rs b/crates/fj-viewer/src/window.rs index 25bb85fae..3435b3c3a 100644 --- a/crates/fj-viewer/src/window.rs +++ b/crates/fj-viewer/src/window.rs @@ -30,6 +30,7 @@ pub struct Window { impl Window { pub async fn new( + tri_mesh: TriMesh, event_loop: &ActiveEventLoop, ) -> Result { let window = Arc::new( @@ -41,8 +42,12 @@ impl Window { .with_transparent(false), )?, ); - let renderer = Renderer::new(window.clone()).await?; - let camera = Camera::default(); + let mut renderer = Renderer::new(window.clone()).await?; + let mut camera = Camera::default(); + + renderer.update_geometry(Vertices::from_tri_mesh(&tri_mesh)); + let aabb = tri_mesh.aabb(); + camera.init_planes(&aabb); Ok(Self { new_screen_size: None, @@ -54,7 +59,7 @@ impl Window { focus_point: None, window, renderer, - model: None, + model: Some((tri_mesh, aabb)), }) } @@ -72,17 +77,6 @@ impl Window { self.draw_config.draw_mesh = !self.draw_config.draw_mesh; } - /// Handle the model being updated - pub fn handle_model_update(&mut self, tri_mesh: TriMesh) { - self.renderer - .update_geometry(Vertices::from_tri_mesh(&tri_mesh)); - - let aabb = tri_mesh.aabb(); - if self.model.replace((tri_mesh, aabb)).is_none() { - self.camera.init_planes(&aabb); - } - } - /// Handle an input event pub fn handle_input_event(&mut self, event: InputEvent) { let Some(focus_point) = self.focus_point else {