#pragma once #include #include "vector.h" #include "allocator.h" const U32 MOUSEEV_MOVE = 0x0; const U32 MOUSEEV_DOWN = 0x1; const U32 MOUSEEV_UP = 0x2; const U32 MOUSE_LEFT = 0x1; const U32 MOUSE_RIGHT = 0x2; const U32 MOUSE_MIDDLE = 0x3; const U32 MOUSE_WHEEL = 0x4; struct MOUSE_DATA { VEC2 pos; VEC2 pos_delta; U8 left; U8 right; U8 middle; U8 wheel; }; struct INPUT_KEYBINDS { U8 fwd = 'w'; U8 back = 's'; U8 left = 'a'; U8 right = 'd'; U8 jump = ' '; U8 crouch = SDL_SCANCODE_LCTRL; }; using ON_INPUT_FN = FN; struct INPUT_DATA { MOUSE_DATA mouse; U8 keys[0xff]; U8 mouselock; F32 msens = .3f; F32 myaw = 1.f; F32 mpitch = 1.f; INPUT_KEYBINDS binds; LIST on_input; }; extern INPUT_DATA input; extern void input_frame_end(); extern void input_on_event( SDL_Event* e ); extern void input_on_mouse( I32 type, I32 x, I32 y ); extern U8 input_is_key_down( U32 key ); extern void input_capture_mouse( U8 capture ); extern void input_reset_mouse_accumulator(); #define kb_down( key ) input_is_key_down( key )