From be4311a8d70a0bd8b6dba961a2e09fec0b093526 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Sun, 3 Apr 2022 11:52:59 +0200 Subject: [PATCH] gltf: add a name to nodes without names --- crates/bevy_gltf/src/loader.rs | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/crates/bevy_gltf/src/loader.rs b/crates/bevy_gltf/src/loader.rs index a4f0aa98d8846f..a5c8e0285085df 100644 --- a/crates/bevy_gltf/src/loader.rs +++ b/crates/bevy_gltf/src/loader.rs @@ -518,15 +518,21 @@ async fn load_gltf<'a, 'b>( Ok(()) } +fn node_name(node: &Node) -> Name { + let name = node + .name() + .map(|s| s.to_string()) + .unwrap_or_else(|| format!("bevy-gltf-node-{}", node.index())); + Name::new(name.to_string()) +} + fn paths_recur(node: Node, current_path: &[Name], paths: &mut HashMap>) { - if let Some(name) = node.name() { - let mut path = current_path.to_owned(); - path.push(Name::new(name.to_string())); - for child in node.children() { - paths_recur(child, &path, paths); - } - paths.insert(node.index(), path); + let mut path = current_path.to_owned(); + path.push(node_name(&node)); + for child in node.children() { + paths_recur(child, &path, paths); } + paths.insert(node.index(), path); } /// Loads a glTF texture as a bevy [`Image`] and returns it together with its label. @@ -678,9 +684,7 @@ fn load_node( Mat4::from_cols_array_2d(&transform.matrix()), ))); - if let Some(name) = gltf_node.name() { - node.insert(Name::new(name.to_string())); - } + node.insert(node_name(gltf_node)); // create camera node if let Some(camera) = gltf_node.camera() {