From 0c08fe2fec6f97d3ff7cc164a3849eafc941e4e2 Mon Sep 17 00:00:00 2001 From: Bartek Skorupa <bartekskorupa@bartekskorupa.com> Date: Mon, 8 Apr 2013 21:38:29 +0000 Subject: [PATCH] Better behavior of 'Swap Nodes'. More options passed from old node to new one. --- node_efficiency_tools.py | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/node_efficiency_tools.py b/node_efficiency_tools.py index 83f81a3f4..6418dbfb7 100644 --- a/node_efficiency_tools.py +++ b/node_efficiency_tools.py @@ -19,7 +19,7 @@ bl_info = { 'name': "Nodes Efficiency Tools", 'author': "Bartek Skorupa", - 'version': (2, 23), + 'version': (2, 24), 'blender': (2, 6, 6), 'location': "Node Editor Properties Panel (Ctrl-SPACE)", 'description': "Nodes Efficiency Tools", @@ -772,14 +772,27 @@ class NodesSwap(Operator, NodeToolBase): hide = True new_node = nodes.new(new_type) # if swap Mix to Math of vice-verca - try to set blend type or operation accordingly - if new_node.type == 'MIX_RGB': + if new_node.type in {'MIX_RGB', 'ALPHAOVER'}: + new_node.inputs[0].default_value = 1.0 if node.type == 'MATH': if node.operation in [entry[0] for entry in blend_types]: - new_node.blend_type = node.operation + if hasattr(new_node, 'blend_type'): + new_node.blend_type = node.operation + for i in range(2): + new_node.inputs[i+1].default_value = [node.inputs[i].default_value] * 3 + [1.0] + elif node.type in {'MIX_RGB', 'ALPHAOVER'}: + for i in range(3): + new_node.inputs[i].default_value = node.inputs[i].default_value elif new_node.type == 'MATH': - if node.type == 'MIX_RGB': - if node.blend_type in [entry[0] for entry in operations]: - new_node.operation = node.blend_type + if node.type in {'MIX_RGB', 'ALPHAOVER'}: + if hasattr(node, 'blend_type'): + if node.blend_type in [entry[0] for entry in operations]: + new_node.operation = node.blend_type + for i in range(2): + channels = [] + for c in range(3): + channels.append(node.inputs[i+1].default_value[c]) + new_node.inputs[i].default_value = max(channels) old_inputs_count = len(node.inputs) new_inputs_count = len(new_node.inputs) replace = [] # entries - pairs: old input index, new input index. @@ -822,12 +835,10 @@ class NodesSwap(Operator, NodeToolBase): links.new(in_link.from_socket, new_node.inputs[new_i]) for out_link in node.outputs[0].links: links.new(new_node.outputs[0], out_link.to_socket) - new_node.location = node.location - new_node.label = node.label + for attr in {'location', 'label', 'mute', 'show_preview', 'width_hidden', 'use_clamp'}: + if hasattr(node, attr) and hasattr(new_node, attr): + setattr(new_node, attr, getattr(node, attr)) new_node.hide = hide - new_node.mute = node.mute - new_node.show_preview = node.show_preview - new_node.width_hidden = node.width_hidden nodes.active = new_node reselect.append(new_node) bpy.ops.node.select_all(action="DESELECT") -- GitLab