[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