Blender V4.5
node.cc File Reference
#include "CLG_log.h"
#include "MEM_guardedalloc.h"
#include <cstddef>
#include <cstdlib>
#include <cstring>
#include <optional>
#include "DNA_collection_types.h"
#include "DNA_gpencil_legacy_types.h"
#include "DNA_light_types.h"
#include "DNA_linestyle_types.h"
#include "DNA_material_types.h"
#include "DNA_node_types.h"
#include "DNA_scene_types.h"
#include "DNA_texture_types.h"
#include "DNA_userdef_types.h"
#include "DNA_world_types.h"
#include "BLI_color.hh"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BLI_map.hh"
#include "BLI_math_rotation_types.hh"
#include "BLI_math_vector.h"
#include "BLI_rand.hh"
#include "BLI_set.hh"
#include "BLI_string.h"
#include "BLI_string_utf8.h"
#include "BLI_string_utils.hh"
#include "BLI_time.h"
#include "BLI_utildefines.h"
#include "BLI_vector_set.hh"
#include "BLT_translation.hh"
#include "IMB_imbuf.hh"
#include "BKE_anim_data.hh"
#include "BKE_animsys.h"
#include "BKE_asset.hh"
#include "BKE_bpath.hh"
#include "BKE_colortools.hh"
#include "BKE_context.hh"
#include "BKE_global.hh"
#include "BKE_idprop.hh"
#include "BKE_idtype.hh"
#include "BKE_image_format.hh"
#include "BKE_lib_id.hh"
#include "BKE_lib_query.hh"
#include "BKE_main.hh"
#include "BKE_node.hh"
#include "BKE_node_enum.hh"
#include "BKE_node_legacy_types.hh"
#include "BKE_node_runtime.hh"
#include "BKE_node_tree_interface.hh"
#include "BKE_node_tree_reference_lifetimes.hh"
#include "BKE_node_tree_update.hh"
#include "BKE_preview_image.hh"
#include "BKE_type_conversions.hh"
#include "NOD_geometry_nodes_bundle.hh"
#include "NOD_geometry_nodes_closure.hh"
#include "RNA_access.hh"
#include "RNA_define.hh"
#include "RNA_enum_types.hh"
#include "RNA_prototypes.hh"
#include "NOD_common.hh"
#include "NOD_composite.hh"
#include "NOD_geo_bake.hh"
#include "NOD_geo_bundle.hh"
#include "NOD_geo_capture_attribute.hh"
#include "NOD_geo_closure.hh"
#include "NOD_geo_foreach_geometry_element.hh"
#include "NOD_geo_index_switch.hh"
#include "NOD_geo_menu_switch.hh"
#include "NOD_geo_repeat.hh"
#include "NOD_geo_simulation.hh"
#include "NOD_geometry_nodes_dependencies.hh"
#include "NOD_geometry_nodes_gizmos.hh"
#include "NOD_geometry_nodes_lazy_function.hh"
#include "NOD_node_declaration.hh"
#include "NOD_register.hh"
#include "NOD_shader.h"
#include "NOD_socket.hh"
#include "NOD_socket_items_blend.hh"
#include "NOD_texture.h"
#include "DEG_depsgraph.hh"
#include "DEG_depsgraph_build.hh"
#include "BLO_read_write.hh"

Go to the source code of this file.

Classes

struct  blender::bke::versioning_internal::bNodeSocketValueInt_404
struct  blender::bke::versioning_internal::bNodeSocketValueFloat_404
struct  blender::bke::versioning_internal::bNodeSocketValueBoolean_404
struct  blender::bke::versioning_internal::bNodeSocketValueVector_404
struct  blender::bke::versioning_internal::bNodeSocketValueRotation_404
struct  blender::bke::versioning_internal::bNodeSocketValueRGBA_404
struct  blender::bke::versioning_internal::bNodeSocketValueString_404
struct  blender::bke::versioning_internal::bNodeSocketValueObject_404
struct  blender::bke::versioning_internal::bNodeSocketValueImage_404
struct  blender::bke::versioning_internal::bNodeSocketValueCollection_404
struct  blender::bke::versioning_internal::bNodeSocketValueTexture_404
struct  blender::bke::versioning_internal::bNodeSocketValueMaterial_404
struct  blender::bke::versioning_internal::bNodeSocketValueMenu_404
struct  blender::bke::NodeStructIDNameGetter< T >
struct  FieldInferencingInterface
class  NodeDeclaration
class  OutputFieldDependency
class  SocketDeclaration

