From e5062a4bbbbb0dbea8612225ab475a3d40e64346 Mon Sep 17 00:00:00 2001 From: Nova Date: Mon, 5 Sep 2022 01:21:35 -0400 Subject: [PATCH] feat(scenegraph): get node through aliases --- src/core/scenegraph.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/core/scenegraph.rs b/src/core/scenegraph.rs index dc064f7..8551ecb 100644 --- a/src/core/scenegraph.rs +++ b/src/core/scenegraph.rs @@ -22,14 +22,21 @@ impl Scenegraph { } pub fn add_node(&self, node: Node) -> Arc { - let path = node.get_path().to_string(); let node_arc = Arc::new(node); - self.nodes.insert(path, node_arc.clone()); + self.add_node_raw(node_arc.clone()); node_arc } + pub fn add_node_raw(&self, node: Arc) { + let path = node.get_path().to_string(); + self.nodes.insert(path, node); + } pub fn get_node(&self, path: &str) -> Option> { - Some(self.nodes.get(path)?.clone()) + let mut node = self.nodes.get(path)?.clone(); + if let Some(alias) = node.alias.get() { + node = alias.original.upgrade()?; + } + Some(node) } pub fn remove_node(&self, path: &str) -> Option> {