Blender V5.0
blender::nodes::socket_usage_inference Namespace Reference

Classes

class  SocketUsageInferencerImpl
class  SocketUsageInferencer
class  InputSocketUsageParams
struct  SocketUsage

Functions

static bool input_may_affect_visibility (const bNodeTreeInterfaceSocket &socket)
static bool input_may_affect_visibility (const bNodeSocket &socket)
Array< SocketUsageinfer_all_sockets_usage (const bNodeTree &tree)
void infer_group_interface_usage (const bNodeTree &group, const Span< InferenceValue > group_input_values, const MutableSpan< SocketUsage > r_input_usages, const std::optional< MutableSpan< SocketUsage > > r_output_usages)
void infer_group_interface_inputs_usage (const bNodeTree &group, Span< const bNodeSocket * > input_sockets, MutableSpan< SocketUsage > r_input_usages)
void infer_group_interface_usage (const bNodeTree &group, const IDProperty *properties, MutableSpan< SocketUsage > r_input_usages, std::optional< MutableSpan< SocketUsage > > r_output_usages)

Function Documentation

◆ infer_all_sockets_usage()

Array< SocketUsage > blender::nodes::socket_usage_inference::infer_all_sockets_usage ( const bNodeTree & tree)

◆ infer_group_interface_inputs_usage()

◆ infer_group_interface_usage() [1/2]

void blender::nodes::socket_usage_inference::infer_group_interface_usage ( const bNodeTree & group,
const IDProperty * properties,
MutableSpan< SocketUsage > r_input_usages,
std::optional< MutableSpan< SocketUsage > > r_output_usages = std::nullopt )

Same as above, but automatically retrieves the input values from the given properties. This is used with the geometry nodes modifier and node tools.

Definition at line 961 of file socket_usage_inference.cc.

References blender::nodes::get_geometry_nodes_input_inference_values(), and infer_group_interface_usage().

◆ infer_group_interface_usage() [2/2]

void blender::nodes::socket_usage_inference::infer_group_interface_usage ( const bNodeTree & group,
Span< InferenceValue > group_input_values,
MutableSpan< SocketUsage > r_input_usages,
std::optional< MutableSpan< SocketUsage > > r_output_usages = std::nullopt )

Get usage of the inputs and outputs of the node group given the set of input values. The result can be used to e.g. gray out or hide individual inputs that are unused.

Parameters
groupThe node group that is called.
group_input_valuesAn optional input value for each node group input. The type is expected to be bNodeSocketType::base_cpp_type. If the input value for a socket is not known or can't be represented as base type, null has to be passed instead.
r_input_usagesThe destination array where the inferred input usages are written.
r_output_usagesThe destination array where the inferred output usages are written.

Definition at line 851 of file socket_usage_inference.cc.

References blender::MutableSpan< T >::fill(), i, infer_group_interface_usage(), input_may_affect_visibility(), blender::nodes::socket_usage_inference::SocketUsageInferencer::is_disabled_group_output(), blender::nodes::socket_usage_inference::SocketUsageInferencer::is_group_input_used(), blender::nodes::socket_usage_inference::SocketUsage::is_used, blender::nodes::socket_usage_inference::SocketUsage::is_visible, and blender::nodes::InferenceValue::Unknown().

Referenced by blender::nodes::draw_geometry_nodes_operator_redo_ui(), blender::NodesModifierUsageInferenceCache::ensure(), infer_group_interface_inputs_usage(), infer_group_interface_usage(), and infer_group_interface_usage().

◆ input_may_affect_visibility() [1/2]

bool blender::nodes::socket_usage_inference::input_may_affect_visibility ( const bNodeSocket & socket)
static

Definition at line 759 of file socket_usage_inference.cc.

References SOCK_MENU, and bNodeSocket::type.

◆ input_may_affect_visibility() [2/2]

bool blender::nodes::socket_usage_inference::input_may_affect_visibility ( const bNodeTreeInterfaceSocket & socket)
static