#pragma once #include #include #include "voxel.h" #define WINDOW_WIDTH 640 #define WINDOW_HEIGHT 480 #define WINDOW_TITLE "Voxel Engine" typedef struct { // screen size u32 width; u32 height; // input bool key_down[GLFW_KEY_LAST]; bool key_pressed[GLFW_KEY_LAST]; bool btn_down[GLFW_MOUSE_BUTTON_LAST]; bool btn_pressed[GLFW_MOUSE_BUTTON_LAST]; // cursor double mouse_x; double mouse_y; double mouse_x_last; double moues_y_last; // time double last_time; // glfw GLFWwindow *window; // sync mtx_t lock; // flags _Atomic bool close; _Atomic bool resize; } Window; extern Window window; extern _Atomic double delta_time; VOXEL_RESULT window_init(void); VOXEL_RESULT window_init_gl(void); bool window_closed(void); void window_update(void); void window_swap(void); void window_close(void); void window_free(void); bool key_down(i32 key); bool key_pressed(i32 key); bool btn_down(i32 button); bool btn_pressed(i32 button);