[Bf-blender-cvs] [ddf0b728702] functions: make socket.data_type a class property
Jacques Lucke
noreply at git.blender.org
Mon Jul 22 18:12:58 CEST 2019
Commit: ddf0b728702277793ea95c7afac68e0200a29afa
Author: Jacques Lucke
Date: Mon Jul 22 12:32:51 2019 +0200
Branches: functions
https://developer.blender.org/rBddf0b728702277793ea95c7afac68e0200a29afa
make socket.data_type a class property
===================================================================
M release/scripts/startup/nodes/base.py
M release/scripts/startup/nodes/sockets.py
M release/scripts/startup/nodes/types.py
M release/scripts/startup/nodes/types_base.py
M source/blender/functions/frontends/data_flow_nodes/builder.cpp
M source/blender/functions/frontends/data_flow_nodes/builder.hpp
M source/blender/functions/frontends/data_flow_nodes/inserters.cpp
M source/blender/functions/frontends/data_flow_nodes/inserters.hpp
M source/blender/functions/frontends/data_flow_nodes/inserters/sockets.cpp
===================================================================
diff --git a/release/scripts/startup/nodes/base.py b/release/scripts/startup/nodes/base.py
index e8ffac11c82..cabd99a8049 100644
--- a/release/scripts/startup/nodes/base.py
+++ b/release/scripts/startup/nodes/base.py
@@ -214,9 +214,6 @@ class BParticlesNode(BaseNode):
pass
class DataSocket(BaseSocket):
- 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)
@@ -229,11 +226,6 @@ class DataSocket(BaseSocket):
def restore_state(self, state):
pass
- def draw_color(self, context, node):
- from . types import type_infos
- return type_infos.get_socket_color(self.data_type)
-
-
class LinkageState:
def __init__(self, node):
self.node = node
diff --git a/release/scripts/startup/nodes/sockets.py b/release/scripts/startup/nodes/sockets.py
index 38591a60179..8ce8a6d69c2 100644
--- a/release/scripts/startup/nodes/sockets.py
+++ b/release/scripts/startup/nodes/sockets.py
@@ -12,7 +12,8 @@ class OperatorSocket(bpy.types.NodeSocket, BaseSocket):
class FloatSocket(bpy.types.NodeSocket, DataSocket):
bl_idname = "fn_FloatSocket"
bl_label = "Float Socket"
- socket_color = (0, 0.3, 0.5, 1)
+ data_type = "Float"
+ color = (0, 0.3, 0.5, 1)
value: FloatProperty(
name="Value",
@@ -31,7 +32,8 @@ class FloatSocket(bpy.types.NodeSocket, DataSocket):
class IntegerSocket(bpy.types.NodeSocket, DataSocket):
bl_idname = "fn_IntegerSocket"
bl_label = "Integer Socket"
- socket_color = (0.3, 0.7, 0.5, 1)
+ data_type = "Integer"
+ color = (0.3, 0.7, 0.5, 1)
value: IntProperty(
name="Value",
@@ -50,7 +52,8 @@ class IntegerSocket(bpy.types.NodeSocket, DataSocket):
class VectorSocket(bpy.types.NodeSocket, DataSocket):
bl_idname = "fn_VectorSocket"
bl_label = "Vector Socket"
- socket_color = (0, 0, 0.5, 1)
+ data_type = "Vector"
+ color = (0, 0, 0.5, 1)
value: FloatVectorProperty(
name="Value",
@@ -70,7 +73,8 @@ class VectorSocket(bpy.types.NodeSocket, DataSocket):
class BooleanSocket(bpy.types.NodeSocket, DataSocket):
bl_idname = "fn_BooleanSocket"
bl_label = "Boolean Socket"
- socket_color = (0.3, 0.3, 0.3, 1)
+ data_type = "Boolean"
+ color = (0.3, 0.3, 0.3, 1)
value: BoolProperty(
name="Value",
@@ -89,7 +93,8 @@ class BooleanSocket(bpy.types.NodeSocket, DataSocket):
class ObjectSocket(bpy.types.NodeSocket, DataSocket):
bl_idname = "fn_ObjectSocket"
bl_label = "Object Socket"
- socket_color = (0, 0, 0, 1)
+ data_type = "Object"
+ color = (0, 0, 0, 1)
value: PointerProperty(
name="Value",
@@ -105,19 +110,25 @@ class ObjectSocket(bpy.types.NodeSocket, DataSocket):
def restore_state(self, state):
self.value = state
-def create_simple_data_socket(idname, color):
+def create_simple_data_socket(idname, data_type, color):
return type(idname, (bpy.types.NodeSocket, DataSocket),
{
"bl_idname" : idname,
"bl_label" : idname,
- "draw_color" : lambda self, context, node: color,
+ "data_type" : data_type,
+ "color" : color,
})
-FloatListSocket = create_simple_data_socket("fn_FloatListSocket", (0, 0.3, 0.5, 0.5))
-VectorListSocket = create_simple_data_socket("fn_VectorListSocket", (0, 0, 0.5, 0.5))
-IntegerListSocket = create_simple_data_socket("fn_IntegerListSocket", (0.3, 0.7, 0.5, 0.5))
-BooleanListSocket = create_simple_data_socket("fn_BooleanListSocket", (0.3, 0.3, 0.3, 0.5))
-ObjectListSocket = create_simple_data_socket("fn_ObjectListSocket", (0, 0, 0, 0.5))
+FloatListSocket = create_simple_data_socket(
+ "fn_FloatListSocket", "Float List", (0, 0.3, 0.5, 0.5))
+VectorListSocket = create_simple_data_socket(
+ "fn_VectorListSocket", "Vector List", (0, 0, 0.5, 0.5))
+IntegerListSocket = create_simple_data_socket(
+ "fn_IntegerListSocket", "Integer List", (0.3, 0.7, 0.5, 0.5))
+BooleanListSocket = create_simple_data_socket(
+ "fn_BooleanListSocket", "Boolean List", (0.3, 0.3, 0.3, 0.5))
+ObjectListSocket = create_simple_data_socket(
+ "fn_ObjectListSocket", "Object List", (0, 0, 0, 0.5))
class EmitterSocket(bpy.types.NodeSocket, BaseSocket):
bl_idname = "bp_EmitterSocket"
diff --git a/release/scripts/startup/nodes/types.py b/release/scripts/startup/nodes/types.py
index beba691ead0..9b5f52caa56 100644
--- a/release/scripts/startup/nodes/types.py
+++ b/release/scripts/startup/nodes/types.py
@@ -1,42 +1,12 @@
-from . types_base import (
- DataTypesInfo,
- UniqueSocketBuilder,
-)
-
-from . sockets import (
- FloatSocket,
- IntegerSocket,
- VectorSocket,
- BooleanSocket,
- ObjectSocket,
- FloatListSocket,
- VectorListSocket,
- IntegerListSocket,
- BooleanListSocket,
- ObjectListSocket,
-)
+from . import sockets as s
+from . types_base import DataTypesInfo
type_infos = DataTypesInfo()
-type_infos.insert_data_type(
- "Float",
- UniqueSocketBuilder(FloatSocket),
- UniqueSocketBuilder(FloatListSocket))
-type_infos.insert_data_type(
- "Vector",
- UniqueSocketBuilder(VectorSocket),
- UniqueSocketBuilder(VectorListSocket))
-type_infos.insert_data_type(
- "Integer",
- UniqueSocketBuilder(IntegerSocket),
- UniqueSocketBuilder(IntegerListSocket))
-type_infos.insert_data_type(
- "Boolean",
- UniqueSocketBuilder(BooleanSocket),
- UniqueSocketBuilder(BooleanListSocket))
-type_infos.insert_data_type(
- "Object",
- UniqueSocketBuilder(ObjectSocket),
- UniqueSocketBuilder(ObjectListSocket))
+type_infos.insert_data_type(s.FloatSocket, s.FloatListSocket)
+type_infos.insert_data_type(s.VectorSocket, s.VectorListSocket)
+type_infos.insert_data_type(s.IntegerSocket, s.IntegerListSocket)
+type_infos.insert_data_type(s.BooleanSocket, s.BooleanListSocket)
+type_infos.insert_data_type(s.ObjectSocket, s.ObjectListSocket)
type_infos.insert_conversion_group(["Boolean", "Integer", "Float"])
diff --git a/release/scripts/startup/nodes/types_base.py b/release/scripts/startup/nodes/types_base.py
index 03825899ea6..648c320a300 100644
--- a/release/scripts/startup/nodes/types_base.py
+++ b/release/scripts/startup/nodes/types_base.py
@@ -31,7 +31,7 @@ ImplicitConversion = namedtuple("ImplicitConversion", ("from_type", "to_type"))
class DataTypesInfo:
def __init__(self):
self.data_types = set()
- self.builder_by_data_type = dict()
+ self.cls_by_data_type = dict()
self.list_by_base = dict()
self.base_by_list = dict()
self.unidirectional_conversions = set()
@@ -42,21 +42,19 @@ class DataTypesInfo:
# Insert New Information
#############################
- def insert_data_type(self, base_type_name, base_builder, list_builder):
- base_type = base_type_name
- list_type = base_type_name + " List"
+ def insert_data_type(self, base_socket_cls, list_socket_cls):
+ base_type = base_socket_cls.data_type
+ list_type = list_socket_cls.data_type
assert base_type not in self.data_types
assert list_type not in self.data_types
- assert isinstance(base_builder, DataSocketBuilder)
- assert isinstance(list_builder, DataSocketBuilder)
self.data_types.add(base_type)
self.data_types.add(list_type)
self.list_by_base[base_type] = list_type
self.base_by_list[list_type] = base_type
- self.builder_by_data_type[base_type] = base_builder
- self.builder_by_data_type[list_type] = list_builder
+ self.cls_by_data_type[base_type] = base_socket_cls
+ self.cls_by_data_type[list_type] = list_socket_cls
self.all_implicit_conversions.add(ImplicitConversion(base_type, list_type))
@@ -118,16 +116,6 @@ class DataTypesInfo:
assert self.is_list(data_type)
return self.base_by_list[data_type]
- def to_builder(self, data_type):
- assert self.is_data_type(data_type)
- return self.builder_by_data_type[data_type]
-
- def build(self, data_type, node_sockets, name, identifier):
- builder = self.to_builder(data_type)
- socket = builder.build(node_sockets, name, identifier)
- socket.data_type = data_type
- return socket
-
def get_data_type_items(self):
items = []
for data_type in self.data_types:
@@ -167,26 +155,10 @@ class DataTypesInfo:
def iter_base_types(self):
yield from self.list_by_base.keys()
+ # Build
+ ##########################
-# Data Socket Builders
-##################################3
-
-class DataSocketBuilder:
- def build(self, node_sockets, name):
- raise NotImplementedError()
-
- def get_color(self, socket):
- raise NotImplementedError()
-
-class UniqueSocketBuilder(DataSocketBuilder):
- def __init__(self, socket_cls):
- self.socket_cls = socket_cls
-
- def build(self, node_sockets, name, identifier):
- return node_sockets.new(
- self.socket_cls.bl_idname,
- name,
- identifier=identifier)
-
- def get_color(self):
- return self.socket_cls.socket_color
+ def build(self, data_type, node_sockets, name, identifier):
+ idname = self.cls_by_data_type[data_type].bl_idname
+ socket = node_sockets.new(idname, name, identifier=identifier)
+ return socket
diff --git a/source/blender/functions/frontends/data_flow_nodes/builder.cpp b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
index 5d3edd953a4..50962b7519f 100644
--- a/source/blender/functions/frontends/data_flow_nodes/builder.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
@@ -283,15 +283,6 @@ SharedType &BTreeGraphBuilder::type_from_rna(PointerRNA &rna, StringRefNull prop
return this->type_by_name(type_name);
}
-std::string BTreeGraphBuilder::query_socket_type_name(bNodeSocket *bsocket) const
-{
- BLI_assert(this->is_data_socket(bsocket));
- PointerRNA rna = this->get_rna(bsocket);
- char type_name[64];
- RNA_string_get(&rna, "data_typ
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list