Cleanup: change node socket availability in a single place
This cleans up part of the code that still set the flag manually. Also, this change helps with D13246 because it makes it easier to tag the node tree as changed when the availability of a socket changed.
This commit is contained in:
@@ -39,12 +39,12 @@ static void fn_node_boolean_math_layout(uiLayout *layout, bContext *UNUSED(C), P
|
||||
uiItemR(layout, ptr, "operation", 0, "", ICON_NONE);
|
||||
}
|
||||
|
||||
static void node_boolean_math_update(bNodeTree *UNUSED(ntree), bNode *node)
|
||||
static void node_boolean_math_update(bNodeTree *ntree, bNode *node)
|
||||
{
|
||||
bNodeSocket *sockB = (bNodeSocket *)BLI_findlink(&node->inputs, 1);
|
||||
|
||||
nodeSetSocketAvailability(sockB,
|
||||
ELEM(node->custom1, NODE_BOOLEAN_MATH_AND, NODE_BOOLEAN_MATH_OR));
|
||||
nodeSetSocketAvailability(
|
||||
ntree, sockB, ELEM(node->custom1, NODE_BOOLEAN_MATH_AND, NODE_BOOLEAN_MATH_OR));
|
||||
}
|
||||
|
||||
static void node_boolean_math_label(bNodeTree *UNUSED(ntree), bNode *node, char *label, int maxlen)
|
||||
|
||||
@@ -42,12 +42,14 @@ static void geo_node_float_compare_layout(uiLayout *layout, bContext *UNUSED(C),
|
||||
uiItemR(layout, ptr, "operation", 0, "", ICON_NONE);
|
||||
}
|
||||
|
||||
static void node_float_compare_update(bNodeTree *UNUSED(ntree), bNode *node)
|
||||
static void node_float_compare_update(bNodeTree *ntree, bNode *node)
|
||||
{
|
||||
bNodeSocket *sockEpsilon = (bNodeSocket *)BLI_findlink(&node->inputs, 2);
|
||||
|
||||
nodeSetSocketAvailability(
|
||||
sockEpsilon, ELEM(node->custom1, NODE_FLOAT_COMPARE_EQUAL, NODE_FLOAT_COMPARE_NOT_EQUAL));
|
||||
ntree,
|
||||
sockEpsilon,
|
||||
ELEM(node->custom1, NODE_FLOAT_COMPARE_EQUAL, NODE_FLOAT_COMPARE_NOT_EQUAL));
|
||||
}
|
||||
|
||||
static void node_float_compare_label(bNodeTree *UNUSED(ntree),
|
||||
|
||||
@@ -63,7 +63,7 @@ static void fn_node_random_value_init(bNodeTree *UNUSED(tree), bNode *node)
|
||||
node->storage = data;
|
||||
}
|
||||
|
||||
static void fn_node_random_value_update(bNodeTree *UNUSED(ntree), bNode *node)
|
||||
static void fn_node_random_value_update(bNodeTree *ntree, bNode *node)
|
||||
{
|
||||
const NodeRandomValue &storage = *(const NodeRandomValue *)node->storage;
|
||||
const CustomDataType data_type = static_cast<CustomDataType>(storage.data_type);
|
||||
@@ -81,18 +81,18 @@ static void fn_node_random_value_update(bNodeTree *UNUSED(ntree), bNode *node)
|
||||
bNodeSocket *sock_out_int = sock_out_float->next;
|
||||
bNodeSocket *sock_out_bool = sock_out_int->next;
|
||||
|
||||
nodeSetSocketAvailability(sock_min_vector, data_type == CD_PROP_FLOAT3);
|
||||
nodeSetSocketAvailability(sock_max_vector, data_type == CD_PROP_FLOAT3);
|
||||
nodeSetSocketAvailability(sock_min_float, data_type == CD_PROP_FLOAT);
|
||||
nodeSetSocketAvailability(sock_max_float, data_type == CD_PROP_FLOAT);
|
||||
nodeSetSocketAvailability(sock_min_int, data_type == CD_PROP_INT32);
|
||||
nodeSetSocketAvailability(sock_max_int, data_type == CD_PROP_INT32);
|
||||
nodeSetSocketAvailability(sock_probability, data_type == CD_PROP_BOOL);
|
||||
nodeSetSocketAvailability(ntree, sock_min_vector, data_type == CD_PROP_FLOAT3);
|
||||
nodeSetSocketAvailability(ntree, sock_max_vector, data_type == CD_PROP_FLOAT3);
|
||||
nodeSetSocketAvailability(ntree, sock_min_float, data_type == CD_PROP_FLOAT);
|
||||
nodeSetSocketAvailability(ntree, sock_max_float, data_type == CD_PROP_FLOAT);
|
||||
nodeSetSocketAvailability(ntree, sock_min_int, data_type == CD_PROP_INT32);
|
||||
nodeSetSocketAvailability(ntree, sock_max_int, data_type == CD_PROP_INT32);
|
||||
nodeSetSocketAvailability(ntree, sock_probability, data_type == CD_PROP_BOOL);
|
||||
|
||||
nodeSetSocketAvailability(sock_out_vector, data_type == CD_PROP_FLOAT3);
|
||||
nodeSetSocketAvailability(sock_out_float, data_type == CD_PROP_FLOAT);
|
||||
nodeSetSocketAvailability(sock_out_int, data_type == CD_PROP_INT32);
|
||||
nodeSetSocketAvailability(sock_out_bool, data_type == CD_PROP_BOOL);
|
||||
nodeSetSocketAvailability(ntree, sock_out_vector, data_type == CD_PROP_FLOAT3);
|
||||
nodeSetSocketAvailability(ntree, sock_out_float, data_type == CD_PROP_FLOAT);
|
||||
nodeSetSocketAvailability(ntree, sock_out_int, data_type == CD_PROP_INT32);
|
||||
nodeSetSocketAvailability(ntree, sock_out_bool, data_type == CD_PROP_BOOL);
|
||||
}
|
||||
|
||||
class RandomVectorFunction : public fn::MultiFunction {
|
||||
|
||||
@@ -36,18 +36,18 @@ static void fn_node_rotate_euler_declare(NodeDeclarationBuilder &b)
|
||||
b.add_output<decl::Vector>(N_("Rotation"));
|
||||
};
|
||||
|
||||
static void fn_node_rotate_euler_update(bNodeTree *UNUSED(ntree), bNode *node)
|
||||
static void fn_node_rotate_euler_update(bNodeTree *ntree, bNode *node)
|
||||
{
|
||||
bNodeSocket *rotate_by_socket = static_cast<bNodeSocket *>(BLI_findlink(&node->inputs, 1));
|
||||
bNodeSocket *axis_socket = static_cast<bNodeSocket *>(BLI_findlink(&node->inputs, 2));
|
||||
bNodeSocket *angle_socket = static_cast<bNodeSocket *>(BLI_findlink(&node->inputs, 3));
|
||||
|
||||
nodeSetSocketAvailability(rotate_by_socket,
|
||||
ELEM(node->custom1, FN_NODE_ROTATE_EULER_TYPE_EULER));
|
||||
nodeSetSocketAvailability(axis_socket,
|
||||
ELEM(node->custom1, FN_NODE_ROTATE_EULER_TYPE_AXIS_ANGLE));
|
||||
nodeSetSocketAvailability(angle_socket,
|
||||
ELEM(node->custom1, FN_NODE_ROTATE_EULER_TYPE_AXIS_ANGLE));
|
||||
nodeSetSocketAvailability(
|
||||
ntree, rotate_by_socket, ELEM(node->custom1, FN_NODE_ROTATE_EULER_TYPE_EULER));
|
||||
nodeSetSocketAvailability(
|
||||
ntree, axis_socket, ELEM(node->custom1, FN_NODE_ROTATE_EULER_TYPE_AXIS_ANGLE));
|
||||
nodeSetSocketAvailability(
|
||||
ntree, angle_socket, ELEM(node->custom1, FN_NODE_ROTATE_EULER_TYPE_AXIS_ANGLE));
|
||||
}
|
||||
|
||||
static void fn_node_rotate_euler_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
||||
|
||||
Reference in New Issue
Block a user