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
This commit is contained in:
committed by
Charlie Jolly
parent
0aa7315608
commit
71468f475b
@@ -70,11 +70,15 @@ static void sh_node_math_gather_link_searches(GatherLinkSearchOpParams ¶ms)
|
||||
/* 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user