aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/ChunkPos.cpp
blob: acf885c06a9255f02da08aefad62b2ab940af65e (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "stdafx.h"
#include "net.minecraft.world.entity.h"
#include "ChunkPos.h"

ChunkPos::ChunkPos(int x, int z) : x( x ), z( z )
{
}

int64_t ChunkPos::hashCode(int x, int z)
{
	int64_t xx = x;
	int64_t zz = z;
	return (xx & 0xffffffffl) | ((zz & 0xffffffffl) << 32l);
}

int ChunkPos::hashCode()
{
	int64_t hash = hashCode(x, z);
	int h1 = (int) (hash);
	int h2 = (int) (hash >> 32l);
	return h1 ^ h2;
}

double ChunkPos::distanceToSqr(shared_ptr<Entity> e)
{
	double xPos = x * 16 + 8;
	double zPos = z * 16 + 8;

	double xd = xPos - e->x;
	double zd = zPos - e->z;

	return xd * xd + zd * zd;
}

double ChunkPos::distanceToSqr(double px, double pz)
{
	double xPos = x * 16 + 8;
	double zPos = z * 16 + 8;

	double xd = xPos - px;
	double zd = zPos - pz;

	return xd * xd + zd * zd;
}

int ChunkPos::getMiddleBlockX()
{
	return ( x << 4 ) + 8;
}

int ChunkPos::getMiddleBlockZ()
{
	return ( z << 4 ) + 8;
}

TilePos ChunkPos::getMiddleBlockPosition(int y)
{
	return TilePos(getMiddleBlockX(), y, getMiddleBlockZ());
}

wstring ChunkPos::toString()
{
    return L"[" + std::to_wstring(x) + L", " + std::to_wstring(z) + L"]";
}

int64_t ChunkPos::hash_fnct(const ChunkPos &k)
{
	return k.hashCode(k.x,k.z);
}

bool ChunkPos::eq_test(const ChunkPos &x, const ChunkPos &y)
{
	return x.x == y.x && x.z == y.z;
}