@@ -98,8 +98,9 @@ func bsd_selected(bsd: BlockScriptData):
9898
9999 var edited_node = EditorInterface .get_inspector ().get_edited_object () as Node
100100
101- _window .position = Vector2 (0 , 0 )
102- zoom = 1
101+ if bsd != _current_bsd :
102+ _window .position = Vector2 (0 , 0 )
103+ zoom = 1
103104
104105 _window .visible = false
105106 _zoom_label .visible = false
@@ -170,30 +171,35 @@ func load_tree(parent: Node, node: SerializedBlockTreeNode):
170171 load_tree (scene .get_node (c [0 ]), c [1 ])
171172
172173
173- func get_canvas_block_trees () -> SerializedBlockTreeNodeArray :
174- var block_trees := SerializedBlockTreeNodeArray . new ()
174+ func rebuild_block_trees ( undo_redo ) :
175+ var block_trees_array = []
175176 for c in _window .get_children ():
176- block_trees .array .append (build_tree (c ))
177+ block_trees_array .append (build_tree (c , undo_redo ))
178+ undo_redo .add_undo_property (_current_bsd .block_trees , "array" , _current_bsd .block_trees .array )
179+ undo_redo .add_do_property (_current_bsd .block_trees , "array" , block_trees_array )
177180
178- return block_trees
179181
180-
181- func build_tree (block : Block ) -> SerializedBlockTreeNode :
182- var n = SerializedBlockTreeNode .new ()
183- n .serialized_block = SerializedBlock .new (block .get_block_class (), block .get_serialized_props ())
182+ func build_tree (block : Block , undo_redo : EditorUndoRedoManager ) -> SerializedBlockTreeNode :
183+ var path_child_pairs = []
184+ block .update_resources (undo_redo )
184185
185186 for snap in find_snaps (block ):
186- for c in snap .get_children ():
187- if c is Block : # Make sure to not include preview
188- n .path_child_pairs .append ([block .get_path_to (snap ), build_tree (c )])
187+ var snapped_block = snap .get_snapped_block ()
188+ if snapped_block == null :
189+ continue
190+ path_child_pairs .append ([block .get_path_to (snap ), build_tree (snapped_block , undo_redo )])
191+
192+ if block .resource .path_child_pairs != path_child_pairs :
193+ undo_redo .add_undo_property (block .resource , "path_child_pairs" , block .resource .path_child_pairs )
194+ undo_redo .add_do_property (block .resource , "path_child_pairs" , path_child_pairs )
189195
190- return n
196+ return block . resource
191197
192198
193- func find_snaps (node : Node ) -> Array :
194- var snaps := [ ]
199+ func find_snaps (node : Node ) -> Array [ SnapPoint ] :
200+ var snaps : Array [ SnapPoint ]
195201
196- if node .is_in_group ("snap_point" ):
202+ if node .is_in_group ("snap_point" ) and node is SnapPoint :
197203 snaps .append (node )
198204 else :
199205 for c in node .get_children ():
0 commit comments