#pragma once class Entity; class TilePos; class ChunkPos { public: int x, z; // 4J - these were const but needed to make an assignment operator so we could make a vector of ChunkPos ChunkPos(int x, int z); static __int64 hashCode(int x, int z); int hashCode(); double distanceToSqr(shared_ptr e); double distanceToSqr(double px, double pz); // 4J added int getMiddleBlockX(); int getMiddleBlockZ(); TilePos getMiddleBlockPosition(int y); wstring toString(); static __int64 hash_fnct(const ChunkPos &k); static bool eq_test(const ChunkPos &x, const ChunkPos &y); bool operator == (const ChunkPos &k) const { return (this->x == k.x) && ( this->z == k.z); } ChunkPos & operator= (const ChunkPos & other) { x = other.x; z = other.z; return *this; } }; typedef struct { __int64 operator() (const ChunkPos &k) const { return ChunkPos::hash_fnct(k); } } ChunkPosKeyHash; typedef struct { bool operator() (const ChunkPos &x, const ChunkPos &y) const { return ChunkPos::eq_test(x, y); } } ChunkPosKeyEq;