From bf1bf510fb79e2caf6a643a71e98974d61e33064 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Fri, 12 Apr 2019 23:23:31 +0200 Subject: Core/MMaps: Fallback to shortcut for flying units if Detour returned an incomplete path. Fallback to shortcut for flying units if Detour returned an incomplete path. This is needed when a flying unit should fly to the floor below to reach the target, but since Recastnavigation doesn't support "jumping down" the unit would not find a path to the target. (cherry picked from commit d182e5f7e73e614185f4470429467befd6e03981) --- src/server/game/Movement/PathGenerator.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/server/game') diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp index e8c64195910..54906a1f51f 100644 --- a/src/server/game/Movement/PathGenerator.cpp +++ b/src/server/game/Movement/PathGenerator.cpp @@ -469,6 +469,13 @@ void PathGenerator::BuildPolyPath(G3D::Vector3 const& startPos, G3D::Vector3 con else _type = PATHFIND_INCOMPLETE; + if (_type & PATHFIND_INCOMPLETE && _sourceUnit->CanFly()) + { + BuildShortcut(); + _type = PathType(PATHFIND_NORMAL | PATHFIND_NOT_USING_PATH); + return; + } + // generate the point-path out of our up-to-date poly-path BuildPointPath(startPoint, endPoint); } -- cgit v1.2.3