Commit: c6cf1082cb2e206bf4a7feb87385d7849e96d662
Author: Jacques Lucke
Date: Wed Dec 18 12:53:02 2019 +0100
Branches: functions
https://developer.blender.org/rBc6cf1082cb2e206bf4a7feb87385d7849e96d662
new Multiply Vector with Float node
===================================================================
M release/scripts/startup/nodes/function_nodes/math.py
M
source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
===================================================================
diff --git a/release/scripts/startup/nodes/function_nodes/math.py
b/release/scripts/startup/nodes/function_nodes/math.py
index 8b921a5a360..6ec549e9b54 100644
--- a/release/scripts/startup/nodes/function_nodes/math.py
+++ b/release/scripts/startup/nodes/function_nodes/math.py
@@ -21,36 +21,35 @@ def create_variadic_math_node(data_type, idname, label):
return MathNode
-def create_two_inputs_math_node(data_type, idname, label):
- return create_two_inputs_other_output_math_node(data_type, data_type,
idname, label)
-
-def create_single_input_math_node(data_type, idname, label):
+def create_single_type_two_inputs_math_node(data_type, idname, label):
+ return create_two_inputs_math_node(data_type, data_type, data_type,
idname, label)
+def create_two_inputs_math_node(input_type1, input_type2, output_type, idname,
label):
class MathNode(bpy.types.Node, FunctionNode):
bl_idname = idname
bl_label = label
- use_list: NodeBuilder.VectorizedProperty()
+ use_list__a: NodeBuilder.VectorizedProperty()
+ use_list__b: NodeBuilder.VectorizedProperty()
def declaration(self, builder: NodeBuilder):
- builder.vectorized_input("input", "use_list", "Value", "Values",
data_type)
- builder.vectorized_output("output", ["use_list"], "Result",
"Result", data_type)
+ builder.vectorized_input("a", "use_list__a", "A", "A", input_type1)
+ builder.vectorized_input("b", "use_list__b", "B", "B", input_type2)
+ builder.vectorized_output("result", ["use_list__a",
"use_list__b"], "Result", "Result", output_type)
return MathNode
-def create_two_inputs_other_output_math_node(input_type, output_type, idname,
label):
+def create_single_input_math_node(data_type, idname, label):
class MathNode(bpy.types.Node, FunctionNode):
bl_idname = idname
bl_label = label
- use_list__a: NodeBuilder.VectorizedProperty()
- use_list__b: NodeBuilder.VectorizedProperty()
+ use_list: NodeBuilder.VectorizedProperty()
def declaration(self, builder: NodeBuilder):
- builder.vectorized_input("a", "use_list__a", "A", "A", input_type)
- builder.vectorized_input("b", "use_list__b", "B", "B", input_type)
- builder.vectorized_output("result", ["use_list__a",
"use_list__b"], "Result", "Result", output_type)
+ builder.vectorized_input("input", "use_list", "Value", "Values",
data_type)
+ builder.vectorized_output("output", ["use_list"], "Result",
"Result", data_type)
return MathNode
@@ -59,9 +58,9 @@ MultiplyFloatsNode = create_variadic_math_node("Float",
"fn_MultiplyFloatsNode",
MinimumFloatsNode = create_variadic_math_node("Float", "fn_MinimumFloatsNode",
"Minimum Floats")
MaximumFloatsNode = create_variadic_math_node("Float", "fn_MaximumFloatsNode",
"Maximum Floats")
-SubtractFloatsNode = create_two_inputs_math_node("Float",
"fn_SubtractFloatsNode", "Subtract Floats")
-DivideFloatsNode = create_two_inputs_math_node("Float", "fn_DivideFloatsNode",
"Divide Floats")
-PowerFloatsNode = create_two_inputs_math_node("Float", "fn_PowerFloatsNode",
"Power Floats")
+SubtractFloatsNode = create_single_type_two_inputs_math_node("Float",
"fn_SubtractFloatsNode", "Subtract Floats")
+DivideFloatsNode = create_single_type_two_inputs_math_node("Float",
"fn_DivideFloatsNode", "Divide Floats")
+PowerFloatsNode = create_single_type_two_inputs_math_node("Float",
"fn_PowerFloatsNode", "Power Floats")
SqrtFloatNode = create_single_input_math_node("Float", "fn_SqrtFloatNode",
"Sqrt Float")
AbsFloatNode = create_single_input_math_node("Float", "fn_AbsoluteFloatNode",
"Absolute Float")
@@ -69,15 +68,16 @@ SineFloatNode = create_single_input_math_node("Float",
"fn_SineFloatNode", "Sine
CosineFloatNode = create_single_input_math_node("Float", "fn_CosineFloatNode",
"Cosine")
AddVectorsNode = create_variadic_math_node("Vector", "fn_AddVectorsNode", "Add
Vectors")
-SubtractVectorsNode = create_two_inputs_math_node("Vector",
"fn_SubtractVectorsNode", "Subtract Vectors")
+SubtractVectorsNode = create_single_type_two_inputs_math_node("Vector",
"fn_SubtractVectorsNode", "Subtract Vectors")
MultiplyVectorsNode = create_variadic_math_node("Vector",
"fn_MultiplyVectorsNode", "Multiply Vectors")
-DivideVectorsNode = create_two_inputs_math_node("Vector",
"fn_DivideVectorsNode", "Divide Vectors")
-
-VectorCrossProductNode = create_two_inputs_math_node("Vector",
"fn_VectorCrossProductNode", "Cross Product")
-VectorReflectNode = create_two_inputs_math_node("Vector",
"fn_ReflectVectorNode", "Reflect Vector")
-VectorProjectNode = create_two_inputs_math_node("Vector",
"fn_ProjectVectorNode", "Project Vector")
-VectorDotProductNode = create_two_inputs_other_output_math_node("Vector",
"Float", "fn_VectorDotProductNode", "Dot Product")
-VectorDistanceNode = create_two_inputs_other_output_math_node("Vector",
"Float", "fn_VectorDistanceNode", "Vector Distance")
+DivideVectorsNode = create_single_type_two_inputs_math_node("Vector",
"fn_DivideVectorsNode", "Divide Vectors")
+MultiplyVectorWithFloatNode = create_two_inputs_math_node("Vector", "Float",
"Vector", "fn_MultiplyVectorWithFloatNode", "Multiply Vector with Float")
+
+VectorCrossProductNode = create_single_type_two_inputs_math_node("Vector",
"fn_VectorCrossProductNode", "Cross Product")
+VectorReflectNode = create_single_type_two_inputs_math_node("Vector",
"fn_ReflectVectorNode", "Reflect Vector")
+VectorProjectNode = create_single_type_two_inputs_math_node("Vector",
"fn_ProjectVectorNode", "Project Vector")
+VectorDotProductNode = create_two_inputs_math_node("Vector", "Vector",
"Float", "fn_VectorDotProductNode", "Dot Product")
+VectorDistanceNode = create_two_inputs_math_node("Vector", "Vector", "Float",
"fn_VectorDistanceNode", "Vector Distance")
BooleanAndNode = create_variadic_math_node("Boolean", "fn_BooleanAndNode",
"And")
BooleanOrNode = create_variadic_math_node("Boolean", "fn_BooleanOrNode", "Or")
diff --git
a/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
b/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
index a77b90bf9a8..e738cab2698 100644
---
a/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
+++
b/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
@@ -360,6 +360,11 @@ static void INSERT_vector_distance(VNodeMFNetworkBuilder
&builder)
build_math_fn_in2_out1<float3, float3, float>(builder, float3::distance);
}
+static void INSERT_multiply_vector_with_float(VNodeMFNetworkBuilder &builder)
+{
+ build_math_fn_in2_out1<float3, float, float3>(builder, [](float3 a, float b)
{ return a * b; });
+}
+
static void INSERT_boolean_and(VNodeMFNetworkBuilder &builder)
{
build_variadic_math_fn(
@@ -594,6 +599,8 @@ void
add_inlined_tree_node_mapping_info(VTreeMultiFunctionMappings &mappings)
mappings.xnode_inserters.add_new("fn_ProjectVectorNode",
INSERT_project_vector);
mappings.xnode_inserters.add_new("fn_VectorDotProductNode",
INSERT_vector_dot_product);
mappings.xnode_inserters.add_new("fn_VectorDistanceNode",
INSERT_vector_distance);
+ mappings.xnode_inserters.add_new("fn_MultiplyVectorWithFloatNode",
+ INSERT_multiply_vector_with_float);
mappings.xnode_inserters.add_new("fn_BooleanAndNode", INSERT_boolean_and);
mappings.xnode_inserters.add_new("fn_BooleanOrNode", INSERT_boolean_or);
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs