From 9a2c311d1817832ad39bb2f92f34dd8b6101d56c Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 11 Dec 2024 21:11:48 +0100 Subject: [PATCH] Prepare to support nested operations --- experiments/2024-12-09/src/view.rs | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/experiments/2024-12-09/src/view.rs b/experiments/2024-12-09/src/view.rs index 0d71f9b54..bcc0206b6 100644 --- a/experiments/2024-12-09/src/view.rs +++ b/experiments/2024-12-09/src/view.rs @@ -5,31 +5,33 @@ use crate::geometry::{HandleAny, Operation, Triangle, Vertex}; #[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(|op| Self::new(HandleAny::new(op))) + .collect(); + Self { operation, + children, selected: None, } } pub fn operations(&self) -> Vec<(Self, bool, usize)> { iter::once((self.clone(), true, 0)) - .chain(self.operation.children().into_iter().enumerate().map( - |(i, op)| { - ( - OperationView { - operation: op, - selected: None, - }, - Some(i) == self.selected, - 1, - ) - }, - )) + .chain( + self.children + .iter() + .enumerate() + .map(|(i, op)| (op.clone(), Some(i) == self.selected, 1)), + ) .collect() }