60#include "RNA_prototypes.hh"
205 length += strlen(path->display_name);
217 const char *value_orig = value;
221 const int len = strlen(path->display_name);
225 memcpy(value, path->display_name,
len);
265 if (path && path->
prev) {
272 const bNode &query_node)
277 snode, compute_context_cache, query_node);
278 if (!compute_context) {
289 for (
const ComputeContext *context = compute_context; context !=
nullptr;
290 context = context->parent())
310 std::reverse(node_ids.
begin(), node_ids.
end());
312 const bNestedNodeRef *nested_node_ref = root_tree.nested_node_ref_from_node_id_path(node_ids);
313 if (nested_node_ref ==
nullptr) {
316 found.
id = nested_node_ref->
id;
325 if (snode.
id ==
nullptr) {
358 if (used_modifier ==
nullptr) {
369 if (!object_and_modifier) {
373 if (object_and_modifier->object != object_orig) {
384 if (!output_node_ptr) {
387 const bNode &output_node = *output_node_ptr;
395 parent_compute_context, output_node, storage.inspection_index);
401 parent_compute_context, output_node, storage.inspection_index);
409 parent_compute_context->
hash() :
412 output_node.output_socket(0),
413 compute_context_cache,
451 const char *group_node_name = tree_path[
i + 1]->node_name;
453 if (group_node ==
nullptr) {
457 if (tree_zones ==
nullptr) {
476 const std::optional<nodes::ClosureSourceLocation> &source_location)
480 struct SocketToCheck {
482 BundlePath bundle_path;
489 if (added_sockets.
add(socket)) {
490 sockets_to_check.
push({socket, std::move(bundle_path)});
495 add_if_new(start_socket, {});
497 while (!sockets_to_check.
is_empty()) {
498 const SocketToCheck socket_to_check = sockets_to_check.
pop();
500 const BundlePath &bundle_path = socket_to_check.bundle_path;
502 if (socket->is_input()) {
503 if (node->is_muted()) {
504 for (
const bNodeLink &link : node->internal_links()) {
505 if (link.fromsock == socket.
socket) {
506 add_if_new({socket.
context, link.tosock}, bundle_path);
511 if (node->is_type(
"GeometryNodeEvaluateClosure")) {
515 if (node->is_group()) {
517 group->ensure_topology_cache();
520 for (
const bNode *input_node : group->group_input_nodes()) {
521 const bNodeSocket &group_input_socket = input_node->output_socket(socket->index());
522 if (group_input_socket.is_directly_linked()) {
523 add_if_new({&group_compute_context, &group_input_socket}, bundle_path);
529 if (node->is_group_output()) {
533 const bNodeTree *caller_group = group_context->tree();
534 const bNode *caller_group_node = group_context->node();
535 if (caller_group && caller_group_node) {
536 caller_group->ensure_topology_cache();
537 const bNodeSocket &output_socket = caller_group_node->output_socket(socket->index());
538 add_if_new({group_context->parent(), &output_socket}, bundle_path);
543 if (node->is_type(
"GeometryNodeCombineBundle")) {
545 BundlePath new_bundle_path = bundle_path;
547 add_if_new(node.
output_socket(0), std::move(new_bundle_path));
550 if (node->is_type(
"GeometryNodeSeparateBundle")) {
551 if (bundle_path.is_empty()) {
556 for (
const int output_i :
IndexRange(storage.items_num)) {
559 add_if_new(node.
output_socket(output_i), bundle_path.as_span().drop_back(1));
571 for (
const bNodeLink *link : socket->directly_linked_links()) {
572 if (!link->is_used()) {
583 zones_to_enter, compute_context_cache, socket.
context);
584 if (!compute_context) {
587 add_if_new({compute_context, to_socket}, bundle_path);
599 std::optional<ed::space_node::ObjectAndModifier> object_and_modifier =
601 if (!object_and_modifier) {
604 return &compute_context_cache.
for_modifier(
nullptr, *object_and_modifier->nmd);
623 compute_context_cache);
629 return edittree_context;
722 region->
v2d.
min[0] = 1.0f;
723 region->
v2d.
min[1] = 1.0f;
725 region->
v2d.
max[0] = 32000.0f;
726 region->
v2d.
max[1] = 32000.0f;
750 if (snode->
runtime ==
nullptr) {
751 snode->
runtime = MEM_new<SpaceNode_Runtime>(__func__);
766 if (
ELEM(
nullptr, ntree,
id)) {
769 for (
const bNode *node : ntree->all_nodes()) {
770 if (node->id ==
id) {
967 snoden->
runtime = MEM_new<SpaceNode_Runtime>(__func__);
1064 if (snode ==
nullptr) {
1147 if (path.endswith(
".csv") || path.endswith(
".obj") || path.endswith(
".ply") ||
1148 path.endswith(
".stl") || path.endswith(
".txt") || path.endswith(
".vdb"))
1171 const bNodeTree *source_ntree = drag_data->tree;
1172 if (target_ntree != source_ntree) {
1189 if (panel && panel->header_toggle_socket()) {
1211 const bNodeTree *source_ntree = drag_data->tree;
1212 if (target_ntree != source_ntree) {
1222 if (panel->header_toggle_socket()) {
1278 socket = panel->header_toggle_socket();
1320 socket = panel->header_toggle_socket();
1329 return "Error: Unsupported socket.";
1351 "NODE_OT_add_object",
1357 "NODE_OT_add_collection",
1363 "NODE_OT_add_group",
1369 "NODE_OT_add_image",
1381 "NODE_OT_add_material",
1389 "NODE_OT_add_import_node",
1395 "NODE_OT_add_group_input_node",
1401 "NODE_OT_add_group_input_node",
1434 switch (wmn->
data) {
1452 switch (wmn->
data) {
1511 "selected_nodes",
"active_node",
"light",
"material",
"world",
nullptr};
1550 &RNA_NodeInstanceHash,
1595 if (snode->
id == old_id) {
1603 snode->
from =
nullptr;
1608 if (snode->
from == old_id) {
1609 if (new_id ==
nullptr) {
1612 snode->
from = new_id;
1616 if ((
ID *)snode->
gpd == old_id) {
1647 for (; path; path = path_next) {
1648 path_next = path->
next;
1682 mappings.
iter([&](
ID *old_id,
ID *new_id) {
1693 bool is_embedded_nodetree = snode->
id !=
nullptr && allow_pointer_access &&
1702 if (is_embedded_nodetree) {
1704 if (path !=
nullptr) {
1713 if (path !=
nullptr) {
1721 if (path !=
nullptr) {
1739 if (!is_readonly && snode->
id && !snode->
nodetree) {
1740 is_embedded_nodetree =
true;
1742 if (path !=
nullptr) {
1747 if (path !=
nullptr) {
1748 for (path = path->
next; path !=
nullptr; path = path->
next) {
1750 if (allow_pointer_access) {
1761 path_next = path->
next;
1820 if (tree_type ==
nullptr) {
1821 return IFACE_(
"Node Editor");
1830 if (tree_type ==
nullptr) {
1831 return ICON_NODETREE;
1866 std::unique_ptr<SpaceType> st = std::make_unique<SpaceType>();
1892 st->blend_read_after_liblink =
nullptr;
Main runtime representation of an asset.
IDProperty * BKE_asset_metadata_idprop_find(const AssetMetaData *asset_data, const char *name) ATTR_WARN_UNUSED_RESULT
void CTX_data_dir_set(bContextDataResult *result, const char **dir)
bool CTX_data_equals(const char *member, const char *str)
void CTX_data_pointer_set(bContextDataResult *result, ID *id, StructRNA *type, void *data)
bool CTX_data_dir(const char *member)
void CTX_data_id_pointer_set(bContextDataResult *result, ID *id)
SpaceNode * CTX_wm_space_node(const bContext *C)
@ CTX_RESULT_MEMBER_NOT_FOUND
void CTX_data_list_add(bContextDataResult *result, ID *id, StructRNA *type, void *data)
@ CTX_DATA_TYPE_COLLECTION
void CTX_data_type_set(bContextDataResult *result, short type)
void BKE_gpencil_blend_read_data(struct BlendDataReader *reader, struct bGPdata *gpd)
void id_us_ensure_real(ID *id)
#define BKE_LIB_FOREACHID_PROCESS_IDSUPER(data_, id_super_, cb_flag_)
@ IDWALK_CB_EMBEDDED_NOT_OWNING
@ IDWALK_CB_DIRECT_WEAK_LINK
#define BKE_LIB_FOREACHID_PROCESS_ID(data_, id_, cb_flag_)
LibraryForeachIDFlag BKE_lib_query_foreachid_process_flags_get(const LibraryForeachIDData *data)
@ IDWALK_NO_ORIG_POINTERS_ACCESS
#define GEO_NODE_CLOSURE_OUTPUT
#define GEO_NODE_FOREACH_GEOMETRY_ELEMENT_OUTPUT
#define GEO_NODE_SIMULATION_OUTPUT
#define GEO_NODE_REPEAT_OUTPUT
void BKE_spacetype_register(std::unique_ptr< SpaceType > st)
ARegion * BKE_area_region_new()
ARegion * BKE_area_find_region_type(const ScrArea *area, int region_type)
#define BLI_assert_unreachable()
void BLI_kdtree_nd_ free(KDTree *tree)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH_INDEX(type, var, list, index_var)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_addhead(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void void void void void BLI_duplicatelist(ListBase *dst, const ListBase *src) ATTR_NONNULL(1
MINLINE void copy_v2_v2(float r[2], const float a[2])
char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
char * STRNCPY(char(&dst)[N], const char *src)
#define BLO_write_struct(writer, struct_name, data_ptr)
#define BLO_read_struct_list(reader, struct_name, list)
#define BLO_read_struct(reader, struct_name, ptr_p)
void DEG_id_tag_update(ID *id, unsigned int flags)
bool DEG_is_original(const T *id)
T * DEG_get_original(T *id)
ID and Library types, which are fundamental for SDNA.
Object is a sort of wrapper for general info.
@ SN_OVERLAY_SHOW_PREVIEWS
@ SN_OVERLAY_SHOW_WIRE_COLORS
@ SN_OVERLAY_SHOW_OVERLAYS
SpaceNodeGeometryNodesType
@ SNODE_GEOMETRY_MODIFIER
void ED_node_set_tree_type(SpaceNode *snode, blender::bke::bNodeTreeType *typeinfo)
bool ED_node_is_compositor(const SpaceNode *snode)
void ED_node_set_active_viewer_key(SpaceNode *snode)
bool ED_node_is_shader(SpaceNode *snode)
void ED_node_composite_job(const bContext *C, bNodeTree *nodetree, Scene *scene_owner)
bool ED_node_is_geometry(SpaceNode *snode)
bool ED_node_is_texture(SpaceNode *snode)
void ED_area_tag_redraw(ScrArea *area)
void ED_area_do_mgs_subscribe_for_tool_ui(const wmRegionMessageSubscribeParams *params)
void ED_region_panels(const bContext *C, ARegion *region)
void ED_region_header(const bContext *C, ARegion *region)
void ED_region_header_init(ARegion *region)
int ED_region_generic_tools_region_snap_size(const ARegion *region, int size, int axis)
void ED_area_tag_refresh(ScrArea *area)
void ED_region_generic_tools_region_message_subscribe(const wmRegionMessageSubscribeParams *params)
void ED_region_panels_init(wmWindowManager *wm, ARegion *region)
void ED_region_tag_redraw(ARegion *region)
Read Guarded memory(de)allocation.
blender::bke::bNodeTreeType * rna_node_tree_type_from_enum(int value)
int rna_node_tree_idname_to_enum(const char *idname)
const EnumPropertyItem * RNA_enum_node_tree_types_itemf_impl(bContext *C, bool *r_free)
#define UI_SIDEBAR_PANEL_WIDTH
bool UI_but_active_drop_name(const bContext *C)
void UI_drop_color_copy(bContext *C, wmDrag *drag, wmDropBox *drop)
bool UI_but_active_drop_color(bContext *C)
void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
void UI_view2d_region_to_view(const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
void UI_view2d_center_set(View2D *v2d, float x, float y)
#define ND_GPENCIL_EDITMODE
#define ND_SPACE_NODE_VIEW
@ WM_DRAG_NODE_TREE_INTERFACE
BMesh const char void * data
const ComputeContextHash & hash() const
constexpr IndexRange drop_back(int64_t n) const
void push(const T &value)
void append(const T &value)
IndexRange index_range() const
AssetMetaData & get_metadata() const
const EvaluateClosureComputeContext & for_evaluate_closure(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr, const std::optional< nodes::ClosureSourceLocation > &closure_source_location=std::nullopt)
const ModifierComputeContext & for_modifier(const ComputeContext *parent, const NodesModifierData &nmd)
const GroupNodeComputeContext & for_group_node(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr)
const ForeachGeometryElementZoneComputeContext & for_foreach_geometry_element_zone(const ComputeContext *parent, int32_t output_node_id, int index)
const RepeatZoneComputeContext & for_repeat_zone(const ComputeContext *parent, int32_t output_node_id, int iteration)
const OperatorComputeContext & for_operator(const ComputeContext *parent)
const SimulationZoneComputeContext & for_simulation_zone(const ComputeContext *parent, int output_node_id)
const bNode * output_node() const
Vector< const bNodeTreeZone * > get_zones_to_enter_from_root(const bNodeTreeZone *zone) const
Vector< const bNodeTreeZone * > get_zones_to_enter(const bNodeTreeZone *outer_zone, const bNodeTreeZone *inner_zone) const
bool link_between_zones_is_allowed(const bNodeTreeZone *from_zone, const bNodeTreeZone *to_zone) const
const bNodeTreeZone * get_zone_by_node(const int32_t node_id) const
const bNodeTreeZone * get_zone_by_socket(const bNodeSocket &socket) const
void iter(FunctionRef< void(ID *old_id, ID *new_id)> func) const
bool matches(const SocketInterfaceKey &other) const
float length(VecOp< float, D >) RET
void * MEM_callocN(size_t len, const char *str)
void * MEM_dupallocN(const void *vmemh)
void MEM_freeN(void *vmemh)
T & get_item_as(bNodeTreeInterfaceItem &item)
bNode * node_find_node_by_name(bNodeTree &ntree, StringRefNull name)
bNodeTreeType * node_tree_type_find(StringRef idname)
bNode * node_get_active(bNodeTree &ntree)
const bNodeInstanceKey NODE_INSTANCE_KEY_BASE
bNodeInstanceKey node_instance_key(bNodeInstanceKey parent_key, const bNodeTree *ntree, const bNode *node)
Span< bNodeTreeType * > node_tree_types_get()
bNodeTree * node_tree_from_id(ID *id)
void paths_to_operator_properties(PointerRNA *ptr, const Span< std::string > paths)
static const ComputeContext * get_node_editor_root_compute_context(const SpaceNode &snode, bke::ComputeContextCache &compute_context_cache)
const ComputeContext * compute_context_for_edittree_socket(const SpaceNode &snode, bke::ComputeContextCache &compute_context_cache, const bNodeSocket &socket)
static void node_header_region_init(wmWindowManager *, ARegion *region)
static void node_widgets()
static void node_space_subtype_item_extend(bContext *C, EnumPropertyItem **item, int *totitem)
static std::string node_panel_drop_tooltip(bContext *, wmDrag *drag, const int[2], wmDropBox *)
static const ComputeContext * compute_context_for_zones(const Span< const bke::bNodeTreeZone * > zones, bke::ComputeContextCache &compute_context_cache, const ComputeContext *parent_compute_context)
static bool node_import_file_drop_poll(bContext *C, wmDrag *drag, const wmEvent *)
static int node_space_icon_get(const ScrArea *area)
static void node_toolbar_region_draw(const bContext *C, ARegion *region)
static void node_space_blend_read_data(BlendDataReader *reader, SpaceLink *sl)
static void node_group_drop_copy(bContext *C, wmDrag *drag, wmDropBox *drop)
static bool node_panel_drop_poll(bContext *C, wmDrag *drag, const wmEvent *event)
static void node_header_region_draw(const bContext *C, ARegion *region)
MenuType add_catalog_assets_menu_type()
static void node_foreach_id(SpaceLink *space_link, LibraryForeachIDData *data)
void free_previews(wmWindowManager &wm, SpaceNode &snode)
static SpaceLink * node_duplicate(SpaceLink *sl)
MenuType add_unassigned_assets_menu_type()
static void node_main_region_init(wmWindowManager *wm, ARegion *region)
static void node_id_remap(ID *old_id, ID *new_id, SpaceNode *snode)
void node_set_cursor(wmWindow &win, ARegion ®ion, SpaceNode &snode, const float2 &cursor)
static void node_import_file_drop_copy(bContext *, wmDrag *drag, wmDropBox *drop)
std::optional< nodes::FoundNestedNodeID > find_nested_node_id_in_root(const SpaceNode &snode, const bNode &node)
static void node_area_refresh(const bContext *C, ScrArea *area)
void NODE_GGT_backdrop_split(wmGizmoGroupType *gzgt)
static void node_panel_drop_copy(bContext *, wmDrag *drag, wmDropBox *drop)
static bool node_material_drop_poll(bContext *C, wmDrag *drag, const wmEvent *)
static std::optional< const ComputeContext * > compute_context_for_tree_path(const SpaceNode &snode, bke::ComputeContextCache &compute_context_cache, const ComputeContext *parent_compute_context)
void NODE_GGT_backdrop_corner_pin(wmGizmoGroupType *gzgt)
MenuType add_root_catalogs_menu_type()
const ComputeContext * compute_context_for_edittree(const SpaceNode &snode, bke::ComputeContextCache &compute_context_cache)
static bool node_color_drop_poll(bContext *C, wmDrag *drag, const wmEvent *)
static bool node_mask_drop_poll(bContext *, wmDrag *drag, const wmEvent *)
static int node_space_subtype_get(ScrArea *area)
void NODE_GGT_backdrop_crop(wmGizmoGroupType *gzgt)
static bool node_group_drop_poll(bContext *C, wmDrag *drag, const wmEvent *)
static void node_init(wmWindowManager *, ScrArea *area)
const ComputeContext * compute_context_for_zone(const bke::bNodeTreeZone &zone, bke::ComputeContextCache &compute_context_cache, const ComputeContext *parent_compute_context)
static void node_region_listener(const wmRegionListenerParams *params)
static bool node_id_im_drop_poll(bContext *, wmDrag *drag, const wmEvent *)
float2 space_node_group_offset(const SpaceNode &snode)
void NODE_GGT_backdrop_box_mask(wmGizmoGroupType *gzgt)
static void node_free(SpaceLink *sl)
static bool node_collection_drop_poll(bContext *C, wmDrag *drag, const wmEvent *)
std::optional< ObjectAndModifier > get_modifier_for_node_editor(const SpaceNode &snode)
static blender::StringRefNull node_space_name_get(const ScrArea *area)
void node_operatortypes()
static void node_dropboxes()
void NODE_GGT_backdrop_transform(wmGizmoGroupType *gzgt)
void snode_set_context(const bContext &C)
void NODE_GGT_backdrop_sun_beams(wmGizmoGroupType *gzgt)
static void node_area_listener(const wmSpaceTypeListenerParams *params)
static void node_id_im_drop_copy(bContext *C, wmDrag *drag, wmDropBox *drop)
void node_keymap(wmKeyConfig *keyconf)
static std::string node_socket_drop_tooltip(bContext *, wmDrag *drag, const int[2], wmDropBox *)
void NODE_GGT_backdrop_ellipse_mask(wmGizmoGroupType *gzgt)
static int node_context(const bContext *C, const char *member, bContextDataResult *result)
static bool node_object_drop_poll(bContext *C, wmDrag *drag, const wmEvent *)
void node_draw_space(const bContext &C, ARegion ®ion)
static void node_cursor(wmWindow *win, ScrArea *area, ARegion *region)
static void node_buttons_region_draw(const bContext *C, ARegion *region)
static void node_socket_drop_copy(bContext *, wmDrag *drag, wmDropBox *drop)
static void node_id_drop_copy(bContext *C, wmDrag *drag, wmDropBox *drop)
bool node_editor_is_for_geometry_nodes_modifier(const SpaceNode &snode, const Object &object, const NodesModifierData &nmd)
static void node_toolbar_region_init(wmWindowManager *wm, ARegion *region)
static void node_exit(wmWindowManager *wm, ScrArea *area)
const ComputeContext * compute_context_for_edittree_node(const SpaceNode &snode, bke::ComputeContextCache &compute_context_cache, const bNode &node)
static void node_main_region_draw(const bContext *C, ARegion *region)
static bool any_node_uses_id(const bNodeTree *ntree, const ID *id)
const ComputeContext * compute_context_for_closure_evaluation(const ComputeContext *closure_socket_context, const bNodeSocket &closure_socket, bke::ComputeContextCache &compute_context_cache, const std::optional< nodes::ClosureSourceLocation > &source_location)
static void node_buttons_region_init(wmWindowManager *wm, ARegion *region)
static void node_space_blend_write(BlendWriter *writer, SpaceLink *sl)
static void node_area_tag_tree_recalc(SpaceNode *snode, ScrArea *area)
static bool node_socket_drop_poll(bContext *C, wmDrag *drag, const wmEvent *event)
static SpaceLink * node_create(const ScrArea *, const Scene *)
static void node_space_subtype_set(ScrArea *area, int value)
VecBase< float, 2 > float2
const char * node_context_dir[]
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
void RNA_struct_property_unset(PointerRNA *ptr, const char *identifier)
void RNA_property_unset(PointerRNA *ptr, PropertyRNA *prop)
void RNA_enum_items_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
bNodeTree * ED_node_tree_get(SpaceNode *snode, int level)
void ED_node_tree_start(ARegion *region, SpaceNode *snode, bNodeTree *ntree, ID *id, ID *from)
void ED_node_cursor_location_set(SpaceNode *snode, const float value[2])
void ED_node_tree_pop(ARegion *region, SpaceNode *snode)
void ED_node_tree_path_get(SpaceNode *snode, char *value)
void ED_node_tree_push(ARegion *region, SpaceNode *snode, bNodeTree *ntree, bNode *gnode)
int ED_node_tree_depth(SpaceNode *snode)
void ED_node_set_active_viewer_key(SpaceNode *snode)
int ED_node_tree_path_length(SpaceNode *snode)
void ED_node_cursor_location_get(const SpaceNode *snode, float value[2])
bool clip_gizmo_events_by_ui
void(* message_subscribe)(const wmRegionMessageSubscribeParams *params)
void(* cursor)(wmWindow *win, ScrArea *area, ARegion *region)
void(* listener)(const wmRegionListenerParams *params)
void(* draw)(const bContext *C, ARegion *region)
int(* snap_size)(const ARegion *region, int size, int axis)
void(* init)(wmWindowManager *wm, ARegion *region)
ARegionRuntimeHandle * runtime
struct bNodeTree * node_group
SpaceNode_Runtime * runtime
struct bNodeTree * edittree
struct bNodeTree * geometry_nodes_tool_tree
struct bNodeTree * nodetree
struct bNodeTree * nodetree
struct bNodeTreePath * next
struct bNodeTreePath * prev
bNodeInstanceKey parent_key
bNodeTreeRuntimeHandle * runtime
bNodeInstanceKey active_viewer_key
bool recalc_regular_compositing
ComputeContextHash compute_context_hash
int closure_output_node_id
SocketInContext output_socket(int index) const
const ComputeContext * context
NodeInContext owner_node() const
const bNodeSocket * socket
const AssetRepresentationHandle * asset
wmEventModifierFlag modifier
struct wmEvent * eventstate
wmDropBox * WM_dropbox_add(ListBase *lb, const char *idname, bool(*poll)(bContext *C, wmDrag *drag, const wmEvent *event), void(*copy)(bContext *C, wmDrag *drag, wmDropBox *drop), void(*cancel)(Main *bmain, wmDrag *drag, wmDropBox *drop), WMDropboxTooltipFunc tooltip)
void WM_drag_free_imported_drag_ID(Main *bmain, wmDrag *drag, wmDropBox *drop)
blender::Span< std::string > WM_drag_get_paths(const wmDrag *drag)
bool WM_drag_is_ID_type(const wmDrag *drag, int idcode)
ID * WM_drag_get_local_ID_or_import_from_asset(const bContext *C, const wmDrag *drag, int idcode)
ListBase * WM_dropboxmap_find(const char *idname, int spaceid, int regionid)
wmDragAsset * WM_drag_get_asset_data(const wmDrag *drag, int idcode)
ID * WM_drag_get_local_ID(const wmDrag *drag, short idcode)
wmEventHandler_Dropbox * WM_event_add_dropbox_handler(ListBase *handlers, ListBase *dropboxes)
wmEventHandler_Keymap * WM_event_add_keymap_handler(ListBase *handlers, wmKeyMap *keymap)
void WM_main_add_notifier(uint type, void *reference)
wmEventHandler_Keymap * WM_event_add_keymap_handler_v2d_mask(ListBase *handlers, wmKeyMap *keymap)
wmGizmoGroupTypeRef * WM_gizmogrouptype_append_and_link(wmGizmoMapType *gzmap_type, void(*wtfunc)(wmGizmoGroupType *))
void WM_gizmomap_tag_refresh(wmGizmoMap *gzmap)
wmGizmoMapType * WM_gizmomaptype_ensure(const wmGizmoMapType_Params *gzmap_params)
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)