68 lines
1.6 KiB
Python
68 lines
1.6 KiB
Python
import bpy
|
|
|
|
class BlenderMaxwellConnectViewer(bpy.types.Operator):
|
|
bl_idname = "blender_maxwell.connect_viewer"
|
|
bl_label = "Connect Viewer to Active"
|
|
bl_description = "Connect active node to Viewer Node"
|
|
bl_options = {'REGISTER', 'UNDO'}
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
space = context.space_data
|
|
return (
|
|
space.type == 'NODE_EDITOR'
|
|
and space.node_tree is not None
|
|
and space.node_tree.bl_idname == "MaxwellSimTreeType"
|
|
)
|
|
|
|
def invoke(self, context, event):
|
|
node_tree = context.space_data.node_tree
|
|
mlocx = event.mouse_region_x
|
|
mlocy = event.mouse_region_y
|
|
bpy.ops.node.select(
|
|
extend=False,
|
|
location=(mlocx, mlocy),
|
|
)
|
|
select_node = context.selected_nodes[0]
|
|
|
|
for node in node_tree.nodes:
|
|
if node.bl_idname == "ViewerNodeType":
|
|
viewer_node = node
|
|
break
|
|
else:
|
|
viewer_node = node_tree.nodes.new("ViewerNodeType")
|
|
viewer_node.location.x = select_node.location.x + 250
|
|
viewer_node.location.y = select_node.location.y
|
|
select_node.select = False
|
|
|
|
new_link = True
|
|
for link in viewer_node.inputs[0].links:
|
|
if link.from_node.name == select_node.name:
|
|
new_link = False
|
|
continue
|
|
node_tree.links.remove(link)
|
|
|
|
if new_link:
|
|
node_tree.links.new(select_node.outputs[0], viewer_node.inputs[0])
|
|
return {'FINISHED'}
|
|
|
|
####################
|
|
# - Blender Registration
|
|
####################
|
|
BL_REGISTER = [
|
|
BlenderMaxwellConnectViewer,
|
|
]
|
|
|
|
BL_KMI_REGISTER = [
|
|
dict(
|
|
_=(
|
|
BlenderMaxwellConnectViewer.bl_idname,
|
|
"LEFTMOUSE",
|
|
"PRESS",
|
|
),
|
|
ctrl=True, ## CTRL
|
|
shift=True, ## Shift
|
|
alt=False, ## Alt
|
|
),
|
|
]
|