input_t init_input() { input_t input = {0}; input.mouse.first = 1; return input; } void update_input(input_t *input) { input->mouse.last = input->mouse.pos; input->mouse.offset = V2_ZERO; input->mouse.left.last = input->mouse.left.state; input->mouse.right.last = input->mouse.right.state; input->move_right.last = input->move_right.state; input->move_forward.last = input->move_forward.state; input->move_left.last = input->move_left.state; input->move_backward.last = input->move_backward.state; input->move_up.last = input->move_up.state; input->move_down.last = input->move_down.state; input->jump.last = input->jump.state; input->action_right.last = input->action_right.state; input->action_up.last = input->action_up.state; input->action_left.last = input->action_left.state; input->action_down.last = input->action_down.state; input->exit.last = input->exit.state; } i32 is_key_down(prge_key_t key) { i32 result = (key.state == key_state_press); return result; } i32 is_key_pressed(prge_key_t key) { i32 result = ((key.last == key_state_release) && (key.state == key_state_press)); return result; } i32 was_key_pressed(prge_key_t key) { i32 result = ((key.last == key_state_press) && (key.state == key_state_release)); return result; }