[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