diff --git a/paint/sources/tab_timeline.c b/paint/sources/tab_timeline.c index 1791e2f5..6e890860 100644 --- a/paint/sources/tab_timeline.c +++ b/paint/sources/tab_timeline.c @@ -39,6 +39,7 @@ i32 tab_timeline_scroll_drag_v = 0; static i32 tab_timeline_max_frames = 200; static i32 tab_timeline_frame_rate = 24; +static bool tab_timeline_skinning = false; static any_array_t *tab_timeline_keyframes = NULL; static any_array_t *tab_timeline_origins = NULL; static i32 tab_timeline_last_frame = 0; @@ -352,6 +353,10 @@ static void tab_timeline_frame_change_on_next_frame(void *_) { from == 0 ? tab_timeline_save_mesh_origins() : tab_timeline_save_mesh_to_keyframes(from); to == 0 ? tab_timeline_load_mesh_origins() : tab_timeline_load_mesh_from_keyframes((float)to); } + + if (tab_timeline_skinning) { + project_reimport_mesh_skinned(to); + } } static void tab_timeline_add_keyframe_on_next_frame(void *_) { @@ -662,6 +667,14 @@ void tab_timeline_draw_edit() { ui_menu_keep_open = true; } + ui_handle_t *hskin = ui_handle(__ID__); + hskin->b = tab_timeline_skinning; + ui_check(hskin, tr("Skinning"), ""); + if (hskin->changed) { + tab_timeline_skinning = hskin->b; + ui_menu_keep_open = true; + } + if (ui_menu_button(tr("Clear"), "", ICON_ERASE)) { sys_notify_on_next_frame(&tab_timeline_clear_on_next_frame, NULL); }