mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 18:52:22 +00:00
Some tweaks to wp, basically works
This commit is contained in:
+52
-51
@@ -666,61 +666,62 @@ glm::vec3 Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool &Wa
|
||||
return *Route.begin();
|
||||
}
|
||||
else {
|
||||
bool SameDestination = DistanceSquared(To, PathingDestination) < 4.0f;
|
||||
if (!SameDestination) {
|
||||
//We had a route but our target position moved too much
|
||||
Route = zone->pathing->FindRoute(From, To);
|
||||
PathingDestination = To;
|
||||
WaypointChanged = true;
|
||||
NodeReached = false;
|
||||
return *Route.begin();
|
||||
}
|
||||
else {
|
||||
bool AtNextNode = DistanceSquared(From, *Route.begin()) < 4.0f;
|
||||
if (AtNextNode) {
|
||||
WaypointChanged = false;
|
||||
NodeReached = true;
|
||||
|
||||
Route.pop_front();
|
||||
|
||||
if (Route.empty()) {
|
||||
Route = zone->pathing->FindRoute(From, To);
|
||||
PathingDestination = To;
|
||||
WaypointChanged = true;
|
||||
return *Route.begin();
|
||||
}
|
||||
else {
|
||||
auto node = *Route.begin();
|
||||
if (node.x == 1000000.0f && node.y == 1000000.0f && node.z == 1000000.0f) {
|
||||
//If is identity node then is teleport node.
|
||||
Route.pop_front();
|
||||
|
||||
if (Route.empty()) {
|
||||
return To;
|
||||
}
|
||||
|
||||
auto nextNode = *Route.begin();
|
||||
|
||||
Teleport(nextNode);
|
||||
|
||||
Route.pop_front();
|
||||
|
||||
if (Route.empty()) {
|
||||
return To;
|
||||
}
|
||||
|
||||
return *Route.begin();
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
}
|
||||
else {
|
||||
WaypointChanged = false;
|
||||
if (PathRecalcTimer->Check()) {
|
||||
bool SameDestination = DistanceSquared(To, PathingDestination) < 4.0f;
|
||||
if (!SameDestination) {
|
||||
//We had a route but our target position moved too much
|
||||
Route = zone->pathing->FindRoute(From, To);
|
||||
PathingDestination = To;
|
||||
WaypointChanged = true;
|
||||
NodeReached = false;
|
||||
return *Route.begin();
|
||||
}
|
||||
}
|
||||
|
||||
bool AtNextNode = DistanceSquared(From, *Route.begin()) < 4.0f;
|
||||
if (AtNextNode) {
|
||||
WaypointChanged = false;
|
||||
NodeReached = true;
|
||||
|
||||
Route.pop_front();
|
||||
|
||||
if (Route.empty()) {
|
||||
Route = zone->pathing->FindRoute(From, To);
|
||||
PathingDestination = To;
|
||||
WaypointChanged = true;
|
||||
return *Route.begin();
|
||||
}
|
||||
else {
|
||||
auto node = *Route.begin();
|
||||
if (node.x == 1000000.0f && node.y == 1000000.0f && node.z == 1000000.0f) {
|
||||
//If is identity node then is teleport node.
|
||||
Route.pop_front();
|
||||
|
||||
if (Route.empty()) {
|
||||
return To;
|
||||
}
|
||||
|
||||
auto nextNode = *Route.begin();
|
||||
|
||||
Teleport(nextNode);
|
||||
|
||||
Route.pop_front();
|
||||
|
||||
if (Route.empty()) {
|
||||
return To;
|
||||
}
|
||||
|
||||
return *Route.begin();
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
}
|
||||
else {
|
||||
WaypointChanged = false;
|
||||
NodeReached = false;
|
||||
return *Route.begin();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user