Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharlie Jolly <charlie>2021-12-31 05:32:28 +0300
committerCharlie Jolly <mistajolly@gmail.com>2021-12-31 05:34:23 +0300
commit71468f475b449fc2c72d9c0438db9b37788058ab (patch)
tree220c19fb0f9e03ab528071b777f342e5b9ef2bfc
parent0aa73156083821d45c7794ea964d7fd5e6d13b25 (diff)
Nodes: Weight drag link search for Math nodes
As @hooglyboogly suggested in D13680, this patch adds weighting to the search results. Dragging from a vector/rgba socket weights the Vector Math node higher than a float Math node, and vice versa. Reviewed By: HooglyBoogly Differential Revision: https://developer.blender.org/D13691
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_math.cc8
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_vector_math.cc8
2 files changed, 12 insertions, 4 deletions
diff --git a/source/blender/nodes/shader/nodes/node_shader_math.cc b/source/blender/nodes/shader/nodes/node_shader_math.cc
index 7337a1172bf..1b450a6414b 100644
--- a/source/blender/nodes/shader/nodes/node_shader_math.cc
+++ b/source/blender/nodes/shader/nodes/node_shader_math.cc
@@ -70,11 +70,15 @@ static void sh_node_math_gather_link_searches(GatherLinkSearchOpParams &params)
/* Expose first Value socket. */
if (params.node_tree().typeinfo->validate_link(
static_cast<eNodeSocketDatatype>(params.other_socket().type), SOCK_FLOAT)) {
+
+ const int weight = ELEM(params.other_socket().type, SOCK_FLOAT, SOCK_BOOLEAN, SOCK_INT) ? 0 :
+ -1;
+
for (const EnumPropertyItem *item = rna_enum_node_math_items; item->identifier != nullptr;
item++) {
if (item->name != nullptr && item->identifier != "") {
- params.add_item(IFACE_(item->name),
- SocketSearchOp{"Value", (NodeMathOperation)item->value});
+ params.add_item(
+ IFACE_(item->name), SocketSearchOp{"Value", (NodeMathOperation)item->value}, weight);
}
}
}
diff --git a/source/blender/nodes/shader/nodes/node_shader_vector_math.cc b/source/blender/nodes/shader/nodes/node_shader_vector_math.cc
index 0218e759bea..a488e709373 100644
--- a/source/blender/nodes/shader/nodes/node_shader_vector_math.cc
+++ b/source/blender/nodes/shader/nodes/node_shader_vector_math.cc
@@ -64,6 +64,8 @@ static void sh_node_vector_math_gather_link_searches(GatherLinkSearchOpParams &p
return;
}
+ const int weight = ELEM(params.other_socket().type, SOCK_VECTOR, SOCK_RGBA) ? 0 : -1;
+
for (const EnumPropertyItem *item = rna_enum_node_vec_math_items; item->identifier != nullptr;
item++) {
if (item->name != nullptr && item->identifier != "") {
@@ -72,11 +74,13 @@ static void sh_node_vector_math_gather_link_searches(GatherLinkSearchOpParams &p
NODE_VECTOR_MATH_DISTANCE,
NODE_VECTOR_MATH_DOT_PRODUCT)) {
params.add_item(IFACE_(item->name),
- SocketSearchOp{"Value", (NodeVectorMathOperation)item->value});
+ SocketSearchOp{"Value", (NodeVectorMathOperation)item->value},
+ weight);
}
else {
params.add_item(IFACE_(item->name),
- SocketSearchOp{"Vector", (NodeVectorMathOperation)item->value});
+ SocketSearchOp{"Vector", (NodeVectorMathOperation)item->value},
+ weight);
}
}
}