Namespaces

namespace  blender
namespace  blender::bke
namespace  blender::bke::forward_compat
namespace  blender::bke::versioning_internal

Macros

#define DNA_DEPRECATED_ALLOW

Typedefs

typedef struct blender::bke::versioning_internal::bNodeSocketValueInt_404 blender::bke::versioning_internal::bNodeSocketValueInt_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueFloat_404 blender::bke::versioning_internal::bNodeSocketValueFloat_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueBoolean_404 blender::bke::versioning_internal::bNodeSocketValueBoolean_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueVector_404 blender::bke::versioning_internal::bNodeSocketValueVector_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueRotation_404 blender::bke::versioning_internal::bNodeSocketValueRotation_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueRGBA_404 blender::bke::versioning_internal::bNodeSocketValueRGBA_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueString_404 blender::bke::versioning_internal::bNodeSocketValueString_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueObject_404 blender::bke::versioning_internal::bNodeSocketValueObject_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueImage_404 blender::bke::versioning_internal::bNodeSocketValueImage_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueCollection_404 blender::bke::versioning_internal::bNodeSocketValueCollection_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueTexture_404 blender::bke::versioning_internal::bNodeSocketValueTexture_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueMaterial_404 blender::bke::versioning_internal::bNodeSocketValueMaterial_404
typedef struct blender::bke::versioning_internal::bNodeSocketValueMenu_404 blender::bke::versioning_internal::bNodeSocketValueMenu_404

Enumerations

enum class  InputSocketFieldType
enum class  OutputSocketFieldType

Functions

