Move stuck code out of main pathing function so we can add logging easily later

This commit is contained in:
KimLS 2017-09-09 14:01:39 -07:00
parent ccdebf0116
commit 9dd4002337
2 changed files with 17 additions and 27 deletions

View File

@ -1264,6 +1264,7 @@ protected:
void CalculateNewFearpoint();
float FindGroundZ(float new_x, float new_y, float z_offset=0.0);
glm::vec3 UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool &WaypointChange, bool &NodeReached);
glm::vec3 HandleStuckPath(const glm::vec3 &To, const glm::vec3 &From);
virtual float GetSympatheticProcChances(uint16 spell_id, int16 ProcRateMod, int32 ItemProcRate = 0);
int16 GetSympatheticSpellProcRate(uint16 spell_id);

View File

@ -48,15 +48,7 @@ glm::vec3 Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool &Wa
WaypointChanged = true;
NodeReached = false;
if (stuck) {
bool partial = false;
bool stuck = false;
auto r = zone->pathing->FindRoute(To, From, partial, stuck);
Route.clear();
auto final_node = r.back();
Route.push_back(final_node);
AdjustRoute(Route, flymode, GetModelOffset());
return (*Route.begin()).pos;
return HandleStuckPath(To, From);
}
if (Route.empty()) {
@ -81,15 +73,7 @@ glm::vec3 Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool &Wa
NodeReached = false;
if (stuck) {
bool partial = false;
bool stuck = false;
auto r = zone->pathing->FindRoute(To, From, partial, stuck);
Route.clear();
auto final_node = r.back();
Route.push_back(final_node);
AdjustRoute(Route, flymode, GetModelOffset());
return (*Route.begin()).pos;
return HandleStuckPath(To, From);
}
if (Route.empty()) {
@ -154,15 +138,7 @@ glm::vec3 Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool &Wa
WaypointChanged = true;
if (stuck) {
bool partial = false;
bool stuck = false;
auto r = zone->pathing->FindRoute(To, From, partial, stuck);
Route.clear();
auto final_node = r.back();
Route.push_back(final_node);
AdjustRoute(Route, flymode, GetModelOffset());
return (*Route.begin()).pos;
return HandleStuckPath(To, From);
}
if(Route.empty()) {
@ -207,6 +183,19 @@ glm::vec3 Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool &Wa
return To;
}
glm::vec3 Mob::HandleStuckPath(const glm::vec3 &To, const glm::vec3 &From)
{
bool partial = false;
bool stuck = false;
auto r = zone->pathing->FindRoute(To, From, partial, stuck);
Route.clear();
auto final_node = r.back();
Route.push_back(final_node);
AdjustRoute(Route, flymode, GetModelOffset());
return (*Route.begin()).pos;
}
void CullPoints(std::vector<FindPerson_Point> &points) {
if (!zone->HasMap()) {
return;