[Bf-blender-cvs] [c5330b6d942] functions: new control flow socket

Jacques Lucke noreply at git.blender.org
Fri Jul 5 12:26:37 CEST 2019


Commit: c5330b6d9421f287dee99a6f26d5ca25c7a35aaf
Author: Jacques Lucke
Date:   Fri Jul 5 10:11:40 2019 +0200
Branches: functions
https://developer.blender.org/rBc5330b6d9421f287dee99a6f26d5ca25c7a35aaf

new control flow socket

===================================================================

M	release/scripts/startup/nodes/bparticle_nodes/age_reached_event.py
M	release/scripts/startup/nodes/declaration/__init__.py
M	release/scripts/startup/nodes/declaration/bparticles.py
M	release/scripts/startup/nodes/socket_builder.py
M	release/scripts/startup/nodes/sockets.py

===================================================================

diff --git a/release/scripts/startup/nodes/bparticle_nodes/age_reached_event.py b/release/scripts/startup/nodes/bparticle_nodes/age_reached_event.py
index 39e74390110..14eb8450f40 100644
--- a/release/scripts/startup/nodes/bparticle_nodes/age_reached_event.py
+++ b/release/scripts/startup/nodes/bparticle_nodes/age_reached_event.py
@@ -8,5 +8,6 @@ class AgeReachedEventNode(bpy.types.Node, BParticlesNode):
     bl_label = "Age Reached Event"
 
     def declaration(self, builder : SocketBuilder):
-        builder.event_input("events", "Event")
+        builder.event_input("event", "Event")
         builder.fixed_input("age", "Age", "Float")
+        builder.control_flow_output("on_event", "On Event")
diff --git a/release/scripts/startup/nodes/declaration/__init__.py b/release/scripts/startup/nodes/declaration/__init__.py
index af2238d9673..a72662ff305 100644
--- a/release/scripts/startup/nodes/declaration/__init__.py
+++ b/release/scripts/startup/nodes/declaration/__init__.py
@@ -4,4 +4,4 @@ from . pack_list import PackListDecl
 from . tree_interface import TreeInterfaceDecl
 from . variadic import AnyVariadicDecl
 from . vectorized import VectorizedInputDecl, VectorizedOutputDecl
-from . bparticles import EmitterSocketDecl, EventSocketDecl
+from . bparticles import EmitterSocketDecl, EventSocketDecl, ControlFlowSocketDecl
diff --git a/release/scripts/startup/nodes/declaration/bparticles.py b/release/scripts/startup/nodes/declaration/bparticles.py
index e1672c2e54f..8f1d16bc9da 100644
--- a/release/scripts/startup/nodes/declaration/bparticles.py
+++ b/release/scripts/startup/nodes/declaration/bparticles.py
@@ -53,3 +53,35 @@ class EventSocketDecl(SocketDeclBase):
 
     def amount(self):
         return 1
+
+class ControlFlowSocketDecl(SocketDeclBase):
+    def __init__(self, node, identifier: str, display_name: str):
+        self.node = node
+        self.identifier = identifier
+        self.display_name = display_name
+
+    def build(self, node_sockets):
+        socket = node_sockets.new("bp_ControlFlowSocket", self.display_name, identifier=self.identifier)
+        socket.link_limit = self.get_desired_link_limit(socket)
+        return [socket]
+
+    def get_desired_link_limit(self, socket):
+        if socket.is_output:
+            return 1
+        else:
+            return MAX_LINK_LIMIT
+
+    def validate(self, sockets):
+        if len(sockets) != 1:
+            return False
+        socket = sockets[0]
+        if socket.bl_idname != "bp_ControlFlowSocket":
+            return False
+        if socket.name != self.display_name:
+            return False
+        if socket.link_limit != self.get_desired_link_limit(socket):
+            return False
+        return True
+
+    def amount(self):
+        return 1
diff --git a/release/scripts/startup/nodes/socket_builder.py b/release/scripts/startup/nodes/socket_builder.py
index 058daf4f109..438d3cb85fa 100644
--- a/release/scripts/startup/nodes/socket_builder.py
+++ b/release/scripts/startup/nodes/socket_builder.py
@@ -8,6 +8,7 @@ from . declaration import (
     VectorizedOutputDecl,
     EmitterSocketDecl,
     EventSocketDecl,
+    ControlFlowSocketDecl,
 )
 
 class SocketBuilder:
@@ -188,6 +189,14 @@ class SocketBuilder:
         decl = EventSocketDecl(self.node, identifier, name)
         self._add_output(decl)
 
+    def control_flow_input(self, identifier, name):
+        decl = ControlFlowSocketDecl(self.node, identifier, name)
+        self._add_input(decl)
+
+    def control_flow_output(self, identifier, name):
+        decl = ControlFlowSocketDecl(self.node, identifier, name)
+        self._add_output(decl)
+
 
 class SocketDeclMap:
     def __init__(self, node, input_declarations, output_declarations):
diff --git a/release/scripts/startup/nodes/sockets.py b/release/scripts/startup/nodes/sockets.py
index abafb8f0631..166832a69e5 100644
--- a/release/scripts/startup/nodes/sockets.py
+++ b/release/scripts/startup/nodes/sockets.py
@@ -103,3 +103,10 @@ class EventSocket(bpy.types.NodeSocket, BaseSocket):
 
     def draw_color(self, context, node):
         return (0.2, 0.8, 0.2, 1)
+
+class ControlFlowSocket(bpy.types.NodeSocket, BaseSocket):
+    bl_idname = "bp_ControlFlowSocket"
+    bl_label = "Control Flow Socket"
+
+    def draw_color(self, context, node):
+        return (0.8, 0.2, 0.2, 1)



More information about the Bf-blender-cvs mailing list