Bugfix #27881: Motion paths don't correctly update with pose sliding
authorJoshua Leung <aligorith@gmail.com>
Tue, 12 Jul 2011 03:02:53 +0000 (03:02 +0000)
committerJoshua Leung <aligorith@gmail.com>
Tue, 12 Jul 2011 03:02:53 +0000 (03:02 +0000)
tools

source/blender/blenkernel/intern/anim.c
source/blender/editors/armature/poseUtils.c

index 8aa816f9cb5b566b155386776c5cb5518358d578..3300c82cae2d0c5632eabfcf315d414b9bb772ef 100644 (file)
@@ -173,7 +173,7 @@ bMotionPath *animviz_verify_motionpaths(Scene *scene, Object *ob, bPoseChannel *
        }
 
        /* avoid 0 size allocs */
-       if(avs->path_sf >= avs->path_ef) {
+       if (avs->path_sf >= avs->path_ef) {
                return NULL;
        }
 
@@ -231,6 +231,7 @@ typedef struct MPathTarget {
 /* get list of motion paths to be baked for the given object
  *     - assumes the given list is ready to be used
  */
+// TODO: it would be nice in future to be able to update objects dependant on these bones too?
 void animviz_get_object_motionpaths(Object *ob, ListBase *targets)
 {
        MPathTarget *mpt;
index 7ade93076e5a44f8e07f5db87104f9ea8534fe5b..0f001751a96237330fdb364101d8d93c082aa96a 100644 (file)
@@ -247,6 +247,15 @@ void poseAnim_mapping_autoKeyframe (bContext *C, Scene *scene, Object *ob, ListB
                /* insert keyframes for all relevant bones in one go */
                ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cframe);
                BLI_freelistN(&dsources);
+               
+               /* do the bone paths
+                *      - only do this if keyframes should have been added
+                *      - do not calculate unless there are paths already to update...
+                */
+               if (C && (ob->pose->avs.path_bakeflag & MOTIONPATH_BAKE_HAS_PATHS)) {
+                       //ED_pose_clear_paths(C, ob); // XXX for now, don't need to clear
+                       ED_pose_recalculate_paths(scene, ob);
+               }
        }
 }