From 912151763d0a217ba53e3d566fae655d1f8b8553 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 28 Apr 2014 13:20:37 +0200 Subject: Followup to rB8714ae09f894: better not have several RNA properties affect a single DNA one. --- source/blender/blenloader/intern/versioning_270.c | 45 +++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'source/blender/blenloader/intern') diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c index 507d711ce9e..ae6d5eec6fa 100644 --- a/source/blender/blenloader/intern/versioning_270.c +++ b/source/blender/blenloader/intern/versioning_270.c @@ -79,6 +79,34 @@ static void do_version_constraints_radians_degrees_270_1(ListBase *lb) } } +static void do_version_constraints_radians_degrees_270_5(ListBase *lb) +{ + bConstraint *con; + + for (con = lb->first; con; con = con->next) { + if (con->type == CONSTRAINT_TYPE_TRANSFORM) { + bTransformConstraint *data = (bTransformConstraint *)con->data; + + if (data->from == TRANS_ROTATION) { + copy_v3_v3(data->from_min_rot, data->from_min); + copy_v3_v3(data->from_max_rot, data->from_max); + } + else if (data->from == TRANS_SCALE) { + copy_v3_v3(data->from_min_scale, data->from_min); + copy_v3_v3(data->from_max_scale, data->from_max); + } + + if (data->to == TRANS_ROTATION) { + copy_v3_v3(data->to_min_rot, data->to_min); + copy_v3_v3(data->to_max_rot, data->to_max); + } + else if (data->to == TRANS_SCALE) { + copy_v3_v3(data->to_min_scale, data->to_min); + copy_v3_v3(data->to_max_scale, data->to_max); + } + } + } +} void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main) { @@ -204,6 +232,23 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main) } } + if (!MAIN_VERSION_ATLEAST(main, 270, 5)) { + Object *ob; + + /* Update Transform constraint (again :|). */ + for (ob = main->object.first; ob; ob = ob->id.next) { + do_version_constraints_radians_degrees_270_5(&ob->constraints); + + if (ob->pose) { + /* Bones constraints! */ + bPoseChannel *pchan; + for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { + do_version_constraints_radians_degrees_270_5(&pchan->constraints); + } + } + } + } + if (!DNA_struct_elem_find(fd->filesdna, "Material", "int", "mode2")) { /* will be replaced with version check when other new flag is added to mode2 */ Material *ma; -- cgit v1.2.3