[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