[Bf-blender-cvs] [614c8be1d83] functions: Use data type names instead of idname in c++

Jacques Lucke noreply at git.blender.org
Tue Mar 12 18:48:03 CET 2019


Commit: 614c8be1d83ea4ccc2149a867df3c2b44e647e78
Author: Jacques Lucke
Date:   Tue Mar 12 18:47:57 2019 +0100
Branches: functions
https://developer.blender.org/rB614c8be1d83ea4ccc2149a867df3c2b44e647e78

Use data type names instead of idname in c++

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

M	release/scripts/startup/function_nodes/base.py
M	release/scripts/startup/function_nodes/nodes/function_input.py
M	release/scripts/startup/function_nodes/nodes/function_output.py
M	release/scripts/startup/function_nodes/sockets.py
M	source/blender/functions/frontends/data_flow_nodes/builder.cpp
M	source/blender/functions/frontends/data_flow_nodes/inserters.cpp
M	source/blender/functions/frontends/data_flow_nodes/test_sockets.cpp

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

diff --git a/release/scripts/startup/function_nodes/base.py b/release/scripts/startup/function_nodes/base.py
index 20d71943669..5113d167851 100644
--- a/release/scripts/startup/function_nodes/base.py
+++ b/release/scripts/startup/function_nodes/base.py
@@ -1,4 +1,5 @@
 import bpy
+from bpy.props import *
 from . utils.generic import iter_subclasses_recursive
 
 class FunctionNodeTree(bpy.types.NodeTree):
@@ -55,6 +56,9 @@ class FunctionNode(BaseNode):
         return [], []
 
 class DataSocket(BaseSocketDecl):
+    data_type: StringProperty(
+        maxlen=64)
+
     def draw_self(self, layout, node, text):
         if not (self.is_linked or self.is_output) and hasattr(self, "draw_property"):
             self.draw_property(layout, node, text)
diff --git a/release/scripts/startup/function_nodes/nodes/function_input.py b/release/scripts/startup/function_nodes/nodes/function_input.py
index c2e02e099fb..2d6a4d2e15b 100644
--- a/release/scripts/startup/function_nodes/nodes/function_input.py
+++ b/release/scripts/startup/function_nodes/nodes/function_input.py
@@ -1,5 +1,6 @@
 import bpy
 from .. base import BaseNode
+from .. sockets import info
 
 class FunctionInputNode(BaseNode, bpy.types.Node):
     bl_idname = "fn_FunctionInputNode"
@@ -11,13 +12,13 @@ class FunctionInputNode(BaseNode, bpy.types.Node):
     def draw(self, layout):
         col = layout.column(align=True)
         self.invoke_function(col, "new_socket",
-            "New Float", settings=("fn_FloatSocket", ))
+            "New Float", settings=("Float", ))
         self.invoke_function(col, "new_socket",
-            "New Integer", settings=("fn_IntegerSocket", ))
+            "New Integer", settings=("Integer", ))
         self.invoke_function(col, "new_socket",
-            "New Vector", settings=("fn_VectorSocket", ))
+            "New Vector", settings=("Vector", ))
         self.invoke_function(col, "new_socket",
-            "New Float List", settings=("fn_FloatListSocket", ))
+            "New Float List", settings=("Float List", ))
 
     def draw_socket(self, socket, layout, text):
         row = layout.row(align=True)
@@ -27,8 +28,8 @@ class FunctionInputNode(BaseNode, bpy.types.Node):
         self.invoke_function(row, "remove_socket",
             text="", icon="X", settings=(index, ))
 
-    def new_socket(self, idname):
-        self.outputs.new(idname, "Input")
+    def new_socket(self, data_type):
+        info.build(data_type, self.outputs, "Input")
 
     def remove_socket(self, index):
         self.outputs.remove(self.outputs[index])
diff --git a/release/scripts/startup/function_nodes/nodes/function_output.py b/release/scripts/startup/function_nodes/nodes/function_output.py
index 14389f8d96c..ffd9e012b28 100644
--- a/release/scripts/startup/function_nodes/nodes/function_output.py
+++ b/release/scripts/startup/function_nodes/nodes/function_output.py
@@ -1,5 +1,6 @@
 import bpy
 from .. base import BaseNode
+from .. sockets import info
 
 class FunctionOutputNode(BaseNode, bpy.types.Node):
     bl_idname = "fn_FunctionOutputNode"
@@ -11,13 +12,13 @@ class FunctionOutputNode(BaseNode, bpy.types.Node):
     def draw(self, layout):
         col = layout.column(align=True)
         self.invoke_function(col, "new_socket",
-            "New Float", settings=("fn_FloatSocket", ))
+            "New Float", settings=("Float", ))
         self.invoke_function(col, "new_socket",
-            "New Integer", settings=("fn_IntegerSocket", ))
+            "New Integer", settings=("Integer", ))
         self.invoke_function(col, "new_socket",
-            "New Vector", settings=("fn_VectorSocket", ))
+            "New Vector", settings=("Vector", ))
         self.invoke_function(col, "new_socket",
-            "New Float List", settings=("fn_FloatListSocket", ))
+            "New Float List", settings=("Float List", ))
 
     def draw_socket(self, socket, layout, text):
         row = layout.row(align=True)
