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

Reply via email to