diff options
Diffstat (limited to 'src/irr_v3d.h')
-rw-r--r-- | src/irr_v3d.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/irr_v3d.h b/src/irr_v3d.h index 3e95c7913..49c2e60ce 100644 --- a/src/irr_v3d.h +++ b/src/irr_v3d.h @@ -18,13 +18,29 @@ with this program; if not, write to the Free Software Foundation, Inc., */ #pragma once - #include "irrlichttypes.h" - #include <vector3d.h> +#include <functional> typedef core::vector3df v3f; typedef core::vector3d<double> v3d; typedef core::vector3d<s16> v3s16; typedef core::vector3d<u16> v3u16; typedef core::vector3d<s32> v3s32; + +namespace std +{ +template <> struct hash<v3s16> +{ + typedef v3s16 argument_type; + typedef std::size_t result_type; + result_type operator()(const argument_type &s) const noexcept + { + // clang-format off + return static_cast<size_t>((static_cast<u64>(s.X) << 20) ^ + (static_cast<u64>(s.Y) << 10) ^ + (static_cast<u64>(s.Z))); + // clang-format on + } +}; +} |