[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 ¶ms, 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 ¶ms, 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