diff options
Diffstat (limited to 'core/src/Utils/VectorHash.hpp')
-rw-r--r-- | core/src/Utils/VectorHash.hpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/core/src/Utils/VectorHash.hpp b/core/src/Utils/VectorHash.hpp new file mode 100644 index 0000000..7df9c35 --- /dev/null +++ b/core/src/Utils/VectorHash.hpp @@ -0,0 +1,46 @@ +#pragma once + +#include "Utils/Hash.hpp" +#include "Utils/Vector.hpp" + +#include <cstddef> +#include <functional> + +template <class T> +struct std::hash<Vec2<T>> +{ + size_t operator()(const Vec2<T>& vec) const + { + size_t result; + HashUtils::Combine(result, vec.x); + HashUtils::Combine(result, vec.y); + return result; + } +}; + +template <class T> +struct std::hash<Vec3<T>> +{ + size_t operator()(const Vec3<T>& vec) const + { + size_t result; + HashUtils::Combine(result, vec.x); + HashUtils::Combine(result, vec.y); + HashUtils::Combine(result, vec.z); + return result; + } +}; + +template <class T> +struct std::hash<Vec4<T>> +{ + size_t operator()(const Vec4<T>& vec) const + { + size_t result; + HashUtils::Combine(result, vec.x); + HashUtils::Combine(result, vec.y); + HashUtils::Combine(result, vec.z); + HashUtils::Combine(result, vec.w); + return result; + } +}; |