[Bf-blender-cvs] [d7204633003] functions: support nicer drawing of sockets

Jacques Lucke noreply at git.blender.org
Sat Dec 14 13:15:43 CET 2019


Commit: d720463300377d7ab33815f907a8cf693c55a6d9
Author: Jacques Lucke
Date:   Sat Dec 14 12:18:17 2019 +0100
Branches: functions
https://developer.blender.org/rBd720463300377d7ab33815f907a8cf693c55a6d9

support nicer drawing of sockets

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

M	release/scripts/startup/nodes/declaration/fixed_type.py
M	release/scripts/startup/nodes/declaration/vectorized.py
M	release/scripts/startup/nodes/function_nodes/object_mesh.py
M	release/scripts/startup/nodes/node_builder.py
M	release/scripts/startup/nodes/sockets.py

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

diff --git a/release/scripts/startup/nodes/declaration/fixed_type.py b/release/scripts/startup/nodes/declaration/fixed_type.py
index 22dec2cde85..49c62858e90 100644
--- a/release/scripts/startup/nodes/declaration/fixed_type.py
+++ b/release/scripts/startup/nodes/declaration/fixed_type.py
@@ -2,19 +2,22 @@ from . base import SocketDeclBase, NoDefaultValue
 from .. types import type_infos
 
 class FixedSocketDecl(SocketDeclBase):
-    def __init__(self, node, identifier: str, display_name: str, data_type: str, default):
+    def __init__(self, node, identifier: str, display_name: str, data_type: str, default, socket_settings: dict):
         self.node = node
         self.identifier = identifier
         self.display_name = display_name
         self.data_type = data_type
         self.default = default
+        self.socket_settings = socket_settings
 
     def build(self, node_sockets):
-        return [type_infos.build(
-            self.data_type,
-            node_sockets,
-            self.display_name,
-            self.identifier)]
+        socket = type_infos.build(self.data_type,
+                                  node_sockets,
+                                  self.display_name,
+                                  self.identifier)
+        for name, value in self.socket_settings.items():
+            setattr(socket, name, value)
+        return [socket]
 
     def init_default(self, node_sockets):
         if self.default is not NoDefaultValue:
@@ -24,6 +27,10 @@ class FixedSocketDecl(SocketDeclBase):
     def validate(self, sockets):
         if len(sockets) != 1:
             return False
+        socket = sockets[0]
+        for name, value in self.socket_settings.items():
+            if getattr(socket, name) != value:
+                return False
         return self._data_socket_test(sockets[0],
             self.display_name, self.data_type, self.identifier)
 
diff --git a/release/scripts/startup/nodes/declaration/vectorized.py b/release/scripts/startup/nodes/declaration/vectorized.py
index 62bb4b31a8c..250d54bf811 100644
--- a/release/scripts/startup/nodes/declaration/vectorized.py
+++ b/release/scripts/startup/nodes/declaration/vectorized.py
@@ -7,17 +7,26 @@ from .. utils.generic import getattr_recursive
 class VectorizedDeclBase:
     def build(self, node_sockets):
         data_type, name = self.get_type_and_name()
-        return [type_infos.build(
+        socket =type_infos.build(
             data_type,
             node_sockets,
             name,
-            self.identifier)]
+            self.identifier)
+        for prop_name, value in self.socket_settings.items():
+            setattr(socket, prop_name, value)
+        return [socket]
 
     def validate(self, sockets):
         if len(sockets) != 1:
             return False
+
+        socket = sockets[0]
+        for prop_name, value in self.socket_settings.items():
+            if getattr(socket, prop_name) != value:
+                return False
+
         data_type, name = self.get_type_and_name()
-        return self._data_socket_test(sockets[0],
+        return self._data_socket_test(socket,
             name, data_type, self.identifier)
 
     def amount(self):
@@ -34,7 +43,7 @@ class VectorizedInputDecl(VectorizedDeclBase, SocketDeclBase):
     def __init__(self,
             node, identifier, prop_name,
             base_name, list_name,
-            base_type, default):
+            base_type, default, socket_settings):
         self.node = node
         self.identifier = identifier
         self.prop_name = prop_name
@@ -43,6 +52,7 @@ class VectorizedInputDecl(VectorizedDeclBase, SocketDeclBase):
         self.base_type = base_type
         self.list_type = type_infos.to_list(base_type)
         self.default = default
+        self.socket_settings = socket_settings
 
     def init_default(self, node_sockets):
         if self.default is not NoDefaultValue:
@@ -67,7 +77,7 @@ class VectorizedOutputDecl(VectorizedDeclBase, SocketDeclBase):
     def __init__(self,
             node, identifier, input_prop_names,
             base_name, list_name,
-            base_type):
+            base_type, socket_settings):
         self.node = node
         self.identifier = identifier
         self.input_prop_names = input_prop_names
@@ -75,6 +85,7 @@ class VectorizedOutputDecl(VectorizedDeclBase, SocketDeclBase):
         self.list_name = list_name
         self.base_type = base_type
         self.list_type = type_infos.to_list(base_type)
+        self.socket_settings = socket_settings
 
     def is_vectorized(self):
         for prop_name in self.input_prop_names:
diff --git a/release/scripts/startup/nodes/function_nodes/object_mesh.py b/release/scripts/startup/nodes/function_nodes/object_mesh.py
index 55a7516914d..c1848e56f52 100644
--- a/release/scripts/startup/nodes/function_nodes/object_mesh.py
+++ b/release/scripts/startup/nodes/function_nodes/object_mesh.py
@@ -8,7 +8,7 @@ class ObjectMeshNode(bpy.types.Node, FunctionNode):
     bl_label = "Object Mesh"
 
     def declaration(self, builder):
