Fix T68878: Update shapekeys during transformation

Only use the hack in `key_block_get_data` for the bmesh shapekey.
The remaining shapekeys can use the original offset values.

Differential Revision: https://developer.blender.org/D6516
This commit is contained in:
Germano Cavalcante 2020-02-19 08:54:34 -03:00
parent cfdb5b9a8b
commit bde215a60c
Notes: blender-bot 2023-02-14 03:44:41 +01:00
Referenced by issue #68878, Shape Keys do not update properly
1 changed files with 5 additions and 8 deletions

View File

@ -820,7 +820,7 @@ static void key_evaluate_relative(const int start,
KeyBlock *refb;
float weight,
*weights = per_keyblock_weights ? per_keyblock_weights[keyblock_index] : NULL;
char *freefrom = NULL, *freereffrom = NULL;
char *freefrom = NULL;
/* reference now can be any block */
refb = BLI_findlink(&key->block, kb->relative);
@ -830,7 +830,10 @@ static void key_evaluate_relative(const int start,
poin = basispoin;
from = key_block_get_data(key, actkb, kb, &freefrom);
reffrom = key_block_get_data(key, actkb, refb, &freereffrom);
/* For meshes, use the original values instead of the bmesh values to
* maintain a constant offset. */
reffrom = refb->data;
poin += start * poinsize;
reffrom += key->elemsize * start; // key elemsize yes!
@ -876,9 +879,6 @@ static void key_evaluate_relative(const int start,
if (freefrom) {
MEM_freeN(freefrom);
}
if (freereffrom) {
MEM_freeN(freereffrom);
}
BLI_assert(!"invalid 'cp[1]'");
return;
}
@ -900,9 +900,6 @@ static void key_evaluate_relative(const int start,
if (freefrom) {
MEM_freeN(freefrom);
}
if (freereffrom) {
MEM_freeN(freereffrom);
}
}
}
}