[Bf-blender-cvs] [24a7851fbe8] functions: new Value node
Jacques Lucke
noreply at git.blender.org
Tue Dec 10 16:06:43 CET 2019
Commit: 24a7851fbe854cd452bb7b20c576933be3929974
Author: Jacques Lucke
Date: Tue Dec 10 16:06:32 2019 +0100
Branches: functions
https://developer.blender.org/rB24a7851fbe854cd452bb7b20c576933be3929974
new Value node
===================================================================
A release/scripts/startup/nodes/function_nodes/value.py
M source/blender/functions/intern/inlined_tree_multi_function_network/builder.h
M source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
===================================================================
diff --git a/release/scripts/startup/nodes/function_nodes/value.py b/release/scripts/startup/nodes/function_nodes/value.py
new file mode 100644
index 00000000000..128724e568e
--- /dev/null
+++ b/release/scripts/startup/nodes/function_nodes/value.py
@@ -0,0 +1,29 @@
+import bpy
+from bpy.props import *
+from .. base import FunctionNode
+from .. node_builder import NodeBuilder
+
+
+class ValueNode(bpy.types.Node, FunctionNode):
+ bl_idname = "fn_ValueNode"
+ bl_label = "Value"
+
+ data_type = StringProperty(
+ name="Data Type",
+ default="Float",
+ update=FunctionNode.sync_tree,
+ )
+
+ def declaration(self, builder: NodeBuilder):
+ builder.fixed_output("value", "Value", self.data_type)
+
+ def draw_socket(self, layout, socket, text, decl, index):
+ row = layout.row(align=True)
+ if hasattr(socket, "draw_property"):
+ socket.draw_property(row, self, "")
+ else:
+ row.label(text=text)
+ self.invoke_type_selection(row, "set_type", text="", icon="SETTINGS")
+
+ def set_type(self, data_type):
+ self.data_type = data_type
diff --git a/source/blender/functions/intern/inlined_tree_multi_function_network/builder.h b/source/blender/functions/intern/inlined_tree_multi_function_network/builder.h
index 9edc3aaa9d2..746106da54e 100644
--- a/source/blender/functions/intern/inlined_tree_multi_function_network/builder.h
+++ b/source/blender/functions/intern/inlined_tree_multi_function_network/builder.h
@@ -93,6 +93,11 @@ class InlinedTreeMFNetworkBuilder : BLI::NonCopyable, BLI::NonMovable {
return m_resources;
}
+ const VTreeMultiFunctionMappings &vtree_multi_function_mappings() const
+ {
+ return m_inlined_tree_mappings;
+ }
+
MFBuilderFunctionNode &add_function(const MultiFunction &function);
MFBuilderFunctionNode &add_function(const MultiFunction &function, const XNode &xnode);
diff --git a/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc b/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
index b5907f55037..b634e330f4e 100644
--- a/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
+++ b/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
@@ -424,6 +424,21 @@ static void INSERT_random_float(VNodeMFNetworkBuilder &builder)
builder.set_constructed_matching_fn<MF_RandomFloat>();
}
+static void INSERT_value(VNodeMFNetworkBuilder &builder)
+{
+ const XOutputSocket &xsocket = builder.xnode().output(0);
+ const VSocket &vsocket = xsocket.vsocket();
+ InlinedTreeMFNetworkBuilder &network_builder = builder.network_builder();
+
+ VSocketMFNetworkBuilder socket_builder{network_builder, vsocket};
+ auto &inserter = network_builder.vtree_multi_function_mappings().xsocket_inserters.lookup(
+ vsocket.idname());
+ inserter(socket_builder);
+ MFBuilderOutputSocket &built_socket = socket_builder.built_socket();
+
+ network_builder.map_sockets(xsocket, built_socket);
+}
+
void add_inlined_tree_node_mapping_info(VTreeMultiFunctionMappings &mappings)
{
mappings.xnode_inserters.add_new("fn_CombineColorNode", INSERT_combine_color);
@@ -455,6 +470,7 @@ void add_inlined_tree_node_mapping_info(VTreeMultiFunctionMappings &mappings)
mappings.xnode_inserters.add_new("fn_MapRangeNode", INSERT_map_range);
mappings.xnode_inserters.add_new("fn_FloatClampNode", INSERT_clamp_float);
mappings.xnode_inserters.add_new("fn_RandomFloatNode", INSERT_random_float);
+ mappings.xnode_inserters.add_new("fn_ValueNode", INSERT_value);
mappings.xnode_inserters.add_new("fn_AddFloatsNode", INSERT_add_floats);
mappings.xnode_inserters.add_new("fn_MultiplyFloatsNode", INSERT_multiply_floats);
More information about the Bf-blender-cvs
mailing list