diff options
author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2020-02-28 19:29:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-28 19:29:58 +0100 |
commit | 6443e518cfa110434617c26f949b6783fe4d10d3 (patch) | |
tree | e3cd8ee886a17c1a3b4dff70603552bded99fcea /src | |
parent | f6e6baa2932788b17169ba103b62a6f66ee7290a (diff) |
Core/PathFinding: Return raycast hitpoint when specifying straightLine (#24206)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Movement/PathGenerator.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp index 6318f952d5d..66b93de4820 100644 --- a/src/server/game/Movement/PathGenerator.cpp +++ b/src/server/game/Movement/PathGenerator.cpp @@ -369,7 +369,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; } } @@ -432,7 +440,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; } } |