diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/global-coords.cpp | 6 | ||||
-rw-r--r-- | src/global-coords.hpp | 9 |
2 files changed, 7 insertions, 8 deletions
diff --git a/src/global-coords.cpp b/src/global-coords.cpp index 7df70fe0..87a2c79c 100644 --- a/src/global-coords.cpp +++ b/src/global-coords.cpp @@ -11,9 +11,9 @@ static_assert(std::is_same_v<decltype(chunk_coords::x), decltype(chunk_coords::y static_assert(TILE_MAX_DIM == (1 << 4)); -static_assert(global_coords{(int)TILE_MAX_DIM-1, (int)TILE_MAX_DIM-1}.chunk() == global_coords{}.chunk()); -static_assert(global_coords{(int)TILE_MAX_DIM-1, (int)TILE_MAX_DIM}.chunk() != global_coords{}.chunk()); -static_assert(global_coords{(1u + (1<<15)) << 4 | 3, (2u + (1<<15)) << 4 | 4} == global_coords{{1, 2}, {3, 4}, -8}); +static_assert(global_coords{(int)TILE_MAX_DIM-1, (int)TILE_MAX_DIM-1, 0}.chunk() == global_coords{}.chunk()); +static_assert(global_coords{(int)TILE_MAX_DIM-1, (int)TILE_MAX_DIM, 0}.chunk() == chunk_coords{0, 1}); +static_assert(global_coords{(1u + (1<<15)) << 4 | 3, (2u + (1<<15)) << 4 | 4, nullptr} == global_coords{{1, 2}, {3, 4}, -8}); static_assert(global_coords{-123, 456, 1}.z() == 1); static_assert(global_coords{-123, 511, 5}.chunk() == chunk_coords{-8, 31}); diff --git a/src/global-coords.hpp b/src/global-coords.hpp index 3e9ac983..1bf79e4a 100644 --- a/src/global-coords.hpp +++ b/src/global-coords.hpp @@ -31,7 +31,6 @@ struct chunk_coords_ final { int16_t x = 0, y = 0; int8_t z = 0; - explicit constexpr operator chunk_coords() const noexcept { return {x, y}; } constexpr chunk_coords_() noexcept = default; constexpr chunk_coords_(int16_t x, int16_t y, int8_t z) noexcept : x{x}, y{y}, z{z} {} constexpr chunk_coords_(chunk_coords c, int8_t z) noexcept : x{c.x}, y{c.y}, z{z} {} @@ -55,8 +54,8 @@ struct global_coords final { }, y{ uint32_t((c.y + s0::value) << 4) | (xy.y & 0x0f) } {} - constexpr global_coords(uint32_t x, uint32_t y) noexcept : x{x}, y{y} {} - constexpr global_coords(int32_t x, int32_t y, int8_t z = 0) noexcept : + constexpr global_coords(uint32_t x, uint32_t y, std::nullptr_t) noexcept : x{x}, y{y} {} + constexpr global_coords(int32_t x, int32_t y, int8_t z) noexcept : x{uint32_t(x + (s0::value<<4)) | uint32_t(((z + z0::value) & 0x0f) << 20)}, y{uint32_t(y + (s0::value<<4))} {} @@ -106,7 +105,7 @@ constexpr Vector3i global_coords::to_signed3() const noexcept constexpr global_coords global_coords::operator+(Vector2i vec) const noexcept { - return { uint32_t((int64_t)x+vec[0]), uint32_t((int64_t)y+vec[1]) }; + return { uint32_t((int64_t)x+vec[0]), uint32_t((int64_t)y+vec[1]), nullptr }; } constexpr global_coords& global_coords::operator+=(Vector2i vec) noexcept @@ -118,7 +117,7 @@ constexpr global_coords& global_coords::operator+=(Vector2i vec) noexcept constexpr global_coords global_coords::operator-(Vector2i vec) const noexcept { - return { uint32_t((int64_t)x-vec[0]), uint32_t((int64_t)y-vec[1]) }; + return { uint32_t((int64_t)x-vec[0]), uint32_t((int64_t)y-vec[1]), nullptr }; } constexpr global_coords& global_coords::operator-=(Vector2i vec) noexcept |