Commit: e352d7d3ca13f39a86dc87ae32b8ec37fb493171 Author: Jacques Lucke Date: Mon Apr 8 17:29:04 2019 +0200 Branches: functions https://developer.blender.org/rBe352d7d3ca13f39a86dc87ae32b8ec37fb493171
new Float Range node =================================================================== A release/scripts/startup/function_nodes/nodes/float_range.py M source/blender/functions/CMakeLists.txt M source/blender/functions/FN_functions.hpp M source/blender/functions/frontends/data_flow_nodes/inserters/nodes.cpp A source/blender/functions/functions/ranges.cpp A source/blender/functions/functions/ranges.hpp =================================================================== diff --git a/release/scripts/startup/function_nodes/nodes/float_range.py b/release/scripts/startup/function_nodes/nodes/float_range.py new file mode 100644 index 00000000000..19fcea6f44b --- /dev/null +++ b/release/scripts/startup/function_nodes/nodes/float_range.py @@ -0,0 +1,14 @@ +import bpy +from .. base import FunctionNode +from .. socket_builder import SocketBuilder + +class FloatRangeNode(bpy.types.Node, FunctionNode): + bl_idname = "fn_FloatRangeNode" + bl_label = "Float Range" + + def declaration(self, builder: SocketBuilder): + builder.fixed_input("amount", "Amount", "Integer") + builder.fixed_input("start", "Start", "Float") + builder.fixed_input("step", "Step", "Float") + + builder.fixed_output("list", "List", "Float List") \ No newline at end of file diff --git a/source/blender/functions/CMakeLists.txt b/source/blender/functions/CMakeLists.txt index 098d571e6a0..5c9c550b00c 100644 --- a/source/blender/functions/CMakeLists.txt +++ b/source/blender/functions/CMakeLists.txt @@ -118,6 +118,8 @@ set(SRC functions/switch.cpp functions/auto_vectorization.hpp functions/auto_vectorization.cpp + functions/ranges.hpp + functions/ranges.cpp frontends/data_flow_nodes/builder.hpp frontends/data_flow_nodes/builder.cpp diff --git a/source/blender/functions/FN_functions.hpp b/source/blender/functions/FN_functions.hpp index f20ec82b848..0f4a21ff8ab 100644 --- a/source/blender/functions/FN_functions.hpp +++ b/source/blender/functions/FN_functions.hpp @@ -8,3 +8,4 @@ #include "functions/simple_conversions.hpp" #include "functions/switch.hpp" #include "functions/auto_vectorization.hpp" +#include "functions/ranges.hpp" \ No newline at end of file diff --git a/source/blender/functions/frontends/data_flow_nodes/inserters/nodes.cpp b/source/blender/functions/frontends/data_flow_nodes/inserters/nodes.cpp index d809c26d596..1b6aa647204 100644 --- a/source/blender/functions/frontends/data_flow_nodes/inserters/nodes.cpp +++ b/source/blender/functions/frontends/data_flow_nodes/inserters/nodes.cpp @@ -232,6 +232,7 @@ namespace FN { namespace DataFlowNodes { inserters.reg_node_function("fn_VectorDistanceNode", Functions::GET_FN_vector_distance); inserters.reg_node_function("fn_RandomNumberNode", Functions::GET_FN_random_number); inserters.reg_node_function("fn_MapRangeNode", Functions::GET_FN_map_range); + inserters.reg_node_function("fn_FloatRangeNode", Functions::GET_FN_float_range); inserters.reg_node_inserter("fn_SeparateVectorNode", INSERT_separate_vector); inserters.reg_node_inserter("fn_CombineVectorNode", INSERT_combine_vector); diff --git a/source/blender/functions/functions/ranges.cpp b/source/blender/functions/functions/ranges.cpp new file mode 100644 index 00000000000..44b50ff7132 --- /dev/null +++ b/source/blender/functions/functions/ranges.cpp @@ -0,0 +1,46 @@ +#include "FN_core.hpp" +#include "FN_functions.hpp" +#include "FN_types.hpp" + +#include "BLI_lazy_init.hpp" + +namespace FN { namespace Functions { + + using namespace Types; + + class FloatRange : public TupleCallBody { + void call(Tuple &fn_in, Tuple &fn_out, ExecutionContext &UNUSED(ctx)) const override + { + int amount = fn_in.get<int>(0); + float start = fn_in.get<float>(1); + float step = fn_in.get<float>(2); + + if (amount < 0) { + amount = 0; + } + + auto list = SharedFloatList::New(); + float value = start; + for (uint i = 0; i < amount; i++) { + list->append(value); + value += step; + } + + fn_out.move_in(0, list); + } + }; + + LAZY_INIT_REF__NO_ARG(SharedFunction, GET_FN_float_range) + { + auto fn = SharedFunction::New("Float Range", Signature({ + InputParameter("Amount", GET_TYPE_int32()), + InputParameter("Start", GET_TYPE_float()), + InputParameter("Step", GET_TYPE_float()), + }, { + OutputParameter("List", GET_TYPE_float_list()), + })); + fn->add_body(new FloatRange()); + return fn; + } + +} } /* namespace FN::Functions */ \ No newline at end of file diff --git a/source/blender/functions/functions/ranges.hpp b/source/blender/functions/functions/ranges.hpp new file mode 100644 index 00000000000..ee978ee2b09 --- /dev/null +++ b/source/blender/functions/functions/ranges.hpp @@ -0,0 +1,9 @@ +#pragma once + +#include "FN_core.hpp" + +namespace FN { namespace Functions { + + SharedFunction &GET_FN_float_range(); + +} } /* namespace FN::Functions */ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs