diff options
author | Jacques Lucke <mail@jlucke.com> | 2019-01-31 14:17:43 +0300 |
---|---|---|
committer | Jacques Lucke <mail@jlucke.com> | 2019-01-31 14:19:33 +0300 |
commit | f4c0dacde7bfc9efea9d0cf990325109fa2f4bb0 (patch) | |
tree | 84df0c6315a14219b663a9cf2bfef99e33dacf8f /source/blender/blenkernel | |
parent | 83f8f44791374dd051728e44d89fbdeee15c60aa (diff) |
Fix: allow curve of driver to be evaluated individually
This is necessary when adding a new keyframe to a fcurve
that also has a driver.
Reviewers: brecht, campbellbarton
Differential Revision: https://developer.blender.org/D4278
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_fcurve.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/fcurve.c | 8 |
2 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h index 23d812c72ce..c9ff37622f8 100644 --- a/source/blender/blenkernel/BKE_fcurve.h +++ b/source/blender/blenkernel/BKE_fcurve.h @@ -297,6 +297,7 @@ void correct_bezpart(float v1[2], float v2[2], float v3[2], float v4[2]); /* evaluate fcurve */ float evaluate_fcurve(struct FCurve *fcu, float evaltime); +float evaluate_fcurve_only_curve(struct FCurve *fcu, float evaltime); float evaluate_fcurve_driver(struct PathResolvedRNA *anim_rna, struct FCurve *fcu, struct ChannelDriver *driver_orig, float evaltime); /* evaluate fcurve and store value */ diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index 8ac3c840680..fa8fd9247bb 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -2799,6 +2799,14 @@ float evaluate_fcurve(FCurve *fcu, float evaltime) return evaluate_fcurve_ex(fcu, evaltime, 0.0); } +float evaluate_fcurve_only_curve(FCurve *fcu, float evaltime) +{ + /* Can be used to evaluate the (keyframed) fcurve only. + * Also works for driver-fcurves when the driver itself is not relevant. + * E.g. when inserting a keyframe in a driver fcurve. */ + return evaluate_fcurve_ex(fcu, evaltime, 0.0); +} + float evaluate_fcurve_driver(PathResolvedRNA *anim_rna, FCurve *fcu, ChannelDriver *driver_orig, float evaltime) { BLI_assert(fcu->driver != NULL); |