== AutoKeying - Tidy Up ==
authorJoshua Leung <aligorith@gmail.com>
Sat, 12 Jan 2008 11:06:51 +0000 (11:06 +0000)
committerJoshua Leung <aligorith@gmail.com>
Sat, 12 Jan 2008 11:06:51 +0000 (11:06 +0000)
This commit restores the "big red button". When Auto-Keying is enabled (record button toggled on), a menu appears beside it to choose which behaviour for auto-keying should be used. This should be more efficient for quickly turning Auto-Keying on/off.

I've also added the relevant version-patches to fix up old files so that sensible default options are in use.

source/blender/makesdna/DNA_userdef_types.h
source/blender/src/header_time.c
source/blender/src/space.c
source/blender/src/transform_conversions.c
source/blender/src/usiblender.c

index cbbd729cb8317cdfd07974d6744302b817178ebc..68692b82ba57b5354776af4f57eae75377889a6d 100644 (file)
@@ -262,9 +262,11 @@ extern UserDef U; /* from usiblender.c !!!! */
 #define USER_SHOW_FPS                  (1 << 21)
 
 /* Auto-Keying mode */
-#define                AUTOKEY_MODE_OFF                0
-#define                AUTOKEY_MODE_NORMAL             1
-#define                AUTOKEY_MODE_EDITKEYS   2
+       /* AUTOKEY_ON is a bitflag */
+#define        AUTOKEY_ON                              1
+       /* AUTOKEY_ON + 2**n...  (i.e. AUTOKEY_MODE_NORMAL = AUTOKEY_ON + 2) to preserve setting, even when autokey turned off  */
+#define                AUTOKEY_MODE_NORMAL             3
+#define                AUTOKEY_MODE_EDITKEYS   5
 
 /* Auto-Keying flag */
 #define                AUTOKEY_FLAG_INSERTAVAIL        (1<<0)
@@ -272,6 +274,7 @@ extern UserDef U; /* from usiblender.c !!!! */
 #define                AUTOKEY_FLAG_AUTOMATKEY         (1<<2)
 
 /* Auto-Keying macros */
+#define IS_AUTOKEY_ON                  (U.autokey_mode & AUTOKEY_ON)
 #define IS_AUTOKEY_MODE(mode)  (U.autokey_mode == AUTOKEY_MODE_##mode)
 #define IS_AUTOKEY_FLAG(flag)  (U.autokey_flag == AUTOKEY_FLAG_##flag)
 
index bd7cbb39610d3c7dec81ac1ce1466d3abd318c0d..7b98d2f5f4cd8c12b684d8ab2e04882f2a7a8743 100644 (file)
@@ -524,13 +524,18 @@ void time_buttons(ScrArea *sa)
                        xco, 0, XIC, YIC, 0, 0, 0, 0, 0, "Skip to End frame (Shift UpArrow)");
        xco+= XIC+8;
        
-       // FIXME: give this icons (and maybe make it XIC wide again) - it used to use the "ICON_REC" (red dot)
-       uiDefButS(block, MENU, REDRAWINFO, 
-                               "Auto-Keying Mode %t|No Auto-Keying %x0|Add/Replace Keys%x1|Replace Keys %x2", 
-                               xco, 0, 4*XIC, YIC, &(U.autokey_mode), 0, 1, 0, 0, 
-                               "Automatic keyframe insertion for Objects and Bones");
+       uiDefIconButBitS(block, TOG, AUTOKEY_ON, REDRAWINFO, ICON_REC,
+                       xco, 0, XIC, YIC, &(U.autokey_mode), 0, 0, 0, 0, "Automatic keyframe insertion for Objects and Bones");
+       xco+= XIC;
+       if (IS_AUTOKEY_ON) {
+               uiDefButS(block, MENU, REDRAWINFO, 
+                                       "Auto-Keying Mode %t|Add/Replace Keys%x3|Replace Keys %x5", 
+                                       xco, 0, 3*XIC, YIC, &(U.autokey_mode), 0, 1, 0, 0, 
+                                       "Mode of automatic keyframe insertion for Objects and Bones");
+               xco+= (4*XIC);
+       }
        
-       xco+= (4*XIC)+16;
+       xco+= 16;
 
        uiDefIconButBitI(block, TOG, TIME_WITH_SEQ_AUDIO, B_DIFF, ICON_SPEAKER,
                                         xco, 0, XIC, YIC, &(stime->redraws), 0, 0, 0, 0, "Play back and sync with audio from Sequence Editor");
index 770401e339935859b2fa1fc8f7a141d2223906a0..dee87f2380c86e4d7776372fb91fcfea2198657b 100644 (file)
@@ -3668,26 +3668,35 @@ void drawinfospace(ScrArea *sa, void *spacedata)
 
 
                uiDefBut(block, LABEL,0,"Auto Keyframe",
-                       (xpos+(2*edgsp)+(2*mpref)+midsp),y5label,mpref,buth,
+                       (xpos+(2*edgsp)+(2*mpref)+midsp),y6label,mpref,buth,
                        0, 0, 0, 0, 0, "");
