aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/ChunkPos.h
blob: f1d483c7e7a86d97d23ba017562e123b705fe7ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#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<Entity> 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;