Fix bug with autonormalization and transform (after own range commit).

Transforming the center after transforming a handle would continuously
flush an extra offset to the handles.

Also use normalization range of -1.0 to 1.0 instead of -0.5 to 0.5 (not
really important, just for better comparisons)
This commit is contained in:
Antony Riakiotakis 2015-04-13 18:37:15 +02:00
parent cae23bab6b
commit aed97c9efb
2 changed files with 3 additions and 3 deletions

@ -330,7 +330,7 @@ static float normalization_factor_get(Scene *scene, FCurve *fcu, short flag, flo
range = max_coord - min_coord; range = max_coord - min_coord;
if (range > FLT_EPSILON) { if (range > FLT_EPSILON) {
factor = 1.0f / range; factor = 2.0f / range;
} }
offset = -min_coord - range / 2.0f; offset = -min_coord - range / 2.0f;
} }

@ -4549,12 +4549,12 @@ void flushTransGraphData(TransInfo *t)
if ((td->flag & TD_MOVEHANDLE1) && td2d->h1) { if ((td->flag & TD_MOVEHANDLE1) && td2d->h1) {
td2d->h1[0] = td2d->ih1[0] + td->loc[0] - td->iloc[0]; td2d->h1[0] = td2d->ih1[0] + td->loc[0] - td->iloc[0];
td2d->h1[1] = td2d->ih1[1] + (td->loc[1] - td->iloc[1]) * inv_unit_scale - tdg->offset; td2d->h1[1] = td2d->ih1[1] + (td->loc[1] - td->iloc[1]) * inv_unit_scale;
} }
if ((td->flag & TD_MOVEHANDLE2) && td2d->h2) { if ((td->flag & TD_MOVEHANDLE2) && td2d->h2) {
td2d->h2[0] = td2d->ih2[0] + td->loc[0] - td->iloc[0]; td2d->h2[0] = td2d->ih2[0] + td->loc[0] - td->iloc[0];
td2d->h2[1] = td2d->ih2[1] + (td->loc[1] - td->iloc[1]) * inv_unit_scale - tdg->offset; td2d->h2[1] = td2d->ih2[1] + (td->loc[1] - td->iloc[1]) * inv_unit_scale;
} }
} }
} }