static void blender::bke::write_node_socket_default_value (BlendWriter *writer, const bNodeSocket *sock)
static void blender::bke::ntree_set_typeinfo (bNodeTree *ntree, bNodeTreeType *typeinfo)
static void blender::bke::node_socket_set_typeinfo (bNodeTree *ntree, bNodeSocket *sock, bNodeSocketType *typeinfo)
static void blender::bke::node_socket_copy (bNodeSocket *sock_dst, const bNodeSocket *sock_src, const int flag)
static void blender::bke::free_localized_node_groups (bNodeTree *ntree)
static bool blender::bke::socket_id_user_decrement (bNodeSocket *sock)
static void blender::bke::ntree_init_data (ID *id)
static void blender::bke::ntree_copy_data (Main *, std::optional< Library * >, ID *id_dst, const ID *id_src, const int flag)
static void blender::bke::ntree_free_data (ID *id)
static void blender::bke::library_foreach_node_socket (bNodeSocket *sock, LibraryForeachIDData *data)
static void blender::bke::node_foreach_id (ID *id, LibraryForeachIDData *data)
static void blender::bke::node_foreach_cache (ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data)
static void blender::bke::node_foreach_path (ID *id, BPathForeachPathData *bpath_data)
static ID ** blender::bke::node_owner_pointer_get (ID *id, const bool debug_relationship_assert)
static void blender::bke::forward_compat::write_node_socket_interface (BlendWriter *writer, const bNodeSocket *sock)
static bNodeSocketblender::bke::forward_compat::make_socket (bNodeTree *ntree, const eNodeSocketInOut in_out, const StringRef idname, const StringRef name, const StringRef identifier)
static StringRef blender::bke::forward_compat::get_legacy_socket_subtype_idname (StringRef idname, const void *socket_data)
static void blender::bke::forward_compat::construct_interface_as_legacy_sockets (bNodeTree *ntree)
static void blender::bke::forward_compat::write_legacy_sockets (BlendWriter *writer, bNodeTree *ntree)
static void blender::bke::forward_compat::legacy_socket_interface_free (bNodeSocket *sock)
static void blender::bke::forward_compat::cleanup_legacy_sockets (bNodeTree *ntree)
static void blender::bke::forward_compat::update_node_location_legacy (bNodeTree &ntree)
static void blender::bke::forward_compat::write_compositor_legacy_properties (bNodeTree &node_tree)
static void blender::bke::forward_compat::write_compositor_legacy_storage (BlendWriter *writer, bNode &node)
static void blender::bke::write_node_socket (BlendWriter *writer, const bNodeSocket *sock)
static void blender::bke::node_blend_write_storage (BlendWriter *writer, bNodeTree *ntree, bNode *node)
static void blender::bke::ntree_blend_write (BlendWriter *writer, ID *id, const void *id_address)
static bool blender::bke::is_node_socket_supported (const bNodeSocket *sock)
template<typename T, typename T_404>
static void blender::bke::versioning_internal::direct_link_node_socket_legacy_data_version_do (void **dest_data, void **raw_data, blender::FunctionRef< void(T &dest, T_404 &source)> copy_fn)
static void blender::bke::direct_link_node_socket_default_value (BlendDataReader *reader, bNodeSocket *sock)
static void blender::bke::direct_link_node_socket_storage (BlendDataReader *reader, const bNode *node, bNodeSocket *sock)
static void blender::bke::direct_link_node_socket (BlendDataReader *reader, const bNode *node, bNodeSocket *sock)
static void blender::bke::remove_unsupported_sockets (ListBase *sockets, ListBase *links)
static void blender::bke::node_blend_read_data_storage (BlendDataReader *reader, bNodeTree *ntree, bNode *node)
static void blender::bke::ntree_blend_read_data (BlendDataReader *reader, ID *id)
static void blender::bke::ntree_blend_read_after_liblink (BlendLibReader *reader, ID *id)
static void blender::bke::node_tree_asset_pre_save (void *asset_ptr, AssetMetaData *)
static void blender::bke::node_tree_asset_on_mark_asset (void *asset_ptr, AssetMetaData *asset_data)
static void blender::bke::node_tree_asset_on_clear_asset (void *asset_ptr, AssetMetaData *asset_data)
static void blender::bke::node_add_sockets_from_type (bNodeTree *ntree, bNode *node, bNodeType *ntype)
static void blender::bke::node_init (const bContext *C, bNodeTree *ntree, bNode *node)
static void blender::bke::node_set_typeinfo (const bContext *C, bNodeTree *ntree, bNode *node, bNodeType *typeinfo)
static void blender::bke::update_typeinfo (Main *bmain, bNodeTreeType *treetype, bNodeType *nodetype, bNodeSocketType *socktype, const bool unregister)
static auto & blender::bke::get_node_tree_type_map ()
static auto & blender::bke::get_node_type_map ()
static auto & blender::bke::get_node_type_alias_map ()
static auto & blender::bke::get_socket_type_map ()
static void blender::bke::defer_free_tree_type (bNodeTreeType *tree_type)
static void blender::bke::defer_free_node_type (bNodeType *ntype)
static void blender::bke::defer_free_socket_type (bNodeSocketType *stype)
static void blender::bke::ntree_free_type (void *treetype_v)
static void blender::bke::node_free_type (void *nodetype_v)
static void blender::bke::node_free_socket_type (void *socktype_v)
static bNodeSocketblender::bke::make_socket (bNodeTree *ntree, bNode *, const int in_out, ListBase *lb, const StringRefNull idname, const StringRefNull identifier, const StringRefNull name)
static void blender::bke::socket_id_user_increment (bNodeSocket *sock)
static void blender::bke::node_socket_free (bNodeSocket *sock, const bool do_id_user)
static void blender::bke::iter_backwards_ex (const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *), void *userdata, const char recursion_mask)
static void * blender::bke::node_static_value_storage_for (bNode &node, const bNodeSocket &socket)
static void * blender::bke::socket_value_storage (bNodeSocket &socket)
static int blender::bke::node_count_links (const bNodeTree *ntree, const bNodeSocket *socket)
static void blender::bke::adjust_multi_input_indices_after_removed_link (bNodeTree *ntree, const bNodeSocket *sock, const int deleted_index)
static bNodeTreeblender::bke::node_tree_add_tree_do (Main *bmain, std::optional< Library * > owner_library, ID *owner_id, const bool is_embedded, const StringRef name, const StringRef idname)
static void blender::bke::node_preview_init_tree_recursive (Map< bNodeInstanceKey, bNodePreview > &previews, bNodeTree *ntree, bNodeInstanceKey parent_key, const int xsize, const int ysize)
static void blender::bke::collect_used_previews (Map< bNodeInstanceKey, bNodePreview > &previews, bNodeTree *ntree, bNodeInstanceKey parent_key, Set< bNodeInstanceKey > &used)
static void blender::bke::node_unlink_attached (bNodeTree *ntree, const bNode *parent)
static bool blender::bke::ntree_contains_tree_exec (const bNodeTree &tree_to_search_in, const bNodeTree &tree_to_search_for, Set< const bNodeTree * > &already_passed)
static void blender::bke::update_socket_declarations (ListBase *sockets, Span< nodes::SocketDeclaration * > declarations)
static void blender::bke::reset_socket_declarations (ListBase *sockets)
static bNodeInstanceKey blender::bke::node_hash_int_str (bNodeInstanceKey hash, const char *str)
static Set< int > blender::bke::get_known_node_types_set ()
static bool blender::bke::can_read_node_type (const bNode &node)
static void blender::bke::node_replace_undefined_types (bNode *node)
static void blender::bke::node_type_base_defaults (bNodeType &ntype)
static bool blender::bke::node_poll_default (const bNodeType *, const bNodeTree *, const char **)
static bool blender::bke::node_poll_instance_default (const bNode *node, const bNodeTree *ntree, const char **r_disabled_hint)
static int16_t blender::bke::get_next_auto_legacy_type ()
static const CPPTypeblender::bke::slow_socket_type_to_geo_nodes_base_cpp_type (const eNodeSocketDatatype type)
static void blender::bke::unique_socket_template_identifier (bNodeSocketTemplate *list, bNodeSocketTemplate *ntemp, const char defname[], const char delim)
Node Tree
void blender::bke::node_node_foreach_id (bNode *node, LibraryForeachIDData *data)
void blender::bke::node_tree_blend_read_data (BlendDataReader *reader, ID *owner_id, bNodeTree *ntree)
void blender::bke::node_update_asset_metadata (bNodeTree &node_tree)
StringRefNull blender::bke::node_socket_sub_type_label (int subtype)
void blender::bke::node_modify_socket_type (bNodeTree &ntree, bNode &node, bNodeSocket &sock, StringRefNull idname)
bool blender::bke::node_is_static_socket_type (const bNodeSocketType &stype)
void blender::bke::node_remove_socket_ex (bNodeTree &ntree, bNode &node, bNodeSocket &sock, bool do_id_user)
bNodeblender::bke::node_find_root_parent (bNode &node)
void blender::bke::node_chain_iterator (const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *, const bool), void *userdata, bool reversed)
void blender::bke::node_chain_iterator_backwards (const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *), void *userdata, int recursion_lvl)
void blender::bke::node_parents_iterator (bNode *node, bool(*callback)(bNode *, void *), void *userdata)
bNodeblender::bke::node_copy_with_mapping (bNodeTree *dst_tree, const bNode &node_src, int flag, bool use_unique, Map< const bNodeSocket *, bNodeSocket * > &new_socket_map)
void blender::bke::node_socket_move_default_value (Main &bmain, bNodeTree &tree, bNodeSocket &src, bNodeSocket &dst)
bNodeblender::bke::node_copy (bNodeTree *dst_tree, const bNode &src_node, int flag, bool use_unique)
void blender::bke::node_link_set_mute (bNodeTree &ntree, bNodeLink &link, const bool muted)
bool blender::bke::node_link_is_selected (const bNodeLink &link)
void blender::bke::node_internal_relink (bNodeTree &ntree, bNode &node)
void blender::bke::node_position_relative (bNode &from_node, const bNode &to_node, const bNodeSocket *from_sock, const bNodeSocket &to_sock)
void blender::bke::node_position_propagate (bNode &node)
bNodeTreeblender::bke::node_tree_add_tree_embedded (Main *bmain, ID *owner_id, StringRefNull name, StringRefNull idname)
bNodeTreeblender::bke::node_tree_copy_tree_ex (const bNodeTree &ntree, Main *bmain, bool do_id_user)
bNodeTreeblender::bke::node_tree_copy_tree (Main *bmain, const bNodeTree &ntree)
bool blender::bke::node_preview_used (const bNode &node)
bNodePreviewblender::bke::node_preview_verify (Map< bNodeInstanceKey, bNodePreview > &previews, bNodeInstanceKey key, int xsize, int ysize, bool create)
void blender::bke::node_preview_init_tree (bNodeTree *ntree, int xsize, int ysize)
void blender::bke::node_preview_remove_unused (bNodeTree *ntree)
void blender::bke::node_preview_merge_tree (bNodeTree *to_ntree, bNodeTree *from_ntree, bool remove_old)
void blender::bke::node_unlink_node (bNodeTree &ntree, bNode &node)
void blender::bke::node_rebuild_id_vector (bNodeTree &node_tree)
void blender::bke::node_free_node (bNodeTree *tree, bNode &node)
void blender::bke::node_tree_free_local_node (bNodeTree &ntree, bNode &node)
void blender::bke::node_tree_free_tree (bNodeTree &ntree)
void blender::bke::node_tree_node_flag_set (bNodeTree &ntree, int flag, bool enable)
void blender::bke::node_tree_local_merge (Main *bmain, bNodeTree *localtree, bNodeTree *ntree)
void blender::bke::node_set_socket_availability (bNodeTree &ntree, bNodeSocket &sock, bool is_available)
void blender::bke::node_socket_declarations_update (bNode *node)
bool blender::bke::node_declaration_ensure_on_outdated_node (bNodeTree &ntree, bNode &node)
bool blender::bke::node_declaration_ensure (bNodeTree &ntree, bNode &node)
void blender::bke::node_tree_update_all_new (Main &main)
void blender::bke::node_system_init ()
void blender::bke::node_system_exit ()
void blender::bke::node_tree_remove_layer_n (bNodeTree *ntree, Scene *scene, int layer_index)
Generic API, Trees
void blender::bke::node_tree_blend_write (BlendWriter *writer, bNodeTree *ntree)
void blender::bke::node_tree_set_type (bNodeTree &ntree)
bNodeTreeTypeblender::bke::node_tree_type_find (StringRef idname)
void blender::bke::node_tree_type_add (bNodeTreeType &nt)
void blender::bke::node_tree_type_free_link (const bNodeTreeType &nt)
bool blender::bke::node_tree_is_registered (const bNodeTree &ntree)
Span< bNodeTreeType * > blender::bke::node_tree_types_get ()
bNodeTreeblender::bke::node_tree_add_tree (Main *bmain, StringRef name, StringRef idname)
bNodeTreeblender::bke::node_tree_add_in_lib (Main *bmain, Library *owner_library, StringRefNull name, StringRefNull idname)
void blender::bke::node_tree_free_embedded_tree (bNodeTree *ntree)
void blender::bke::node_tree_free_local_tree (bNodeTree *ntree)
void blender::bke::node_tree_set_output (bNodeTree &ntree)
bNodeTree ** blender::bke::node_tree_ptr_from_id (ID *id)
bNodeTreeblender::bke::node_tree_from_id (ID *id)
bNodeTreeblender::bke::node_tree_localize (bNodeTree *ntree, std::optional< ID * > new_owner_id)
bool blender::bke::node_tree_contains_tree (const bNodeTree &tree_to_search_in, const bNodeTree &tree_to_search_for)
void blender::bke::node_tree_update_all_users (Main *main, ID *id)
Generic API, Nodes
bNodeTypeblender::bke::node_type_find (StringRef idname)
StringRefNull blender::bke::node_type_find_alias (StringRefNull alias)
void blender::bke::node_register_type (bNodeType &ntype)
void blender::bke::node_unregister_type (bNodeType &ntype)
Span< bNodeType * > blender::bke::node_types_get ()
void blender::bke::node_register_alias (bNodeType &nt, StringRef alias)
Span< bNodeSocketType * > blender::bke::node_socket_types_get ()
bNodeSocketTypeblender::bke::node_socket_type_find (StringRef idname)
bNodeSocketTypeblender::bke::node_socket_type_find_static (int type, int subtype=0)
void blender::bke::node_register_socket_type (bNodeSocketType &stype)
void blender::bke::node_unregister_socket_type (bNodeSocketType &stype)
bool blender::bke::node_socket_is_registered (const bNodeSocket &sock)
StringRefNull blender::bke::node_socket_type_label (const bNodeSocketType &stype)
bNodeSocketblender::bke::node_find_socket (bNode &node, eNodeSocketInOut in_out, StringRef identifier)
const bNodeSocketblender::bke::node_find_socket (const bNode &node, eNodeSocketInOut in_out, StringRef identifier)
void blender::bke::node_modify_socket_type_static (bNodeTree *ntree, bNode *node, bNodeSocket *sock, int type, int subtype)
bNodeSocketblender::bke::node_add_socket (bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out, StringRefNull idname, StringRefNull identifier, StringRefNull name)
std::optional< StringRefNullblender::bke::node_static_socket_type (int type, int subtype, std::optional< int > dimensions=std::nullopt)
std::optional< StringRefNullblender::bke::node_static_socket_interface_type_new (int type, int subtype, std::optional< int > dimensions=std::nullopt)
std::optional< StringRefNullblender::bke::node_static_socket_label (int type, int subtype)
bNodeSocketblender::bke::node_add_static_socket (bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out, int type, int subtype, StringRefNull identifier, StringRefNull name)
void blender::bke::node_remove_socket (bNodeTree &ntree, bNode &node, bNodeSocket &sock)
bNodeblender::bke::node_find_node_by_name (bNodeTree &ntree, StringRefNull name)
bNodeblender::bke::node_find_node (bNodeTree &ntree, bNodeSocket &socket)
const bNodeblender::bke::node_find_node (const bNodeTree &ntree, const bNodeSocket &socket)
bNodeblender::bke::node_find_node_try (bNodeTree &ntree, bNodeSocket &socket)
const bNodeTreeInterfaceSocketblender::bke::node_find_interface_input_by_identifier (const bNodeTree &ntree, StringRef identifier)
bool blender::bke::node_is_parent_and_child (const bNode &parent, const bNode &child)
void blender::bke::node_unique_name (bNodeTree &ntree, bNode &node)
void blender::bke::node_unique_id (bNodeTree &ntree, bNode &node)
bNodeblender::bke::node_add_node (const bContext *C, bNodeTree &ntree, StringRef idname)
bNodeblender::bke::node_add_static_node (const bContext *C, bNodeTree &ntree, int type)
bNodeLinkblender::bke::node_add_link (bNodeTree &ntree, bNode &fromnode, bNodeSocket &fromsock, bNode &tonode, bNodeSocket &tosock)
void blender::bke::node_remove_link (bNodeTree *ntree, bNodeLink &link)
void blender::bke::node_remove_socket_links (bNodeTree &ntree, bNodeSocket &sock)
bool blender::bke::node_link_is_hidden (const bNodeLink &link)
void blender::bke::node_attach_node (bNodeTree &ntree, bNode &node, bNode &parent)
void blender::bke::node_detach_node (bNodeTree &ntree, bNode &node)
void blender::bke::node_remove_node (Main *bmain, bNodeTree &ntree, bNode &node, bool do_id_user, bool remove_animation=true)
int blender::bke::node_count_socket_links (const bNodeTree &ntree, const bNodeSocket &sock)
bNodeblender::bke::node_get_active (bNodeTree &ntree)
bool blender::bke::node_set_selected (bNode &node, bool select)
void blender::bke::node_clear_active (bNodeTree &ntree)
void blender::bke::node_set_active (bNodeTree &ntree, bNode &node)
int blender::bke::node_socket_link_limit (const bNodeSocket &sock)
float2 blender::bke::node_dimensions_get (const bNode &node)
void blender::bke::node_tag_update_id (bNode &node)
void blender::bke::node_internal_links (bNode &node, bNodeLink **r_links, int *r_len)
bNodeInstanceKey blender::bke::node_instance_key (bNodeInstanceKey parent_key, const bNodeTree *ntree, const bNode *node)
Node Generic Functions
bNodeSocketblender::bke::node_find_enabled_socket (bNode &node, eNodeSocketInOut in_out, StringRef name)
bNodeSocketblender::bke::node_find_enabled_input_socket (bNode &node, StringRef name)
bNodeSocketblender::bke::node_find_enabled_output_socket (bNode &node, StringRef name)
std::optional< eCustomDataTypeblender::bke::socket_type_to_custom_data_type (eNodeSocketDatatype type)
std::optional< eNodeSocketDatatypeblender::bke::custom_data_type_to_socket_type (eCustomDataType type)
const CPPTypeblender::bke::socket_type_to_geo_nodes_base_cpp_type (eNodeSocketDatatype type)
std::optional< eNodeSocketDatatypeblender::bke::geo_nodes_base_cpp_type_to_socket_type (const CPPType &type)
std::optional< VolumeGridTypeblender::bke::socket_type_to_grid_type (eNodeSocketDatatype type)
std::optional< eNodeSocketDatatypeblender::bke::grid_type_to_socket_type (VolumeGridType type)
Node Type Access
std::string blender::bke::node_label (const bNodeTree &ntree, const bNode &node)
std::optional< StringRefNullblender::bke::node_socket_short_label (const bNodeSocket &sock)
StringRefNull blender::bke::node_socket_label (const bNodeSocket &sock)
void blender::bke::node_type_base (bNodeType &ntype, std::string idname, std::optional< int16_t > legacy_type=std::nullopt)
void blender::bke::node_type_base_custom (bNodeType &ntype, StringRefNull idname, StringRefNull name, StringRefNull enum_name, short nclass)
void blender::bke::node_type_socket_templates (bNodeType *ntype, bNodeSocketTemplate *inputs, bNodeSocketTemplate *outputs)
void blender::bke::node_type_size (bNodeType &ntype, int width, int minwidth, int maxwidth)
void blender::bke::node_type_size_preset (bNodeType &ntype, eNodeSizePreset size)
void blender::bke::node_type_storage (bNodeType &ntype, std::optional< StringRefNull > storagename, void(*freefunc)(bNode *node), void(*copyfunc)(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node))
Node Tree Iterator

