From 956f53d8aa81c067b2428f3880f169425f7e7ed6 Mon Sep 17 00:00:00 2001 From: Andreas Streichardt Date: Sat, 20 Dec 2025 07:28:17 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20collect=20scene=20nodes=20recursive?= =?UTF-8?q?ly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/renderling/src/gltf.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/crates/renderling/src/gltf.rs b/crates/renderling/src/gltf.rs index 980e67fa..68150078 100644 --- a/crates/renderling/src/gltf.rs +++ b/crates/renderling/src/gltf.rs @@ -1236,14 +1236,21 @@ where self.primitives.iter().flat_map(|(_, rs)| rs.iter()) } + fn nodes_in_scene_recursive<'a>(&'a self, node_index: usize, nodes: &mut Vec<&'a GltfNode>) { + if let Some(node) = self.nodes.get(node_index) { + nodes.push(node); + for child_index in node.children.iter() { + self.nodes_in_scene_recursive(*child_index, nodes); + } + } + } + pub fn nodes_in_scene(&self, scene_index: usize) -> impl Iterator { let scene = self.scenes.get(scene_index); let mut nodes = vec![]; if let Some(indices) = scene { for node_index in indices { - if let Some(node) = self.nodes.get(*node_index) { - nodes.push(node); - } + self.nodes_in_scene_recursive(*node_index, &mut nodes); } } nodes.into_iter()