@@ -1634,12 +1634,9 @@ impl<'a> MessageHandler<NodeGraphMessage, NodeGraphMessageContext<'a>> for NodeG
16341634 responses. add ( PropertiesPanelMessage :: Refresh ) ;
16351635 responses. add ( NodeGraphMessage :: UpdateActionButtons ) ;
16361636 if graph_view_overlay_open {
1637- let nodes_to_render = self . collect_nodes ( network_interface , breadcrumb_network_path) ;
1637+ let nodes_to_render = network_interface . collect_nodes ( & self . node_graph_errors , breadcrumb_network_path) ;
16381638 self . frontend_nodes = nodes_to_render. keys ( ) . copied ( ) . collect ( ) ;
1639- let previewed_node = network_interface
1640- . upstream_output_connector ( & InputConnector :: Export ( 0 ) , breadcrumb_network_path)
1641- . and_then ( |output_connector| output_connector. node_id ( ) )
1642- . filter ( |output_node| network_interface. root_node ( breadcrumb_network_path) . is_some_and ( |root_node| root_node. node_id != node_id) ) ;
1639+ let previewed_node = network_interface. previewed_node ( breadcrumb_network_path) ;
16431640
16441641 responses. add ( FrontendMessage :: UpdateNodeGraphNodes {
16451642 nodes_to_render,
@@ -2490,95 +2487,6 @@ impl NodeGraphMessageHandler {
24902487 added_wires
24912488 }
24922489
2493- fn collect_nodes ( & self , network_interface : & mut NodeNetworkInterface , breadcrumb_network_path : & [ NodeId ] ) -> HashMap < NodeId , FrontendNodeOrLayer > {
2494- let Some ( network) = network_interface. nested_network ( breadcrumb_network_path) else {
2495- log:: error!( "Could not get nested network when collecting nodes" ) ;
2496- return HashMap :: new ( ) ;
2497- } ;
2498- let selected_nodes = network_interface. selected_nodes_in_nested_network ( breadcrumb_network_path) . unwrap_or_default ( ) ;
2499- let mut nodes = HashMap :: new ( ) ;
2500- for ( node_id, visible) in network. nodes . iter ( ) . map ( |( node_id, node) | ( * node_id, node. visible ) ) . collect :: < Vec < _ > > ( ) {
2501- let node_id_path = [ breadcrumb_network_path, & [ node_id] ] . concat ( ) ;
2502-
2503- let errors = self
2504- . node_graph_errors
2505- . iter ( )
2506- . find ( |error| error. node_path == node_id_path)
2507- . map ( |error| format ! ( "{:?}" , error. error. clone( ) ) )
2508- . or_else ( || {
2509- if self . node_graph_errors . iter ( ) . any ( |error| error. node_path . starts_with ( & node_id_path) ) {
2510- Some ( "Node graph type error within this node" . to_string ( ) )
2511- } else {
2512- None
2513- }
2514- } ) ;
2515-
2516- let metadata = FrontendNodeMetadata {
2517- can_be_layer : network_interface. is_eligible_to_be_layer ( & node_id, breadcrumb_network_path) ,
2518- display_name : network_interface. display_name ( & node_id, breadcrumb_network_path) ,
2519- selected : selected_nodes. 0 . contains ( & node_id) ,
2520- reference : network_interface. reference ( & node_id, breadcrumb_network_path) . cloned ( ) . unwrap_or_default ( ) ,
2521- visible,
2522- errors,
2523- } ;
2524-
2525- let frontend_node_or_layer = match network_interface. is_layer ( & node_id, network_path) {
2526- true => {
2527- let Some ( position) = network_interface. position ( & node_id, breadcrumb_network_path) else {
2528- log:: error!( "Could not get position for node: {node_id}" ) ;
2529- continue ;
2530- } ;
2531-
2532- let position = FrontendXY { x : position. x , y : position. y } ;
2533-
2534- let inputs = ( 0 ..network_interface. number_of_inputs ( & node_id, breadcrumb_network_path) )
2535- . map ( |input_index| network_interface. frontend_input_from_connector ( & InputConnector :: node ( node_id, input_index) , breadcrumb_network_path) )
2536- . collect ( ) ;
2537-
2538- let outputs = ( 0 ..network_interface. number_of_outputs ( & node_id, breadcrumb_network_path) )
2539- . map ( |output_index| network_interface. frontend_output_from_connector ( & OutputConnector :: node ( node_id, output_index) , breadcrumb_network_path) )
2540- . collect ( ) ;
2541-
2542- let node = Some ( FrontendNode { position, inputs, outputs } ) ;
2543-
2544- FrontendNodeOrLayer { metadata, node, layer : None }
2545- }
2546- false => {
2547- let Some ( position) = network_interface. position ( & node_id, breadcrumb_network_path) else {
2548- log:: error!( "Could not get position for node: {node_id}" ) ;
2549- continue ;
2550- } ;
2551- let position = FrontendXY { x : position. x , y : position. y } ;
2552-
2553- let Some ( bottom_input) = network_interface. frontend_input_from_connector ( & InputConnector :: node ( node_id, 0 ) , breadcrumb_network_path) else {
2554- log:: error!( "Layer must have a visible primary input" ) ;
2555- continue ;
2556- } ;
2557- let side_input = network_interface. frontend_input_from_connector ( & InputConnector :: node ( node_id, 1 ) , breadcrumb_network_path) ;
2558- let Some ( output) = network_interface. frontend_output_from_connector ( & OutputConnector :: node ( node_id, 0 ) , breadcrumb_network_path) else {
2559- log:: error!( "Layer must have a visible primary output" ) ;
2560- continue ;
2561- } ;
2562-
2563- let layer = Some ( FrontendLayer {
2564- bottom_input,
2565- side_input,
2566- output,
2567- position,
2568- locked : network_interface. is_locked ( & node_id, breadcrumb_network_path) ,
2569- chain_width : network_interface. chain_width ( & node_id, breadcrumb_network_path) ,
2570- layer_has_left_border_gap : network_interface. layer_has_left_border_gap ( & node_id, breadcrumb_network_path) ,
2571- primary_input_connected_to_layer : network_interface. primary_output_connected_to_layer ( & node_id, breadcrumb_network_path) ,
2572- primary_output_connected_to_layer : network_interface. primary_input_connected_to_layer ( & node_id, breadcrumb_network_path) ,
2573- } ) ;
2574- FrontendNodeOrLayer { metadata, node : None , layer }
2575- }
2576- } ;
2577- nodes. insert ( node_id, frontend_node_or_layer) ;
2578- }
2579- nodes
2580- }
2581-
25822490 fn collect_subgraph_names ( network_interface : & mut NodeNetworkInterface , breadcrumb_network_path : & [ NodeId ] ) -> Option < Vec < String > > {
25832491 let mut current_network_path = vec ! [ ] ;
25842492 let mut current_network = network_interface. nested_network ( & current_network_path) . unwrap ( ) ;
0 commit comments