Replaced a std::hash specialization with explicit type.
std::hash is problematic in gcc / clang, one has a class, the other a struct.
This commit is contained in:
parent
9c5463be1e
commit
63de5f8a55
|
@ -399,21 +399,17 @@ public:
|
||||||
typedef std::list<cChunkCoords> cChunkCoordsList;
|
typedef std::list<cChunkCoords> cChunkCoordsList;
|
||||||
typedef std::vector<cChunkCoords> cChunkCoordsVector;
|
typedef std::vector<cChunkCoords> cChunkCoordsVector;
|
||||||
|
|
||||||
namespace std
|
|
||||||
{
|
|
||||||
|
|
||||||
/** A simple hash function for chunk coords, we assume that chunk coords won't use more than 16 bits, so the hash is almost an identity.
|
/** A simple hash function for chunk coords, we assume that chunk coords won't use more than 16 bits, so the hash is almost an identity.
|
||||||
Used for std::unordered_map<cChunkCoords, ...> */
|
Used for std::unordered_map<cChunkCoords, ...> */
|
||||||
template<> struct hash<cChunkCoords>
|
class cChunkCoordsHash
|
||||||
{
|
{
|
||||||
size_t operator ()(const cChunkCoords & a_Coords)
|
public:
|
||||||
|
size_t operator () (const cChunkCoords & a_Coords) const
|
||||||
{
|
{
|
||||||
return (static_cast<size_t>(a_Coords.m_ChunkX) << 16) ^ static_cast<size_t>(a_Coords.m_ChunkZ);
|
return (static_cast<size_t>(a_Coords.m_ChunkX) << 16) ^ static_cast<size_t>(a_Coords.m_ChunkZ);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace std
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2206,7 +2206,7 @@ void cPlayer::SendBlocksAround(int a_BlockX, int a_BlockY, int a_BlockZ, int a_R
|
||||||
}
|
}
|
||||||
|
|
||||||
// Divide the block changes by their respective chunks:
|
// Divide the block changes by their respective chunks:
|
||||||
std::unordered_map<cChunkCoords, sSetBlockVector> Changes;
|
std::unordered_map<cChunkCoords, sSetBlockVector, cChunkCoordsHash> Changes;
|
||||||
for (const auto & blk: blks)
|
for (const auto & blk: blks)
|
||||||
{
|
{
|
||||||
Changes[cChunkCoords(blk.m_ChunkX, blk.m_ChunkZ)].push_back(blk);
|
Changes[cChunkCoords(blk.m_ChunkX, blk.m_ChunkZ)].push_back(blk);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user