@@ -27,8 +28,8 @@ class FunctionOutputNode(BaseNode, bpy.types.Node):
         self.invoke_function(row, "remove_socket",
             text="", icon="X", settings=(index, ))
 
-    def new_socket(self, idname):
-        self.inputs.new(idname, "Output")
+    def new_socket(self, data_type):
+        info.build(data_type, self.inputs, "Output")
 
     def remove_socket(self, index):
         self.inputs.remove(self.inputs[index])
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/sockets.py b/release/scripts/startup/function_nodes/sockets.py
index a33463438c2..3d06d57773a 100644
--- a/release/scripts/startup/function_nodes/sockets.py
+++ b/release/scripts/startup/function_nodes/sockets.py
@@ -127,7 +127,9 @@ class DataTypesInfo:
 
     def build(self, data_type, node_sockets, name):
         builder = self.to_builder(data_type)
-        return builder.build(node_sockets, name)
+        socket = builder.build(node_sockets, name)
+        socket.data_type = data_type
+        return socket
 
 
 info = DataTypesInfo()
diff --git a/source/blender/functions/frontends/data_flow_nodes/builder.cpp b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
index 2f0e68a786a..bccdbe0227f 100644
--- a/source/blender/functions/frontends/data_flow_nodes/builder.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
@@ -4,6 +4,8 @@
 #include "FN_types.hpp"
 #include "util_wrappers.hpp"
 
+#include "RNA_access.h"
+
 namespace FN { namespace DataFlowNodes {
 
 	Node *Builder::insert_function(SharedFunction &function)
@@ -63,16 +65,24 @@ namespace FN { namespace DataFlowNodes {
 
 	SharedType &BuilderContext::type_of_socket(bNodeSocket *bsocket) const
 	{
-		if (STREQ(bsocket->idname, "fn_FloatSocket")) {
+		PointerRNA ptr;
+		RNA_pointer_create(
+			this->btree_id(), &RNA_NodeSocket,
+			bsocket, &ptr);
+
+		char data_type[64];
+		RNA_string_get(&ptr, "data_type", data_type);
+
+		if (STREQ(data_type, "Float")) {
 			return Types::get_float_type();
 		}
-		else if (STREQ(bsocket->idname, "fn_IntegerSocket")) {
+		else if (STREQ(data_type, "Integer")) {
 			return Types::get_int32_type();
 		}
-		else if (STREQ(bsocket->idname, "fn_VectorSocket")) {
+		else if (STREQ(data_type, "Vector")) {
 			return Types::get_fvec3_type();
 		}
-		else if (STREQ(bsocket->idname, "fn_FloatListSocket")) {
+		else if (STREQ(data_type, "Float List")) {
 			return Types::get_float_list_type();
 		}
 		else {
diff --git a/source/blender/functions/frontends/data_flow_nodes/inserters.cpp b/source/blender/functions/frontends/data_flow_nodes/inserters.cpp
index 922f06533e7..fb6eff037c4 100644
--- a/source/blender/functions/frontends/data_flow_nodes/inserters.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/inserters.cpp
@@ -96,7 +96,15 @@ namespace FN { namespace DataFlowNodes {
 		SmallVector<SocketLoader> loaders;
 		OutputParameters outputs;
 		for (auto *bsocket : bsockets) {
-			SocketLoader loader = m_socket_loaders.lookup(bsocket->idname);
+			PointerRNA ptr;
+			RNA_pointer_create(
+				ctx.btree_id(), &RNA_NodeSocket,
+				bsocket, &ptr);
+
+			char data_type[64];
+			RNA_string_get(&ptr, "data_type", data_type);
+
+			SocketLoader loader = m_socket_loaders.lookup(data_type);
 			loaders.append(loader);
 			outputs.append(OutputParameter(bsocket->name, ctx.type_of_socket(bsocket)));
 		}
diff --git a/source/blender/functions/frontends/data_flow_nodes/test_sockets.cpp b/source/blender/functions/frontends/data_flow_nodes/test_sockets.cpp
index 02b91a1ab6b..93fb1765a02 100644
--- a/source/blender/functions/frontends/data_flow_nodes/test_sockets.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/test_sockets.cpp
@@ -34,10 +34,10 @@ namespace FN { namespace DataFlowNodes {
 
 	void initialize_socket_inserters(GraphInserters &inserters)
 	{
-		inserters.reg_socket_loader("fn_FloatSocket", load_float);
-		inserters.reg_socket_loader("fn_VectorSocket", load_vector);
-		inserters.reg_socket_loader("fn_IntegerSocket", load_integer);
-		inserters.reg_socket_loader("fn_FloatListSocket", load_float_list);
+		inserters.reg_socket_loader("Float", load_float);
+		inserters.reg_socket_loader("Vector", load_vector);
+		inserters.reg_socket_loader("Integer", load_integer);
+		inserters.reg_socket_loader("Float List", load_float_list);
 	}
 
 } }
\ No newline at end of file



More information about the Bf-blender-cvs mailing list