Merge node: add update routine

This commit is contained in:
Moritz Brückner 2021-05-22 12:30:38 +02:00
parent 494e2336ac
commit 11da953407

View file

@ -24,7 +24,7 @@ class MergeNode(ArmLogicTreeNode):
bl_idname = 'LNMergeNode'
bl_label = 'Merge'
arm_section = 'flow'
arm_version = 1
arm_version = 2
def update_exec_mode(self, context):
self.outputs['Active Input Index'].hide = self.property0 == 'once_per_frame'
@ -65,3 +65,24 @@ class MergeNode(ArmLogicTreeNode):
return self.bl_label
return f'{self.bl_label}: [{len(self.inputs)}]'
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
if self.arm_version not in (0, 1):
raise LookupError()
newnode = node_tree.nodes.new('LNMergeNode')
newnode.property0 = self.property0
# Recreate all original inputs
array_nodes[str(id(newnode))] = newnode
for idx, input in enumerate(self.inputs):
bpy.ops.arm.node_add_input('EXEC_DEFAULT', node_index=str(id(newnode)), socket_type='ArmNodeSocketAction')
for link in input.links:
node_tree.links.new(link.from_socket, newnode.inputs[idx])
# Recreate outputs
for link in self.outputs[0].links:
node_tree.links.new(newnode.outputs[0], link.to_socket)
return newnode