/*
-Minetest-c55
-Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
+Minetest
+Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef IRR_V3D_HEADER
-#define IRR_V3D_HEADER
-
+#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;
-#endif
-
+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
+ }
+};
+}