diff options
author | HampusM <hampus@hampusmat.com> | 2022-03-07 20:20:18 +0100 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2022-06-13 17:56:55 +0200 |
commit | f0824fdebc79fbf3843c2053522107c33e3ce2a3 (patch) | |
tree | e5bd34fa89cbe80cf8a30596766cf95098465aec /src/engine/data/vector2.cpp | |
parent | 12fffa7df0685ef6d23ffe888a06695ae490df81 (diff) |
refactor: move directions to vector2 & make vector2 hashable
Diffstat (limited to 'src/engine/data/vector2.cpp')
-rw-r--r-- | src/engine/data/vector2.cpp | 37 |
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; +} |