Move versioning file 2.8 to C++

Changes:
1. `NULL` -> `nullptr`.
2. Cast `void *` to `T *` by using `static_cast`.
3. Using `LISTBASE_FOREACH` instead of manual for-loops.
4. `eNTreeDoVersionErrors` now is `enum class : int8_t`.
5. `eNTreeDoVersionErrors` declaration moved to global scope.
6. `ENUM_OPERATORS` for `eNTreeDoVersionErrors`.

See: https://projects.blender.org/blender/blender/issues/103343
Pull Request: https://projects.blender.org/blender/blender/pulls/108100
This commit is contained in:
Iliya Katueshenock
2023-05-29 20:56:49 +02:00
committed by Hans Goudey
parent 0542705218
commit 30a25a42e6
2 changed files with 410 additions and 405 deletions

View File

@@ -42,7 +42,7 @@ set(SRC
intern/versioning_250.c intern/versioning_250.c
intern/versioning_260.c intern/versioning_260.c
intern/versioning_270.c intern/versioning_270.c
intern/versioning_280.c intern/versioning_280.cc
intern/versioning_290.cc intern/versioning_290.cc
intern/versioning_300.cc intern/versioning_300.cc
intern/versioning_400.cc intern/versioning_400.cc

View File

@@ -120,14 +120,14 @@ static bScreen *screen_parent_find(const bScreen *screen)
} }
} }
return NULL; return nullptr;
} }
static void do_version_workspaces_create_from_screens(Main *bmain) static void do_version_workspaces_create_from_screens(Main *bmain)
{ {
bmain->is_locked_for_linking = false; bmain->is_locked_for_linking = false;
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
const bScreen *screen_parent = screen_parent_find(screen); const bScreen *screen_parent = screen_parent_find(screen);
WorkSpace *workspace; WorkSpace *workspace;
if (screen->temp) { if (screen->temp) {
@@ -137,13 +137,13 @@ static void do_version_workspaces_create_from_screens(Main *bmain)
if (screen_parent) { if (screen_parent) {
/* Full-screen with "Back to Previous" option, don't create /* Full-screen with "Back to Previous" option, don't create
* a new workspace, add layout workspace containing parent. */ * a new workspace, add layout workspace containing parent. */
workspace = BLI_findstring( workspace = static_cast<WorkSpace *>(
&bmain->workspaces, screen_parent->id.name + 2, offsetof(ID, name) + 2); BLI_findstring(&bmain->workspaces, screen_parent->id.name + 2, offsetof(ID, name) + 2));
} }
else { else {
workspace = BKE_workspace_add(bmain, screen->id.name + 2); workspace = BKE_workspace_add(bmain, screen->id.name + 2);
} }
if (workspace == NULL) { if (workspace == nullptr) {
continue; /* Not much we can do. */ continue; /* Not much we can do. */
} }
BKE_workspace_layout_add(bmain, workspace, screen, screen->id.name + 2); BKE_workspace_layout_add(bmain, workspace, screen, screen->id.name + 2);
@@ -198,7 +198,7 @@ static void do_version_workspaces_after_lib_link(Main *bmain)
do_version_workspaces_create_from_screens(bmain); do_version_workspaces_create_from_screens(bmain);
for (wmWindowManager *wm = bmain->wm.first; wm; wm = wm->id.next) { LISTBASE_FOREACH (wmWindowManager *, wm, &bmain->wm) {
LISTBASE_FOREACH (wmWindow *, win, &wm->windows) { LISTBASE_FOREACH (wmWindow *, win, &wm->windows) {
bScreen *screen_parent = screen_parent_find(win->screen); bScreen *screen_parent = screen_parent_find(win->screen);
bScreen *screen = screen_parent ? screen_parent : win->screen; bScreen *screen = screen_parent ? screen_parent : win->screen;
@@ -209,15 +209,15 @@ static void do_version_workspaces_after_lib_link(Main *bmain)
win->workspace_hook = BKE_workspace_instance_hook_create(bmain, win->winid); win->workspace_hook = BKE_workspace_instance_hook_create(bmain, win->winid);
win->scene = screen->scene; win->scene = screen->scene;
/* Deprecated from now on! */ /* Deprecated from now on! */
win->screen = NULL; win->screen = nullptr;
continue; continue;
} }
WorkSpace *workspace = BLI_findstring( WorkSpace *workspace = static_cast<WorkSpace *>(
&bmain->workspaces, screen->id.name + 2, offsetof(ID, name) + 2); BLI_findstring(&bmain->workspaces, screen->id.name + 2, offsetof(ID, name) + 2));
BLI_assert(workspace != NULL); BLI_assert(workspace != nullptr);
WorkSpaceLayout *layout = BKE_workspace_layout_find(workspace, win->screen); WorkSpaceLayout *layout = BKE_workspace_layout_find(workspace, win->screen);
BLI_assert(layout != NULL); BLI_assert(layout != nullptr);
win->workspace_hook = BKE_workspace_instance_hook_create(bmain, win->winid); win->workspace_hook = BKE_workspace_instance_hook_create(bmain, win->winid);
@@ -226,7 +226,8 @@ static void do_version_workspaces_after_lib_link(Main *bmain)
/* Move scene and view layer to window. */ /* Move scene and view layer to window. */
Scene *scene = screen->scene; Scene *scene = screen->scene;
ViewLayer *layer = BLI_findlink(&scene->view_layers, scene->r.actlay); ViewLayer *layer = static_cast<ViewLayer *>(
BLI_findlink(&scene->view_layers, scene->r.actlay));
if (!layer) { if (!layer) {
layer = BKE_view_layer_default_view(scene); layer = BKE_view_layer_default_view(scene);
} }
@@ -235,14 +236,14 @@ static void do_version_workspaces_after_lib_link(Main *bmain)
STRNCPY(win->view_layer_name, layer->name); STRNCPY(win->view_layer_name, layer->name);
/* Deprecated from now on! */ /* Deprecated from now on! */
win->screen = NULL; win->screen = nullptr;
} }
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
/* Deprecated from now on! */ /* Deprecated from now on! */
BLI_freelistN(&screen->scene->transform_spaces); BLI_freelistN(&screen->scene->transform_spaces);
screen->scene = NULL; screen->scene = nullptr;
} }
} }
@@ -258,8 +259,7 @@ enum {
static void do_version_view_layer_visibility(ViewLayer *view_layer) static void do_version_view_layer_visibility(ViewLayer *view_layer)
{ {
/* Convert from deprecated VISIBLE flag to DISABLED */ /* Convert from deprecated VISIBLE flag to DISABLED */
LayerCollection *lc; LISTBASE_FOREACH (LayerCollection *, lc, &view_layer->layer_collections) {
for (lc = view_layer->layer_collections.first; lc; lc = lc->next) {
if (lc->flag & COLLECTION_DEPRECATED_DISABLED) { if (lc->flag & COLLECTION_DEPRECATED_DISABLED) {
lc->flag &= ~COLLECTION_DEPRECATED_DISABLED; lc->flag &= ~COLLECTION_DEPRECATED_DISABLED;
} }
@@ -302,7 +302,8 @@ static void do_version_layer_collection_post(ViewLayer *view_layer,
/* Apply layer collection exclude flags. */ /* Apply layer collection exclude flags. */
LISTBASE_FOREACH (LayerCollection *, lc, lb) { LISTBASE_FOREACH (LayerCollection *, lc, lb) {
if (!(lc->collection->flag & COLLECTION_IS_MASTER)) { if (!(lc->collection->flag & COLLECTION_IS_MASTER)) {
SceneCollection *sc = BLI_ghash_lookup(collection_map, lc->collection); SceneCollection *sc = static_cast<SceneCollection *>(
BLI_ghash_lookup(collection_map, lc->collection));
const bool enabled = (sc && BLI_gset_haskey(enabled_set, sc)); const bool enabled = (sc && BLI_gset_haskey(enabled_set, sc));
const bool selectable = (sc && BLI_gset_haskey(selectable_set, sc)); const bool selectable = (sc && BLI_gset_haskey(selectable_set, sc));
@@ -326,7 +327,7 @@ static void do_version_scene_collection_convert(
BLI_ghash_insert(collection_map, collection, sc); BLI_ghash_insert(collection_map, collection, sc);
} }
for (SceneCollection *nsc = sc->scene_collections.first; nsc;) { LISTBASE_FOREACH (SceneCollection *, nsc, &sc->scene_collections) {
SceneCollection *nsc_next = nsc->next; SceneCollection *nsc_next = nsc->next;
Collection *ncollection = BKE_collection_add(bmain, collection, nsc->name); Collection *ncollection = BKE_collection_add(bmain, collection, nsc->name);
ncollection->id.lib = id->lib; ncollection->id.lib = id->lib;
@@ -335,7 +336,7 @@ static void do_version_scene_collection_convert(
} }
LISTBASE_FOREACH (LinkData *, link, &sc->objects) { LISTBASE_FOREACH (LinkData *, link, &sc->objects) {
Object *ob = link->data; Object *ob = static_cast<Object *>(link->data);
if (ob) { if (ob) {
BKE_collection_object_add_notest(bmain, collection, ob); BKE_collection_object_add_notest(bmain, collection, ob);
id_us_min(&ob->id); id_us_min(&ob->id);
@@ -350,11 +351,11 @@ static void do_version_group_collection_to_collection(Main *bmain, Collection *g
{ {
/* Convert old 2.8 group collections to new unified collections. */ /* Convert old 2.8 group collections to new unified collections. */
if (group->collection) { if (group->collection) {
do_version_scene_collection_convert(bmain, &group->id, group->collection, group, NULL); do_version_scene_collection_convert(bmain, &group->id, group->collection, group, nullptr);
} }
group->collection = NULL; group->collection = nullptr;
group->view_layer = NULL; group->view_layer = nullptr;
id_fake_user_set(&group->id); id_fake_user_set(&group->id);
} }
@@ -376,14 +377,13 @@ static void do_version_scene_collection_to_collection(Main *bmain, Scene *scene)
if (scene->collection) { if (scene->collection) {
do_version_scene_collection_convert( do_version_scene_collection_convert(
bmain, &scene->id, scene->collection, scene->master_collection, collection_map); bmain, &scene->id, scene->collection, scene->master_collection, collection_map);
scene->collection = NULL; scene->collection = nullptr;
} }
scene->view_layers = view_layers; scene->view_layers = view_layers;
/* Convert layer collections. */ /* Convert layer collections. */
ViewLayer *view_layer; LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
for (view_layer = scene->view_layers.first; view_layer; view_layer = view_layer->next) {
GSet *enabled_set = BLI_gset_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, __func__); GSet *enabled_set = BLI_gset_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, __func__);
GSet *selectable_set = BLI_gset_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, __func__); GSet *selectable_set = BLI_gset_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, __func__);
@@ -397,13 +397,13 @@ static void do_version_scene_collection_to_collection(Main *bmain, Scene *scene)
do_version_layer_collection_post( do_version_layer_collection_post(
view_layer, &view_layer->layer_collections, enabled_set, selectable_set, collection_map); view_layer, &view_layer->layer_collections, enabled_set, selectable_set, collection_map);
BLI_gset_free(enabled_set, NULL); BLI_gset_free(enabled_set, nullptr);
BLI_gset_free(selectable_set, NULL); BLI_gset_free(selectable_set, nullptr);
BKE_layer_collection_sync(scene, view_layer); BKE_layer_collection_sync(scene, view_layer);
} }
BLI_ghash_free(collection_map, NULL, NULL); BLI_ghash_free(collection_map, nullptr, nullptr);
} }
#endif #endif
@@ -421,13 +421,13 @@ static void do_version_layers_to_collections(Main *bmain, Scene *scene)
/* Create collections from layers. */ /* Create collections from layers. */
Collection *collection_master = scene->master_collection; Collection *collection_master = scene->master_collection;
Collection *collections[20] = {NULL}; Collection *collections[20] = {nullptr};
for (int layer = 0; layer < 20; layer++) { for (int layer = 0; layer < 20; layer++) {
LISTBASE_FOREACH (Base *, base, &scene->base) { LISTBASE_FOREACH (Base *, base, &scene->base) {
if (base->lay & (1 << layer)) { if (base->lay & (1 << layer)) {
/* Create collections when needed only. */ /* Create collections when needed only. */
if (collections[layer] == NULL) { if (collections[layer] == nullptr) {
char name[MAX_ID_NAME - 2]; char name[MAX_ID_NAME - 2];
SNPRINTF(name, DATA_("Collection %d"), layer + 1); SNPRINTF(name, DATA_("Collection %d"), layer + 1);
@@ -460,10 +460,10 @@ static void do_version_layers_to_collections(Main *bmain, Scene *scene)
/* Handle legacy render layers. */ /* Handle legacy render layers. */
bool have_override = false; bool have_override = false;
const bool need_default_renderlayer = scene->r.layers.first == NULL; const bool need_default_renderlayer = scene->r.layers.first == nullptr;
LISTBASE_FOREACH (SceneRenderLayer *, srl, &scene->r.layers) { LISTBASE_FOREACH (SceneRenderLayer *, srl, &scene->r.layers) {
ViewLayer *view_layer = BKE_view_layer_add(scene, srl->name, NULL, VIEWLAYER_ADD_NEW); ViewLayer *view_layer = BKE_view_layer_add(scene, srl->name, nullptr, VIEWLAYER_ADD_NEW);
if (srl->layflag & SCE_LAY_DISABLE) { if (srl->layflag & SCE_LAY_DISABLE) {
view_layer->flag &= ~VIEW_LAYER_RENDER; view_layer->flag &= ~VIEW_LAYER_RENDER;
@@ -530,7 +530,7 @@ static void do_version_layers_to_collections(Main *bmain, Scene *scene)
/* If render layers included overrides, or there are no render layers, /* If render layers included overrides, or there are no render layers,
* we also create a vanilla viewport layer. */ * we also create a vanilla viewport layer. */
if (have_override || need_default_renderlayer) { if (have_override || need_default_renderlayer) {
ViewLayer *view_layer = BKE_view_layer_add(scene, "Viewport", NULL, VIEWLAYER_ADD_NEW); ViewLayer *view_layer = BKE_view_layer_add(scene, "Viewport", nullptr, VIEWLAYER_ADD_NEW);
/* If we ported all the original render layers, /* If we ported all the original render layers,
* we don't need to make the viewport layer renderable. */ * we don't need to make the viewport layer renderable. */
@@ -561,15 +561,13 @@ static void do_version_layers_to_collections(Main *bmain, Scene *scene)
} }
BLI_freelistN(&scene->base); BLI_freelistN(&scene->base);
scene->basact = NULL; scene->basact = nullptr;
} }
static void do_version_collection_propagate_lib_to_children(Collection *collection) static void do_version_collection_propagate_lib_to_children(Collection *collection)
{ {
if (ID_IS_LINKED(collection)) { if (ID_IS_LINKED(collection)) {
for (CollectionChild *collection_child = collection->children.first; collection_child != NULL; LISTBASE_FOREACH (CollectionChild *, collection_child, &collection->children) {
collection_child = collection_child->next)
{
if (!ID_IS_LINKED(collection_child->collection)) { if (!ID_IS_LINKED(collection_child->collection)) {
collection_child->collection->id.lib = collection->id.lib; collection_child->collection->id.lib = collection->id.lib;
} }
@@ -614,8 +612,8 @@ static void do_versions_remove_region(ListBase *regionbase, ARegion *region)
static void do_versions_remove_regions_by_type(ListBase *regionbase, int regiontype) static void do_versions_remove_regions_by_type(ListBase *regionbase, int regiontype)
{ {
ARegion *region, *region_next; ARegion *region, *region_next;
for (region = regionbase->first; region; region = region_next) { for (region = static_cast<ARegion *>(regionbase->first); region; region = region_next) {
region_next = region->next; region_next = static_cast<ARegion *>(region->next);
if (region->regiontype == regiontype) { if (region->regiontype == regiontype) {
do_versions_remove_region(regionbase, region); do_versions_remove_region(regionbase, region);
} }
@@ -629,13 +627,13 @@ static ARegion *do_versions_find_region_or_null(ListBase *regionbase, int region
return region; return region;
} }
} }
return NULL; return nullptr;
} }
static ARegion *do_versions_find_region(ListBase *regionbase, int regiontype) static ARegion *do_versions_find_region(ListBase *regionbase, int regiontype)
{ {
ARegion *region = do_versions_find_region_or_null(regionbase, regiontype); ARegion *region = do_versions_find_region_or_null(regionbase, regiontype);
if (region == NULL) { if (region == nullptr) {
BLI_assert_msg(0, "Did not find expected region in versioning"); BLI_assert_msg(0, "Did not find expected region in versioning");
} }
return region; return region;
@@ -645,7 +643,7 @@ static void do_versions_area_ensure_tool_region(Main *bmain,
const short space_type, const short space_type,
const short region_flag) const short region_flag)
{ {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == space_type) { if (sl->spacetype == space_type) {
@@ -691,7 +689,7 @@ static bool replace_bbone_scale_rnapath(char **p_old_path)
{ {
char *old_path = *p_old_path; char *old_path = *p_old_path;
if (old_path == NULL) { if (old_path == nullptr) {
return false; return false;
} }
@@ -730,15 +728,13 @@ static void do_version_bbone_scale_fcurve_fix(ListBase *curves, FCurve *fcu)
/* Add to the curve group. */ /* Add to the curve group. */
second->grp = fcu->grp; second->grp = fcu->grp;
if (fcu->grp != NULL && fcu->grp->channels.last == fcu) { if (fcu->grp != nullptr && fcu->grp->channels.last == fcu) {
fcu->grp->channels.last = second; fcu->grp->channels.last = second;
} }
} }
} }
static void do_version_bbone_scale_animdata_cb(ID *UNUSED(id), static void do_version_bbone_scale_animdata_cb(ID * /*id*/, AnimData *adt, void * /*wrapper_data*/)
AnimData *adt,
void *UNUSED(wrapper_data))
{ {
LISTBASE_FOREACH_MUTABLE (FCurve *, fcu, &adt->drivers) { LISTBASE_FOREACH_MUTABLE (FCurve *, fcu, &adt->drivers) {
do_version_bbone_scale_fcurve_fix(&adt->drivers, fcu); do_version_bbone_scale_fcurve_fix(&adt->drivers, fcu);
@@ -778,17 +774,18 @@ static void do_version_constraints_copy_rotation_mix_mode(ListBase *lb)
static void do_versions_seq_alloc_transform_and_crop(ListBase *seqbase) static void do_versions_seq_alloc_transform_and_crop(ListBase *seqbase)
{ {
for (Sequence *seq = seqbase->first; seq != NULL; seq = seq->next) { LISTBASE_FOREACH (Sequence *, seq, seqbase) {
if (ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD) == 0) { if (ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD) == 0) {
if (seq->strip->transform == NULL) { if (seq->strip->transform == nullptr) {
seq->strip->transform = MEM_callocN(sizeof(struct StripTransform), "StripTransform"); seq->strip->transform = static_cast<StripTransform *>(
MEM_callocN(sizeof(StripTransform), "StripTransform"));
} }
if (seq->strip->crop == NULL) { if (seq->strip->crop == nullptr) {
seq->strip->crop = MEM_callocN(sizeof(struct StripCrop), "StripCrop"); seq->strip->crop = static_cast<StripCrop *>(MEM_callocN(sizeof(StripCrop), "StripCrop"));
} }
if (seq->seqbase.first != NULL) { if (seq->seqbase.first != nullptr) {
do_versions_seq_alloc_transform_and_crop(&seq->seqbase); do_versions_seq_alloc_transform_and_crop(&seq->seqbase);
} }
} }
@@ -802,8 +799,8 @@ static void do_versions_material_convert_legacy_blend_mode(bNodeTree *ntree, cha
/* Iterate backwards from end so we don't encounter newly added links. */ /* Iterate backwards from end so we don't encounter newly added links. */
bNodeLink *prevlink; bNodeLink *prevlink;
for (bNodeLink *link = ntree->links.last; link; link = prevlink) { for (bNodeLink *link = static_cast<bNodeLink *>(ntree->links.last); link; link = prevlink) {
prevlink = link->prev; prevlink = static_cast<bNodeLink *>(link->prev);
/* Detect link to replace. */ /* Detect link to replace. */
bNode *fromnode = link->fromnode; bNode *fromnode = link->fromnode;
@@ -823,15 +820,15 @@ static void do_versions_material_convert_legacy_blend_mode(bNodeTree *ntree, cha
if (blend_method == 1 /* MA_BM_ADD */) { if (blend_method == 1 /* MA_BM_ADD */) {
nodeRemLink(ntree, link); nodeRemLink(ntree, link);
bNode *add_node = nodeAddStaticNode(NULL, ntree, SH_NODE_ADD_SHADER); bNode *add_node = nodeAddStaticNode(nullptr, ntree, SH_NODE_ADD_SHADER);
add_node->locx = 0.5f * (fromnode->locx + tonode->locx); add_node->locx = 0.5f * (fromnode->locx + tonode->locx);
add_node->locy = 0.5f * (fromnode->locy + tonode->locy); add_node->locy = 0.5f * (fromnode->locy + tonode->locy);
bNodeSocket *shader1_socket = add_node->inputs.first; bNodeSocket *shader1_socket = static_cast<bNodeSocket *>(add_node->inputs.first);
bNodeSocket *shader2_socket = add_node->inputs.last; bNodeSocket *shader2_socket = static_cast<bNodeSocket *>(add_node->inputs.last);
bNodeSocket *add_socket = nodeFindSocket(add_node, SOCK_OUT, "Shader"); bNodeSocket *add_socket = nodeFindSocket(add_node, SOCK_OUT, "Shader");
bNode *transp_node = nodeAddStaticNode(NULL, ntree, SH_NODE_BSDF_TRANSPARENT); bNode *transp_node = nodeAddStaticNode(nullptr, ntree, SH_NODE_BSDF_TRANSPARENT);
transp_node->locx = add_node->locx; transp_node->locx = add_node->locx;
transp_node->locy = add_node->locy - 110.0f; transp_node->locy = add_node->locy - 110.0f;
@@ -847,7 +844,7 @@ static void do_versions_material_convert_legacy_blend_mode(bNodeTree *ntree, cha
else if (blend_method == 2 /* MA_BM_MULTIPLY */) { else if (blend_method == 2 /* MA_BM_MULTIPLY */) {
nodeRemLink(ntree, link); nodeRemLink(ntree, link);
bNode *transp_node = nodeAddStaticNode(NULL, ntree, SH_NODE_BSDF_TRANSPARENT); bNode *transp_node = nodeAddStaticNode(nullptr, ntree, SH_NODE_BSDF_TRANSPARENT);
bNodeSocket *color_socket = nodeFindSocket(transp_node, SOCK_IN, "Color"); bNodeSocket *color_socket = nodeFindSocket(transp_node, SOCK_IN, "Color");
bNodeSocket *transp_socket = nodeFindSocket(transp_node, SOCK_OUT, "BSDF"); bNodeSocket *transp_socket = nodeFindSocket(transp_node, SOCK_OUT, "BSDF");
@@ -857,7 +854,7 @@ static void do_versions_material_convert_legacy_blend_mode(bNodeTree *ntree, cha
transp_node->locx = 0.33f * fromnode->locx + 0.66f * tonode->locx; transp_node->locx = 0.33f * fromnode->locx + 0.66f * tonode->locx;
transp_node->locy = 0.33f * fromnode->locy + 0.66f * tonode->locy; transp_node->locy = 0.33f * fromnode->locy + 0.66f * tonode->locy;
bNode *shtorgb_node = nodeAddStaticNode(NULL, ntree, SH_NODE_SHADERTORGB); bNode *shtorgb_node = nodeAddStaticNode(nullptr, ntree, SH_NODE_SHADERTORGB);
shtorgb_node->locx = 0.66f * fromnode->locx + 0.33f * tonode->locx; shtorgb_node->locx = 0.66f * fromnode->locx + 0.33f * tonode->locx;
shtorgb_node->locy = 0.66f * fromnode->locy + 0.33f * tonode->locy; shtorgb_node->locy = 0.66f * fromnode->locy + 0.33f * tonode->locy;
@@ -896,7 +893,7 @@ static void do_versions_local_collection_bits_set(LayerCollection *layer_collect
static void do_version_curvemapping_flag_extend_extrapolate(CurveMapping *cumap) static void do_version_curvemapping_flag_extend_extrapolate(CurveMapping *cumap)
{ {
if (cumap == NULL) { if (cumap == nullptr) {
return; return;
} }
@@ -921,7 +918,7 @@ static void do_version_curvemapping_walker(Main *bmain, void (*callback)(CurveMa
callback(scene->view_settings.curve_mapping); callback(scene->view_settings.curve_mapping);
} }
if (scene->ed != NULL) { if (scene->ed != nullptr) {
LISTBASE_FOREACH (Sequence *, seq, &scene->ed->seqbase) { LISTBASE_FOREACH (Sequence *, seq, &scene->ed->seqbase) {
LISTBASE_FOREACH (SequenceModifierData *, smd, &seq->modifiers) { LISTBASE_FOREACH (SequenceModifierData *, smd, &seq->modifiers) {
const SequenceModifierTypeInfo *smti = SEQ_modifier_type_info_get(smd->type); const SequenceModifierTypeInfo *smti = SEQ_modifier_type_info_get(smd->type);
@@ -1102,7 +1099,7 @@ static void do_version_curvemapping_walker(Main *bmain, void (*callback)(CurveMa
} }
/* Free Style */ /* Free Style */
LISTBASE_FOREACH (struct FreestyleLineStyle *, linestyle, &bmain->linestyles) { LISTBASE_FOREACH (FreestyleLineStyle *, linestyle, &bmain->linestyles) {
LISTBASE_FOREACH (LineStyleModifier *, m, &linestyle->alpha_modifiers) { LISTBASE_FOREACH (LineStyleModifier *, m, &linestyle->alpha_modifiers) {
switch (m->type) { switch (m->type) {
case LS_MODIFIER_ALONG_STROKE: case LS_MODIFIER_ALONG_STROKE:
@@ -1160,11 +1157,9 @@ static void do_version_curvemapping_walker(Main *bmain, void (*callback)(CurveMa
} }
} }
static void do_version_fcurve_hide_viewport_fix(struct ID *UNUSED(id), static void do_version_fcurve_hide_viewport_fix(ID * /*id*/, FCurve *fcu, void * /*user_data*/)
struct FCurve *fcu,
void *UNUSED(user_data))
{ {
if (fcu->rna_path == NULL || !STREQ(fcu->rna_path, "hide")) { if (fcu->rna_path == nullptr || !STREQ(fcu->rna_path, "hide")) {
return; return;
} }
@@ -1180,9 +1175,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
use_collection_compat_28 = false; use_collection_compat_28 = false;
/* Convert group layer visibility flags to hidden nested collection. */ /* Convert group layer visibility flags to hidden nested collection. */
for (Collection *collection = bmain->collections.first; collection; LISTBASE_FOREACH (Collection *, collection, &bmain->collections) {
collection = collection->id.next)
{
/* Add fake user for all existing groups. */ /* Add fake user for all existing groups. */
id_fake_user_set(&collection->id); id_fake_user_set(&collection->id);
@@ -1190,15 +1183,18 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
continue; continue;
} }
Collection *hidden_collection_array[20] = {NULL}; Collection *hidden_collection_array[20] = {nullptr};
for (CollectionObject *cob = collection->gobject.first, *cob_next = NULL; cob; for (CollectionObject *cob = static_cast<CollectionObject *>(collection->gobject.first),
cob = cob_next) { *cob_next = nullptr;
cob;
cob = cob_next)
{
cob_next = cob->next; cob_next = cob->next;
Object *ob = cob->ob; Object *ob = cob->ob;
if (!(ob->lay & collection->layer)) { if (!(ob->lay & collection->layer)) {
/* Find or create hidden collection matching object's first layer. */ /* Find or create hidden collection matching object's first layer. */
Collection **collection_hidden = NULL; Collection **collection_hidden = nullptr;
int coll_idx = 0; int coll_idx = 0;
for (; coll_idx < 20; coll_idx++) { for (; coll_idx < 20; coll_idx++) {
if (ob->lay & (1 << coll_idx)) { if (ob->lay & (1 << coll_idx)) {
@@ -1206,14 +1202,14 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
break; break;
} }
} }
if (collection_hidden == NULL) { if (collection_hidden == nullptr) {
/* This should never happen (objects are always supposed to be instantiated in a /* This should never happen (objects are always supposed to be instantiated in a
* scene), but it does sometimes, see e.g. #81168. * scene), but it does sometimes, see e.g. #81168.
* Just put them in first hidden collection in those cases. */ * Just put them in first hidden collection in those cases. */
collection_hidden = &hidden_collection_array[0]; collection_hidden = &hidden_collection_array[0];
} }
if (*collection_hidden == NULL) { if (*collection_hidden == nullptr) {
char name[MAX_ID_NAME]; char name[MAX_ID_NAME];
SNPRINTF(name, DATA_("Hidden %d"), coll_idx + 1); SNPRINTF(name, DATA_("Hidden %d"), coll_idx + 1);
*collection_hidden = BKE_collection_add(bmain, collection, name); *collection_hidden = BKE_collection_add(bmain, collection, name);
@@ -1230,29 +1226,27 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
* created, otherwise we'll end up with several data-blocks sharing same name/library, * created, otherwise we'll end up with several data-blocks sharing same name/library,
* which is FORBIDDEN! NOTE: we need this to be recursive, since a child collection may be * which is FORBIDDEN! NOTE: we need this to be recursive, since a child collection may be
* sorted before its parent in bmain. */ * sorted before its parent in bmain. */
for (Collection *collection = bmain->collections.first; collection != NULL; LISTBASE_FOREACH (Collection *, collection, &bmain->collections) {
collection = collection->id.next)
{
do_version_collection_propagate_lib_to_children(collection); do_version_collection_propagate_lib_to_children(collection);
} }
/* Convert layers to collections. */ /* Convert layers to collections. */
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
do_version_layers_to_collections(bmain, scene); do_version_layers_to_collections(bmain, scene);
} }
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 0)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 0)) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
BLO_read_assert_message(screen->scene == NULL, BLO_read_assert_message(screen->scene == nullptr,
, ,
(BlendHandle *)fd, (BlendHandle *)fd,
bmain, bmain,
"No Screen data-block should ever have a NULL `scene` pointer"); "No Screen data-block should ever have a nullptr `scene` pointer");
/* same render-layer as do_version_workspaces_after_lib_link will activate, /* same render-layer as do_version_workspaces_after_lib_link will activate,
* so same layer as BKE_view_layer_default_view would return */ * so same layer as BKE_view_layer_default_view would return */
ViewLayer *layer = screen->scene->view_layers.first; ViewLayer *layer = static_cast<ViewLayer *>(screen->scene->view_layers.first);
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, space, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, space, &area->spacedata) {
@@ -1262,7 +1256,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
space_outliner->outlinevis = SO_VIEW_LAYER; space_outliner->outlinevis = SO_VIEW_LAYER;
if (BLI_listbase_count_at_most(&layer->layer_collections, 2) == 1) { if (BLI_listbase_count_at_most(&layer->layer_collections, 2) == 1) {
if (space_outliner->treestore == NULL) { if (space_outliner->treestore == nullptr) {
space_outliner->treestore = BLI_mempool_create( space_outliner->treestore = BLI_mempool_create(
sizeof(TreeStoreElem), 1, 512, BLI_MEMPOOL_ALLOW_ITER); sizeof(TreeStoreElem), 1, 512, BLI_MEMPOOL_ALLOW_ITER);
} }
@@ -1270,7 +1264,8 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
/* Create a tree store element for the collection. This is normally /* Create a tree store element for the collection. This is normally
* done in check_persistent (outliner_tree.c), but we need to access * done in check_persistent (outliner_tree.c), but we need to access
* it here :/ (expand element if it's the only one) */ * it here :/ (expand element if it's the only one) */
TreeStoreElem *tselem = BLI_mempool_calloc(space_outliner->treestore); TreeStoreElem *tselem = static_cast<TreeStoreElem *>(
BLI_mempool_calloc(space_outliner->treestore));
tselem->type = TSE_LAYER_COLLECTION; tselem->type = TSE_LAYER_COLLECTION;
tselem->id = &((LayerCollection *)(layer->layer_collections.first))->collection->id; tselem->id = &((LayerCollection *)(layer->layer_collections.first))->collection->id;
tselem->nr = tselem->used = 0; tselem->nr = tselem->used = 0;
@@ -1283,7 +1278,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 0)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 0)) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, space, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, space, &area->spacedata) {
if (space->spacetype == SPACE_IMAGE) { if (space->spacetype == SPACE_IMAGE) {
@@ -1314,7 +1309,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 2)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 2)) {
/* Cleanup any remaining SceneRenderLayer data for files that were created /* Cleanup any remaining SceneRenderLayer data for files that were created
* with Blender 2.8 before the SceneRenderLayer > RenderLayer refactor. */ * with Blender 2.8 before the SceneRenderLayer > RenderLayer refactor. */
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
LISTBASE_FOREACH (SceneRenderLayer *, srl, &scene->r.layers) { LISTBASE_FOREACH (SceneRenderLayer *, srl, &scene->r.layers) {
if (srl->prop) { if (srl->prop) {
IDP_FreeProperty(srl->prop); IDP_FreeProperty(srl->prop);
@@ -1329,7 +1324,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
/* Due to several changes to particle RNA and draw code particles from older files may /* Due to several changes to particle RNA and draw code particles from older files may
* no longer be visible. * no longer be visible.
* Here we correct this by setting a default draw size for those files. */ * Here we correct this by setting a default draw size for those files. */
for (Object *object = bmain->objects.first; object; object = object->id.next) { LISTBASE_FOREACH (Object *, object, &bmain->objects) {
LISTBASE_FOREACH (ParticleSystem *, psys, &object->particlesystem) { LISTBASE_FOREACH (ParticleSystem *, psys, &object->particlesystem) {
if (psys->part->draw_size == 0.0f) { if (psys->part->draw_size == 0.0f) {
psys->part->draw_size = 0.1f; psys->part->draw_size = 0.1f;
@@ -1339,7 +1334,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 4)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 4)) {
for (Object *object = bmain->objects.first; object; object = object->id.next) { LISTBASE_FOREACH (Object *, object, &bmain->objects) {
if (object->particlesystem.first) { if (object->particlesystem.first) {
object->duplicator_visibility_flag = OB_DUPLI_FLAG_VIEWPORT; object->duplicator_visibility_flag = OB_DUPLI_FLAG_VIEWPORT;
LISTBASE_FOREACH (ParticleSystem *, psys, &object->particlesystem) { LISTBASE_FOREACH (ParticleSystem *, psys, &object->particlesystem) {
@@ -1358,17 +1353,17 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
} }
/* Cleanup deprecated flag from particle-settings data-blocks. */ /* Cleanup deprecated flag from particle-settings data-blocks. */
for (ParticleSettings *part = bmain->particles.first; part; part = part->id.next) { LISTBASE_FOREACH (ParticleSettings *, part, &bmain->particles) {
part->draw &= ~PART_DRAW_EMITTER; part->draw &= ~PART_DRAW_EMITTER;
} }
} }
/* SpaceTime & SpaceLogic removal/replacing */ /* SpaceTime & SpaceLogic removal/replacing */
if (!MAIN_VERSION_ATLEAST(bmain, 280, 9)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 9)) {
const wmWindowManager *wm = bmain->wm.first; const wmWindowManager *wm = static_cast<wmWindowManager *>(bmain->wm.first);
const Scene *scene = bmain->scenes.first; const Scene *scene = static_cast<Scene *>(bmain->scenes.first);
if (wm != NULL) { if (wm != nullptr) {
/* Action editors need a scene for creation. First, update active /* Action editors need a scene for creation. First, update active
* screens using the active scene of the window they're displayed in. * screens using the active scene of the window they're displayed in.
* Next, update remaining screens using first scene in main listbase. */ * Next, update remaining screens using first scene in main listbase. */
@@ -1385,8 +1380,8 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
} }
} }
} }
if (scene != NULL) { if (scene != nullptr) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
if (ELEM(area->butspacetype, SPACE_TIME, SPACE_LOGIC)) { if (ELEM(area->butspacetype, SPACE_TIME, SPACE_LOGIC)) {
/* Areas that were already handled won't be handled again */ /* Areas that were already handled won't be handled again */
@@ -1402,11 +1397,11 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
#ifdef USE_COLLECTION_COMPAT_28 #ifdef USE_COLLECTION_COMPAT_28
if (use_collection_compat_28 && !MAIN_VERSION_ATLEAST(bmain, 280, 14)) { if (use_collection_compat_28 && !MAIN_VERSION_ATLEAST(bmain, 280, 14)) {
for (Collection *group = bmain->collections.first; group; group = group->id.next) { LISTBASE_FOREACH (Collection *, group, &bmain->collections) {
do_version_group_collection_to_collection(bmain, group); do_version_group_collection_to_collection(bmain, group);
} }
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
do_version_scene_collection_to_collection(bmain, scene); do_version_scene_collection_to_collection(bmain, scene);
} }
} }
@@ -1414,7 +1409,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
/* Update Curve object Shape Key data layout to include the Radius property */ /* Update Curve object Shape Key data layout to include the Radius property */
if (!MAIN_VERSION_ATLEAST(bmain, 280, 23)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 23)) {
for (Curve *cu = bmain->curves.first; cu; cu = cu->id.next) { LISTBASE_FOREACH (Curve *, cu, &bmain->curves) {
if (!cu->key || cu->key->elemsize != sizeof(float[4])) { if (!cu->key || cu->key->elemsize != sizeof(float[4])) {
continue; continue;
} }
@@ -1435,8 +1430,8 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
block->totelem = new_count; block->totelem = new_count;
block->data = MEM_callocN(sizeof(float[3]) * new_count, __func__); block->data = MEM_callocN(sizeof(float[3]) * new_count, __func__);
float *oldptr = old_data; float *oldptr = static_cast<float *>(old_data);
float(*newptr)[3] = block->data; float(*newptr)[3] = static_cast<float(*)[3]>(block->data);
LISTBASE_FOREACH (Nurb *, nu, &cu->nurb) { LISTBASE_FOREACH (Nurb *, nu, &cu->nurb) {
if (nu->bezt) { if (nu->bezt) {
@@ -1484,8 +1479,8 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
/* Move B-Bone custom handle settings from bPoseChannel to Bone. */ /* Move B-Bone custom handle settings from bPoseChannel to Bone. */
if (!MAIN_VERSION_ATLEAST(bmain, 280, 25)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 25)) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
bArmature *arm = ob->data; bArmature *arm = static_cast<bArmature *>(ob->data);
/* If it is an armature from the same file. */ /* If it is an armature from the same file. */
if (ob->pose && arm && arm->id.lib == ob->id.lib) { if (ob->pose && arm && arm->id.lib == ob->id.lib) {
@@ -1497,7 +1492,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
/* If the settings in the Bone are not set, copy. */ /* If the settings in the Bone are not set, copy. */
if (pchan->bone->bbone_prev_type == BBONE_HANDLE_AUTO && if (pchan->bone->bbone_prev_type == BBONE_HANDLE_AUTO &&
pchan->bone->bbone_next_type == BBONE_HANDLE_AUTO && pchan->bone->bbone_next_type == BBONE_HANDLE_AUTO &&
pchan->bone->bbone_prev == NULL && pchan->bone->bbone_next == NULL) pchan->bone->bbone_prev == nullptr && pchan->bone->bbone_next == nullptr)
{ {
pchan->bone->bbone_prev_type = (pchan->bboneflag & PCHAN_BBONE_CUSTOM_START_REL) ? pchan->bone->bbone_prev_type = (pchan->bboneflag & PCHAN_BBONE_CUSTOM_START_REL) ?
BBONE_HANDLE_RELATIVE : BBONE_HANDLE_RELATIVE :
@@ -1521,7 +1516,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
/* Tag pose rebuild for all objects that use this armature. */ /* Tag pose rebuild for all objects that use this armature. */
if (rebuild) { if (rebuild) {
for (Object *ob2 = bmain->objects.first; ob2; ob2 = ob2->id.next) { LISTBASE_FOREACH (Object *, ob2, &bmain->objects) {
if (ob2->pose && ob2->data == arm) { if (ob2->pose && ob2->data == arm) {
ob2->pose->flag |= POSE_RECALC; ob2->pose->flag |= POSE_RECALC;
} }
@@ -1532,8 +1527,8 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 30)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 30)) {
for (Brush *brush = bmain->brushes.first; brush; brush = brush->id.next) { LISTBASE_FOREACH (Brush *, brush, &bmain->brushes) {
if (brush->gpencil_settings != NULL) { if (brush->gpencil_settings != nullptr) {
brush->gpencil_tool = brush->gpencil_settings->brush_type; brush->gpencil_tool = brush->gpencil_settings->brush_type;
} }
} }
@@ -1543,10 +1538,10 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 38)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 38)) {
/* Ensure we get valid rigidbody object/constraint data in relevant collections' objects. /* Ensure we get valid rigidbody object/constraint data in relevant collections' objects.
*/ */
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
RigidBodyWorld *rbw = scene->rigidbody_world; RigidBodyWorld *rbw = scene->rigidbody_world;
if (rbw == NULL) { if (rbw == nullptr) {
continue; continue;
} }
@@ -1563,7 +1558,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
if (scene->eevee.flag & SCE_EEVEE_DOF_ENABLED) { if (scene->eevee.flag & SCE_EEVEE_DOF_ENABLED) {
Object *cam_ob = scene->camera; Object *cam_ob = scene->camera;
if (cam_ob && cam_ob->type == OB_CAMERA) { if (cam_ob && cam_ob->type == OB_CAMERA) {
Camera *cam = cam_ob->data; Camera *cam = static_cast<Camera *>(cam_ob->data);
cam->dof.flag |= CAM_DOF_ENABLED; cam->dof.flag |= CAM_DOF_ENABLED;
} }
} }
@@ -1577,7 +1572,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
camera->dof.aperture_rotation = camera->gpu_dof.rotation; camera->dof.aperture_rotation = camera->gpu_dof.rotation;
camera->dof.aperture_ratio = camera->gpu_dof.ratio; camera->dof.aperture_ratio = camera->gpu_dof.ratio;
camera->dof.aperture_blades = camera->gpu_dof.num_blades; camera->dof.aperture_blades = camera->gpu_dof.num_blades;
camera->dof_ob = NULL; camera->dof_ob = nullptr;
} }
} }
@@ -1586,7 +1581,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
* now that we use dual-source blending. */ * now that we use dual-source blending. */
/* We take care of doing only node-trees that are always part of materials /* We take care of doing only node-trees that are always part of materials
* with old blending modes. */ * with old blending modes. */
for (Material *ma = bmain->materials.first; ma; ma = ma->id.next) { LISTBASE_FOREACH (Material *, ma, &bmain->materials) {
bNodeTree *ntree = ma->nodetree; bNodeTree *ntree = ma->nodetree;
if (ma->blend_method == 1 /* MA_BM_ADD */) { if (ma->blend_method == 1 /* MA_BM_ADD */) {
if (ma->use_nodes) { if (ma->use_nodes) {
@@ -1605,7 +1600,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
/* Update all ruler layers to set new flag. */ /* Update all ruler layers to set new flag. */
LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
bGPdata *gpd = scene->gpd; bGPdata *gpd = scene->gpd;
if (gpd == NULL) { if (gpd == nullptr) {
continue; continue;
} }
LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) { LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
@@ -1619,7 +1614,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
/* This versioning could probably be done only on earlier versions, not sure however /* This versioning could probably be done only on earlier versions, not sure however
* which exact version fully deprecated tessfaces, so think we can keep that one here, no * which exact version fully deprecated tessfaces, so think we can keep that one here, no
* harm to be expected anyway for being over-conservative. */ * harm to be expected anyway for being over-conservative. */
for (Mesh *me = bmain->meshes.first; me != NULL; me = me->id.next) { LISTBASE_FOREACH (Mesh *, me, &bmain->meshes) {
/* Check if we need to convert mfaces to polys. */ /* Check if we need to convert mfaces to polys. */
if (me->totface && !me->totpoly) { if (me->totface && !me->totpoly) {
/* temporarily switch main so that reading from /* temporarily switch main so that reading from
@@ -1654,26 +1649,30 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
do_versions_rename_id(bmain, ID_BR, "Draw Marker", "Marker Bold"); do_versions_rename_id(bmain, ID_BR, "Draw Marker", "Marker Bold");
do_versions_rename_id(bmain, ID_BR, "Draw Block", "Marker Chisel"); do_versions_rename_id(bmain, ID_BR, "Draw Block", "Marker Chisel");
ma = BLI_findstring(&bmain->materials, "Black", offsetof(ID, name) + 2); ma = static_cast<Material *>(
BLI_findstring(&bmain->materials, "Black", offsetof(ID, name) + 2));
if (ma && ma->gp_style) { if (ma && ma->gp_style) {
do_versions_rename_id(bmain, ID_MA, "Black", "Solid Stroke"); do_versions_rename_id(bmain, ID_MA, "Black", "Solid Stroke");
} }
ma = BLI_findstring(&bmain->materials, "Red", offsetof(ID, name) + 2); ma = static_cast<Material *>(BLI_findstring(&bmain->materials, "Red", offsetof(ID, name) + 2));
if (ma && ma->gp_style) { if (ma && ma->gp_style) {
do_versions_rename_id(bmain, ID_MA, "Red", "Squares Stroke"); do_versions_rename_id(bmain, ID_MA, "Red", "Squares Stroke");
} }
ma = BLI_findstring(&bmain->materials, "Grey", offsetof(ID, name) + 2); ma = static_cast<Material *>(
BLI_findstring(&bmain->materials, "Grey", offsetof(ID, name) + 2));
if (ma && ma->gp_style) { if (ma && ma->gp_style) {
do_versions_rename_id(bmain, ID_MA, "Grey", "Solid Fill"); do_versions_rename_id(bmain, ID_MA, "Grey", "Solid Fill");
} }
ma = BLI_findstring(&bmain->materials, "Black Dots", offsetof(ID, name) + 2); ma = static_cast<Material *>(
BLI_findstring(&bmain->materials, "Black Dots", offsetof(ID, name) + 2));
if (ma && ma->gp_style) { if (ma && ma->gp_style) {
do_versions_rename_id(bmain, ID_MA, "Black Dots", "Dots Stroke"); do_versions_rename_id(bmain, ID_MA, "Black Dots", "Dots Stroke");
} }
brush = BLI_findstring(&bmain->brushes, "Pencil", offsetof(ID, name) + 2); brush = static_cast<Brush *>(
BLI_findstring(&bmain->brushes, "Pencil", offsetof(ID, name) + 2));
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
ToolSettings *ts = scene->toolsettings; ToolSettings *ts = scene->toolsettings;
/* Ensure new Paint modes. */ /* Ensure new Paint modes. */
@@ -1683,7 +1682,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
BKE_paint_ensure_from_paintmode(scene, PAINT_MODE_WEIGHT_GPENCIL); BKE_paint_ensure_from_paintmode(scene, PAINT_MODE_WEIGHT_GPENCIL);
/* Set default Draw brush. */ /* Set default Draw brush. */
if (brush != NULL) { if (brush != nullptr) {
Paint *paint = &ts->gp_paint->paint; Paint *paint = &ts->gp_paint->paint;
BKE_paint_brush_set(paint, brush); BKE_paint_brush_set(paint, brush);
/* Enable cursor by default. */ /* Enable cursor by default. */
@@ -1697,7 +1696,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
/* During development of Blender 2.80 the "Object.hide" property was /* During development of Blender 2.80 the "Object.hide" property was
* removed, and reintroduced in 5e968a996a53 as "Object.hide_viewport". */ * removed, and reintroduced in 5e968a996a53 as "Object.hide_viewport". */
LISTBASE_FOREACH (Object *, ob, &bmain->objects) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
BKE_fcurves_id_cb(&ob->id, do_version_fcurve_hide_viewport_fix, NULL); BKE_fcurves_id_cb(&ob->id, do_version_fcurve_hide_viewport_fix, nullptr);
} }
/* Reset all grease pencil brushes. */ /* Reset all grease pencil brushes. */
@@ -1752,9 +1751,9 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
* (see #55668, involving Meta strips). */ * (see #55668, involving Meta strips). */
static void do_versions_seq_unique_name_all_strips(Scene *sce, ListBase *seqbasep) static void do_versions_seq_unique_name_all_strips(Scene *sce, ListBase *seqbasep)
{ {
for (Sequence *seq = seqbasep->first; seq != NULL; seq = seq->next) { LISTBASE_FOREACH (Sequence *, seq, seqbasep) {
SEQ_sequence_base_unique_name_recursive(sce, &sce->ed->seqbase, seq); SEQ_sequence_base_unique_name_recursive(sce, &sce->ed->seqbase, seq);
if (seq->seqbase.first != NULL) { if (seq->seqbase.first != nullptr) {
do_versions_seq_unique_name_all_strips(sce, &seq->seqbase); do_versions_seq_unique_name_all_strips(sce, &seq->seqbase);
} }
} }
@@ -1768,7 +1767,7 @@ static void do_versions_seq_set_cache_defaults(Editing *ed)
ed->recycle_max_cost = 10.0f; ed->recycle_max_cost = 10.0f;
} }
static bool seq_update_flags_cb(Sequence *seq, void *UNUSED(user_data)) static bool seq_update_flags_cb(Sequence *seq, void * /*user_data*/)
{ {
seq->flag &= ~((1 << 6) | (1 << 18) | (1 << 19) | (1 << 21)); seq->flag &= ~((1 << 6) | (1 << 18) | (1 << 19) | (1 << 21));
if (seq->type == SEQ_TYPE_SPEED) { if (seq->type == SEQ_TYPE_SPEED) {
@@ -1778,29 +1777,36 @@ static bool seq_update_flags_cb(Sequence *seq, void *UNUSED(user_data))
return true; return true;
} }
enum class eNTreeDoVersionErrors : int8_t {
NTREE_DOVERSION_NO_ERROR = 0,
NTREE_DOVERSION_NEED_OUTPUT = (1 << 0),
NTREE_DOVERSION_TRANSPARENCY_EMISSION = (1 << 1),
};
ENUM_OPERATORS(eNTreeDoVersionErrors, ~int8_t{});
/* NOLINTNEXTLINE: readability-function-size */ /* NOLINTNEXTLINE: readability-function-size */
void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain) void blo_do_versions_280(FileData *fd, Library * /*lib*/, Main *bmain)
{ {
bool use_collection_compat_28 = true; bool use_collection_compat_28 = true;
if (!MAIN_VERSION_ATLEAST(bmain, 280, 0)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 0)) {
use_collection_compat_28 = false; use_collection_compat_28 = false;
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->r.gauss = 1.5f; scene->r.gauss = 1.5f;
} }
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 1)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 1)) {
if (!DNA_struct_elem_find(fd->filesdna, "GPUDOFSettings", "float", "ratio")) { if (!DNA_struct_elem_find(fd->filesdna, "GPUDOFSettings", "float", "ratio")) {
for (Camera *ca = bmain->cameras.first; ca; ca = ca->id.next) { LISTBASE_FOREACH (Camera *, ca, &bmain->cameras) {
ca->gpu_dof.ratio = 1.0f; ca->gpu_dof.ratio = 1.0f;
} }
} }
/* MTexPoly now removed. */ /* MTexPoly now removed. */
if (DNA_struct_find(fd->filesdna, "MTexPoly")) { if (DNA_struct_find(fd->filesdna, "MTexPoly")) {
for (Mesh *me = bmain->meshes.first; me; me = me->id.next) { LISTBASE_FOREACH (Mesh *, me, &bmain->meshes) {
/* If we have UVs, so this file will have MTexPoly layers too! */ /* If we have UVs, so this file will have MTexPoly layers too! */
if (CustomData_has_layer(&me->ldata, CD_MLOOPUV) || if (CustomData_has_layer(&me->ldata, CD_MLOOPUV) ||
CustomData_has_layer(&me->ldata, CD_PROP_FLOAT2)) CustomData_has_layer(&me->ldata, CD_PROP_FLOAT2))
@@ -1814,7 +1820,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 2)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 2)) {
if (!DNA_struct_elem_find(fd->filesdna, "Lamp", "float", "cascade_max_dist")) { if (!DNA_struct_elem_find(fd->filesdna, "Lamp", "float", "cascade_max_dist")) {
for (Light *la = bmain->lights.first; la; la = la->id.next) { LISTBASE_FOREACH (Light *, la, &bmain->lights) {
la->cascade_max_dist = 1000.0f; la->cascade_max_dist = 1000.0f;
la->cascade_count = 4; la->cascade_count = 4;
la->cascade_exponent = 0.8f; la->cascade_exponent = 0.8f;
@@ -1823,7 +1829,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "Lamp", "float", "contact_dist")) { if (!DNA_struct_elem_find(fd->filesdna, "Lamp", "float", "contact_dist")) {
for (Light *la = bmain->lights.first; la; la = la->id.next) { LISTBASE_FOREACH (Light *, la, &bmain->lights) {
la->contact_dist = 0.2f; la->contact_dist = 0.2f;
la->contact_bias = 0.03f; la->contact_bias = 0.03f;
la->contact_thickness = 0.2f; la->contact_thickness = 0.2f;
@@ -1831,24 +1837,18 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "LightProbe", "float", "vis_bias")) { if (!DNA_struct_elem_find(fd->filesdna, "LightProbe", "float", "vis_bias")) {
for (LightProbe *probe = bmain->lightprobes.first; probe; probe = probe->id.next) { LISTBASE_FOREACH (LightProbe *, probe, &bmain->lightprobes) {
probe->vis_bias = 1.0f; probe->vis_bias = 1.0f;
probe->vis_blur = 0.2f; probe->vis_blur = 0.2f;
} }
} }
typedef enum eNTreeDoVersionErrors {
NTREE_DOVERSION_NO_ERROR = 0,
NTREE_DOVERSION_NEED_OUTPUT = (1 << 0),
NTREE_DOVERSION_TRANSPARENCY_EMISSION = (1 << 1),
} eNTreeDoVersionErrors;
/* Eevee shader nodes renamed because of the output node system. /* Eevee shader nodes renamed because of the output node system.
* Note that a new output node is not being added here, because it would be overkill * Note that a new output node is not being added here, because it would be overkill
* to handle this case in lib_verify_nodetree. * to handle this case in lib_verify_nodetree.
* *
* Also, metallic node is now unified into the principled node. */ * Also, metallic node is now unified into the principled node. */
eNTreeDoVersionErrors error = NTREE_DOVERSION_NO_ERROR; eNTreeDoVersionErrors error = eNTreeDoVersionErrors::NTREE_DOVERSION_NO_ERROR;
FOREACH_NODETREE_BEGIN (bmain, ntree, id) { FOREACH_NODETREE_BEGIN (bmain, ntree, id) {
if (ntree->type == NTREE_SHADER) { if (ntree->type == NTREE_SHADER) {
@@ -1857,13 +1857,13 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
STREQ(node->idname, "ShaderNodeOutputMetallic")) STREQ(node->idname, "ShaderNodeOutputMetallic"))
{ {
STRNCPY(node->idname, "ShaderNodeEeveeMetallic"); STRNCPY(node->idname, "ShaderNodeEeveeMetallic");
error |= NTREE_DOVERSION_NEED_OUTPUT; error |= eNTreeDoVersionErrors::NTREE_DOVERSION_NEED_OUTPUT;
} }
else if (node->type == SH_NODE_EEVEE_SPECULAR && else if (node->type == SH_NODE_EEVEE_SPECULAR &&
STREQ(node->idname, "ShaderNodeOutputSpecular")) { STREQ(node->idname, "ShaderNodeOutputSpecular")) {
STRNCPY(node->idname, "ShaderNodeEeveeSpecular"); STRNCPY(node->idname, "ShaderNodeEeveeSpecular");
error |= NTREE_DOVERSION_NEED_OUTPUT; error |= eNTreeDoVersionErrors::NTREE_DOVERSION_NEED_OUTPUT;
} }
else if (node->type == 196 /* SH_NODE_OUTPUT_EEVEE_MATERIAL */ && else if (node->type == 196 /* SH_NODE_OUTPUT_EEVEE_MATERIAL */ &&
@@ -1879,15 +1879,17 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
node->type = SH_NODE_BSDF_PRINCIPLED; node->type = SH_NODE_BSDF_PRINCIPLED;
STRNCPY(node->idname, "ShaderNodeBsdfPrincipled"); STRNCPY(node->idname, "ShaderNodeBsdfPrincipled");
node->custom1 = SHD_GLOSSY_MULTI_GGX; node->custom1 = SHD_GLOSSY_MULTI_GGX;
error |= NTREE_DOVERSION_TRANSPARENCY_EMISSION; error |= eNTreeDoVersionErrors::NTREE_DOVERSION_TRANSPARENCY_EMISSION;
} }
} }
} }
} }
FOREACH_NODETREE_END; FOREACH_NODETREE_END;
if (error & NTREE_DOVERSION_NEED_OUTPUT) { if ((error & eNTreeDoVersionErrors::NTREE_DOVERSION_NEED_OUTPUT) !=
BKE_report(fd->reports != NULL ? fd->reports->reports : NULL, eNTreeDoVersionErrors::NTREE_DOVERSION_NO_ERROR)
{
BKE_report(fd->reports != nullptr ? fd->reports->reports : nullptr,
RPT_ERROR, RPT_ERROR,
"Eevee material conversion problem. Error in console"); "Eevee material conversion problem. Error in console");
printf( printf(
@@ -1896,8 +1898,10 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
"nodes.\n"); "nodes.\n");
} }
if (error & NTREE_DOVERSION_TRANSPARENCY_EMISSION) { if ((error & eNTreeDoVersionErrors::NTREE_DOVERSION_TRANSPARENCY_EMISSION) !=
BKE_report(fd->reports != NULL ? fd->reports->reports : NULL, eNTreeDoVersionErrors::NTREE_DOVERSION_NO_ERROR)
{
BKE_report(fd->reports != nullptr ? fd->reports->reports : nullptr,
RPT_ERROR, RPT_ERROR,
"Eevee material conversion problem. Error in console"); "Eevee material conversion problem. Error in console");
printf( printf(
@@ -1911,9 +1915,8 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
false) && false) &&
DNA_struct_elem_find(fd->filesdna, "Scene", "ListBase", "view_layers")) DNA_struct_elem_find(fd->filesdna, "Scene", "ListBase", "view_layers"))
{ {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
ViewLayer *view_layer; LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
for (view_layer = scene->view_layers.first; view_layer; view_layer = view_layer->next) {
view_layer->flag |= VIEW_LAYER_FREESTYLE; view_layer->flag |= VIEW_LAYER_FREESTYLE;
view_layer->layflag = 0x7FFF; /* solid Z-transparency halo edge strand. */ view_layer->layflag = 0x7FFF; /* solid Z-transparency halo edge strand. */
view_layer->passflag = SCE_PASS_COMBINED | SCE_PASS_Z; view_layer->passflag = SCE_PASS_COMBINED | SCE_PASS_Z;
@@ -1927,14 +1930,14 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
{ {
/* Init grease pencil edit line color */ /* Init grease pencil edit line color */
if (!DNA_struct_elem_find(fd->filesdna, "bGPdata", "float", "line_color[4]")) { if (!DNA_struct_elem_find(fd->filesdna, "bGPdata", "float", "line_color[4]")) {
for (bGPdata *gpd = bmain->gpencils.first; gpd; gpd = gpd->id.next) { LISTBASE_FOREACH (bGPdata *, gpd, &bmain->gpencils) {
ARRAY_SET_ITEMS(gpd->line_color, 0.6f, 0.6f, 0.6f, 0.5f); ARRAY_SET_ITEMS(gpd->line_color, 0.6f, 0.6f, 0.6f, 0.5f);
} }
} }
/* Init grease pencil pixel size factor */ /* Init grease pencil pixel size factor */
if (!DNA_struct_elem_find(fd->filesdna, "bGPdata", "float", "pixfactor")) { if (!DNA_struct_elem_find(fd->filesdna, "bGPdata", "float", "pixfactor")) {
for (bGPdata *gpd = bmain->gpencils.first; gpd; gpd = gpd->id.next) { LISTBASE_FOREACH (bGPdata *, gpd, &bmain->gpencils) {
gpd->pixfactor = GP_DEFAULT_PIX_FACTOR; gpd->pixfactor = GP_DEFAULT_PIX_FACTOR;
} }
} }
@@ -1942,10 +1945,10 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Grease pencil multi-frame falloff curve. */ /* Grease pencil multi-frame falloff curve. */
if (!DNA_struct_elem_find(fd->filesdna, "GP_Sculpt_Settings", "CurveMapping", "cur_falloff")) if (!DNA_struct_elem_find(fd->filesdna, "GP_Sculpt_Settings", "CurveMapping", "cur_falloff"))
{ {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
/* sculpt brushes */ /* sculpt brushes */
GP_Sculpt_Settings *gset = &scene->toolsettings->gp_sculpt; GP_Sculpt_Settings *gset = &scene->toolsettings->gp_sculpt;
if ((gset) && (gset->cur_falloff == NULL)) { if ((gset) && (gset->cur_falloff == nullptr)) {
gset->cur_falloff = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); gset->cur_falloff = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
BKE_curvemapping_init(gset->cur_falloff); BKE_curvemapping_init(gset->cur_falloff);
BKE_curvemap_reset(gset->cur_falloff->cm, BKE_curvemap_reset(gset->cur_falloff->cm,
@@ -1970,15 +1973,14 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
#ifdef USE_COLLECTION_COMPAT_28 #ifdef USE_COLLECTION_COMPAT_28
if (use_collection_compat_28 && !MAIN_VERSION_ATLEAST(bmain, 280, 3)) { if (use_collection_compat_28 && !MAIN_VERSION_ATLEAST(bmain, 280, 3)) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
ViewLayer *view_layer; LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
for (view_layer = scene->view_layers.first; view_layer; view_layer = view_layer->next) {
do_version_view_layer_visibility(view_layer); do_version_view_layer_visibility(view_layer);
} }
} }
for (Collection *group = bmain->collections.first; group; group = group->id.next) { LISTBASE_FOREACH (Collection *, group, &bmain->collections) {
if (group->view_layer != NULL) { if (group->view_layer != nullptr) {
do_version_view_layer_visibility(group->view_layer); do_version_view_layer_visibility(group->view_layer);
} }
} }
@@ -1988,9 +1990,9 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Files from this version included do get a valid `win->screen` pointer written for backward /* Files from this version included do get a valid `win->screen` pointer written for backward
* compatibility, however this should never be used nor needed, so clear these pointers here. */ * compatibility, however this should never be used nor needed, so clear these pointers here. */
if (MAIN_VERSION_ATLEAST(bmain, 280, 1)) { if (MAIN_VERSION_ATLEAST(bmain, 280, 1)) {
for (wmWindowManager *wm = bmain->wm.first; wm; wm = wm->id.next) { LISTBASE_FOREACH (wmWindowManager *, wm, &bmain->wm) {
LISTBASE_FOREACH (wmWindow *, win, &wm->windows) { LISTBASE_FOREACH (wmWindow *, win, &wm->windows) {
win->screen = NULL; win->screen = nullptr;
} }
} }
} }
@@ -1998,11 +2000,11 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 3)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 3)) {
/* init grease pencil grids and paper */ /* init grease pencil grids and paper */
if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "gpencil_paper_color[3]")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "gpencil_paper_color[3]")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
View3D *v3d = (View3D *)sl; View3D *v3d = reinterpret_cast<View3D *>(sl);
v3d->overlay.gpencil_paper_opacity = 0.5f; v3d->overlay.gpencil_paper_opacity = 0.5f;
v3d->overlay.gpencil_grid_opacity = 0.9f; v3d->overlay.gpencil_grid_opacity = 0.9f;
} }
@@ -2014,14 +2016,10 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 6)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 6)) {
if (DNA_struct_elem_find(fd->filesdna, "SpaceOutliner", "int", "filter") == false) { if (DNA_struct_elem_find(fd->filesdna, "SpaceOutliner", "int", "filter") == false) {
bScreen *screen;
ScrArea *area;
SpaceLink *sl;
/* Update files using invalid (outdated) outlinevis Outliner values. */ /* Update files using invalid (outdated) outlinevis Outliner values. */
for (screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
for (area = screen->areabase.first; area; area = area->next) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
for (sl = area->spacedata.first; sl; sl = sl->next) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_OUTLINER) { if (sl->spacetype == SPACE_OUTLINER) {
SpaceOutliner *space_outliner = (SpaceOutliner *)sl; SpaceOutliner *space_outliner = (SpaceOutliner *)sl;
@@ -2041,16 +2039,15 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "LightProbe", "float", "intensity")) { if (!DNA_struct_elem_find(fd->filesdna, "LightProbe", "float", "intensity")) {
for (LightProbe *probe = bmain->lightprobes.first; probe; probe = probe->id.next) { LISTBASE_FOREACH (LightProbe *, probe, &bmain->lightprobes) {
probe->intensity = 1.0f; probe->intensity = 1.0f;
} }
} }
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
bConstraint *con, *con_next; bConstraint *con = static_cast<bConstraint *>(ob->constraints.first);
con = ob->constraints.first;
while (con) { while (con) {
con_next = con->next; bConstraint *con_next = static_cast<bConstraint *>(con->next);
if (con->type == 17) { /* CONSTRAINT_TYPE_RIGIDBODYJOINT */ if (con->type == 17) { /* CONSTRAINT_TYPE_RIGIDBODYJOINT */
BLI_remlink(&ob->constraints, con); BLI_remlink(&ob->constraints, con);
BKE_constraint_free_data(con); BKE_constraint_free_data(con);
@@ -2060,7 +2057,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2084,7 +2081,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
* development, we assume any files saved in 2.8 had Eevee set * development, we assume any files saved in 2.8 had Eevee set
* as scene render engine. */ * as scene render engine. */
if (MAIN_VERSION_ATLEAST(bmain, 280, 0)) { if (MAIN_VERSION_ATLEAST(bmain, 280, 0)) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
STRNCPY(scene->r.engine, RE_engine_id_BLENDER_EEVEE); STRNCPY(scene->r.engine, RE_engine_id_BLENDER_EEVEE);
} }
} }
@@ -2092,7 +2089,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 8)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 8)) {
/* Blender Internal removal */ /* Blender Internal removal */
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
if (STR_ELEM(scene->r.engine, "BLENDER_RENDER", "BLENDER_GAME")) { if (STR_ELEM(scene->r.engine, "BLENDER_RENDER", "BLENDER_GAME")) {
STRNCPY(scene->r.engine, RE_engine_id_BLENDER_EEVEE); STRNCPY(scene->r.engine, RE_engine_id_BLENDER_EEVEE);
} }
@@ -2100,7 +2097,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
scene->r.bake_mode = 0; scene->r.bake_mode = 0;
} }
for (Tex *tex = bmain->textures.first; tex; tex = tex->id.next) { LISTBASE_FOREACH (Tex *, tex, &bmain->textures) {
/* Removed environment map, point-density, voxel-data, ocean textures. */ /* Removed environment map, point-density, voxel-data, ocean textures. */
if (ELEM(tex->type, 10, 14, 15, 16)) { if (ELEM(tex->type, 10, 14, 15, 16)) {
tex->type = 0; tex->type = 0;
@@ -2111,7 +2108,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 11)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 11)) {
/* Remove info editor, but only if at the top of the window. */ /* Remove info editor, but only if at the top of the window. */
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
/* Calculate window width/height from screen vertices */ /* Calculate window width/height from screen vertices */
int win_width = 0, win_height = 0; int win_width = 0, win_height = 0;
LISTBASE_FOREACH (ScrVert *, vert, &screen->vertbase) { LISTBASE_FOREACH (ScrVert *, vert, &screen->vertbase) {
@@ -2119,8 +2116,10 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
win_height = MAX2(win_height, vert->vec.y); win_height = MAX2(win_height, vert->vec.y);
} }
for (ScrArea *area = screen->areabase.first, *area_next; area; area = area_next) { for (ScrArea *area = static_cast<ScrArea *>(screen->areabase.first), *area_next; area;
area_next = area->next; area = area_next)
{
area_next = static_cast<ScrArea *>(area->next);
if (area->spacetype == SPACE_INFO) { if (area->spacetype == SPACE_INFO) {
if ((area->v2->vec.y == win_height) && (area->v1->vec.x == 0) && if ((area->v2->vec.y == win_height) && (area->v1->vec.x == 0) &&
@@ -2143,7 +2142,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 11)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 11)) {
for (Light *la = bmain->lights.first; la; la = la->id.next) { LISTBASE_FOREACH (Light *, la, &bmain->lights) {
if (la->mode & (1 << 13)) { /* LA_SHAD_RAY */ if (la->mode & (1 << 13)) { /* LA_SHAD_RAY */
la->mode |= LA_SHADOW; la->mode |= LA_SHADOW;
la->mode &= ~(1 << 13); la->mode &= ~(1 << 13);
@@ -2153,18 +2152,20 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 12)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 12)) {
/* Remove tool property regions. */ /* Remove tool property regions. */
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (ELEM(sl->spacetype, SPACE_VIEW3D, SPACE_CLIP)) { if (ELEM(sl->spacetype, SPACE_VIEW3D, SPACE_CLIP)) {
ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase : ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
&sl->regionbase; &sl->regionbase;
for (ARegion *region = regionbase->first, *region_next; region; region = region_next) { for (ARegion *region = static_cast<ARegion *>(regionbase->first), *region_next; region;
region_next = region->next; region = region_next)
{
region_next = static_cast<ARegion *>(region->next);
if (region->regiontype == RGN_TYPE_TOOL_PROPS) { if (region->regiontype == RGN_TYPE_TOOL_PROPS) {
BKE_area_region_free(NULL, region); BKE_area_region_free(nullptr, region);
BLI_freelinkN(regionbase, region); BLI_freelinkN(regionbase, region);
} }
} }
@@ -2177,13 +2178,13 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 13)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 13)) {
/* Initialize specular factor. */ /* Initialize specular factor. */
if (!DNA_struct_elem_find(fd->filesdna, "Lamp", "float", "spec_fac")) { if (!DNA_struct_elem_find(fd->filesdna, "Lamp", "float", "spec_fac")) {
for (Light *la = bmain->lights.first; la; la = la->id.next) { LISTBASE_FOREACH (Light *, la, &bmain->lights) {
la->spec_fac = 1.0f; la->spec_fac = 1.0f;
} }
} }
/* Initialize new view3D options. */ /* Initialize new view3D options. */
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2205,24 +2206,25 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 14)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 14)) {
if (!DNA_struct_elem_find(fd->filesdna, "Scene", "SceneDisplay", "display")) { if (!DNA_struct_elem_find(fd->filesdna, "Scene", "SceneDisplay", "display")) {
/* Initialize new scene.SceneDisplay */ /* Initialize new scene.SceneDisplay */
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
copy_v3_v3(scene->display.light_direction, (float[3]){-M_SQRT1_3, -M_SQRT1_3, M_SQRT1_3}); const float vector[3]{-M_SQRT1_3, -M_SQRT1_3, M_SQRT1_3};
copy_v3_v3(scene->display.light_direction, vector);
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "SceneDisplay", "float", "shadow_shift")) { if (!DNA_struct_elem_find(fd->filesdna, "SceneDisplay", "float", "shadow_shift")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->display.shadow_shift = 0.1; scene->display.shadow_shift = 0.1;
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "char", "transform_pivot_point")) { if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "char", "transform_pivot_point")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->toolsettings->transform_pivot_point = V3D_AROUND_CENTER_MEDIAN; scene->toolsettings->transform_pivot_point = V3D_AROUND_CENTER_MEDIAN;
} }
} }
if (!DNA_struct_find(fd->filesdna, "SceneEEVEE")) { if (!DNA_struct_find(fd->filesdna, "SceneEEVEE")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
/* First set the default for all the properties. */ /* First set the default for all the properties. */
scene->eevee.gi_diffuse_bounces = 3; scene->eevee.gi_diffuse_bounces = 3;
@@ -2275,7 +2277,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
SCE_EEVEE_SSR_HALF_RESOLUTION; SCE_EEVEE_SSR_HALF_RESOLUTION;
/* If the file is pre-2.80 move on. */ /* If the file is pre-2.80 move on. */
if (scene->layer_properties == NULL) { if (scene->layer_properties == nullptr) {
continue; continue;
} }
@@ -2283,7 +2285,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
#define EEVEE_GET_BOOL(_props, _name, _flag) \ #define EEVEE_GET_BOOL(_props, _name, _flag) \
{ \ { \
IDProperty *_idprop = IDP_GetPropertyFromGroup(_props, #_name); \ IDProperty *_idprop = IDP_GetPropertyFromGroup(_props, #_name); \
if (_idprop != NULL) { \ if (_idprop != nullptr) { \
const int _value = IDP_Int(_idprop); \ const int _value = IDP_Int(_idprop); \
if (_value) { \ if (_value) { \
scene->eevee.flag |= _flag; \ scene->eevee.flag |= _flag; \
@@ -2298,7 +2300,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
#define EEVEE_GET_INT(_props, _name) \ #define EEVEE_GET_INT(_props, _name) \
{ \ { \
IDProperty *_idprop = IDP_GetPropertyFromGroup(_props, #_name); \ IDProperty *_idprop = IDP_GetPropertyFromGroup(_props, #_name); \
if (_idprop != NULL) { \ if (_idprop != nullptr) { \
scene->eevee._name = IDP_Int(_idprop); \ scene->eevee._name = IDP_Int(_idprop); \
} \ } \
} \ } \
@@ -2307,7 +2309,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
#define EEVEE_GET_FLOAT(_props, _name) \ #define EEVEE_GET_FLOAT(_props, _name) \
{ \ { \
IDProperty *_idprop = IDP_GetPropertyFromGroup(_props, #_name); \ IDProperty *_idprop = IDP_GetPropertyFromGroup(_props, #_name); \
if (_idprop != NULL) { \ if (_idprop != nullptr) { \
scene->eevee._name = IDP_Float(_idprop); \ scene->eevee._name = IDP_Float(_idprop); \
} \ } \
} \ } \
@@ -2316,8 +2318,8 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
#define EEVEE_GET_FLOAT_ARRAY(_props, _name, _length) \ #define EEVEE_GET_FLOAT_ARRAY(_props, _name, _length) \
{ \ { \
IDProperty *_idprop = IDP_GetPropertyFromGroup(_props, #_name); \ IDProperty *_idprop = IDP_GetPropertyFromGroup(_props, #_name); \
if (_idprop != NULL) { \ if (_idprop != nullptr) { \
const float *_values = IDP_Array(_idprop); \ const float *_values = static_cast<float *>(IDP_Array(_idprop)); \
for (int _i = 0; _i < _length; _i++) { \ for (int _i = 0; _i < _length; _i++) { \
scene->eevee._name[_i] = _values[_i]; \ scene->eevee._name[_i] = _values[_i]; \
} \ } \
@@ -2392,7 +2394,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Cleanup. */ /* Cleanup. */
IDP_FreeProperty(scene->layer_properties); IDP_FreeProperty(scene->layer_properties);
scene->layer_properties = NULL; scene->layer_properties = nullptr;
#undef EEVEE_GET_FLOAT_ARRAY #undef EEVEE_GET_FLOAT_ARRAY
#undef EEVEE_GET_FLOAT #undef EEVEE_GET_FLOAT
@@ -2402,13 +2404,13 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 15)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 15)) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->display.matcap_ssao_distance = 0.2f; scene->display.matcap_ssao_distance = 0.2f;
scene->display.matcap_ssao_attenuation = 1.0f; scene->display.matcap_ssao_attenuation = 1.0f;
scene->display.matcap_ssao_samples = 16; scene->display.matcap_ssao_samples = 16;
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_OUTLINER) { if (sl->spacetype == SPACE_OUTLINER) {
@@ -2420,7 +2422,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
switch (scene->toolsettings->snap_mode) { switch (scene->toolsettings->snap_mode) {
case 0: case 0:
scene->toolsettings->snap_mode = (1 << 4); /* SCE_SNAP_MODE_INCREMENT */ scene->toolsettings->snap_mode = (1 << 4); /* SCE_SNAP_MODE_INCREMENT */
@@ -2463,8 +2465,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
ParticleSettings *part; LISTBASE_FOREACH (ParticleSettings *, part, &bmain->particles) {
for (part = bmain->particles.first; part; part = part->id.next) {
part->shape_flag = PART_SHAPE_CLOSE_TIP; part->shape_flag = PART_SHAPE_CLOSE_TIP;
part->shape = 0.0f; part->shape = 0.0f;
part->rad_root = 1.0f; part->rad_root = 1.0f;
@@ -2476,7 +2477,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 18)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 18)) {
if (!DNA_struct_elem_find(fd->filesdna, "Material", "float", "roughness")) { if (!DNA_struct_elem_find(fd->filesdna, "Material", "float", "roughness")) {
for (Material *mat = bmain->materials.first; mat; mat = mat->id.next) { LISTBASE_FOREACH (Material *, mat, &bmain->materials) {
if (mat->use_nodes) { if (mat->use_nodes) {
if (MAIN_VERSION_ATLEAST(bmain, 280, 0)) { if (MAIN_VERSION_ATLEAST(bmain, 280, 0)) {
mat->roughness = mat->gloss_mir; mat->roughness = mat->gloss_mir;
@@ -2491,7 +2492,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
mat->metallic = mat->ray_mirror; mat->metallic = mat->ray_mirror;
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2504,7 +2505,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "xray_alpha")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "xray_alpha")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2519,7 +2520,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
StudioLight *default_matcap = BKE_studiolight_find_default(STUDIOLIGHT_TYPE_MATCAP); StudioLight *default_matcap = BKE_studiolight_find_default(STUDIOLIGHT_TYPE_MATCAP);
/* when loading the internal file is loaded before the matcaps */ /* when loading the internal file is loaded before the matcaps */
if (default_matcap) { if (default_matcap) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2532,7 +2533,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "wireframe_threshold")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "wireframe_threshold")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2544,7 +2545,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "cavity_valley_factor")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "cavity_valley_factor")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2557,7 +2558,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "xray_alpha_bone")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "xray_alpha_bone")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2572,10 +2573,11 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 19)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 19)) {
if (!DNA_struct_elem_find(fd->filesdna, "Image", "ListBase", "renderslot")) { if (!DNA_struct_elem_find(fd->filesdna, "Image", "ListBase", "renderslot")) {
for (Image *ima = bmain->images.first; ima; ima = ima->id.next) { LISTBASE_FOREACH (Image *, ima, &bmain->images) {
if (ima->type == IMA_TYPE_R_RESULT) { if (ima->type == IMA_TYPE_R_RESULT) {
for (int i = 0; i < 8; i++) { for (int i = 0; i < 8; i++) {
RenderSlot *slot = MEM_callocN(sizeof(RenderSlot), "Image Render Slot Init"); RenderSlot *slot = static_cast<RenderSlot *>(
MEM_callocN(sizeof(RenderSlot), "Image Render Slot Init"));
SNPRINTF(slot->name, "Slot %d", i + 1); SNPRINTF(slot->name, "Slot %d", i + 1);
BLI_addtail(&ima->renderslots, slot); BLI_addtail(&ima->renderslots, slot);
} }
@@ -2583,14 +2585,14 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "SpaceAction", "char", "mode_prev")) { if (!DNA_struct_elem_find(fd->filesdna, "SpaceAction", "char", "mode_prev")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_ACTION) { if (sl->spacetype == SPACE_ACTION) {
SpaceAction *saction = (SpaceAction *)sl; SpaceAction *saction = (SpaceAction *)sl;
/* "Dopesheet" should be default here, /* "Dopesheet" should be default here,
* unless it looks like the Action Editor was active instead. */ * unless it looks like the Action Editor was active instead. */
if ((saction->mode_prev == 0) && (saction->action == NULL)) { if ((saction->mode_prev == 0) && (saction->action == nullptr)) {
saction->mode_prev = SACTCONT_DOPESHEET; saction->mode_prev = SACTCONT_DOPESHEET;
} }
} }
@@ -2599,7 +2601,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2616,15 +2618,15 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 21)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 21)) {
for (Scene *sce = bmain->scenes.first; sce != NULL; sce = sce->id.next) { LISTBASE_FOREACH (Scene *, sce, &bmain->scenes) {
if (sce->ed != NULL && sce->ed->seqbase.first != NULL) { if (sce->ed != nullptr && sce->ed->seqbase.first != nullptr) {
do_versions_seq_unique_name_all_strips(sce, &sce->ed->seqbase); do_versions_seq_unique_name_all_strips(sce, &sce->ed->seqbase);
} }
} }
if (!DNA_struct_elem_find( if (!DNA_struct_elem_find(
fd->filesdna, "View3DOverlay", "float", "texture_paint_mode_opacity")) { fd->filesdna, "View3DOverlay", "float", "texture_paint_mode_opacity")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2643,7 +2645,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "char", "background_type")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "char", "background_type")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2656,7 +2658,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "SceneEEVEE", "float", "gi_cubemap_draw_size")) { if (!DNA_struct_elem_find(fd->filesdna, "SceneEEVEE", "float", "gi_cubemap_draw_size")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->eevee.gi_irradiance_draw_size = 0.1f; scene->eevee.gi_irradiance_draw_size = 0.1f;
scene->eevee.gi_cubemap_draw_size = 0.3f; scene->eevee.gi_cubemap_draw_size = 0.3f;
} }
@@ -2664,51 +2666,53 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!DNA_struct_elem_find(fd->filesdna, "RigidBodyWorld", "RigidBodyWorld_Shared", "*shared")) if (!DNA_struct_elem_find(fd->filesdna, "RigidBodyWorld", "RigidBodyWorld_Shared", "*shared"))
{ {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
RigidBodyWorld *rbw = scene->rigidbody_world; RigidBodyWorld *rbw = scene->rigidbody_world;
if (rbw == NULL) { if (rbw == nullptr) {
continue; continue;
} }
if (rbw->shared == NULL) { if (rbw->shared == nullptr) {
rbw->shared = MEM_callocN(sizeof(*rbw->shared), "RigidBodyWorld_Shared"); rbw->shared = static_cast<RigidBodyWorld_Shared *>(
MEM_callocN(sizeof(*rbw->shared), "RigidBodyWorld_Shared"));
} }
/* Move shared pointers from deprecated location to current location */ /* Move shared pointers from deprecated location to current location */
rbw->shared->pointcache = rbw->pointcache; rbw->shared->pointcache = rbw->pointcache;
rbw->shared->ptcaches = rbw->ptcaches; rbw->shared->ptcaches = rbw->ptcaches;
rbw->pointcache = NULL; rbw->pointcache = nullptr;
BLI_listbase_clear(&rbw->ptcaches); BLI_listbase_clear(&rbw->ptcaches);
if (rbw->shared->pointcache == NULL) { if (rbw->shared->pointcache == nullptr) {
rbw->shared->pointcache = BKE_ptcache_add(&(rbw->shared->ptcaches)); rbw->shared->pointcache = BKE_ptcache_add(&(rbw->shared->ptcaches));
} }
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "SoftBody", "SoftBody_Shared", "*shared")) { if (!DNA_struct_elem_find(fd->filesdna, "SoftBody", "SoftBody_Shared", "*shared")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
SoftBody *sb = ob->soft; SoftBody *sb = ob->soft;
if (sb == NULL) { if (sb == nullptr) {
continue; continue;
} }
if (sb->shared == NULL) { if (sb->shared == nullptr) {
sb->shared = MEM_callocN(sizeof(*sb->shared), "SoftBody_Shared"); sb->shared = static_cast<SoftBody_Shared *>(
MEM_callocN(sizeof(*sb->shared), "SoftBody_Shared"));
} }
/* Move shared pointers from deprecated location to current location */ /* Move shared pointers from deprecated location to current location */
sb->shared->pointcache = sb->pointcache; sb->shared->pointcache = sb->pointcache;
sb->shared->ptcaches = sb->ptcaches; sb->shared->ptcaches = sb->ptcaches;
sb->pointcache = NULL; sb->pointcache = nullptr;
BLI_listbase_clear(&sb->ptcaches); BLI_listbase_clear(&sb->ptcaches);
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "short", "type")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "short", "type")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2725,13 +2729,13 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "SceneDisplay", "View3DShading", "shading")) { if (!DNA_struct_elem_find(fd->filesdna, "SceneDisplay", "View3DShading", "shading")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
BKE_screen_view3d_shading_init(&scene->display.shading); BKE_screen_view3d_shading_init(&scene->display.shading);
} }
} }
/* initialize grease pencil view data */ /* initialize grease pencil view data */
if (!DNA_struct_elem_find(fd->filesdna, "SpaceView3D", "float", "vertex_opacity")) { if (!DNA_struct_elem_find(fd->filesdna, "SpaceView3D", "float", "vertex_opacity")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2747,13 +2751,13 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 22)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 22)) {
if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "char", "annotate_v3d_align")) { if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "char", "annotate_v3d_align")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->toolsettings->annotate_v3d_align = GP_PROJECT_VIEWSPACE | GP_PROJECT_CURSOR; scene->toolsettings->annotate_v3d_align = GP_PROJECT_VIEWSPACE | GP_PROJECT_CURSOR;
scene->toolsettings->annotate_thickness = 3; scene->toolsettings->annotate_thickness = 3;
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "bGPDlayer", "short", "line_change")) { if (!DNA_struct_elem_find(fd->filesdna, "bGPDlayer", "short", "line_change")) {
for (bGPdata *gpd = bmain->gpencils.first; gpd; gpd = gpd->id.next) { LISTBASE_FOREACH (bGPdata *, gpd, &bmain->gpencils) {
LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) { LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
gpl->line_change = gpl->thickness; gpl->line_change = gpl->thickness;
if ((gpl->thickness < 1) || (gpl->thickness > 10)) { if ((gpl->thickness < 1) || (gpl->thickness > 10)) {
@@ -2763,7 +2767,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "gpencil_paper_opacity")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "gpencil_paper_opacity")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2775,7 +2779,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "gpencil_grid_opacity")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "gpencil_grid_opacity")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2789,7 +2793,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* default loc axis */ /* default loc axis */
if (!DNA_struct_elem_find(fd->filesdna, "GP_Sculpt_Settings", "int", "lock_axis")) { if (!DNA_struct_elem_find(fd->filesdna, "GP_Sculpt_Settings", "int", "lock_axis")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
/* lock axis */ /* lock axis */
GP_Sculpt_Settings *gset = &scene->toolsettings->gp_sculpt; GP_Sculpt_Settings *gset = &scene->toolsettings->gp_sculpt;
if (gset) { if (gset) {
@@ -2800,7 +2804,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Versioning code for Subsurf modifier. */ /* Versioning code for Subsurf modifier. */
if (!DNA_struct_elem_find(fd->filesdna, "SubsurfModifier", "short", "uv_smooth")) { if (!DNA_struct_elem_find(fd->filesdna, "SubsurfModifier", "short", "uv_smooth")) {
for (Object *object = bmain->objects.first; object != NULL; object = object->id.next) { LISTBASE_FOREACH (Object *, object, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) {
if (md->type == eModifierType_Subsurf) { if (md->type == eModifierType_Subsurf) {
SubsurfModifierData *smd = (SubsurfModifierData *)md; SubsurfModifierData *smd = (SubsurfModifierData *)md;
@@ -2816,7 +2820,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "SubsurfModifier", "short", "quality")) { if (!DNA_struct_elem_find(fd->filesdna, "SubsurfModifier", "short", "quality")) {
for (Object *object = bmain->objects.first; object != NULL; object = object->id.next) { LISTBASE_FOREACH (Object *, object, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) {
if (md->type == eModifierType_Subsurf) { if (md->type == eModifierType_Subsurf) {
SubsurfModifierData *smd = (SubsurfModifierData *)md; SubsurfModifierData *smd = (SubsurfModifierData *)md;
@@ -2827,7 +2831,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
/* Versioning code for Multires modifier. */ /* Versioning code for Multires modifier. */
if (!DNA_struct_elem_find(fd->filesdna, "MultiresModifier", "short", "quality")) { if (!DNA_struct_elem_find(fd->filesdna, "MultiresModifier", "short", "quality")) {
for (Object *object = bmain->objects.first; object != NULL; object = object->id.next) { LISTBASE_FOREACH (Object *, object, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) {
if (md->type == eModifierType_Multires) { if (md->type == eModifierType_Multires) {
MultiresModifierData *mmd = (MultiresModifierData *)md; MultiresModifierData *mmd = (MultiresModifierData *)md;
@@ -2844,9 +2848,9 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "ClothSimSettings", "short", "bending_model")) { if (!DNA_struct_elem_find(fd->filesdna, "ClothSimSettings", "short", "bending_model")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
ClothModifierData *clmd = NULL; ClothModifierData *clmd = nullptr;
if (md->type == eModifierType_Cloth) { if (md->type == eModifierType_Cloth) {
clmd = (ClothModifierData *)md; clmd = (ClothModifierData *)md;
} }
@@ -2855,7 +2859,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
ParticleSystem *psys = psmd->psys; ParticleSystem *psys = psmd->psys;
clmd = psys->clmd; clmd = psys->clmd;
} }
if (clmd != NULL) { if (clmd != nullptr) {
clmd->sim_parms->bending_model = CLOTH_BENDING_LINEAR; clmd->sim_parms->bending_model = CLOTH_BENDING_LINEAR;
clmd->sim_parms->tension = clmd->sim_parms->structural; clmd->sim_parms->tension = clmd->sim_parms->structural;
clmd->sim_parms->compression = clmd->sim_parms->structural; clmd->sim_parms->compression = clmd->sim_parms->structural;
@@ -2873,8 +2877,8 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "BrushGpencilSettings", "float", "era_strength_f")) { if (!DNA_struct_elem_find(fd->filesdna, "BrushGpencilSettings", "float", "era_strength_f")) {
for (Brush *brush = bmain->brushes.first; brush; brush = brush->id.next) { LISTBASE_FOREACH (Brush *, brush, &bmain->brushes) {
if (brush->gpencil_settings != NULL) { if (brush->gpencil_settings != nullptr) {
BrushGpencilSettings *gp = brush->gpencil_settings; BrushGpencilSettings *gp = brush->gpencil_settings;
if (gp->brush_type == GPAINT_TOOL_ERASE) { if (gp->brush_type == GPAINT_TOOL_ERASE) {
gp->era_strength_f = 100.0f; gp->era_strength_f = 100.0f;
@@ -2884,7 +2888,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_Cloth) { if (md->type == eModifierType_Cloth) {
ClothModifierData *clmd = (ClothModifierData *)md; ClothModifierData *clmd = (ClothModifierData *)md;
@@ -2913,7 +2917,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 24)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 24)) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2928,7 +2932,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "ShrinkwrapModifierData", "char", "shrinkMode")) { if (!DNA_struct_elem_find(fd->filesdna, "ShrinkwrapModifierData", "char", "shrinkMode")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_Shrinkwrap) { if (md->type == eModifierType_Shrinkwrap) {
ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md; ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md;
@@ -2942,7 +2946,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "PartDeflect", "float", "pdef_cfrict")) { if (!DNA_struct_elem_find(fd->filesdna, "PartDeflect", "float", "pdef_cfrict")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
if (ob->pd) { if (ob->pd) {
ob->pd->pdef_cfrict = 5.0f; ob->pd->pdef_cfrict = 5.0f;
} }
@@ -2958,7 +2962,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "xray_alpha_wire")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "xray_alpha_wire")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -2972,7 +2976,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 25)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 25)) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
UnitSettings *unit = &scene->unit; UnitSettings *unit = &scene->unit;
if (unit->system != USER_UNIT_NONE) { if (unit->system != USER_UNIT_NONE) {
unit->length_unit = BKE_unit_base_of_type_get(scene->unit.system, B_UNIT_LENGTH); unit->length_unit = BKE_unit_base_of_type_get(scene->unit.system, B_UNIT_LENGTH);
@@ -2982,7 +2986,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
/* gpencil grid settings */ /* gpencil grid settings */
for (bGPdata *gpd = bmain->gpencils.first; gpd; gpd = gpd->id.next) { LISTBASE_FOREACH (bGPdata *, gpd, &bmain->gpencils) {
ARRAY_SET_ITEMS(gpd->grid.color, 0.5f, 0.5f, 0.5f); /* Color */ ARRAY_SET_ITEMS(gpd->grid.color, 0.5f, 0.5f, 0.5f); /* Color */
ARRAY_SET_ITEMS(gpd->grid.scale, 1.0f, 1.0f); /* Scale */ ARRAY_SET_ITEMS(gpd->grid.scale, 1.0f, 1.0f); /* Scale */
gpd->grid.lines = GP_DEFAULT_GRID_LINES; /* Number of lines */ gpd->grid.lines = GP_DEFAULT_GRID_LINES; /* Number of lines */
@@ -2990,7 +2994,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 29)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 29)) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -3013,7 +3017,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
* From here on it should be fine to assume there always is a header. * From here on it should be fine to assume there always is a header.
*/ */
if (!MAIN_VERSION_ATLEAST(bmain, 283, 1)) { if (!MAIN_VERSION_ATLEAST(bmain, 283, 1)) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase : ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
@@ -3037,17 +3041,17 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_PROPERTIES) { if (sl->spacetype == SPACE_PROPERTIES) {
ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase : ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
&sl->regionbase; &sl->regionbase;
ARegion *region = MEM_callocN(sizeof(ARegion), "navigation bar for properties"); ARegion *region = static_cast<ARegion *>(
ARegion *region_header = NULL; MEM_callocN(sizeof(ARegion), "navigation bar for properties"));
ARegion *region_header = nullptr;
for (region_header = regionbase->first; region_header; LISTBASE_FOREACH (ARegion *, region_header, regionbase) {
region_header = region_header->next) {
if (region_header->regiontype == RGN_TYPE_HEADER) { if (region_header->regiontype == RGN_TYPE_HEADER) {
break; break;
} }
@@ -3065,7 +3069,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* grease pencil fade layer opacity */ /* grease pencil fade layer opacity */
if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "gpencil_fade_layer")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "gpencil_fade_layer")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -3080,7 +3084,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 30)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 30)) {
/* grease pencil main material show switches */ /* grease pencil main material show switches */
for (Material *mat = bmain->materials.first; mat; mat = mat->id.next) { LISTBASE_FOREACH (Material *, mat, &bmain->materials) {
if (mat->gp_style) { if (mat->gp_style) {
mat->gp_style->flag |= GP_MATERIAL_STROKE_SHOW; mat->gp_style->flag |= GP_MATERIAL_STROKE_SHOW;
mat->gp_style->flag |= GP_MATERIAL_FILL_SHOW; mat->gp_style->flag |= GP_MATERIAL_FILL_SHOW;
@@ -3091,12 +3095,12 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 33)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 33)) {
if (!DNA_struct_elem_find(fd->filesdna, "SceneEEVEE", "float", "overscan")) { if (!DNA_struct_elem_find(fd->filesdna, "SceneEEVEE", "float", "overscan")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->eevee.overscan = 3.0f; scene->eevee.overscan = 3.0f;
} }
} }
for (Light *la = bmain->lights.first; la; la = la->id.next) { LISTBASE_FOREACH (Light *, la, &bmain->lights) {
/* Removed Hemi lights. */ /* Removed Hemi lights. */
if (!ELEM(la->type, LA_LOCAL, LA_SUN, LA_SPOT, LA_AREA)) { if (!ELEM(la->type, LA_LOCAL, LA_SUN, LA_SPOT, LA_AREA)) {
la->type = LA_SUN; la->type = LA_SUN;
@@ -3104,25 +3108,25 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "SceneEEVEE", "float", "light_threshold")) { if (!DNA_struct_elem_find(fd->filesdna, "SceneEEVEE", "float", "light_threshold")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->eevee.light_threshold = 0.01f; scene->eevee.light_threshold = 0.01f;
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "SceneEEVEE", "float", "gi_irradiance_smoothing")) { if (!DNA_struct_elem_find(fd->filesdna, "SceneEEVEE", "float", "gi_irradiance_smoothing")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->eevee.gi_irradiance_smoothing = 0.1f; scene->eevee.gi_irradiance_smoothing = 0.1f;
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "SceneEEVEE", "float", "gi_filter_quality")) { if (!DNA_struct_elem_find(fd->filesdna, "SceneEEVEE", "float", "gi_filter_quality")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->eevee.gi_filter_quality = 1.0f; scene->eevee.gi_filter_quality = 1.0f;
} }
} }
if (!DNA_struct_elem_find(fd->filesdna, "Lamp", "float", "att_dist")) { if (!DNA_struct_elem_find(fd->filesdna, "Lamp", "float", "att_dist")) {
for (Light *la = bmain->lights.first; la; la = la->id.next) { LISTBASE_FOREACH (Light *, la, &bmain->lights) {
la->att_dist = la->clipend; la->att_dist = la->clipend;
} }
} }
@@ -3152,7 +3156,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
#define PAINT_BLEND_ALPHA_SUB 19 #define PAINT_BLEND_ALPHA_SUB 19
#define PAINT_BLEND_ALPHA_ADD 20 #define PAINT_BLEND_ALPHA_ADD 20
for (Brush *brush = bmain->brushes.first; brush; brush = brush->id.next) { LISTBASE_FOREACH (Brush *, brush, &bmain->brushes) {
if (brush->ob_mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) { if (brush->ob_mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) {
const char tool_init = brush->vertexpaint_tool; const char tool_init = brush->vertexpaint_tool;
bool is_blend = false; bool is_blend = false;
@@ -3270,7 +3274,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 34)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 34)) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, slink, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, slink, &area->spacedata) {
if (slink->spacetype == SPACE_USERPREF) { if (slink->spacetype == SPACE_USERPREF) {
@@ -3282,8 +3286,8 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
ListBase *regionbase = (slink == area->spacedata.first) ? &area->regionbase : ListBase *regionbase = (slink == area->spacedata.first) ? &area->regionbase :
&slink->regionbase; &slink->regionbase;
navigation_region = MEM_callocN(sizeof(ARegion), navigation_region = static_cast<ARegion *>(
"userpref navigation-region do_versions"); MEM_callocN(sizeof(ARegion), "userpref navigation-region do_versions"));
/* Order matters, addhead not addtail! */ /* Order matters, addhead not addtail! */
BLI_insertlinkbefore(regionbase, main_region, navigation_region); BLI_insertlinkbefore(regionbase, main_region, navigation_region);
@@ -3299,7 +3303,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 36)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 36)) {
if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "curvature_ridge_factor")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "curvature_ridge_factor")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -3313,7 +3317,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
/* Rename OpenGL to Workbench. */ /* Rename OpenGL to Workbench. */
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
if (STREQ(scene->r.engine, "BLENDER_OPENGL")) { if (STREQ(scene->r.engine, "BLENDER_OPENGL")) {
STRNCPY(scene->r.engine, RE_engine_id_BLENDER_WORKBENCH); STRNCPY(scene->r.engine, RE_engine_id_BLENDER_WORKBENCH);
} }
@@ -3321,7 +3325,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* init Annotations onion skin */ /* init Annotations onion skin */
if (!DNA_struct_elem_find(fd->filesdna, "bGPDlayer", "int", "gstep")) { if (!DNA_struct_elem_find(fd->filesdna, "bGPDlayer", "int", "gstep")) {
for (bGPdata *gpd = bmain->gpencils.first; gpd; gpd = gpd->id.next) { LISTBASE_FOREACH (bGPdata *, gpd, &bmain->gpencils) {
LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) { LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
ARRAY_SET_ITEMS(gpl->gcolor_prev, 0.302f, 0.851f, 0.302f); ARRAY_SET_ITEMS(gpl->gcolor_prev, 0.302f, 0.851f, 0.302f);
ARRAY_SET_ITEMS(gpl->gcolor_next, 0.250f, 0.1f, 1.0f); ARRAY_SET_ITEMS(gpl->gcolor_next, 0.250f, 0.1f, 1.0f);
@@ -3331,7 +3335,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Move studio_light selection to lookdev_light. */ /* Move studio_light selection to lookdev_light. */
if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "char", "lookdev_light[256]")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "char", "lookdev_light[256]")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -3345,7 +3349,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Change Solid mode shadow orientation. */ /* Change Solid mode shadow orientation. */
if (!DNA_struct_elem_find(fd->filesdna, "SceneDisplay", "float", "shadow_focus")) { if (!DNA_struct_elem_find(fd->filesdna, "SceneDisplay", "float", "shadow_focus")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
float *dir = scene->display.light_direction; float *dir = scene->display.light_direction;
SWAP(float, dir[2], dir[1]); SWAP(float, dir[2], dir[1]);
dir[2] = -dir[2]; dir[2] = -dir[2];
@@ -3355,16 +3359,16 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 37)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 37)) {
for (Camera *ca = bmain->cameras.first; ca; ca = ca->id.next) { LISTBASE_FOREACH (Camera *, ca, &bmain->cameras) {
ca->drawsize *= 2.0f; ca->drawsize *= 2.0f;
} }
/* Grease pencil primitive curve */ /* Grease pencil primitive curve */
if (!DNA_struct_elem_find(fd->filesdna, "GP_Sculpt_Settings", "CurveMapping", "cur_primitive")) if (!DNA_struct_elem_find(fd->filesdna, "GP_Sculpt_Settings", "CurveMapping", "cur_primitive"))
{ {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
GP_Sculpt_Settings *gset = &scene->toolsettings->gp_sculpt; GP_Sculpt_Settings *gset = &scene->toolsettings->gp_sculpt;
if ((gset) && (gset->cur_primitive == NULL)) { if ((gset) && (gset->cur_primitive == nullptr)) {
gset->cur_primitive = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); gset->cur_primitive = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
BKE_curvemapping_init(gset->cur_primitive); BKE_curvemapping_init(gset->cur_primitive);
BKE_curvemap_reset(gset->cur_primitive->cm, BKE_curvemap_reset(gset->cur_primitive->cm,
@@ -3378,14 +3382,14 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 38)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 38)) {
if (DNA_struct_elem_find(fd->filesdna, "Object", "char", "empty_image_visibility_flag")) { if (DNA_struct_elem_find(fd->filesdna, "Object", "char", "empty_image_visibility_flag")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
ob->empty_image_visibility_flag ^= (OB_EMPTY_IMAGE_HIDE_PERSPECTIVE | ob->empty_image_visibility_flag ^= (OB_EMPTY_IMAGE_HIDE_PERSPECTIVE |
OB_EMPTY_IMAGE_HIDE_ORTHOGRAPHIC | OB_EMPTY_IMAGE_HIDE_ORTHOGRAPHIC |
OB_EMPTY_IMAGE_HIDE_BACK); OB_EMPTY_IMAGE_HIDE_BACK);
} }
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
switch (sl->spacetype) { switch (sl->spacetype) {
@@ -3440,7 +3444,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->r.mode &= ~(R_MODE_UNUSED_1 | R_MODE_UNUSED_2 | R_MODE_UNUSED_3 | R_MODE_UNUSED_4 | scene->r.mode &= ~(R_MODE_UNUSED_1 | R_MODE_UNUSED_2 | R_MODE_UNUSED_3 | R_MODE_UNUSED_4 |
R_MODE_UNUSED_5 | R_MODE_UNUSED_6 | R_MODE_UNUSED_7 | R_MODE_UNUSED_8 | R_MODE_UNUSED_5 | R_MODE_UNUSED_6 | R_MODE_UNUSED_7 | R_MODE_UNUSED_8 |
R_MODE_UNUSED_10 | R_MODE_UNUSED_13 | R_MODE_UNUSED_16 | R_MODE_UNUSED_10 | R_MODE_UNUSED_13 | R_MODE_UNUSED_16 |
@@ -3456,45 +3460,45 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (scene->ed) { if (scene->ed) {
SEQ_for_each_callback(&scene->ed->seqbase, seq_update_flags_cb, NULL); SEQ_for_each_callback(&scene->ed->seqbase, seq_update_flags_cb, nullptr);
} }
} }
for (World *world = bmain->worlds.first; world; world = world->id.next) { LISTBASE_FOREACH (World *, world, &bmain->worlds) {
world->flag &= ~(WO_MODE_UNUSED_1 | WO_MODE_UNUSED_2 | WO_MODE_UNUSED_3 | WO_MODE_UNUSED_4 | world->flag &= ~(WO_MODE_UNUSED_1 | WO_MODE_UNUSED_2 | WO_MODE_UNUSED_3 | WO_MODE_UNUSED_4 |
WO_MODE_UNUSED_5 | WO_MODE_UNUSED_7); WO_MODE_UNUSED_5 | WO_MODE_UNUSED_7);
} }
for (Image *image = bmain->images.first; image; image = image->id.next) { LISTBASE_FOREACH (Image *, image, &bmain->images) {
image->flag &= ~(IMA_HIGH_BITDEPTH | IMA_FLAG_UNUSED_1 | IMA_FLAG_UNUSED_4 | image->flag &= ~(IMA_HIGH_BITDEPTH | IMA_FLAG_UNUSED_1 | IMA_FLAG_UNUSED_4 |
IMA_FLAG_UNUSED_6 | IMA_FLAG_UNUSED_8 | IMA_FLAG_UNUSED_15 | IMA_FLAG_UNUSED_6 | IMA_FLAG_UNUSED_8 | IMA_FLAG_UNUSED_15 |
IMA_FLAG_UNUSED_16); IMA_FLAG_UNUSED_16);
} }
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
ob->flag &= ~(OB_FLAG_USE_SIMULATION_CACHE | OB_FLAG_UNUSED_12); ob->flag &= ~(OB_FLAG_USE_SIMULATION_CACHE | OB_FLAG_UNUSED_12);
ob->transflag &= ~(OB_TRANSFORM_ADJUST_ROOT_PARENT_FOR_VIEW_LOCK | OB_TRANSFLAG_UNUSED_1); ob->transflag &= ~(OB_TRANSFORM_ADJUST_ROOT_PARENT_FOR_VIEW_LOCK | OB_TRANSFLAG_UNUSED_1);
ob->shapeflag &= ~OB_SHAPE_FLAG_UNUSED_1; ob->shapeflag &= ~OB_SHAPE_FLAG_UNUSED_1;
} }
for (Mesh *me = bmain->meshes.first; me; me = me->id.next) { LISTBASE_FOREACH (Mesh *, me, &bmain->meshes) {
me->flag &= ~(ME_FLAG_UNUSED_0 | ME_FLAG_UNUSED_1 | ME_FLAG_UNUSED_3 | ME_FLAG_UNUSED_4 | me->flag &= ~(ME_FLAG_UNUSED_0 | ME_FLAG_UNUSED_1 | ME_FLAG_UNUSED_3 | ME_FLAG_UNUSED_4 |
ME_FLAG_UNUSED_6 | ME_FLAG_UNUSED_7 | ME_REMESH_REPROJECT_VERTEX_COLORS); ME_FLAG_UNUSED_6 | ME_FLAG_UNUSED_7 | ME_REMESH_REPROJECT_VERTEX_COLORS);
} }
for (Material *mat = bmain->materials.first; mat; mat = mat->id.next) { LISTBASE_FOREACH (Material *, mat, &bmain->materials) {
mat->blend_flag &= ~(1 << 2); /* UNUSED */ mat->blend_flag &= ~(1 << 2); /* UNUSED */
} }
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 40)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 40)) {
if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "char", "snap_transform_mode_flag")) { if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "char", "snap_transform_mode_flag")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->toolsettings->snap_transform_mode_flag = SCE_SNAP_TRANSFORM_MODE_TRANSLATE; scene->toolsettings->snap_transform_mode_flag = SCE_SNAP_TRANSFORM_MODE_TRANSLATE;
} }
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
switch (sl->spacetype) { switch (sl->spacetype) {
@@ -3513,7 +3517,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_find(fd->filesdna, "TransformOrientationSlot")) { if (!DNA_struct_find(fd->filesdna, "TransformOrientationSlot")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
for (int i = 0; i < ARRAY_SIZE(scene->orientation_slots); i++) { for (int i = 0; i < ARRAY_SIZE(scene->orientation_slots); i++) {
scene->orientation_slots[i].index_custom = -1; scene->orientation_slots[i].index_custom = -1;
} }
@@ -3522,7 +3526,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Grease pencil cutter/select segment intersection threshold. */ /* Grease pencil cutter/select segment intersection threshold. */
if (!DNA_struct_elem_find(fd->filesdna, "GP_Sculpt_Settings", "float", "isect_threshold")) { if (!DNA_struct_elem_find(fd->filesdna, "GP_Sculpt_Settings", "float", "isect_threshold")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
GP_Sculpt_Settings *gset = &scene->toolsettings->gp_sculpt; GP_Sculpt_Settings *gset = &scene->toolsettings->gp_sculpt;
if (gset) { if (gset) {
gset->isect_threshold = 0.1f; gset->isect_threshold = 0.1f;
@@ -3531,13 +3535,13 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
/* Fix anamorphic bokeh eevee rna limits. */ /* Fix anamorphic bokeh eevee rna limits. */
for (Camera *ca = bmain->cameras.first; ca; ca = ca->id.next) { LISTBASE_FOREACH (Camera *, ca, &bmain->cameras) {
if (ca->gpu_dof.ratio < 0.01f) { if (ca->gpu_dof.ratio < 0.01f) {
ca->gpu_dof.ratio = 0.01f; ca->gpu_dof.ratio = 0.01f;
} }
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_USERPREF) { if (sl->spacetype == SPACE_USERPREF) {
@@ -3548,7 +3552,8 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
&sl->regionbase; &sl->regionbase;
ARegion *region_navbar = BKE_spacedata_find_region_type(sl, area, RGN_TYPE_NAV_BAR); ARegion *region_navbar = BKE_spacedata_find_region_type(sl, area, RGN_TYPE_NAV_BAR);
execute_region = MEM_callocN(sizeof(ARegion), "execute region for properties"); execute_region = static_cast<ARegion *>(
MEM_callocN(sizeof(ARegion), "execute region for properties"));
BLI_assert(region_navbar); BLI_assert(region_navbar);
@@ -3571,12 +3576,12 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 44)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 44)) {
if (!DNA_struct_elem_find(fd->filesdna, "Material", "float", "a")) { if (!DNA_struct_elem_find(fd->filesdna, "Material", "float", "a")) {
for (Material *mat = bmain->materials.first; mat; mat = mat->id.next) { LISTBASE_FOREACH (Material *, mat, &bmain->materials) {
mat->a = 1.0f; mat->a = 1.0f;
} }
} }
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
enum { enum {
R_ALPHAKEY = 2, R_ALPHAKEY = 2,
}; };
@@ -3587,7 +3592,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
ToolSettings *ts = scene->toolsettings; ToolSettings *ts = scene->toolsettings;
ts->particle.flag &= ~PE_UNUSED_6; ts->particle.flag &= ~PE_UNUSED_6;
if (ts->sculpt != NULL) { if (ts->sculpt != nullptr) {
ts->sculpt->flags &= ~SCULPT_FLAG_UNUSED_6; ts->sculpt->flags &= ~SCULPT_FLAG_UNUSED_6;
} }
} }
@@ -3596,7 +3601,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 46)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 46)) {
/* Add wireframe color. */ /* Add wireframe color. */
if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "char", "wire_color_type")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "char", "wire_color_type")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -3609,7 +3614,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "View3DCursor", "short", "rotation_mode")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DCursor", "short", "rotation_mode")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
if (is_zero_v3(scene->cursor.rotation_axis)) { if (is_zero_v3(scene->cursor.rotation_axis)) {
scene->cursor.rotation_mode = ROT_MODE_XYZ; scene->cursor.rotation_mode = ROT_MODE_XYZ;
scene->cursor.rotation_quaternion[0] = 1.0f; scene->cursor.rotation_quaternion[0] = 1.0f;
@@ -3659,7 +3664,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 48)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 48)) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
/* Those are not currently used, but are accessible through RNA API and were not /* Those are not currently used, but are accessible through RNA API and were not
* properly initialized previously. This is mere copy of #scene_init_data code. */ * properly initialized previously. This is mere copy of #scene_init_data code. */
if (scene->r.im_format.view_settings.look[0] == '\0') { if (scene->r.im_format.view_settings.look[0] == '\0') {
@@ -3679,10 +3684,9 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 49)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 49)) {
/* All tool names changed, reset to defaults. */ /* All tool names changed, reset to defaults. */
for (WorkSpace *workspace = bmain->workspaces.first; workspace; workspace = workspace->id.next) LISTBASE_FOREACH (WorkSpace *, workspace, &bmain->workspaces) {
{
while (!BLI_listbase_is_empty(&workspace->tools)) { while (!BLI_listbase_is_empty(&workspace->tools)) {
BKE_workspace_tool_remove(workspace, workspace->tools.first); BKE_workspace_tool_remove(workspace, static_cast<bToolRef *>(workspace->tools.first));
} }
} }
} }
@@ -3699,7 +3703,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_elem_find(fd->filesdna, "TriangulateModifierData", "int", "min_vertices")) { if (!DNA_struct_elem_find(fd->filesdna, "TriangulateModifierData", "int", "min_vertices")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_Triangulate) { if (md->type == eModifierType_Triangulate) {
TriangulateModifierData *smd = (TriangulateModifierData *)md; TriangulateModifierData *smd = (TriangulateModifierData *)md;
@@ -3726,7 +3730,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 53)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 53)) {
for (Material *mat = bmain->materials.first; mat; mat = mat->id.next) { LISTBASE_FOREACH (Material *, mat, &bmain->materials) {
/* Eevee: Keep material appearance consistent with previous behavior. */ /* Eevee: Keep material appearance consistent with previous behavior. */
if (!mat->use_nodes || !mat->nodetree || mat->blend_method == MA_BM_SOLID) { if (!mat->use_nodes || !mat->nodetree || mat->blend_method == MA_BM_SOLID) {
mat->blend_shadow = MA_BS_SOLID; mat->blend_shadow = MA_BS_SOLID;
@@ -3735,7 +3739,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* grease pencil default animation channel color */ /* grease pencil default animation channel color */
{ {
for (bGPdata *gpd = bmain->gpencils.first; gpd; gpd = gpd->id.next) { LISTBASE_FOREACH (bGPdata *, gpd, &bmain->gpencils) {
if (gpd->flag & GP_DATA_ANNOTATIONS) { if (gpd->flag & GP_DATA_ANNOTATIONS) {
continue; continue;
} }
@@ -3748,7 +3752,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 54)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 54)) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
bool is_first_subdiv = true; bool is_first_subdiv = true;
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_Subsurf) { if (md->type == eModifierType_Subsurf) {
@@ -3776,7 +3780,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 55)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 55)) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_TEXT) { if (sl->spacetype == SPACE_TEXT) {
@@ -3799,7 +3803,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 56)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 56)) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -3817,7 +3821,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 57)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 57)) {
/* Enable Show Interpolation in dopesheet by default. */ /* Enable Show Interpolation in dopesheet by default. */
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_ACTION) { if (sl->spacetype == SPACE_ACTION) {
@@ -3832,8 +3836,8 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* init grease pencil brush gradients */ /* init grease pencil brush gradients */
if (!DNA_struct_elem_find(fd->filesdna, "BrushGpencilSettings", "float", "hardeness")) { if (!DNA_struct_elem_find(fd->filesdna, "BrushGpencilSettings", "float", "hardeness")) {
for (Brush *brush = bmain->brushes.first; brush; brush = brush->id.next) { LISTBASE_FOREACH (Brush *, brush, &bmain->brushes) {
if (brush->gpencil_settings != NULL) { if (brush->gpencil_settings != nullptr) {
BrushGpencilSettings *gp = brush->gpencil_settings; BrushGpencilSettings *gp = brush->gpencil_settings;
gp->hardeness = 1.0f; gp->hardeness = 1.0f;
copy_v2_fl(gp->aspect_ratio, 1.0f); copy_v2_fl(gp->aspect_ratio, 1.0f);
@@ -3843,7 +3847,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* init grease pencil stroke gradients */ /* init grease pencil stroke gradients */
if (!DNA_struct_elem_find(fd->filesdna, "bGPDstroke", "float", "hardeness")) { if (!DNA_struct_elem_find(fd->filesdna, "bGPDstroke", "float", "hardeness")) {
for (bGPdata *gpd = bmain->gpencils.first; gpd; gpd = gpd->id.next) { LISTBASE_FOREACH (bGPdata *, gpd, &bmain->gpencils) {
LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) { LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
LISTBASE_FOREACH (bGPDframe *, gpf, &gpl->frames) { LISTBASE_FOREACH (bGPDframe *, gpf, &gpl->frames) {
LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) { LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
@@ -3856,7 +3860,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
/* enable the axis aligned ortho grid by default */ /* enable the axis aligned ortho grid by default */
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -3870,16 +3874,16 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Keep un-versioned until we're finished adding space types. */ /* Keep un-versioned until we're finished adding space types. */
{ {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase : ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
&sl->regionbase; &sl->regionbase;
/* All spaces that use tools must be eventually added. */ /* All spaces that use tools must be eventually added. */
ARegion *region = NULL; ARegion *region = nullptr;
if (ELEM(sl->spacetype, SPACE_VIEW3D, SPACE_IMAGE, SPACE_SEQ) && if (ELEM(sl->spacetype, SPACE_VIEW3D, SPACE_IMAGE, SPACE_SEQ) &&
((region = do_versions_find_region_or_null(regionbase, RGN_TYPE_TOOL_HEADER)) == ((region = do_versions_find_region_or_null(regionbase, RGN_TYPE_TOOL_HEADER)) ==
NULL)) nullptr))
{ {
/* Add tool header. */ /* Add tool header. */
region = do_versions_add_region(RGN_TYPE_TOOL_HEADER, "tool header"); region = do_versions_add_region(RGN_TYPE_TOOL_HEADER, "tool header");
@@ -3890,7 +3894,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Hide by default, enable for painting workspaces (startup only). */ /* Hide by default, enable for painting workspaces (startup only). */
region->flag |= RGN_FLAG_HIDDEN | RGN_FLAG_HIDDEN_BY_USER; region->flag |= RGN_FLAG_HIDDEN | RGN_FLAG_HIDDEN_BY_USER;
} }
if (region != NULL) { if (region != nullptr) {
SET_FLAG_FROM_TEST( SET_FLAG_FROM_TEST(
region->flag, region->flag & RGN_FLAG_HIDDEN_BY_USER, RGN_FLAG_HIDDEN); region->flag, region->flag & RGN_FLAG_HIDDEN_BY_USER, RGN_FLAG_HIDDEN);
} }
@@ -3901,7 +3905,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 280, 60)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 60)) {
if (!DNA_struct_elem_find(fd->filesdna, "bSplineIKConstraint", "short", "yScaleMode")) { if (!DNA_struct_elem_find(fd->filesdna, "bSplineIKConstraint", "short", "yScaleMode")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
if (ob->pose) { if (ob->pose) {
LISTBASE_FOREACH (bPoseChannel *, pchan, &ob->pose->chanbase) { LISTBASE_FOREACH (bPoseChannel *, pchan, &ob->pose->chanbase) {
LISTBASE_FOREACH (bConstraint *, con, &pchan->constraints) { LISTBASE_FOREACH (bConstraint *, con, &pchan->constraints) {
@@ -3919,7 +3923,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "sculpt_mode_mask_opacity")) if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "sculpt_mode_mask_opacity"))
{ {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -3960,11 +3964,11 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
BKE_animdata_main_cb(bmain, do_version_bbone_scale_animdata_cb, NULL); BKE_animdata_main_cb(bmain, do_version_bbone_scale_animdata_cb, nullptr);
} }
for (Scene *sce = bmain->scenes.first; sce != NULL; sce = sce->id.next) { LISTBASE_FOREACH (Scene *, sce, &bmain->scenes) {
if (sce->ed != NULL) { if (sce->ed != nullptr) {
do_versions_seq_set_cache_defaults(sce->ed); do_versions_seq_set_cache_defaults(sce->ed);
} }
} }
@@ -3983,14 +3987,14 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (ELEM(sl->spacetype, SPACE_CLIP, SPACE_GRAPH, SPACE_SEQ)) { if (ELEM(sl->spacetype, SPACE_CLIP, SPACE_GRAPH, SPACE_SEQ)) {
ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase : ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
&sl->regionbase; &sl->regionbase;
ARegion *region = NULL; ARegion *region = nullptr;
if (sl->spacetype == SPACE_CLIP) { if (sl->spacetype == SPACE_CLIP) {
if (((SpaceClip *)sl)->view == SC_VIEW_GRAPH) { if (((SpaceClip *)sl)->view == SC_VIEW_GRAPH) {
region = do_versions_find_region_or_null(regionbase, RGN_TYPE_PREVIEW); region = do_versions_find_region_or_null(regionbase, RGN_TYPE_PREVIEW);
@@ -4000,7 +4004,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
region = do_versions_find_region_or_null(regionbase, RGN_TYPE_WINDOW); region = do_versions_find_region_or_null(regionbase, RGN_TYPE_WINDOW);
} }
if (region != NULL) { if (region != nullptr) {
region->v2d.scroll &= ~V2D_SCROLL_LEFT; region->v2d.scroll &= ~V2D_SCROLL_LEFT;
region->v2d.scroll |= V2D_SCROLL_RIGHT; region->v2d.scroll |= V2D_SCROLL_RIGHT;
} }
@@ -4009,7 +4013,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype != SPACE_OUTLINER) { if (sl->spacetype != SPACE_OUTLINER) {
@@ -4052,7 +4056,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
* environment variable for versioning is weak, and these deprecated view * environment variable for versioning is weak, and these deprecated view
* transforms and look names don't seem to exist in other commonly used * transforms and look names don't seem to exist in other commonly used
* OCIO configs so .blend files created for those would be unaffected. */ * OCIO configs so .blend files created for those would be unaffected. */
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
ColorManagedViewSettings *view_settings; ColorManagedViewSettings *view_settings;
view_settings = &scene->view_settings; view_settings = &scene->view_settings;
@@ -4073,16 +4077,16 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 74)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 74)) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
if (scene->ed != NULL) { if (scene->ed != nullptr) {
do_versions_seq_alloc_transform_and_crop(&scene->ed->seqbase); do_versions_seq_alloc_transform_and_crop(&scene->ed->seqbase);
} }
} }
} }
if (!MAIN_VERSION_ATLEAST(bmain, 280, 75)) { if (!MAIN_VERSION_ATLEAST(bmain, 280, 75)) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
if (scene->master_collection != NULL) { if (scene->master_collection != nullptr) {
scene->master_collection->flag &= ~(COLLECTION_HIDE_VIEWPORT | COLLECTION_HIDE_SELECT | scene->master_collection->flag &= ~(COLLECTION_HIDE_VIEWPORT | COLLECTION_HIDE_SELECT |
COLLECTION_HIDE_RENDER); COLLECTION_HIDE_RENDER);
} }
@@ -4134,7 +4138,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 281, 3)) { if (!MAIN_VERSION_ATLEAST(bmain, 281, 3)) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_TEXT) { if (sl->spacetype == SPACE_TEXT) {
@@ -4154,7 +4158,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
} }
for (Mesh *mesh = bmain->meshes.first; mesh; mesh = mesh->id.next) { LISTBASE_FOREACH (Mesh *, mesh, &bmain->meshes) {
if (mesh->remesh_voxel_size == 0.0f) { if (mesh->remesh_voxel_size == 0.0f) {
mesh->remesh_voxel_size = 0.1f; mesh->remesh_voxel_size = 0.1f;
} }
@@ -4173,7 +4177,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 281, 5)) { if (!MAIN_VERSION_ATLEAST(bmain, 281, 5)) {
for (Brush *br = bmain->brushes.first; br; br = br->id.next) { LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
if (br->ob_mode & OB_MODE_SCULPT && br->normal_radius_factor == 0.0f) { if (br->ob_mode & OB_MODE_SCULPT && br->normal_radius_factor == 0.0f) {
br->normal_radius_factor = 0.5f; br->normal_radius_factor = 0.5f;
} }
@@ -4182,14 +4186,14 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
/* Older files do not have a master collection, which is then added through /* Older files do not have a master collection, which is then added through
* `BKE_collection_master_add()`, so everything is fine. */ * `BKE_collection_master_add()`, so everything is fine. */
if (scene->master_collection != NULL) { if (scene->master_collection != nullptr) {
scene->master_collection->id.flag |= LIB_EMBEDDED_DATA; scene->master_collection->id.flag |= LIB_EMBEDDED_DATA;
} }
} }
} }
if (!MAIN_VERSION_ATLEAST(bmain, 281, 6)) { if (!MAIN_VERSION_ATLEAST(bmain, 281, 6)) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -4201,7 +4205,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
* select the default world one. */ * select the default world one. */
StudioLight *studio_light = BKE_studiolight_find(v3d->shading.lookdev_light, StudioLight *studio_light = BKE_studiolight_find(v3d->shading.lookdev_light,
STUDIOLIGHT_TYPE_WORLD); STUDIOLIGHT_TYPE_WORLD);
if (studio_light != NULL) { if (studio_light != nullptr) {
STRNCPY(v3d->shading.lookdev_light, studio_light->name); STRNCPY(v3d->shading.lookdev_light, studio_light->name);
} }
} }
@@ -4211,7 +4215,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!MAIN_VERSION_ATLEAST(bmain, 281, 9)) { if (!MAIN_VERSION_ATLEAST(bmain, 281, 9)) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_FILE) { if (sl->spacetype == SPACE_FILE) {
@@ -4234,7 +4238,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
SpaceType *stype = BKE_spacetype_from_id(sl->spacetype); SpaceType *stype = BKE_spacetype_from_id(sl->spacetype);
/* Remove empty region at old location. */ /* Remove empty region at old location. */
BLI_assert(sfile->op == NULL); BLI_assert(sfile->op == nullptr);
BKE_area_region_free(stype, region_toolprops); BKE_area_region_free(stype, region_toolprops);
BLI_freelinkN(regionbase, region_toolprops); BLI_freelinkN(regionbase, region_toolprops);
} }
@@ -4268,7 +4272,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Added studio-light intensity. */ /* Added studio-light intensity. */
if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "studiolight_intensity")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "studiolight_intensity")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -4281,7 +4285,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
/* Elastic deform brush */ /* Elastic deform brush */
for (Brush *br = bmain->brushes.first; br; br = br->id.next) { LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
if (br->ob_mode & OB_MODE_SCULPT && br->elastic_deform_volume_preservation == 0.0f) { if (br->ob_mode & OB_MODE_SCULPT && br->elastic_deform_volume_preservation == 0.0f) {
br->elastic_deform_volume_preservation = 0.5f; br->elastic_deform_volume_preservation = 0.5f;
} }
@@ -4306,7 +4310,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -4318,7 +4322,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
View3D *v3d_other = (View3D *)sl_other; View3D *v3d_other = (View3D *)sl_other;
if (v3d->shading.prop == v3d_other->shading.prop) { if (v3d->shading.prop == v3d_other->shading.prop) {
v3d_other->shading.prop = NULL; v3d_other->shading.prop = nullptr;
} }
} }
} }
@@ -4352,7 +4356,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (Brush *br = bmain->brushes.first; br; br = br->id.next) { LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
if (br->ob_mode & OB_MODE_SCULPT && br->area_radius_factor == 0.0f) { if (br->ob_mode & OB_MODE_SCULPT && br->area_radius_factor == 0.0f) {
br->area_radius_factor = 0.5f; br->area_radius_factor = 0.5f;
} }
@@ -4362,7 +4366,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 282, 2)) { if (!MAIN_VERSION_ATLEAST(bmain, 282, 2)) {
do_version_curvemapping_walker(bmain, do_version_curvemapping_flag_extend_extrapolate); do_version_curvemapping_walker(bmain, do_version_curvemapping_flag_extend_extrapolate);
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
area->flag &= ~AREA_FLAG_UNUSED_6; area->flag &= ~AREA_FLAG_UNUSED_6;
} }
@@ -4370,9 +4374,9 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Add custom curve profile to toolsettings for bevel tool */ /* Add custom curve profile to toolsettings for bevel tool */
if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "CurveProfile", "custom_profile")) { if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "CurveProfile", "custom_profile")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
ToolSettings *ts = scene->toolsettings; ToolSettings *ts = scene->toolsettings;
if ((ts) && (ts->custom_bevel_profile_preset == NULL)) { if ((ts) && (ts->custom_bevel_profile_preset == nullptr)) {
ts->custom_bevel_profile_preset = BKE_curveprofile_add(PROF_PRESET_LINE); ts->custom_bevel_profile_preset = BKE_curveprofile_add(PROF_PRESET_LINE);
} }
} }
@@ -4380,8 +4384,8 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Add custom curve profile to bevel modifier */ /* Add custom curve profile to bevel modifier */
if (!DNA_struct_elem_find(fd->filesdna, "BevelModifier", "CurveProfile", "custom_profile")) { if (!DNA_struct_elem_find(fd->filesdna, "BevelModifier", "CurveProfile", "custom_profile")) {
for (Object *object = bmain->objects.first; object != NULL; object = object->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_Bevel) { if (md->type == eModifierType_Bevel) {
BevelModifierData *bmd = (BevelModifierData *)md; BevelModifierData *bmd = (BevelModifierData *)md;
if (!bmd->custom_profile) { if (!bmd->custom_profile) {
@@ -4394,7 +4398,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Dash Ratio and Dash Samples */ /* Dash Ratio and Dash Samples */
if (!DNA_struct_elem_find(fd->filesdna, "Brush", "float", "dash_ratio")) { if (!DNA_struct_elem_find(fd->filesdna, "Brush", "float", "dash_ratio")) {
for (Brush *br = bmain->brushes.first; br; br = br->id.next) { LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
br->dash_ratio = 1.0f; br->dash_ratio = 1.0f;
br->dash_samples = 20; br->dash_samples = 20;
} }
@@ -4402,13 +4406,13 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Pose brush smooth iterations */ /* Pose brush smooth iterations */
if (!DNA_struct_elem_find(fd->filesdna, "Brush", "float", "pose_smooth_iterations")) { if (!DNA_struct_elem_find(fd->filesdna, "Brush", "float", "pose_smooth_iterations")) {
for (Brush *br = bmain->brushes.first; br; br = br->id.next) { LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
br->pose_smooth_iterations = 4; br->pose_smooth_iterations = 4;
} }
} }
/* Cloth pressure */ /* Cloth pressure */
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_Cloth) { if (md->type == eModifierType_Cloth) {
ClothModifierData *clmd = (ClothModifierData *)md; ClothModifierData *clmd = (ClothModifierData *)md;
@@ -4421,7 +4425,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 282, 3)) { if (!MAIN_VERSION_ATLEAST(bmain, 282, 3)) {
/* Remove Unified pressure/size and pressure/alpha */ /* Remove Unified pressure/size and pressure/alpha */
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
ToolSettings *ts = scene->toolsettings; ToolSettings *ts = scene->toolsettings;
UnifiedPaintSettings *ups = &ts->unified_paint_settings; UnifiedPaintSettings *ups = &ts->unified_paint_settings;
ups->flag &= ~(UNIFIED_PAINT_FLAG_UNUSED_0 | UNIFIED_PAINT_FLAG_UNUSED_1); ups->flag &= ~(UNIFIED_PAINT_FLAG_UNUSED_0 | UNIFIED_PAINT_FLAG_UNUSED_1);
@@ -4429,11 +4433,11 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Set the default render pass in the viewport to Combined. */ /* Set the default render pass in the viewport to Combined. */
if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "int", "render_pass")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "int", "render_pass")) {
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
scene->display.shading.render_pass = SCE_PASS_COMBINED; scene->display.shading.render_pass = SCE_PASS_COMBINED;
} }
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -4446,7 +4450,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
/* Make markers region visible by default. */ /* Make markers region visible by default. */
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
switch (sl->spacetype) { switch (sl->spacetype) {
@@ -4478,7 +4482,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 283, 3)) { if (!MAIN_VERSION_ATLEAST(bmain, 283, 3)) {
/* Color Management Look. */ /* Color Management Look. */
for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
ColorManagedViewSettings *view_settings; ColorManagedViewSettings *view_settings;
view_settings = &scene->view_settings; view_settings = &scene->view_settings;
if (BLI_str_startswith(view_settings->look, "Filmic - ")) { if (BLI_str_startswith(view_settings->look, "Filmic - ")) {
@@ -4495,7 +4499,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
do_versions_area_ensure_tool_region(bmain, SPACE_SEQ, RGN_FLAG_HIDDEN); do_versions_area_ensure_tool_region(bmain, SPACE_SEQ, RGN_FLAG_HIDDEN);
/* Cloth internal springs */ /* Cloth internal springs */
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_Cloth) { if (md->type == eModifierType_Cloth) {
ClothModifierData *clmd = (ClothModifierData *)md; ClothModifierData *clmd = (ClothModifierData *)md;
@@ -4511,8 +4515,8 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Add primary tile to images. */ /* Add primary tile to images. */
if (!DNA_struct_elem_find(fd->filesdna, "Image", "ListBase", "tiles")) { if (!DNA_struct_elem_find(fd->filesdna, "Image", "ListBase", "tiles")) {
for (Image *ima = bmain->images.first; ima; ima = ima->id.next) { LISTBASE_FOREACH (Image *, ima, &bmain->images) {
ImageTile *tile = MEM_callocN(sizeof(ImageTile), "Image Tile"); ImageTile *tile = static_cast<ImageTile *>(MEM_callocN(sizeof(ImageTile), "Image Tile"));
tile->tile_number = 1001; tile->tile_number = 1001;
BLI_addtail(&ima->tiles, tile); BLI_addtail(&ima->tiles, tile);
} }
@@ -4520,7 +4524,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* UDIM Image Editor change. */ /* UDIM Image Editor change. */
if (!DNA_struct_elem_find(fd->filesdna, "SpaceImage", "int", "tile_grid_shape[2]")) { if (!DNA_struct_elem_find(fd->filesdna, "SpaceImage", "int", "tile_grid_shape[2]")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_IMAGE) { if (sl->spacetype == SPACE_IMAGE) {
@@ -4533,20 +4537,20 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (Brush *br = bmain->brushes.first; br; br = br->id.next) { LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
br->add_col[3] = 0.9f; br->add_col[3] = 0.9f;
br->sub_col[3] = 0.9f; br->sub_col[3] = 0.9f;
} }
/* Pose brush IK segments. */ /* Pose brush IK segments. */
for (Brush *br = bmain->brushes.first; br; br = br->id.next) { LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
if (br->pose_ik_segments == 0) { if (br->pose_ik_segments == 0) {
br->pose_ik_segments = 1; br->pose_ik_segments = 1;
} }
} }
/* Pose brush keep anchor point. */ /* Pose brush keep anchor point. */
for (Brush *br = bmain->brushes.first; br; br = br->id.next) { LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
if (br->sculpt_tool == SCULPT_TOOL_POSE) { if (br->sculpt_tool == SCULPT_TOOL_POSE) {
br->flag2 |= BRUSH_POSE_IK_ANCHORED; br->flag2 |= BRUSH_POSE_IK_ANCHORED;
} }
@@ -4554,7 +4558,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Tip Roundness. */ /* Tip Roundness. */
if (!DNA_struct_elem_find(fd->filesdna, "Brush", "float", "tip_roundness")) { if (!DNA_struct_elem_find(fd->filesdna, "Brush", "float", "tip_roundness")) {
for (Brush *br = bmain->brushes.first; br; br = br->id.next) { LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
if (br->ob_mode & OB_MODE_SCULPT && br->sculpt_tool == SCULPT_TOOL_CLAY_STRIPS) { if (br->ob_mode & OB_MODE_SCULPT && br->sculpt_tool == SCULPT_TOOL_CLAY_STRIPS) {
br->tip_roundness = 0.18f; br->tip_roundness = 0.18f;
} }
@@ -4583,7 +4587,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Add 2D transform to UV Warp modifier. */ /* Add 2D transform to UV Warp modifier. */
if (!DNA_struct_elem_find(fd->filesdna, "UVWarpModifierData", "float", "scale[2]")) { if (!DNA_struct_elem_find(fd->filesdna, "UVWarpModifierData", "float", "scale[2]")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_UVWarp) { if (md->type == eModifierType_UVWarp) {
UVWarpModifierData *umd = (UVWarpModifierData *)md; UVWarpModifierData *umd = (UVWarpModifierData *)md;
@@ -4595,7 +4599,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Add Lookdev blur property. */ /* Add Lookdev blur property. */
if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "studiolight_blur")) { if (!DNA_struct_elem_find(fd->filesdna, "View3DShading", "float", "studiolight_blur")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -4631,7 +4635,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Init new Grease Pencil Paint tools. */ /* Init new Grease Pencil Paint tools. */
{ {
LISTBASE_FOREACH (Brush *, brush, &bmain->brushes) { LISTBASE_FOREACH (Brush *, brush, &bmain->brushes) {
if (brush->gpencil_settings != NULL) { if (brush->gpencil_settings != nullptr) {
brush->gpencil_vertex_tool = brush->gpencil_settings->brush_type; brush->gpencil_vertex_tool = brush->gpencil_settings->brush_type;
brush->gpencil_sculpt_tool = brush->gpencil_settings->brush_type; brush->gpencil_sculpt_tool = brush->gpencil_settings->brush_type;
brush->gpencil_weight_tool = brush->gpencil_settings->brush_type; brush->gpencil_weight_tool = brush->gpencil_settings->brush_type;
@@ -4641,7 +4645,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
LISTBASE_FOREACH (Material *, mat, &bmain->materials) { LISTBASE_FOREACH (Material *, mat, &bmain->materials) {
MaterialGPencilStyle *gp_style = mat->gp_style; MaterialGPencilStyle *gp_style = mat->gp_style;
if (gp_style == NULL) { if (gp_style == nullptr) {
continue; continue;
} }
/* Fix Grease Pencil Material colors to Linear. */ /* Fix Grease Pencil Material colors to Linear. */
@@ -4734,7 +4738,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if ((mmd->shift[0] != 0.0f) || (mmd->shift[1] != 0.0f) || (mmd->shift[2] != 0.0f)) { if ((mmd->shift[0] != 0.0f) || (mmd->shift[1] != 0.0f) || (mmd->shift[2] != 0.0f)) {
mmd->flag |= GP_ARRAY_USE_OFFSET; mmd->flag |= GP_ARRAY_USE_OFFSET;
} }
if (mmd->object != NULL) { if (mmd->object != nullptr) {
mmd->flag |= GP_ARRAY_USE_OB_OFFSET; mmd->flag |= GP_ARRAY_USE_OB_OFFSET;
} }
break; break;
@@ -4749,7 +4753,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
mmd->noise_scale = (mmd->flag & GP_NOISE_FULL_STROKE) ? 0.0f : 1.0f; mmd->noise_scale = (mmd->flag & GP_NOISE_FULL_STROKE) ? 0.0f : 1.0f;
if (mmd->curve_intensity == NULL) { if (mmd->curve_intensity == nullptr) {
mmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); mmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
if (mmd->curve_intensity) { if (mmd->curve_intensity) {
BKE_curvemapping_init(mmd->curve_intensity); BKE_curvemapping_init(mmd->curve_intensity);
@@ -4760,7 +4764,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
case eGpencilModifierType_Tint: { case eGpencilModifierType_Tint: {
TintGpencilModifierData *mmd = (TintGpencilModifierData *)md; TintGpencilModifierData *mmd = (TintGpencilModifierData *)md;
srgb_to_linearrgb_v3_v3(mmd->rgb, mmd->rgb); srgb_to_linearrgb_v3_v3(mmd->rgb, mmd->rgb);
if (mmd->curve_intensity == NULL) { if (mmd->curve_intensity == nullptr) {
mmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); mmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
if (mmd->curve_intensity) { if (mmd->curve_intensity) {
BKE_curvemapping_init(mmd->curve_intensity); BKE_curvemapping_init(mmd->curve_intensity);
@@ -4770,7 +4774,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
case eGpencilModifierType_Smooth: { case eGpencilModifierType_Smooth: {
SmoothGpencilModifierData *mmd = (SmoothGpencilModifierData *)md; SmoothGpencilModifierData *mmd = (SmoothGpencilModifierData *)md;
if (mmd->curve_intensity == NULL) { if (mmd->curve_intensity == nullptr) {
mmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); mmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
if (mmd->curve_intensity) { if (mmd->curve_intensity) {
BKE_curvemapping_init(mmd->curve_intensity); BKE_curvemapping_init(mmd->curve_intensity);
@@ -4780,7 +4784,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
case eGpencilModifierType_Opacity: { case eGpencilModifierType_Opacity: {
OpacityGpencilModifierData *mmd = (OpacityGpencilModifierData *)md; OpacityGpencilModifierData *mmd = (OpacityGpencilModifierData *)md;
if (mmd->curve_intensity == NULL) { if (mmd->curve_intensity == nullptr) {
mmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); mmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
if (mmd->curve_intensity) { if (mmd->curve_intensity) {
BKE_curvemapping_init(mmd->curve_intensity); BKE_curvemapping_init(mmd->curve_intensity);
@@ -4790,7 +4794,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
case eGpencilModifierType_Color: { case eGpencilModifierType_Color: {
ColorGpencilModifierData *mmd = (ColorGpencilModifierData *)md; ColorGpencilModifierData *mmd = (ColorGpencilModifierData *)md;
if (mmd->curve_intensity == NULL) { if (mmd->curve_intensity == nullptr) {
mmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); mmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
if (mmd->curve_intensity) { if (mmd->curve_intensity) {
BKE_curvemapping_init(mmd->curve_intensity); BKE_curvemapping_init(mmd->curve_intensity);
@@ -4867,7 +4871,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 283, 8)) { if (!MAIN_VERSION_ATLEAST(bmain, 283, 8)) {
if (!DNA_struct_elem_find( if (!DNA_struct_elem_find(
fd->filesdna, "View3DOverlay", "float", "sculpt_mode_face_sets_opacity")) { fd->filesdna, "View3DOverlay", "float", "sculpt_mode_face_sets_opacity")) {
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_VIEW3D) { if (sl->spacetype == SPACE_VIEW3D) {
@@ -4892,14 +4896,14 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!DNA_struct_elem_find( if (!DNA_struct_elem_find(
fd->filesdna, "Brush", "int", "automasking_boundary_edges_propagation_steps")) fd->filesdna, "Brush", "int", "automasking_boundary_edges_propagation_steps"))
{ {
for (Brush *br = bmain->brushes.first; br; br = br->id.next) { LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
br->automasking_boundary_edges_propagation_steps = 1; br->automasking_boundary_edges_propagation_steps = 1;
} }
} }
/* Corrective smooth modifier scale. */ /* Corrective smooth modifier scale. */
if (!DNA_struct_elem_find(fd->filesdna, "CorrectiveSmoothModifierData", "float", "scale")) { if (!DNA_struct_elem_find(fd->filesdna, "CorrectiveSmoothModifierData", "float", "scale")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_CorrectiveSmooth) { if (md->type == eModifierType_CorrectiveSmooth) {
CorrectiveSmoothModifierData *csmd = (CorrectiveSmoothModifierData *)md; CorrectiveSmoothModifierData *csmd = (CorrectiveSmoothModifierData *)md;
@@ -4910,9 +4914,10 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
/* Default Face Set Color. */ /* Default Face Set Color. */
for (Mesh *me = bmain->meshes.first; me != NULL; me = me->id.next) { LISTBASE_FOREACH (Mesh *, me, &bmain->meshes) {
if (me->totpoly > 0) { if (me->totpoly > 0) {
const int *face_sets = CustomData_get_layer(&me->pdata, CD_SCULPT_FACE_SETS); const int *face_sets = static_cast<const int *>(
CustomData_get_layer(&me->pdata, CD_SCULPT_FACE_SETS));
if (face_sets) { if (face_sets) {
me->face_sets_color_default = abs(face_sets[0]); me->face_sets_color_default = abs(face_sets[0]);
} }
@@ -4922,7 +4927,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 283, 11)) { if (!MAIN_VERSION_ATLEAST(bmain, 283, 11)) {
if (!DNA_struct_elem_find(fd->filesdna, "OceanModifierData", "float", "fetch_jonswap")) { if (!DNA_struct_elem_find(fd->filesdna, "OceanModifierData", "float", "fetch_jonswap")) {
for (Object *object = bmain->objects.first; object != NULL; object = object->id.next) { LISTBASE_FOREACH (Object *, object, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) {
if (md->type == eModifierType_Ocean) { if (md->type == eModifierType_Ocean) {
OceanModifierData *omd = (OceanModifierData *)md; OceanModifierData *omd = (OceanModifierData *)md;
@@ -4933,7 +4938,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
if (!DNA_struct_find(fd->filesdna, "XrSessionSettings")) { if (!DNA_struct_find(fd->filesdna, "XrSessionSettings")) {
for (wmWindowManager *wm = bmain->wm.first; wm; wm = wm->id.next) { LISTBASE_FOREACH (wmWindowManager *, wm, &bmain->wm) {
const View3D *v3d_default = DNA_struct_default_get(View3D); const View3D *v3d_default = DNA_struct_default_get(View3D);
wm->xr.session_settings.shading = v3d_default->shading; wm->xr.session_settings.shading = v3d_default->shading;
@@ -4948,7 +4953,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Surface deform modifier strength. */ /* Surface deform modifier strength. */
if (!DNA_struct_elem_find(fd->filesdna, "SurfaceDeformModifierData", "float", "strength")) { if (!DNA_struct_elem_find(fd->filesdna, "SurfaceDeformModifierData", "float", "strength")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_SurfaceDeform) { if (md->type == eModifierType_SurfaceDeform) {
SurfaceDeformModifierData *sdmd = (SurfaceDeformModifierData *)md; SurfaceDeformModifierData *sdmd = (SurfaceDeformModifierData *)md;
@@ -4961,9 +4966,9 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 283, 12)) { if (!MAIN_VERSION_ATLEAST(bmain, 283, 12)) {
/* Activate f-curve drawing in the sequencer. */ /* Activate f-curve drawing in the sequencer. */
for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
for (ScrArea *area = screen->areabase.first; area; area = area->next) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
for (SpaceLink *sl = area->spacedata.first; sl; sl = sl->next) { LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
if (sl->spacetype == SPACE_SEQ) { if (sl->spacetype == SPACE_SEQ) {
SpaceSeq *sseq = (SpaceSeq *)sl; SpaceSeq *sseq = (SpaceSeq *)sl;
sseq->flag |= SEQ_TIMELINE_SHOW_FCURVES; sseq->flag |= SEQ_TIMELINE_SHOW_FCURVES;
@@ -4974,7 +4979,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Remesh Modifier Voxel Mode. */ /* Remesh Modifier Voxel Mode. */
if (!DNA_struct_elem_find(fd->filesdna, "RemeshModifierData", "float", "voxel_size")) { if (!DNA_struct_elem_find(fd->filesdna, "RemeshModifierData", "float", "voxel_size")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_Remesh) { if (md->type == eModifierType_Remesh) {
RemeshModifierData *rmd = (RemeshModifierData *)md; RemeshModifierData *rmd = (RemeshModifierData *)md;
@@ -4989,8 +4994,8 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 283, 14)) { if (!MAIN_VERSION_ATLEAST(bmain, 283, 14)) {
/* Solidify modifier merge tolerance. */ /* Solidify modifier merge tolerance. */
if (!DNA_struct_elem_find(fd->filesdna, "SolidifyModifierData", "float", "merge_tolerance")) { if (!DNA_struct_elem_find(fd->filesdna, "SolidifyModifierData", "float", "merge_tolerance")) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
for (ModifierData *md = ob->modifiers.first; md; md = md->next) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_Solidify) { if (md->type == eModifierType_Solidify) {
SolidifyModifierData *smd = (SolidifyModifierData *)md; SolidifyModifierData *smd = (SolidifyModifierData *)md;
/* set to 0.0003 since that is what was used before, default now is 0.0001 */ /* set to 0.0003 since that is what was used before, default now is 0.0001 */
@@ -5002,9 +5007,9 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Enumerator was incorrect for a time in 2.83 development. /* Enumerator was incorrect for a time in 2.83 development.
* Note that this only corrects values known to be invalid. */ * Note that this only corrects values known to be invalid. */
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
RigidBodyCon *rbc = ob->rigidbody_constraint; RigidBodyCon *rbc = ob->rigidbody_constraint;
if (rbc != NULL) { if (rbc != nullptr) {
enum { enum {
INVALID_RBC_TYPE_SLIDER = 2, INVALID_RBC_TYPE_SLIDER = 2,
INVALID_RBC_TYPE_6DOF_SPRING = 4, INVALID_RBC_TYPE_6DOF_SPRING = 4,
@@ -5027,11 +5032,11 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
/* Match scale of fluid modifier gravity with scene gravity. */ /* Match scale of fluid modifier gravity with scene gravity. */
if (!MAIN_VERSION_ATLEAST(bmain, 283, 15)) { if (!MAIN_VERSION_ATLEAST(bmain, 283, 15)) {
for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
for (ModifierData *md = ob->modifiers.first; md; md = md->next) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_Fluid) { if (md->type == eModifierType_Fluid) {
FluidModifierData *fmd = (FluidModifierData *)md; FluidModifierData *fmd = (FluidModifierData *)md;
if (fmd->domain != NULL) { if (fmd->domain != nullptr) {
mul_v3_fl(fmd->domain->gravity, 9.81f); mul_v3_fl(fmd->domain->gravity, 9.81f);
} }
} }
@@ -5048,7 +5053,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
if (!MAIN_VERSION_ATLEAST(bmain, 283, 17)) { if (!MAIN_VERSION_ATLEAST(bmain, 283, 17)) {
/* Reset the cloth mass to 1.0 in brushes with an invalid value. */ /* Reset the cloth mass to 1.0 in brushes with an invalid value. */
for (Brush *br = bmain->brushes.first; br; br = br->id.next) { LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
if (br->sculpt_tool == SCULPT_TOOL_CLOTH) { if (br->sculpt_tool == SCULPT_TOOL_CLOTH) {
if (br->cloth_mass == 0.0f) { if (br->cloth_mass == 0.0f) {
br->cloth_mass = 1.0f; br->cloth_mass = 1.0f;
@@ -5085,7 +5090,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
} }
} }
for (wmWindowManager *wm = bmain->wm.first; wm; wm = wm->id.next) { LISTBASE_FOREACH (wmWindowManager *, wm, &bmain->wm) {
/* Don't rotate light with the viewer by default, make it fixed. Shading settings can't be /* Don't rotate light with the viewer by default, make it fixed. Shading settings can't be
* edited and this flag should always be set. */ * edited and this flag should always be set. */
wm->xr.session_settings.shading.flag |= V3D_SHADING_WORLD_ORIENTATION; wm->xr.session_settings.shading.flag |= V3D_SHADING_WORLD_ORIENTATION;