[Bf-blender-cvs] [d94c2491941] functions: add ability to specify default values for data sockets

Jacques Lucke noreply at git.blender.org
Tue Jul 9 18:00:58 CEST 2019


Commit: d94c249194100229b2d86dc81060d8b076a51ee4
Author: Jacques Lucke
Date:   Tue Jul 9 09:49:55 2019 +0200
Branches: functions
https://developer.blender.org/rBd94c249194100229b2d86dc81060d8b076a51ee4

add ability to specify default values for data sockets

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

M	release/scripts/startup/nodes/base.py
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/socket_builder.py

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

diff --git a/release/scripts/startup/nodes/base.py b/release/scripts/startup/nodes/base.py
index b6c737ece93..6e3638815ea 100644
--- a/release/scripts/startup/nodes/base.py
+++ b/release/scripts/startup/nodes/base.py
@@ -47,6 +47,7 @@ class BaseNode:
             builder = self.get_socket_builder()
             builder.initialize_decls()
             builder.build()
+            builder.init_defaults()
 
     @classmethod
     def get_search_terms(cls):
diff --git a/release/scripts/startup/nodes/declaration/__init__.py b/release/scripts/startup/nodes/declaration/__init__.py
index 210cdfba26f..b05590784f2 100644
--- a/release/scripts/startup/nodes/declaration/__init__.py
+++ b/release/scripts/startup/nodes/declaration/__init__.py
@@ -1,4 +1,4 @@
-from . fixed_type import FixedSocketDecl
+from . fixed_type import FixedSocketDecl, NoDefaultValue
 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 3e868d8e55f..e1c0caad845 100644
--- a/release/scripts/startup/nodes/declaration/base.py
+++ b/release/scripts/startup/nodes/declaration/base.py
@@ -5,6 +5,9 @@ class SocketDeclBase:
     def build(self, node_sockets):
         raise NotImplementedError()
 
+    def init_default(self, node_sockets):
+        pass
+
     def amount(self):
         raise NotImplementedError()
 
diff --git a/release/scripts/startup/nodes/declaration/fixed_type.py b/release/scripts/startup/nodes/declaration/fixed_type.py
index b5c2977f030..5008c4949e5 100644
--- a/release/scripts/startup/nodes/declaration/fixed_type.py
+++ b/release/scripts/startup/nodes/declaration/fixed_type.py
@@ -1,12 +1,15 @@
 from . base import SocketDeclBase
 from .. types import type_infos
 
+NoDefaultValue = object()
+
 class FixedSocketDecl(SocketDeclBase):
-    def __init__(self, node, identifier: str, display_name: str, data_type: str):
+    def __init__(self, node, identifier: str, display_name: str, data_type: str, default):
         self.node = node
         self.identifier = identifier
         self.display_name = display_name
         self.data_type = data_type
+        self.default = default
 
     def build(self, node_sockets):
         return [type_infos.build(
@@ -15,6 +18,11 @@ class FixedSocketDecl(SocketDeclBase):
             self.display_name,
             self.identifier)]
 
+    def init_default(self, node_sockets):
+        if self.default is not NoDefaultValue:
+            socket = node_sockets[0]
+            socket.restore_state(self.default)
+
     def validate(self, sockets):
         if len(sockets) != 1:
             return False
diff --git a/release/scripts/startup/nodes/socket_builder.py b/release/scripts/startup/nodes/socket_builder.py
index 2b7552c619d..1994a74efde 100644
--- a/release/scripts/startup/nodes/socket_builder.py
+++ b/release/scripts/startup/nodes/socket_builder.py
@@ -10,6 +10,8 @@ from . declaration import (
     EventSocketDecl,
     ControlFlowSocketDecl,
     ParticleModifierSocketDecl,
+
+    NoDefaultValue,
 )
 
 class SocketBuilder:
@@ -45,6 +47,10 @@ class SocketBuilder:
                 sockets = decl.build(self.node.outputs)
                 assert len(sockets) == decl.amount()
 
+    def init_defaults(self):
+        for decl, sockets in self.get_sockets_decl_map().iter_decl_with_sockets():
+            decl.init_default(sockets)
+
     def get_sockets_decl_map(self):
         return SocketDeclMap(
             self.node,
@@ -74,17 +80,17 @@ class SocketBuilder:
     # Fixed
     ###################################
 
-    def fixed_input(self, identifier, name, data_type):
-        decl = FixedSocketDecl(self.node, identifier, name, data_type)
+    def fixed_input(self, identifier, name, data_type, *, default=NoDefaultValue):
+        decl = FixedSocketDecl(self.node, identifier, name, data_type, default)
         self._add_input(decl)
 
-    def fixed_output(self, identifier, name, data_type):
-        decl = FixedSocketDecl(self.node, identifier, name, data_type)
+    def fixed_output(self, identifier, name, data_type, *, default=NoDefaultValue):
+        decl = FixedSocketDecl(self.node, identifier, name, data_type, default)
         self._add_output(decl)
 
-    def fixed_pass_through(self, identifier, name, data_type):
-        self.fixed_input(identifier, name, data_type)
-        self.fixed_output(identifier, name, data_type)
+    def fixed_pass_through(self, identifier, name, data_type, *, default=NoDefaultValue):
+        self.fixed_input(identifier, name, data_type, default=default)
+        self.fixed_output(identifier, name, data_type, default=default)
 
 
     # Packed List



More information about the Bf-blender-cvs mailing list