Utility macro for visiting every node tree in the library data, including local bNodeTree blocks in other IDs. This avoids the need for callback functions and allows executing code in a single inner code block.

Variables:

  • nodetree: The actual bNodeTree data block. Check nodetree->idname or nodetree->typeinfo to use only specific types.
  • id: The owner of the bNodeTree data block. Same as nodetree if it's a linkable node tree from the library.

Examples:

FOREACH_NODETREE_BEGIN(bmain, nodetree, id) {
if (id == nodetree)
printf("This is a linkable node tree");
FOREACH_NODETREE_BEGIN(bmain, nodetree, id) {
if (nodetree->idname == "ShaderNodeTree")
printf("This is a shader node tree);
if (GS(id) == ID_MA)
printf(" and it's owned by a material");
} FOREACH_NODETREE_END;
#define FOREACH_NODETREE_END
Definition BKE_node.hh:866
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
Definition BKE_node.hh:856
#define printf(...)
void blender::bke::node_tree_iterator_init (NodeTreeIterStore *ntreeiter, Main *bmain)
bool blender::bke::node_tree_iterator_step (NodeTreeIterStore *ntreeiter, bNodeTree **r_nodetree, ID **r_id)

Variables

static CLG_LogRef LOG = {"bke.node"}
constexpr int blender::bke::versioning_internal::MIN_BLENDFILE_VERSION_FOR_MODERN_NODE_SOCKET_DEFAULT_VALUE_READING = 300
static AssetTypeInfo AssetType_NT
IDTypeInfo IDType_ID_NT

Macro Definition Documentation

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 19 of file node.cc.

Enumeration Type Documentation

◆ InputSocketFieldType

Definition at line 31 of file NOD_node_declaration.hh.

◆ OutputSocketFieldType

Definition at line 40 of file NOD_node_declaration.hh.

Variable Documentation

◆ AssetType_NT

AssetTypeInfo AssetType_NT
static
Initial value:
= {
}
static void node_tree_asset_on_clear_asset(void *asset_ptr, AssetMetaData *asset_data)
Definition node.cc:2339
static void node_tree_asset_pre_save(void *asset_ptr, AssetMetaData *)
Definition node.cc:2321
static void node_tree_asset_on_mark_asset(void *asset_ptr, AssetMetaData *asset_data)
Definition node.cc:2327

Definition at line 2353 of file node.cc.

◆ IDType_ID_NT

IDTypeInfo IDType_ID_NT
Initial value:
= {
bNodeTree::id_type,
sizeof(bNodeTree),
"NodeTree",
N_("node_groups"),
nullptr,
nullptr,
nullptr,
}
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
Definition BKE_idtype.hh:44
#define BLT_I18NCONTEXT_ID_NODETREE
@ INDEX_ID_NT
Definition DNA_ID.h:1205
#define FILTER_ID_ALL
#define FILTER_ID_NT
static ID ** node_owner_pointer_get(ID *id, const bool debug_relationship_assert)
Definition node.cc:440
static void node_foreach_path(ID *id, BPathForeachPathData *bpath_data)
Definition node.cc:413
static void ntree_copy_data(Main *, std::optional< Library * >, ID *id_dst, const ID *id_src, const int flag)
Definition node.cc:142
static void ntree_free_data(ID *id)
Definition node.cc:250
static void ntree_blend_read_after_liblink(BlendLibReader *reader, ID *id)
Definition node.cc:2266
static void ntree_init_data(ID *id)
Definition node.cc:133
static void node_foreach_id(ID *id, LibraryForeachIDData *data)
Definition node.cc:371
static void ntree_blend_read_data(BlendDataReader *reader, ID *id)
Definition node.cc:2260
static void ntree_blend_write(BlendWriter *writer, ID *id, const void *id_address)
Definition node.cc:1539
static void node_foreach_cache(ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data)
Definition node.cc:395
static AssetTypeInfo AssetType_NT
Definition node.cc:2353
#define N_(msgid)

Definition at line 2359 of file node.cc.

◆ LOG

CLG_LogRef LOG = {"bke.node"}
static

Definition at line 113 of file node.cc.