Blender V4.3
node_relationships.cc File Reference
#include "MEM_guardedalloc.h"
#include "DNA_node_types.h"
#include "BLI_easing.h"
#include "BLI_math_geom.h"
#include "BLI_stack.hh"
#include "BKE_context.hh"
#include "BKE_node.hh"
#include "BKE_node_runtime.hh"
#include "BKE_node_tree_update.hh"
#include "ED_node.hh"
#include "ED_render.hh"
#include "ED_screen.hh"
#include "ED_space_api.hh"
#include "ED_viewer_path.hh"
#include "RNA_access.hh"
#include "RNA_define.hh"
#include "RNA_prototypes.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "UI_interface_icons.hh"
#include "UI_resources.hh"
#include "UI_view2d.hh"
#include "BLT_translation.hh"
#include "NOD_node_declaration.hh"
#include "NOD_socket.hh"
#include "NOD_socket_declarations_geometry.hh"
#include "node_intern.hh"

Go to the source code of this file.

Classes

struct  NodeInsertOfsData
 
struct  blender::ed::space_node::LinkAndPosition
 
struct  blender::ed::space_node::NodeJoinState
 
struct  blender::ed::space_node::NodeDetachstate
 

Namespaces

namespace  blender
 
namespace  blender::ed
 
namespace  blender::ed::space_node
 
namespace  blender::ed::space_node::viewer_linking
 

Functions

static void blender::ed::space_node::clear_picking_highlight (ListBase *links)
 
Add Node
static bNodeLink blender::ed::space_node::create_drag_link (bNode &node, bNodeSocket &socket)
 
static void blender::ed::space_node::pick_link (bNodeLinkDrag &nldrag, SpaceNode &snode, bNode *node, bNodeLink &link_to_pick)
 
static void blender::ed::space_node::pick_input_link_by_link_intersect (const bContext &C, wmOperator &op, bNodeLinkDrag &nldrag, const float2 &cursor)
 
static bool blender::ed::space_node::socket_is_available (bNodeTree *, bNodeSocket *sock, const bool allow_used)
 
static bNodeSocketblender::ed::space_node::best_socket_output (bNodeTree *ntree, bNode *node, bNodeSocket *sock_target, const bool allow_multiple)
 
static bNodeSocketblender::ed::space_node::best_socket_input (bNodeTree *ntree, bNode *node, int num, int replace)
 
static bool blender::ed::space_node::snode_autoconnect_input (SpaceNode &snode, bNode *node_fr, bNodeSocket *sock_fr, bNode *node_to, bNodeSocket *sock_to, int replace)
 
static void blender::ed::space_node::sort_multi_input_socket_links_with_drag (bNodeSocket &socket, bNodeLink &drag_link, const float2 &cursor)
 
void blender::ed::space_node::update_multi_input_indices_for_removed_links (bNode &node)
 
static void blender::ed::space_node::snode_autoconnect (SpaceNode &snode, const bool allow_multiple, const bool replace)
 
Link Viewer Operator
static bool blender::ed::space_node::viewer_linking::socket_can_be_viewed (const bNode &node, const bNodeSocket &socket)
 
static bNodeSocketblender::ed::space_node::viewer_linking::node_link_viewer_get_socket (bNodeTree &ntree, bNode &viewer_node, bNodeSocket &src_socket)
 
static bool blender::ed::space_node::viewer_linking::is_viewer_node (const bNode &node)
 
static bool blender::ed::space_node::viewer_linking::is_viewer_socket_in_viewer (const bNodeSocket &socket)
 
static bool blender::ed::space_node::viewer_linking::is_viewer_socket (const bNodeSocket &socket)
 
static int blender::ed::space_node::viewer_linking::get_default_viewer_type (const bContext *C)
 
static void blender::ed::space_node::viewer_linking::remove_links_to_unavailable_viewer_sockets (bNodeTree &btree, bNode &viewer_node)
 
static bNodeSocketblender::ed::space_node::viewer_linking::determine_socket_to_view (bNode &node_to_view)
 
static void blender::ed::space_node::viewer_linking::finalize_viewer_link (const bContext &C, SpaceNode &snode, bNode &viewer_node, bNodeLink &viewer_link)
 
static const bNodeblender::ed::space_node::viewer_linking::find_overlapping_node (const bNodeTree &tree, const rctf &rect, const Span< const bNode * > ignored_nodes)
 
