forked from bartvdbraak/blender
Animation play: Follow feature. Enabled from playback menu in the
timeline. When enabled, ipo, dopesheet, NLA, timeline, clip and sequence editors will follow the current frame during animation. When the cursor reaches the end of the screen, then the next range of frames of the same width is displayed.
This commit is contained in:
parent
d5b1dfa9c6
commit
ced4c5fe22
@ -206,6 +206,8 @@ class TIME_MT_playback(Menu):
|
||||
layout.prop(screen, "use_play_node_editors")
|
||||
layout.prop(screen, "use_play_clip_editors")
|
||||
|
||||
layout.separator()
|
||||
layout.prop(screen, "use_follow")
|
||||
layout.separator()
|
||||
|
||||
layout.prop(scene, "use_frame_drop", text="Frame Dropping")
|
||||
|
@ -3469,11 +3469,29 @@ static int screen_animation_step(bContext *C, wmOperator *UNUSED(op), const wmEv
|
||||
for (sa = window->screen->areabase.first; sa; sa = sa->next) {
|
||||
ARegion *ar;
|
||||
for (ar = sa->regionbase.first; ar; ar = ar->next) {
|
||||
bool redraw = false;
|
||||
if (ar == sad->ar) {
|
||||
ED_region_tag_redraw(ar);
|
||||
redraw = true;
|
||||
}
|
||||
else if (match_region_with_redraws(sa->spacetype, ar->regiontype, sad->redraws)) {
|
||||
redraw = true;
|
||||
}
|
||||
|
||||
if (redraw) {
|
||||
ED_region_tag_redraw(ar);
|
||||
/* do follow here if editor type supports it */
|
||||
if ((sad->redraws & TIME_FOLLOW)) {
|
||||
if ((ar->regiontype == RGN_TYPE_WINDOW &&
|
||||
ELEM (sa->spacetype, SPACE_SEQ, SPACE_TIME, SPACE_IPO, SPACE_ACTION, SPACE_NLA)) ||
|
||||
(sa->spacetype == SPACE_CLIP && ar->regiontype == RGN_TYPE_PREVIEW))
|
||||
{
|
||||
float w = BLI_rctf_size_x(&ar->v2d.cur);
|
||||
if (scene->r.cfra < ar->v2d.cur.xmin || scene->r.cfra > (ar->v2d.cur.xmax)) {
|
||||
ar->v2d.cur.xmin = scene->r.cfra;
|
||||
ar->v2d.cur.xmax = ar->v2d.cur.xmin + w;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -462,6 +462,8 @@ typedef enum eScreen_Redraws_Flag {
|
||||
// TIME_CONTINUE_PHYSICS = (1 << 7), /* UNUSED */
|
||||
TIME_NODES = (1 << 8),
|
||||
TIME_CLIPS = (1 << 9),
|
||||
|
||||
TIME_FOLLOW = (1 << 15),
|
||||
} eScreen_Redraws_Flag;
|
||||
|
||||
/* time->cache */
|
||||
|
@ -413,6 +413,11 @@ static void rna_def_screen(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(prop, "All 3D View Editors", "");
|
||||
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, "rna_Screen_redraw_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_follow", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "redraws_flag", TIME_FOLLOW);
|
||||
RNA_def_property_ui_text(prop, "Follow", "Follow current frame in editors that update");
|
||||
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, "rna_Screen_redraw_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_play_animation_editors", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "redraws_flag", TIME_ALL_ANIM_WIN);
|
||||
RNA_def_property_ui_text(prop, "Animation Editors", "");
|
||||
|
Loading…
Reference in New Issue
Block a user