diff --git a/crates/fj-viewer/src/graphics/mod.rs b/crates/fj-viewer/src/graphics/mod.rs index e348f90f6..d19c88a41 100644 --- a/crates/fj-viewer/src/graphics/mod.rs +++ b/crates/fj-viewer/src/graphics/mod.rs @@ -18,6 +18,7 @@ pub use self::{ device::DeviceError, draw_config::DrawConfig, renderer::{Renderer, RendererInitError}, + vertices::Vertices, }; pub const DEPTH_FORMAT: wgpu::TextureFormat = wgpu::TextureFormat::Depth32Float; diff --git a/crates/fj-viewer/src/graphics/vertices.rs b/crates/fj-viewer/src/graphics/vertices.rs index cee1458f9..d1b0acece 100644 --- a/crates/fj-viewer/src/graphics/vertices.rs +++ b/crates/fj-viewer/src/graphics/vertices.rs @@ -17,17 +17,7 @@ impl Vertices { } } - pub fn vertices(&self) -> &[Vertex] { - self.vertices.as_slice() - } - - pub fn indices(&self) -> &[Index] { - self.indices.as_slice() - } -} - -impl From<&Mesh>> for Vertices { - fn from(mesh: &Mesh>) -> Self { + pub fn from_mesh(mesh: &Mesh>) -> Self { let mut vertices = Vec::new(); let mut indices = Vec::new(); let mut indices_by_vertex = BTreeMap::new(); @@ -59,6 +49,14 @@ impl From<&Mesh>> for Vertices { Self { vertices, indices } } + + pub fn vertices(&self) -> &[Vertex] { + self.vertices.as_slice() + } + + pub fn indices(&self) -> &[Index] { + self.indices.as_slice() + } } #[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] diff --git a/crates/fj-viewer/src/viewer.rs b/crates/fj-viewer/src/viewer.rs index 370555bb3..b9855e0c3 100644 --- a/crates/fj-viewer/src/viewer.rs +++ b/crates/fj-viewer/src/viewer.rs @@ -5,7 +5,7 @@ use tracing::warn; use crate::{ RendererInitError, camera::{Camera, FocusPoint}, - graphics::{DrawConfig, Renderer}, + graphics::{DrawConfig, Renderer, Vertices}, input::{ CameraTuningConfig, DEFAULT_CAMERA_TUNING_CONFIG, InputEvent, MouseButton, @@ -58,7 +58,8 @@ impl Viewer { /// Handle the model being updated pub fn handle_model_update(&mut self, model: Model) { - self.renderer.update_geometry((&model.mesh).into()); + self.renderer + .update_geometry(Vertices::from_mesh(&model.mesh)); let aabb = model.mesh.aabb(); if self.model.replace((model, aabb)).is_none() {