|
Blender V4.3
|
#include <cstring>#include "DNA_node_types.h"#include "DNA_screen_types.h"#include "BLI_listbase.h"#include "BLI_map.hh"#include "BLI_string.h"#include "BLI_string_ref.hh"#include "BLI_string_utf8.h"#include "BKE_animsys.h"#include "BKE_grease_pencil_legacy_convert.hh"#include "BKE_idprop.hh"#include "BKE_ipo.h"#include "BKE_lib_id.hh"#include "BKE_lib_override.hh"#include "BKE_main.hh"#include "BKE_main_namemap.hh"#include "BKE_mesh_legacy_convert.hh"#include "BKE_node.hh"#include "BKE_node_runtime.hh"#include "BKE_node_tree_update.hh"#include "NOD_socket.hh"#include "BLT_translation.hh"#include "SEQ_sequencer.hh"#include "MEM_guardedalloc.h"#include "BLO_readfile.hh"#include "readfile.hh"#include "versioning_common.hh"Go to the source code of this file.
Macros | |
| #define | DNA_DEPRECATED_ALLOW |
Functions | |
| ARegion * | do_versions_add_region_if_not_found (ListBase *regionbase, int region_type, const char *allocname, int link_after_region_type) |
| ARegion * | do_versions_ensure_region (ListBase *regionbase, int region_type, const char *allocname, int link_after_region_type) |
| ID * | do_versions_rename_id (Main *bmain, const short id_type, const char *name_src, const char *name_dst) |
| static void | change_node_socket_name (ListBase *sockets, const char *old_name, const char *new_name) |
| bool | version_node_socket_is_used (bNodeSocket *sock) |
| void | version_node_socket_id_delim (bNodeSocket *socket) |
| void | version_node_socket_name (bNodeTree *ntree, const int node_type, const char *old_name, const char *new_name) |
| void | version_node_input_socket_name (bNodeTree *ntree, const int node_type, const char *old_name, const char *new_name) |
| void | version_node_output_socket_name (bNodeTree *ntree, const int node_type, const char *old_name, const char *new_name) |
| bNode & | version_node_add_empty (bNodeTree &ntree, const char *idname) |
| bNodeSocket & | version_node_add_socket (bNodeTree &ntree, bNode &node, const eNodeSocketInOut in_out, const char *idname, const char *identifier) |
| bNodeLink & | version_node_add_link (bNodeTree &ntree, bNode &node_a, bNodeSocket &socket_a, bNode &node_b, bNodeSocket &socket_b) |
| bNodeSocket * | version_node_add_socket_if_not_exist (bNodeTree *ntree, bNode *node, int in_out, int type, int subtype, const char *identifier, const char *name) |
| void | version_node_id (bNodeTree *ntree, const int node_type, const char *new_name) |
| void | version_node_socket_index_animdata (Main *bmain, const int node_tree_type, const int node_type, const int socket_index_orig, const int socket_index_offset, const int total_number_of_sockets) |
| void | version_socket_update_is_used (bNodeTree *ntree) |
| ARegion * | do_versions_add_region (int regiontype, const char *name) |
| void | node_tree_relink_with_socket_id_map (bNodeTree &ntree, bNode &old_node, bNode &new_node, const Map< std::string, std::string > &map) |
| static blender::Vector< bNodeLink * > | find_connected_links (bNodeTree *ntree, bNodeSocket *in_socket) |
| void | add_realize_instances_before_socket (bNodeTree *ntree, bNode *node, bNodeSocket *geometry_socket) |
| float * | version_cycles_node_socket_float_value (bNodeSocket *socket) |
| float * | version_cycles_node_socket_rgba_value (bNodeSocket *socket) |
| float * | version_cycles_node_socket_vector_value (bNodeSocket *socket) |
| IDProperty * | version_cycles_properties_from_ID (ID *id) |
| IDProperty * | version_cycles_properties_from_view_layer (ViewLayer *view_layer) |
| IDProperty * | version_cycles_properties_from_render_layer (SceneRenderLayer *render_layer) |
| float | version_cycles_property_float (IDProperty *idprop, const char *name, float default_value) |
| int | version_cycles_property_int (IDProperty *idprop, const char *name, int default_value) |
| void | version_cycles_property_int_set (IDProperty *idprop, const char *name, int value) |
| bool | version_cycles_property_boolean (IDProperty *idprop, const char *name, bool default_value) |
| void | version_cycles_property_boolean_set (IDProperty *idprop, const char *name, bool value) |
| IDProperty * | version_cycles_visibility_properties_from_ID (ID *id) |
| void | version_update_node_input (bNodeTree *ntree, FunctionRef< bool(bNode *)> check_node, const char *socket_identifier, FunctionRef< void(bNode *, bNodeSocket *)> update_input, FunctionRef< void(bNode *, bNodeSocket *, bNode *, bNodeSocket *)> update_input_link) |
| bNode * | version_eevee_output_node_get (bNodeTree *ntree, int16_t node_type) |
| static bool | blendfile_or_libraries_versions_atleast (Main *bmain, const short versionfile, const short subversionfile) |
| void | do_versions_after_setup (Main *new_bmain, BlendfileLinkAppendContext *lapp_context, BlendFileReadReport *reports) |
| #define DNA_DEPRECATED_ALLOW |
Definition at line 9 of file versioning_common.cc.
| void add_realize_instances_before_socket | ( | bNodeTree * | ntree, |
| bNode * | node, | ||
| bNodeSocket * | geometry_socket ) |
Definition at line 407 of file versioning_common.cc.
References BLI_assert, find_connected_links(), ListBase::first, bNode::inputs, bNode::locx, bNode::locy, blender::bke::node_add_link(), blender::bke::node_add_static_node(), bNode::outputs, bNode::parent, SOCK_GEOMETRY, and bNodeSocket::type.
Referenced by do_versions_after_linking_300(), and version_geometry_nodes_add_realize_instance_nodes().
|
static |
Definition at line 586 of file versioning_common.cc.
References Main::libraries, LIBRARY_VERSION_FILE_ATLEAST, LISTBASE_FOREACH, and MAIN_VERSION_FILE_ATLEAST.
Referenced by do_versions_after_setup().
|
static |
Definition at line 116 of file versioning_common.cc.
References LISTBASE_FOREACH, STREQ, and STRNCPY.
Referenced by version_node_input_socket_name(), version_node_output_socket_name(), and version_node_socket_name().
Definition at line 356 of file versioning_common.cc.
References MEM_callocN, and ARegion::regiontype.
Referenced by blo_do_versions_280(), blo_do_versions_300(), and do_versions_area_ensure_tool_region().
| ARegion * do_versions_add_region_if_not_found | ( | ListBase * | regionbase, |
| int | region_type, | ||
| const char * | allocname, | ||
| int | link_after_region_type ) |
Check if a region of type region_type exists in regionbase. Otherwise add it after the first region of type link_after_region_type.
Definition at line 50 of file versioning_common.cc.
References BLI_insertlinkafter(), LISTBASE_FOREACH, MEM_callocN, and ARegion::regiontype.
Referenced by add_image_editor_asset_shelf(), blo_do_versions_290(), blo_do_versions_300(), blo_do_versions_400(), and version_ensure_missing_regions().
| void do_versions_after_setup | ( | Main * | new_bmain, |
| BlendfileLinkAppendContext * | lapp_context, | ||
| BlendFileReadReport * | reports ) |
Definition at line 603 of file versioning_common.cc.
References BKE_lib_override_library_main_hierarchy_root_ensure(), BKE_lib_override_library_main_proxy_convert(), BKE_main_mesh_legacy_convert_auto_smooth(), BKE_main_namemap_validate_and_fix(), blendfile_or_libraries_versions_atleast(), do_versions_ipos_to_animato(), blender::bke::greasepencil::convert::legacy_main(), LISTBASE_FOREACH, Main::scenes, and SEQ_doversion_250_sound_proxy_update().
Referenced by BLO_read_do_version_after_setup().
| ARegion * do_versions_ensure_region | ( | ListBase * | regionbase, |
| int | region_type, | ||
| const char * | allocname, | ||
| int | link_after_region_type ) |
Check if a region of type region_type exists in regionbase. Otherwise add it after the first region of type link_after_region_type.
Definition at line 71 of file versioning_common.cc.
References BLI_insertlinkafter(), LISTBASE_FOREACH, and ARegion::regiontype.
Referenced by version_ensure_missing_regions().
| ID * do_versions_rename_id | ( | Main * | bmain, |
| short | id_type, | ||
| const char * | name_src, | ||
| const char * | name_dst ) |
Rename if the ID doesn't exist.
Definition at line 92 of file versioning_common.cc.
References BKE_libblock_rename(), ID_IS_LINKED, LISTBASE_FOREACH, STREQ, and which_libbase().
Referenced by blo_do_versions_300(), BLO_update_defaults_startup_blend(), and do_versions_after_linking_280().
|
static |
Definition at line 396 of file versioning_common.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), bNodeTree::links, and LISTBASE_FOREACH.
Referenced by add_realize_instances_before_socket().
| void node_tree_relink_with_socket_id_map | ( | bNodeTree & | ntree, |
| bNode & | old_node, | ||
| bNode & | new_node, | ||
| const Map< std::string, std::string > & | map ) |
Definition at line 363 of file versioning_common.cc.
References bNodeSocket::identifier, bNodeSocket::link, bNodeTree::links, LISTBASE_FOREACH_MUTABLE, blender::bke::node_find_socket(), SOCK_IN, and SOCK_OUT.
Referenced by version_geometry_nodes_replace_transfer_attribute_node().
| float * version_cycles_node_socket_float_value | ( | bNodeSocket * | socket | ) |
Definition at line 434 of file versioning_common.cc.
References bNodeSocket::default_value, and bNodeSocketValueFloat::value.
Referenced by ambient_occlusion_node_relink(), BLO_update_defaults_startup_blend(), displacement_node_insert(), light_emission_node_to_energy(), square_roughness_node_insert(), update_noise_and_wave_distortion(), update_vector_math_node_dot_product_operator(), update_voronoi_node_crackle(), update_wave_node_directions_and_offset(), version_principled_bsdf_coat(), version_principled_bsdf_emission(), version_principled_bsdf_sheen(), version_principled_bsdf_specular_tint(), version_principled_bsdf_subsurface(), version_refraction_depth_to_thickness_value(), versioning_eevee_alpha_source_get(), versioning_eevee_material_blend_mode_settings(), versioning_replace_musgrave_texture_node(), and versioning_update_noise_texture_node().
| float * version_cycles_node_socket_rgba_value | ( | bNodeSocket * | socket | ) |
Definition at line 440 of file versioning_common.cc.
References bNodeSocket::default_value, and bNodeSocketValueRGBA::value.
Referenced by BLO_update_defaults_startup_blend(), light_emission_node_to_energy(), update_vector_math_node_dot_product_operator(), version_principled_bsdf_sheen(), version_principled_bsdf_specular_tint(), version_principled_bsdf_subsurface(), versioning_eevee_alpha_source_get(), and versioning_eevee_material_blend_mode_settings().
| float * version_cycles_node_socket_vector_value | ( | bNodeSocket * | socket | ) |
Definition at line 446 of file versioning_common.cc.
References bNodeSocket::default_value, and bNodeSocketValueVector::value.
Referenced by update_mapping_node_inputs_and_properties(), update_vector_math_node_add_and_subtract_operators(), update_vector_math_node_dot_product_operator(), and update_vector_math_node_normalize_operator().
| IDProperty * version_cycles_properties_from_ID | ( | ID * | id | ) |
Definition at line 453 of file versioning_common.cc.
References IDP_GetProperties(), IDP_GetPropertyTypeFromGroup(), and IDP_GROUP.
Referenced by blo_do_versions_280(), blo_do_versions_290(), blo_do_versions_300(), blo_do_versions_400(), and do_versions_after_linking_280().
| IDProperty * version_cycles_properties_from_render_layer | ( | SceneRenderLayer * | render_layer | ) |
Definition at line 465 of file versioning_common.cc.
References IDP_GetPropertyTypeFromGroup(), and IDP_GROUP.
Referenced by blo_do_versions_290().
| IDProperty * version_cycles_properties_from_view_layer | ( | ViewLayer * | view_layer | ) |
Definition at line 459 of file versioning_common.cc.
References ViewLayer::id_properties, IDP_GetPropertyTypeFromGroup(), and IDP_GROUP.
Referenced by blo_do_versions_290().
| bool version_cycles_property_boolean | ( | IDProperty * | idprop, |
| const char * | name, | ||
| bool | default_value ) |
Definition at line 493 of file versioning_common.cc.
References version_cycles_property_int().
Referenced by blo_do_versions_280(), blo_do_versions_290(), and blo_do_versions_300().
| void version_cycles_property_boolean_set | ( | IDProperty * | idprop, |
| const char * | name, | ||
| bool | value ) |
Definition at line 498 of file versioning_common.cc.
References version_cycles_property_int_set().
Referenced by blo_do_versions_290().
| float version_cycles_property_float | ( | IDProperty * | idprop, |
| const char * | name, | ||
| float | default_value ) |
Definition at line 471 of file versioning_common.cc.
References IDP_FLOAT, IDP_Float, and IDP_GetPropertyTypeFromGroup().
Referenced by blo_do_versions_280(), blo_do_versions_400(), and do_versions_after_linking_280().
| int version_cycles_property_int | ( | IDProperty * | idprop, |
| const char * | name, | ||
| int | default_value ) |
Definition at line 477 of file versioning_common.cc.
References IDP_GetPropertyTypeFromGroup(), IDP_INT, and IDP_Int.
Referenced by blo_do_versions_290(), blo_do_versions_300(), blo_do_versions_400(), do_versions_after_linking_280(), and version_cycles_property_boolean().
| void version_cycles_property_int_set | ( | IDProperty * | idprop, |
| const char * | name, | ||
| int | value ) |
Definition at line 483 of file versioning_common.cc.
References blender::bke::idprop::create(), IDP_AddToGroup(), IDP_GetPropertyTypeFromGroup(), IDP_INT, and IDP_Int.
Referenced by blo_do_versions_290(), blo_do_versions_300(), and version_cycles_property_boolean_set().
| IDProperty * version_cycles_visibility_properties_from_ID | ( | ID * | id | ) |
Definition at line 503 of file versioning_common.cc.
References IDP_GetProperties(), IDP_GetPropertyTypeFromGroup(), and IDP_GROUP.
Referenced by blo_do_versions_300().
Definition at line 554 of file versioning_common.cc.
References bNode::custom1, bNode::flag, LISTBASE_FOREACH, node, NODE_DO_OUTPUT, bNodeTree::nodes, SHD_OUTPUT_ALL, and SHD_OUTPUT_EEVEE.
Referenced by versioning_eevee_material_blend_mode_settings(), and versioning_eevee_material_shadow_none().
Adds a new node for versioning purposes. This is intended to be used to create raw DNA that might have been read from a file. The created node does not have storage or sockets. Both have to be added manually afterwards.
This may seem redundant because the set of sockets is already part of the node declaration. However, the declaration should not be used here, because it changes over time. The versioning code generally expects to get the sockets that the node had at the time of writing the versioning code. Changing the declaration later can break the versioning code in ways that are hard to detect.
Definition at line 191 of file versioning_common.cc.
References BKE_ntree_update_tag_node_new(), BLI_addtail(), DATA_, blender::bke::bNodeType::height, node, NODE_INIT, NODE_OPTIONS, NODE_SELECT, blender::bke::node_type_find(), blender::bke::node_unique_id(), blender::bke::node_unique_name(), bNodeTree::nodes, STRNCPY, STRNCPY_UTF8, blender::bke::bNodeType::type, blender::bke::bNodeType::ui_name, and blender::bke::bNodeType::width.
Referenced by hide_simulation_node_skip_socket_value(), version_geometry_nodes_extrude_smooth_propagation(), and version_geometry_nodes_primitive_uv_maps().
| bNodeLink & version_node_add_link | ( | bNodeTree & | ntree, |
| bNode & | node_a, | ||
| bNodeSocket & | socket_a, | ||
| bNode & | node_b, | ||
| bNodeSocket & | socket_b ) |
Definition at line 247 of file versioning_common.cc.
References BKE_ntree_update_tag_link_added(), BLI_addtail(), BLI_assert, bNodeLink::fromnode, bNodeLink::fromsock, bNodeSocket::in_out, bNodeTree::links, SOCK_IN, bNodeLink::tonode, bNodeLink::tosock, and version_node_add_link().
Referenced by hide_simulation_node_skip_socket_value(), version_geometry_nodes_extrude_smooth_propagation(), version_geometry_nodes_primitive_uv_maps(), and version_node_add_link().
| bNodeSocket & version_node_add_socket | ( | bNodeTree & | ntree, |
| bNode & | node, | ||
| const eNodeSocketInOut | in_out, | ||
| const char * | idname, | ||
| const char * | identifier ) |
Definition at line 215 of file versioning_common.cc.
References BKE_ntree_update_tag_socket_new(), BLI_addtail(), bNodeSocket::default_value, bNodeSocket::identifier, bNodeSocket::idname, bNodeSocket::in_out, bNodeSocket::limit, bNodeSocket::name, node_socket_init_default_value_data(), blender::bke::node_socket_type_find(), bNodeSocket::runtime, SOCK_IN, STRNCPY, blender::bke::bNodeSocketType::subtype, blender::bke::bNodeSocketType::type, and bNodeSocket::type.
Referenced by hide_simulation_node_skip_socket_value(), version_geometry_nodes_extrude_smooth_propagation(), and version_geometry_nodes_primitive_uv_maps().
| bNodeSocket * version_node_add_socket_if_not_exist | ( | bNodeTree * | ntree, |
| bNode * | node, | ||
| int | in_out, | ||
| int | type, | ||
| int | subtype, | ||
| const char * | identifier, | ||
| const char * | name ) |
Definition at line 271 of file versioning_common.cc.
References blender::bke::node_add_static_socket(), and blender::bke::node_find_socket().
Referenced by blo_do_versions_300().
Replace the ID name of all nodes in the tree with the given type with the new name.
Definition at line 287 of file versioning_common.cc.
References STREQ, and STRNCPY.
Referenced by blo_do_versions_300().
| void version_node_input_socket_name | ( | bNodeTree * | ntree, |
| const int | node_type, | ||
| const char * | old_name, | ||
| const char * | new_name ) |
Definition at line 167 of file versioning_common.cc.
References change_node_socket_name().
Referenced by blo_do_versions_300(), version_principled_bsdf_coat(), version_principled_bsdf_rename_sockets(), versioning_replace_legacy_combined_and_separate_color_nodes(), versioning_replace_legacy_mix_rgb_node(), and versioning_replace_musgrave_texture_node().
| void version_node_output_socket_name | ( | bNodeTree * | ntree, |
| const int | node_type, | ||
| const char * | old_name, | ||
| const char * | new_name ) |
Definition at line 179 of file versioning_common.cc.
References change_node_socket_name().
Referenced by blo_do_versions_300(), versioning_replace_legacy_combined_and_separate_color_nodes(), and versioning_replace_legacy_mix_rgb_node().
| void version_node_socket_id_delim | ( | bNodeSocket * | socket | ) |
Convert SocketName.001 unique name format to SocketName_001. Previously both were used.
Definition at line 133 of file versioning_common.cc.
References blender::StringRef::drop_known_prefix(), bNodeSocket::identifier, blender::StringRefBase::is_empty(), bNodeSocket::name, and blender::StringRefBase::startswith().
Referenced by version_node_tree_socket_id_delim().
| void version_node_socket_index_animdata | ( | Main * | bmain, |
| int | node_tree_type, | ||
| int | node_type, | ||
| int | socket_index_orig, | ||
| int | socket_index_offset, | ||
| int | total_number_of_sockets ) |
Adjust animation data for newly added node sockets.
Node sockets are addressed by their index (in their RNA path, and thus FCurves/drivers), and thus when a new node is added in the middle of the list, existing animation data needs to be adjusted.
Since this is about animation data, it only concerns input sockets.
| node_tree_type | Node tree type that has these nodes, for example NTREE_SHADER. |
| node_type | Node type to adjust, for example SH_NODE_BSDF_PRINCIPLED. |
| socket_index_orig | The original index of the moved socket; when socket 4 moved to 6, pass 4 here. |
| socket_index_offset | The offset of the nodes, so when socket 4 moved to 6, pass 2 here. |
| total_number_of_sockets | The total number of sockets in the node. |
Definition at line 298 of file versioning_common.cc.
References BKE_animdata_fix_paths_rename_all_ex(), BLI_sprintfN(), BLI_str_escape(), FOREACH_NODETREE_BEGIN, FOREACH_NODETREE_END, MEM_freeN(), and MEM_mallocN.
Referenced by do_versions_after_linking_290(), do_versions_after_linking_300(), and do_versions_after_linking_400().
| bool version_node_socket_is_used | ( | bNodeSocket * | sock | ) |
Definition at line 128 of file versioning_common.cc.
References bNodeSocket::flag, and SOCK_IS_LINKED.
Referenced by update_noise_and_wave_distortion(), update_vector_math_node_add_and_subtract_operators(), update_vector_math_node_average_operator(), update_vector_math_node_cross_product_operator(), update_vector_math_node_dot_product_operator(), update_vector_math_node_normalize_operator(), update_voronoi_node_crackle(), and update_voronoi_node_square_distance().
| void version_node_socket_name | ( | bNodeTree * | ntree, |
| const int | node_type, | ||
| const char * | old_name, | ||
| const char * | new_name ) |
Definition at line 154 of file versioning_common.cc.
References change_node_socket_name().
Referenced by blo_do_versions_290(), and blo_do_versions_300().
| void version_socket_update_is_used | ( | bNodeTree * | ntree | ) |
The versioning code generally expects SOCK_IS_LINKED to be set correctly. This function updates the flag on all sockets after changes to the node tree.
Definition at line 340 of file versioning_common.cc.
References bNodeTree::links, LISTBASE_FOREACH, and SOCK_IS_LINKED.
Referenced by add_realize_node_tree(), ambient_occlusion_node_relink(), displacement_node_insert(), do_versions_material_convert_legacy_blend_mode(), update_mapping_node_inputs_and_properties(), update_math_node_single_operand_operators(), update_noise_and_wave_distortion(), update_vector_math_node_add_and_subtract_operators(), update_vector_math_node_average_operator(), update_vector_math_node_cross_product_operator(), update_vector_math_node_dot_product_operator(), update_vector_math_node_normalize_operator(), update_voronoi_node_coloring(), update_voronoi_node_crackle(), update_voronoi_node_square_distance(), version_refraction_depth_to_thickness_value(), version_update_node_input(), versioning_replace_musgrave_texture_node(), and versioning_update_noise_texture_node().
| void version_update_node_input | ( | bNodeTree * | ntree, |
| FunctionRef< bool(bNode *)> | check_node, | ||
| const char * | socket_identifier, | ||
| FunctionRef< void(bNode *, bNodeSocket *)> | update_input, | ||
| FunctionRef< void(bNode *, bNodeSocket *, bNode *, bNodeSocket *)> | update_input_link ) |
Definition at line 509 of file versioning_common.cc.
References bNodeSocket::identifier, bNodeTree::links, LISTBASE_FOREACH, LISTBASE_FOREACH_BACKWARD_MUTABLE, blender::bke::node_find_socket(), blender::bke::node_remove_link(), bNodeTree::nodes, SOCK_IN, STREQ, and version_socket_update_is_used().
Referenced by square_roughness_node_insert(), and version_principled_bsdf_sheen().