mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-23 22:33:37 +00:00
64 lines
1.6 KiB
C++
64 lines
1.6 KiB
C++
#include "../../Platform/stdafx.h"
|
|
#include "../../Headers/net.minecraft.world.entity.h"
|
|
#include "../../Headers/net.minecraft.world.level.pathfinder.h"
|
|
|
|
// 4J - added for common ctor code
|
|
// Do all the default initialisations done in the java class
|
|
void Node::_init() {
|
|
heapIdx = -1;
|
|
|
|
closed = false;
|
|
|
|
cameFrom = NULL;
|
|
}
|
|
|
|
Node::Node(const int x, const int y, const int z)
|
|
: x(x), y(y), z(z), hash(createHash(x, y, z)) {
|
|
_init();
|
|
|
|
// this->x = x;
|
|
// this->y = y;
|
|
// this->z = z;
|
|
|
|
// hash = createHash(x, y, z);
|
|
}
|
|
|
|
int Node::createHash(const int x, const int y, const int z) {
|
|
// 4jcraft added cast to higher value to be representable after shift
|
|
return (y & 0xff) | (((int64_t)x & 0x7fff) << 8) |
|
|
(((int64_t)z & 0x7fff) << 24) | ((x < 0) ? 0x0080000000 : 0) |
|
|
((z < 0) ? 0x0000008000 : 0);
|
|
}
|
|
|
|
float Node::distanceTo(Node* to) {
|
|
float xd = (float)(to->x - x);
|
|
float yd = (float)(to->y - y);
|
|
float zd = (float)(to->z - z);
|
|
return Mth::sqrt(xd * xd + yd * yd + zd * zd);
|
|
}
|
|
|
|
float Node::distanceToSqr(Node* to) {
|
|
float xd = to->x - x;
|
|
float yd = to->y - y;
|
|
float zd = to->z - z;
|
|
return xd * xd + yd * yd + zd * zd;
|
|
}
|
|
|
|
bool Node::equals(Node* o) {
|
|
// 4J Jev, never used anything other than a node.
|
|
// if (dynamic_cast<Node *>((Node *) o) != NULL)
|
|
//{
|
|
return hash == o->hash && x == o->x && y == o->y && z == o->z;
|
|
//}
|
|
// return false;
|
|
}
|
|
|
|
int Node::hashCode() { return hash; }
|
|
|
|
bool Node::inOpenSet() { return heapIdx >= 0; }
|
|
|
|
std::wstring Node::toString() {
|
|
return _toString<int>(x) + L", " + _toString<int>(y) + L", " +
|
|
_toString<int>(z);
|
|
}
|