#pragma once #include #include struct SharedData; struct IVec2 { int32_t X = 0; int32_t Y = 0; }; struct IVec3 { int32_t X = 0; int32_t Y = 0; }; struct Vec2 { float X = 0.0f; float Y = 0.0f; void Normalize(); }; struct Vec3 { float X = 0.0f; float Y = 0.0f; float Z = 0.0f; bx::Vec3 ToBX() { return {X, Y, Z}; }; void Normalize(); }; struct Quat { float X = 0.0f; float Y = 0.0f; float Z = 0.0f; float W = 1.0f; static Quat FromEuler(float x, float y, float z); static Quat FromEuler(Vec3 rot); }; struct Mat4 { float M[16]{ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, }; static void CreateTransform(float* out, Vec3 pos, Quat rot = {}, Vec3 scale = {1.0f, 1.0f, 1.0f}); void TranslateLocal(Vec3 offset); void Rotate(Vec3 rotation); Vec3 Right(); Vec3 Up(); Vec3 Forward(); }; namespace Game { struct GameInstance; SharedData& GetShared(); void SetShared(SharedData& instance); GameInstance& GetInstance(); void SetInstance(GameInstance& instance); } // namespace Game