[Bf-blender-cvs] [8dfe2801ace] blender-v2.81-release: Fix T71356: Motion Paths no longer update

Sergey Sharybin noreply at git.blender.org
Tue Nov 5 14:33:47 CET 2019


Commit: 8dfe2801ace57798f2df24a0c5b462a0b9c52443
Author: Sergey Sharybin
Date:   Tue Nov 5 14:31:24 2019 +0100
Branches: blender-v2.81-release
https://developer.blender.org/rB8dfe2801ace57798f2df24a0c5b462a0b9c52443

Fix T71356: Motion Paths no longer update

===================================================================

M	source/blender/editors/animation/anim_motion_paths.c

===================================================================

diff --git a/source/blender/editors/animation/anim_motion_paths.c b/source/blender/editors/animation/anim_motion_paths.c
index e4eabf43493..e6ab3609507 100644
--- a/source/blender/editors/animation/anim_motion_paths.c
+++ b/source/blender/editors/animation/anim_motion_paths.c
@@ -236,10 +236,8 @@ static void motionpath_get_global_framerange(ListBase *targets, int *r_sfra, int
 
 static int motionpath_get_prev_keyframe(MPathTarget *mpt, DLRBT_Tree *fcu_keys, int current_frame)
 {
-  /* If the current frame is outside of the configured motion path range we ignore update of this
-   * motion path by using invalid frame range where start frame is above the end frame. */
   if (current_frame <= mpt->mpath->start_frame) {
-    return INT_MAX;
+    return mpt->mpath->start_frame;
   }
 
   float current_frame_float = current_frame;
@@ -262,10 +260,8 @@ static int motionpath_get_prev_prev_keyframe(MPathTarget *mpt,
 
 static int motionpath_get_next_keyframe(MPathTarget *mpt, DLRBT_Tree *fcu_keys, int current_frame)
 {
-  /* If the current frame is outside of the configured motion path range we ignore update of this
-   * motion path by using invalid frame range where start frame is above the end frame. */
   if (current_frame >= mpt->mpath->end_frame) {
-    return INT_MIN;
+    return mpt->mpath->end_frame;
   }
 
   float current_frame_float = current_frame;
@@ -305,6 +301,15 @@ static void motionpath_calculate_update_range(MPathTarget *mpt,
                                               int *r_sfra,
                                               int *r_efra)
 {
+  *r_sfra = INT_MAX;
+  *r_efra = INT_MIN;
+
+  /* If the current frame is outside of the configured motion path range we ignore update of this
+   * motion path by using invalid frame range where start frame is above the end frame. */
+  if (current_frame < mpt->mpath->start_frame || current_frame > mpt->mpath->end_frame) {
+    return;
+  }
+
   /* Similar to the case when there is only a single keyframe: need to update en entire range to
    * a constant value. */
   if (!motionpath_check_can_use_keyframe_range(mpt, adt, fcurve_list)) {
@@ -313,9 +318,6 @@ static void motionpath_calculate_update_range(MPathTarget *mpt,
     return;
   }
 
-  *r_sfra = INT_MAX;
-  *r_efra = INT_MIN;
-
   /* NOTE: Iterate over individual f-curves, and check their keyframes individually and pick a
    * widest range from them. This is because it's possible to have more narrow keyframe on a
    * channel which wasn't edited.



More information about the Bf-blender-cvs mailing list