33
44from .utils import *
55
6- #node tree input sockets that have default properties
7- default_sockets = {'VALUE' , 'INT' , 'BOOLEAN' , 'VECTOR' , 'RGBA' }
8-
96geo_node_settings = {
107 # Attribute nodes
118 "GeometryNodeAttributeStatistic" : ["data_type" , "domain" ],
@@ -212,14 +209,14 @@ def execute(self, context):
212209 used_vars = set ()
213210
214211 def process_geo_nodes_group (node_tree , level , node_vars , used_vars ):
215- node_tree_var = create_var (node_tree .name , used_vars )
212+ nt_var = create_var (node_tree .name , used_vars )
216213
217214 outer , inner = make_indents (level )
218215
219216 #initialize node group
220- file .write (f"{ outer } #initialize { node_tree_var } node group\n " )
221- file .write (f"{ outer } def { node_tree_var } _node_group():\n " )
222- file .write ((f"{ inner } { node_tree_var } "
217+ file .write (f"{ outer } #initialize { nt_var } node group\n " )
218+ file .write (f"{ outer } def { nt_var } _node_group():\n " )
219+ file .write ((f"{ inner } { nt_var } "
223220 f"= bpy.data.node_groups.new("
224221 f"type = \" GeometryNodeTree\" , "
225222 f"name = \" { node_tree .name } \" )\n " ))
@@ -229,7 +226,7 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars):
229226 outputs_set = False
230227
231228 #initialize nodes
232- file .write (f"{ inner } #initialize { node_tree_var } nodes\n " )
229+ file .write (f"{ inner } #initialize { nt_var } nodes\n " )
233230
234231 sim_inputs = []
235232
@@ -241,138 +238,15 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars):
241238 used_vars )
242239 node_trees .add (node_nt )
243240 elif node .bl_idname == 'NodeGroupInput' and not inputs_set :
244- file .write (f"{ inner } #{ node_tree_var } inputs\n " )
245- for i , input in enumerate (node .outputs ):
246- if input .bl_idname != "NodeSocketVirtual" :
247- file .write (f"{ inner } #input { input .name } \n " )
248- file .write ((f"{ inner } { node_tree_var } .inputs.new"
249- f"(\" { input .bl_idname } \" , "
250- f"\" { input .name } \" )\n " ))
251- socket = node_tree .inputs [i ]
252- if input .type in default_sockets :
253- if input .type == 'RGBA' :
254- dv = vec4_to_py_str (socket .default_value )
255- elif input .type == 'VECTOR' :
256- dv = vec3_to_py_str (socket .default_value )
257- else :
258- dv = socket .default_value
259-
260- #default value
261- file .write ((f"{ inner } { node_tree_var } "
262- f".inputs[{ i } ]"
263- f".default_value = { dv } \n " ))
264-
265- #min value
266- if hasattr (socket , "min_value" ):
267- file .write ((f"{ inner } { node_tree_var } "
268- f".inputs[{ i } ]"
269- f".min_value = "
270- f"{ socket .min_value } \n " ))
271- #max value
272- if hasattr (socket , "max_value" ):
273- file .write ((f"{ inner } { node_tree_var } "
274- f".inputs[{ i } ]"
275- f".max_value = "
276- f"{ socket .max_value } \n " ))
277- #default attribute name
278- if hasattr (socket , "default_attribute_name" ):
279- if socket .default_attribute_name != "" :
280- file .write ((f"{ inner } { node_tree_var } "
281- f".inputs[{ i } ]"
282- f".default_attribute_name = \" "
283- f"{ socket .default_attribute_name } "
284- f"\" \n " ))
285- #description
286- if socket .description != "" :
287- file .write ((f"{ inner } { node_tree_var } "
288- f".inputs[{ i } ]"
289- f".description = "
290- f"\" { socket .description } \" \n " ))
291- #hide value
292- if socket .hide_value is True :
293- file .write ((f"{ inner } { node_tree_var } "
294- f".inputs[{ i } ]"
295- f".hide_value = "
296- f"{ socket .hide_value } \n " ))
297-
298- #hide in modifier
299- if hasattr (socket , "hide_in_modifier" ):
300- if socket .hide_in_modifier is True :
301- file .write ((f"{ inner } { node_tree_var } "
302- f".inputs[{ i } ]"
303- f".hide_in_modifier = "
304- f"{ socket .hide_in_modifier } \n " ))
305- file .write ("\n " )
306- file .write ("\n " )
241+ group_io_settings (node , file , inner , "input" , nt_var , node_tree )
307242 inputs_set = True
308243
309244 elif node .bl_idname == 'NodeGroupOutput' and not outputs_set :
310- file .write (f"{ inner } #{ node_tree_var } outputs\n " )
311- for i , output in enumerate (node .inputs ):
312- if output .bl_idname != 'NodeSocketVirtual' :
313- file .write ((f"{ inner } { node_tree_var } .outputs"
314- f".new(\" { output .bl_idname } \" , "
315- f"\" { output .name } \" )\n " ))
316-
317- socket = node_tree .outputs [i ]
318- if output .type in default_sockets :
319- if output .type == 'RGBA' :
320- dv = vec4_to_py_str (socket .default_value )
321- elif output .type == 'VECTOR' :
322- dv = vec3_to_py_str (socket .default_value )
323- else :
324- dv = socket .default_value
325-
326- #default value
327- file .write ((f"{ inner } { node_tree_var } "
328- f".outputs[{ i } ]"
329- f".default_value = { dv } \n " ))
330-
331- #min value
332- if hasattr (socket , "min_value" ):
333- file .write ((f"{ inner } { node_tree_var } "
334- f".outputs[{ i } ]"
335- f".min_value = "
336- f"{ socket .min_value } \n " ))
337- #max value
338- if hasattr (socket , "max_value" ):
339- file .write ((f"{ inner } { node_tree_var } "
340- f".outputs[{ i } ]"
341- f".max_value = "
342- f"{ socket .max_value } \n " ))
343- #description
344- if socket .description != "" :
345- file .write ((f"{ inner } { node_tree_var } "
346- f".outputs[{ i } ]"
347- f".description = "
348- f"\" { socket .description } \" \n " ))
349- #hide value
350- if socket .hide_value is True :
351- file .write ((f"{ inner } { node_tree_var } "
352- f".outputs[{ i } ]"
353- f".hide_value = "
354- f"{ socket .hide_value } \n " ))
355-
356- #default attribute name
357- if hasattr (socket , "default_attribute_name" ):
358- if socket .default_attribute_name != "" :
359- file .write ((f"{ inner } { node_tree_var } "
360- f".outputs[{ i } ]"
361- f".default_attribute_name = \" "
362- f"{ socket .default_attribute_name } "
363- f"\" \n " ))
364- #attribute domain
365- if hasattr (socket , "attribute_domain" ):
366- file .write ((f"{ inner } { node_tree_var } "
367- f".outputs[{ i } ]"
368- f".attribute_domain = "
369- f"\' { socket .attribute_domain } \' \n " ))
370-
371- file .write ("\n " )
245+ group_io_settings (node , file , inner , "output" , nt_var , node_tree )
372246 outputs_set = True
373247
374248 #create node
375- node_var = create_node (node , file , inner , node_tree_var ,
249+ node_var = create_node (node , file , inner , nt_var ,
376250 node_vars , used_vars )
377251 set_settings_defaults (node , geo_node_settings , file , inner ,
378252 node_var )
@@ -428,13 +302,13 @@ def process_geo_nodes_group(node_tree, level, node_vars, used_vars):
428302 set_locations (node_tree , file , inner , node_vars )
429303 set_dimensions (node_tree , file , inner , node_vars )
430304
431- init_links (node_tree , file , inner , node_tree_var , node_vars )
305+ init_links (node_tree , file , inner , nt_var , node_vars )
432306
433- file .write (f"{ inner } return { node_tree_var } \n " )
307+ file .write (f"{ inner } return { nt_var } \n " )
434308
435309 #create node group
436- file .write ((f"\n { outer } { node_tree_var } = "
437- f"{ node_tree_var } _node_group()\n \n " ))
310+ file .write ((f"\n { outer } { nt_var } = "
311+ f"{ nt_var } _node_group()\n \n " ))
438312 return used_vars
439313
440314 process_geo_nodes_group (nt , 2 , node_vars , used_vars )
0 commit comments