[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16760] trunk/blender/source/blender: Keyframing:
Joshua Leung
aligorith at gmail.com
Sat Sep 27 06:51:43 CEST 2008
Revision: 16760
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16760
Author: aligorith
Date: 2008-09-27 06:51:42 +0200 (Sat, 27 Sep 2008)
Log Message:
-----------
Keyframing:
* Tidied up code a bit to remove an extra var declaration that may have been causing problems with Visual Keying
* Added buttons to Insert/Delete keyframes from current frame into Timeline header. Note that it preferentially works will insert keyframes for a 3d-view (if it exists), otherwise it "should" take the largest area available.
Modified Paths:
--------------
trunk/blender/source/blender/include/blendef.h
trunk/blender/source/blender/src/header_time.c
trunk/blender/source/blender/src/keyframing.c
Modified: trunk/blender/source/blender/include/blendef.h
===================================================================
--- trunk/blender/source/blender/include/blendef.h 2008-09-27 00:36:18 UTC (rev 16759)
+++ trunk/blender/source/blender/include/blendef.h 2008-09-27 04:51:42 UTC (rev 16760)
@@ -406,6 +406,8 @@
#define B_TL_NEXTKEY 755
#define B_TL_STOP 756
#define B_TL_PREVIEWON 757
+#define B_TL_INSERTKEY 758
+#define B_TL_DELETEKEY 759
/* NLA: 801-850 */
#define B_NLAHOME 801
Modified: trunk/blender/source/blender/src/header_time.c
===================================================================
--- trunk/blender/source/blender/src/header_time.c 2008-09-27 00:36:18 UTC (rev 16759)
+++ trunk/blender/source/blender/src/header_time.c 2008-09-27 04:51:42 UTC (rev 16760)
@@ -45,6 +45,7 @@
#include "BIF_gl.h"
#include "BIF_interface.h"
+#include "BIF_keyframing.h"
#include "BIF_resources.h"
#include "BIF_screen.h"
#include "BIF_space.h"
@@ -130,6 +131,17 @@
BIF_undo_push("Set anim-preview range");
allqueue(REDRAWALL, 0);
break;
+
+ case B_TL_INSERTKEY:
+ /* insert keyframe */
+ common_insertkey();
+ allqueue(REDRAWTIME, 1);
+ break;
+ case B_TL_DELETEKEY:
+ /* delete keyframe */
+ common_deletekey();
+ allqueue(REDRAWTIME, 1);
+ break;
}
}
@@ -557,6 +569,15 @@
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");
+ xco+= XIC+16;
+
+ uiDefIconBut(block, BUT, B_TL_INSERTKEY, ICON_KEY_HLT,
+ xco, 0, XIC, YIC, 0, 0, 0, 0, 0, "Insert Keyframe for the context of the largest area (IKEY)");
+ xco+= XIC+4;
+ uiDefIconBut(block, BUT, B_TL_DELETEKEY, ICON_KEY_DEHLT,
+ xco, 0, XIC, YIC, 0, 0, 0, 0, 0, "Delete Keyframe for the context of the largest area (ALTKEY-IKEY)");
+ xco+= XIC+4;
+
/* always as last */
sa->headbutlen= xco+XIC+80; // +80 because the last button is not an icon
Modified: trunk/blender/source/blender/src/keyframing.c
===================================================================
--- trunk/blender/source/blender/src/keyframing.c 2008-09-27 00:36:18 UTC (rev 16759)
+++ trunk/blender/source/blender/src/keyframing.c 2008-09-27 04:51:42 UTC (rev 16760)
@@ -644,7 +644,7 @@
/* parented objects are not supported, as the effects of the parent
* are included in the matrix, which kindof beats the point
*/
- if ((ob) && (ob->parent==NULL)) {
+ if (ob->parent == NULL) {
/* only Location or Rotation keyframes are supported now */
if (ELEM3(adrcode, OB_LOC_X, OB_LOC_Y, OB_LOC_Z)) {
/* assumes that OB_LOC_Z > OB_LOC_Y > OB_LOC_X */
@@ -690,7 +690,7 @@
return tmat[3][index];
}
else if (ELEM4(adrcode, AC_QUAT_W, AC_QUAT_X, AC_QUAT_Y, AC_QUAT_Z)) {
- float tmat[4][4], trimat[3][3], quat[4];
+ float trimat[3][3], quat[4];
/* assumes that AC_QUAT_Z > AC_QUAT_Y > AC_QUAT_X > AC_QUAT_W */
index= adrcode - AC_QUAT_W;
@@ -1478,19 +1478,47 @@
/* get keyingsets for appropriate context */
-static void commonkey_context_get (ListBase *sources, bKeyingContext **ksc)
+static void commonkey_context_get (ScrArea *sa, ListBase *sources, bKeyingContext **ksc)
{
/* check view type */
- switch (curarea->spacetype) {
+ switch (sa->spacetype) {
/* 3d view - first one tested as most often used */
case SPACE_VIEW3D:
+ {
commonkey_context_getv3d(sources, ksc);
+ }
break;
/* buttons view */
case SPACE_BUTS:
+ {
commonkey_context_getsbuts(sources, ksc);
+ }
break;
+
+ /* timeline view - keyframe buttons */
+ case SPACE_TIME:
+ {
+ ScrArea *sab;
+
+ /* try to find largest 3d-view available
+ * (mostly of the time, this is what when user will want this,
+ * as it's a standard feature in all other apps)
+ */
+ sab= find_biggest_area_of_type(SPACE_VIEW3D);
+ if (sab) {
+ commonkey_context_getv3d(sources, ksc);
+ return;
+ }
+
+ /* otherwise, try to find the biggest area
+ * WARNING: must check if that area is another timeline, as that would cause infinite loop
+ */
+ sab= closest_bigger_area();
+ if ((sab) && (sab->spacetype != SPACE_TIME))
+ commonkey_context_get(sab, sources, ksc);
+ }
+ break;
}
}
@@ -1656,7 +1684,7 @@
/* default - check per view */
default:
/* get the keyingsets and the data to add keyframes to */
- commonkey_context_get(&dsources, &ksc);
+ commonkey_context_get(curarea, &dsources, &ksc);
break;
}
More information about the Bf-blender-cvs
mailing list