(kivutar) Add inertia

This commit is contained in:
twinaphex 2015-07-15 03:04:44 +02:00
parent f8bf5d1827
commit 8b791c64a1
3 changed files with 11 additions and 2 deletions

View File

@ -273,8 +273,8 @@ static void glui_render(void)
(menu_input->pointer.y - glui->line_height + menu->scroll_y - 16)
/ glui->line_height;
if (menu_input->pointer.dragging)
menu->scroll_y -= menu_input->pointer.dy;
menu->scroll_y -= menu_input->pointer.accel / 60.0;
menu_input->pointer.accel = menu_input->pointer.accel * 0.96;
}
if (settings->menu.mouse.enable)

View File

@ -895,11 +895,17 @@ static int menu_input_pointer_post_iterate(menu_file_list_cbs_t *cbs,
else if (abs(menu_input->pointer.x - menu_input->pointer.start_x) > 3
|| abs(menu_input->pointer.y - menu_input->pointer.start_y) > 3)
{
float s;
menu_input->pointer.dragging = true;
menu_input->pointer.dx = menu_input->pointer.x - menu_input->pointer.old_x;
menu_input->pointer.dy = menu_input->pointer.y - menu_input->pointer.old_y;
menu_input->pointer.old_x = menu_input->pointer.x;
menu_input->pointer.old_y = menu_input->pointer.y;
s = menu_input->pointer.dy / disp->animation->delta_time * 1000000.0;
menu_input->pointer.accel = (menu_input->pointer.accel0 + menu_input->pointer.accel1 + s) / 3;
menu_input->pointer.accel0 = menu_input->pointer.accel1;
menu_input->pointer.accel1 = menu_input->pointer.accel;
}
}
else

View File

@ -151,6 +151,9 @@ typedef struct menu_input
int16_t old_y;
int16_t start_x;
int16_t start_y;
float accel;
float accel0;
float accel1;
bool pressed[2];
bool oldpressed[2];
bool dragging;