#ifndef GAME_MAIN_H #define GAME_MAIN_H #define KB(b) (((u64)1024)*(b)) #define MB(b) (((u64)1024)*(KB(b))) #define GB(b) (((u64)1024)*(MB(b))) typedef struct GameInput { f32 LastMouseX; f32 LastMouseY; f64 MouseX; f64 MouseY; f32 Sensitivity; } GameInput; typedef struct GameCamera { f32 MoveSpeed; f32 PitchAngle; f32 YawAngle; Vec3 Pos; Vec3 Front; Vec3 Up; } GameCamera; typedef struct GameMemory { void *PermanentStorage; u64 PermanentStorageSize; amr_DebugArena Arena; } GameMemory; typedef struct Rect2 { Vec2 tl; Vec2 br; } Rect2; typedef struct GameState { GameCamera Camera; GameInput Input; GameMemory Memory; Vec2 WinDimsPx; Vec2 FieldDimsPx; // play field dimensions // screen placement management things Vec2 px_ratio; Vec2 ScrMidCoords; Rect2 ScreenCoords; Rect2 FieldCoords; } GameState; #endif