[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