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
Notes:
blender-bot
2023-02-14 19:45:25 +01:00
Referenced by issue #43582, Importing Custom Normals with FBX fails Referenced by issue #43403, Compositor does not respect interlaced video
|
@ -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