Compare commits

...
This repository has been archived on 2026-10-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
Author SHA1 Message Date
Meta Vens
55085d0a4b Fix nested tree group references on Blender 4+ 2026-05-04 13:41:12 +01:00

View file

@ -163,12 +163,21 @@ def tree(name):
# This lets @trees be used in other @trees via simple function calls.
def group_reference(*args, **kwargs):
if IS_BLENDER_4:
result = geometrynodegroup(node_tree=node_group, *args, **kwargs)
result = State.current_node_tree.nodes.new('GeometryNodeGroup')
result.node_tree = node_group
enabled_inputs = [node_input for node_input in result.inputs if node_input.enabled]
for value, node_input in zip(args, enabled_inputs):
set_or_create_link(value, node_input)
for node_input in enabled_inputs[len(args):]:
argname = node_input.name.lower().replace(' ', '_')
if argname in kwargs:
set_or_create_link(kwargs[argname], node_input)
else:
result = group(node_tree=node_group, *args, **kwargs)
group_outputs = []
for group_output in result._socket.node.outputs:
group_outputs.append(Type(group_output))
for group_output in result.outputs:
if group_output.enabled:
group_outputs.append(Type(group_output))
if len(group_outputs) == 1:
return group_outputs[0]
else:
@ -178,4 +187,4 @@ def tree(name):
return build_tree
else:
tree_name = name.__name__
return build_tree(name)
return build_tree(name)