[Bf-blender-cvs] [64d28816506] temp-node-tree-pages-prototype: follow portal operator
Jacques Lucke
noreply at git.blender.org
Thu Mar 18 13:51:19 CET 2021
Commit: 64d288165062854fe70ffd3d3ddeb10009758e2c
Author: Jacques Lucke
Date: Thu Mar 18 12:16:22 2021 +0100
Branches: temp-node-tree-pages-prototype
https://developer.blender.org/rB64d288165062854fe70ffd3d3ddeb10009758e2c
follow portal operator
===================================================================
M release/scripts/presets/keyconfig/keymap_data/blender_default.py
M release/scripts/startup/bl_operators/node.py
===================================================================
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index feba4e3bd09..c0034f46f6e 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -1830,6 +1830,7 @@ def km_node_editor(params):
])
items.extend([
+ ("node.follow_portal", {"type": 'O', "value": 'PRESS'}, None),
("node.select_box", {"type": params.select_tweak, "value": 'ANY'},
{"properties": [("tweak", True)]}),
("node.select_lasso", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True, "alt": True},
diff --git a/release/scripts/startup/bl_operators/node.py b/release/scripts/startup/bl_operators/node.py
index 7884a7287b7..67723cfb3bc 100644
--- a/release/scripts/startup/bl_operators/node.py
+++ b/release/scripts/startup/bl_operators/node.py
@@ -303,6 +303,47 @@ class NODE_OT_tree_path_parent(Operator):
return {'FINISHED'}
+class NODE_OT_follow_portal(Operator):
+ '''Follow portal'''
+ bl_idname = "node.follow_portal"
+ bl_label = "Follow Portal"
+
+ @classmethod
+ def poll(cls, context):
+ space = context.space_data
+ return space.type == 'NODE_EDITOR'
+
+ def execute(self, context):
+ space = context.space_data
+ ntree = space.node_tree
+ old_active_node = ntree.nodes.active
+ if old_active_node is None or old_active_node.bl_idname not in ('NodePortalIn', 'NodePortalOut'):
+ return {'CANCELLED'}
+
+ portal_id = old_active_node.portal_id
+ if old_active_node.bl_idname == 'NodePortalIn':
+ out_nodes = [n for n in ntree.nodes if n.bl_idname == 'NodePortalOut']
+ if len(out_nodes) != 1:
+ return {'CANCELLED'}
+ out_node = out_nodes[0]
+ for node in ntree.nodes:
+ node.select = False
+ out_node.select = True
+ ntree.nodes.active = out_node
+ if old_active_node.bl_idname == 'NodePortalOut':
+ in_nodes = [n for n in ntree.nodes if n.bl_idname == 'NodePortalIn']
+ if len(in_nodes) != 1:
+ return {'CANCELLED'}
+ in_node = in_nodes[0]
+ for node in ntree.nodes:
+ node.select = False
+ in_node.select = True
+ ntree.nodes.active = in_node
+
+ bpy.ops.node.view_selected()
+ return {'FINISHED'}
+
+
classes = (
NodeSetting,
@@ -311,4 +352,5 @@ classes = (
NODE_OT_add_search,
NODE_OT_collapse_hide_unused_toggle,
NODE_OT_tree_path_parent,
+ NODE_OT_follow_portal,
)
More information about the Bf-blender-cvs
mailing list