diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:17:24 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:21:24 +0300 |
commit | e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch) | |
tree | 8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/blenloader/intern/versioning_legacy.c | |
parent | b3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff) |
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211.
For details on usage and instructions for migrating branches
without conflicts, see:
https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/blenloader/intern/versioning_legacy.c')
-rw-r--r-- | source/blender/blenloader/intern/versioning_legacy.c | 4735 |
1 files changed, 2360 insertions, 2375 deletions
diff --git a/source/blender/blenloader/intern/versioning_legacy.c b/source/blender/blenloader/intern/versioning_legacy.c index 5d7905b200e..7fea9dffece 100644 --- a/source/blender/blenloader/intern/versioning_legacy.c +++ b/source/blender/blenloader/intern/versioning_legacy.c @@ -21,14 +21,13 @@ * \ingroup blenloader */ - #include <limits.h> #ifndef WIN32 -# include <unistd.h> // for read close +# include <unistd.h> // for read close #else -# include <zlib.h> /* odd include order-issue */ -# include <io.h> // for open close read +# include <zlib.h> /* odd include order-issue */ +# include <io.h> // for open close read # include "winsock2.h" # include "BLI_winstuff.h" #endif @@ -74,8 +73,8 @@ #include "BKE_fcurve.h" #include "BKE_image.h" #include "BKE_lattice.h" -#include "BKE_main.h" // for Main -#include "BKE_mesh.h" // for ME_ defines (patching) +#include "BKE_main.h" // for Main +#include "BKE_mesh.h" // for ME_ defines (patching) #include "BKE_modifier.h" #include "BKE_particle.h" #include "BKE_pointcache.h" @@ -94,2451 +93,2437 @@ static void vcol_to_fcol(Mesh *me) { - MFace *mface; - uint *mcol, *mcoln, *mcolmain; - int a; - - if (me->totface == 0 || me->mcol == NULL) - return; - - mcoln = mcolmain = MEM_malloc_arrayN(me->totface, 4 * sizeof(int), "mcoln"); - mcol = (uint *)me->mcol; - mface = me->mface; - for (a = me->totface; a > 0; a--, mface++) { - mcoln[0] = mcol[mface->v1]; - mcoln[1] = mcol[mface->v2]; - mcoln[2] = mcol[mface->v3]; - mcoln[3] = mcol[mface->v4]; - mcoln += 4; - } - - MEM_freeN(me->mcol); - me->mcol = (MCol *)mcolmain; + MFace *mface; + uint *mcol, *mcoln, *mcolmain; + int a; + + if (me->totface == 0 || me->mcol == NULL) + return; + + mcoln = mcolmain = MEM_malloc_arrayN(me->totface, 4 * sizeof(int), "mcoln"); + mcol = (uint *)me->mcol; + mface = me->mface; + for (a = me->totface; a > 0; a--, mface++) { + mcoln[0] = mcol[mface->v1]; + mcoln[1] = mcol[mface->v2]; + mcoln[2] = mcol[mface->v3]; + mcoln[3] = mcol[mface->v4]; + mcoln += 4; + } + + MEM_freeN(me->mcol); + me->mcol = (MCol *)mcolmain; } static void do_version_bone_head_tail_237(Bone *bone) { - Bone *child; - float vec[3]; + Bone *child; + float vec[3]; - /* head */ - copy_v3_v3(bone->arm_head, bone->arm_mat[3]); + /* head */ + copy_v3_v3(bone->arm_head, bone->arm_mat[3]); - /* tail is in current local coord system */ - copy_v3_v3(vec, bone->arm_mat[1]); - mul_v3_fl(vec, bone->length); - add_v3_v3v3(bone->arm_tail, bone->arm_head, vec); + /* tail is in current local coord system */ + copy_v3_v3(vec, bone->arm_mat[1]); + mul_v3_fl(vec, bone->length); + add_v3_v3v3(bone->arm_tail, bone->arm_head, vec); - for (child = bone->childbase.first; child; child = child->next) - do_version_bone_head_tail_237(child); + for (child = bone->childbase.first; child; child = child->next) + do_version_bone_head_tail_237(child); } static void bone_version_238(ListBase *lb) { - Bone *bone; - - for (bone = lb->first; bone; bone = bone->next) { - if (bone->rad_tail == 0.0f && bone->rad_head == 0.0f) { - bone->rad_head = 0.25f * bone->length; - bone->rad_tail = 0.1f * bone->length; - - bone->dist -= bone->rad_head; - if (bone->dist <= 0.0f) - bone->dist = 0.0f; - } - bone_version_238(&bone->childbase); - } + Bone *bone; + + for (bone = lb->first; bone; bone = bone->next) { + if (bone->rad_tail == 0.0f && bone->rad_head == 0.0f) { + bone->rad_head = 0.25f * bone->length; + bone->rad_tail = 0.1f * bone->length; + + bone->dist -= bone->rad_head; + if (bone->dist <= 0.0f) + bone->dist = 0.0f; + } + bone_version_238(&bone->childbase); + } } static void bone_version_239(ListBase *lb) { - Bone *bone; + Bone *bone; - for (bone = lb->first; bone; bone = bone->next) { - if (bone->layer == 0) - bone->layer = 1; - bone_version_239(&bone->childbase); - } + for (bone = lb->first; bone; bone = bone->next) { + if (bone->layer == 0) + bone->layer = 1; + bone_version_239(&bone->childbase); + } } static void ntree_version_241(bNodeTree *ntree) { - bNode *node; - - if (ntree->type == NTREE_COMPOSIT) { - for (node = ntree->nodes.first; node; node = node->next) { - if (node->type == CMP_NODE_BLUR) { - if (node->storage == NULL) { - NodeBlurData *nbd = MEM_callocN(sizeof(NodeBlurData), "node blur patch"); - nbd->sizex = node->custom1; - nbd->sizey = node->custom2; - nbd->filtertype = R_FILTER_QUAD; - node->storage = nbd; - } - } - else if (node->type == CMP_NODE_VECBLUR) { - if (node->storage == NULL) { - NodeBlurData *nbd = MEM_callocN(sizeof(NodeBlurData), "node blur patch"); - nbd->samples = node->custom1; - nbd->maxspeed = node->custom2; - nbd->fac = 1.0f; - node->storage = nbd; - } - } - } - } + bNode *node; + + if (ntree->type == NTREE_COMPOSIT) { + for (node = ntree->nodes.first; node; node = node->next) { + if (node->type == CMP_NODE_BLUR) { + if (node->storage == NULL) { + NodeBlurData *nbd = MEM_callocN(sizeof(NodeBlurData), "node blur patch"); + nbd->sizex = node->custom1; + nbd->sizey = node->custom2; + nbd->filtertype = R_FILTER_QUAD; + node->storage = nbd; + } + } + else if (node->type == CMP_NODE_VECBLUR) { + if (node->storage == NULL) { + NodeBlurData *nbd = MEM_callocN(sizeof(NodeBlurData), "node blur patch"); + nbd->samples = node->custom1; + nbd->maxspeed = node->custom2; + nbd->fac = 1.0f; + node->storage = nbd; + } + } + } + } } static void ntree_version_242(bNodeTree *ntree) { - bNode *node; - - if (ntree->type == NTREE_COMPOSIT) { - for (node = ntree->nodes.first; node; node = node->next) { - if (node->type == CMP_NODE_HUE_SAT) { - if (node->storage) { - NodeHueSat *nhs = node->storage; - if (nhs->val == 0.0f) - nhs->val = 1.0f; - } - } - } - } + bNode *node; + + if (ntree->type == NTREE_COMPOSIT) { + for (node = ntree->nodes.first; node; node = node->next) { + if (node->type == CMP_NODE_HUE_SAT) { + if (node->storage) { + NodeHueSat *nhs = node->storage; + if (nhs->val == 0.0f) + nhs->val = 1.0f; + } + } + } + } } static void ntree_version_245(FileData *fd, Library *lib, bNodeTree *ntree) { - bNode *node; - NodeTwoFloats *ntf; - ID *nodeid; - Image *image; - ImageUser *iuser; - - if (ntree->type == NTREE_COMPOSIT) { - for (node = ntree->nodes.first; node; node = node->next) { - if (node->type == CMP_NODE_ALPHAOVER) { - if (!node->storage) { - ntf = MEM_callocN(sizeof(NodeTwoFloats), "NodeTwoFloats"); - node->storage = ntf; - if (node->custom1) - ntf->x = 1.0f; - } - } - - /* fix for temporary flag changes during 245 cycle */ - nodeid = blo_do_versions_newlibadr(fd, lib, node->id); - if (node->storage && nodeid && GS(nodeid->name) == ID_IM) { - image = (Image *)nodeid; - iuser = node->storage; - if (iuser->flag & IMA_OLD_PREMUL) { - iuser->flag &= ~IMA_OLD_PREMUL; - } - if (iuser->flag & IMA_DO_PREMUL) { - image->flag &= ~IMA_OLD_PREMUL; - image->alpha_mode = IMA_ALPHA_STRAIGHT; - } - } - } - } + bNode *node; + NodeTwoFloats *ntf; + ID *nodeid; + Image *image; + ImageUser *iuser; + + if (ntree->type == NTREE_COMPOSIT) { + for (node = ntree->nodes.first; node; node = node->next) { + if (node->type == CMP_NODE_ALPHAOVER) { + if (!node->storage) { + ntf = MEM_callocN(sizeof(NodeTwoFloats), "NodeTwoFloats"); + node->storage = ntf; + if (node->custom1) + ntf->x = 1.0f; + } + } + + /* fix for temporary flag changes during 245 cycle */ + nodeid = blo_do_versions_newlibadr(fd, lib, node->id); + if (node->storage && nodeid && GS(nodeid->name) == ID_IM) { + image = (Image *)nodeid; + iuser = node->storage; + if (iuser->flag & IMA_OLD_PREMUL) { + iuser->flag &= ~IMA_OLD_PREMUL; + } + if (iuser->flag & IMA_DO_PREMUL) { + image->flag &= ~IMA_OLD_PREMUL; + image->alpha_mode = IMA_ALPHA_STRAIGHT; + } + } + } + } } static void idproperties_fix_groups_lengths_recurse(IDProperty *prop) { - IDProperty *loop; - int i; - - for (loop = prop->data.group.first, i = 0; loop; loop = loop->next, i++) { - if (loop->type == IDP_GROUP) - idproperties_fix_groups_lengths_recurse(loop); - } - - if (prop->len != i) { - printf("Found and fixed bad id property group length.\n"); - prop->len = i; - } + IDProperty *loop; + int i; + + for (loop = prop->data.group.first, i = 0; loop; loop = loop->next, i++) { + if (loop->type == IDP_GROUP) + idproperties_fix_groups_lengths_recurse(loop); + } + + if (prop->len != i) { + printf("Found and fixed bad id property group length.\n"); + prop->len = i; + } } static void idproperties_fix_group_lengths(ListBase idlist) { - ID *id; + ID *id; - for (id = idlist.first; id; id = id->next) { - if (id->properties) { - idproperties_fix_groups_lengths_recurse(id->properties); - } - } + for (id = idlist.first; id; id = id->next) { + if (id->properties) { + idproperties_fix_groups_lengths_recurse(id->properties); + } + } } static void customdata_version_242(Mesh *me) { - CustomDataLayer *layer; - MTFace *mtf; - MCol *mcol; - TFace *tf; - int a, mtfacen, mcoln; - - if (!me->vdata.totlayer) { - CustomData_add_layer(&me->vdata, CD_MVERT, CD_ASSIGN, me->mvert, me->totvert); - - if (me->dvert) - CustomData_add_layer(&me->vdata, CD_MDEFORMVERT, CD_ASSIGN, me->dvert, me->totvert); - } - - if (!me->edata.totlayer) - CustomData_add_layer(&me->edata, CD_MEDGE, CD_ASSIGN, me->medge, me->totedge); - - if (!me->fdata.totlayer) { - CustomData_add_layer(&me->fdata, CD_MFACE, CD_ASSIGN, me->mface, me->totface); - - if (me->tface) { - if (me->mcol) - MEM_freeN(me->mcol); - - me->mcol = CustomData_add_layer(&me->fdata, CD_MCOL, CD_CALLOC, NULL, me->totface); - me->mtface = CustomData_add_layer(&me->fdata, CD_MTFACE, CD_CALLOC, NULL, me->totface); - - mtf = me->mtface; - mcol = me->mcol; - tf = me->tface; - - for (a = 0; a < me->totface; a++, mtf++, tf++, mcol += 4) { - memcpy(mcol, tf->col, sizeof(tf->col)); - memcpy(mtf->uv, tf->uv, sizeof(tf->uv)); - } - - MEM_freeN(me->tface); - me->tface = NULL; - } - else if (me->mcol) { - me->mcol = CustomData_add_layer(&me->fdata, CD_MCOL, CD_ASSIGN, me->mcol, me->totface); - } - } - - if (me->tface) { - MEM_freeN(me->tface); - me->tface = NULL; - } - - for (a = 0, mtfacen = 0, mcoln = 0; a < me->fdata.totlayer; a++) { - layer = &me->fdata.layers[a]; - - if (layer->type == CD_MTFACE) { - if (layer->name[0] == 0) { - if (mtfacen == 0) strcpy(layer->name, "UVMap"); - else BLI_snprintf(layer->name, sizeof(layer->name), "UVMap.%.3d", mtfacen); - } - mtfacen++; - } - else if (layer->type == CD_MCOL) { - if (layer->name[0] == 0) { - if (mcoln == 0) - strcpy(layer->name, "Col"); - else - BLI_snprintf(layer->name, sizeof(layer->name), "Col.%.3d", mcoln); - } - mcoln++; - } - } - - BKE_mesh_update_customdata_pointers(me, true); + CustomDataLayer *layer; + MTFace *mtf; + MCol *mcol; + TFace *tf; + int a, mtfacen, mcoln; + + if (!me->vdata.totlayer) { + CustomData_add_layer(&me->vdata, CD_MVERT, CD_ASSIGN, me->mvert, me->totvert); + + if (me->dvert) + CustomData_add_layer(&me->vdata, CD_MDEFORMVERT, CD_ASSIGN, me->dvert, me->totvert); + } + + if (!me->edata.totlayer) + CustomData_add_layer(&me->edata, CD_MEDGE, CD_ASSIGN, me->medge, me->totedge); + + if (!me->fdata.totlayer) { + CustomData_add_layer(&me->fdata, CD_MFACE, CD_ASSIGN, me->mface, me->totface); + + if (me->tface) { + if (me->mcol) + MEM_freeN(me->mcol); + + me->mcol = CustomData_add_layer(&me->fdata, CD_MCOL, CD_CALLOC, NULL, me->totface); + me->mtface = CustomData_add_layer(&me->fdata, CD_MTFACE, CD_CALLOC, NULL, me->totface); + + mtf = me->mtface; + mcol = me->mcol; + tf = me->tface; + + for (a = 0; a < me->totface; a++, mtf++, tf++, mcol += 4) { + memcpy(mcol, tf->col, sizeof(tf->col)); + memcpy(mtf->uv, tf->uv, sizeof(tf->uv)); + } + + MEM_freeN(me->tface); + me->tface = NULL; + } + else if (me->mcol) { + me->mcol = CustomData_add_layer(&me->fdata, CD_MCOL, CD_ASSIGN, me->mcol, me->totface); + } + } + + if (me->tface) { + MEM_freeN(me->tface); + me->tface = NULL; + } + + for (a = 0, mtfacen = 0, mcoln = 0; a < me->fdata.totlayer; a++) { + layer = &me->fdata.layers[a]; + + if (layer->type == CD_MTFACE) { + if (layer->name[0] == 0) { + if (mtfacen == 0) + strcpy(layer->name, "UVMap"); + else + BLI_snprintf(layer->name, sizeof(layer->name), "UVMap.%.3d", mtfacen); + } + mtfacen++; + } + else if (layer->type == CD_MCOL) { + if (layer->name[0] == 0) { + if (mcoln == 0) + strcpy(layer->name, "Col"); + else + BLI_snprintf(layer->name, sizeof(layer->name), "Col.%.3d", mcoln); + } + mcoln++; + } + } + + BKE_mesh_update_customdata_pointers(me, true); } /*only copy render texface layer from active*/ static void customdata_version_243(Mesh *me) { - CustomDataLayer *layer; - int a; + CustomDataLayer *layer; + int a; - for (a = 0; a < me->fdata.totlayer; a++) { - layer = &me->fdata.layers[a]; - layer->active_rnd = layer->active; - } + for (a = 0; a < me->fdata.totlayer; a++) { + layer = &me->fdata.layers[a]; + layer->active_rnd = layer->active; + } } /* struct NodeImageAnim moved to ImageUser, and we make it default available */ static void do_version_ntree_242_2(bNodeTree *ntree) { - bNode *node; - - if (ntree->type == NTREE_COMPOSIT) { - for (node = ntree->nodes.first; node; node = node->next) { - if (ELEM(node->type, CMP_NODE_IMAGE, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { - /* only image had storage */ - if (node->storage) { - NodeImageAnim *nia = node->storage; - ImageUser *iuser = MEM_callocN(sizeof(ImageUser), "ima user node"); - - iuser->frames = nia->frames; - iuser->sfra = nia->sfra; - iuser->offset = nia->nr - 1; - iuser->cycl = nia->cyclic; - iuser->ok = 1; - - node->storage = iuser; - MEM_freeN(nia); - } - else { - ImageUser *iuser = node->storage = MEM_callocN(sizeof(ImageUser), "node image user"); - iuser->sfra = 1; - iuser->ok = 1; - } - } - } - } + bNode *node; + + if (ntree->type == NTREE_COMPOSIT) { + for (node = ntree->nodes.first; node; node = node->next) { + if (ELEM(node->type, CMP_NODE_IMAGE, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { + /* only image had storage */ + if (node->storage) { + NodeImageAnim *nia = node->storage; + ImageUser *iuser = MEM_callocN(sizeof(ImageUser), "ima user node"); + + iuser->frames = nia->frames; + iuser->sfra = nia->sfra; + iuser->offset = nia->nr - 1; + iuser->cycl = nia->cyclic; + iuser->ok = 1; + + node->storage = iuser; + MEM_freeN(nia); + } + else { + ImageUser *iuser = node->storage = MEM_callocN(sizeof(ImageUser), "node image user"); + iuser->sfra = 1; + iuser->ok = 1; + } + } + } + } } static void do_version_free_effect_245(Effect *eff) { - PartEff *paf; - - if (eff->type == EFF_PARTICLE) { - paf = (PartEff *)eff; - if (paf->keys) - MEM_freeN(paf->keys); - } - MEM_freeN(eff); + PartEff *paf; + + if (eff->type == EFF_PARTICLE) { + paf = (PartEff *)eff; + if (paf->keys) + MEM_freeN(paf->keys); + } + MEM_freeN(eff); } static void do_version_free_effects_245(ListBase *lb) { - Effect *eff; + Effect *eff; - while ((eff = BLI_pophead(lb))) { - do_version_free_effect_245(eff); - } + while ((eff = BLI_pophead(lb))) { + do_version_free_effect_245(eff); + } } static void do_version_constraints_245(ListBase *lb) { - bConstraint *con; - bConstraintTarget *ct; - - for (con = lb->first; con; con = con->next) { - if (con->type == CONSTRAINT_TYPE_PYTHON) { - bPythonConstraint *data = (bPythonConstraint *)con->data; - if (data->tar) { - /* version patching needs to be done */ - ct = MEM_callocN(sizeof(bConstraintTarget), "PyConTarget"); - - ct->tar = data->tar; - BLI_strncpy(ct->subtarget, data->subtarget, sizeof(ct->subtarget)); - ct->space = con->tarspace; - - BLI_addtail(&data->targets, ct); - data->tarnum++; - - /* clear old targets to avoid problems */ - data->tar = NULL; - data->subtarget[0] = '\0'; - } - } - else if (con->type == CONSTRAINT_TYPE_LOCLIKE) { - bLocateLikeConstraint *data = (bLocateLikeConstraint *)con->data; - - /* new headtail functionality makes Bone-Tip function obsolete */ - if (data->flag & LOCLIKE_TIP) - con->headtail = 1.0f; - } - } + bConstraint *con; + bConstraintTarget *ct; + + for (con = lb->first; con; con = con->next) { + if (con->type == CONSTRAINT_TYPE_PYTHON) { + bPythonConstraint *data = (bPythonConstraint *)con->data; + if (data->tar) { + /* version patching needs to be done */ + ct = MEM_callocN(sizeof(bConstraintTarget), "PyConTarget"); + + ct->tar = data->tar; + BLI_strncpy(ct->subtarget, data->subtarget, sizeof(ct->subtarget)); + ct->space = con->tarspace; + + BLI_addtail(&data->targets, ct); + data->tarnum++; + + /* clear old targets to avoid problems */ + data->tar = NULL; + data->subtarget[0] = '\0'; + } + } + else if (con->type == CONSTRAINT_TYPE_LOCLIKE) { + bLocateLikeConstraint *data = (bLocateLikeConstraint *)con->data; + + /* new headtail functionality makes Bone-Tip function obsolete */ + if (data->flag & LOCLIKE_TIP) + con->headtail = 1.0f; + } + } } PartEff *blo_do_version_give_parteff_245(Object *ob) { - PartEff *paf; - - paf = ob->effect.first; - while (paf) { - if (paf->type == EFF_PARTICLE) - return paf; - paf = paf->next; - } - return NULL; + PartEff *paf; + + paf = ob->effect.first; + while (paf) { + if (paf->type == EFF_PARTICLE) + return paf; + paf = paf->next; + } + return NULL; } /* NOTE: this version patch is intended for versions < 2.52.2, but was initially introduced in 2.27 already */ void blo_do_version_old_trackto_to_constraints(Object *ob) { - /* create new trackto constraint from the relationship */ - if (ob->track) { - bConstraint *con = BKE_constraint_add_for_object(ob, "AutoTrack", CONSTRAINT_TYPE_TRACKTO); - bTrackToConstraint *data = con->data; - - /* copy tracking settings from the object */ - data->tar = ob->track; - data->reserved1 = ob->trackflag; - data->reserved2 = ob->upflag; - } - - /* clear old track setting */ - ob->track = NULL; + /* create new trackto constraint from the relationship */ + if (ob->track) { + bConstraint *con = BKE_constraint_add_for_object(ob, "AutoTrack", CONSTRAINT_TYPE_TRACKTO); + bTrackToConstraint *data = con->data; + + /* copy tracking settings from the object */ + data->tar = ob->track; + data->reserved1 = ob->trackflag; + data->reserved2 = ob->upflag; + } + + /* clear old track setting */ + ob->track = NULL; } void blo_do_versions_pre250(FileData *fd, Library *lib, Main *bmain) { - /* WATCH IT!!!: pointers from libdata have not been converted */ - - if (bmain->versionfile == 100) { - /* tex->extend and tex->imageflag have changed: */ - Tex *tex = bmain->textures.first; - while (tex) { - if (tex->id.tag & LIB_TAG_NEED_LINK) { - - if (tex->extend == 0) { - if (tex->xrepeat || tex->yrepeat) { - tex->extend = TEX_REPEAT; - } - else { - tex->extend = TEX_EXTEND; - tex->xrepeat = tex->yrepeat = 1; - } - } - - } - tex = tex->id.next; - } - } - - if (bmain->versionfile <= 101) { - /* frame mapping */ - Scene *sce = bmain->scenes.first; - while (sce) { - sce->r.framapto = 100; - sce->r.images = 100; - sce->r.framelen = 1.0; - sce = sce->id.next; - } - } - - if (bmain->versionfile <= 103) { - /* new variable in object: colbits */ - Object *ob = bmain->objects.first; - int a; - while (ob) { - ob->colbits = 0; - if (ob->totcol) { - for (a = 0; a < ob->totcol; a++) { - if (ob->mat[a]) - ob->colbits |= (1 << a); - } - } - ob = ob->id.next; - } - } - - if (bmain->versionfile <= 104) { - /* timeoffs moved */ - Object *ob = bmain->objects.first; - while (ob) { - if (ob->transflag & 1) { - ob->transflag -= 1; - } - ob = ob->id.next; - } - } - - if (bmain->versionfile <= 106) { - /* mcol changed */ - Mesh *me = bmain->meshes.first; - while (me) { - if (me->mcol) - vcol_to_fcol(me); - me = me->id.next; - } - - } - - if (bmain->versionfile <= 107) { - Object *ob; - ob = bmain->objects.first; - while (ob) { - if (ob->dt == 0) - ob->dt = OB_SOLID; - ob = ob->id.next; - } - - } - - if (bmain->versionfile <= 109) { - /* new variable: gridlines */ - bScreen *sc = bmain->screens.first; - while (sc) { - ScrArea *sa = sc->areabase.first; - while (sa) { - SpaceLink *sl = sa->spacedata.first; - while (sl) { - if (sl->spacetype == SPACE_VIEW3D) { - View3D *v3d = (View3D *)sl; - - if (v3d->gridlines == 0) - v3d->gridlines = 20; - } - sl = sl->next; - } - sa = sa->next; - } - sc = sc->id.next; - } - } - - if (bmain->versionfile <= 134) { - Tex *tex = bmain->textures.first; - while (tex) { - if ((tex->rfac == 0.0f) && - (tex->gfac == 0.0f) && - (tex->bfac == 0.0f)) - { - tex->rfac = 1.0f; - tex->gfac = 1.0f; - tex->bfac = 1.0f; - tex->filtersize = 1.0f; - } - tex = tex->id.next; - } - } - - if (bmain->versionfile <= 140) { - /* r-g-b-fac in texture */ - Tex *tex = bmain->textures.first; - while (tex) { - if ((tex->rfac == 0.0f) && - (tex->gfac == 0.0f) && - (tex->bfac == 0.0f)) - { - tex->rfac = 1.0f; - tex->gfac = 1.0f; - tex->bfac = 1.0f; - tex->filtersize = 1.0f; - } - tex = tex->id.next; - } - } - - if (bmain->versionfile <= 153) { - Scene *sce = bmain->scenes.first; - while (sce) { - if (sce->r.blurfac == 0.0f) - sce->r.blurfac = 1.0f; - sce = sce->id.next; - } - } - - if (bmain->versionfile <= 163) { - Scene *sce = bmain->scenes.first; - while (sce) { - if (sce->r.frs_sec == 0) - sce->r.frs_sec = 25; - sce = sce->id.next; - } - } - - if (bmain->versionfile <= 164) { - Mesh *me = bmain->meshes.first; - while (me) { - me->smoothresh = 30; - me = me->id.next; - } - } - - if (bmain->versionfile <= 165) { - Mesh *me = bmain->meshes.first; - TFace *tface; - int nr; - char *cp; - - while (me) { - if (me->tface) { - nr = me->totface; - tface = me->tface; - while (nr--) { - int j; - for (j = 0; j < 4; j++) { - int k; - cp = ((char *)&tface->col[j]) + 1; - for (k = 0; k < 3; k++) { - cp[k] = (cp[k] > 126) ? 255 : cp[k] * 2; - } - } - - tface++; - } - } - me = me->id.next; - } - } - - if (bmain->versionfile <= 169) { - Mesh *me = bmain->meshes.first; - while (me) { - if (me->subdiv == 0) - me->subdiv = 1; - me = me->id.next; - } - } - - if (bmain->versionfile <= 169) { - bScreen *sc = bmain->screens.first; - while (sc) { - ScrArea *sa = sc->areabase.first; - while (sa) { - SpaceLink *sl = sa->spacedata.first; - while (sl) { - if (sl->spacetype == SPACE_GRAPH) { - SpaceGraph *sipo = (SpaceGraph *)sl; - sipo->v2d.max[0] = 15000.0; - } - sl = sl->next; - } - sa = sa->next; - } - sc = sc->id.next; - } - } - - if (bmain->versionfile <= 170) { - Object *ob = bmain->objects.first; - PartEff *paf; - while (ob) { - paf = blo_do_version_give_parteff_245(ob); - if (paf) { - if (paf->staticstep == 0) { - paf->staticstep = 5; - } - } - ob = ob->id.next; - } - } - - if (bmain->versionfile <= 171) { - bScreen *sc = bmain->screens.first; - while (sc) { - ScrArea *sa = sc->areabase.first; - while (sa) { - SpaceLink *sl = sa->spacedata.first; - while (sl) { - if (sl->spacetype == SPACE_TEXT) { - SpaceText *st = (SpaceText *)sl; - st->lheight = 12; - } - sl = sl->next; - } - sa = sa->next; - } - sc = sc->id.next; - } - } - - if (bmain->versionfile <= 173) { - int a, b; - Mesh *me = bmain->meshes.first; - while (me) { - if (me->tface) { - TFace *tface = me->tface; - for (a = 0; a < me->totface; a++, tface++) { - for (b = 0; b < 4; b++) { - tface->uv[b][0] /= 32767.0f; - tface->uv[b][1] /= 32767.0f; - } - } - } - me = me->id.next; - } - } - - if (bmain->versionfile <= 204) { - bSound *sound; - - sound = bmain->sounds.first; - while (sound) { - if (sound->volume < 0.01f) { - sound->volume = 1.0f; - } - sound = sound->id.next; - } - } - - if (bmain->versionfile <= 212) { - bSound *sound; - Mesh *me; - - sound = bmain->sounds.first; - while (sound) { - sound->max_gain = 1.0; - sound->min_gain = 0.0; - sound->distance = 1.0; - - if (sound->attenuation > 0.0f) - sound->flags |= SOUND_FLAGS_3D; - else - sound->flags &= ~SOUND_FLAGS_3D; - - sound = sound->id.next; - } - - /* me->subdiv changed to reflect the actual reparametization - * better, and smeshes were removed - if it was a smesh make - * it a subsurf, and reset the subdiv level because subsurf - * takes a lot more work to calculate. - */ - for (me = bmain->meshes.first; me; me = me->id.next) { - enum { - ME_SMESH = (1 << 6), - ME_SUBSURF = (1 << 7), - }; - if (me->flag & ME_SMESH) { - me->flag &= ~ME_SMESH; - me->flag |= ME_SUBSURF; - - me->subdiv = 1; - } - else { - if (me->subdiv < 2) - me->subdiv = 1; - else - me->subdiv--; - } - } - } - - if (bmain->versionfile <= 220) { - Mesh *me; - - /* Began using alpha component of vertex colors, but - * old file vertex colors are undefined, reset them - * to be fully opaque. -zr - */ - for (me = bmain->meshes.first; me; me = me->id.next) { - if (me->mcol) { - int i; - - for (i = 0; i < me->totface * 4; i++) { - MCol *mcol = &me->mcol[i]; - mcol->a = 255; - } - } - if (me->tface) { - int i, j; - - for (i = 0; i < me->totface; i++) { - TFace *tf = &((TFace *)me->tface)[i]; - - for (j = 0; j < 4; j++) { - char *col = (char *)&tf->col[j]; - - col[0] = 255; - } - } - } - } - } - - if (bmain->versionfile <= 223) { - VFont *vf; - for (vf = bmain->fonts.first; vf; vf = vf->id.next) { - if (STREQ(vf->name + strlen(vf->name) - 6, ".Bfont")) { - strcpy(vf->name, FO_BUILTIN_NAME); - } - } - } - - if (bmain->versionfile <= 224) { - bSound *sound; - Scene *sce; - Mesh *me; - bScreen *sc; - - for (sound = bmain->sounds.first; sound; sound = sound->id.next) { - if (sound->packedfile) { - if (sound->newpackedfile == NULL) { - sound->newpackedfile = sound->packedfile; - } - sound->packedfile = NULL; - } - } - /* Make sure that old subsurf meshes don't have zero subdivision level for rendering */ - for (me = bmain->meshes.first; me; me = me->id.next) { - enum { ME_SUBSURF = (1 << 7) }; - if ((me->flag & ME_SUBSURF) && (me->subdivr == 0)) { - me->subdivr = me->subdiv; - } - } - - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - sce->r.stereomode = 1; // no stereo - } - - /* some oldfile patch, moved from set_func_space */ - for (sc = bmain->screens.first; sc; sc = sc->id.next) { - ScrArea *sa; - - for (sa = sc->areabase.first; sa; sa = sa->next) { - SpaceLink *sl; - - for (sl = sa->spacedata.first; sl; sl = sl->next) { - if (sl->spacetype == SPACE_GRAPH) { - SpaceSeq *sseq = (SpaceSeq *)sl; - sseq->v2d.keeptot = 0; - } - } - } - } - } - - if (bmain->versionfile <= 227) { - Scene *sce; - bScreen *sc; - Object *ob; - - /* As of now, this insures that the transition from the old Track system - * to the new full constraint Track is painless for everyone. - theeth - */ - ob = bmain->objects.first; - - while (ob) { - ListBase *list; - list = &ob->constraints; - - /* check for already existing TrackTo constraint - * set their track and up flag correctly - */ - - if (list) { - bConstraint *curcon; - for (curcon = list->first; curcon; curcon = curcon->next) { - if (curcon->type == CONSTRAINT_TYPE_TRACKTO) { - bTrackToConstraint *data = curcon->data; - data->reserved1 = ob->trackflag; - data->reserved2 = ob->upflag; - } - } - } - - if (ob->type == OB_ARMATURE) { - if (ob->pose) { - bConstraint *curcon; - bPoseChannel *pchan; - for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { - for (curcon = pchan->constraints.first; curcon; curcon = curcon->next) { - if (curcon->type == CONSTRAINT_TYPE_TRACKTO) { - bTrackToConstraint *data = curcon->data; - data->reserved1 = ob->trackflag; - data->reserved2 = ob->upflag; - } - } - } - } - } - - /* Change Ob->Track in real TrackTo constraint */ - blo_do_version_old_trackto_to_constraints(ob); - - ob = ob->id.next; - } - - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - sce->audio.mixrate = 48000; - sce->audio.flag |= AUDIO_SCRUB; - } - - /* patch for old wrong max view2d settings, allows zooming out more */ - for (sc = bmain->screens.first; sc; sc = sc->id.next) { - ScrArea *sa; - - for (sa = sc->areabase.first; sa; sa = sa->next) { - SpaceLink *sl; - - for (sl = sa->spacedata.first; sl; sl = sl->next) { - if (sl->spacetype == SPACE_ACTION) { - SpaceAction *sac = (SpaceAction *)sl; - sac->v2d.max[0] = 32000; - } - else if (sl->spacetype == SPACE_NLA) { - SpaceNla *sla = (SpaceNla *)sl; - sla->v2d.max[0] = 32000; - } - } - } - } - } - - if (bmain->versionfile <= 228) { - bScreen *sc; - Object *ob; - - /* As of now, this insures that the transition from the old Track system - * to the new full constraint Track is painless for everyone. - */ - ob = bmain->objects.first; - - while (ob) { - ListBase *list; - list = &ob->constraints; - - /* check for already existing TrackTo constraint - * set their track and up flag correctly */ - - if (list) { - bConstraint *curcon; - for (curcon = list->first; curcon; curcon = curcon->next) { - if (curcon->type == CONSTRAINT_TYPE_TRACKTO) { - bTrackToConstraint *data = curcon->data; - data->reserved1 = ob->trackflag; - data->reserved2 = ob->upflag; - } - } - } - - if (ob->type == OB_ARMATURE) { - if (ob->pose) { - bConstraint *curcon; - bPoseChannel *pchan; - for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { - for (curcon = pchan->constraints.first; curcon; curcon = curcon->next) { - if (curcon->type == CONSTRAINT_TYPE_TRACKTO) { - bTrackToConstraint *data = curcon->data; - data->reserved1 = ob->trackflag; - data->reserved2 = ob->upflag; - } - } - } - } - } - - ob = ob->id.next; - } - - /* convert old mainb values for new button panels */ - for (sc = bmain->screens.first; sc; sc = sc->id.next) { - ScrArea *sa; - - for (sa = sc->areabase.first; sa; sa = sa->next) { - SpaceLink *sl; - - for (sl = sa->spacedata.first; sl; sl = sl->next) { - if (sl->spacetype == SPACE_PROPERTIES) { - SpaceProperties *sbuts = (SpaceProperties *)sl; - - sbuts->v2d.maxzoom = 1.2f; - - if (sbuts->mainb == BUTS_LAMP) { - sbuts->mainb = CONTEXT_SHADING; - //sbuts->tab[CONTEXT_SHADING] = TAB_SHADING_LAMP; - } - else if (sbuts->mainb == BUTS_MAT) { - sbuts->mainb = CONTEXT_SHADING; - //sbuts->tab[CONTEXT_SHADING] = TAB_SHADING_MAT; - } - else if (sbuts->mainb == BUTS_TEX) { - sbuts->mainb = CONTEXT_SHADING; - //sbuts->tab[CONTEXT_SHADING] = TAB_SHADING_TEX; - } - else if (sbuts->mainb == BUTS_ANIM) { - sbuts->mainb = CONTEXT_OBJECT; - } - else if (sbuts->mainb == BUTS_WORLD) { - sbuts->mainb = CONTEXT_SCENE; - //sbuts->tab[CONTEXT_SCENE] = TAB_SCENE_WORLD; - } - else if (sbuts->mainb == BUTS_RENDER) { - sbuts->mainb = CONTEXT_SCENE; - //sbuts->tab[CONTEXT_SCENE] = TAB_SCENE_RENDER; - } - else if (sbuts->mainb == BUTS_FPAINT) { - sbuts->mainb = CONTEXT_EDITING; - } - else if (sbuts->mainb == BUTS_RADIO) { - sbuts->mainb = CONTEXT_SHADING; - //sbuts->tab[CONTEXT_SHADING] = TAB_SHADING_RAD; - } - else if (sbuts->mainb == BUTS_CONSTRAINT) { - sbuts->mainb = CONTEXT_OBJECT; - } - else if (sbuts->mainb == BUTS_SCRIPT) { - sbuts->mainb = CONTEXT_OBJECT; - } - else if (sbuts->mainb == BUTS_EDIT) { - sbuts->mainb = CONTEXT_EDITING; - } - else { - sbuts->mainb = CONTEXT_SCENE; - } - } - } - } - } - } - - /* ton: made this 230 instead of 229, - * to be sure (tuho files) and this is a reliable check anyway - * nevertheless, we might need to think over a fitness (initialize) - * check apart from the do_versions() - */ - - if (bmain->versionfile <= 230) { - bScreen *sc; - - /* new variable blockscale, for panels in any area */ - for (sc = bmain->screens.first; sc; sc = sc->id.next) { - ScrArea *sa; - - for (sa = sc->areabase.first; sa; sa = sa->next) { - SpaceLink *sl; - - for (sl = sa->spacedata.first; sl; sl = sl->next) { - /* added: 5x better zoom in for action */ - if (sl->spacetype == SPACE_ACTION) { - SpaceAction *sac = (SpaceAction *)sl; - sac->v2d.maxzoom = 50; - } - } - } - } - } - - if (bmain->versionfile <= 231) { - bScreen *sc = bmain->screens.first; - - /* new bit flags for showing/hiding grid floor and axes */ - - while (sc) { - ScrArea *sa = sc->areabase.first; - while (sa) { - SpaceLink *sl = sa->spacedata.first; - while (sl) { - if (sl->spacetype == SPACE_VIEW3D) { - View3D *v3d = (View3D *)sl; - - if (v3d->gridflag == 0) { - v3d->gridflag |= V3D_SHOW_X; - v3d->gridflag |= V3D_SHOW_Y; - v3d->gridflag |= V3D_SHOW_FLOOR; - v3d->gridflag &= ~V3D_SHOW_Z; - } - } - sl = sl->next; - } - sa = sa->next; - } - sc = sc->id.next; - } - } - - if (bmain->versionfile <= 232) { - Tex *tex = bmain->textures.first; - World *wrld = bmain->worlds.first; - bScreen *sc; - - while (tex) { - if ((tex->flag & (TEX_CHECKER_ODD + TEX_CHECKER_EVEN)) == 0) { - tex->flag |= TEX_CHECKER_ODD; - } - /* copied from kernel texture.c */ - if (tex->ns_outscale == 0.0f) { - /* musgrave */ - tex->mg_H = 1.0f; - tex->mg_lacunarity = 2.0f; - tex->mg_octaves = 2.0f; - tex->mg_offset = 1.0f; - tex->mg_gain = 1.0f; - tex->ns_outscale = 1.0f; - /* distnoise */ - tex->dist_amount = 1.0f; - /* voronoi */ - tex->vn_w1 = 1.0f; - tex->vn_mexp = 2.5f; - } - tex = tex->id.next; - } - - while (wrld) { - if (wrld->aodist == 0.0f) { - wrld->aodist = 10.0f; - } - if (wrld->aoenergy == 0.0f) - wrld->aoenergy = 1.0f; - wrld = wrld->id.next; - } - - /* new variable blockscale, for panels in any area, do again because new - * areas didnt initialize it to 0.7 yet - */ - for (sc = bmain->screens.first; sc; sc = sc->id.next) { - ScrArea *sa; - for (sa = sc->areabase.first; sa; sa = sa->next) { - SpaceLink *sl; - for (sl = sa->spacedata.first; sl; sl = sl->next) { - /* added: 5x better zoom in for nla */ - if (sl->spacetype == SPACE_NLA) { - SpaceNla *snla = (SpaceNla *)sl; - snla->v2d.maxzoom = 50; - } - } - } - } - } - - if (bmain->versionfile <= 233) { - bScreen *sc; - - for (sc = bmain->screens.first; sc; sc = sc->id.next) { - ScrArea *sa; - for (sa = sc->areabase.first; sa; sa = sa->next) { - SpaceLink *sl; - for (sl = sa->spacedata.first; sl; sl = sl->next) { - if (sl->spacetype == SPACE_VIEW3D) { - View3D *v3d = (View3D *)sl; - v3d->flag |= V3D_SELECT_OUTLINE; - } - } - } - } - } - - if (bmain->versionfile <= 234) { - bScreen *sc; - - for (sc = bmain->screens.first; sc; sc = sc->id.next) { - ScrArea *sa; - for (sa = sc->areabase.first; sa; sa = sa->next) { - SpaceLink *sl; - for (sl = sa->spacedata.first; sl; sl = sl->next) { - if (sl->spacetype == SPACE_TEXT) { - SpaceText *st = (SpaceText *)sl; - if (st->tabnumber == 0) - st->tabnumber = 2; - } - } - } - } - } - - if (bmain->versionfile <= 235) { - Tex *tex = bmain->textures.first; - Scene *sce = bmain->scenes.first; - Sequence *seq; - Editing *ed; - - while (tex) { - if (tex->nabla == 0.0f) - tex->nabla = 0.025f; - tex = tex->id.next; - } - while (sce) { - ed = sce->ed; - if (ed) { - SEQ_BEGIN(sce->ed, seq) - { - if (seq->type == SEQ_TYPE_IMAGE || seq->type == SEQ_TYPE_MOVIE) - seq->alpha_mode = SEQ_ALPHA_STRAIGHT; - } SEQ_END; - } - - sce = sce->id.next; - } - } - - if (bmain->versionfile <= 236) { - Object *ob; - Camera *cam = bmain->cameras.first; - - while (cam) { - if (cam->ortho_scale == 0.0f) { - cam->ortho_scale = 256.0f / cam->lens; - if (cam->type == CAM_ORTHO) - printf("NOTE: ortho render has changed, tweak new Camera 'scale' value.\n"); - } - cam = cam->id.next; - } - /* force oops draw if depgraph was set*/ - /* set time line var */ - - /* softbody init new vars */ - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - if (ob->soft) { - if (ob->soft->defgoal == 0.0f) - ob->soft->defgoal = 0.7f; - if (ob->soft->physics_speed == 0.0f) - ob->soft->physics_speed = 1.0f; - - if (ob->soft->interval == 0) { - ob->soft->interval = 2; - ob->soft->sfra = 1; - ob->soft->efra = 100; - } - } - if (ob->soft && ob->soft->vertgroup == 0) { - bDeformGroup *locGroup = defgroup_find_name(ob, "SOFTGOAL"); - if (locGroup) { - /* retrieve index for that group */ - ob->soft->vertgroup = 1 + BLI_findindex(&ob->defbase, locGroup); - } - } - } - } - - if (bmain->versionfile <= 237) { - bArmature *arm; - bConstraint *con; - Object *ob; - Bone *bone; - - /* armature recode checks */ - for (arm = bmain->armatures.first; arm; arm = arm->id.next) { - BKE_armature_where_is(arm); - - for (bone = arm->bonebase.first; bone; bone = bone->next) - do_version_bone_head_tail_237(bone); - } - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - if (ob->parent) { - Object *parent = blo_do_versions_newlibadr(fd, lib, ob->parent); - if (parent && parent->type == OB_LATTICE) - ob->partype = PARSKEL; - } - - /* btw. armature_rebuild_pose is further only called on leave editmode */ - if (ob->type == OB_ARMATURE) { - if (ob->pose) - BKE_pose_tag_recalc(bmain, ob->pose); - - /* cannot call stuff now (pointers!), done in setup_app_data */ - ob->id.recalc |= ID_RECALC_ALL; - - /* new generic xray option */ - arm = blo_do_versions_newlibadr(fd, lib, ob->data); - enum { ARM_DRAWXRAY = (1 << 1) }; - if (arm->flag & ARM_DRAWXRAY) { - ob->dtx |= OB_DRAWXRAY; - } - } - else if (ob->type == OB_MESH) { - Mesh *me = blo_do_versions_newlibadr(fd, lib, ob->data); - - enum { - ME_SUBSURF = (1 << 7), - ME_OPT_EDGES = (1 << 8), - }; - - if ((me->flag & ME_SUBSURF)) { - SubsurfModifierData *smd = (SubsurfModifierData *)modifier_new(eModifierType_Subsurf); - - smd->levels = MAX2(1, me->subdiv); - smd->renderLevels = MAX2(1, me->subdivr); - smd->subdivType = me->subsurftype; - - smd->modifier.mode = 0; - if (me->subdiv != 0) - smd->modifier.mode |= 1; - if (me->subdivr != 0) - smd->modifier.mode |= 2; - - if (me->flag & ME_OPT_EDGES) - smd->flags |= eSubsurfModifierFlag_ControlEdges; - - BLI_addtail(&ob->modifiers, smd); - - modifier_unique_name(&ob->modifiers, (ModifierData *)smd); - } - } - - /* follow path constraint needs to set the 'path' option in curves... */ - for (con = ob->constraints.first; con; con = con->next) { - if (con->type == CONSTRAINT_TYPE_FOLLOWPATH) { - bFollowPathConstraint *data = con->data; - Object *obc = blo_do_versions_newlibadr(fd, lib, data->tar); - - if (obc && obc->type == OB_CURVE) { - Curve *cu = blo_do_versions_newlibadr(fd, lib, obc->data); - if (cu) - cu->flag |= CU_PATH; - } - } - } - } - } - - if (bmain->versionfile <= 238) { - Lattice *lt; - Object *ob; - bArmature *arm; - Mesh *me; - Key *key; - Scene *sce = bmain->scenes.first; - - while (sce) { - if (sce->toolsettings == NULL) { - sce->toolsettings = MEM_callocN(sizeof(struct ToolSettings), "Tool Settings Struct"); - sce->toolsettings->doublimit = 0.001f; - } - sce = sce->id.next; - } - - for (lt = bmain->lattices.first; lt; lt = lt->id.next) { - if (lt->fu == 0.0f && lt->fv == 0.0f && lt->fw == 0.0f) { - calc_lat_fudu(lt->flag, lt->pntsu, <->fu, <->du); - calc_lat_fudu(lt->flag, lt->pntsv, <->fv, <->dv); - calc_lat_fudu(lt->flag, lt->pntsw, <->fw, <->dw); - } - } - - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - ModifierData *md; - PartEff *paf; - - for (md = ob->modifiers.first; md; md = md->next) { - if (md->type == eModifierType_Subsurf) { - SubsurfModifierData *smd = (SubsurfModifierData *)md; - - smd->flags &= ~(eSubsurfModifierFlag_Incremental | eSubsurfModifierFlag_DebugIncr); - } - } - - if ((ob->softflag & OB_SB_ENABLE) && !modifiers_findByType(ob, eModifierType_Softbody)) { - if (ob->softflag & OB_SB_POSTDEF) { - md = ob->modifiers.first; - - while (md && modifierType_getInfo(md->type)->type == eModifierTypeType_OnlyDeform) { - md = md->next; - } - - BLI_insertlinkbefore(&ob->modifiers, md, modifier_new(eModifierType_Softbody)); - } - else { - BLI_addhead(&ob->modifiers, modifier_new(eModifierType_Softbody)); - } - - ob->softflag &= ~OB_SB_ENABLE; - } - - if (ob->pose) { - bPoseChannel *pchan; - bConstraint *con; - for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { - /* note, pchan->bone is also lib-link stuff */ - if (pchan->limitmin[0] == 0.0f && pchan->limitmax[0] == 0.0f) { - pchan->limitmin[0] = pchan->limitmin[1] = pchan->limitmin[2] = -180.0f; - pchan->limitmax[0] = pchan->limitmax[1] = pchan->limitmax[2] = 180.0f; - - for (con = pchan->constraints.first; con; con = con->next) { - if (con->type == CONSTRAINT_TYPE_KINEMATIC) { - bKinematicConstraint *data = (bKinematicConstraint *)con->data; - data->weight = 1.0f; - data->orientweight = 1.0f; - data->flag &= ~CONSTRAINT_IK_ROT; - - /* enforce conversion from old IK_TOPARENT to rootbone index */ - data->rootbone = -1; - - /* update_pose_etc handles rootbone == -1 */ - BKE_pose_tag_recalc(bmain, ob->pose); - } - } - } - } - } - - paf = blo_do_version_give_parteff_245(ob); - if (paf) { - if (paf->disp == 0) - paf->disp = 100; - if (paf->speedtex == 0) - paf->speedtex = 8; - if (paf->omat == 0) - paf->omat = 1; - } - } - - for (arm = bmain->armatures.first; arm; arm = arm->id.next) { - bone_version_238(&arm->bonebase); - arm->deformflag |= ARM_DEF_VGROUP; - } - - for (me = bmain->meshes.first; me; me = me->id.next) { - if (!me->medge) { - BKE_mesh_calc_edges_legacy(me, true); /* true = use mface->edcode */ - } - else { - BKE_mesh_strip_loose_faces(me); - } - } - - for (key = bmain->shapekeys.first; key; key = key->id.next) { - KeyBlock *kb; - int index = 1; - - for (kb = key->block.first; kb; kb = kb->next) { - if (kb == key->refkey) { - if (kb->name[0] == 0) - strcpy(kb->name, "Basis"); - } - else { - if (kb->name[0] == 0) { - BLI_snprintf(kb->name, sizeof(kb->name), "Key %d", index); - } - index++; - } - } - } - } - - if (bmain->versionfile <= 239) { - bArmature *arm; - Object *ob; - Scene *sce = bmain->scenes.first; - Camera *cam = bmain->cameras.first; - int set_passepartout = 0; - - /* deformflag is local in modifier now */ - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - ModifierData *md; - - for (md = ob->modifiers.first; md; md = md->next) { - if (md->type == eModifierType_Armature) { - ArmatureModifierData *amd = (ArmatureModifierData *)md; - if (amd->object && amd->deformflag == 0) { - Object *oba = blo_do_versions_newlibadr(fd, lib, amd->object); - arm = blo_do_versions_newlibadr(fd, lib, oba->data); - amd->deformflag = arm->deformflag; - } - } - } - } - - /* updating stepsize for ghost drawing */ - for (arm = bmain->armatures.first; arm; arm = arm->id.next) { - bone_version_239(&arm->bonebase); - if (arm->layer == 0) - arm->layer = 1; - } - - for (; sce; sce = sce->id.next) { - if (sce->r.scemode & R_PASSEPARTOUT) { - set_passepartout = 1; - sce->r.scemode &= ~R_PASSEPARTOUT; - } - } - - for (; cam; cam = cam->id.next) { - if (set_passepartout) - cam->flag |= CAM_SHOWPASSEPARTOUT; - - /* make sure old cameras have title safe on */ - if (!(cam->flag & CAM_SHOW_SAFE_MARGINS)) - cam->flag |= CAM_SHOW_SAFE_MARGINS; - - /* set an appropriate camera passepartout alpha */ - if (!(cam->passepartalpha)) - cam->passepartalpha = 0.2f; - } - } - - if (bmain->versionfile <= 241) { - Object *ob; - Scene *sce; - Light *la; - bArmature *arm; - bNodeTree *ntree; - - /* updating layers still */ - for (arm = bmain->armatures.first; arm; arm = arm->id.next) { - bone_version_239(&arm->bonebase); - if (arm->layer == 0) - arm->layer = 1; - } - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - if (sce->audio.mixrate == 0) - sce->audio.mixrate = 48000; - - /* We don't add default layer since blender2.8 because the layers - * are now in Scene->view_layers and a default layer is created in - * the doversion later on. - */ - SceneRenderLayer *srl; - /* new layer flag for sky, was default for solid */ - for (srl = sce->r.layers.first; srl; srl = srl->next) { - if (srl->layflag & SCE_LAY_SOLID) - srl->layflag |= SCE_LAY_SKY; - srl->passflag &= (SCE_PASS_COMBINED | SCE_PASS_Z | SCE_PASS_NORMAL | SCE_PASS_VECTOR); - } - - /* node version changes */ - if (sce->nodetree) - ntree_version_241(sce->nodetree); - - /* uv calculation options moved to toolsettings */ - if (sce->toolsettings->unwrapper == 0) { - sce->toolsettings->uvcalc_flag = UVCALC_FILLHOLES; - sce->toolsettings->unwrapper = 1; - } - } - - for (ntree = bmain->nodetrees.first; ntree; ntree = ntree->id.next) - ntree_version_241(ntree); - - for (la = bmain->lights.first; la; la = la->id.next) - if (la->buffers == 0) - la->buffers = 1; - - /* for empty drawsize and drawtype */ - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - if (ob->empty_drawsize == 0.0f) { - ob->empty_drawtype = OB_ARROWS; - ob->empty_drawsize = 1.0; - } - } - - /* during 2.41 images with this name were used for viewer node output, lets fix that */ - if (bmain->versionfile == 241) { - Image *ima; - for (ima = bmain->images.first; ima; ima = ima->id.next) { - if (STREQ(ima->name, "Compositor")) { - strcpy(ima->id.name + 2, "Viewer Node"); - strcpy(ima->name, "Viewer Node"); - } - } - } - } - - if (bmain->versionfile <= 242) { - Scene *sce; - bScreen *sc; - Object *ob; - Curve *cu; - Material *ma; - Mesh *me; - Collection *collection; - Nurb *nu; - BezTriple *bezt; - BPoint *bp; - bNodeTree *ntree; - int a; - - for (sc = bmain->screens.first; sc; sc = sc->id.next) { - ScrArea *sa; - sa = sc->areabase.first; - while (sa) { - SpaceLink *sl; - - for (sl = sa->spacedata.first; sl; sl = sl->next) { - if (sl->spacetype == SPACE_VIEW3D) { - View3D *v3d = (View3D *)sl; - if (v3d->gridsubdiv == 0) - v3d->gridsubdiv = 10; - } - } - sa = sa->next; - } - } - - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - enum { - R_THREADS = (1 << 19), - }; - if (sce->toolsettings->select_thresh == 0.0f) - sce->toolsettings->select_thresh = 0.01f; - if (sce->r.threads == 0) { - if (sce->r.mode & R_THREADS) - sce->r.threads = 2; - else - sce->r.threads = 1; - } - if (sce->nodetree) - ntree_version_242(sce->nodetree); - } - - for (ntree = bmain->nodetrees.first; ntree; ntree = ntree->id.next) - ntree_version_242(ntree); - - /* add default radius values to old curve points */ - for (cu = bmain->curves.first; cu; cu = cu->id.next) { - for (nu = cu->nurb.first; nu; nu = nu->next) { - if (nu) { - if (nu->bezt) { - for (bezt = nu->bezt, a = 0; a < nu->pntsu; a++, bezt++) { - if (!bezt->radius) - bezt->radius = 1.0; - } - } - else if (nu->bp) { - for (bp = nu->bp, a = 0; a < nu->pntsu * nu->pntsv; a++, bp++) { - if (!bp->radius) - bp->radius = 1.0; - } - } - } - } - } - - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - ModifierData *md; - ListBase *list; - list = &ob->constraints; - - /* check for already existing MinMax (floor) constraint - * and update the sticky flagging */ - - if (list) { - bConstraint *curcon; - for (curcon = list->first; curcon; curcon = curcon->next) { - switch (curcon->type) { - case CONSTRAINT_TYPE_MINMAX: - { - bMinMaxConstraint *data = curcon->data; - if (data->sticky == 1) - data->flag |= MINMAX_STICKY; - else - data->flag &= ~MINMAX_STICKY; - - break; - } - case CONSTRAINT_TYPE_ROTLIKE: - { - bRotateLikeConstraint *data = curcon->data; - - /* version patch from buttons_object.c */ - if (data->flag == 0) - data->flag = ROTLIKE_X | ROTLIKE_Y | ROTLIKE_Z; - - break; - } - } - } - } - - if (ob->type == OB_ARMATURE) { - if (ob->pose) { - bConstraint *curcon; - bPoseChannel *pchan; - for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { - for (curcon = pchan->constraints.first; curcon; curcon = curcon->next) { - switch (curcon->type) { - case CONSTRAINT_TYPE_MINMAX: - { - bMinMaxConstraint *data = curcon->data; - if (data->sticky == 1) - data->flag |= MINMAX_STICKY; - else - data->flag &= ~MINMAX_STICKY; - break; - } - case CONSTRAINT_TYPE_KINEMATIC: - { - bKinematicConstraint *data = curcon->data; - if (!(data->flag & CONSTRAINT_IK_POS)) { - data->flag |= CONSTRAINT_IK_POS; - data->flag |= CONSTRAINT_IK_STRETCH; - } - break; - } - case CONSTRAINT_TYPE_ROTLIKE: - { - bRotateLikeConstraint *data = curcon->data; - - /* version patch from buttons_object.c */ - if (data->flag == 0) - data->flag = ROTLIKE_X | ROTLIKE_Y | ROTLIKE_Z; - break; - } - } - } - } - } - } - - /* copy old object level track settings to curve modifers */ - for (md = ob->modifiers.first; md; md = md->next) { - if (md->type == eModifierType_Curve) { - CurveModifierData *cmd = (CurveModifierData *)md; - - if (cmd->defaxis == 0) - cmd->defaxis = ob->trackflag + 1; - } - } - - } - - for (ma = bmain->materials.first; ma; ma = ma->id.next) { - if (ma->nodetree) - ntree_version_242(ma->nodetree); - } - - for (me = bmain->meshes.first; me; me = me->id.next) - customdata_version_242(me); - - for (collection = bmain->collections.first; collection; collection = collection->id.next) - if (collection->layer == 0) - collection->layer = (1 << 20) - 1; - - /* now, subversion control! */ - if (bmain->subversionfile < 3) { - Image *ima; - Tex *tex; - - /* Image refactor initialize */ - for (ima = bmain->images.first; ima; ima = ima->id.next) { - ima->source = IMA_SRC_FILE; - ima->type = IMA_TYPE_IMAGE; - - ima->gen_x = 256; ima->gen_y = 256; - ima->gen_type = 1; - - if (STREQLEN(ima->id.name + 2, "Viewer Node", sizeof(ima->id.name) - 2)) { - ima->source = IMA_SRC_VIEWER; - ima->type = IMA_TYPE_COMPOSITE; - } - if (STREQLEN(ima->id.name + 2, "Render Result", sizeof(ima->id.name) - 2)) { - ima->source = IMA_SRC_VIEWER; - ima->type = IMA_TYPE_R_RESULT; - } - - } - for (tex = bmain->textures.first; tex; tex = tex->id.next) { - enum { - TEX_ANIMCYCLIC = (1 << 6), - TEX_ANIM5 = (1 << 7), - }; - - if (tex->type == TEX_IMAGE && tex->ima) { - ima = blo_do_versions_newlibadr(fd, lib, tex->ima); - if (tex->imaflag & TEX_ANIM5) { - ima->source = IMA_SRC_MOVIE; - } - } - tex->iuser.frames = tex->frames; - tex->iuser.offset = tex->offset; - tex->iuser.sfra = tex->sfra; - tex->iuser.cycl = (tex->imaflag & TEX_ANIMCYCLIC) != 0; - } - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - if (sce->nodetree) - do_version_ntree_242_2(sce->nodetree); - } - for (ntree = bmain->nodetrees.first; ntree; ntree = ntree->id.next) - do_version_ntree_242_2(ntree); - for (ma = bmain->materials.first; ma; ma = ma->id.next) - if (ma->nodetree) - do_version_ntree_242_2(ma->nodetree); - } - - if (bmain->subversionfile < 4) { - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - sce->r.bake_mode = 1; /* prevent to include render stuff here */ - sce->r.bake_filter = 16; - sce->r.bake_flag = R_BAKE_CLEAR; - } - } - } - - if (bmain->versionfile <= 243) { - Object *ob = bmain->objects.first; - - for (; ob; ob = ob->id.next) { - bDeformGroup *curdef; - - for (curdef = ob->defbase.first; curdef; curdef = curdef->next) { - /* replace an empty-string name with unique name */ - if (curdef->name[0] == '\0') { - defgroup_unique_name(curdef, ob); - } - } - - if (bmain->versionfile < 243 || bmain->subversionfile < 1) { - ModifierData *md; - - /* translate old mirror modifier axis values to new flags */ - for (md = ob->modifiers.first; md; md = md->next) { - if (md->type == eModifierType_Mirror) { - MirrorModifierData *mmd = (MirrorModifierData *)md; - - switch (mmd->axis) { - case 0: - mmd->flag |= MOD_MIR_AXIS_X; - break; - case 1: - mmd->flag |= MOD_MIR_AXIS_Y; - break; - case 2: - mmd->flag |= MOD_MIR_AXIS_Z; - break; - } - - mmd->axis = 0; - } - } - } - } - - /* render layer added, this is not the active layer */ - if (bmain->versionfile <= 243 || bmain->subversionfile < 2) { - Mesh *me; - for (me = bmain->meshes.first; me; me = me->id.next) - customdata_version_243(me); - } - - } - - if (bmain->versionfile <= 244) { - bScreen *sc; - - if (bmain->versionfile != 244 || bmain->subversionfile < 2) { - /* correct older action editors - incorrect scrolling */ - for (sc = bmain->screens.first; sc; sc = sc->id.next) { - ScrArea *sa; - sa = sc->areabase.first; - while (sa) { - SpaceLink *sl; - - for (sl = sa->spacedata.first; sl; sl = sl->next) { - if (sl->spacetype == SPACE_ACTION) { - SpaceAction *saction = (SpaceAction *)sl; - - saction->v2d.tot.ymin = -1000.0; - saction->v2d.tot.ymax = 0.0; - - saction->v2d.cur.ymin = -75.0; - saction->v2d.cur.ymax = 5.0; - } - } - sa = sa->next; - } - } - } - } - - if (bmain->versionfile <= 245) { - Scene *sce; - Object *ob; - Image *ima; - Light *la; - Material *ma; - ParticleSettings *part; - Mesh *me; - bNodeTree *ntree; - Tex *tex; - ModifierData *md; - ParticleSystem *psys; - - /* unless the file was created 2.44.3 but not 2.45, update the constraints */ - if (!(bmain->versionfile == 244 && bmain->subversionfile == 3) && - ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile == 0)) ) - { - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - ListBase *list; - list = &ob->constraints; - - /* fix up constraints due to constraint recode changes (originally at 2.44.3) */ - if (list) { - bConstraint *curcon; - for (curcon = list->first; curcon; curcon = curcon->next) { - /* old CONSTRAINT_LOCAL check -> convert to CONSTRAINT_SPACE_LOCAL */ - if (curcon->flag & 0x20) { - curcon->ownspace = CONSTRAINT_SPACE_LOCAL; - curcon->tarspace = CONSTRAINT_SPACE_LOCAL; - } - - switch (curcon->type) { - case CONSTRAINT_TYPE_LOCLIMIT: - { - bLocLimitConstraint *data = (bLocLimitConstraint *)curcon->data; - - /* old limit without parent option for objects */ - if (data->flag2) - curcon->ownspace = CONSTRAINT_SPACE_LOCAL; - break; - } - } - } - } - - /* correctly initialize constinv matrix */ - unit_m4(ob->constinv); - - if (ob->type == OB_ARMATURE) { - if (ob->pose) { - bConstraint *curcon; - bPoseChannel *pchan; - - for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { - /* make sure constraints are all up to date */ - for (curcon = pchan->constraints.first; curcon; curcon = curcon->next) { - /* old CONSTRAINT_LOCAL check -> convert to CONSTRAINT_SPACE_LOCAL */ - if (curcon->flag & 0x20) { - curcon->ownspace = CONSTRAINT_SPACE_LOCAL; - curcon->tarspace = CONSTRAINT_SPACE_LOCAL; - } - - switch (curcon->type) { - case CONSTRAINT_TYPE_ACTION: - { - bActionConstraint *data = (bActionConstraint *)curcon->data; - - /* 'data->local' used to mean that target was in local-space */ - if (data->local) - curcon->tarspace = CONSTRAINT_SPACE_LOCAL; - break; - } - } - } - - /* correctly initialize constinv matrix */ - unit_m4(pchan->constinv); - } - } - } - } - } - - /* fix all versions before 2.45 */ - if (bmain->versionfile != 245) { - - /* repair preview from 242 - 244*/ - for (ima = bmain->images.first; ima; ima = ima->id.next) { - ima->preview = NULL; - } - } - - /* add point caches */ - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - if (ob->soft && !ob->soft->pointcache) - ob->soft->pointcache = BKE_ptcache_add(&ob->soft->ptcaches); - - for (psys = ob->particlesystem.first; psys; psys = psys->next) { - if (psys->pointcache) { - if (psys->pointcache->flag & PTCACHE_BAKED && (psys->pointcache->flag & PTCACHE_DISK_CACHE) == 0) { - printf("Old memory cache isn't supported for particles, so re-bake the simulation!\n"); - psys->pointcache->flag &= ~PTCACHE_BAKED; - } - } - else - psys->pointcache = BKE_ptcache_add(&psys->ptcaches); - } - - for (md = ob->modifiers.first; md; md = md->next) { - if (md->type == eModifierType_Cloth) { - ClothModifierData *clmd = (ClothModifierData *)md; - if (!clmd->point_cache) { - clmd->point_cache = BKE_ptcache_add(&clmd->ptcaches); - clmd->point_cache->step = 1; - } - } - } - } - - /* Copy over old per-level multires vertex data - * into a single vertex array in struct Multires */ - for (me = bmain->meshes.first; me; me = me->id.next) { - if (me->mr && !me->mr->verts) { - MultiresLevel *lvl = me->mr->levels.last; - if (lvl) { - me->mr->verts = lvl->verts; - lvl->verts = NULL; - /* Don't need the other vert arrays */ - for (lvl = lvl->prev; lvl; lvl = lvl->prev) { - MEM_freeN(lvl->verts); - lvl->verts = NULL; - } - } - } - } - - if (bmain->versionfile != 245 || bmain->subversionfile < 1) { - for (la = bmain->lights.first; la; la = la->id.next) { - la->falloff_type = LA_FALLOFF_INVLINEAR; - - if (la->curfalloff == NULL) { - la->curfalloff = curvemapping_add(1, 0.0f, 1.0f, 1.0f, 0.0f); - curvemapping_initialize(la->curfalloff); - } - } - } - - for (ma = bmain->materials.first; ma; ma = ma->id.next) { - if (ma->gloss_mir == 0.0f) { - ma->gloss_mir = 1.0f; - } - } - - for (part = bmain->particles.first; part; part = part->id.next) { - if (part->ren_child_nbr == 0) - part->ren_child_nbr = part->child_nbr; - } - - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - if (sce->nodetree) - ntree_version_245(fd, lib, sce->nodetree); - - if (sce->r.simplify_subsurf == 0) { - sce->r.simplify_subsurf = 6; - sce->r.simplify_particles = 1.0f; - } - } - - for (ntree = bmain->nodetrees.first; ntree; ntree = ntree->id.next) - ntree_version_245(fd, lib, ntree); - - /* fix for temporary flag changes during 245 cycle */ - for (ima = bmain->images.first; ima; ima = ima->id.next) { - if (ima->flag & IMA_OLD_PREMUL) { - ima->flag &= ~IMA_OLD_PREMUL; - ima->alpha_mode = IMA_ALPHA_STRAIGHT; - } - } - - for (tex = bmain->textures.first; tex; tex = tex->id.next) { - if (tex->iuser.flag & IMA_OLD_PREMUL) { - tex->iuser.flag &= ~IMA_OLD_PREMUL; - } - - ima = blo_do_versions_newlibadr(fd, lib, tex->ima); - if (ima && (tex->iuser.flag & IMA_DO_PREMUL)) { - ima->flag &= ~IMA_OLD_PREMUL; - ima->alpha_mode = IMA_ALPHA_STRAIGHT; - } - } - } - - if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 2)) { - Image *ima; - - /* initialize 1:1 Aspect */ - for (ima = bmain->images.first; ima; ima = ima->id.next) { - ima->aspx = ima->aspy = 1.0f; - } - } - - if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 4)) { - bArmature *arm; - ModifierData *md; - Object *ob; - - for (arm = bmain->armatures.first; arm; arm = arm->id.next) - arm->deformflag |= ARM_DEF_B_BONE_REST; - - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - for (md = ob->modifiers.first; md; md = md->next) { - if (md->type == eModifierType_Armature) - ((ArmatureModifierData *)md)->deformflag |= ARM_DEF_B_BONE_REST; - } - } - } - - if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 5)) { - /* foreground color needs to be something other then black */ - Scene *sce; - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - sce->r.fg_stamp[0] = sce->r.fg_stamp[1] = sce->r.fg_stamp[2] = 0.8f; - sce->r.fg_stamp[3] = 1.0f; /* don't use text alpha yet */ - sce->r.bg_stamp[3] = 0.25f; /* make sure the background has full alpha */ - } - } - - - if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 6)) { - Scene *sce; - /* fix frs_sec_base */ - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - if (sce->r.frs_sec_base == 0) { - sce->r.frs_sec_base = 1; - } - } - } - - if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 7)) { - Object *ob; - bPoseChannel *pchan; - - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - if (ob->pose) { - for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { - do_version_constraints_245(&pchan->constraints); - } - } - do_version_constraints_245(&ob->constraints); - - if (ob->soft && ob->soft->keys) { - SoftBody *sb = ob->soft; - int k; - - for (k = 0; k < sb->totkey; k++) { - if (sb->keys[k]) - MEM_freeN(sb->keys[k]); - } - - MEM_freeN(sb->keys); - - sb->keys = NULL; - sb->totkey = 0; - } - } - } - - if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 8)) { - Scene *sce; - Object *ob; - PartEff *paf = NULL; - - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - if (ob->soft && ob->soft->keys) { - SoftBody *sb = ob->soft; - int k; - - for (k = 0; k < sb->totkey; k++) { - if (sb->keys[k]) - MEM_freeN(sb->keys[k]); - } - - MEM_freeN(sb->keys); - - sb->keys = NULL; - sb->totkey = 0; - } - - /* convert old particles to new system */ - if ((paf = blo_do_version_give_parteff_245(ob))) { - ParticleSystem *psys; - ModifierData *md; - ParticleSystemModifierData *psmd; - ParticleSettings *part; - - /* create new particle system */ - psys = MEM_callocN(sizeof(ParticleSystem), "particle_system"); - psys->pointcache = BKE_ptcache_add(&psys->ptcaches); - - part = psys->part = BKE_particlesettings_add(bmain, "ParticleSettings"); - - /* needed for proper libdata lookup */ - blo_do_versions_oldnewmap_insert(fd->libmap, psys->part, psys->part, 0); - part->id.lib = ob->id.lib; - - part->id.us--; - part->id.tag |= (ob->id.tag & LIB_TAG_NEED_LINK); - - psys->totpart = 0; - psys->flag = PSYS_CURRENT; - - BLI_addtail(&ob->particlesystem, psys); - - md = modifier_new(eModifierType_ParticleSystem); - BLI_snprintf(md->name, sizeof(md->name), "ParticleSystem %i", BLI_listbase_count(&ob->particlesystem)); - psmd = (ParticleSystemModifierData *)md; - psmd->psys = psys; - BLI_addtail(&ob->modifiers, md); - - /* convert settings from old particle system */ - /* general settings */ - part->totpart = MIN2(paf->totpart, 100000); - part->sta = paf->sta; - part->end = paf->end; - part->lifetime = paf->lifetime; - part->randlife = paf->randlife; - psys->seed = paf->seed; - part->disp = paf->disp; - part->omat = paf->mat[0]; - part->hair_step = paf->totkey; - - part->eff_group = paf->group; - - /* old system didn't interpolate between keypoints at render time */ - part->draw_step = part->ren_step = 0; - - /* physics */ - part->normfac = paf->normfac * 25.0f; - part->obfac = paf->obfac; - part->randfac = paf->randfac * 25.0f; - part->dampfac = paf->damp; - copy_v3_v3(part->acc, paf->force); - - /* flags */ - if (paf->stype & PAF_VECT) { - if (paf->flag & PAF_STATIC) { - /* new hair lifetime is always 100.0f */ - float fac = paf->lifetime / 100.0f; - - part->draw_as = PART_DRAW_PATH; - part->type = PART_HAIR; - psys->recalc |= ID_RECALC_PSYS_REDO; - - part->normfac *= fac; - part->randfac *= fac; - } - else { - part->draw_as = PART_DRAW_LINE; - part->draw |= PART_DRAW_VEL_LENGTH; - part->draw_line[1] = 0.04f; - } - } - - part->rotmode = PART_ROT_VEL; - - part->flag |= (paf->flag & PAF_BSPLINE) ? PART_HAIR_BSPLINE : 0; - part->flag |= (paf->flag & PAF_TRAND) ? PART_TRAND : 0; - part->flag |= (paf->flag & PAF_EDISTR) ? PART_EDISTR : 0; - part->flag |= (paf->flag & PAF_UNBORN) ? PART_UNBORN : 0; - part->flag |= (paf->flag & PAF_DIED) ? PART_DIED : 0; - part->from |= (paf->flag & PAF_FACE) ? PART_FROM_FACE : 0; - part->draw |= (paf->flag & PAF_SHOWE) ? PART_DRAW_EMITTER : 0; - - psys->vgroup[PSYS_VG_DENSITY] = paf->vertgroup; - psys->vgroup[PSYS_VG_VEL] = paf->vertgroup_v; - psys->vgroup[PSYS_VG_LENGTH] = paf->vertgroup_v; - - /* dupliobjects */ - if (ob->transflag & OB_DUPLIVERTS) { - Object *dup = bmain->objects.first; - - for (; dup; dup = dup->id.next) { - if (ob == blo_do_versions_newlibadr(fd, lib, dup->parent)) { - part->instance_object = dup; - ob->transflag |= OB_DUPLIPARTS; - ob->transflag &= ~OB_DUPLIVERTS; - - part->draw_as = PART_DRAW_OB; - - /* needed for proper libdata lookup */ - blo_do_versions_oldnewmap_insert(fd->libmap, dup, dup, 0); - } - } - } - - { - FluidsimModifierData *fluidmd = (FluidsimModifierData *)modifiers_findByType(ob, eModifierType_Fluidsim); - if (fluidmd && fluidmd->fss && fluidmd->fss->type == OB_FLUIDSIM_PARTICLE) - part->type = PART_FLUID; - } - - do_version_free_effects_245(&ob->effect); - - printf("Old particle system converted to new system.\n"); - } - } - - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - ParticleEditSettings *pset = &sce->toolsettings->particle; - int a; - - if (pset->brush[0].size == 0) { - pset->flag = PE_KEEP_LENGTHS | PE_LOCK_FIRST | PE_DEFLECT_EMITTER; - pset->emitterdist = 0.25f; - pset->totrekey = 5; - pset->totaddkey = 5; - - for (a = 0; a < ARRAY_SIZE(pset->brush); a++) { - pset->brush[a].strength = 50; - pset->brush[a].size = 50; - pset->brush[a].step = 10; - } - - pset->brush[PE_BRUSH_CUT].strength = 100; - } - } - } - - if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 10)) { - Object *ob; - - /* dupliface scale */ - for (ob = bmain->objects.first; ob; ob = ob->id.next) - ob->instance_faces_scale = 1.0f; - } - - if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 11)) { - Object *ob; - bActionStrip *strip; - - /* nla-strips - scale */ - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - for (strip = ob->nlastrips.first; strip; strip = strip->next) { - float length, actlength, repeat; - - if (strip->flag & ACTSTRIP_USESTRIDE) - repeat = 1.0f; - else - repeat = strip->repeat; - - length = strip->end - strip->start; - if (length == 0.0f) - length = 1.0f; - actlength = strip->actend - strip->actstart; - - strip->scale = length / (repeat * actlength); - if (strip->scale == 0.0f) - strip->scale = 1.0f; - } - if (ob->soft) { - ob->soft->inpush = ob->soft->inspring; - ob->soft->shearstiff = 1.0f; - } - } - } - - if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 14)) { - Scene *sce; - Sequence *seq; - - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - SEQ_BEGIN (sce->ed, seq) - { - if (seq->blend_mode == 0) - seq->blend_opacity = 100.0f; - } SEQ_END; - } - } - - /* fix broken group lengths in id properties */ - if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 15)) { - idproperties_fix_group_lengths(bmain->scenes); - idproperties_fix_group_lengths(bmain->libraries); - idproperties_fix_group_lengths(bmain->objects); - idproperties_fix_group_lengths(bmain->meshes); - idproperties_fix_group_lengths(bmain->curves); - idproperties_fix_group_lengths(bmain->metaballs); - idproperties_fix_group_lengths(bmain->materials); - idproperties_fix_group_lengths(bmain->textures); - idproperties_fix_group_lengths(bmain->images); - idproperties_fix_group_lengths(bmain->lattices); - idproperties_fix_group_lengths(bmain->lights); - idproperties_fix_group_lengths(bmain->cameras); - idproperties_fix_group_lengths(bmain->ipo); - idproperties_fix_group_lengths(bmain->shapekeys); - idproperties_fix_group_lengths(bmain->worlds); - idproperties_fix_group_lengths(bmain->screens); - idproperties_fix_group_lengths(bmain->fonts); - idproperties_fix_group_lengths(bmain->texts); - idproperties_fix_group_lengths(bmain->sounds); - idproperties_fix_group_lengths(bmain->collections); - idproperties_fix_group_lengths(bmain->armatures); - idproperties_fix_group_lengths(bmain->actions); - idproperties_fix_group_lengths(bmain->nodetrees); - idproperties_fix_group_lengths(bmain->brushes); - idproperties_fix_group_lengths(bmain->particles); - } - - /* convert fluids to modifier */ - if (bmain->versionfile < 246 || (bmain->versionfile == 246 && bmain->subversionfile < 1)) { - Object *ob; - - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - if (ob->fluidsimSettings) { - FluidsimModifierData *fluidmd = (FluidsimModifierData *)modifier_new(eModifierType_Fluidsim); - BLI_addhead(&ob->modifiers, (ModifierData *)fluidmd); - - MEM_freeN(fluidmd->fss); - fluidmd->fss = MEM_dupallocN(ob->fluidsimSettings); - fluidmd->fss->ipo = blo_do_versions_newlibadr_us(fd, ob->id.lib, ob->fluidsimSettings->ipo); - MEM_freeN(ob->fluidsimSettings); - - fluidmd->fss->lastgoodframe = INT_MAX; - fluidmd->fss->flag = 0; - fluidmd->fss->meshVelocities = NULL; - } - } - } - - if (bmain->versionfile < 246 || (bmain->versionfile == 246 && bmain->subversionfile < 1)) { - Object *ob; - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - if (ob->pd && (ob->pd->forcefield == PFIELD_WIND)) - ob->pd->f_noise = 0.0f; - } - } - - /* set the curve radius interpolation to 2.47 default - easy */ - if (bmain->versionfile < 247 || (bmain->versionfile == 247 && bmain->subversionfile < 6)) { - Curve *cu; - Nurb *nu; - - for (cu = bmain->curves.first; cu; cu = cu->id.next) { - for (nu = cu->nurb.first; nu; nu = nu->next) { - if (nu) { - nu->radius_interp = 3; - - /* resolu and resolv are now used differently for surfaces - * rather than using the resolution to define the entire number of divisions, - * use it for the number of divisions per segment - */ - if (nu->pntsv > 1) { - nu->resolu = MAX2(1, (int)(((float)nu->resolu / (float)nu->pntsu) + 0.5f) ); - nu->resolv = MAX2(1, (int)(((float)nu->resolv / (float)nu->pntsv) + 0.5f) ); - } - } - } - } - } - - if (bmain->versionfile < 248 || (bmain->versionfile == 248 && bmain->subversionfile < 2)) { - Scene *sce; - - /* Note, these will need to be added for painting */ - for (sce = bmain->scenes.first; sce; sce = sce->id.next) { - sce->toolsettings->imapaint.seam_bleed = 2; - sce->toolsettings->imapaint.normal_angle = 80; - } - } - - if (bmain->versionfile < 248 || (bmain->versionfile == 248 && bmain->subversionfile < 3)) { - bScreen *sc; - - /* adjust default settings for Animation Editors */ - for (sc = bmain->screens.first; sc; sc = sc->id.next) { - ScrArea *sa; - - for (sa = sc->areabase.first; sa; sa = sa->next) { - SpaceLink *sl; - - for (sl = sa->spacedata.first; sl; sl = sl->next) { - switch (sl->spacetype) { - case SPACE_ACTION: - { - SpaceAction *sact = (SpaceAction *)sl; - - sact->mode = SACTCONT_DOPESHEET; - sact->autosnap = SACTSNAP_FRAME; - break; - } - case SPACE_GRAPH: - { - SpaceGraph *sipo = (SpaceGraph *)sl; - sipo->autosnap = SACTSNAP_FRAME; - break; - } - case SPACE_NLA: - { - SpaceNla *snla = (SpaceNla *)sl; - snla->autosnap = SACTSNAP_FRAME; - break; - } - } - } - } - } - } - - /* correct introduce of seed for wind force */ - if (bmain->versionfile < 249 && bmain->subversionfile < 1) { - Object *ob; - for (ob = bmain->objects.first; ob; ob = ob->id.next) { - if (ob->pd) - ob->pd->seed = ((uint)(ceil(PIL_check_seconds_timer())) + 1) % 128; - } - - } - - if (bmain->versionfile < 249 && bmain->subversionfile < 2) { - Scene *sce = bmain->scenes.first; - Sequence *seq; - Editing *ed; - - while (sce) { - ed = sce->ed; - if (ed) { - SEQP_BEGIN (ed, seq) - { - if (seq->strip && seq->strip->proxy) { - seq->strip->proxy->quality = 90; - } - } SEQ_END; - } - - sce = sce->id.next; - } - } + /* WATCH IT!!!: pointers from libdata have not been converted */ + + if (bmain->versionfile == 100) { + /* tex->extend and tex->imageflag have changed: */ + Tex *tex = bmain->textures.first; + while (tex) { + if (tex->id.tag & LIB_TAG_NEED_LINK) { + + if (tex->extend == 0) { + if (tex->xrepeat || tex->yrepeat) { + tex->extend = TEX_REPEAT; + } + else { + tex->extend = TEX_EXTEND; + tex->xrepeat = tex->yrepeat = 1; + } + } + } + tex = tex->id.next; + } + } + + if (bmain->versionfile <= 101) { + /* frame mapping */ + Scene *sce = bmain->scenes.first; + while (sce) { + sce->r.framapto = 100; + sce->r.images = 100; + sce->r.framelen = 1.0; + sce = sce->id.next; + } + } + + if (bmain->versionfile <= 103) { + /* new variable in object: colbits */ + Object *ob = bmain->objects.first; + int a; + while (ob) { + ob->colbits = 0; + if (ob->totcol) { + for (a = 0; a < ob->totcol; a++) { + if (ob->mat[a]) + ob->colbits |= (1 << a); + } + } + ob = ob->id.next; + } + } + + if (bmain->versionfile <= 104) { + /* timeoffs moved */ + Object *ob = bmain->objects.first; + while (ob) { + if (ob->transflag & 1) { + ob->transflag -= 1; + } + ob = ob->id.next; + } + } + + if (bmain->versionfile <= 106) { + /* mcol changed */ + Mesh *me = bmain->meshes.first; + while (me) { + if (me->mcol) + vcol_to_fcol(me); + me = me->id.next; + } + } + + if (bmain->versionfile <= 107) { + Object *ob; + ob = bmain->objects.first; + while (ob) { + if (ob->dt == 0) + ob->dt = OB_SOLID; + ob = ob->id.next; + } + } + + if (bmain->versionfile <= 109) { + /* new variable: gridlines */ + bScreen *sc = bmain->screens.first; + while (sc) { + ScrArea *sa = sc->areabase.first; + while (sa) { + SpaceLink *sl = sa->spacedata.first; + while (sl) { + if (sl->spacetype == SPACE_VIEW3D) { + View3D *v3d = (View3D *)sl; + + if (v3d->gridlines == 0) + v3d->gridlines = 20; + } + sl = sl->next; + } + sa = sa->next; + } + sc = sc->id.next; + } + } + + if (bmain->versionfile <= 134) { + Tex *tex = bmain->textures.first; + while (tex) { + if ((tex->rfac == 0.0f) && (tex->gfac == 0.0f) && (tex->bfac == 0.0f)) { + tex->rfac = 1.0f; + tex->gfac = 1.0f; + tex->bfac = 1.0f; + tex->filtersize = 1.0f; + } + tex = tex->id.next; + } + } + + if (bmain->versionfile <= 140) { + /* r-g-b-fac in texture */ + Tex *tex = bmain->textures.first; + while (tex) { + if ((tex->rfac == 0.0f) && (tex->gfac == 0.0f) && (tex->bfac == 0.0f)) { + tex->rfac = 1.0f; + tex->gfac = 1.0f; + tex->bfac = 1.0f; + tex->filtersize = 1.0f; + } + tex = tex->id.next; + } + } + + if (bmain->versionfile <= 153) { + Scene *sce = bmain->scenes.first; + while (sce) { + if (sce->r.blurfac == 0.0f) + sce->r.blurfac = 1.0f; + sce = sce->id.next; + } + } + + if (bmain->versionfile <= 163) { + Scene *sce = bmain->scenes.first; + while (sce) { + if (sce->r.frs_sec == 0) + sce->r.frs_sec = 25; + sce = sce->id.next; + } + } + + if (bmain->versionfile <= 164) { + Mesh *me = bmain->meshes.first; + while (me) { + me->smoothresh = 30; + me = me->id.next; + } + } + + if (bmain->versionfile <= 165) { + Mesh *me = bmain->meshes.first; + TFace *tface; + int nr; + char *cp; + + while (me) { + if (me->tface) { + nr = me->totface; + tface = me->tface; + while (nr--) { + int j; + for (j = 0; j < 4; j++) { + int k; + cp = ((char *)&tface->col[j]) + 1; + for (k = 0; k < 3; k++) { + cp[k] = (cp[k] > 126) ? 255 : cp[k] * 2; + } + } + + tface++; + } + } + me = me->id.next; + } + } + + if (bmain->versionfile <= 169) { + Mesh *me = bmain->meshes.first; + while (me) { + if (me->subdiv == 0) + me->subdiv = 1; + me = me->id.next; + } + } + + if (bmain->versionfile <= 169) { + bScreen *sc = bmain->screens.first; + while (sc) { + ScrArea *sa = sc->areabase.first; + while (sa) { + SpaceLink *sl = sa->spacedata.first; + while (sl) { + if (sl->spacetype == SPACE_GRAPH) { + SpaceGraph *sipo = (SpaceGraph *)sl; + sipo->v2d.max[0] = 15000.0; + } + sl = sl->next; + } + sa = sa->next; + } + sc = sc->id.next; + } + } + + if (bmain->versionfile <= 170) { + Object *ob = bmain->objects.first; + PartEff *paf; + while (ob) { + paf = blo_do_version_give_parteff_245(ob); + if (paf) { + if (paf->staticstep == 0) { + paf->staticstep = 5; + } + } + ob = ob->id.next; + } + } + + if (bmain->versionfile <= 171) { + bScreen *sc = bmain->screens.first; + while (sc) { + ScrArea *sa = sc->areabase.first; + while (sa) { + SpaceLink *sl = sa->spacedata.first; + while (sl) { + if (sl->spacetype == SPACE_TEXT) { + SpaceText *st = (SpaceText *)sl; + st->lheight = 12; + } + sl = sl->next; + } + sa = sa->next; + } + sc = sc->id.next; + } + } + + if (bmain->versionfile <= 173) { + int a, b; + Mesh *me = bmain->meshes.first; + while (me) { + if (me->tface) { + TFace *tface = me->tface; + for (a = 0; a < me->totface; a++, tface++) { + for (b = 0; b < 4; b++) { + tface->uv[b][0] /= 32767.0f; + tface->uv[b][1] /= 32767.0f; + } + } + } + me = me->id.next; + } + } + + if (bmain->versionfile <= 204) { + bSound *sound; + + sound = bmain->sounds.first; + while (sound) { + if (sound->volume < 0.01f) { + sound->volume = 1.0f; + } + sound = sound->id.next; + } + } + + if (bmain->versionfile <= 212) { + bSound *sound; + Mesh *me; + + sound = bmain->sounds.first; + while (sound) { + sound->max_gain = 1.0; + sound->min_gain = 0.0; + sound->distance = 1.0; + + if (sound->attenuation > 0.0f) + sound->flags |= SOUND_FLAGS_3D; + else + sound->flags &= ~SOUND_FLAGS_3D; + + sound = sound->id.next; + } + + /* me->subdiv changed to reflect the actual reparametization + * better, and smeshes were removed - if it was a smesh make + * it a subsurf, and reset the subdiv level because subsurf + * takes a lot more work to calculate. + */ + for (me = bmain->meshes.first; me; me = me->id.next) { + enum { + ME_SMESH = (1 << 6), + ME_SUBSURF = (1 << 7), + }; + if (me->flag & ME_SMESH) { + me->flag &= ~ME_SMESH; + me->flag |= ME_SUBSURF; + + me->subdiv = 1; + } + else { + if (me->subdiv < 2) + me->subdiv = 1; + else + me->subdiv--; + } + } + } + + if (bmain->versionfile <= 220) { + Mesh *me; + + /* Began using alpha component of vertex colors, but + * old file vertex colors are undefined, reset them + * to be fully opaque. -zr + */ + for (me = bmain->meshes.first; me; me = me->id.next) { + if (me->mcol) { + int i; + + for (i = 0; i < me->totface * 4; i++) { + MCol *mcol = &me->mcol[i]; + mcol->a = 255; + } + } + if (me->tface) { + int i, j; + + for (i = 0; i < me->totface; i++) { + TFace *tf = &((TFace *)me->tface)[i]; + + for (j = 0; j < 4; j++) { + char *col = (char *)&tf->col[j]; + + col[0] = 255; + } + } + } + } + } + + if (bmain->versionfile <= 223) { + VFont *vf; + for (vf = bmain->fonts.first; vf; vf = vf->id.next) { + if (STREQ(vf->name + strlen(vf->name) - 6, ".Bfont")) { + strcpy(vf->name, FO_BUILTIN_NAME); + } + } + } + + if (bmain->versionfile <= 224) { + bSound *sound; + Scene *sce; + Mesh *me; + bScreen *sc; + + for (sound = bmain->sounds.first; sound; sound = sound->id.next) { + if (sound->packedfile) { + if (sound->newpackedfile == NULL) { + sound->newpackedfile = sound->packedfile; + } + sound->packedfile = NULL; + } + } + /* Make sure that old subsurf meshes don't have zero subdivision level for rendering */ + for (me = bmain->meshes.first; me; me = me->id.next) { + enum { ME_SUBSURF = (1 << 7) }; + if ((me->flag & ME_SUBSURF) && (me->subdivr == 0)) { + me->subdivr = me->subdiv; + } + } + + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + sce->r.stereomode = 1; // no stereo + } + + /* some oldfile patch, moved from set_func_space */ + for (sc = bmain->screens.first; sc; sc = sc->id.next) { + ScrArea *sa; + + for (sa = sc->areabase.first; sa; sa = sa->next) { + SpaceLink *sl; + + for (sl = sa->spacedata.first; sl; sl = sl->next) { + if (sl->spacetype == SPACE_GRAPH) { + SpaceSeq *sseq = (SpaceSeq *)sl; + sseq->v2d.keeptot = 0; + } + } + } + } + } + + if (bmain->versionfile <= 227) { + Scene *sce; + bScreen *sc; + Object *ob; + + /* As of now, this insures that the transition from the old Track system + * to the new full constraint Track is painless for everyone. - theeth + */ + ob = bmain->objects.first; + + while (ob) { + ListBase *list; + list = &ob->constraints; + + /* check for already existing TrackTo constraint + * set their track and up flag correctly + */ + + if (list) { + bConstraint *curcon; + for (curcon = list->first; curcon; curcon = curcon->next) { + if (curcon->type == CONSTRAINT_TYPE_TRACKTO) { + bTrackToConstraint *data = curcon->data; + data->reserved1 = ob->trackflag; + data->reserved2 = ob->upflag; + } + } + } + + if (ob->type == OB_ARMATURE) { + if (ob->pose) { + bConstraint *curcon; + bPoseChannel *pchan; + for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { + for (curcon = pchan->constraints.first; curcon; curcon = curcon->next) { + if (curcon->type == CONSTRAINT_TYPE_TRACKTO) { + bTrackToConstraint *data = curcon->data; + data->reserved1 = ob->trackflag; + data->reserved2 = ob->upflag; + } + } + } + } + } + + /* Change Ob->Track in real TrackTo constraint */ + blo_do_version_old_trackto_to_constraints(ob); + + ob = ob->id.next; + } + + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + sce->audio.mixrate = 48000; + sce->audio.flag |= AUDIO_SCRUB; + } + + /* patch for old wrong max view2d settings, allows zooming out more */ + for (sc = bmain->screens.first; sc; sc = sc->id.next) { + ScrArea *sa; + + for (sa = sc->areabase.first; sa; sa = sa->next) { + SpaceLink *sl; + + for (sl = sa->spacedata.first; sl; sl = sl->next) { + if (sl->spacetype == SPACE_ACTION) { + SpaceAction *sac = (SpaceAction *)sl; + sac->v2d.max[0] = 32000; + } + else if (sl->spacetype == SPACE_NLA) { + SpaceNla *sla = (SpaceNla *)sl; + sla->v2d.max[0] = 32000; + } + } + } + } + } + + if (bmain->versionfile <= 228) { + bScreen *sc; + Object *ob; + + /* As of now, this insures that the transition from the old Track system + * to the new full constraint Track is painless for everyone. + */ + ob = bmain->objects.first; + + while (ob) { + ListBase *list; + list = &ob->constraints; + + /* check for already existing TrackTo constraint + * set their track and up flag correctly */ + + if (list) { + bConstraint *curcon; + for (curcon = list->first; curcon; curcon = curcon->next) { + if (curcon->type == CONSTRAINT_TYPE_TRACKTO) { + bTrackToConstraint *data = curcon->data; + data->reserved1 = ob->trackflag; + data->reserved2 = ob->upflag; + } + } + } + + if (ob->type == OB_ARMATURE) { + if (ob->pose) { + bConstraint *curcon; + bPoseChannel *pchan; + for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { + for (curcon = pchan->constraints.first; curcon; curcon = curcon->next) { + if (curcon->type == CONSTRAINT_TYPE_TRACKTO) { + bTrackToConstraint *data = curcon->data; + data->reserved1 = ob->trackflag; + data->reserved2 = ob->upflag; + } + } + } + } + } + + ob = ob->id.next; + } + + /* convert old mainb values for new button panels */ + for (sc = bmain->screens.first; sc; sc = sc->id.next) { + ScrArea *sa; + + for (sa = sc->areabase.first; sa; sa = sa->next) { + SpaceLink *sl; + + for (sl = sa->spacedata.first; sl; sl = sl->next) { + if (sl->spacetype == SPACE_PROPERTIES) { + SpaceProperties *sbuts = (SpaceProperties *)sl; + + sbuts->v2d.maxzoom = 1.2f; + + if (sbuts->mainb == BUTS_LAMP) { + sbuts->mainb = CONTEXT_SHADING; + //sbuts->tab[CONTEXT_SHADING] = TAB_SHADING_LAMP; + } + else if (sbuts->mainb == BUTS_MAT) { + sbuts->mainb = CONTEXT_SHADING; + //sbuts->tab[CONTEXT_SHADING] = TAB_SHADING_MAT; + } + else if (sbuts->mainb == BUTS_TEX) { + sbuts->mainb = CONTEXT_SHADING; + //sbuts->tab[CONTEXT_SHADING] = TAB_SHADING_TEX; + } + else if (sbuts->mainb == BUTS_ANIM) { + sbuts->mainb = CONTEXT_OBJECT; + } + else if (sbuts->mainb == BUTS_WORLD) { + sbuts->mainb = CONTEXT_SCENE; + //sbuts->tab[CONTEXT_SCENE] = TAB_SCENE_WORLD; + } + else if (sbuts->mainb == BUTS_RENDER) { + sbuts->mainb = CONTEXT_SCENE; + //sbuts->tab[CONTEXT_SCENE] = TAB_SCENE_RENDER; + } + else if (sbuts->mainb == BUTS_FPAINT) { + sbuts->mainb = CONTEXT_EDITING; + } + else if (sbuts->mainb == BUTS_RADIO) { + sbuts->mainb = CONTEXT_SHADING; + //sbuts->tab[CONTEXT_SHADING] = TAB_SHADING_RAD; + } + else if (sbuts->mainb == BUTS_CONSTRAINT) { + sbuts->mainb = CONTEXT_OBJECT; + } + else if (sbuts->mainb == BUTS_SCRIPT) { + sbuts->mainb = CONTEXT_OBJECT; + } + else if (sbuts->mainb == BUTS_EDIT) { + sbuts->mainb = CONTEXT_EDITING; + } + else { + sbuts->mainb = CONTEXT_SCENE; + } + } + } + } + } + } + + /* ton: made this 230 instead of 229, + * to be sure (tuho files) and this is a reliable check anyway + * nevertheless, we might need to think over a fitness (initialize) + * check apart from the do_versions() + */ + + if (bmain->versionfile <= 230) { + bScreen *sc; + + /* new variable blockscale, for panels in any area */ + for (sc = bmain->screens.first; sc; sc = sc->id.next) { + ScrArea *sa; + + for (sa = sc->areabase.first; sa; sa = sa->next) { + SpaceLink *sl; + + for (sl = sa->spacedata.first; sl; sl = sl->next) { + /* added: 5x better zoom in for action */ + if (sl->spacetype == SPACE_ACTION) { + SpaceAction *sac = (SpaceAction *)sl; + sac->v2d.maxzoom = 50; + } + } + } + } + } + + if (bmain->versionfile <= 231) { + bScreen *sc = bmain->screens.first; + + /* new bit flags for showing/hiding grid floor and axes */ + + while (sc) { + ScrArea *sa = sc->areabase.first; + while (sa) { + SpaceLink *sl = sa->spacedata.first; + while (sl) { + if (sl->spacetype == SPACE_VIEW3D) { + View3D *v3d = (View3D *)sl; + + if (v3d->gridflag == 0) { + v3d->gridflag |= V3D_SHOW_X; + v3d->gridflag |= V3D_SHOW_Y; + v3d->gridflag |= V3D_SHOW_FLOOR; + v3d->gridflag &= ~V3D_SHOW_Z; + } + } + sl = sl->next; + } + sa = sa->next; + } + sc = sc->id.next; + } + } + + if (bmain->versionfile <= 232) { + Tex *tex = bmain->textures.first; + World *wrld = bmain->worlds.first; + bScreen *sc; + + while (tex) { + if ((tex->flag & (TEX_CHECKER_ODD + TEX_CHECKER_EVEN)) == 0) { + tex->flag |= TEX_CHECKER_ODD; + } + /* copied from kernel texture.c */ + if (tex->ns_outscale == 0.0f) { + /* musgrave */ + tex->mg_H = 1.0f; + tex->mg_lacunarity = 2.0f; + tex->mg_octaves = 2.0f; + tex->mg_offset = 1.0f; + tex->mg_gain = 1.0f; + tex->ns_outscale = 1.0f; + /* distnoise */ + tex->dist_amount = 1.0f; + /* voronoi */ + tex->vn_w1 = 1.0f; + tex->vn_mexp = 2.5f; + } + tex = tex->id.next; + } + + while (wrld) { + if (wrld->aodist == 0.0f) { + wrld->aodist = 10.0f; + } + if (wrld->aoenergy == 0.0f) + wrld->aoenergy = 1.0f; + wrld = wrld->id.next; + } + + /* new variable blockscale, for panels in any area, do again because new + * areas didnt initialize it to 0.7 yet + */ + for (sc = bmain->screens.first; sc; sc = sc->id.next) { + ScrArea *sa; + for (sa = sc->areabase.first; sa; sa = sa->next) { + SpaceLink *sl; + for (sl = sa->spacedata.first; sl; sl = sl->next) { + /* added: 5x better zoom in for nla */ + if (sl->spacetype == SPACE_NLA) { + SpaceNla *snla = (SpaceNla *)sl; + snla->v2d.maxzoom = 50; + } + } + } + } + } + + if (bmain->versionfile <= 233) { + bScreen *sc; + + for (sc = bmain->screens.first; sc; sc = sc->id.next) { + ScrArea *sa; + for (sa = sc->areabase.first; sa; sa = sa->next) { + SpaceLink *sl; + for (sl = sa->spacedata.first; sl; sl = sl->next) { + if (sl->spacetype == SPACE_VIEW3D) { + View3D *v3d = (View3D *)sl; + v3d->flag |= V3D_SELECT_OUTLINE; + } + } + } + } + } + + if (bmain->versionfile <= 234) { + bScreen *sc; + + for (sc = bmain->screens.first; sc; sc = sc->id.next) { + ScrArea *sa; + for (sa = sc->areabase.first; sa; sa = sa->next) { + SpaceLink *sl; + for (sl = sa->spacedata.first; sl; sl = sl->next) { + if (sl->spacetype == SPACE_TEXT) { + SpaceText *st = (SpaceText *)sl; + if (st->tabnumber == 0) + st->tabnumber = 2; + } + } + } + } + } + + if (bmain->versionfile <= 235) { + Tex *tex = bmain->textures.first; + Scene *sce = bmain->scenes.first; + Sequence *seq; + Editing *ed; + + while (tex) { + if (tex->nabla == 0.0f) + tex->nabla = 0.025f; + tex = tex->id.next; + } + while (sce) { + ed = sce->ed; + if (ed) { + SEQ_BEGIN (sce->ed, seq) { + if (seq->type == SEQ_TYPE_IMAGE || seq->type == SEQ_TYPE_MOVIE) + seq->alpha_mode = SEQ_ALPHA_STRAIGHT; + } + SEQ_END; + } + + sce = sce->id.next; + } + } + + if (bmain->versionfile <= 236) { + Object *ob; + Camera *cam = bmain->cameras.first; + + while (cam) { + if (cam->ortho_scale == 0.0f) { + cam->ortho_scale = 256.0f / cam->lens; + if (cam->type == CAM_ORTHO) + printf("NOTE: ortho render has changed, tweak new Camera 'scale' value.\n"); + } + cam = cam->id.next; + } + /* force oops draw if depgraph was set*/ + /* set time line var */ + + /* softbody init new vars */ + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + if (ob->soft) { + if (ob->soft->defgoal == 0.0f) + ob->soft->defgoal = 0.7f; + if (ob->soft->physics_speed == 0.0f) + ob->soft->physics_speed = 1.0f; + + if (ob->soft->interval == 0) { + ob->soft->interval = 2; + ob->soft->sfra = 1; + ob->soft->efra = 100; + } + } + if (ob->soft && ob->soft->vertgroup == 0) { + bDeformGroup *locGroup = defgroup_find_name(ob, "SOFTGOAL"); + if (locGroup) { + /* retrieve index for that group */ + ob->soft->vertgroup = 1 + BLI_findindex(&ob->defbase, locGroup); + } + } + } + } + + if (bmain->versionfile <= 237) { + bArmature *arm; + bConstraint *con; + Object *ob; + Bone *bone; + + /* armature recode checks */ + for (arm = bmain->armatures.first; arm; arm = arm->id.next) { + BKE_armature_where_is(arm); + + for (bone = arm->bonebase.first; bone; bone = bone->next) + do_version_bone_head_tail_237(bone); + } + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + if (ob->parent) { + Object *parent = blo_do_versions_newlibadr(fd, lib, ob->parent); + if (parent && parent->type == OB_LATTICE) + ob->partype = PARSKEL; + } + + /* btw. armature_rebuild_pose is further only called on leave editmode */ + if (ob->type == OB_ARMATURE) { + if (ob->pose) + BKE_pose_tag_recalc(bmain, ob->pose); + + /* cannot call stuff now (pointers!), done in setup_app_data */ + ob->id.recalc |= ID_RECALC_ALL; + + /* new generic xray option */ + arm = blo_do_versions_newlibadr(fd, lib, ob->data); + enum { ARM_DRAWXRAY = (1 << 1) }; + if (arm->flag & ARM_DRAWXRAY) { + ob->dtx |= OB_DRAWXRAY; + } + } + else if (ob->type == OB_MESH) { + Mesh *me = blo_do_versions_newlibadr(fd, lib, ob->data); + + enum { + ME_SUBSURF = (1 << 7), + ME_OPT_EDGES = (1 << 8), + }; + + if ((me->flag & ME_SUBSURF)) { + SubsurfModifierData *smd = (SubsurfModifierData *)modifier_new(eModifierType_Subsurf); + + smd->levels = MAX2(1, me->subdiv); + smd->renderLevels = MAX2(1, me->subdivr); + smd->subdivType = me->subsurftype; + + smd->modifier.mode = 0; + if (me->subdiv != 0) + smd->modifier.mode |= 1; + if (me->subdivr != 0) + smd->modifier.mode |= 2; + + if (me->flag & ME_OPT_EDGES) + smd->flags |= eSubsurfModifierFlag_ControlEdges; + + BLI_addtail(&ob->modifiers, smd); + + modifier_unique_name(&ob->modifiers, (ModifierData *)smd); + } + } + + /* follow path constraint needs to set the 'path' option in curves... */ + for (con = ob->constraints.first; con; con = con->next) { + if (con->type == CONSTRAINT_TYPE_FOLLOWPATH) { + bFollowPathConstraint *data = con->data; + Object *obc = blo_do_versions_newlibadr(fd, lib, data->tar); + + if (obc && obc->type == OB_CURVE) { + Curve *cu = blo_do_versions_newlibadr(fd, lib, obc->data); + if (cu) + cu->flag |= CU_PATH; + } + } + } + } + } + + if (bmain->versionfile <= 238) { + Lattice *lt; + Object *ob; + bArmature *arm; + Mesh *me; + Key *key; + Scene *sce = bmain->scenes.first; + + while (sce) { + if (sce->toolsettings == NULL) { + sce->toolsettings = MEM_callocN(sizeof(struct ToolSettings), "Tool Settings Struct"); + sce->toolsettings->doublimit = 0.001f; + } + sce = sce->id.next; + } + + for (lt = bmain->lattices.first; lt; lt = lt->id.next) { + if (lt->fu == 0.0f && lt->fv == 0.0f && lt->fw == 0.0f) { + calc_lat_fudu(lt->flag, lt->pntsu, <->fu, <->du); + calc_lat_fudu(lt->flag, lt->pntsv, <->fv, <->dv); + calc_lat_fudu(lt->flag, lt->pntsw, <->fw, <->dw); + } + } + + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + ModifierData *md; + PartEff *paf; + + for (md = ob->modifiers.first; md; md = md->next) { + if (md->type == eModifierType_Subsurf) { + SubsurfModifierData *smd = (SubsurfModifierData *)md; + + smd->flags &= ~(eSubsurfModifierFlag_Incremental | eSubsurfModifierFlag_DebugIncr); + } + } + + if ((ob->softflag & OB_SB_ENABLE) && !modifiers_findByType(ob, eModifierType_Softbody)) { + if (ob->softflag & OB_SB_POSTDEF) { + md = ob->modifiers.first; + + while (md && modifierType_getInfo(md->type)->type == eModifierTypeType_OnlyDeform) { + md = md->next; + } + + BLI_insertlinkbefore(&ob->modifiers, md, modifier_new(eModifierType_Softbody)); + } + else { + BLI_addhead(&ob->modifiers, modifier_new(eModifierType_Softbody)); + } + + ob->softflag &= ~OB_SB_ENABLE; + } + + if (ob->pose) { + bPoseChannel *pchan; + bConstraint *con; + for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { + /* note, pchan->bone is also lib-link stuff */ + if (pchan->limitmin[0] == 0.0f && pchan->limitmax[0] == 0.0f) { + pchan->limitmin[0] = pchan->limitmin[1] = pchan->limitmin[2] = -180.0f; + pchan->limitmax[0] = pchan->limitmax[1] = pchan->limitmax[2] = 180.0f; + + for (con = pchan->constraints.first; con; con = con->next) { + if (con->type == CONSTRAINT_TYPE_KINEMATIC) { + bKinematicConstraint *data = (bKinematicConstraint *)con->data; + data->weight = 1.0f; + data->orientweight = 1.0f; + data->flag &= ~CONSTRAINT_IK_ROT; + + /* enforce conversion from old IK_TOPARENT to rootbone index */ + data->rootbone = -1; + + /* update_pose_etc handles rootbone == -1 */ + BKE_pose_tag_recalc(bmain, ob->pose); + } + } + } + } + } + + paf = blo_do_version_give_parteff_245(ob); + if (paf) { + if (paf->disp == 0) + paf->disp = 100; + if (paf->speedtex == 0) + paf->speedtex = 8; + if (paf->omat == 0) + paf->omat = 1; + } + } + + for (arm = bmain->armatures.first; arm; arm = arm->id.next) { + bone_version_238(&arm->bonebase); + arm->deformflag |= ARM_DEF_VGROUP; + } + + for (me = bmain->meshes.first; me; me = me->id.next) { + if (!me->medge) { + BKE_mesh_calc_edges_legacy(me, true); /* true = use mface->edcode */ + } + else { + BKE_mesh_strip_loose_faces(me); + } + } + + for (key = bmain->shapekeys.first; key; key = key->id.next) { + KeyBlock *kb; + int index = 1; + + for (kb = key->block.first; kb; kb = kb->next) { + if (kb == key->refkey) { + if (kb->name[0] == 0) + strcpy(kb->name, "Basis"); + } + else { + if (kb->name[0] == 0) { + BLI_snprintf(kb->name, sizeof(kb->name), "Key %d", index); + } + index++; + } + } + } + } + + if (bmain->versionfile <= 239) { + bArmature *arm; + Object *ob; + Scene *sce = bmain->scenes.first; + Camera *cam = bmain->cameras.first; + int set_passepartout = 0; + + /* deformflag is local in modifier now */ + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + ModifierData *md; + + for (md = ob->modifiers.first; md; md = md->next) { + if (md->type == eModifierType_Armature) { + ArmatureModifierData *amd = (ArmatureModifierData *)md; + if (amd->object && amd->deformflag == 0) { + Object *oba = blo_do_versions_newlibadr(fd, lib, amd->object); + arm = blo_do_versions_newlibadr(fd, lib, oba->data); + amd->deformflag = arm->deformflag; + } + } + } + } + + /* updating stepsize for ghost drawing */ + for (arm = bmain->armatures.first; arm; arm = arm->id.next) { + bone_version_239(&arm->bonebase); + if (arm->layer == 0) + arm->layer = 1; + } + + for (; sce; sce = sce->id.next) { + if (sce->r.scemode & R_PASSEPARTOUT) { + set_passepartout = 1; + sce->r.scemode &= ~R_PASSEPARTOUT; + } + } + + for (; cam; cam = cam->id.next) { + if (set_passepartout) + cam->flag |= CAM_SHOWPASSEPARTOUT; + + /* make sure old cameras have title safe on */ + if (!(cam->flag & CAM_SHOW_SAFE_MARGINS)) + cam->flag |= CAM_SHOW_SAFE_MARGINS; + + /* set an appropriate camera passepartout alpha */ + if (!(cam->passepartalpha)) + cam->passepartalpha = 0.2f; + } + } + + if (bmain->versionfile <= 241) { + Object *ob; + Scene *sce; + Light *la; + bArmature *arm; + bNodeTree *ntree; + + /* updating layers still */ + for (arm = bmain->armatures.first; arm; arm = arm->id.next) { + bone_version_239(&arm->bonebase); + if (arm->layer == 0) + arm->layer = 1; + } + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + if (sce->audio.mixrate == 0) + sce->audio.mixrate = 48000; + + /* We don't add default layer since blender2.8 because the layers + * are now in Scene->view_layers and a default layer is created in + * the doversion later on. + */ + SceneRenderLayer *srl; + /* new layer flag for sky, was default for solid */ + for (srl = sce->r.layers.first; srl; srl = srl->next) { + if (srl->layflag & SCE_LAY_SOLID) + srl->layflag |= SCE_LAY_SKY; + srl->passflag &= (SCE_PASS_COMBINED | SCE_PASS_Z | SCE_PASS_NORMAL | SCE_PASS_VECTOR); + } + + /* node version changes */ + if (sce->nodetree) + ntree_version_241(sce->nodetree); + + /* uv calculation options moved to toolsettings */ + if (sce->toolsettings->unwrapper == 0) { + sce->toolsettings->uvcalc_flag = UVCALC_FILLHOLES; + sce->toolsettings->unwrapper = 1; + } + } + + for (ntree = bmain->nodetrees.first; ntree; ntree = ntree->id.next) + ntree_version_241(ntree); + + for (la = bmain->lights.first; la; la = la->id.next) + if (la->buffers == 0) + la->buffers = 1; + + /* for empty drawsize and drawtype */ + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + if (ob->empty_drawsize == 0.0f) { + ob->empty_drawtype = OB_ARROWS; + ob->empty_drawsize = 1.0; + } + } + + /* during 2.41 images with this name were used for viewer node output, lets fix that */ + if (bmain->versionfile == 241) { + Image *ima; + for (ima = bmain->images.first; ima; ima = ima->id.next) { + if (STREQ(ima->name, "Compositor")) { + strcpy(ima->id.name + 2, "Viewer Node"); + strcpy(ima->name, "Viewer Node"); + } + } + } + } + + if (bmain->versionfile <= 242) { + Scene *sce; + bScreen *sc; + Object *ob; + Curve *cu; + Material *ma; + Mesh *me; + Collection *collection; + Nurb *nu; + BezTriple *bezt; + BPoint *bp; + bNodeTree *ntree; + int a; + + for (sc = bmain->screens.first; sc; sc = sc->id.next) { + ScrArea *sa; + sa = sc->areabase.first; + while (sa) { + SpaceLink *sl; + + for (sl = sa->spacedata.first; sl; sl = sl->next) { + if (sl->spacetype == SPACE_VIEW3D) { + View3D *v3d = (View3D *)sl; + if (v3d->gridsubdiv == 0) + v3d->gridsubdiv = 10; + } + } + sa = sa->next; + } + } + + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + enum { + R_THREADS = (1 << 19), + }; + if (sce->toolsettings->select_thresh == 0.0f) + sce->toolsettings->select_thresh = 0.01f; + if (sce->r.threads == 0) { + if (sce->r.mode & R_THREADS) + sce->r.threads = 2; + else + sce->r.threads = 1; + } + if (sce->nodetree) + ntree_version_242(sce->nodetree); + } + + for (ntree = bmain->nodetrees.first; ntree; ntree = ntree->id.next) + ntree_version_242(ntree); + + /* add default radius values to old curve points */ + for (cu = bmain->curves.first; cu; cu = cu->id.next) { + for (nu = cu->nurb.first; nu; nu = nu->next) { + if (nu) { + if (nu->bezt) { + for (bezt = nu->bezt, a = 0; a < nu->pntsu; a++, bezt++) { + if (!bezt->radius) + bezt->radius = 1.0; + } + } + else if (nu->bp) { + for (bp = nu->bp, a = 0; a < nu->pntsu * nu->pntsv; a++, bp++) { + if (!bp->radius) + bp->radius = 1.0; + } + } + } + } + } + + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + ModifierData *md; + ListBase *list; + list = &ob->constraints; + + /* check for already existing MinMax (floor) constraint + * and update the sticky flagging */ + + if (list) { + bConstraint *curcon; + for (curcon = list->first; curcon; curcon = curcon->next) { + switch (curcon->type) { + case CONSTRAINT_TYPE_MINMAX: { + bMinMaxConstraint *data = curcon->data; + if (data->sticky == 1) + data->flag |= MINMAX_STICKY; + else + data->flag &= ~MINMAX_STICKY; + + break; + } + case CONSTRAINT_TYPE_ROTLIKE: { + bRotateLikeConstraint *data = curcon->data; + + /* version patch from buttons_object.c */ + if (data->flag == 0) + data->flag = ROTLIKE_X | ROTLIKE_Y | ROTLIKE_Z; + + break; + } + } + } + } + + if (ob->type == OB_ARMATURE) { + if (ob->pose) { + bConstraint *curcon; + bPoseChannel *pchan; + for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { + for (curcon = pchan->constraints.first; curcon; curcon = curcon->next) { + switch (curcon->type) { + case CONSTRAINT_TYPE_MINMAX: { + bMinMaxConstraint *data = curcon->data; + if (data->sticky == 1) + data->flag |= MINMAX_STICKY; + else + data->flag &= ~MINMAX_STICKY; + break; + } + case CONSTRAINT_TYPE_KINEMATIC: { + bKinematicConstraint *data = curcon->data; + if (!(data->flag & CONSTRAINT_IK_POS)) { + data->flag |= CONSTRAINT_IK_POS; + data->flag |= CONSTRAINT_IK_STRETCH; + } + break; + } + case CONSTRAINT_TYPE_ROTLIKE: { + bRotateLikeConstraint *data = curcon->data; + + /* version patch from buttons_object.c */ + if (data->flag == 0) + data->flag = ROTLIKE_X | ROTLIKE_Y | ROTLIKE_Z; + break; + } + } + } + } + } + } + + /* copy old object level track settings to curve modifers */ + for (md = ob->modifiers.first; md; md = md->next) { + if (md->type == eModifierType_Curve) { + CurveModifierData *cmd = (CurveModifierData *)md; + + if (cmd->defaxis == 0) + cmd->defaxis = ob->trackflag + 1; + } + } + } + + for (ma = bmain->materials.first; ma; ma = ma->id.next) { + if (ma->nodetree) + ntree_version_242(ma->nodetree); + } + + for (me = bmain->meshes.first; me; me = me->id.next) + customdata_version_242(me); + + for (collection = bmain->collections.first; collection; collection = collection->id.next) + if (collection->layer == 0) + collection->layer = (1 << 20) - 1; + + /* now, subversion control! */ + if (bmain->subversionfile < 3) { + Image *ima; + Tex *tex; + + /* Image refactor initialize */ + for (ima = bmain->images.first; ima; ima = ima->id.next) { + ima->source = IMA_SRC_FILE; + ima->type = IMA_TYPE_IMAGE; + + ima->gen_x = 256; + ima->gen_y = 256; + ima->gen_type = 1; + + if (STREQLEN(ima->id.name + 2, "Viewer Node", sizeof(ima->id.name) - 2)) { + ima->source = IMA_SRC_VIEWER; + ima->type = IMA_TYPE_COMPOSITE; + } + if (STREQLEN(ima->id.name + 2, "Render Result", sizeof(ima->id.name) - 2)) { + ima->source = IMA_SRC_VIEWER; + ima->type = IMA_TYPE_R_RESULT; + } + } + for (tex = bmain->textures.first; tex; tex = tex->id.next) { + enum { + TEX_ANIMCYCLIC = (1 << 6), + TEX_ANIM5 = (1 << 7), + }; + + if (tex->type == TEX_IMAGE && tex->ima) { + ima = blo_do_versions_newlibadr(fd, lib, tex->ima); + if (tex->imaflag & TEX_ANIM5) { + ima->source = IMA_SRC_MOVIE; + } + } + tex->iuser.frames = tex->frames; + tex->iuser.offset = tex->offset; + tex->iuser.sfra = tex->sfra; + tex->iuser.cycl = (tex->imaflag & TEX_ANIMCYCLIC) != 0; + } + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + if (sce->nodetree) + do_version_ntree_242_2(sce->nodetree); + } + for (ntree = bmain->nodetrees.first; ntree; ntree = ntree->id.next) + do_version_ntree_242_2(ntree); + for (ma = bmain->materials.first; ma; ma = ma->id.next) + if (ma->nodetree) + do_version_ntree_242_2(ma->nodetree); + } + + if (bmain->subversionfile < 4) { + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + sce->r.bake_mode = 1; /* prevent to include render stuff here */ + sce->r.bake_filter = 16; + sce->r.bake_flag = R_BAKE_CLEAR; + } + } + } + + if (bmain->versionfile <= 243) { + Object *ob = bmain->objects.first; + + for (; ob; ob = ob->id.next) { + bDeformGroup *curdef; + + for (curdef = ob->defbase.first; curdef; curdef = curdef->next) { + /* replace an empty-string name with unique name */ + if (curdef->name[0] == '\0') { + defgroup_unique_name(curdef, ob); + } + } + + if (bmain->versionfile < 243 || bmain->subversionfile < 1) { + ModifierData *md; + + /* translate old mirror modifier axis values to new flags */ + for (md = ob->modifiers.first; md; md = md->next) { + if (md->type == eModifierType_Mirror) { + MirrorModifierData *mmd = (MirrorModifierData *)md; + + switch (mmd->axis) { + case 0: + mmd->flag |= MOD_MIR_AXIS_X; + break; + case 1: + mmd->flag |= MOD_MIR_AXIS_Y; + break; + case 2: + mmd->flag |= MOD_MIR_AXIS_Z; + break; + } + + mmd->axis = 0; + } + } + } + } + + /* render layer added, this is not the active layer */ + if (bmain->versionfile <= 243 || bmain->subversionfile < 2) { + Mesh *me; + for (me = bmain->meshes.first; me; me = me->id.next) + customdata_version_243(me); + } + } + + if (bmain->versionfile <= 244) { + bScreen *sc; + + if (bmain->versionfile != 244 || bmain->subversionfile < 2) { + /* correct older action editors - incorrect scrolling */ + for (sc = bmain->screens.first; sc; sc = sc->id.next) { + ScrArea *sa; + sa = sc->areabase.first; + while (sa) { + SpaceLink *sl; + + for (sl = sa->spacedata.first; sl; sl = sl->next) { + if (sl->spacetype == SPACE_ACTION) { + SpaceAction *saction = (SpaceAction *)sl; + + saction->v2d.tot.ymin = -1000.0; + saction->v2d.tot.ymax = 0.0; + + saction->v2d.cur.ymin = -75.0; + saction->v2d.cur.ymax = 5.0; + } + } + sa = sa->next; + } + } + } + } + + if (bmain->versionfile <= 245) { + Scene *sce; + Object *ob; + Image *ima; + Light *la; + Material *ma; + ParticleSettings *part; + Mesh *me; + bNodeTree *ntree; + Tex *tex; + ModifierData *md; + ParticleSystem *psys; + + /* unless the file was created 2.44.3 but not 2.45, update the constraints */ + if (!(bmain->versionfile == 244 && bmain->subversionfile == 3) && + ((bmain->versionfile < 245) || + (bmain->versionfile == 245 && bmain->subversionfile == 0))) { + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + ListBase *list; + list = &ob->constraints; + + /* fix up constraints due to constraint recode changes (originally at 2.44.3) */ + if (list) { + bConstraint *curcon; + for (curcon = list->first; curcon; curcon = curcon->next) { + /* old CONSTRAINT_LOCAL check -> convert to CONSTRAINT_SPACE_LOCAL */ + if (curcon->flag & 0x20) { + curcon->ownspace = CONSTRAINT_SPACE_LOCAL; + curcon->tarspace = CONSTRAINT_SPACE_LOCAL; + } + + switch (curcon->type) { + case CONSTRAINT_TYPE_LOCLIMIT: { + bLocLimitConstraint *data = (bLocLimitConstraint *)curcon->data; + + /* old limit without parent option for objects */ + if (data->flag2) + curcon->ownspace = CONSTRAINT_SPACE_LOCAL; + break; + } + } + } + } + + /* correctly initialize constinv matrix */ + unit_m4(ob->constinv); + + if (ob->type == OB_ARMATURE) { + if (ob->pose) { + bConstraint *curcon; + bPoseChannel *pchan; + + for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { + /* make sure constraints are all up to date */ + for (curcon = pchan->constraints.first; curcon; curcon = curcon->next) { + /* old CONSTRAINT_LOCAL check -> convert to CONSTRAINT_SPACE_LOCAL */ + if (curcon->flag & 0x20) { + curcon->ownspace = CONSTRAINT_SPACE_LOCAL; + curcon->tarspace = CONSTRAINT_SPACE_LOCAL; + } + + switch (curcon->type) { + case CONSTRAINT_TYPE_ACTION: { + bActionConstraint *data = (bActionConstraint *)curcon->data; + + /* 'data->local' used to mean that target was in local-space */ + if (data->local) + curcon->tarspace = CONSTRAINT_SPACE_LOCAL; + break; + } + } + } + + /* correctly initialize constinv matrix */ + unit_m4(pchan->constinv); + } + } + } + } + } + + /* fix all versions before 2.45 */ + if (bmain->versionfile != 245) { + + /* repair preview from 242 - 244*/ + for (ima = bmain->images.first; ima; ima = ima->id.next) { + ima->preview = NULL; + } + } + + /* add point caches */ + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + if (ob->soft && !ob->soft->pointcache) + ob->soft->pointcache = BKE_ptcache_add(&ob->soft->ptcaches); + + for (psys = ob->particlesystem.first; psys; psys = psys->next) { + if (psys->pointcache) { + if (psys->pointcache->flag & PTCACHE_BAKED && + (psys->pointcache->flag & PTCACHE_DISK_CACHE) == 0) { + printf("Old memory cache isn't supported for particles, so re-bake the simulation!\n"); + psys->pointcache->flag &= ~PTCACHE_BAKED; + } + } + else + psys->pointcache = BKE_ptcache_add(&psys->ptcaches); + } + + for (md = ob->modifiers.first; md; md = md->next) { + if (md->type == eModifierType_Cloth) { + ClothModifierData *clmd = (ClothModifierData *)md; + if (!clmd->point_cache) { + clmd->point_cache = BKE_ptcache_add(&clmd->ptcaches); + clmd->point_cache->step = 1; + } + } + } + } + + /* Copy over old per-level multires vertex data + * into a single vertex array in struct Multires */ + for (me = bmain->meshes.first; me; me = me->id.next) { + if (me->mr && !me->mr->verts) { + MultiresLevel *lvl = me->mr->levels.last; + if (lvl) { + me->mr->verts = lvl->verts; + lvl->verts = NULL; + /* Don't need the other vert arrays */ + for (lvl = lvl->prev; lvl; lvl = lvl->prev) { + MEM_freeN(lvl->verts); + lvl->verts = NULL; + } + } + } + } + + if (bmain->versionfile != 245 || bmain->subversionfile < 1) { + for (la = bmain->lights.first; la; la = la->id.next) { + la->falloff_type = LA_FALLOFF_INVLINEAR; + + if (la->curfalloff == NULL) { + la->curfalloff = curvemapping_add(1, 0.0f, 1.0f, 1.0f, 0.0f); + curvemapping_initialize(la->curfalloff); + } + } + } + + for (ma = bmain->materials.first; ma; ma = ma->id.next) { + if (ma->gloss_mir == 0.0f) { + ma->gloss_mir = 1.0f; + } + } + + for (part = bmain->particles.first; part; part = part->id.next) { + if (part->ren_child_nbr == 0) + part->ren_child_nbr = part->child_nbr; + } + + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + if (sce->nodetree) + ntree_version_245(fd, lib, sce->nodetree); + + if (sce->r.simplify_subsurf == 0) { + sce->r.simplify_subsurf = 6; + sce->r.simplify_particles = 1.0f; + } + } + + for (ntree = bmain->nodetrees.first; ntree; ntree = ntree->id.next) + ntree_version_245(fd, lib, ntree); + + /* fix for temporary flag changes during 245 cycle */ + for (ima = bmain->images.first; ima; ima = ima->id.next) { + if (ima->flag & IMA_OLD_PREMUL) { + ima->flag &= ~IMA_OLD_PREMUL; + ima->alpha_mode = IMA_ALPHA_STRAIGHT; + } + } + + for (tex = bmain->textures.first; tex; tex = tex->id.next) { + if (tex->iuser.flag & IMA_OLD_PREMUL) { + tex->iuser.flag &= ~IMA_OLD_PREMUL; + } + + ima = blo_do_versions_newlibadr(fd, lib, tex->ima); + if (ima && (tex->iuser.flag & IMA_DO_PREMUL)) { + ima->flag &= ~IMA_OLD_PREMUL; + ima->alpha_mode = IMA_ALPHA_STRAIGHT; + } + } + } + + if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 2)) { + Image *ima; + + /* initialize 1:1 Aspect */ + for (ima = bmain->images.first; ima; ima = ima->id.next) { + ima->aspx = ima->aspy = 1.0f; + } + } + + if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 4)) { + bArmature *arm; + ModifierData *md; + Object *ob; + + for (arm = bmain->armatures.first; arm; arm = arm->id.next) + arm->deformflag |= ARM_DEF_B_BONE_REST; + + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + for (md = ob->modifiers.first; md; md = md->next) { + if (md->type == eModifierType_Armature) + ((ArmatureModifierData *)md)->deformflag |= ARM_DEF_B_BONE_REST; + } + } + } + + if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 5)) { + /* foreground color needs to be something other then black */ + Scene *sce; + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + sce->r.fg_stamp[0] = sce->r.fg_stamp[1] = sce->r.fg_stamp[2] = 0.8f; + sce->r.fg_stamp[3] = 1.0f; /* don't use text alpha yet */ + sce->r.bg_stamp[3] = 0.25f; /* make sure the background has full alpha */ + } + } + + if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 6)) { + Scene *sce; + /* fix frs_sec_base */ + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + if (sce->r.frs_sec_base == 0) { + sce->r.frs_sec_base = 1; + } + } + } + + if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 7)) { + Object *ob; + bPoseChannel *pchan; + + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + if (ob->pose) { + for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { + do_version_constraints_245(&pchan->constraints); + } + } + do_version_constraints_245(&ob->constraints); + + if (ob->soft && ob->soft->keys) { + SoftBody *sb = ob->soft; + int k; + + for (k = 0; k < sb->totkey; k++) { + if (sb->keys[k]) + MEM_freeN(sb->keys[k]); + } + + MEM_freeN(sb->keys); + + sb->keys = NULL; + sb->totkey = 0; + } + } + } + + if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 8)) { + Scene *sce; + Object *ob; + PartEff *paf = NULL; + + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + if (ob->soft && ob->soft->keys) { + SoftBody *sb = ob->soft; + int k; + + for (k = 0; k < sb->totkey; k++) { + if (sb->keys[k]) + MEM_freeN(sb->keys[k]); + } + + MEM_freeN(sb->keys); + + sb->keys = NULL; + sb->totkey = 0; + } + + /* convert old particles to new system */ + if ((paf = blo_do_version_give_parteff_245(ob))) { + ParticleSystem *psys; + ModifierData *md; + ParticleSystemModifierData *psmd; + ParticleSettings *part; + + /* create new particle system */ + psys = MEM_callocN(sizeof(ParticleSystem), "particle_system"); + psys->pointcache = BKE_ptcache_add(&psys->ptcaches); + + part = psys->part = BKE_particlesettings_add(bmain, "ParticleSettings"); + + /* needed for proper libdata lookup */ + blo_do_versions_oldnewmap_insert(fd->libmap, psys->part, psys->part, 0); + part->id.lib = ob->id.lib; + + part->id.us--; + part->id.tag |= (ob->id.tag & LIB_TAG_NEED_LINK); + + psys->totpart = 0; + psys->flag = PSYS_CURRENT; + + BLI_addtail(&ob->particlesystem, psys); + + md = modifier_new(eModifierType_ParticleSystem); + BLI_snprintf(md->name, + sizeof(md->name), + "ParticleSystem %i", + BLI_listbase_count(&ob->particlesystem)); + psmd = (ParticleSystemModifierData *)md; + psmd->psys = psys; + BLI_addtail(&ob->modifiers, md); + + /* convert settings from old particle system */ + /* general settings */ + part->totpart = MIN2(paf->totpart, 100000); + part->sta = paf->sta; + part->end = paf->end; + part->lifetime = paf->lifetime; + part->randlife = paf->randlife; + psys->seed = paf->seed; + part->disp = paf->disp; + part->omat = paf->mat[0]; + part->hair_step = paf->totkey; + + part->eff_group = paf->group; + + /* old system didn't interpolate between keypoints at render time */ + part->draw_step = part->ren_step = 0; + + /* physics */ + part->normfac = paf->normfac * 25.0f; + part->obfac = paf->obfac; + part->randfac = paf->randfac * 25.0f; + part->dampfac = paf->damp; + copy_v3_v3(part->acc, paf->force); + + /* flags */ + if (paf->stype & PAF_VECT) { + if (paf->flag & PAF_STATIC) { + /* new hair lifetime is always 100.0f */ + float fac = paf->lifetime / 100.0f; + + part->draw_as = PART_DRAW_PATH; + part->type = PART_HAIR; + psys->recalc |= ID_RECALC_PSYS_REDO; + + part->normfac *= fac; + part->randfac *= fac; + } + else { + part->draw_as = PART_DRAW_LINE; + part->draw |= PART_DRAW_VEL_LENGTH; + part->draw_line[1] = 0.04f; + } + } + + part->rotmode = PART_ROT_VEL; + + part->flag |= (paf->flag & PAF_BSPLINE) ? PART_HAIR_BSPLINE : 0; + part->flag |= (paf->flag & PAF_TRAND) ? PART_TRAND : 0; + part->flag |= (paf->flag & PAF_EDISTR) ? PART_EDISTR : 0; + part->flag |= (paf->flag & PAF_UNBORN) ? PART_UNBORN : 0; + part->flag |= (paf->flag & PAF_DIED) ? PART_DIED : 0; + part->from |= (paf->flag & PAF_FACE) ? PART_FROM_FACE : 0; + part->draw |= (paf->flag & PAF_SHOWE) ? PART_DRAW_EMITTER : 0; + + psys->vgroup[PSYS_VG_DENSITY] = paf->vertgroup; + psys->vgroup[PSYS_VG_VEL] = paf->vertgroup_v; + psys->vgroup[PSYS_VG_LENGTH] = paf->vertgroup_v; + + /* dupliobjects */ + if (ob->transflag & OB_DUPLIVERTS) { + Object *dup = bmain->objects.first; + + for (; dup; dup = dup->id.next) { + if (ob == blo_do_versions_newlibadr(fd, lib, dup->parent)) { + part->instance_object = dup; + ob->transflag |= OB_DUPLIPARTS; + ob->transflag &= ~OB_DUPLIVERTS; + + part->draw_as = PART_DRAW_OB; + + /* needed for proper libdata lookup */ + blo_do_versions_oldnewmap_insert(fd->libmap, dup, dup, 0); + } + } + } + + { + FluidsimModifierData *fluidmd = (FluidsimModifierData *)modifiers_findByType( + ob, eModifierType_Fluidsim); + if (fluidmd && fluidmd->fss && fluidmd->fss->type == OB_FLUIDSIM_PARTICLE) + part->type = PART_FLUID; + } + + do_version_free_effects_245(&ob->effect); + + printf("Old particle system converted to new system.\n"); + } + } + + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + ParticleEditSettings *pset = &sce->toolsettings->particle; + int a; + + if (pset->brush[0].size == 0) { + pset->flag = PE_KEEP_LENGTHS | PE_LOCK_FIRST | PE_DEFLECT_EMITTER; + pset->emitterdist = 0.25f; + pset->totrekey = 5; + pset->totaddkey = 5; + + for (a = 0; a < ARRAY_SIZE(pset->brush); a++) { + pset->brush[a].strength = 50; + pset->brush[a].size = 50; + pset->brush[a].step = 10; + } + + pset->brush[PE_BRUSH_CUT].strength = 100; + } + } + } + + if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 10)) { + Object *ob; + + /* dupliface scale */ + for (ob = bmain->objects.first; ob; ob = ob->id.next) + ob->instance_faces_scale = 1.0f; + } + + if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 11)) { + Object *ob; + bActionStrip *strip; + + /* nla-strips - scale */ + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + for (strip = ob->nlastrips.first; strip; strip = strip->next) { + float length, actlength, repeat; + + if (strip->flag & ACTSTRIP_USESTRIDE) + repeat = 1.0f; + else + repeat = strip->repeat; + + length = strip->end - strip->start; + if (length == 0.0f) + length = 1.0f; + actlength = strip->actend - strip->actstart; + + strip->scale = length / (repeat * actlength); + if (strip->scale == 0.0f) + strip->scale = 1.0f; + } + if (ob->soft) { + ob->soft->inpush = ob->soft->inspring; + ob->soft->shearstiff = 1.0f; + } + } + } + + if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 14)) { + Scene *sce; + Sequence *seq; + + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + SEQ_BEGIN (sce->ed, seq) { + if (seq->blend_mode == 0) + seq->blend_opacity = 100.0f; + } + SEQ_END; + } + } + + /* fix broken group lengths in id properties */ + if ((bmain->versionfile < 245) || (bmain->versionfile == 245 && bmain->subversionfile < 15)) { + idproperties_fix_group_lengths(bmain->scenes); + idproperties_fix_group_lengths(bmain->libraries); + idproperties_fix_group_lengths(bmain->objects); + idproperties_fix_group_lengths(bmain->meshes); + idproperties_fix_group_lengths(bmain->curves); + idproperties_fix_group_lengths(bmain->metaballs); + idproperties_fix_group_lengths(bmain->materials); + idproperties_fix_group_lengths(bmain->textures); + idproperties_fix_group_lengths(bmain->images); + idproperties_fix_group_lengths(bmain->lattices); + idproperties_fix_group_lengths(bmain->lights); + idproperties_fix_group_lengths(bmain->cameras); + idproperties_fix_group_lengths(bmain->ipo); + idproperties_fix_group_lengths(bmain->shapekeys); + idproperties_fix_group_lengths(bmain->worlds); + idproperties_fix_group_lengths(bmain->screens); + idproperties_fix_group_lengths(bmain->fonts); + idproperties_fix_group_lengths(bmain->texts); + idproperties_fix_group_lengths(bmain->sounds); + idproperties_fix_group_lengths(bmain->collections); + idproperties_fix_group_lengths(bmain->armatures); + idproperties_fix_group_lengths(bmain->actions); + idproperties_fix_group_lengths(bmain->nodetrees); + idproperties_fix_group_lengths(bmain->brushes); + idproperties_fix_group_lengths(bmain->particles); + } + + /* convert fluids to modifier */ + if (bmain->versionfile < 246 || (bmain->versionfile == 246 && bmain->subversionfile < 1)) { + Object *ob; + + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + if (ob->fluidsimSettings) { + FluidsimModifierData *fluidmd = (FluidsimModifierData *)modifier_new( + eModifierType_Fluidsim); + BLI_addhead(&ob->modifiers, (ModifierData *)fluidmd); + + MEM_freeN(fluidmd->fss); + fluidmd->fss = MEM_dupallocN(ob->fluidsimSettings); + fluidmd->fss->ipo = blo_do_versions_newlibadr_us( + fd, ob->id.lib, ob->fluidsimSettings->ipo); + MEM_freeN(ob->fluidsimSettings); + + fluidmd->fss->lastgoodframe = INT_MAX; + fluidmd->fss->flag = 0; + fluidmd->fss->meshVelocities = NULL; + } + } + } + + if (bmain->versionfile < 246 || (bmain->versionfile == 246 && bmain->subversionfile < 1)) { + Object *ob; + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + if (ob->pd && (ob->pd->forcefield == PFIELD_WIND)) + ob->pd->f_noise = 0.0f; + } + } + + /* set the curve radius interpolation to 2.47 default - easy */ + if (bmain->versionfile < 247 || (bmain->versionfile == 247 && bmain->subversionfile < 6)) { + Curve *cu; + Nurb *nu; + + for (cu = bmain->curves.first; cu; cu = cu->id.next) { + for (nu = cu->nurb.first; nu; nu = nu->next) { + if (nu) { + nu->radius_interp = 3; + + /* resolu and resolv are now used differently for surfaces + * rather than using the resolution to define the entire number of divisions, + * use it for the number of divisions per segment + */ + if (nu->pntsv > 1) { + nu->resolu = MAX2(1, (int)(((float)nu->resolu / (float)nu->pntsu) + 0.5f)); + nu->resolv = MAX2(1, (int)(((float)nu->resolv / (float)nu->pntsv) + 0.5f)); + } + } + } + } + } + + if (bmain->versionfile < 248 || (bmain->versionfile == 248 && bmain->subversionfile < 2)) { + Scene *sce; + + /* Note, these will need to be added for painting */ + for (sce = bmain->scenes.first; sce; sce = sce->id.next) { + sce->toolsettings->imapaint.seam_bleed = 2; + sce->toolsettings->imapaint.normal_angle = 80; + } + } + + if (bmain->versionfile < 248 || (bmain->versionfile == 248 && bmain->subversionfile < 3)) { + bScreen *sc; + + /* adjust default settings for Animation Editors */ + for (sc = bmain->screens.first; sc; sc = sc->id.next) { + ScrArea *sa; + + for (sa = sc->areabase.first; sa; sa = sa->next) { + SpaceLink *sl; + + for (sl = sa->spacedata.first; sl; sl = sl->next) { + switch (sl->spacetype) { + case SPACE_ACTION: { + SpaceAction *sact = (SpaceAction *)sl; + + sact->mode = SACTCONT_DOPESHEET; + sact->autosnap = SACTSNAP_FRAME; + break; + } + case SPACE_GRAPH: { + SpaceGraph *sipo = (SpaceGraph *)sl; + sipo->autosnap = SACTSNAP_FRAME; + break; + } + case SPACE_NLA: { + SpaceNla *snla = (SpaceNla *)sl; + snla->autosnap = SACTSNAP_FRAME; + break; + } + } + } + } + } + } + + /* correct introduce of seed for wind force */ + if (bmain->versionfile < 249 && bmain->subversionfile < 1) { + Object *ob; + for (ob = bmain->objects.first; ob; ob = ob->id.next) { + if (ob->pd) + ob->pd->seed = ((uint)(ceil(PIL_check_seconds_timer())) + 1) % 128; + } + } + + if (bmain->versionfile < 249 && bmain->subversionfile < 2) { + Scene *sce = bmain->scenes.first; + Sequence *seq; + Editing *ed; + + while (sce) { + ed = sce->ed; + if (ed) { + SEQP_BEGIN (ed, seq) { + if (seq->strip && seq->strip->proxy) { + seq->strip->proxy->quality = 90; + } + } + SEQ_END; + } + + sce = sce->id.next; + } + } } |