From cd540a6419c6606688cb2d6152149f1a4d8e030f Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 22 May 2021 14:17:27 +0200 Subject: Better scroll logic smoothness --- src/Body.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/Body.cpp') diff --git a/src/Body.cpp b/src/Body.cpp index 24be25b..859b20f 100644 --- a/src/Body.cpp +++ b/src/Body.cpp @@ -625,8 +625,8 @@ namespace QuickMedia { if(selected_item == last_visible_item) target_scroll -= selected_item_height; const double scroll_diff = target_scroll - extra_scroll_current; - const double scroll_move_speed = 25.0; - extra_scroll_current += (scroll_diff * std::min(1.0, 0.007f * scroll_move_speed)); + const double scroll_move_speed = (frame_time > 0.010f ? 10.0f : 15.0f); + extra_scroll_current += (scroll_diff * std::min(1.0, frame_time * scroll_move_speed)); double scroll_smooth_diff = extra_scroll_current - prev_extra_scroll; prev_extra_scroll = extra_scroll_current; @@ -805,15 +805,17 @@ namespace QuickMedia { instant_move = true; } + const float speed = frame_time > 0.010f ? 35.0f : 50.0f; + const float item_background_prev_pos_y = item_background.get_position().y; const float item_background_pos_diff = item_background_target_pos_y - item_background_prev_pos_y; - float item_background_move_speed = instant_move ? 1000.0f : 50.0f; - item_background.set_position(sf::Vector2f(pos.x, item_background_prev_pos_y + (item_background_pos_diff * std::min(1.0f, 0.007f * item_background_move_speed)))); + const float item_background_move_speed = instant_move ? 1000.0f : speed; + item_background.set_position(sf::Vector2f(pos.x, item_background_prev_pos_y + (item_background_pos_diff * std::min(1.0f, frame_time * item_background_move_speed)))); const float item_background_prev_height = item_background.get_size().y; const float item_background_height_diff = item_background_target_height - item_background_prev_height; - const float item_background_height_speed = instant_move ? 1000.0f : 50.0f; - item_background.set_size(sf::Vector2f(size.x, item_background_prev_height + (item_background_height_diff * std::min(1.0f, 0.007f * item_background_height_speed)))); + const float item_background_height_speed = instant_move ? 1000.0f : speed; + item_background.set_size(sf::Vector2f(size.x, item_background_prev_height + (item_background_height_diff * std::min(1.0f, frame_time * item_background_height_speed)))); if(render_selected_item_bg) item_background.draw(window); -- cgit v1.2.3