forked from Kolyah35/minecraft-pe-0.6.1
50 lines
1.0 KiB
C++
Executable File
50 lines
1.0 KiB
C++
Executable File
#ifndef NET_MINECRAFT_WORLD_LEVEL__ChunkPos_H__
|
|
#define NET_MINECRAFT_WORLD_LEVEL__ChunkPos_H__
|
|
|
|
//package net.minecraft.world.level;
|
|
|
|
#include "../entity/Entity.h"
|
|
|
|
class ChunkPos {
|
|
public:
|
|
const int x, z;
|
|
|
|
ChunkPos()
|
|
: x(0),
|
|
z(0)
|
|
{}
|
|
|
|
ChunkPos(int x_, int z_)
|
|
: x(x_),
|
|
z(z_)
|
|
{}
|
|
|
|
static int hashCode(int x, int z) {
|
|
return (x < 0 ? 0x80000000 : 0) | ((x & 0x7fff) << 16) | (z < 0 ? 0x00008000 : 0) | (z & 0x7fff);
|
|
}
|
|
|
|
int hashCode() const {
|
|
return hashCode(x, z);
|
|
}
|
|
|
|
bool operator==(const ChunkPos& rhs) const {
|
|
return x == rhs.x && z == rhs.z;
|
|
}
|
|
|
|
bool operator<(const ChunkPos& rhs) const {
|
|
return hashCode() < rhs.hashCode();
|
|
}
|
|
|
|
float distanceToSqr(const Entity* e) const {
|
|
float xPos = (float) (x * 16 + 8);
|
|
float zPos = (float) (z * 16 + 8);
|
|
|
|
float xd = xPos - e->x;
|
|
float zd = zPos - e->z;
|
|
|
|
return xd * xd + zd * zd;
|
|
}
|
|
};
|
|
|
|
#endif /*NET_MINECRAFT_WORLD_LEVEL__ChunkPos_H__*/
|