diff options
author | Joshua Leung <aligorith@gmail.com> | 2007-12-30 15:08:28 +0300 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2007-12-30 15:08:28 +0300 |
commit | 5be2e5aa9821a1da9cf16d7dd848a17487f68685 (patch) | |
tree | e8e605e003d4f440ffb354bf8bdf29ca423035c9 /source/blender/src/edittime.c | |
parent | 96935a6c5d35974e08604a9c338b8dcd06a7b9f8 (diff) |
== PoseLib - Overhauled Implementation ==
Based on feedback from Ton, I've recoded the way "PoseLibs" are implemented/exposed. Therefore, quite a bit of code has been changed to fit this in better.
Now, ANY ACTION can be a "PoseLib". A set of Markers which belong to the Action (it's taken a year, but they're finally back), are used to tag "poses" in the Action. These markers are shown using diamond-shaped blue icons (designed by Matt Ebb) in three shades - unselected/normal, selected, active.
Notes:
* Each Armature Object has an Action which acts as a PoseLib.
* Improved UI presented in buttons panel for this
-- added proper buttons for action assigning
-- renamed "Validate PoseLib" to "Auto-Sync PoseLib" (this option auto-tags poses based on keyframes found)
Like in the 3d-view, use the hotkeys:
* Shift-L to add a local marker
* Ctrl-Shift-L to rename a local marker
* Alt-L to delete selected local markers
Note: transforms, etc. are not currently available with these markers
== PoseLib Preview ==
Added a few features here:
* Left/Right-Arrow keys now change the poses too (previous and next respectively)
* Up/Down-Arrow keys also change the poses, but "jump" to a pose 5 steps away in their respective directions
Diffstat (limited to 'source/blender/src/edittime.c')
-rw-r--r-- | source/blender/src/edittime.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/source/blender/src/edittime.c b/source/blender/src/edittime.c index f5c6fe5a95e..1520cb6c696 100644 --- a/source/blender/src/edittime.c +++ b/source/blender/src/edittime.c @@ -473,7 +473,7 @@ void get_minmax_markers(short sel, float *first, float *last) *last= max; } -TimeMarker *find_nearest_marker(int clip_y) +TimeMarker *find_nearest_marker(ListBase *markers, int clip_y) { TimeMarker *marker; float xmin, xmax; @@ -483,7 +483,7 @@ TimeMarker *find_nearest_marker(int clip_y) getmouseco_areawin (mval); /* first clip selection in Y */ - if((clip_y) && (mval[1] > 30)) + if ((clip_y) && (mval[1] > 30)) return NULL; mval[0]-=7; @@ -494,7 +494,7 @@ TimeMarker *find_nearest_marker(int clip_y) xmin= rectf.xmin; xmax= rectf.xmax; - for(marker= G.scene->markers.first; marker; marker= marker->next) { + for (marker= markers->first; marker; marker= marker->next) { if ((marker->frame > xmin) && (marker->frame <= xmax)) { return marker; } @@ -877,9 +877,9 @@ void winqreadtimespace(ScrArea *sa, void *spacedata, BWinEvent *evt) case RIGHTMOUSE: /* select/deselect marker */ getmouseco_areawin(mval); areamouseco_to_ipoco(G.v2d, mval, &dx, &dy); - + cfra= find_nearest_marker_time(dx); - + if (G.qual && LR_SHIFTKEY) select_timeline_marker_frame(cfra, 1); else |