[Bf-blender-cvs] [34a66dea4ee] functions-experimental-refactor: Combine Vector multi function
Jacques Lucke
noreply at git.blender.org
Tue Oct 15 15:57:43 CEST 2019
Commit: 34a66dea4ee795e9ffb58afde2809f877d45adcd
Author: Jacques Lucke
Date: Tue Oct 15 15:32:06 2019 +0200
Branches: functions-experimental-refactor
https://developer.blender.org/rB34a66dea4ee795e9ffb58afde2809f877d45adcd
Combine Vector multi function
===================================================================
M release/scripts/startup/bl_operators/modifiers.py
M source/blender/blenkernel/BKE_multi_functions.h
M source/blender/blenkernel/intern/multi_functions.cc
M source/blender/modifiers/intern/MOD_functiondeform_cxx.cc
===================================================================
diff --git a/release/scripts/startup/bl_operators/modifiers.py b/release/scripts/startup/bl_operators/modifiers.py
index 9f0b2df3ee7..5b19d9e4a96 100644
--- a/release/scripts/startup/bl_operators/modifiers.py
+++ b/release/scripts/startup/bl_operators/modifiers.py
@@ -25,8 +25,8 @@ class NewDeformationFunction(bpy.types.Operator, ModifierOperator):
from nodes.node_operators import new_function_tree
tree = new_function_tree("Deformation Function", [
("Vector", "Old Position"),
- ("Integer", "Vertex Seed"),
- ("Float", "Control")
+ ("Float", "Control 1"),
+ ("Integer", "Control 2")
], [
("Vector", "New Position"),
])
diff --git a/source/blender/blenkernel/BKE_multi_functions.h b/source/blender/blenkernel/BKE_multi_functions.h
index bf61e8cb3e5..75ceef1cb97 100644
--- a/source/blender/blenkernel/BKE_multi_functions.h
+++ b/source/blender/blenkernel/BKE_multi_functions.h
@@ -17,6 +17,12 @@ class MultiFunction_AddFloat3s final : public MultiFunction {
void call(ArrayRef<uint> mask_indices, Params ¶ms) const override;
};
+class MultiFunction_CombineVector final : public MultiFunction {
+ public:
+ MultiFunction_CombineVector();
+ void call(ArrayRef<uint> mask_indices, Params ¶ms) const override;
+};
+
class MultiFunction_VectorDistance final : public MultiFunction {
public:
MultiFunction_VectorDistance();
diff --git a/source/blender/blenkernel/intern/multi_functions.cc b/source/blender/blenkernel/intern/multi_functions.cc
index 82d5892f80a..53a926147e7 100644
--- a/source/blender/blenkernel/intern/multi_functions.cc
+++ b/source/blender/blenkernel/intern/multi_functions.cc
@@ -52,6 +52,28 @@ void MultiFunction_AddFloat3s::call(ArrayRef<uint> mask_indices, Params ¶ms)
}
}
+MultiFunction_CombineVector::MultiFunction_CombineVector()
+{
+ SignatureBuilder signature;
+ signature.readonly_single_input<float>("X");
+ signature.readonly_single_input<float>("Y");
+ signature.readonly_single_input<float>("Z");
+ signature.single_output<float3>("Vector");
+ this->set_signature(signature);
+}
+
+void MultiFunction_CombineVector::call(ArrayRef<uint> mask_indices, Params ¶ms) const
+{
+ auto x = params.readonly_single_input<float>(0, "X");
+ auto y = params.readonly_single_input<float>(1, "Y");
+ auto z = params.readonly_single_input<float>(2, "Z");
+ auto vector = params.single_output<float3>(3, "Vector");
+
+ for (uint i : mask_indices) {
+ vector[i] = {x[i], y[i], z[i]};
+ }
+}
+
MultiFunction_VectorDistance::MultiFunction_VectorDistance()
{
SignatureBuilder signature;
diff --git a/source/blender/modifiers/intern/MOD_functiondeform_cxx.cc b/source/blender/modifiers/intern/MOD_functiondeform_cxx.cc
index 14582af0bb8..991ec85670f 100644
--- a/source/blender/modifiers/intern/MOD_functiondeform_cxx.cc
+++ b/source/blender/modifiers/intern/MOD_functiondeform_cxx.cc
@@ -47,6 +47,9 @@ static std::unique_ptr<BKE::MultiFunction> get_multi_function_by_node(VirtualNod
if (idname == "fn_VectorMathNode") {
return BLI::make_unique<BKE::MultiFunction_AddFloat3s>();
}
+ else if (idname == "fn_CombineVectorNode") {
+ return BLI::make_unique<BKE::MultiFunction_CombineVector>();
+ }
else {
BLI_assert(false);
return {};
More information about the Bf-blender-cvs
mailing list