@@ -216,8 +216,39 @@ func get_icon_name(item_name : String) -> String:
216216func _on_Filter_text_changed (_filter : String ) -> void :
217217 update_tree ()
218218
219+ func generate_transparent_node_sceenshot (node : GraphElement , save_path : String ) -> void :
220+ var csf : float = get_tree ().root .content_scale_factor
221+ var image : Image = get_viewport ().get_texture ().get_image ()
222+ image = image .get_region (Rect2 (csf * (node .global_position - Vector2 (6 , 6 )) ,csf * (node .size + Vector2 (14 , 12 ))))
223+ # Make background transparent
224+ image .convert (Image .FORMAT_RGBA8 )
225+ var border_color : Color = image .get_pixel (0 , 0 )
226+ for y : int in image .get_height ():
227+ for x : int in image .get_width ():
228+ if image .get_pixel (x , y ) != border_color :
229+ break
230+ image .set_pixel (x , y , Color (0 , 0 , 0 , 0 ))
231+ for x : int in range (image .get_width ()- 1 , 0 , - 1 ):
232+ if image .get_pixel (x , y ) != border_color :
233+ break
234+ image .set_pixel (x , y , Color (0 , 0 , 0 , 0 ))
235+ @warning_ignore ("narrowing_conversion" )
236+ image .resize (image .get_size ().x / csf , image .get_size ().y / csf , Image .INTERPOLATE_LANCZOS )
237+ image .save_png (save_path )
238+
239+ func generate_material_screenshots (graph_edit : MMGraphEdit ) -> int :
240+ # generate sceenshots for material nodes
241+ var material_node : MMGraphNodeGeneric = graph_edit .get_node ("node_Material" )
242+ for i in mm_loader .get_material_nodes ().size ():
243+ await get_tree ().create_timer (0.05 ).timeout
244+ material_node ._on_menu_id_pressed (i )
245+ print (material_node .generator .model )
246+ generate_transparent_node_sceenshot (material_node ,
247+ "res://material_maker/doc/images/node_%s .png" % [material_node .generator .model ])
248+ return mm_loader .get_material_nodes ().size ()
249+
219250# Should be moved to library manager
220- func generate_screenshots (graph_edit : GraphEdit , parent_item : TreeItem = null ) -> int :
251+ func generate_node_screenshots (graph_edit : GraphEdit , parent_item : TreeItem = null ) -> int :
221252 var count : int = 0
222253 if parent_item == null :
223254 parent_item = tree .get_root ()
@@ -229,29 +260,15 @@ func generate_screenshots(graph_edit : GraphEdit, parent_item : TreeItem = null)
229260 if item .get_metadata (0 ) != null :
230261 var new_nodes = graph_edit .create_nodes (item .get_metadata (0 ))
231262 await get_tree ().create_timer (0.05 ).timeout
232- var image = get_viewport ().get_texture ().get_image ()
233- var csf = mm_globals .main_window .get_window ().content_scale_factor
234- image = image .get_region (Rect2 (csf * (new_nodes [0 ].global_position - Vector2 (6 , 6 )),csf * (new_nodes [0 ].size + Vector2 (14 , 12 ))))
235- # Make background transparent
236- image .convert (Image .FORMAT_RGBA8 )
237- var border_color : Color = image .get_pixel (0 , 0 )
238- for y : int in image .get_height ():
239- for x : int in image .get_width ():
240- if image .get_pixel (x , y ) != border_color :
241- break
242- image .set_pixel (x , y , Color (0 , 0 , 0 , 0 ))
243- for x : int in range (image .get_width ()- 1 , 0 , - 1 ):
244- if image .get_pixel (x , y ) != border_color :
245- break
246- image .set_pixel (x , y , Color (0 , 0 , 0 , 0 ))
263+ generate_transparent_node_sceenshot (new_nodes [0 ],
264+ "res://material_maker/doc/images/node_%s .png" % [get_icon_name (get_item_path (item ))])
247265 print (get_icon_name (get_item_path (item )))
248- image .resize (image .get_size ().x / csf , image .get_size ().y / csf , Image .INTERPOLATE_LANCZOS )
249- image .save_png ("res://material_maker/doc/images/node_" + get_icon_name (get_item_path (item ))+ ".png" )
250266 for n in new_nodes :
251267 graph_edit .remove_node (n )
252268 count += 1
253- var result = await generate_screenshots (graph_edit , item )
269+ var result = await generate_node_screenshots (graph_edit , item )
254270 count += result
271+
255272 if parent_item == null :
256273 graph_edit .remove_theme_stylebox_override ("panel" )
257274 return count
0 commit comments