[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27018] trunk/blender/source/blender/ blenkernel/intern/fcurve.c: in rare cases fcurves with no handle length can result in 0.0.
Campbell Barton
ideasman42 at gmail.com
Thu Feb 18 20:43:14 CET 2010
Revision: 27018
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27018
Author: campbellbarton
Date: 2010-02-18 20:43:13 +0100 (Thu, 18 Feb 2010)
Log Message:
-----------
in rare cases fcurves with no handle length can result in 0.0. check if the point matches the frame.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/fcurve.c
Modified: trunk/blender/source/blender/blenkernel/intern/fcurve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/fcurve.c 2010-02-18 17:11:12 UTC (rev 27017)
+++ trunk/blender/source/blender/blenkernel/intern/fcurve.c 2010-02-18 19:43:13 UTC (rev 27018)
@@ -1714,9 +1714,13 @@
{
/* evaltime occurs somewhere in the middle of the curve */
for (a=0; prevbezt && bezt && (a < fcu->totvert-1); a++, prevbezt=bezt, bezt++)
- {
+ {
+ /* use if the key is directly on the frame, rare cases this is needed else we get 0.0 instead. */
+ if(fabs(bezt->vec[1][0] - evaltime) < SMALL_NUMBER) {
+ cvalue= bezt->vec[1][1];
+ }
/* evaltime occurs within the interval defined by these two keyframes */
- if ((prevbezt->vec[1][0] <= evaltime) && (bezt->vec[1][0] >= evaltime))
+ else if ((prevbezt->vec[1][0] <= evaltime) && (bezt->vec[1][0] >= evaltime))
{
/* value depends on interpolation mode */
if ((prevbezt->ipo == BEZT_IPO_CONST) || (fcu->flag & FCURVE_DISCRETE_VALUES))
More information about the Bf-blender-cvs
mailing list