[Bf-blender-cvs] [f0b74997504] functions: support for default values for vectorized inputs

Jacques Lucke noreply at git.blender.org
Thu Aug 1 18:23:52 CEST 2019


Commit: f0b74997504af337114b7699d4022caa6a912665
Author: Jacques Lucke
Date:   Thu Aug 1 18:19:58 2019 +0200
Branches: functions
https://developer.blender.org/rBf0b74997504af337114b7699d4022caa6a912665

support for default values for vectorized inputs

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

M	release/scripts/startup/nodes/declaration/__init__.py
M	release/scripts/startup/nodes/declaration/base.py
M	release/scripts/startup/nodes/declaration/fixed_type.py
M	release/scripts/startup/nodes/declaration/vectorized.py
M	release/scripts/startup/nodes/function_nodes/color.py
M	release/scripts/startup/nodes/node_builder.py

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

diff --git a/release/scripts/startup/nodes/declaration/__init__.py b/release/scripts/startup/nodes/declaration/__init__.py
index b37d1770832..c8488f5db96 100644
--- a/release/scripts/startup/nodes/declaration/__init__.py
+++ b/release/scripts/startup/nodes/declaration/__init__.py
@@ -1,4 +1,5 @@
-from . fixed_type import FixedSocketDecl, NoDefaultValue
+from . base import NoDefaultValue
+from . fixed_type import FixedSocketDecl
 from . dynamic_list import ListSocketDecl
 from . pack_list import PackListDecl
 from . tree_interface import TreeInterfaceDecl
diff --git a/release/scripts/startup/nodes/declaration/base.py b/release/scripts/startup/nodes/declaration/base.py
index e1c0caad845..54900b460ea 100644
--- a/release/scripts/startup/nodes/declaration/base.py
+++ b/release/scripts/startup/nodes/declaration/base.py
@@ -1,3 +1,5 @@
+NoDefaultValue = object()
+
 class SocketDeclBase:
     def init(self):
         pass
diff --git a/release/scripts/startup/nodes/declaration/fixed_type.py b/release/scripts/startup/nodes/declaration/fixed_type.py
index 5008c4949e5..22dec2cde85 100644
--- a/release/scripts/startup/nodes/declaration/fixed_type.py
+++ b/release/scripts/startup/nodes/declaration/fixed_type.py
@@ -1,8 +1,6 @@
-from . base import SocketDeclBase
+from . base import SocketDeclBase, NoDefaultValue
 from .. types import type_infos
 
-NoDefaultValue = object()
-
 class FixedSocketDecl(SocketDeclBase):
     def __init__(self, node, identifier: str, display_name: str, data_type: str, default):
         self.node = node
diff --git a/release/scripts/startup/nodes/declaration/vectorized.py b/release/scripts/startup/nodes/declaration/vectorized.py
index bced5287882..439dc463205 100644
--- a/release/scripts/startup/nodes/declaration/vectorized.py
+++ b/release/scripts/startup/nodes/declaration/vectorized.py
@@ -1,6 +1,6 @@
 import bpy
 from bpy.props import *
-from . base import SocketDeclBase
+from . base import SocketDeclBase, NoDefaultValue
 from .. types import type_infos
 
 class VectorizedDeclBase:
@@ -33,7 +33,7 @@ class VectorizedInputDecl(VectorizedDeclBase, SocketDeclBase):
     def __init__(self,
             node, identifier, prop_name,
             base_name, list_name,
-            base_type):
+            base_type, default):
         self.node = node
         self.identifier = identifier
         self.prop_name = prop_name
@@ -41,6 +41,12 @@ class VectorizedInputDecl(VectorizedDeclBase, SocketDeclBase):
         self.list_name = list_name
         self.base_type = base_type
         self.list_type = type_infos.to_list(base_type)
+        self.default = default
+
+    def init_default(self, node_sockets):
+        if self.default is not NoDefaultValue:
+            socket = node_sockets[0]
+            socket.restore_state(self.default)
 
     def is_vectorized(self):
         stored = getattr(self.node, self.prop_name)
diff --git a/release/scripts/startup/nodes/function_nodes/color.py b/release/scripts/startup/nodes/function_nodes/color.py
index fd4cc1f3a2e..1125f8dcd28 100644
--- a/release/scripts/startup/nodes/function_nodes/color.py
+++ b/release/scripts/startup/nodes/function_nodes/color.py
@@ -50,7 +50,8 @@ class CombineColorNode(bpy.types.Node, FunctionNode):
             "Blue", "Blue", "Float")
         builder.vectorized_input(
             "alpha", "use_list__alpha",
-            "Alpha", "Alpha", "Float")
+            "Alpha", "Alpha", "Float",
+            default=1.0)
 
         builder.vectorized_output(
             "color", ["use_list__red", "use_list__green", "use_list__blue", "use_list__alpha"],
diff --git a/release/scripts/startup/nodes/node_builder.py b/release/scripts/startup/nodes/node_builder.py
index 57b767a4b9f..cd462c710b4 100644
--- a/release/scripts/startup/nodes/node_builder.py
+++ b/release/scripts/startup/nodes/node_builder.py
@@ -176,10 +176,11 @@ class NodeBuilder:
     def VectorizedProperty():
         return VectorizedInputDecl.Property()
 
-    def vectorized_input(self, identifier, prop_name, base_name, list_name, base_type):
+    def vectorized_input(self, identifier, prop_name, base_name, list_name, base_type, *, default=NoDefaultValue):
         decl = VectorizedInputDecl(
             self.node, identifier, prop_name,
-            base_name, list_name, base_type)
+            base_name, list_name, base_type,
+            default)
         self._add_input(decl)
 
     def vectorized_output(self, identifier, input_prop_names, base_name, list_name, base_type):



More information about the Bf-blender-cvs mailing list