[Bf-blender-cvs] [72b67178dc4] functions: vector distance node
Jacques Lucke
noreply at git.blender.org
Wed Feb 20 17:21:37 CET 2019
Commit: 72b67178dc4f4f2da802a8e3ab190efd5eb4f6d3
Author: Jacques Lucke
Date: Wed Feb 20 16:32:31 2019 +0100
Branches: functions
https://developer.blender.org/rB72b67178dc4f4f2da802a8e3ab190efd5eb4f6d3
vector distance node
===================================================================
M release/scripts/startup/function_nodes/menu.py
M release/scripts/startup/function_nodes/nodes/__init__.py
A release/scripts/startup/function_nodes/nodes/vector_distance.py
M source/blender/functions/nodes/test_nodes.cpp
===================================================================
diff --git a/release/scripts/startup/function_nodes/menu.py b/release/scripts/startup/function_nodes/menu.py
index bdeb40c0020..c2a9e10ae66 100644
--- a/release/scripts/startup/function_nodes/menu.py
+++ b/release/scripts/startup/function_nodes/menu.py
@@ -15,6 +15,7 @@ def draw_menu(self, context):
insert_node(layout, "fn_FloatMathNode", "Float Math")
insert_node(layout, "fn_CombineVectorNode", "Combine Vector")
insert_node(layout, "fn_SeparateVectorNode", "Separate Vector")
+ insert_node(layout, "fn_VectorDistanceNode", "Vector Distance")
insert_node(layout, "fn_ObjectTransformsNode", "Object Transforms")
def insert_node(layout, type, text, settings = {}, icon = "NONE"):
diff --git a/release/scripts/startup/function_nodes/nodes/__init__.py b/release/scripts/startup/function_nodes/nodes/__init__.py
index 948fb549c2f..f6831f9187d 100644
--- a/release/scripts/startup/function_nodes/nodes/__init__.py
+++ b/release/scripts/startup/function_nodes/nodes/__init__.py
@@ -6,4 +6,5 @@ from . import (
combine_vector,
separate_vector,
object_transforms,
+ vector_distance,
)
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/nodes/vector_distance.py b/release/scripts/startup/function_nodes/nodes/vector_distance.py
new file mode 100644
index 00000000000..c002053a864
--- /dev/null
+++ b/release/scripts/startup/function_nodes/nodes/vector_distance.py
@@ -0,0 +1,16 @@
+import bpy
+from .. base import FunctionNode
+
+class VectorDistanceNode(bpy.types.Node, FunctionNode):
+ bl_idname = "fn_VectorDistanceNode"
+ bl_label = "Vector Distance"
+
+ def get_sockets(self):
+ return [
+ ("fn_VectorSocket", "A"),
+ ("fn_VectorSocket", "B"),
+ ], [
+ ("fn_FloatSocket", "Distance"),
+ ]
+
+bpy.utils.register_class(VectorDistanceNode)
\ No newline at end of file
diff --git a/source/blender/functions/nodes/test_nodes.cpp b/source/blender/functions/nodes/test_nodes.cpp
index 4ebc206e59f..be0933b7d0c 100644
--- a/source/blender/functions/nodes/test_nodes.cpp
+++ b/source/blender/functions/nodes/test_nodes.cpp
@@ -1,6 +1,7 @@
#include "nodes.hpp"
#include "BLI_lazy_init.hpp"
#include "RNA_access.h"
+#include "BLI_math.h"
namespace FN { namespace Nodes {
@@ -45,6 +46,16 @@ namespace FN { namespace Nodes {
}
};
+ class VectorDistance : public FN::TupleCallBody {
+ void call(const FN::Tuple &fn_in, FN::Tuple &fn_out) const override
+ {
+ Vector a = fn_in.get<Vector>(0);
+ Vector b = fn_in.get<Vector>(1);
+ float distance = len_v3v3((float *)&a, (float *)&b);
+ fn_out.set<float>(0, distance);
+ }
+ };
+
class ObjectTransforms : public FN::TupleCallBody {
private:
Object *m_object;
@@ -96,6 +107,18 @@ namespace FN { namespace Nodes {
return fn;
}
+ LAZY_INIT_REF_STATIC__NO_ARG(SharedFunction, get_vector_distance_function)
+ {
+ auto fn = SharedFunction::New("Vector Distance", Signature({
+ InputParameter("A", get_fvec3_type()),
+ InputParameter("B", get_fvec3_type()),
+ }, {
+ OutputParameter("Distance", get_float_type()),
+ }));
+ fn->add_body(new VectorDistance());
+ return fn;
+ }
+
LAZY_INIT_REF_STATIC__NO_ARG(SharedFunction, get_add_floats_function)
{
auto fn = SharedFunction::New("Add Floats", Signature({
@@ -169,6 +192,7 @@ namespace FN { namespace Nodes {
{
register_node_function_getter__no_arg("fn_CombineVectorNode", get_combine_vector_function);
register_node_function_getter__no_arg("fn_SeparateVectorNode", get_separate_vector_function);
+ register_node_function_getter__no_arg("fn_VectorDistanceNode", get_vector_distance_function);
register_node_inserter("fn_ObjectTransformsNode", insert_object_transforms_node);
register_node_inserter("fn_FloatMathNode", insert_float_math_node);
}
More information about the Bf-blender-cvs
mailing list