From c3d2b2c6d5f76bd89bf43471cee10999555932d0 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sat, 8 Feb 2020 23:32:09 +0100 Subject: [PATCH] Core/PathFinding: Return raycast hitpoint when specifying straightLine --- src/server/game/Movement/PathGenerator.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp index d6a7fde1fe3..383014c8dcb 100644 --- a/src/server/game/Movement/PathGenerator.cpp +++ b/src/server/game/Movement/PathGenerator.cpp @@ -374,7 +374,15 @@ void PathGenerator::BuildPolyPath(G3D::Vector3 const& startPos, G3D::Vector3 con if (hit != FLT_MAX) { // the ray hit something, return no path instead of the incomplete one - _type = PATHFIND_NOPATH; + Clear(); + _polyLength = 2; + _pathPoints.resize(2); + _pathPoints[0] = GetStartPosition(); + float hitPos[3]; + dtVlerp(hitPos, startPoint, endPoint, hit); + _pathPoints[1] = G3D::Vector3(hitPos[2], hitPos[0], hitPos[1]); + + _type = PATHFIND_INCOMPLETE; return; } } @@ -437,7 +445,15 @@ void PathGenerator::BuildPolyPath(G3D::Vector3 const& startPos, G3D::Vector3 con if (hit != FLT_MAX) { // the ray hit something, return no path instead of the incomplete one - _type = PATHFIND_NOPATH; + Clear(); + _polyLength = 2; + _pathPoints.resize(2); + _pathPoints[0] = GetStartPosition(); + float hitPos[3]; + dtVlerp(hitPos, startPoint, endPoint, hit); + _pathPoints[1] = G3D::Vector3(hitPos[2], hitPos[0], hitPos[1]); + + _type = PATHFIND_INCOMPLETE; return; } }