[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13823] trunk/blender/source/blender: == PoseLib - Action Editor Integration (Transform) ==
Joshua Leung
aligorith at gmail.com
Sat Feb 23 05:09:36 CET 2008
Revision: 13823
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13823
Author: aligorith
Date: 2008-02-23 05:09:34 +0100 (Sat, 23 Feb 2008)
Log Message:
-----------
== PoseLib - Action Editor Integration (Transform) ==
Now it is possible to transform Pose Markers in the Action Editor. (Note: it is a bit of a quick hack)
Modified Paths:
--------------
trunk/blender/source/blender/makesdna/DNA_action_types.h
trunk/blender/source/blender/src/editaction.c
trunk/blender/source/blender/src/edittime.c
trunk/blender/source/blender/src/header_action.c
Modified: trunk/blender/source/blender/makesdna/DNA_action_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_action_types.h 2008-02-23 02:12:50 UTC (rev 13822)
+++ trunk/blender/source/blender/makesdna/DNA_action_types.h 2008-02-23 04:09:34 UTC (rev 13823)
@@ -231,7 +231,9 @@
/* don't kill overlapping keyframes after transform */
SACTION_NOTRANSKEYCULL = (1<<4),
/* don't include keyframes that are out of view */
- SACTION_HORIZOPTIMISEON = (1<<5)
+ SACTION_HORIZOPTIMISEON = (1<<5),
+ /* hack for moving pose-markers (temp flag) */
+ SACTION_POSEMARKERS_MOVE = (1<<6)
} SACTION_FLAG;
/* SpaceAction AutoSnap Settings (also used by SpaceNLA) */
Modified: trunk/blender/source/blender/src/editaction.c
===================================================================
--- trunk/blender/source/blender/src/editaction.c 2008-02-23 02:12:50 UTC (rev 13822)
+++ trunk/blender/source/blender/src/editaction.c 2008-02-23 04:09:34 UTC (rev 13823)
@@ -4277,6 +4277,11 @@
action_rename_localmarker(data);
else if (G.qual == LR_ALTKEY)
action_remove_localmarkers(data);
+ else if (G.qual == LR_CTRLKEY) {
+ G.saction->flag |= SACTION_POSEMARKERS_MOVE;
+ transform_markers('g', 0);
+ G.saction->flag &= ~SACTION_POSEMARKERS_MOVE;
+ }
}
break;
Modified: trunk/blender/source/blender/src/edittime.c
===================================================================
--- trunk/blender/source/blender/src/edittime.c 2008-02-23 02:12:50 UTC (rev 13822)
+++ trunk/blender/source/blender/src/edittime.c 2008-02-23 04:09:34 UTC (rev 13823)
@@ -170,6 +170,7 @@
SpaceLink *slink= curarea->spacedata.first;
SpaceTime *stime= curarea->spacedata.first;
SpaceAction *saction = curarea->spacedata.first;
+ ListBase *markers;
TimeMarker *marker, *selmarker=NULL;
float dx, fac;
int a, ret_val= 0, totmark=0, *oldframe, offs, firsttime=1;
@@ -177,16 +178,26 @@
short val, pmval[2], mval[2], mvalo[2];
char str[32];
- for(marker= G.scene->markers.first; marker; marker= marker->next) {
- if(marker->flag & SELECT) totmark++;
+ /* hack for pose-markers in action editor */
+ if ((slink->spacetype == SPACE_ACTION) && (saction->flag & SACTION_POSEMARKERS_MOVE)) {
+ if (saction->action)
+ markers= &saction->action->markers;
+ else
+ markers= NULL;
}
- if(totmark==0) return;
+ else
+ markers= &G.scene->markers;
+ for (marker= markers->first; marker; marker= marker->next) {
+ if (marker->flag & SELECT) totmark++;
+ }
+ if (totmark==0) return;
+
oldframe= MEM_mallocN(totmark*sizeof(int), "marker array");
- for(a=0, marker= G.scene->markers.first; marker; marker= marker->next) {
- if(marker->flag & SELECT) {
+ for (a=0, marker= markers->first; marker; marker= marker->next) {
+ if (marker->flag & SELECT) {
oldframe[a]= marker->frame;
- selmarker= marker; // used for hederprint
+ selmarker= marker; // used for headerprint
a++;
}
}
@@ -197,8 +208,7 @@
getmouseco_areawin(pmval);
mvalo[0]= pmval[0];
- while(ret_val == 0) {
-
+ while (ret_val == 0) {
getmouseco_areawin(mval);
if (mval[0] != mvalo[0] || firsttime) {
@@ -213,14 +223,15 @@
apply_keyb_grid(&fac, 0.0, 1.0, 0.1, U.flag & USER_AUTOGRABGRID);
offs= (int)fac;
- for(a=0, marker= G.scene->markers.first; marker; marker= marker->next) {
- if(marker->flag & SELECT) {
+ for (a=0, marker= markers->first; marker; marker= marker->next) {
+ if (marker->flag & SELECT) {
marker->frame= oldframe[a] + offs;
a++;
}
}
- if(totmark==1) { // we print current marker value
+ if (totmark==1) {
+ /* we print current marker value */
if (ELEM(slink->spacetype, SPACE_TIME, SPACE_SOUND)) {
if (stime->flag & TIME_DRAWFRAMES)
sprintf(str, "Marker %d offset %d", selmarker->frame, offs);
@@ -238,6 +249,7 @@
}
}
else {
+ /* we only print the offset */
if (ELEM(slink->spacetype, SPACE_TIME, SPACE_SOUND)) {
if (stime->flag & TIME_DRAWFRAMES)
sprintf(str, "Marker offset %d ", offs);
@@ -261,20 +273,20 @@
else PIL_sleep_ms(10); // idle
/* emptying queue and reading events */
- while( qtest() ) {
+ while ( qtest() ) {
event= extern_qread(&val);
- if(val) {
- if(event==ESCKEY || event==RIGHTMOUSE) ret_val= 2;
- else if(event==LEFTMOUSE || event==RETKEY || event==SPACEKEY) ret_val= 1;
+ if (val) {
+ if (ELEM(event, ESCKEY, RIGHTMOUSE)) ret_val= 2;
+ else if (ELEM3(event, LEFTMOUSE, RETKEY, SPACEKEY)) ret_val= 1;
}
}
}
/* restore? */
- if(ret_val==2) {
- for(a=0, marker= G.scene->markers.first; marker; marker= marker->next) {
- if(marker->flag & SELECT) {
+ if (ret_val==2) {
+ for (a=0, marker= markers->first; marker; marker= marker->next) {
+ if (marker->flag & SELECT) {
marker->frame= oldframe[a];
a++;
}
Modified: trunk/blender/source/blender/src/header_action.c
===================================================================
--- trunk/blender/source/blender/src/header_action.c 2008-02-23 02:12:50 UTC (rev 13822)
+++ trunk/blender/source/blender/src/header_action.c 2008-02-23 04:09:34 UTC (rev 13823)
@@ -204,7 +204,8 @@
ACTMENU_MARKERS_MOVE,
ACTMENU_MARKERS_LOCALADD,
ACTMENU_MARKERS_LOCALRENAME,
- ACTMENU_MARKERS_LOCALDELETE
+ ACTMENU_MARKERS_LOCALDELETE,
+ ACTMENU_MARKERS_LOCALMOVE
};
void do_action_buttons(unsigned short event)
@@ -1363,6 +1364,11 @@
case ACTMENU_MARKERS_LOCALRENAME:
action_rename_localmarker(G.saction->action);
break;
+ case ACTMENU_MARKERS_LOCALMOVE:
+ G.saction->flag |= SACTION_POSEMARKERS_MOVE;
+ transform_markers('g', 0);
+ G.saction->flag &= ~SACTION_POSEMARKERS_MOVE;
+ break;
}
allqueue(REDRAWMARKER, 0);
@@ -1383,9 +1389,9 @@
menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_DUPLICATE, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Marker|X", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_DELETE, "");
-
+
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
+
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "(Re)Name Marker|Ctrl M", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_NAME, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move Marker|Ctrl G", 0, yco-=20,
@@ -1393,12 +1399,14 @@
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Add Local Marker|Shift L", 0, yco-=20,
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Add Pose Marker|Shift L", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_LOCALADD, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rename Local Marker|Ctrl Shift L", 0, yco-=20,
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rename Pose Marker|Ctrl Shift L", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_LOCALRENAME, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Local Marker|Alt L", 0, yco-=20,
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Pose Marker|Alt L", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_LOCALDELETE, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move Pose Marker|Ctrl L", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_LOCALMOVE, "");
if(curarea->headertype==HEADERTOP) {
uiBlockSetDirection(block, UI_DOWN);
More information about the Bf-blender-cvs
mailing list