[Bf-blender-cvs] [07ac997f1c3] functions-experimental-refactor: make Float Range node work again

Jacques Lucke noreply at git.blender.org
Mon Nov 4 23:17:08 CET 2019


Commit: 07ac997f1c3cdcba1e1dd2ac5513c5fc13b1c6de
Author: Jacques Lucke
Date:   Mon Nov 4 23:17:01 2019 +0100
Branches: functions-experimental-refactor
https://developer.blender.org/rB07ac997f1c3cdcba1e1dd2ac5513c5fc13b1c6de

make Float Range node work again

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

M	source/blender/functions2/intern/multi_functions/mixed.cc
M	source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc

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

diff --git a/source/blender/functions2/intern/multi_functions/mixed.cc b/source/blender/functions2/intern/multi_functions/mixed.cc
index 0e9fdb35624..91579f4f527 100644
--- a/source/blender/functions2/intern/multi_functions/mixed.cc
+++ b/source/blender/functions2/intern/multi_functions/mixed.cc
@@ -150,24 +150,28 @@ void MF_FloatArraySum::call(const MFMask &mask, MFParams &params, MFContext &UNU
 MF_FloatRange::MF_FloatRange()
 {
   MFSignatureBuilder signature("Float Range");
+  signature.readonly_single_input<int>("Amount");
   signature.readonly_single_input<float>("Start");
   signature.readonly_single_input<float>("Step");
-  signature.readonly_single_input<int>("Amount");
   signature.vector_output<float>("Range");
   this->set_signature(signature);
 }
 
 void MF_FloatRange::call(const MFMask &mask, MFParams &params, MFContext &UNUSED(context)) const
 {
-  auto starts = params.readonly_single_input<float>(0, "Start");
-  auto steps = params.readonly_single_input<float>(1, "Step");
-  auto amounts = params.readonly_single_input<int>(2, "Amount");
-  auto ranges = params.vector_output<float>(3, "Range");
+  VirtualListRef<int> amounts = params.readonly_single_input<int>(0, "Amount");
+  VirtualListRef<float> starts = params.readonly_single_input<float>(1, "Start");
+  VirtualListRef<float> steps = params.readonly_single_input<float>(2, "Step");
+  auto lists = params.vector_output<float>(3, "Range");
 
   for (uint i : mask.indices()) {
-    for (uint j = 0; j < amounts[i]; j++) {
-      float value = starts[i] + j * steps[i];
-      ranges.append_single(i, value);
+    int amount = amounts[i];
+    float start = starts[i];
+    float step = steps[i];
+
+    for (int j = 0; j < amount; j++) {
+      float value = start + j * step;
+      lists.append_single(i, value);
     }
   }
 }
diff --git a/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc b/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
index b9431611f7d..0aa2bcc5351 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
+++ b/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
@@ -137,6 +137,12 @@ static void INSERT_vertex_info(VTreeMFNetworkBuilder &builder, const VNode &vnod
   builder.add_function(fn, {}, {0}, vnode);
 }
 
+static void INSERT_float_range(VTreeMFNetworkBuilder &builder, const VNode &vnode)
+{
+  const MultiFunction &fn = builder.allocate_function<FN::MF_FloatRange>();
+  builder.add_function(fn, {0, 1, 2}, {3}, vnode);
+}
+
 void add_vtree_node_mapping_info(VTreeMultiFunctionMappings &mappings)
 {
   mappings.vnode_inserters.add_new("fn_FloatMathNode", INSERT_float_math);
@@ -149,6 +155,7 @@ void add_vtree_node_mapping_info(VTreeMultiFunctionMappings &mappings)
   mappings.vnode_inserters.add_new("fn_ObjectTransformsNode", INSERT_object_location);
   mappings.vnode_inserters.add_new("fn_TextLengthNode", INSERT_text_length);
   mappings.vnode_inserters.add_new("fn_VertexInfoNode", INSERT_vertex_info);
+  mappings.vnode_inserters.add_new("fn_FloatRangeNode", INSERT_float_range);
 }
 
 };  // namespace FN



More information about the Bf-blender-cvs mailing list