#if !defined(LD_GAME_CORE_H_) #define LD_GAME_CORE_H_ #include "world.h" typedef struct G_Camera G_Camera; struct G_Camera { V3f x, y, z; V3f p; F32 fov; F32 nearp, farp; Mat4x4FInv proj; }; #define TILE_SIZE 1.0 typedef enum G_EDITOR_MODE G_EDITOR_MODE; enum G_EDITOR_MODE { G_EDITOR_MODE_TILE, G_EDITOR_MODE_PROP, G_EDITOR_MODE_HITBOX, G_EDITOR_MODE_POI, }; typedef struct G_Editor G_Editor; struct G_Editor { bool enabled; U32 currentLevel; S32 currentAsset; G_EDITOR_MODE mode; V2f cursor; V2f dragStart; }; typedef struct G_State G_State; struct G_State { M_Arena *arena; D_Context draw; G_Camera camera; G_Editor editor; World *world; }; function void G_ImagesLoad(G_State *game); function void G_PipelinesLoad(G_State *game); function void G_AudioLoad(G_State *game); function void G_CalculateCamera(G_Camera *camera, F32 aspect); // Assumes 'calculate' has been called function V3f G_CameraUnprojectAt(G_Camera *camera, V2f clip, F32 z); function V3f G_CameraUnproject(G_Camera *camera, V2f clip); function R3f G_CameraBounds(G_Camera *camera); #include "aabb.h" #include "player.h" #include "nav.h" #include "npc.h" #endif // LD_GAME_CORE_H_