enum Input_Key { KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, KEY_Q, KEY_ALT, KEY_TAB, KEY_COUNT }; enum Mouse_Button { MOUSE_BTN_LEFT, MOUSE_BTN_RIGHT, MOUSE_BTN_COUNT }; enum Mouse_Button_State : u16 { MOUSE_BTN_STATE_IS_DOWN = 0x1, MOUSE_BTN_STATE_JUST_PRESSED = 0x2, MOUSE_BTN_STATE_JUST_RELEASED = 0x4, }; enum Key_State : u16 { KEY_STATE_IS_DOWN = 0x1, KEY_STATE_JUST_PRESSED = 0x2, KEY_STATE_JUST_RELEASED = 0x4, }; struct User_Input { u16 key_state[KEY_COUNT]; u16 mouse_btn_state[MOUSE_BTN_COUNT]; struct { i32 x; i32 y; } mouse_pos; }; struct Window_Data { // Real width and height of the window i32 width; i32 height; bool size_just_changed; f32 desired_aspect_ratio; };