Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2008-02-23 07:09:34 +0300
committerJoshua Leung <aligorith@gmail.com>2008-02-23 07:09:34 +0300
commit14fafab60a5c5ecfdbbf8e532b4980207a191a45 (patch)
tree19c7ae424e6aa6d16ec547335a3de58407ebe24b /source/blender/src/edittime.c
parentf312611a924304bf7048abbb9f5a4dc7895a9c7f (diff)
== 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)
Diffstat (limited to 'source/blender/src/edittime.c')
-rw-r--r--source/blender/src/edittime.c48
1 files changed, 30 insertions, 18 deletions
diff --git a/source/blender/src/edittime.c b/source/blender/src/edittime.c
index 32b46bb7790..34c5bb0ff96 100644
--- a/source/blender/src/edittime.c
+++ b/source/blender/src/edittime.c
@@ -170,6 +170,7 @@ void transform_markers(int mode, int smode) // mode and smode unused here, for c
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 @@ void transform_markers(int mode, int smode) // mode and smode unused here, for c
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;
+ }
+ else
+ markers= &G.scene->markers;
+
+ for (marker= markers->first; marker; marker= marker->next) {
+ if (marker->flag & SELECT) totmark++;
}
- if(totmark==0) return;
+ 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 @@ void transform_markers(int mode, int smode) // mode and smode unused here, for c
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 @@ void transform_markers(int mode, int smode) // mode and smode unused here, for c
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 @@ void transform_markers(int mode, int smode) // mode and smode unused here, for c
}
}
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 @@ void transform_markers(int mode, int smode) // mode and smode unused here, for c
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++;
}