diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-01-16 18:55:31 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-01-16 18:55:31 +0300 |
commit | 09122883b2a198351e4234546230cd03f6d89718 (patch) | |
tree | d3253f570501257e4a44241e0932bbf04d5e8adc /source | |
parent | d52551401e185a3e1092fb07edebd07d552e04e2 (diff) | |
parent | abdaf2a4f509f79bf2f0eb231341858045957573 (diff) |
Merge branch 'blender-v2.82-release'
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/fcurve.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index 3876033eaaa..08687ef8cee 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -1171,16 +1171,16 @@ void testhandles_fcurve(FCurve *fcu, eBezTriple_Flag sel_flag, const bool use_ha */ void sort_time_fcurve(FCurve *fcu) { - bool ok = true; /* keep adjusting order of beztriples until nothing moves (bubble-sort) */ - while (ok) { - ok = 0; + if (fcu->bezt) { + BezTriple *bezt; + uint a; - /* currently, will only be needed when there are beztriples */ - if (fcu->bezt) { - BezTriple *bezt; - unsigned int a; + bool ok = true; + while (ok) { + ok = 0; + /* currently, will only be needed when there are beztriples */ /* loop over ALL points to adjust position in array and recalculate handles */ for (a = 0, bezt = fcu->bezt; a < fcu->totvert; a++, bezt++) { @@ -1191,20 +1191,22 @@ void sort_time_fcurve(FCurve *fcu) SWAP(BezTriple, *bezt, *(bezt + 1)); ok = 1; } - - /* if either one of both of the points exceeds crosses over the keyframe time... */ - if ((bezt->vec[0][0] > bezt->vec[1][0]) && (bezt->vec[2][0] < bezt->vec[1][0])) { - /* swap handles if they have switched sides for some reason */ - swap_v2_v2(bezt->vec[0], bezt->vec[2]); - } - else { - /* clamp handles */ - CLAMP_MAX(bezt->vec[0][0], bezt->vec[1][0]); - CLAMP_MIN(bezt->vec[2][0], bezt->vec[1][0]); - } } } } + + for (a = 0, bezt = fcu->bezt; a < fcu->totvert; a++, bezt++) { + /* if either one of both of the points exceeds crosses over the keyframe time... */ + if ((bezt->vec[0][0] > bezt->vec[1][0]) && (bezt->vec[2][0] < bezt->vec[1][0])) { + /* swap handles if they have switched sides for some reason */ + swap_v2_v2(bezt->vec[0], bezt->vec[2]); + } + else { + /* clamp handles */ + CLAMP_MAX(bezt->vec[0][0], bezt->vec[1][0]); + CLAMP_MIN(bezt->vec[2][0], bezt->vec[1][0]); + } + } } } |