diff options
| author | Nicolas James <Eele1Ephe7uZahRie@tutanota.com> | 2025-02-12 18:05:18 +1100 |
|---|---|---|
| committer | Nicolas James <Eele1Ephe7uZahRie@tutanota.com> | 2025-02-12 18:05:18 +1100 |
| commit | 1cc08c51eb4b0f95c30c0a98ad1fc5ad3459b2df (patch) | |
| tree | 222dfcd07a1e40716127a347bbfd7119ce3d0984 /src/shared/math.hh | |
initial commit
Diffstat (limited to 'src/shared/math.hh')
| -rw-r--r-- | src/shared/math.hh | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/shared/math.hh b/src/shared/math.hh new file mode 100644 index 0000000..5f03ab4 --- /dev/null +++ b/src/shared/math.hh @@ -0,0 +1,53 @@ +#ifndef SHARED_MATH_HH_ +#define SHARED_MATH_HH_ + +#include <compare> + +#include <glm/glm.hpp> +#include <glm/gtc/matrix_transform.hpp> +#include <glm/gtc/type_ptr.hpp> + +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 |
