LeviLamina
Loading...
Searching...
No Matches
DividedPos2d.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/world/level/Pos2d.h"
5
6template <int T0>
7class DividedPos2d : public ::Pos2d {
8public:
9 [[nodiscard]] constexpr DividedPos2d() noexcept = default;
10 [[nodiscard]] constexpr DividedPos2d(DividedPos2d&&) noexcept = default;
11 LL_MAY_CONSTEXPR DividedPos2d& operator=(DividedPos2d&&) noexcept = default;
12 [[nodiscard]] constexpr DividedPos2d(DividedPos2d const&) noexcept = default;
13 LL_MAY_CONSTEXPR DividedPos2d& operator=(DividedPos2d const&) noexcept = default;
14
15 [[nodiscard]] constexpr DividedPos2d(int x, int z) noexcept : Pos2d(x, z) {}
16
17 template <class T>
18 [[nodiscard]] constexpr DividedPos2d(T const& vec) noexcept
19 requires(requires(T const& t) {
20 { t.x } -> std::same_as<int>;
21 { t.z } -> std::same_as<int>;
22 })
23 : Pos2d((vec.x >> 31) - ((vec.x >> 31) - vec.x) / T0, (vec.x >> 31) - ((vec.x >> 31) - vec.x) / T0) {}
24};
Definition DividedPos2d.h:7
Definition Pos2d.h:6