diff --git a/experiments/2025-03-18/src/app.rs b/experiments/2025-03-18/src/app.rs index 6aea94339..6ee2e42e0 100644 --- a/experiments/2025-03-18/src/app.rs +++ b/experiments/2025-03-18/src/app.rs @@ -8,7 +8,11 @@ use winit::{ window::{Window, WindowAttributes, WindowId}, }; -use crate::{object::HandleAny, render::Renderer, view::OperationView}; +use crate::{ + object::{HandleAny, Object}, + render::Renderer, + view::OperationView, +}; pub fn run(shape: HandleAny) -> anyhow::Result<()> { let view = OperationView::new(shape); @@ -71,7 +75,7 @@ impl ApplicationHandler for App { event_loop.exit(); } WindowEvent::RedrawRequested => { - if let Err(err) = renderer.render(&self.view) { + if let Err(err) = renderer.render(&self.view.tri_mesh()) { eprintln!("Render error: {err}"); } } diff --git a/experiments/2025-03-18/src/render/renderer.rs b/experiments/2025-03-18/src/render/renderer.rs index aa0775d1d..1e0353269 100644 --- a/experiments/2025-03-18/src/render/renderer.rs +++ b/experiments/2025-03-18/src/render/renderer.rs @@ -3,7 +3,7 @@ use std::sync::Arc; use anyhow::anyhow; use winit::window::Window; -use crate::{object::Object, view::OperationView}; +use crate::geometry::TriMesh; use super::{geometry::Geometry, pipeline::Pipeline}; @@ -76,11 +76,8 @@ impl Renderer { }) } - pub fn render(&mut self, operations: &OperationView) -> anyhow::Result<()> { - let selected_operation = operations.selected(); - - let geometry = - Geometry::new(&self.device, &selected_operation.tri_mesh()); + pub fn render(&mut self, tri_mesh: &TriMesh) -> anyhow::Result<()> { + let geometry = Geometry::new(&self.device, tri_mesh); let mut encoder = self .device diff --git a/experiments/2025-03-18/src/view.rs b/experiments/2025-03-18/src/view.rs index 8424d9c03..22786a521 100644 --- a/experiments/2025-03-18/src/view.rs +++ b/experiments/2025-03-18/src/view.rs @@ -6,27 +6,11 @@ use crate::{ #[derive(Clone)] pub struct OperationView { operation: HandleAny, - children: Vec, - selected: Option, } impl OperationView { pub fn new(operation: HandleAny) -> Self { - let children = - operation.children().into_iter().map(Self::new).collect(); - - Self { - operation, - children, - selected: None, - } - } - - pub fn selected(&self) -> &Self { - self.selected - .and_then(|selected| self.children.get(selected)) - .map(|child| child.selected()) - .unwrap_or(self) + Self { operation } } }