static Vector< float2blender::ed::space_node::viewer_linking::get_viewer_node_position_candidates (const float2 initial, const float step_distance, const float max_distance)
 
static void blender::ed::space_node::viewer_linking::position_viewer_node (bNodeTree &tree, bNode &viewer_node, const bNode &node_to_view, const ARegion &region)
 
static int blender::ed::space_node::viewer_linking::view_socket (const bContext &C, SpaceNode &snode, bNodeTree &btree, bNode &bnode_to_view, bNodeSocket &bsocket_to_view)
 
static int blender::ed::space_node::viewer_linking::node_link_viewer (const bContext &C, bNode &bnode_to_view, bNodeSocket *bsocket_to_view)
 
Link to Viewer Node Operator
static int blender::ed::space_node::node_active_link_viewer_exec (bContext *C, wmOperator *)
 
static bool blender::ed::space_node::node_active_link_viewer_poll (bContext *C)
 
void blender::ed::space_node::NODE_OT_link_viewer (wmOperatorType *ot)
 
Make Link Operator
static int blender::ed::space_node::node_make_link_exec (bContext *C, wmOperator *op)
 
void blender::ed::space_node::NODE_OT_link_make (wmOperatorType *ot)
 
Cut Link Operator
static int blender::ed::space_node::cut_links_exec (bContext *C, wmOperator *op)
 
void blender::ed::space_node::NODE_OT_links_cut (wmOperatorType *ot)
 
Mute Links Operator
bool blender::ed::space_node::all_links_muted (const bNodeSocket &socket)
 
static int blender::ed::space_node::mute_links_exec (bContext *C, wmOperator *op)
 
void blender::ed::space_node::NODE_OT_links_mute (wmOperatorType *ot)
 
Detach Links Operator
static int blender::ed::space_node::detach_links_exec (bContext *C, wmOperator *)
 
void blender::ed::space_node::NODE_OT_links_detach (wmOperatorType *ot)
 
Set Parent Operator
static int blender::ed::space_node::node_parent_set_exec (bContext *C, wmOperator *)
 
void blender::ed::space_node::NODE_OT_parent_set (wmOperatorType *ot)
 
Join Nodes Operator
static void blender::ed::space_node::node_join_attach_recursive (bNodeTree &ntree, MutableSpan< NodeJoinState > join_states, bNode *node, bNode *frame, const VectorSet< bNode * > &selected_nodes)
 
static Vector< const bNode * > blender::ed::space_node::get_sorted_node_parents (const bNode &node)
 
static const bNodeblender::ed::space_node::find_common_parent_node (const Span< const bNode * > nodes)
 
static int blender::ed::space_node::node_join_exec (bContext *C, wmOperator *)
 
void blender::ed::space_node::NODE_OT_join (wmOperatorType *ot)
 
Attach Operator
static bNodeblender::ed::space_node::node_find_frame_to_attach (ARegion &region, bNodeTree &ntree, const int2 mouse_xy)
 
static int blender::ed::space_node::node_attach_invoke (bContext *C, wmOperator *, const wmEvent *event)
 
void blender::ed::space_node::NODE_OT_attach (wmOperatorType *ot)
 
Detach Operator
static void blender::ed::space_node::node_detach_recursive (bNodeTree &ntree, MutableSpan< NodeDetachstate > detach_states, bNode *node)
 
static int blender::ed::space_node::node_detach_exec (bContext *C, wmOperator *)
 
void blender::ed::space_node::NODE_OT_detach (wmOperatorType *ot)
 
Automatic Node Insert on Dragging
static bNodeblender::ed::space_node::get_selected_node_for_insertion (bNodeTree &node_tree)
 
static bool blender::ed::space_node::node_can_be_inserted_on_link (bNodeTree &tree, bNode &node, const bNodeLink &link)
 
void blender::ed::space_node::node_insert_on_link_flags_set (SpaceNode &snode, const ARegion &region, bool attach_enabled, bool is_new_node)
 
void blender::ed::space_node::node_insert_on_link_flags_clear (bNodeTree &node_tree)
 
void blender::ed::space_node::node_insert_on_link_flags (Main &bmain, SpaceNode &snode, bool is_new_node)
 

Node Insert Offset Operator

#define NODE_INSOFS_ANIM_DURATION   0.25f
 