-               uiDefButS(block, MENU, REDRAWTIME, 
-                               "Auto-Keying Mode %t|No Auto-Keying %x0|Add/Replace Keys%x1|Replace Keys %x2", 
-                               (xpos+edgsp+(2*mpref)+(2*midsp)),y4,mpref, buth, 
-                               &(U.autokey_mode), 0, 1, 0, 0, 
-                               "Automatic keyframe insertion for Objects and Bones");
-       
-               uiBlockBeginAlign(block);
-               uiDefButBitS(block, TOG, AUTOKEY_FLAG_INSERTAVAIL, REDRAWTIME, "Available", 
-                       (xpos+edgsp+(2*mpref)+(2*midsp)),y3,mpref, buth,
-                       &(U.autokey_flag), 0, 0, 0, 0, "Automatic keyframe insertion in available curves");
                        
-               uiDefButBitS(block, TOG, AUTOKEY_FLAG_INSERTNEEDED, REDRAWTIME, "Needed", 
-                       (xpos+edgsp+(2*mpref)+(2*midsp)),y2,mpref, buth,
-                       &(U.autokey_flag), 0, 0, 0, 0, "Automatic keyframe insertion only when keyframe needed");
+               uiBlockBeginAlign(block);
+                       uiDefButBitS(block, TOG, AUTOKEY_ON, REDRAWTIME, "Auto-Keying Enabled", 
+                               (xpos+edgsp+(2*mpref)+(2*midsp)),y5,mpref, buth,
+                               &(U.autokey_mode), 0, 0, 0, 0, "Automatic keyframe insertion for Objects and Bones");
                        
-               uiDefButBitS(block, TOG, AUTOKEY_FLAG_AUTOMATKEY, REDRAWTIME, "Use Visual Keying", 
-                       (xpos+edgsp+(2*mpref)+(2*midsp)),y1,mpref, buth,
-                        &(U.autokey_flag), 0, 0, 0, 0, "Use Visual keying automatically for constrained objects");
+                       if (IS_AUTOKEY_ON) {
+                               uiDefButS(block, MENU, REDRAWTIME, 
+                                               "Auto-Keying Mode %t|Add/Replace Keys%x3|Replace Keys %x5", 
+                                               (xpos+edgsp+(2*mpref)+(2*midsp)),y4,mpref, buth, 
+                                               &(U.autokey_mode), 0, 1, 0, 0, 
+                                               "Mode of automatic keyframe insertion for Objects and Bones");
+                       }
+               uiBlockEndAlign(block);
+       
+               uiBlockBeginAlign(block);
+                       uiDefButBitS(block, TOG, AUTOKEY_FLAG_INSERTAVAIL, REDRAWTIME, "Available", 
+                               (xpos+edgsp+(2*mpref)+(2*midsp)),y3,mpref, buth,
+                               &(U.autokey_flag), 0, 0, 0, 0, "Automatic keyframe insertion in available curves");
+                               
+                       uiDefButBitS(block, TOG, AUTOKEY_FLAG_INSERTNEEDED, REDRAWTIME, "Needed", 
+                               (xpos+edgsp+(2*mpref)+(2*midsp)),y2,mpref, buth,
+                               &(U.autokey_flag), 0, 0, 0, 0, "Automatic keyframe insertion only when keyframe needed");
+                               
+                       uiDefButBitS(block, TOG, AUTOKEY_FLAG_AUTOMATKEY, REDRAWTIME, "Use Visual Keying", 
+                               (xpos+edgsp+(2*mpref)+(2*midsp)),y1,mpref, buth,
+                                &(U.autokey_flag), 0, 0, 0, 0, "Use Visual keying automatically for constrained objects");
                uiBlockEndAlign(block);
 
 
index 2ec8dffa9f7b5971355900cee30b6f358a1fcd8f..77d9938f778d8db24744b8b977021424b3206aa3 100644 (file)
@@ -2967,7 +2967,7 @@ short autokeyframe_cfra_can_key(Object *ob)
        short found= 0;
        
        /* only filter if auto-key mode requires this */
-       if (IS_AUTOKEY_MODE(OFF))
+       if (IS_AUTOKEY_ON == 0)
                return 0;
        else if (IS_AUTOKEY_MODE(NORMAL)) 
                return 1;
index 2bf2d5d9ae9f506a4206525918d48d7564f2e7b6..147f5a7913723496e0b6f46d58a1c0e2d4da6b8a 100644 (file)
@@ -197,6 +197,16 @@ static void init_userdef_file(void)
        if(U.flag & USER_CUSTOM_RANGE) 
                vDM_ColorBand_store(&U.coba_weight); /* signal for derivedmesh to use colorband */
        
+       /* Auto-keyframing settings */
+       if(U.autokey_mode == 0) {
+               /* AUTOKEY_MODE_NORMAL - AUTOKEY_ON = x  <==> 3 - 1 = 2 */
+               U.autokey_mode |= 2;
+               
+               if(U.flag & (1<<15)) U.autokey_flag |= AUTOKEY_FLAG_INSERTAVAIL;
+               if(U.flag & (1<<19)) U.autokey_flag |= AUTOKEY_FLAG_INSERTNEEDED;
+               if(G.flags & (1<<30)) U.autokey_flag |= AUTOKEY_FLAG_AUTOMATKEY;
+       }
+       
        if (G.main->versionfile <= 191) {
                strcpy(U.plugtexdir, U.textudir);
                strcpy(U.sounddir, "/");