#ifndef PRGE_TYPES_H #define PRGE_TYPES_H #define MAX_TEXTURE 5 typedef struct { S32 width; S32 height; Str8 name; } Window; typedef enum { KeyState_RELEASE = 0, KeyState_PRESS = 1 } KeyStateEnum; typedef struct { KeyStateEnum last; KeyStateEnum state; } Key; typedef struct { V2 mouse_pos; V2 last_mouse_pos; V2 mouse_offset; B32 first_mouse; B32 capture_mouse; Key mouse_left; Key mouse_right; B32 is_running; F32 dt; Key move_right; Key move_forward; Key move_left; Key move_backward; Key move_up; Key move_down; Key jump; Key action_right; Key action_up; Key action_left; Key action_down; Key exit; } Input; typedef enum { TextureType_R = 1, TextureType_RGB = 3, TextureType_RGBA = 4 } TextureTypeEnum; typedef struct { U32 id; Str8 name; TextureTypeEnum type; S32 width; S32 height; void *data; } Texture; typedef struct { V3 pos; V2 texc; } Vertex; typedef struct { V3 origin; V3 rotate; U32 nverts; Vertex *verts; U32 nindices; U32 *indices; U32 ntextures; Texture textures[MAX_TEXTURE]; U32 vao, vbo, ebo; } Mesh; typedef struct { V3 origin; V3 rotate; U32 nmeshes; Mesh *meshes; } Model; typedef struct { V3 pos; F32 fov; F32 near; F32 far; F32 yaw; F32 pitch; F32 roll; } Camera; typedef struct { U32 nmodels; Model *models; Camera camera; Str8 bindir; } PRGEState; #endif /* PRGE_TYPES_H */