From 9dd4002337e3824b617f497f51369b66080141db Mon Sep 17 00:00:00 2001 From: KimLS Date: Sat, 9 Sep 2017 14:01:39 -0700 Subject: [PATCH] Move stuck code out of main pathing function so we can add logging easily later --- zone/mob.h | 1 + zone/pathing.cpp | 43 ++++++++++++++++--------------------------- 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/zone/mob.h b/zone/mob.h index 25d32a16c..0cb3fb399 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -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); diff --git a/zone/pathing.cpp b/zone/pathing.cpp index 844ba6cde..2195be8b6 100644 --- a/zone/pathing.cpp +++ b/zone/pathing.cpp @@ -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 &points) { if (!zone->HasMap()) { return;