NLA: fix keyframes getting messed up when making strips longer. For drawing

and other operations the nla mapping would be applied to the curves, but not
restored correctly. The unmap function was not the inverse of the map function,
and it's not clear to me it's even possible to make it so due to repeat, so
now the old coordinates are backed up in a list and then restored afterwards.
This commit is contained in:
2010-01-12 21:20:09 +00:00
parent 63e80e271d
commit b39be60075
11 changed files with 98 additions and 49 deletions

View File

@@ -453,7 +453,7 @@ void getcolor_fcurve_rainbow(int cur, int tot, float *out);
struct AnimData *ANIM_nla_mapping_get(bAnimContext *ac, bAnimListElem *ale);
/* Apply/Unapply NLA mapping to all keyframes in the nominated F-Curve */
void ANIM_nla_mapping_apply_fcurve(struct AnimData *adt, struct FCurve *fcu, short restore, short only_keys);
void ANIM_nla_mapping_apply_fcurve(struct AnimData *adt, struct FCurve *fcu, short restore, short only_keys, ListBase *backup);
/* ..... */

View File

@@ -94,6 +94,7 @@ typedef struct BeztEditData {
ListBase list; /* temp list for storing custom list of data to check */
struct Scene *scene; /* pointer to current scene - many tools need access to cfra/etc. */
void *data; /* pointer to custom data - usually 'Object' but also 'rectf', but could be other types too */
void *data2; /* pointer to more custom data */
float f1, f2; /* storage of times/values as 'decimals' */
int i1, i2; /* storage of times/values/flags as 'whole' numbers */
} BeztEditData;