From 9f7b3936f412ad88253ba38f3a9203827ed8b119 Mon Sep 17 00:00:00 2001 From: James Lindsay <78500760+0HyperCube@users.noreply.github.com> Date: Wed, 16 Oct 2024 21:04:33 +0100 Subject: [PATCH] Fix brush tool broken by #2011 (#2045) Brush tool fix --- .../document/graph_operation/utility_types.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/editor/src/messages/portfolio/document/graph_operation/utility_types.rs b/editor/src/messages/portfolio/document/graph_operation/utility_types.rs index 5b9f6c27..1fe59f1f 100644 --- a/editor/src/messages/portfolio/document/graph_operation/utility_types.rs +++ b/editor/src/messages/portfolio/document/graph_operation/utility_types.rs @@ -250,16 +250,21 @@ impl<'a> ModifyInputsContext<'a> { let mut existing_node_id = None; for upstream_node in upstream.collect::>() { let upstream_node_input_type = self.network_interface.input_type(&InputConnector::node(upstream_node, 0), &[]).0.nested_type(); + + // Check if this is the node we have been searching for. + if self.network_interface.reference(&upstream_node, &[]).is_some_and(|node_reference| node_reference == reference) { + existing_node_id = Some(upstream_node); + break; + } + let is_traversal_start = |node_id: NodeId| { self.layer_node.map(|layer| layer.to_node()) == Some(node_id) || self.network_interface.network(&[]).unwrap().exports.iter().any(|export| export.as_node() == Some(node_id)) }; + + // If the type changes then break?? This should at least be after checking if the node is correct (otherwise the brush tool breaks.) if !is_traversal_start(upstream_node) && (self.network_interface.is_layer(&upstream_node, &[]) || upstream_node_input_type != layer_input_type) { break; } - if self.network_interface.reference(&upstream_node, &[]).is_some_and(|node_reference| node_reference == reference) { - existing_node_id = Some(upstream_node); - break; - } } // Create a new node if the node does not exist and update its inputs