[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