[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