(kivutar) Add inertia
This commit is contained in:
parent
f8bf5d1827
commit
8b791c64a1
|
@ -273,8 +273,8 @@ static void glui_render(void)
|
||||||
(menu_input->pointer.y - glui->line_height + menu->scroll_y - 16)
|
(menu_input->pointer.y - glui->line_height + menu->scroll_y - 16)
|
||||||
/ glui->line_height;
|
/ glui->line_height;
|
||||||
|
|
||||||
if (menu_input->pointer.dragging)
|
menu->scroll_y -= menu_input->pointer.accel / 60.0;
|
||||||
menu->scroll_y -= menu_input->pointer.dy;
|
menu_input->pointer.accel = menu_input->pointer.accel * 0.96;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings->menu.mouse.enable)
|
if (settings->menu.mouse.enable)
|
||||||
|
|
|
@ -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
|
else if (abs(menu_input->pointer.x - menu_input->pointer.start_x) > 3
|
||||||
|| abs(menu_input->pointer.y - menu_input->pointer.start_y) > 3)
|
|| abs(menu_input->pointer.y - menu_input->pointer.start_y) > 3)
|
||||||
{
|
{
|
||||||
|
float s;
|
||||||
menu_input->pointer.dragging = true;
|
menu_input->pointer.dragging = true;
|
||||||
menu_input->pointer.dx = menu_input->pointer.x - menu_input->pointer.old_x;
|
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.dy = menu_input->pointer.y - menu_input->pointer.old_y;
|
||||||
menu_input->pointer.old_x = menu_input->pointer.x;
|
menu_input->pointer.old_x = menu_input->pointer.x;
|
||||||
menu_input->pointer.old_y = menu_input->pointer.y;
|
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
|
else
|
||||||
|
|
|
@ -151,6 +151,9 @@ typedef struct menu_input
|
||||||
int16_t old_y;
|
int16_t old_y;
|
||||||
int16_t start_x;
|
int16_t start_x;
|
||||||
int16_t start_y;
|
int16_t start_y;
|
||||||
|
float accel;
|
||||||
|
float accel0;
|
||||||
|
float accel1;
|
||||||
bool pressed[2];
|
bool pressed[2];
|
||||||
bool oldpressed[2];
|
bool oldpressed[2];
|
||||||
bool dragging;
|
bool dragging;
|
||||||
|
|
Loading…
Reference in New Issue