Scripts/Commands: ".mmap path line" now uses raycast pathfinding

Add "line" optional parameter to ".mmap path" command to use raycast implementation of recast, useful to simulate charge paths.

(cherry picked from commit 37b157746e075294fd14abef5cc8e611b7bf2c76)
This commit is contained in:
jackpoz
2015-07-12 12:43:31 +01:00
committed by DDuarte
parent 7cabfc7420
commit 0fd0529ed1
+6 -2
View File
@@ -87,6 +87,10 @@ public:
if (para && strcmp(para, "true") == 0)
useStraightPath = true;
bool useStraightLine = false;
if (para && strcmp(para, "line") == 0)
useStraightLine = true;
// unit locations
float x, y, z;
player->GetPosition(x, y, z);
@@ -94,11 +98,11 @@ public:
// path
PathGenerator path(target);
path.SetUseStraightPath(useStraightPath);
bool result = path.CalculatePath(x, y, z);
bool result = path.CalculatePath(x, y, z, false, useStraightLine);
Movement::PointsArray const& pointPath = path.GetPath();
handler->PSendSysMessage("%s's path to %s:", target->GetName().c_str(), player->GetName().c_str());
handler->PSendSysMessage("Building: %s", useStraightPath ? "StraightPath" : "SmoothPath");
handler->PSendSysMessage("Building: %s", useStraightPath ? "StraightPath" : useStraightLine ? "Raycast" : "SmoothPath");
handler->PSendSysMessage("Result: %s - Length: %zu - Type: %u", (result ? "true" : "false"), pointPath.size(), path.GetPathType());
G3D::Vector3 const &start = path.GetStartPosition();