9#define DNA_DEPRECATED_ALLOW
31#define DNA_GENFILE_VERSIONING_MACROS
58#undef DNA_GENFILE_VERSIONING_MACROS
91#include "RNA_prototypes.hh"
122 if (
min !=
nullptr) {
126 if (
max !=
nullptr) {
130 if (soft_min !=
nullptr) {
135 if (soft_max !=
nullptr) {
140 if (
step !=
nullptr) {
144 if (default_value !=
nullptr) {
150 sizeof(
int) * default_value->
len);
164 if (
min !=
nullptr) {
168 if (
max !=
nullptr) {
172 if (soft_min !=
nullptr) {
177 if (soft_max !=
nullptr) {
182 if (
step !=
nullptr) {
186 if (precision !=
nullptr) {
190 if (default_value !=
nullptr) {
192 const int array_len = default_value->
len;
205 sizeof(
double) * array_len);
218 if (default_value !=
nullptr && default_value->
type ==
IDP_STRING) {
226 if (idprop_group ==
nullptr) {
231 if (ui_container ==
nullptr) {
237 if (prop_ui_data ==
nullptr) {
353 if (ob->type ==
OB_ARMATURE && ob->pose !=
nullptr) {
362 if (scene->ed !=
nullptr) {
391 ID *id_prev =
nullptr;
393 if (id_prev ==
nullptr) {
418 *new_defbase =
object->defbase;
428#define STRIP_SPEED_INTEGRATE (1 << 0)
429#define STRIP_SPEED_COMPRESS_IPO_Y (1 << 2)
434 const char *substr =
nullptr;
435 float globalSpeed_legacy =
v->globalSpeed_legacy;
437 if (globalSpeed_legacy == 1.0f) {
442 v->speed_fader = globalSpeed_legacy *
443 (
float(strip->input1->len) /
446 strip->input1->start),
452 v->speed_fader = strip->speed_fader_legacy * globalSpeed_legacy;
455 globalSpeed_legacy *= 100.0f;
457 v->speed_fader_length = strip->speed_fader_legacy * globalSpeed_legacy;
458 substr =
"speed_length";
462 v->speed_fader_frame_number = int(strip->speed_fader_legacy * globalSpeed_legacy);
463 substr =
"speed_frame_number";
468 if (substr || globalSpeed_legacy != 1.0f) {
470 &scene->
id, strip, &RNA_Strip,
"speed_factor", 0,
nullptr);
472 if (globalSpeed_legacy != 1.0f) {
475 bezt->
vec[0][1] *= globalSpeed_legacy;
476 bezt->
vec[1][1] *= globalSpeed_legacy;
477 bezt->
vec[2][1] *= globalSpeed_legacy;
493#undef STRIP_SPEED_INTEGRATE
494#undef STRIP_SPEED_COMPRESS_IPO_Y
509 for (
int i = 0;
i < 3;
i++) {
527 if (
ELEM(node->type_legacy,
560 bmain,
"Realize Instances 2.93 Legacy",
"GeometryNodeTree");
640 char name_esc[(
sizeof(strip->
name) - 2) * 2];
642 char *path =
BLI_sprintfN(
"sequence_editor.sequences_all[\"%s\"].pitch", name_esc);
644 if (fcu !=
nullptr) {
662 const Scene *scene =
static_cast<const Scene *
>(user_data);
673 if (strip->pitch_legacy <= 0.0f) {
674 strip->pitch_legacy = 1.0f;
698 switch (storage->
mode) {
704 sample_nearest_surface->
locx_legacy = node->locx_legacy;
705 sample_nearest_surface->
locy_legacy = node->locy_legacy;
706 static auto socket_remap = []() {
708 map.
add_new(
"Attribute",
"Value");
709 map.
add_new(
"Attribute_001",
"Value");
710 map.
add_new(
"Attribute_002",
"Value");
711 map.
add_new(
"Attribute_003",
"Value");
712 map.
add_new(
"Attribute_004",
"Value");
714 map.
add_new(
"Source Position",
"Sample Position");
734 sample_storage->
domain = int8_t(domain);
736 sample_index->
locx_legacy = node->locx_legacy + 25.0f;
738 if (old_geometry_socket->
link) {
751 sample_nearest->
custom2 = int8_t(domain);
752 sample_nearest->
locx_legacy = node->locx_legacy - 25.0f;
754 if (old_geometry_socket->
link) {
762 static auto sample_nearest_remap = []() {
764 map.
add_new(
"Source Position",
"Sample Position");
769 static auto sample_index_remap = []() {
771 map.
add_new(
"Attribute",
"Value");
772 map.
add_new(
"Attribute_001",
"Value");
773 map.
add_new(
"Attribute_002",
"Value");
774 map.
add_new(
"Attribute_003",
"Value");
775 map.
add_new(
"Attribute_004",
"Value");
776 map.
add_new(
"Source Position",
"Sample Position");
796 sample_storage->
clamp = 1;
800 const bool index_was_linked =
802 static auto socket_remap = []() {
804 map.
add_new(
"Attribute",
"Value");
805 map.
add_new(
"Attribute_001",
"Value");
806 map.
add_new(
"Attribute_002",
"Value");
807 map.
add_new(
"Attribute_003",
"Value");
808 map.
add_new(
"Attribute_004",
"Value");
809 map.
add_new(
"Source",
"Geometry");
815 if (!index_was_linked) {
846 if (!
ELEM(node->type_legacy,
859 if (
STREQ(socket->name,
"UV Map")) {
860 uv_map_output_socket = socket;
863 primitive_output_socket = socket;
866 if (uv_map_output_socket !=
nullptr) {
870 ntree, *node,
SOCK_OUT,
"NodeSocketVector",
"UV Map");
873 "GeometryNodeStoreNamedAttribute");
874 new_nodes.
append(store_attribute_node);
876 store_attribute_node->
locx_legacy = node->locx_legacy + 25;
877 store_attribute_node->
locy_legacy = node->locy_legacy;
879 store_attribute_node->
storage = &storage;
886 ntree, *store_attribute_node,
SOCK_IN,
"NodeSocketGeometry",
"Geometry");
888 ntree, *store_attribute_node,
SOCK_IN,
"NodeSocketString",
"Name");
890 ntree, *store_attribute_node,
SOCK_IN,
"NodeSocketVector",
"Value");
892 ntree, *store_attribute_node,
SOCK_OUT,
"NodeSocketGeometry",
"Geometry");
894 if (link->fromsock == primitive_output_socket) {
895 link->fromnode = store_attribute_node;
896 link->fromsock = &store_attribute_geometry_output;
908 *primitive_output_socket,
909 *store_attribute_node,
910 store_attribute_geometry_input);
912 ntree, *node, *uv_map_output_socket, *store_attribute_node, store_attribute_value_input);
916 for (
bNode *node : new_nodes) {
935 if (node->idname !=
StringRef(
"GeometryNodeExtrudeMesh")) {
949 in_links_per_socket.
add(link->tosock, link);
950 out_links_per_socket.
add(link->fromsock, link);
955 if (!geometry_in_link || geometry_out_links.
is_empty()) {
959 const bool versioning_already_done = [&]() {
972 *capture_node,
SOCK_IN,
"Value_003");
974 if (!capture_in_link) {
980 if (geometry_out_links.
size() != 1) {
987 bNode *set_smooth_node = geometry_out_link->
tonode;
989 *set_smooth_node,
SOCK_IN,
"Shade Smooth");
991 if (!connecting_link) {
994 if (connecting_link->
fromnode != capture_node) {
999 if (versioning_already_done) {
1005 capture_node.
locx_legacy = node->locx_legacy - 25;
1007 new_nodes.
append(&capture_node);
1009 capture_node.
storage = capture_node_storage;
1013 ntree, capture_node,
SOCK_IN,
"NodeSocketGeometry",
"Geometry");
1015 ntree, capture_node,
SOCK_OUT,
"NodeSocketGeometry",
"Geometry");
1017 ntree, capture_node,
SOCK_IN,
"NodeSocketBool",
"Value_003");
1019 ntree, capture_node,
SOCK_OUT,
"NodeSocketBool",
"Attribute_003");
1026 ntree, is_smooth_node,
SOCK_OUT,
"NodeSocketBool",
"Smooth");
1027 new_nodes.
append(&is_smooth_node);
1029 ntree, is_smooth_node, is_smooth_out, capture_node, capture_node_value_in);
1031 geometry_in_link->
tonode = &capture_node;
1032 geometry_in_link->
tosock = &capture_node_geo_in;
1037 set_smooth_node.
locx_legacy = node->locx_legacy + 25;
1039 new_nodes.
append(&set_smooth_node);
1041 ntree, set_smooth_node,
SOCK_IN,
"NodeSocketGeometry",
"Geometry");
1043 ntree, set_smooth_node,
SOCK_OUT,
"NodeSocketGeometry",
"Geometry");
1045 ntree, set_smooth_node,
SOCK_IN,
"NodeSocketBool",
"Shade Smooth");
1048 ntree, *node, *geometry_out_socket, set_smooth_node, set_smooth_node_geo_in);
1050 for (
bNodeLink *link : geometry_out_links) {
1051 link->fromnode = &set_smooth_node;
1052 link->fromsock = &set_smooth_node_geo_out;
1056 capture_node_attribute_out,
1058 set_smooth_node_smooth_in);
1062 for (
bNode *node : new_nodes) {
1079 if (adt ==
nullptr || adt->
action ==
nullptr ||
1097 if (text->id.us == 0) {
1118 if (scene->ed !=
nullptr) {
1132 if (imapaint->
canvas !=
nullptr &&
1135 imapaint->
canvas =
nullptr;
1137 if (imapaint->
stencil !=
nullptr &&
1142 if (imapaint->
clone !=
nullptr &&
1145 imapaint->
clone =
nullptr;
1171 if (
STREQ(link->tosock->identifier,
"Switch")) {
1172 bNode *to_node = link->tonode;
1182 link->tosock = link->tosock->next;
1205 bNodeTree *realize_instances_node_tree =
nullptr;
1211 if (md->next ==
nullptr) {
1226 if (realize_instances_node_tree ==
nullptr) {
1229 new_nmd->
node_group = realize_instances_node_tree;
1252 if (adt ==
nullptr) {
1267 sizeof(dvar->name));
1291 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
1302 if (timeline_region ==
nullptr) {
1316 if (
ed ==
nullptr) {
1339 const bool is_first_space = sl == area->spacedata.first;
1340 ListBase *regionbase = is_first_space ? &area->regionbase : &sl->regionbase;
1342 if (region ==
nullptr) {
1382 if (socket == node->inputs.first) {
1385 STRNCPY_UTF8(socket->name, socket->name[0] ==
'A' ?
"False" :
"True");
1388 char number_suffix[8];
1391 socket->identifier,
sizeof(socket->identifier), socket->name, number_suffix);
1402 char *old_path = *p_old_path;
1404 if (old_path ==
nullptr) {
1408 int len = strlen(old_path);
1413 old_path[
len - 1] =
'z';
1422 int index = (old_path[
len - 1] ==
'y' ? 2 : 0);
1424 old_path[
len - 1] = 0;
1459 if (bone->flag & BONE_ADD_PARENT_END_ROLL) {
1463 copy_v3_fl3(bone->scale_in, bone->scale_in_x, 1.0f, bone->scale_in_z);
1464 copy_v3_fl3(bone->scale_out, bone->scale_out_x, 1.0f, bone->scale_out_z);
1476 if (
data->points ==
nullptr) {
1477 data->numpoints = 0;
1488 const float old_value = socket_value->
value;
1550 if (strstr(property->name,
"_use_attribute") || strstr(property->name,
"_attribute_name")) {
1560 if (strstr(property->name,
"_use_attribute") || strstr(property->name,
"_attribute_name")) {
1565 SNPRINTF(use_attribute_prop_name,
"%s%s", property->name,
"_use_attribute");
1571 SNPRINTF(attribute_name_prop_name,
"%s%s", property->name,
"_attribute_name");
1583 const float SAFE_THRESHOLD = 1.0e-5f;
1584 const float CRITICAL_THRESHOLD = 1.0e-9f;
1585 const float THRESHOLD_SQUARED = CRITICAL_THRESHOLD * CRITICAL_THRESHOLD;
1587 const float x =
nor[0];
1588 const float y =
nor[1];
1589 const float z =
nor[2];
1591 const float theta = 1.0f +
y;
1592 const float theta_alt =
x *
x +
z *
z;
1593 float rMatrix[3][3], bMatrix[3][3];
1602 if (theta > SAFE_THRESHOLD || (theta > CRITICAL_THRESHOLD && theta_alt > THRESHOLD_SQUARED)) {
1611 if (theta > SAFE_THRESHOLD) {
1613 bMatrix[0][0] = 1 -
x *
x / theta;
1614 bMatrix[2][2] = 1 -
z *
z / theta;
1615 bMatrix[2][0] = bMatrix[0][2] = -
x *
z / theta;
1619 bMatrix[0][0] = (
x +
z) * (
x -
z) / -theta_alt;
1620 bMatrix[2][2] = -bMatrix[0][0];
1621 bMatrix[2][0] = bMatrix[0][2] = 2.0f *
x *
z / theta_alt;
1627 bMatrix[0][0] = bMatrix[1][1] = -1.0;
1638 const float tail[3],
1639 const float check_x_axis[3],
1640 const float check_y_axis[3],
1643 const float SAFE_THRESHOLD = 1.0e-5f;
1644 float vec[3], bone_mat[3][3], vec2[3];
1651 if (1.0f + vec[1] < SAFE_THRESHOLD * 2 && (vec[0] || vec[2])) {
1660 if (
dot_v3v3(bone_mat[0], check_x_axis) < 0.999f) {
1675 bone->head, bone->tail, bone->bone_mat[0], bone->bone_mat[1], &bone->roll);
1679 bone->arm_head, bone->arm_tail, bone->arm_mat[0], bone->arm_mat[1], &bone->arm_roll);
1712 if (!
STREQ(link->tosock->identifier,
"Position")) {
1719 const bool offset_enabled =
1721 if (offset_enabled) {
1723 link->tosock = old_offset_socket->
next;
1751 strip->
startofs -= strip->startstill_legacy;
1752 strip->
endofs -= strip->endstill_legacy;
1753 strip->startstill_legacy = 0;
1754 strip->endstill_legacy = 0;
1760 if ((strip->
len == 1) &&
1805 opop->subitem_local_name,
1807 opop->subitem_local_index));
1808 bConstraint *constraint_src = constraint_anchor !=
nullptr ?
1809 constraint_anchor->
next :
1812 if (constraint_src ==
nullptr) {
1814 CLOG_ERROR(&
LOG,
"Could not find source constraint in stored override data");
1819 opop->subitem_reference_name = opop->subitem_local_name;
1821 opop->subitem_reference_index = opop->subitem_local_index;
1822 opop->subitem_local_index++;
1832 if (op !=
nullptr) {
1839 opop->subitem_local_name,
1841 opop->subitem_local_index));
1846 if (mod_src ==
nullptr) {
1848 CLOG_ERROR(&
LOG,
"Could not find source modifier in stored override data");
1853 opop->subitem_reference_name = opop->subitem_local_name;
1855 opop->subitem_reference_index = opop->subitem_local_index;
1856 opop->subitem_local_index++;
1861 if (op !=
nullptr) {
1868 opop->subitem_local_name,
1870 opop->subitem_local_index));
1872 gp_mod_anchor->
next :
1874 object->greasepencil_modifiers.first);
1876 if (gp_mod_src ==
nullptr) {
1878 CLOG_ERROR(&
LOG,
"Could not find source GP modifier in stored override data");
1883 opop->subitem_reference_name = opop->subitem_local_name;
1885 opop->subitem_reference_index = opop->subitem_local_index;
1886 opop->subitem_local_index++;
1891 if (op !=
nullptr) {
1895 if (
object->pose !=
nullptr) {
1897 char rna_path[26 + (
sizeof(pchan->name) * 2) + 1];
1898 char name_esc[
sizeof(pchan->name) * 2];
1900 SNPRINTF_UTF8(rna_path,
"pose.bones[\"%s\"].constraints", name_esc);
1902 if (op !=
nullptr) {
1912 if (anim_data ==
nullptr) {
1920 if (op !=
nullptr) {
1929 opop->subitem_reference_name = opop->subitem_local_name;
1930 opop->subitem_local_name =
nullptr;
1931 opop->subitem_reference_index = opop->subitem_local_index;
1932 opop->subitem_local_index++;
1948 data->blend_type = node->custom1;
1950 data->clamp_factor = 1;
1953 node->storage =
data;
1963 if (
format->view_settings.curve_mapping) {
1965 if (
format != &scene->r.im_format &&
ELEM(
format->view_settings.curve_mapping,
1966 scene->view_settings.curve_mapping,
1967 scene->r.im_format.view_settings.curve_mapping))
1970 format->view_settings.curve_mapping);
1976 if (
format->view_settings.curve_mapping->cm[0].curve ==
nullptr) {
1978 format->view_settings.curve_mapping =
nullptr;
2011 "versioning: tool props region for file",
2045 "versioning: channels region for sequencer",
2050 "versioning: preview region for sequencer",
2064 const char *parent_rna_path,
2072 char name_esc_strip[
sizeof(strip->
name) * 2];
2075 const std::string rna_path_strip = std::string(parent_rna_path) +
".strips[\"" + name_esc_strip +
2079 const std::string rna_path_prop = rna_path_strip +
".frame_start";
2081 liboverride, rna_path_prop.c_str(), (rna_path_prop +
"_raw").c_str());
2085 const std::string rna_path_prop = rna_path_strip +
".frame_end";
2087 liboverride, rna_path_prop.c_str(), (rna_path_prop +
"_raw").c_str());
2091 const std::string rna_path_prop = rna_path_strip +
".frame_start_ui";
2096 const std::string rna_path_prop = rna_path_strip +
".frame_end_ui";
2116 char *rna_path_track =
BLI_sprintfN(
"animation_data.nla_tracks[%d]", track_index);
2131 enum { SCE_SNAP_SEQ = (1 << 7) };
2135 if (!DNA_struct_member_exists(fd->
filesdna,
"MirrorModifierData",
"float",
"bisect_threshold"))
2148 if (!DNA_struct_member_exists(fd->
filesdna,
"BrushGpencilSettings",
"int",
"dilate_pixels")) {
2150 if (
brush->gpencil_settings) {
2151 brush->gpencil_settings->dilate_pixels = 1;
2160 if (!DNA_struct_member_exists(fd->
filesdna,
"bPoseChannel",
"float",
"custom_scale_xyz[3]")) {
2162 if (ob->pose ==
nullptr) {
2166 copy_v3_fl(pchan->custom_scale_xyz, pchan->custom_scale);
2178 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
2182 if (new_sidebar !=
nullptr) {
2210 if (!DNA_struct_member_exists(fd->
filesdna,
"FileAssetSelectParams",
"short",
"import_method"))
2227 if (!DNA_struct_member_exists(fd->
filesdna,
"Bone",
"int",
"bbone_flag")) {
2236 copy_v3_fl3(pchan->scale_in, pchan->scale_in_x, 1.0f, pchan->scale_in_z);
2237 copy_v3_fl3(pchan->scale_out, pchan->scale_out_x, 1.0f, pchan->scale_out_z);
2263 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
2268 if (spreadsheet_dataset_region) {
2295 tool_settings->
snap_flag |= SCE_SNAP_SEQ;
2296 short snap_mode = tool_settings->
snap_mode;
2299 tool_settings->
snap_mode &= ~((1 << 4) | (1 << 5) | (1 << 6));
2302 if (snap_mode & (1 << 4)) {
2305 if (snap_mode & (1 << 5)) {
2308 if (snap_mode & (1 << 6)) {
2311 if (snap_node_mode & (1 << 5)) {
2314 if (snap_node_mode & (1 << 6)) {
2317 if (snap_uv_mode & (1 << 4)) {
2330 if (scene->master_collection !=
nullptr) {
2333 sizeof(scene->master_collection->id.name) - 2);
2350 STRNCPY_UTF8(node->idname,
"GeometryNodeMeshSubdivide");
2368 mat->lineart.mat_occlusion = 1;
2375 if (!DNA_struct_member_exists(
2376 fd->
filesdna,
"SurfaceDeformModifierData",
"int",
"mesh_verts_num"))
2403 if (!DNA_struct_member_exists(
2404 fd->
filesdna,
"WorkSpace",
"AssetLibraryReference",
"asset_library"))
2411 if (!DNA_struct_member_exists(
2412 fd->
filesdna,
"FileAssetSelectParams",
"AssetLibraryReference",
"asset_library_ref"))
2439 tool_settings->
snap_flag &= ~SCE_SNAP_SEQ;
2463 if (!DNA_struct_member_exists(
2464 fd->
filesdna,
"View3DOverlay",
"float",
"normals_constant_screen_size"))
2525 object->visibility_flag |=
flag;
2530 if (!DNA_struct_member_exists(
2531 fd->
filesdna,
"WorkSpace",
"AssetLibraryReference",
"asset_library_ref"))
2538 if (!DNA_struct_member_exists(
2539 fd->
filesdna,
"FileAssetSelectParams",
"AssetLibraryReference",
"asset_library_ref"))
2597 bNode *node = link->tonode;
2598 if (
STREQ(link->tosock->identifier,
"Size") && link->tosock->type ==
SOCK_FLOAT) {
2599 bNode *link_fromnode = link->fromnode;
2605 ntree, node, socket);
2607 *ntree, *link_fromnode, *link_fromsock, *node, *new_socket);
2617 if (
STREQ(socket->identifier,
"Size") && (socket->type ==
SOCK_FLOAT)) {
2627 if (!DNA_struct_member_exists(
2628 fd->
filesdna,
"LineartGpencilModifierData",
"bool",
"use_crease_on_smooth"))
2673 seq_show_safe_center | seq_show_metadata);
2675 seq_show_strip_source | seq_show_strip_duration |
2676 seq_show_grid | show_strip_offset);
2688 if (scene->ed !=
nullptr) {
2707 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
2711 region->v2d.min[1] = 4.0f;
2731 R_EXR_TILE_FILE = (1 << 10),
2732 R_FULL_SAMPLE = (1 << 15),
2735 scene->r.scemode &= ~(R_EXR_TILE_FILE | R_FULL_SAMPLE);
2769 switch (sl->spacetype) {
2795 switch (sl->spacetype) {
2797 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
2817 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
2819 ARegion *region_tool =
nullptr, *region_head =
nullptr;
2820 int region_tool_index = -1, region_head_index = -1,
i;
2823 region_tool = region;
2824 region_tool_index =
i;
2827 region_head = region;
2828 region_head_index =
i;
2831 if ((region_tool && region_head) && (region_head_index > region_tool_index)) {
2840 if (scene->ed !=
nullptr) {
2860 if (scene->ed !=
nullptr) {
2871 switch (sl->spacetype) {
2874 enum { SEQ_DRAW_SEQUENCE = 0 };
2875 if (sseq->
mainb == SEQ_DRAW_SEQUENCE) {
2921 if (!DNA_struct_exists(fd->
filesdna,
"SpaceNodeOverlay")) {
2954 wm->xr.session_settings.base_scale = 1.0f;
2978 if (node->storage ==
nullptr) {
2981 node->storage =
data;
3037 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3041 region->v2d.min[1] = 1.0f;
3054 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3058 region->v2d.minzoom = std::min(region->v2d.minzoom, 0.05f);
3100 if (node->storage ==
nullptr) {
3103 data->operation = node->custom1;
3105 node->storage =
data;
3129 if (node->storage ==
nullptr) {
3131 data->clamp = node->custom1;
3133 data->interpolation_type = node->custom2;
3134 node->storage =
data;
3146 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3174 if (!DNA_struct_member_exists(fd->
filesdna,
"View3DOverlay",
"float",
"bone_wire_alpha")) {
3220 if (scene->ed !=
nullptr) {
3230 ~(short(
SCE_SNAP) | short(SCE_SNAP_SEQ));
3231 if (tool_settings->
snap_flag & SCE_SNAP_SEQ) {
3233 tool_settings->
snap_flag &= ~SCE_SNAP_SEQ;
3281 if (gpmd->
step == 1 && gpmd->
factor <= 0.5f) {
3287 gpmd->
step + 2.0f)));
3325 actlayer = me->vert_data.layers + vact1;
3327 else if (vact2 != -1) {
3328 actlayer = me->corner_data.layers + vact2;
3370 if (
brush->curves_sculpt_settings !=
nullptr) {
3374 brush->curves_sculpt_settings->add_amount = 1;
3401 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3416 if (timeline_region !=
nullptr) {
3426 if (
ed ==
nullptr) {
3480 actlayer = me->vert_data.layers + vact1;
3482 else if (vact2 != -1) {
3483 actlayer = me->corner_data.layers + vact2;
3535 if (node->storage ==
nullptr) {
3539 node->storage =
data;
3570 if (settings ==
nullptr) {
3579 if (!DNA_struct_member_exists(fd->
filesdna,
"Sculpt",
"float",
"automasking_cavity_factor")) {
3581 if (scene->toolsettings && scene->toolsettings->sculpt) {
3582 scene->toolsettings->sculpt->automasking_cavity_factor = 0.5f;
3590 scene->r.bake.max_ray_distance =
safe_sqrtf(scene->r.bake.max_ray_distance);
3600 if (
brush->curves_sculpt_settings->points_per_curve == 0) {
3601 brush->curves_sculpt_settings->points_per_curve = 8;
3606 if (!DNA_struct_member_exists(fd->
filesdna,
"ImagePackedFile",
"int",
"tile_number")) {
3611 imapf->tile_number = 1001;
3619 if (
ed !=
nullptr) {
3664 ((
SpaceClip *)sl)->mask_info.blend_factor = 1.0;
3703 if (sock->storage) {
3709 if (node->storage) {
3733 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3737 if (channels_region) {
3738 MEM_delete(channels_region->
runtime);
3752 brush->curves_sculpt_settings->density_add_attempts = 100;
3768 if (!DNA_struct_member_exists(fd->
filesdna,
"ImageTile",
"int",
"gen_x")) {
3771 tile->gen_x = ima->gen_x;
3772 tile->gen_y = ima->gen_y;
3773 tile->gen_type = ima->gen_type;
3774 tile->gen_flag = ima->gen_flag;
3775 tile->gen_depth = ima->gen_depth;
3791 for (
int i = 0;
i <
mesh->faces_num;
i++) {
3792 face_sets[
i] =
abs(face_sets[
i]);
3801 switch (sl->spacetype) {
3817 brush->automasking_cavity_factor = 0.5f;
3853 brush->automasking_cavity_factor = 1.0f;
3863 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3903 const float frame_center_x =
float(clip->lastsize[0]) / 2;
3904 const float frame_center_y =
float(clip->lastsize[1]) / 2;
3923 if (!DNA_struct_member_exists(fd->
filesdna,
"Image",
"short",
"seam_margin")) {
3925 image->seam_margin = 8;
3952 light->radius = light->area_size;
3956 if (!DNA_struct_member_exists(
3957 fd->
filesdna,
"BuildGpencilModifierData",
"float",
"speed_fac") ||
3958 !DNA_struct_member_exists(
3959 fd->
filesdna,
"BuildGpencilModifierData",
"float",
"speed_maxgap"))
3974 const int CV_SCULPT_SELECTION_ENABLED = (1 << 1);
3976 curves_id->flag &= ~CV_SCULPT_SELECTION_ENABLED;
3986 bool after_armature =
false;
3998 after_armature =
false;
4002 after_armature =
true;
4010 after_armature =
false;
4026 node->custom2 =
true;
4052 if (!DNA_struct_member_exists(fd->
filesdna,
"SceneEEVEE",
"int",
"shadow_pool_size")) {
4055 scene->eevee.shadow_pool_size = 512;
4073 if (
brush->curves_sculpt_settings->curve_parameter_falloff ==
nullptr) {
4075 1, 0.0f, 0.0f, 1.0f, 1.0f);
4083 if (!DNA_struct_member_exists(fd->
filesdna,
"View3DOverlay",
"float",
"retopology_offset")) {
4100 if (
ed !=
nullptr) {
4122 const ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
4143 const char *tool_replace_table[][2] = {
4144 {
"selection_paint",
"Paint Selection"},
4146 {
"delete",
"Delete"},
4147 {
"density",
"Density"},
4149 {
"snake_hook",
"Snake Hook"},
4150 {
"grow_shrink",
"Grow / Shrink"},
4194 if (
ed !=
nullptr) {
4213 if (ob->type !=
OB_ARMATURE || ob->pose ==
nullptr) {
4216 bPose *pose = ob->pose;
4228 short snap_mode_geom = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 4) | (1 << 5);
4229 scene->toolsettings->snap_mode_tools = snap_mode_geom;
4230 scene->toolsettings->plane_axis = 2;
4242 const ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
4269 scene->toolsettings->uvcalc_iterations = 10;
4270 scene->toolsettings->uvcalc_weight_factor = 1.0f;
4271 STRNCPY_UTF8(scene->toolsettings->uvcalc_weight_group,
"uv_importance");
Blender kernel action and pose functionality.
void BKE_action_groups_reconstruct(bAction *act)
void BKE_animdata_main_cb(struct Main *bmain, blender::FunctionRef< void(ID *, AnimData *)> func)
AnimData * BKE_animdata_from_id(const ID *id)
void vec_roll_to_mat3(const float vec[3], float roll, float r_mat[3][3])
void mat3_to_vec_roll(const float mat[3][3], float r_vec[3], float *r_roll)
void BKE_asset_library_reference_init_default(AssetLibraryReference *library_ref)
void BKE_id_attributes_default_color_set(struct ID *id, std::optional< blender::StringRef > name)
bool BKE_attribute_rename(AttributeOwner &owner, blender::StringRef old_name, blender::StringRef new_name, struct ReportList *reports)
void BKE_id_attributes_active_color_set(struct ID *id, std::optional< blender::StringRef > name)
#define BKE_SCENE_COLLECTION_NAME
void BKE_nurb_knot_calc_u(Nurb *nu)
void BKE_nurb_knot_calc_v(Nurb *nu)
Low-level operations for curves.
CustomData interface, see also DNA_customdata_types.h.
const void * CustomData_get_layer(const CustomData *data, eCustomDataType type)
int CustomData_get_active_layer_index(const CustomData *data, eCustomDataType type)
int CustomData_get_render_layer_index(const CustomData *data, eCustomDataType type)
void BKE_fmodifier_name_set(FModifier *fcm, const char *name)
FCurve * BKE_fcurve_find(ListBase *list, const char rna_path[], int array_index)
FCurve * id_data_find_fcurve(ID *id, void *data, StructRNA *type, const char *prop_name, int index, bool *r_driven)
#define DRIVER_TARGETS_LOOPER_BEGIN(dvar)
#define DRIVER_TARGETS_LOOPER_END
IDProperty * IDP_GetPropertyFromGroup(const IDProperty *prop, blender::StringRef name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_FreeFromGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
float IDP_coerce_to_float_or_zero(const IDProperty *prop)
eIDPropertyUIDataType IDP_ui_data_type(const IDProperty *prop)
bool IDP_ui_data_supported(const IDProperty *prop)
#define IDP_array_double_get(prop)
@ IDP_UI_DATA_TYPE_BOOLEAN
@ IDP_UI_DATA_TYPE_UNSUPPORTED
@ IDP_UI_DATA_TYPE_STRING
int IDP_coerce_to_int_or_zero(const IDProperty *prop)
#define IDP_string_get(prop)
#define IDP_array_int_get(prop)
double IDP_coerce_to_double_or_zero(const IDProperty *prop)
bool IDP_AddToGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
IDProperty * IDP_GetProperties(ID *id) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
IDPropertyUIData * IDP_ui_data_ensure(IDProperty *prop)
#define IDP_array_float_get(prop)
void BKE_image_ensure_tile_token(char *filepath, size_t filepath_maxncpy)
void BKE_main_id_repair_duplicate_names_listbase(Main *bmain, ListBase *lb)
void id_sort_by_name(ListBase *lb, ID *id, ID *id_sorting_hint)
void id_fake_user_set(ID *id)
bool BKE_lib_override_library_property_rna_path_change(IDOverrideLibrary *liboverride, const char *old_rna_path, const char *new_rna_path)
void BKE_lib_override_library_property_operation_delete(IDOverrideLibraryProperty *liboverride_property, IDOverrideLibraryPropertyOperation *liboverride_property_operation)
IDOverrideLibraryProperty * BKE_lib_override_library_property_find(IDOverrideLibrary *liboverride, const char *rna_path)
bool BKE_lib_override_library_property_search_and_delete(IDOverrideLibrary *liboverride, const char *rna_path)
bool BKE_lib_override_library_is_user_edited(const ID *id)
#define FOREACH_MAIN_ID_END
ListBase * which_libbase(Main *bmain, short type)
#define MAIN_VERSION_FILE_ATLEAST(main, ver, subver)
#define FOREACH_MAIN_LISTBASE_END
#define FOREACH_MAIN_LISTBASE_BEGIN(_bmain, _lb)
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
bool BKE_main_namemap_validate_and_fix(Main &bmain)
void BKE_modifier_unique_name(ListBase *modifiers, ModifierData *md)
ModifierData * BKE_modifier_new(int type)
bool BKE_nlatrack_has_strips(ListBase *tracks)
#define NODE_GROUP_OUTPUT
#define FOREACH_NODETREE_END
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
#define GEO_NODE_SET_POSITION
#define GEO_NODE_MERGE_BY_DISTANCE
#define GEO_NODE_TRIANGULATE
#define GEO_NODE_SET_CURVE_HANDLES
#define GEO_NODE_MESH_PRIMITIVE_ICO_SPHERE
#define GEO_NODE_SUBDIVISION_SURFACE
#define SH_NODE_MIX_RGB_LEGACY
#define GEO_NODE_CURVE_SPLINE_PARAMETER
#define GEO_NODE_MESH_PRIMITIVE_CIRCLE
#define GEO_NODE_SAMPLE_NEAREST_SURFACE
#define GEO_NODE_SEPARATE_COMPONENTS
#define GEO_NODE_POINTS_TO_VERTICES
#define GEO_NODE_BOUNDING_BOX
#define GEO_NODE_SUBDIVIDE_MESH
#define SH_NODE_BSDF_PRINCIPLED
#define GEO_NODE_SET_POINT_RADIUS
#define GEO_NODE_SET_CURVE_TILT
#define SH_NODE_SUBSURFACE_SCATTERING
#define GEO_NODE_OFFSET_POINT_IN_CURVE
#define SH_NODE_MAP_RANGE
#define GEO_NODE_INPUT_MESH_ISLAND
#define GEO_NODE_MESH_PRIMITIVE_CUBE
#define GEO_NODE_DISTRIBUTE_POINTS_ON_FACES
#define GEO_NODE_MESH_PRIMITIVE_CONE
#define GEO_NODE_REPLACE_MATERIAL
#define GEO_NODE_REVERSE_CURVE
#define GEO_NODE_MESH_BOOLEAN
#define GEO_NODE_TRANSLATE_INSTANCES
#define GEO_NODE_MESH_PRIMITIVE_LINE
#define GEO_NODE_TRIM_CURVE
#define CMP_NODE_LENSDIST
#define GEO_NODE_FILLET_CURVE
#define GEO_NODE_MESH_PRIMITIVE_CYLINDER
#define GEO_NODE_CURVE_SPLINE_TYPE
#define GEO_NODE_MESH_PRIMITIVE_UV_SPHERE
#define GEO_NODE_SUBDIVIDE_CURVE
#define GEO_NODE_MESH_PRIMITIVE_GRID
#define GEO_NODE_SPLIT_EDGES
#define CMP_NODE_OUTPUT_FILE
#define GEO_NODE_ROTATE_INSTANCES
#define GEO_NODE_INPUT_MESH_EDGE_ANGLE
#define GEO_NODE_REALIZE_INSTANCES
#define GEO_NODE_RESAMPLE_CURVE
#define GEO_NODE_INPUT_INDEX
#define GEO_NODE_SAMPLE_CURVE
#define GEO_NODE_CAPTURE_ATTRIBUTE
#define GEO_NODE_FILL_CURVE
#define GEO_NODE_CURVE_LENGTH
#define GEO_NODE_CURVE_TO_MESH
#define GEO_NODE_STRING_TO_CURVES
#define GEO_NODE_POINTS_TO_VOLUME
#define GEO_NODE_SAMPLE_INDEX
#define GEO_NODE_COLLECTION_INFO
#define GEO_NODE_TRANSFER_ATTRIBUTE_DEPRECATED
#define GEO_NODE_SET_MATERIAL
#define GEO_NODE_SCALE_INSTANCES
#define GEO_NODE_SET_CURVE_RADIUS
#define GEO_NODE_CONVEX_HULL
#define GEO_NODE_JOIN_GEOMETRY
#define GEO_NODE_SAMPLE_NEAREST
#define FN_NODE_SLICE_STRING
ARegion * BKE_region_find_in_listbase_by_type(const ListBase *regionbase, const int region_type)
void void BKE_workspace_tool_id_replace_table(WorkSpace *workspace, const int space_type, const int mode, const char *idname_prefix_skip, const char *replace_table[][2], int replace_table_num) ATTR_NONNULL(1
#define BLI_assert_unreachable()
void * BLI_findlink(const ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void void BLI_movelisttolist(ListBase *dst, ListBase *src) ATTR_NONNULL(1
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
void void * BLI_listbase_string_or_index_find(const ListBase *listbase, const char *string, size_t string_offset, int index) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
void BLI_freelinkN(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#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_insertlinkafter(ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_addhead(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_listbase_swaplinks(ListBase *listbase, void *vlinka, void *vlinkb) ATTR_NONNULL(1
int BLI_listbase_count(const ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE float max_ff(float a, float b)
MINLINE float min_ff(float a, float b)
#define BLI_ASSERT_UNIT_V3(v)
MINLINE float safe_sqrtf(float a)
void unit_m3(float m[3][3])
void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
void axis_angle_normalized_to_mat3(float R[3][3], const float axis[3], float angle)
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v3_fl3(float v[3], float x, float y, float z)
MINLINE float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE bool compare_v3v3(const float v1[3], const float v2[3], float limit) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE float normalize_v3(float n[3])
bool BLI_path_extension_check(const char *path, const char *ext) ATTR_NONNULL(1
char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
#define SNPRINTF(dst, format,...)
int char char int BLI_strcasecmp(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
int bool bool BLI_str_endswith(const char *__restrict str, const char *__restrict end) ATTR_NONNULL(1
size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define SNPRINTF_UTF8(dst, format,...)
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define STRNCPY_UTF8(dst, src)
void BLI_uniquename(const struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t name_maxncpy) ATTR_NONNULL(1
#define BLI_string_join(...)
char * BLI_string_replaceN(const char *__restrict str, const char *__restrict substr_old, const char *__restrict substr_new) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
#define UNUSED_VARS_NDEBUG(...)
external readfile function prototypes.
#define CLOG_ERROR(clg_ref,...)
#define ID_IS_OVERRIDE_LIBRARY_REAL(_id)
#define ID_IS_LINKED(_id)
@ LIBOVERRIDE_OP_INSERT_AFTER
@ LIBOVERRIDE_FLAG_SYSTEM_DEFINED
@ ITASC_TRANSLATE_ROOT_BONES
@ TIME_CACHE_SIMULATION_NODES
@ NLASTRIP_EXTEND_HOLD_FORWARD
@ BBONE_ADD_PARENT_END_ROLL
@ SCULPT_BRUSH_TYPE_SMEAR
Object groups, one object can be in many groups at once.
@ COLORMANAGE_VIEW_USE_CURVES
@ CONSTRAINT_TYPE_SPLINEIK
blenloader genfile private function prototypes
@ eGpencilModifierType_Lineart
@ eGpencilModifierType_Smooth
@ eGpencilModifierType_Build
@ MOD_LINEART_USE_CREASE_ON_SMOOTH_SURFACES
These structs are the foundation for all linked lists in the library system.
@ LRT_MATERIAL_CUSTOM_OCCLUSION_EFFECTIVENESS
@ DT_MULTILAYER_INDEX_MAX
@ MOD_WVG_PROXIMITY_WEIGHTS_NORMALIZE
@ MOD_WVG_PROXIMITY_INVERT_VGROUP_MASK
@ eModifierType_MeshDeform
@ eModifierType_WeightVGProximity
@ eModifierType_DataTransfer
@ eModifierType_SurfaceDeform
@ NODE_INTERFACE_SOCKET_OUTPUT
@ NODE_INTERFACE_SOCKET_INPUT
@ SHD_SUBSURFACE_RANDOM_WALK_SKIN
@ SHD_SUBSURFACE_RANDOM_WALK
@ GEO_NODE_EXTRUDE_MESH_EDGES
@ GEO_NODE_MERGE_BY_DISTANCE_MODE_ALL
@ GEO_NODE_ATTRIBUTE_TRANSFER_NEAREST_FACE_INTERPOLATED
@ GEO_NODE_ATTRIBUTE_TRANSFER_INDEX
@ GEO_NODE_ATTRIBUTE_TRANSFER_NEAREST
@ OB_FLAG_USE_SIMULATION_CACHE
@ SCE_SNAP_TO_INCLUDE_EDITED
@ SCE_SNAP_TO_INCLUDE_NONEDITED
@ SCE_EEVEE_SHADOW_ENABLED
@ SEQ_SNAP_TO_CURRENT_FRAME
@ RGN_FLAG_HIDDEN_BY_USER
@ eSeqModifierType_ColorBalance
@ SEQ_TRANSFORM_FILTER_BILINEAR
@ SEQ_SINGLE_FRAME_CONTENT
@ SEQ_USE_EFFECT_DEFAULT_FADE
@ SEQ_COLOR_BALANCE_METHOD_LIFTGAMMAGAIN
@ SN_OVERLAY_SHOW_WIRE_COLORS
@ SN_OVERLAY_SHOW_OVERLAYS
@ SN_OVERLAY_SHOW_NAMED_ATTRIBUTES
@ SI_OVERLAY_SHOW_GRID_BACKGROUND
@ SEQ_TIMELINE_SHOW_FCURVES
@ SEQ_TIMELINE_SHOW_STRIP_DURATION
@ SEQ_TIMELINE_SHOW_STRIP_OFFSETS
@ SEQ_TIMELINE_SHOW_STRIP_SOURCE
@ SEQ_TIMELINE_SHOW_STRIP_NAME
@ SEQ_TIMELINE_SHOW_STRIP_COLOR_TAG
@ SEQ_VIEW_SEQUENCE_PREVIEW
@ FILE_ASSET_IMPORT_APPEND_REUSE
@ FILE_ASSET_IMPORT_APPEND
@ FILE_ASSET_IMPORT_FOLLOW_PREFS
@ FILE_BROWSE_MODE_ASSETS
@ SO_FILTER_NO_VIEW_LAYERS
@ SPREADSHEET_FILTER_ENABLE
@ SEQ_PREVIEW_SHOW_METADATA
@ SEQ_PREVIEW_SHOW_GPENCIL
@ SEQ_PREVIEW_SHOW_SAFE_MARGINS
@ SEQ_PREVIEW_SHOW_OUTLINE_SELECTED
@ SEQ_PREVIEW_SHOW_SAFE_CENTER
@ FILE_PARAMS_FLAG_UNUSED_3
@ FILE_PARAMS_FLAG_UNUSED_1
@ FILE_PARAMS_FLAG_UNUSED_2
#define FILE_SELECT_MAX_RECURSIONS
@ V2D_VIEWSYNC_AREA_VERTICAL
@ V3D_OFSDRAW_XR_SHOW_CUSTOM_OVERLAYS
@ V3D_OFSDRAW_SHOW_SELECTION
@ V3D_OFSDRAW_XR_SHOW_CONTROLLERS
@ V3D_AROUND_CENTER_MEDIAN
@ V3D_OVERLAY_SCULPT_SHOW_FACE_SETS
@ V3D_OVERLAY_VIEWER_ATTRIBUTE
@ V3D_OVERLAY_SCULPT_SHOW_MASK
@ V3D_OVERLAY_FADE_INACTIVE
@ V3D_OVERLAY_SCULPT_CURVES_CAGE
Read Guarded memory(de)allocation.
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint ** constraints
static AttributeOwner from_id(ID *id)
bool add(const Key &key, const Value &value)
Value lookup_default(const Key &key, const Value &default_value) const
void add_new(const Key &key, const Value &value)
Span< Value > lookup(const Key &key) const
void add(const Key &key, const Value &value)
constexpr const T & first() const
constexpr int64_t size() const
constexpr bool is_empty() const
void append(const T &value)
void append(const T &value)
@ DENOISER_OPENIMAGEDENOISE
VecBase< float, D > step(VecOp< float, D >, VecOp< float, D >) RET
const ccl_global KernelWorkTile * tile
void * MEM_callocN(size_t len, const char *str)
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
std::unique_ptr< IDProperty, IDPropertyDeleter > create(StringRef prop_name, int32_t value, eIDPropertyFlag flags={})
Allocate a new IDProperty of type IDP_INT, set its name and value.
bNodeSocket * node_find_socket(bNode &node, eNodeSocketInOut in_out, StringRef identifier)
void node_remove_node(Main *bmain, bNodeTree &ntree, bNode &node, bool do_id_user, bool remove_animation=true)
void node_remove_socket(bNodeTree &ntree, bNode &node, bNodeSocket &sock)
void node_tree_set_type(bNodeTree &ntree)
bool node_set_selected(bNode &node, bool select)
bNodeSocket * node_add_socket(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out, StringRefNull idname, StringRefNull identifier, StringRefNull name)
void node_rebuild_id_vector(bNodeTree &node_tree)
bNode * node_add_static_node(const bContext *C, bNodeTree &ntree, int type)
bNodeLink & node_add_link(bNodeTree &ntree, bNode &fromnode, bNodeSocket &fromsock, bNode &tonode, bNodeSocket &tosock)
bNodeTree * node_tree_add_tree(Main *bmain, StringRef name, StringRef idname)
bNodeSocket * node_add_static_socket(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out, int type, int subtype, StringRefNull identifier, StringRefNull name)
std::optional< StringRefNull > node_static_socket_type(int type, int subtype, std::optional< int > dimensions=std::nullopt)
int time_right_handle_frame_get(const Scene *scene, const Strip *strip)
void foreach_strip(ListBase *seqbase, ForEachFunc callback, void *user_data)
void channels_ensure(ListBase *channels)
Editing * editing_get(const Scene *scene)
void retiming_data_clear(Strip *strip)
constexpr int MAX_CHANNELS
void time_update_meta_strip_range(const Scene *scene, Strip *strip_meta)
SequencerToolSettings * tool_settings_ensure(Scene *scene)
int effect_get_num_inputs(int strip_type)
bool RNA_enum_value_from_id(const EnumPropertyItem *item, const char *identifier, int *r_value)
const EnumPropertyItem rna_enum_property_subtype_items[]
ARegionRuntimeHandle * runtime
AssetLibraryReference asset_library_ref
FileSelectParams base_params
struct GpencilModifierData * next
float chain_smooth_tolerance
struct ModifierData * next
float principal_legacy[2]
MovieTrackingCamera camera
struct bNodeTree * node_group
struct NodesModifierSettings settings
struct IDProperty * properties
FileSelectParams * params
FileAssetSelectParams * asset_params
SpaceImageOverlay overlay
int custom_grid_subdiv[2]
struct SequencerTimelineOverlay timeline_overlay
struct SequencerPreviewOverlay preview_overlay
StripTransform * transform
float viewer_attribute_opacity
float normals_constant_screen_size
float sculpt_curves_cage_opacity
struct bConstraint * next
struct bNodeSocket * next
bNodeTreeInterface tree_interface
void sequencer_init_preview_region(ARegion *region)
#define STRIP_SPEED_INTEGRATE
static bool version_fix_seq_meta_range(Strip *strip, void *user_data)
static void versioning_replace_legacy_mix_rgb_node(bNodeTree *ntree)
static void version_geometry_nodes_primitive_uv_maps(bNodeTree &ntree)
static void version_idproperty_move_data_string(IDPropertyUIDataString *ui_data, const IDProperty *prop_ui_data)
static void move_vertex_group_names_to_object_data(Main *bmain)
static IDProperty * idproperty_find_ui_container(IDProperty *idprop_group)
#define STRIP_SPEED_COMPRESS_IPO_Y
static bool do_versions_sequencer_color_tags(Strip *strip, void *)
static void version_liboverride_nla_frame_start_end(ID *id, AnimData *adt)
static void version_idproperty_move_data_float(IDPropertyUIDataFloat *ui_data, const IDProperty *prop_ui_data)
static void strip_speed_factor_fix_rna_path(Strip *strip, ListBase *fcurves)
static bool version_set_seq_single_frame_content(Strip *strip, void *)
static void sort_linked_ids(Main *bmain)
static bool strip_transform_filter_set(Strip *strip, void *)
static void version_liboverride_rnacollections_insertion_animdata(ID *id)
static bNodeSocket * do_version_replace_float_size_with_vector(bNodeTree *ntree, bNode *node, bNodeSocket *socket)
static void do_versions_idproperty_bones_recursive(Bone *bone)
static void version_geometry_nodes_add_attribute_input_settings(NodesModifierData *nmd)
static void version_idproperty_ui_data(IDProperty *idprop_group)
static void do_version_bbone_len_scale_fcurve_fix(FCurve *fcu)
static bool version_merge_still_offsets(Strip *strip, void *)
static void version_nla_action_strip_hold(Main *bmain)
static void version_switch_node_input_prefix(Main *bmain)
static void version_liboverride_rnacollections_insertion_object(Object *object)
static void version_ensure_missing_regions(ScrArea *area, SpaceLink *sl)
static void legacy_vec_roll_to_mat3_normalized(const float nor[3], const float roll, float r_mat[3][3])
static void version_geometry_nodes_set_position_node_offset(bNodeTree *ntree)
static void version_idproperty_move_data_int(IDPropertyUIDataInt *ui_data, const IDProperty *prop_ui_data)
static void do_versions_sequencer_speed_effect_recursive(Scene *scene, const ListBase *seqbase)
static void do_versions_idproperty_ui_data(Main *bmain)
static void version_node_tree_socket_id_delim(bNodeTree *ntree)
static void do_version_bones_bbone_len_scale(ListBase *lb)
static void version_geometry_nodes_add_realize_instance_nodes(bNodeTree *ntree)
static void do_versions_idproperty_seq_recursive(ListBase *seqbase)
static void do_version_constraints_spline_ik_joint_bindings(ListBase *lb)
static void do_version_subsurface_methods(bNode *node)
static void version_liboverride_nla_strip_frame_start_end(IDOverrideLibrary *liboverride, const char *parent_rna_path, NlaStrip *strip)
static bNodeTree * add_realize_node_tree(Main *bmain)
static bool do_versions_sequencer_color_balance_sop(Strip *strip, void *)
static void version_fix_image_format_copy(Main *bmain, ImageFormatData *format)
static bool replace_bbone_len_scale_rnapath(char **p_old_path, int *p_index)
static void version_liboverride_rnacollections_insertion_object_constraints(ListBase *constraints, IDOverrideLibraryProperty *op)
void blo_do_versions_300(FileData *fd, Library *, Main *bmain)
static bool version_seq_fix_broken_sound_strips(Strip *strip, void *)
static bool strip_speed_factor_set(Strip *strip, void *user_data)
static void version_geometry_nodes_replace_transfer_attribute_node(bNodeTree *ntree)
static void correct_bone_roll_value(const float head[3], const float tail[3], const float check_x_axis[3], const float check_y_axis[3], float *r_roll)
void do_versions_after_linking_300(FileData *, Main *bmain)
static void assert_sorted_ids(Main *bmain)
static bool strip_meta_channels_ensure(Strip *strip, void *)
static void version_geometry_nodes_extrude_smooth_propagation(bNodeTree &ntree)
static void do_version_bones_roll(ListBase *lb)
static bool strip_transform_origin_set(Strip *strip, void *)
void add_realize_instances_before_socket(bNodeTree *ntree, bNode *node, bNodeSocket *geometry_socket)
ID * do_versions_rename_id(Main *bmain, const short id_type, const char *name_src, const char *name_dst)
void version_cycles_property_int_set(IDProperty *idprop, const char *name, int value)
IDProperty * version_cycles_properties_from_ID(ID *id)
int version_cycles_property_int(IDProperty *idprop, const char *name, int default_value)
bNodeSocket & version_node_add_socket(bNodeTree &ntree, bNode &node, const eNodeSocketInOut in_out, const char *idname, const char *identifier)
void version_node_socket_id_delim(bNodeSocket *socket)
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_node_input_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)
void version_node_socket_name(bNodeTree *ntree, const int node_type, const char *old_name, const char *new_name)
bool version_cycles_property_boolean(IDProperty *idprop, const char *name, bool default_value)
void version_socket_update_is_used(bNodeTree *ntree)
IDProperty * version_cycles_visibility_properties_from_ID(ID *id)
ARegion * do_versions_add_region(int regiontype, const char *)
void node_tree_relink_with_socket_id_map(bNodeTree &ntree, bNode &old_node, bNode &new_node, const Map< std::string, std::string > &map)
bNodeLink & version_node_add_link(bNodeTree &ntree, bNode &node_a, bNodeSocket &socket_a, bNode &node_b, bNodeSocket &socket_b)
ARegion * do_versions_ensure_region(ListBase *regionbase, int region_type, const char *, int link_after_region_type)
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)
ARegion * do_versions_add_region_if_not_found(ListBase *regionbase, int region_type, const char *, int link_after_region_type)
void version_node_output_socket_name(bNodeTree *ntree, const int node_type, const char *old_name, const char *new_name)
void version_node_id(bNodeTree *ntree, const int node_type, const char *new_name)