diff options
author | Mitchell Stokes <mogurijin@gmail.com> | 2012-06-21 10:27:51 +0400 |
---|---|---|
committer | Mitchell Stokes <mogurijin@gmail.com> | 2012-06-21 10:27:51 +0400 |
commit | 7ef54879ed8bb157046e305da554cae907adf6e8 (patch) | |
tree | d2ef5bd2a17a7580d3f6aa8ffd79181c39a69e61 /source/blender/blenloader | |
parent | d8e2c475a0dbfb9de31c363f76899435d80cff8f (diff) |
Fix for properly converting 2.4x IPO Actuators to 2.6x Action Actuators. Previously the converted Action Actuators would not have an action assigned. This fix is based on code provided by Maxim Aleynikov in his report: [#30410] not full conversion IPO Actuator in Action Actuator.
Diffstat (limited to 'source/blender/blenloader')
-rw-r--r-- | source/blender/blenloader/intern/versioning_250.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/source/blender/blenloader/intern/versioning_250.c b/source/blender/blenloader/intern/versioning_250.c index 5ed39ad5307..bfaa526b995 100644 --- a/source/blender/blenloader/intern/versioning_250.c +++ b/source/blender/blenloader/intern/versioning_250.c @@ -2558,11 +2558,11 @@ void blo_do_versions_250(FileData *fd, Library *lib, Main *main) for (ob = main->object.first; ob; ob = ob->id.next) { for (act = ob->actuators.first; act; act = act->next) { if (act->type == ACT_IPO) { - // Create the new actuator + /* Create the new actuator */ ia = act->data; aa = MEM_callocN(sizeof(bActionActuator), "fcurve -> action actuator do_version"); - // Copy values + /* Copy values */ aa->type = ia->type; aa->flag = ia->flag; aa->sta = ia->sta; @@ -2572,12 +2572,18 @@ void blo_do_versions_250(FileData *fd, Library *lib, Main *main) if (ob->adt) aa->act = ob->adt->action; - // Get rid of the old actuator + /* Get rid of the old actuator */ MEM_freeN(ia); - // Assign the new actuator + /* Assign the new actuator */ act->data = aa; act->type = act->otype = ACT_ACTION; + + /* Fix for converting 2.4x files: if we don't have an action, but we have an + object IPO, then leave the actuator as an IPO actuator for now and let the + IPO conversion code handle it */ + if (ob->ipo && !aa->act) + act->type = ACT_IPO; } else if (act->type == ACT_SHAPEACTION) { act->type = act->otype = ACT_ACTION; |