diff options
author | Joshua Leung <aligorith@gmail.com> | 2011-07-12 07:02:53 +0400 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2011-07-12 07:02:53 +0400 |
commit | 2fd3ae7539475fcd2546ba0d5a27687f4e683ccf (patch) | |
tree | cad4cae673771e3c07c4d51ffaa1dfb38af8f320 /source/blender | |
parent | de69b6819d9542663e649b577c4e5670bd1aa21e (diff) |
Bugfix #27881: Motion paths don't correctly update with pose sliding
tools
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/anim.c | 3 | ||||
-rw-r--r-- | source/blender/editors/armature/poseUtils.c | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index 8aa816f9cb5..3300c82cae2 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -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; diff --git a/source/blender/editors/armature/poseUtils.c b/source/blender/editors/armature/poseUtils.c index 7ade93076e5..0f001751a96 100644 --- a/source/blender/editors/armature/poseUtils.c +++ b/source/blender/editors/armature/poseUtils.c @@ -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); + } } } |