#ifndef SHARED_MATH_HH_ #define SHARED_MATH_HH_ #include #include #include #include namespace shared { namespace math { // 2D coordinates. struct coords { std::int32_t x; std::int32_t z; coords operator+(const coords& c) const noexcept { auto ret = *this; ret.x += c.x; ret.z += c.z; return ret; } coords operator-(const coords& c) const noexcept { auto ret = *this; ret.x -= c.x; ret.z -= c.z; return ret; } auto operator<=>(const coords& c) const noexcept = default; }; struct angles { float pitch; float yaw; angles operator+(const angles& a) const noexcept { auto ret = *this; ret.pitch += a.pitch; ret.yaw += a.yaw; return ret; } }; // Returns a vector pointing in the direction of pitch + yaw. glm::vec3 angle_to_dir(const angles& ang) noexcept; bool is_inside_draw(const shared::math::coords& a, const shared::math::coords& b, const std::int32_t draw_distance) noexcept; } // namespace math } // namespace shared #endif