[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