Small feature added to new "show bone paths around cfra":
authorTon Roosendaal <ton@blender.org>
Wed, 14 Nov 2007 16:50:51 +0000 (16:50 +0000)
committerTon Roosendaal <ton@blender.org>
Wed, 14 Nov 2007 16:50:51 +0000 (16:50 +0000)
- after a insert-key (autokey mode) it updates paths.

source/blender/src/editarmature.c
source/blender/src/transform_conversions.c

index d61656045fd215833ce16063f967513f826f96b6..3e7e00ef240d8133e86d57327996797b5d7a967e 100644 (file)
@@ -2371,6 +2371,8 @@ int do_pose_selectbuffer(Base *base, unsigned int *buffer, short hits)
        nearBone= get_bone_from_selectbuffer(base, buffer, hits, 1);
 
        if (nearBone) {
        nearBone= get_bone_from_selectbuffer(base, buffer, hits, 1);
 
        if (nearBone) {
+               bArmature *arm= ob->data;
+               
                /* since we do unified select, we don't shift+select a bone if the armature object was not active yet */
                if (!(G.qual & LR_SHIFTKEY) || base!=BASACT){
                        deselectall_posearmature(ob, 0, 0);
                /* since we do unified select, we don't shift+select a bone if the armature object was not active yet */
                if (!(G.qual & LR_SHIFTKEY) || base!=BASACT){
                        deselectall_posearmature(ob, 0, 0);
@@ -2381,9 +2383,7 @@ int do_pose_selectbuffer(Base *base, unsigned int *buffer, short hits)
                        if (nearBone->flag & BONE_SELECTED) {
                                /* if not active, we make it active */
                                if((nearBone->flag & BONE_ACTIVE)==0) {
                        if (nearBone->flag & BONE_SELECTED) {
                                /* if not active, we make it active */
                                if((nearBone->flag & BONE_ACTIVE)==0) {
-                                       bArmature *arm= ob->data;
                                        bone_looper(ob, arm->bonebase.first, NULL, clear_active_flag);
                                        bone_looper(ob, arm->bonebase.first, NULL, clear_active_flag);
-                                       
                                        nearBone->flag |= BONE_ACTIVE;
                                }
                                else {
                                        nearBone->flag |= BONE_ACTIVE;
                                }
                                else {
@@ -2392,7 +2392,6 @@ int do_pose_selectbuffer(Base *base, unsigned int *buffer, short hits)
                                }
                        }
                        else{
                                }
                        }
                        else{
-                               bArmature *arm= ob->data;
                                bone_looper(ob, arm->bonebase.first, NULL, clear_active_flag);
                                
                                nearBone->flag |= (BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL|BONE_ACTIVE);
                                bone_looper(ob, arm->bonebase.first, NULL, clear_active_flag);
                                
                                nearBone->flag |= (BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL|BONE_ACTIVE);
index 7de16146bca7055622929f602bc29f7f749e4330..60ff52ec747baa97ec4786c7babe4e3a8613da18 100644 (file)
@@ -2765,6 +2765,7 @@ void autokeyframe_ob_cb_func(Object *ob, int tmode)
  */
 void autokeyframe_pose_cb_func(Object *ob, int tmode, short targetless_ik)
 {
  */
 void autokeyframe_pose_cb_func(Object *ob, int tmode, short targetless_ik)
 {
+       bArmature *arm= ob->data;
        bAction *act;
        bPose   *pose;
        bPoseChannel *pchan;
        bAction *act;
        bPose   *pose;
        bPoseChannel *pchan;
@@ -2838,6 +2839,16 @@ void autokeyframe_pose_cb_func(Object *ob, int tmode, short targetless_ik)
                
                remake_action_ipos (act);
                allqueue(REDRAWMARKER, 0);
                
                remake_action_ipos (act);
                allqueue(REDRAWMARKER, 0);
+               
+               /* locking can be disabled */
+               ob->pose->flag &= ~(POSE_DO_UNLOCK|POSE_LOCKED);
+               
+               /* do the bone paths */
+               if (arm->pathflag & ARM_PATH_ACFRA) {
+                       pose_clear_paths(ob);
+                       pose_calculate_path(ob);
+               }               
+               
        }
        else {
                /* tag channels that should have unkeyed data */
        }
        else {
                /* tag channels that should have unkeyed data */