@@ -3,20 +3,17 @@ class_name ParleyDeleteOperation
33extends ParleyGraphOperation
44
55var selected_connections : Array [ParleyGraphEdge ]
6- var selected_nodes : Array [ParleyGraphNode ]
6+ var selected_node_ids : Array [String ]
77var deleted_node_datas : Array [NodeData ]
88var graph_view : ParleyGraphView
99
1010func _init (_graph_view : ParleyGraphView , _selected_connections : Array [ParleyGraphEdge ], _selected_nodes : Array [ParleyGraphNode ]) -> void :
1111 graph_view = _graph_view
1212 selected_connections = _selected_connections .duplicate ()
13- selected_nodes = _selected_nodes .duplicate ()
14-
13+ for node : ParleyGraphNode in _selected_nodes :
14+ selected_node_ids .append (node .id )
15+
1516func undo () -> void :
16- pass
17- # Re-add deleted nodes
18-
19- selected_nodes .clear ()
2017 var graph_nodes : Dictionary = {}
2118 for node_data : NodeData in deleted_node_datas :
2219 var deleted_node : ParleyNodeAst = node_data .node_ast
@@ -27,47 +24,43 @@ func undo() -> void:
2724
2825 for node_data : NodeData in deleted_node_datas :
2926 for connection : ParleyGraphEdge in node_data .connections :
30- connection .to_node = graph_view .get_node (NodePath (connection.to_node_name)) as ParleyGraphNode
31- connection .from_node = graph_view .get_node (NodePath (connection.from_node_name)) as ParleyGraphNode
32- if node_data .node_name == connection .to_node_name :
33- selected_nodes .append (connection .to_node )
34- pass
35- elif node_data .node_name == connection .from_node_name :
36- selected_nodes .append (connection .from_node )
37- pass
27+ connection .to_node = graph_view .get_node (NodePath (connection.to_node_name))
28+ connection .from_node = graph_view .get_node (NodePath (connection.from_node_name))
3829 connection .connect_node (graph_view )
3930
4031 for connection : ParleyGraphEdge in selected_connections :
41- connection .to_node = graph_view .get_node (NodePath (connection.to_node_name)) as ParleyGraphNode
42- connection .from_node = graph_view .get_node (NodePath (connection.from_node_name)) as ParleyGraphNode
32+ connection .to_node = graph_view .get_node (NodePath (connection.to_node_name))
33+ connection .from_node = graph_view .get_node (NodePath (connection.from_node_name))
4334 connection .connect_node (graph_view )
4435
4536 graph_view .generate ()
4637
4738func do () -> void :
48- for selected_node : ParleyGraphNode in selected_nodes :
49- if graph_view .has_node (NodePath (selected_node.name)):
50- var ast : ParleyNodeAst = graph_view .ast .find_node_by_id (selected_node .id )
51- var connections : Array [ParleyGraphEdge ] = get_connections_for_node (graph_view , selected_node )
52- deleted_node_datas .append (NodeData .new (selected_node .name , ast , connections ))
39+ deleted_node_datas .clear ()
40+ for selected_node_id : String in selected_node_ids :
41+ var ast : ParleyNodeAst = graph_view .ast .find_node_by_id (selected_node_id )
42+ if ast != null :
43+ var connections : Array [ParleyGraphEdge ] = get_connections_for_node (graph_view , selected_node_id )
44+ deleted_node_datas .append (NodeData .new (selected_node_id , ast , connections ))
5345
54- for selected_node : ParleyGraphNode in selected_nodes :
55- if graph_view .has_node (NodePath (selected_node.name)):
56- print ("remove node" )
57- var ast : ParleyNodeAst = graph_view .ast .find_node_by_id (selected_node .id )
46+ for selected_node_id : String in selected_node_ids :
47+ var ast : ParleyNodeAst = graph_view .ast .find_node_by_id (selected_node_id )
48+ if ast != null :
49+ print (selected_node_id )
50+ var selected_node : ParleyGraphNode = graph_view .find_node_by_id (selected_node_id )
5851 graph_view ._on_node_deselected (selected_node )
5952 graph_view .remove_child (selected_node )
60- graph_view .ast .remove_node (selected_node . id )
53+ graph_view .ast .remove_node (selected_node_id )
6154
55+ graph_view ._on_connections_deselected ()
6256 for connection : ParleyGraphEdge in selected_connections :
63- print ("disconnect connection" )
6457 connection .disconnect_node (graph_view )
65-
58+
6659 graph_view .generate ()
6760
68- func get_connections_for_node (graph_edit : GraphEdit , node : GraphNode ) -> Array [ParleyGraphEdge ]:
61+ func get_connections_for_node (graph_view : ParleyGraphView , node_id : String ) -> Array [ParleyGraphEdge ]:
6962 var result : Array [ParleyGraphEdge ] = []
70- var connections : Array [Dictionary ] = graph_edit .get_connection_list ()
63+ var connections : Array [Dictionary ] = graph_view .get_connection_list ()
7164
7265 for conn : Dictionary in connections :
7366 var from_name : String = conn .get ("from_node" )
@@ -77,19 +70,20 @@ func get_connections_for_node(graph_edit: GraphEdit, node: GraphNode) -> Array[P
7770 var to_node : ParleyGraphNode = graph_view .get_node (NodePath (to_name)) as ParleyGraphNode
7871 var from_node : ParleyGraphNode = graph_view .get_node (NodePath (from_name)) as ParleyGraphNode
7972
80- if from_name == node .name or to_name == node .name :
81- result .append (ParleyGraphEdge .new (from_node , from_port , to_node , to_port ))
73+ if to_node .id == node_id or from_node .id == node_id :
74+ var edge_ast : ParleyEdgeAst = graph_view .ast .get_edge_ast (from_node .id , from_port , to_node .id , to_port )
75+ result .append (ParleyGraphEdge .new (edge_ast , from_node , from_port , to_node , to_port ))
8276
8377 return result
8478
8579
8680class NodeData :
8781 var node_ast : ParleyNodeAst
8882 var connections : Array [ParleyGraphEdge ]
89- var node_name : String
83+ var node_id : String
9084
91- func _init (_node_name : String , _node_ast :ParleyNodeAst , _connections : Array [ParleyGraphEdge ]) -> void :
92- node_name = _node_name
85+ func _init (_node_id : String , _node_ast :ParleyNodeAst , _connections : Array [ParleyGraphEdge ]) -> void :
86+ node_id = _node_id
9387 node_ast = _node_ast
9488 connections = _connections
9589
0 commit comments