aboutsummaryrefslogtreecommitdiff
path: root/src/engine/data/vector2.cpp
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-03-07 20:20:18 +0100
committerHampusM <hampus@hampusmat.com>2022-06-13 17:56:55 +0200
commitf0824fdebc79fbf3843c2053522107c33e3ce2a3 (patch)
treee5bd34fa89cbe80cf8a30596766cf95098465aec /src/engine/data/vector2.cpp
parent12fffa7df0685ef6d23ffe888a06695ae490df81 (diff)
refactor: move directions to vector2 & make vector2 hashable
Diffstat (limited to 'src/engine/data/vector2.cpp')
-rw-r--r--src/engine/data/vector2.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/engine/data/vector2.cpp b/src/engine/data/vector2.cpp
index 6dcd7d6..c182fba 100644
--- a/src/engine/data/vector2.cpp
+++ b/src/engine/data/vector2.cpp
@@ -1,5 +1,7 @@
#include "vector2.hpp"
+#include "util/hash.hpp"
+
Vector2::Vector2(const Vector2Options &options) : _x(options.x), _y(options.y) {}
int32_t Vector2::get_x() const noexcept
@@ -37,3 +39,38 @@ const Vector2 &Vector2::operator-=(const Vector2 &vector2) noexcept
return *this;
}
+
+bool Vector2::operator==(const Vector2 &vector2) const noexcept
+{
+ return _x == vector2._x && _y == vector2._y;
+}
+
+Vector2 Vector2::up()
+{
+ return Vector2({.x = 0, .y = 1});
+}
+
+Vector2 Vector2::down()
+{
+ return Vector2({.x = 0, .y = -1});
+}
+
+Vector2 Vector2::left()
+{
+ return Vector2({.x = -1, .y = 0});
+}
+
+Vector2 Vector2::right()
+{
+ return Vector2({.x = 1, .y = 0});
+}
+
+std::size_t Vector2Hasher::operator()(const Vector2 &vector2) const
+{
+ std::size_t result_hash = 0;
+
+ hash_combine(result_hash, vector2.get_x());
+ hash_combine(result_hash, vector2.get_y());
+
+ return result_hash;
+}