[Bf-blender-cvs] [49385f89b9f] functions: function input and output node

Jacques Lucke noreply at git.blender.org
Sun Feb 10 20:26:56 CET 2019


Commit: 49385f89b9f10e54080f7c8abbd2e4b2a8a85ffd
Author: Jacques Lucke
Date:   Fri Feb 8 17:11:28 2019 +0100
Branches: functions
https://developer.blender.org/rB49385f89b9f10e54080f7c8abbd2e4b2a8a85ffd

function input and output node

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

M	release/scripts/startup/function_nodes/menu.py
M	release/scripts/startup/function_nodes/nodes/__init__.py
A	release/scripts/startup/function_nodes/nodes/function_input.py
A	release/scripts/startup/function_nodes/nodes/function_output.py
M	source/blender/functions/function_nodes/function_nodes.cpp

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

diff --git a/release/scripts/startup/function_nodes/menu.py b/release/scripts/startup/function_nodes/menu.py
index fa504b0d96f..446d53ff437 100644
--- a/release/scripts/startup/function_nodes/menu.py
+++ b/release/scripts/startup/function_nodes/menu.py
@@ -9,6 +9,9 @@ def draw_menu(self, context):
     layout = self.layout
     self.operator_context = "INVOKE_DEFAULT"
 
+    insert_node(layout, "fn_FunctionInputNode", "Function Input")
+    insert_node(layout, "fn_FunctionOutputNode", "Function Output")
+    layout.separator()
     insert_node(layout, "fn_AddFloatsNode", "Add Floats")
     insert_node(layout, "fn_CombineVectorNode", "Combine Vector")
 
diff --git a/release/scripts/startup/function_nodes/nodes/__init__.py b/release/scripts/startup/function_nodes/nodes/__init__.py
index 4cd5c083146..e3567f28c29 100644
--- a/release/scripts/startup/function_nodes/nodes/__init__.py
+++ b/release/scripts/startup/function_nodes/nodes/__init__.py
@@ -1,4 +1,7 @@
 from . import (
+    function_input,
+    function_output,
+
     add_floats,
     combine_vector,
 )
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/nodes/function_input.py b/release/scripts/startup/function_nodes/nodes/function_input.py
new file mode 100644
index 00000000000..f1cca3bba58
--- /dev/null
+++ b/release/scripts/startup/function_nodes/nodes/function_input.py
@@ -0,0 +1,11 @@
+import bpy
+
+class FunctionInputNode(bpy.types.Node):
+    bl_idname = "fn_FunctionInputNode"
+    bl_label = "Function Input"
+
+    def init(self, context):
+        self.outputs.new("fn_VectorSocket", "Position")
+        self.outputs.new("fn_FloatSocket", "Control")
+
+bpy.utils.register_class(FunctionInputNode)
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/nodes/function_output.py b/release/scripts/startup/function_nodes/nodes/function_output.py
new file mode 100644
index 00000000000..6193c84d29f
--- /dev/null
+++ b/release/scripts/startup/function_nodes/nodes/function_output.py
@@ -0,0 +1,10 @@
+import bpy
+
+class FunctionOutputNode(bpy.types.Node):
+    bl_idname = "fn_FunctionOutputNode"
+    bl_label = "Function Output"
+
+    def init(self, context):
+        self.inputs.new("fn_VectorSocket", "Position")
+
+bpy.utils.register_class(FunctionOutputNode)
\ No newline at end of file
diff --git a/source/blender/functions/function_nodes/function_nodes.cpp b/source/blender/functions/function_nodes/function_nodes.cpp
index d279b35a339..420775b1221 100644
--- a/source/blender/functions/function_nodes/function_nodes.cpp
+++ b/source/blender/functions/function_nodes/function_nodes.cpp
@@ -112,6 +112,21 @@ namespace FN::FunctionNodes {
 		}
 	}
 
+	static bool is_input_node(const bNode *bnode)
+	{
+		return STREQ(bnode->idname, "fn_FunctionInputNode");
+	}
+
+	static bool is_output_node(const bNode *bnode)
+	{
+		return STREQ(bnode->idname, "fn_FunctionOutputNode");
+	}
+
+	static bool is_function_node(const bNode *bnode)
+	{
+		return !(is_input_node(bnode) || is_output_node(bnode));
+	}
+
 	SharedDataFlowGraph FunctionNodeTree::to_data_flow_graph() const
 	{
 		SocketMap socket_map;
@@ -123,8 +138,10 @@ namespace FN::FunctionNodes {
 		SharedDataFlowGraph graph = SharedDataFlowGraph::New();
 
 		for (bNode *bnode = (bNode *)m_tree->nodes.first; bnode; bnode = bnode->next) {
-			auto insert = inserters.lookup(bnode->idname);
-			insert(graph, socket_map, bnode);
+			if (is_function_node(bnode)) {
+				auto insert = inserters.lookup(bnode->idname);
+				insert(graph, socket_map, bnode);
+			}
 		}
 
 		for (bNodeLink *blink = (bNodeLink *)m_tree->links.first; blink; blink = blink->next) {
@@ -134,6 +151,7 @@ namespace FN::FunctionNodes {
 		}
 
 		for (bNode *bnode = (bNode *)m_tree->nodes.first; bnode; bnode = bnode->next) {
+			if (!is_function_node(bnode)) continue;
 			for (bNodeSocket *bsocket = (bNodeSocket *)bnode->inputs.first; bsocket; bsocket = bsocket->next) {
 				Socket socket = socket_map.lookup(bsocket);
 				if (!socket.is_linked()) {



More information about the Bf-blender-cvs mailing list