[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