static int blender::ed::space_node::get_main_socket_priority (const bNodeSocket *socket)
 
bNodeSocketblender::ed::space_node::get_main_socket (bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out)
 
static bool blender::ed::space_node::node_parents_offset_flag_enable_cb (bNode *parent, void *)
 
static void blender::ed::space_node::node_offset_apply (bNode &node, const float offset_x)
 
static void blender::ed::space_node::node_parent_offset_apply (NodeInsertOfsData *data, bNode *parent, const float offset_x)
 
static bool blender::ed::space_node::node_link_insert_offset_frame_chain_cb (bNode *fromnode, bNode *tonode, void *userdata, const bool reversed)
 
static void blender::ed::space_node::node_link_insert_offset_frame_chains (bNodeTree *ntree, const bNode *parent, NodeInsertOfsData *data, const bool reversed)
 
static bool blender::ed::space_node::node_link_insert_offset_chain_cb (bNode *fromnode, bNode *tonode, void *userdata, const bool reversed)
 
static void blender::ed::space_node::node_link_insert_offset_ntree (NodeInsertOfsData *iofsd, ARegion *region, const int mouse_xy[2], const bool right_alignment)
 
static int blender::ed::space_node::node_insert_offset_modal (bContext *C, wmOperator *op, const wmEvent *event)
 
static int blender::ed::space_node::node_insert_offset_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
void blender::ed::space_node::NODE_OT_insert_offset (wmOperatorType *ot)
 

Add Link Operator

enum class  blender::ed::space_node::NodeLinkAction : int { blender::ed::space_node::Begin = 0 , blender::ed::space_node::Cancel = 1 , blender::ed::space_node::Swap = 2 , blender::ed::space_node::Confirm = 3 }
 
static bool blender::ed::space_node::dragged_links_are_detached (const bNodeLinkDrag &nldrag)
 
static bool blender::ed::space_node::should_create_drag_link_search_menu (const bNodeTree &node_tree, const bNodeLinkDrag &nldrag)
 
static bool blender::ed::space_node::need_drag_link_tooltip (const bNodeTree &node_tree, const bNodeLinkDrag &nldrag)
 
static void blender::ed::space_node::draw_draglink_tooltip (const bContext *, ARegion *, void *arg)
 
static void blender::ed::space_node::draw_draglink_tooltip_activate (const ARegion &region, bNodeLinkDrag &nldrag)
 
static void blender::ed::space_node::draw_draglink_tooltip_deactivate (const ARegion &region, bNodeLinkDrag &nldrag)
 
static int blender::ed::space_node::node_socket_count_links (const bNodeTree &ntree, const bNodeSocket &socket)
 
static bNodeSocketblender::ed::space_node::node_find_linkable_socket (const bNodeTree &ntree, const bNode *node, bNodeSocket *socket_to_match)
 
static void blender::ed::space_node::displace_links (bNodeTree *ntree, const bNode *node, bNodeLink *inserted_link)
 
static void blender::ed::space_node::node_displace_existing_links (bNodeLinkDrag &nldrag, bNodeTree &ntree)
 
static void blender::ed::space_node::node_swap_links (bNodeLinkDrag &nldrag, bNodeTree &ntree)
 
static void blender::ed::space_node::node_remove_existing_links_if_needed (bNodeLinkDrag &nldrag, bNodeTree &ntree)
 
static void blender::ed::space_node::add_dragged_links_to_tree (bContext &C, bNodeLinkDrag &nldrag)
 
static void blender::ed::space_node::node_link_cancel (bContext *C, wmOperator *op)
 
static void blender::ed::space_node::node_link_find_socket (bContext &C, wmOperator &op, const float2 &cursor)
 
wmKeyMapblender::ed::space_node::node_link_modal_keymap (wmKeyConfig *keyconf)
 
static int blender::ed::space_node::node_link_modal (bContext *C, wmOperator *op, const wmEvent *event)
 
static std::unique_ptr< bNodeLinkDragblender::ed::space_node::node_link_init (ARegion &region, SpaceNode &snode, const float2 cursor, const bool detach)
 
static int blender::ed::space_node::node_link_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
void blender::ed::space_node::NODE_OT_link (wmOperatorType *ot)
 

Macro Definition Documentation

◆ NODE_INSOFS_ANIM_DURATION

#define NODE_INSOFS_ANIM_DURATION   0.25f