-        builder.fixed_input("object", "Object", "Object")
+        builder.fixed_input("object", "Object", "Object", display_name=False)
         builder.fixed_output("vertex_locations", "Vertex Locations", "Vector List")
 
 
@@ -28,7 +28,7 @@ class ClosestLocationOnObjectNode(bpy.types.Node, FunctionNode):
     use_list__position: NodeBuilder.VectorizedProperty()
 
     def declaration(self, builder: NodeBuilder):
-        builder.vectorized_input("object", "use_list__object", "Object", "Objects", "Object")
+        builder.vectorized_input("object", "use_list__object", "Object", "Objects", "Object", display_name=False)
         builder.vectorized_input("position", "use_list__position", "Position", "Positions", "Vector")
 
         vectorize_props = ["use_list__object", "use_list__position"]
@@ -68,7 +68,8 @@ class GetWeightOnSurfaceNode(bpy.types.Node, FunctionNode):
 
     def declaration(self, builder: NodeBuilder):
         builder.vectorized_input("surface_hook", "use_list__surface_hook", "Surface Hook", "Surface Hooks", "Surface Hook")
-        builder.vectorized_input("vertex_group_name", "use_list__vertex_group_name", "Name", "Names", "Text", default="Group")
+        builder.vectorized_input("vertex_group_name", "use_list__vertex_group_name", "Name", "Names", "Text",
+            default="Group", display_name=False, display_icon="GROUP_VERTEX")
         builder.vectorized_output("weight", ["use_list__surface_hook", "use_list__vertex_group_name"], "Weight", "Weights", "Float")
 
 
@@ -81,7 +82,7 @@ class GetImageColorOnSurfaceNode(bpy.types.Node, FunctionNode):
 
     def declaration(self, builder: NodeBuilder):
         builder.vectorized_input("surface_hook", "use_list__surface_hook", "Surface Hook", "Surface Hooks", "Surface Hook")
-        builder.vectorized_input("image", "use_list__image", "Image", "Images", "Image")
+        builder.vectorized_input("image", "use_list__image", "Image", "Images", "Image", display_name=False)
         builder.vectorized_output("color", ["use_list__surface_hook", "use_list__image"], "Color", "Colors", "Color")
 
 
@@ -100,7 +101,7 @@ class SampleObjectSurfaceNode(bpy.types.Node, FunctionNode):
     )
 
     def declaration(self, builder: NodeBuilder):
-        builder.fixed_input("object", "Object", "Object")
+        builder.fixed_input("object", "Object", "Object", display_name=False)
         builder.fixed_input("amount", "Amount", "Integer", default=10)
         builder.fixed_input("seed", "Seed", "Integer")
         if self.weight_mode == "VERTEX_WEIGHTS":
diff --git a/release/scripts/startup/nodes/node_builder.py b/release/scripts/startup/nodes/node_builder.py
index bbdb0bdb7c7..67ce6e70ed6 100644
--- a/release/scripts/startup/nodes/node_builder.py
+++ b/release/scripts/startup/nodes/node_builder.py
@@ -88,12 +88,14 @@ class NodeBuilder:
     # Fixed Data Types
     ###################################
 
-    def fixed_input(self, identifier, name, data_type, *, default=NoDefaultValue):
-        decl = FixedSocketDecl(self.node, identifier, name, data_type, default)
+    def fixed_input(self, identifier, name, data_type,
+                    *, default=NoDefaultValue, **kwargs):
+        decl = FixedSocketDecl(self.node, identifier, name, data_type, default, kwargs)
         self._add_input(decl)
 
-    def fixed_output(self, identifier, name, data_type, *, default=NoDefaultValue):
-        decl = FixedSocketDecl(self.node, identifier, name, data_type, default)
+    def fixed_output(self, identifier, name, data_type,
+                     *, default=NoDefaultValue, **kwargs):
+        decl = FixedSocketDecl(self.node, identifier, name, data_type, default, kwargs)
         self._add_output(decl)
 
     def fixed_pass_through(self, identifier, name, data_type, *, default=NoDefaultValue):
@@ -149,17 +151,19 @@ class NodeBuilder:
     def VectorizedProperty():
         return VectorizedInputDecl.Property()
 
-    def vectorized_input(self, identifier, prop_name, base_name, list_name, base_type, *, default=NoDefaultValue):
+    def vectorized_input(self, identifier, prop_name, base_name, list_name, base_type,
+                         *, default=NoDefaultValue, **kwargs):
         decl = VectorizedInputDecl(
             self.node, identifier, prop_name,
             base_name, list_name, base_type,
-            default)
+            default, kwargs)
         self._add_input(decl)
 
-    def vectorized_output(self, identifier, input_prop_names, base_name, list_name, base_type):
+    def vectorized_output(self, identifier, input_prop_names, base_name, list_name, base_type,
+                          **kwargs):
         decl = VectorizedOutputDecl(
             self.node, identifier, input_prop_names,
-            base_name, list_name, base_type)
+            base_name, list_name, base_type, kwargs)
         self._add_output(decl)
 
 
diff --git a/release/scripts/startup/nodes/sockets.py b/release/scripts/startup/nodes/sockets.py
index e4c98a5ff5c..5072259dd23 100644
--- a/release/scripts/startup/nodes/sockets.py
+++ b/release/scripts/startup/nodes/sockets.py
@@ -101,7 +101,11 @@ class ObjectSocket(bpy.types.NodeSocket, DataS

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list