mcpp
C++ Minecraft Library
Loading...
Searching...
No Matches
coordinate.h
Go to the documentation of this file.
1#pragma once
2
3#include <ostream>
4
9namespace mcpp {
10
11struct Coordinate2D;
12
17struct Coordinate {
18 int32_t x;
19 int32_t y;
20 int32_t z;
21
29 constexpr Coordinate(int32_t x, int32_t y, int32_t z) : x(x), y(y), z(z) {}
30
34 constexpr Coordinate() : x(0), y(0), z(0) {}
35
43 constexpr Coordinate(double x, double y, double z)
44 : x(static_cast<int>(x)), y(static_cast<int>(y)), z(static_cast<int>(z)) {}
45
53 Coordinate operator+(const Coordinate& obj) const;
54
56
63 bool operator==(const Coordinate& obj) const;
64
71 bool operator!=(const Coordinate& obj) const;
72
80 Coordinate operator-(const Coordinate& obj) const;
81
89 std::size_t operator()(const Coordinate& obj) const;
90
98 friend std::ostream& operator<<(std::ostream& out, const Coordinate& coord);
99};
100
114 constexpr Coordinate2D(int x, int z) : x(x), z(z) {}
115
119 constexpr Coordinate2D() : x(0), z(0) {}
120
127 constexpr Coordinate2D(double x, double z) : x(static_cast<int>(x)), z(static_cast<int>(z)) {}
128
134 constexpr Coordinate2D(const Coordinate& coord) : x(coord.x), z(coord.z) {}
135
144
153
160 bool operator==(const Coordinate2D& obj) const;
161
168 bool operator!=(const Coordinate2D& obj) const;
169
178
186 std::size_t operator()(const Coordinate2D& obj) const;
187
195 friend std::ostream& operator<<(std::ostream& out, const Coordinate2D& coord);
196
197 int x;
198 int z;
199};
200
207std::string to_string(const Coordinate& coord);
208
209} // namespace mcpp
Namespace containing all the the mcpp library classes.
Definition block.h:10
std::string to_string(const Coordinate &coord)
Convert coordinate to string representation.
Height-agnostic coordinate class.
Definition coordinate.h:107
Coordinate2D operator-(const Coordinate2D &obj) const
Subtracts one Coordinate2D object from another.
bool operator==(const Coordinate2D &obj) const
Checks if two Coordinate2D objects are equal.
bool operator!=(const Coordinate2D &obj) const
Checks if two Coordinate2D objects are not equal.
constexpr Coordinate2D(double x, double z)
Constructs a Coordinate2D object with double values.
Definition coordinate.h:127
constexpr Coordinate2D(const Coordinate &coord)
Constructs a Coordinate2D object from a Coordinate object.
Definition coordinate.h:134
constexpr Coordinate2D()
Constructs a Coordinate2D object with zero values.
Definition coordinate.h:119
int x
Definition coordinate.h:197
std::size_t operator()(const Coordinate2D &obj) const
Implements hash algorithm for Coordinate2D object using non-negative mapping and weighted coordinate ...
int z
Definition coordinate.h:198
Coordinate2D operator+(const Coordinate2D &obj) const
Adds two Coordinate2D objects.
Coordinate with_height(int y) const
Constructs a Coordinate object from a Coordinate2D object and a y value.
friend std::ostream & operator<<(std::ostream &out, const Coordinate2D &coord)
Outputs the Coordinate2D object to an ostream.
constexpr Coordinate2D(int x, int z)
Constructs a Coordinate2D object with integer values.
Definition coordinate.h:114
Definition coordinate.h:17
Coordinate operator+(const Coordinate &obj) const
Adds two Coordinate objects.
int32_t y
Definition coordinate.h:19
Coordinate operator-(const Coordinate &obj) const
Subtracts one Coordinate object from another.
bool operator!=(const Coordinate &obj) const
Checks if two Coordinate objects are not equal.
int32_t x
Definition coordinate.h:18
constexpr Coordinate(int32_t x, int32_t y, int32_t z)
Constructs a Coordinate object with integer values.
Definition coordinate.h:29
std::size_t operator()(const Coordinate &obj) const
Implements hash algorithm for Coordinate object using non-negative mapping and weighted coordinate va...
friend std::ostream & operator<<(std::ostream &out, const Coordinate &coord)
Outputs the Coordinate object to an ostream.
Coordinate operator+(const Coordinate2D &obj) const
constexpr Coordinate()
Constructs a Coordinate object with zero values.
Definition coordinate.h:34
constexpr Coordinate(double x, double y, double z)
Constructs a Coordinate object with double values.
Definition coordinate.h:43
int32_t z
Definition coordinate.h:20
bool operator==(const Coordinate &obj) const
Checks if two Coordinate objects are equal.