22 {0,
nullptr, 0,
nullptr,
nullptr}};
27 {0,
nullptr, 0,
nullptr,
nullptr}};
34 "Automatically detect a good structure type based on how the socket is used"},
39 "Socket can work with different kinds of structures"},
47 "Socket expects a single value"},
48 {0,
nullptr, 0,
nullptr,
nullptr}};
57 "The \"id\" attribute if available, otherwise the index"},
63 "The position from the context"},
68 "Transformation of each instance from the geometry context"},
73 "The left Bézier control point handle from the context"},
78 "The right Bézier control point handle from the context"},
79 {0,
nullptr, 0,
nullptr,
nullptr}};
83# include <fmt/format.h>
110extern FunctionRNA rna_NodeTreeInterfaceSocket_draw_func;
111extern FunctionRNA rna_NodeTreeInterfaceSocket_init_socket_func;
112extern FunctionRNA rna_NodeTreeInterfaceSocket_from_socket_func;
142 return &RNA_NodeTreeInterfaceSocket;
145 return &RNA_NodeTreeInterfacePanel;
147 return &RNA_NodeTreeInterfaceItem;
151static std::optional<std::string> rna_NodeTreeInterfaceItem_path(
const PointerRNA *
ptr)
159 ntree->ensure_interface_cache();
160 for (
const int index : ntree->interface_items().index_range()) {
161 if (ntree->interface_items()[index] == item) {
162 return fmt::format(
"interface.items_tree[{}]", index);
177static int rna_NodeTreeInterfaceItem_position_get(
PointerRNA *
ptr)
184static int rna_NodeTreeInterfaceItem_index_get(
PointerRNA *
ptr)
191static bool rna_NodeTreeInterfaceSocket_unregister(
Main * ,
StructRNA *type)
208static void rna_NodeTreeInterfaceSocket_draw_builtin(
ID *
id,
219static void rna_NodeTreeInterfaceSocket_draw_custom(
ID *
id,
226 if (typeinfo ==
nullptr) {
232 FunctionRNA *func = &rna_NodeTreeInterfaceSocket_draw_func;
243static void rna_NodeTreeInterfaceSocket_init_socket_builtin(
248 const char *data_path)
256static void rna_NodeTreeInterfaceSocket_init_socket_custom(
265 if (typeinfo ==
nullptr) {
272 FunctionRNA *func = &rna_NodeTreeInterfaceSocket_init_socket_func;
284static void rna_NodeTreeInterfaceSocket_from_socket_builtin(
293static void rna_NodeTreeInterfaceSocket_from_socket_custom(
301 if (typeinfo ==
nullptr) {
307 FunctionRNA *func = &rna_NodeTreeInterfaceSocket_from_socket_func;
318static StructRNA *rna_NodeTreeInterfaceSocket_register(
Main * ,
321 const char *identifier,
331 nullptr, &RNA_NodeTreeInterfaceSocket, &dummy_socket);
334 bool have_function[3];
335 if (validate(&dummy_socket_ptr,
data, have_function) != 0) {
347 st = MEM_new<blender::bke::bNodeSocketType>(__func__);
362 &
BLENDER_RNA, identifier, &RNA_NodeTreeInterfaceSocket);
389static void rna_NodeTreeInterfaceSocket_identifier_get(
PointerRNA *
ptr,
char *value)
395static int rna_NodeTreeInterfaceSocket_identifier_length(
PointerRNA *
ptr)
401static int rna_NodeTreeInterfaceSocket_socket_type_get(
PointerRNA *
ptr)
407static void rna_NodeTreeInterfaceSocket_socket_type_set(
PointerRNA *
ptr,
int value)
413 socket->set_socket_type(typeinfo->
idname);
430 if (socket_type != base_socket_type) {
442 if (is_socket_type_supported(ntree_type, socket_type)) {
449static bool rna_NodeTreeInterfaceSocket_socket_type_poll(
453 return is_socket_type_supported(ntreetype, socket_type);
456static const EnumPropertyItem *rna_NodeTreeInterfaceSocket_socket_type_itemf(
466 ntree->
typeinfo, rna_NodeTreeInterfaceSocket_socket_type_poll, r_free);
473static void rna_NodeTreeInterfaceSocket_force_non_field_set(
PointerRNA *
ptr,
const bool value)
489 const bool supports_fields = is_geometry_nodes &&
491 const bool supports_grids = is_geometry_nodes &&
493 const bool supports_lists = is_geometry_nodes && supports_fields;
509 if (supports_fields || supports_grids) {
515 if (supports_fields) {
521 if (supports_grids) {
527 if (
U.experimental.use_geometry_nodes_lists) {
528 if (supports_lists) {
540static const EnumPropertyItem *rna_NodeTreeInterfaceSocket_structure_type_itemf(
550static const EnumPropertyItem *rna_NodeTreeInterfaceSocket_default_input_itemf(
585static const EnumPropertyItem *rna_NodeTreeInterfaceSocket_attribute_domain_itemf(
607 ptr->owner_id, &RNA_NodeTreeInterfaceItem,
interface->active_item());
611static void rna_NodeTreeInterfaceItems_active_set(
PointerRNA *
ptr,
626 const char *description,
628 int socket_type_enum,
631 if (parent !=
nullptr && !
interface->find_item(parent->
item)) {
637 if (typeinfo ==
nullptr) {
643 if (!is_socket_type_supported(ntree->
typeinfo, typeinfo)) {
644 typeinfo = find_supported_socket_type(ntree->
typeinfo);
645 if (typeinfo ==
nullptr) {
653 name, description, socket_type,
flag, parent);
655 if (socket ==
nullptr) {
671 const char *description,
678 name ?
name :
"", description ? description :
"",
flag,
nullptr);
680 if (panel ==
nullptr) {
700 if (parent !=
nullptr) {
707 if (parent ==
nullptr) {
710 const int index = parent->items().as_span().first_index_try(item);
711 if (!parent->items().index_range().contains(index)) {
717 if (item_copy ==
nullptr) {
737 return rna_NodeTreeInterfaceItems_copy_to_parent(
id,
interface, bmain, reports, item, parent);
740static void rna_NodeTreeInterfaceItems_remove(
ID *
id,
744 bool move_content_to_parent)
746 interface->remove_item(*item, move_content_to_parent);
762static void rna_NodeTreeInterfaceItems_move(
ID *
id,
768 interface->move_item(*item, to_position);
775static void rna_NodeTreeInterfaceItems_move_to_parent(
ID *
id,
783 interface->move_item_to_parent(*item, parent, to_position);
804 if (subtypes.
contains(item->value)) {
809 if (items_count == 0) {
818static const EnumPropertyItem *rna_NodeTreeInterfaceSocketFloat_subtype_itemf(
834void rna_NodeTreeInterfaceSocketFloat_default_value_range(
843 if (dval->
max < dval->
min) {
849 *softmin = dval->
min;
850 *softmax = dval->
max;
861void rna_NodeTreeInterfaceSocketInt_default_value_range(
870 if (dval->
max < dval->
min) {
876 *softmin = dval->
min;
877 *softmax = dval->
max;
880static const EnumPropertyItem *rna_NodeTreeInterfaceSocketVector_subtype_itemf(
895void rna_NodeTreeInterfaceSocketVector_default_value_range(
901 if (dval->
max < dval->
min) {
907 *softmin = dval->
min;
908 *softmax = dval->
max;
911static const EnumPropertyItem *rna_NodeTreeInterfaceSocketString_subtype_itemf(
919static void rna_NodeTreeInterfaceSocketVector_dimensions_update(
Main *bmain,
934 socket->set_socket_type(socket_idname);
939 rna_NodeTreeInterfaceItem_update(bmain, scene,
ptr);
942static bool rna_NodeTreeInterfaceSocketMaterial_default_value_poll(
PointerRNA * ,
957 ntree->ensure_interface_cache();
962 ntree->interface_items().size(),
967static int rna_NodeTreeInterface_items_length(
PointerRNA *
ptr)
974 ntree->ensure_interface_cache();
975 return ntree->interface_items().size();
985 ntree->ensure_interface_cache();
986 if (!ntree->interface_items().index_range().contains(index)) {
991 *
ptr, &RNA_NodeTreeInterfaceItem, ntree->interface_items()[index], *r_ptr);
995static bool rna_NodeTreeInterface_items_lookup_string(
PointerRNA *
ptr,
1004 ntree->ensure_interface_cache();
1053 if (!
data->enum_items) {
1082 prop,
"rna_NodeTreeInterfaceItem_parent_get",
nullptr,
nullptr,
nullptr);
1098 prop,
"Index",
"Global index of the item among all items in the interface");
1108 srna =
RNA_def_struct(brna,
"NodeTreeInterfaceSocket",
"NodeTreeInterfaceItem");
1112 "rna_NodeTreeInterfaceSocket_register",
1113 "rna_NodeTreeInterfaceSocket_unregister",
1124 "rna_NodeTreeInterfaceSocket_identifier_get",
1125 "rna_NodeTreeInterfaceSocket_identifier_length",
1138 "rna_NodeTreeInterfaceSocket_socket_type_get",
1139 "rna_NodeTreeInterfaceSocket_socket_type_set",
1140 "rna_NodeTreeInterfaceSocket_socket_type_itemf");
1143 prop,
"Socket Type",
"Type of the socket generated by this interface item");
1156 prop,
"Hide Value",
"Hide the socket input value even when the socket is not connected");
1164 "Don't show the input value in the geometry nodes modifier interface");
1175 "Only allow single value inputs rather than field.\nDeprecated. Will be remove in 5.0.");
1182 "Is Inspect Output",
1183 "Take link out of node group to connect to root tree output node");
1191 "This socket is meant to be used as the toggle in its panel header");
1198 prop,
"Layer Selection",
"Take Grease Pencil Layer or Layer Group as selection field");
1205 prop,
"Menu Expanded",
"Draw the menu socket as an expanded drop-down menu");
1214 "Indicate that the label of this socket is not necessary to understand its meaning. This "
1215 "may result in the label being skipped in some cases");
1221 prop,
nullptr,
nullptr,
"rna_NodeTreeInterfaceSocket_attribute_domain_itemf");
1225 "Attribute domain used by the geometry nodes modifier to create an attribute output");
1231 "Default Attribute",
1232 "The attribute name used by default when the node group is used by a "
1233 "geometry nodes modifier");
1241 "What kind of higher order types are expected to flow through this socket");
1243 prop,
nullptr,
nullptr,
"rna_NodeTreeInterfaceSocket_structure_type_itemf");
1251 "Input to use when the socket is unconnected. Requires \"Hide Value\".");
1253 prop,
nullptr,
nullptr,
"rna_NodeTreeInterfaceSocket_default_input_itemf");
1276 parm =
RNA_def_pointer(func,
"node",
"Node",
"Node",
"Node of the socket to initialize");
1278 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"Socket",
"Socket to initialize");
1281 func,
"data_path",
nullptr, 0,
"Data Path",
"Path to specialized socket data");
1287 parm =
RNA_def_pointer(func,
"node",
"Node",
"Node",
"Node of the original socket");
1289 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"Socket",
"Original socket");
1298 srna =
RNA_def_struct(brna,
"NodeTreeInterfacePanel",
"NodeTreeInterfaceItem");
1327 prop,
"Persistent Identifier",
"Unique identifier for this panel within this node tree");
1347 "rna_NodeTreeInterfaceItems_active_get",
1348 "rna_NodeTreeInterfaceItems_active_set",
1354 func =
RNA_def_function(srna,
"new_socket",
"rna_NodeTreeInterfaceItems_new_socket");
1357 parm =
RNA_def_string(func,
"name",
nullptr, 0,
"Name",
"Name of the socket");
1359 RNA_def_string(func,
"description",
nullptr, 0,
"Description",
"Description of the socket");
1364 "Input/Output Type",
1365 "Create an input or output socket");
1371 "Type of socket generated on nodes");
1374 parm,
nullptr,
nullptr,
"rna_NodeTreeInterfaceSocket_socket_type_itemf");
1376 func,
"parent",
"NodeTreeInterfacePanel",
"Parent",
"Panel to add the socket in");
1378 parm =
RNA_def_pointer(func,
"item",
"NodeTreeInterfaceSocket",
"Socket",
"New socket");
1381 func =
RNA_def_function(srna,
"new_panel",
"rna_NodeTreeInterfaceItems_new_panel");
1384 parm =
RNA_def_string(func,
"name",
nullptr, 0,
"Name",
"Name of the new panel");
1385 RNA_def_string(func,
"description",
nullptr, 0,
"Description",
"Description of the panel");
1387 func,
"default_closed",
false,
"Default Closed",
"Panel is closed by default on new nodes");
1390 parm =
RNA_def_pointer(func,
"item",
"NodeTreeInterfacePanel",
"Panel",
"New panel");
1396 parm =
RNA_def_pointer(func,
"item",
"NodeTreeInterfaceItem",
"Item",
"Item to copy");
1400 func,
"item_copy",
"NodeTreeInterfaceItem",
"Item Copy",
"Copy of the item");
1403 func =
RNA_def_function(srna,
"remove",
"rna_NodeTreeInterfaceItems_remove");
1406 parm =
RNA_def_pointer(func,
"item",
"NodeTreeInterfaceItem",
"Item",
"The item to remove");
1410 "move_content_to_parent",
1413 "If the item is a panel, move the contents to the parent instead of deleting it");
1415 func =
RNA_def_function(srna,
"clear",
"rna_NodeTreeInterfaceItems_clear");
1422 parm =
RNA_def_pointer(func,
"item",
"NodeTreeInterfaceItem",
"Item",
"The item to move");
1430 "Target position for the item in its current panel",
1435 func =
RNA_def_function(srna,
"move_to_parent",
"rna_NodeTreeInterfaceItems_move_to_parent");
1438 parm =
RNA_def_pointer(func,
"item",
"NodeTreeInterfaceItem",
"Item",
"The item to move");
1441 func,
"parent",
"NodeTreeInterfacePanel",
"Parent",
"New parent of the item");
1449 "Target position for the item in the new parent panel",
1462 srna,
"Node Tree Interface",
"Declaration of sockets and ui panels of a node group");
1467 "rna_NodeTreeInterface_items_begin",
1468 "rna_iterator_array_next",
1469 "rna_iterator_array_end",
1470 "rna_iterator_array_dereference_get",
1471 "rna_NodeTreeInterface_items_length",
1472 "rna_NodeTreeInterface_items_lookup_int",
1473 "rna_NodeTreeInterface_items_lookup_string",
void BKE_main_ensure_invariants(Main &bmain, std::optional< blender::Span< ID * > > modified_ids=std::nullopt)
@ RPT_ERROR_INVALID_INPUT
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BLI_kdtree_nd_ free(KDTree *tree)
#define SET_FLAG_FROM_TEST(value, test, flag)
NodeTreeInterfaceItemType
NodeTreeInterfacePanelFlag
@ NODE_INTERFACE_PANEL_DEFAULT_CLOSED
NodeTreeInterfaceSocketFlag
@ NODE_INTERFACE_SOCKET_SINGLE_VALUE_ONLY_LEGACY
@ NODE_INTERFACE_SOCKET_OUTPUT
@ NODE_INTERFACE_SOCKET_HIDE_IN_MODIFIER
@ NODE_INTERFACE_SOCKET_PANEL_TOGGLE
@ NODE_INTERFACE_SOCKET_INPUT
@ NODE_INTERFACE_SOCKET_INSPECT
@ NODE_INTERFACE_SOCKET_OPTIONAL_LABEL
@ NODE_INTERFACE_SOCKET_LAYER_SELECTION
@ NODE_INTERFACE_SOCKET_MENU_EXPANDED
@ NODE_INTERFACE_SOCKET_HIDE_VALUE
@ NODE_DEFAULT_INPUT_POSITION_FIELD
@ NODE_DEFAULT_INPUT_HANDLE_RIGHT_FIELD
@ NODE_DEFAULT_INPUT_HANDLE_LEFT_FIELD
@ NODE_DEFAULT_INPUT_ID_INDEX_FIELD
@ NODE_DEFAULT_INPUT_INSTANCE_TRANSFORM_FIELD
@ NODE_DEFAULT_INPUT_VALUE
@ NODE_DEFAULT_INPUT_INDEX_FIELD
@ NODE_DEFAULT_INPUT_NORMAL_FIELD
NodeSocketInterfaceStructureType
@ NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_GRID
@ NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_SINGLE
@ NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_LIST
@ NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_FIELD
@ NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_DYNAMIC
@ NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_AUTO
const EnumPropertyItem * rna_NodeSocket_structure_type_item_filter(const bNodeTree *ntree, const eNodeSocketDatatype socket_type, bool *r_free)
const EnumPropertyItem * RNA_node_enum_definition_itemf(const blender::bke::RuntimeNodeEnumItems &enum_items, bool *r_free)
int rna_node_socket_idname_to_enum(const char *idname)
blender::bke::bNodeSocketType * rna_node_socket_type_from_enum(int value)
const EnumPropertyItem * rna_node_socket_type_itemf(void *data, bool(*poll)(void *data, blender::bke::bNodeSocketType *), bool *r_free)
int(*)(PointerRNA *ptr, void *data, bool *have_function) StructValidateFunc
int(*)(bContext *C, PointerRNA *ptr, FunctionRNA *func, ParameterList *list) StructCallbackFunc
void(*)(void *data) StructFreeFunc
@ PROPOVERRIDE_NO_COMPARISON
BMesh const char void * data
bool contains(const Key &key) const
T & get_item_as(bNodeTreeInterfaceItem &item)
Span< bNodeSocketType * > node_socket_types_get()
void node_register_socket_type(bNodeSocketType &stype)
bNodeSocketType * node_socket_type_find(StringRef idname)
bNodeSocketType * node_socket_type_find_static(int type, int subtype=0)
std::optional< StringRefNull > node_static_socket_type(int type, int subtype, std::optional< int > dimensions=std::nullopt)
bool socket_type_supports_default_input_type(const bke::bNodeSocketType &socket_type, const NodeDefaultInputType input_type)
bool socket_type_supports_fields(const eNodeSocketDatatype socket_type)
bool socket_type_supports_grids(const eNodeSocketDatatype socket_type)
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type)
void * RNA_struct_blender_type_get(StructRNA *srna)
void RNA_parameter_list_free(ParameterList *parms)
void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value)
void rna_iterator_array_begin(CollectionPropertyIterator *iter, PointerRNA *ptr, void *data, size_t itemsize, int64_t length, bool free_ptr, IteratorSkipFunc skip)
void rna_pointer_create_with_ancestors(const PointerRNA &parent, StructRNA *type, void *data, PointerRNA &r_ptr)
ParameterList * RNA_parameter_list_create(ParameterList *parms, PointerRNA *, FunctionRNA *func)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
const EnumPropertyItem rna_enum_attribute_domain_items[]
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_struct_name_property(StructRNA *srna, PropertyRNA *prop)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
void RNA_def_struct_system_idprops_func(StructRNA *srna, const char *system_idproperties)
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *assignint)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg, const char *instance)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_property_collection_sdna(PropertyRNA *prop, const char *structname, const char *propname, const char *lengthpropname)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
StructRNA * RNA_def_struct_ptr(BlenderRNA *brna, const char *identifier, StructRNA *srnafrom)
void RNA_def_property_enum_bitflag_sdna(PropertyRNA *prop, const char *structname, const char *propname)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_def_function_flag(FunctionRNA *func, int flag)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_struct_free_extension(StructRNA *srna, ExtensionRNA *rna_ext)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_struct_free(BlenderRNA *brna, StructRNA *srna)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void rna_def_node_socket_interface_subtypes(BlenderRNA *brna)
static void rna_def_node_tree_interface_items_api(StructRNA *srna)
const EnumPropertyItem rna_enum_node_socket_structure_type_items[]
static const EnumPropertyItem node_tree_interface_socket_in_out_items[]
static const EnumPropertyItem node_default_input_items[]
const EnumPropertyItem rna_enum_node_tree_interface_item_type_items[]
static void rna_def_node_interface_item(BlenderRNA *brna)
void RNA_def_node_tree_interface(BlenderRNA *brna)
static void rna_def_node_interface_socket(BlenderRNA *brna)
static void rna_def_node_interface_panel(BlenderRNA *brna)
static void rna_def_node_tree_interface(BlenderRNA *brna)
const EnumPropertyItem rna_enum_dummy_NULL_items[]
const EnumPropertyItem rna_enum_property_subtype_items[]
const EnumPropertyItem rna_enum_dummy_DEFAULT_items[]
struct MaterialGPencilStyle * gp_style
bNodeTreeInterfaceItem item
struct IDProperty * properties
bNodeTreeInterfaceItem item
bNodeTreeRuntimeHandle * runtime
bNodeTreeTypeHandle * typeinfo
bNodeTreeInterface tree_interface
ExtensionRNA ext_interface
void(* interface_init_socket)(ID *id, const bNodeTreeInterfaceSocket *interface_socket, bNode *node, bNodeSocket *socket, StringRefNull data_path)
void(* free_self)(bNodeSocketType *stype)
void(* interface_draw)(ID *id, bNodeTreeInterfaceSocket *socket, bContext *C, uiLayout *layout)
void(* interface_from_socket)(ID *id, bNodeTreeInterfaceSocket *interface_socket, const bNode *node, const bNodeSocket *socket)
bool(* valid_socket_type)(bNodeTreeType *ntreetype, bNodeSocketType *socket_type)
void WM_main_add_notifier(uint type, void *reference)