[Bf-blender-cvs] [de6a5ea3a0e] functions: clamp node as combination of min and max functions

Jacques Lucke noreply at git.blender.org
Wed Feb 20 17:21:41 CET 2019


Commit: de6a5ea3a0ece852dbb5f10ba69458673940b9f4
Author: Jacques Lucke
Date:   Wed Feb 20 16:59:21 2019 +0100
Branches: functions
https://developer.blender.org/rBde6a5ea3a0ece852dbb5f10ba69458673940b9f4

clamp node as combination of min and max functions

===================================================================

M	release/scripts/startup/function_nodes/menu.py
M	release/scripts/startup/function_nodes/nodes/__init__.py
A	release/scripts/startup/function_nodes/nodes/clamp.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 c2a9e10ae66..1d98803309b 100644
--- a/release/scripts/startup/function_nodes/menu.py
+++ b/release/scripts/startup/function_nodes/menu.py
@@ -16,6 +16,7 @@ def draw_menu(self, context):
     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_ClampNode", "Clamp")
     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 f6831f9187d..7be89bc2b39 100644
--- a/release/scripts/startup/function_nodes/nodes/__init__.py
+++ b/release/scripts/startup/function_nodes/nodes/__init__.py
@@ -7,4 +7,5 @@ from . import (
     separate_vector,
     object_transforms,
     vector_distance,
+    clamp,
 )
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/nodes/clamp.py b/release/scripts/startup/function_nodes/nodes/clamp.py
new file mode 100644
index 00000000000..92f7a19046c
--- /dev/null
+++ b/release/scripts/startup/function_nodes/nodes/clamp.py
@@ -0,0 +1,17 @@
+import bpy
+from .. base import FunctionNode
+
+class ClampNode(bpy.types.Node, FunctionNode):
+    bl_idname = "fn_ClampNode"
+    bl_label = "Clamp"
+
+    def get_sockets(self):
+        return [
+            ("fn_FloatSocket", "Value"),
+            ("fn_FloatSocket", "Min"),
+            ("fn_FloatSocket", "Max"),
+        ], [
+            ("fn_FloatSocket", "Result"),
+        ]
+
+bpy.utils.register_class(ClampNode)
\ 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 ca9e7bbf5c3..a053218dea5 100644
--- a/source/blender/functions/nodes/test_nodes.cpp
+++ b/source/blender/functions/nodes/test_nodes.cpp
@@ -223,6 +223,25 @@ namespace FN { namespace Nodes {
 		map_node_sockets(socket_map, bnode, node);
 	}
 
+	static void insert_clamp_node(
+		bNodeTree *UNUSED(btree),
+		bNode *bnode,
+		SharedDataFlowGraph &graph,
+		SocketMap &socket_map)
+	{
+		SharedFunction &max_fn = get_maximum_function();
+		SharedFunction &min_fn = get_minimum_function();
+
+		const Node *max_node = graph->insert(max_fn);
+		const Node *min_node = graph->insert(min_fn);
+
+		graph->link(max_node->output(0), min_node->input(0));
+		socket_map.add((bNodeSocket *)BLI_findlink(&bnode->inputs, 0), max_node->input(0));
+		socket_map.add((bNodeSocket *)BLI_findlink(&bnode->inputs, 1), max_node->input(1));
+		socket_map.add((bNodeSocket *)BLI_findlink(&bnode->inputs, 2), min_node->input(1));
+		socket_map.add((bNodeSocket *)BLI_findlink(&bnode->outputs, 0), min_node->output(0));
+	}
+
 	void initialize_node_inserters()
 	{
 		register_node_function_getter__no_arg("fn_CombineVectorNode", get_combine_vector_function);
@@ -230,6 +249,7 @@ namespace FN { namespace Nodes {
 		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);
+		register_node_inserter("fn_ClampNode", insert_clamp_node);
 	}
 
 } }
\ No newline at end of file



More information about the Bf-blender-cvs mailing list