diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index 355221665c..64f0d56a00 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -145,6 +145,10 @@ namespace OpenRa.Game public static double RenderTime = 0.0; public static double TickTime = 0.0; public static double OreTime = 0.0; + public static double PathToPathTime = 0.0; + public static double NormalPathTime = 0.0; + public static int PathToPathCount = 0; + public static int NormalPathCount = 0; public static Stopwatch sw; @@ -155,6 +159,10 @@ namespace OpenRa.Game if( dt >= timestep ) { sw.Reset(); + PathToPathTime = 0; + NormalPathTime = 0; + PathToPathCount = 0; + NormalPathCount = 0; lastTime += timestep; if( orderManager.Tick() ) diff --git a/OpenRa.Game/Graphics/WorldRenderer.cs b/OpenRa.Game/Graphics/WorldRenderer.cs index d151a7cac5..9894f4c34c 100644 --- a/OpenRa.Game/Graphics/WorldRenderer.cs +++ b/OpenRa.Game/Graphics/WorldRenderer.cs @@ -99,12 +99,17 @@ namespace OpenRa.Game.Graphics lineRenderer.Flush(); - renderer.DrawText(string.Format("RenderFrame {0} ({2:F1} ms)\nTick {1} ({3:F1} ms)\nOre ({4:F1} ms)\n$ {5}", + renderer.DrawText(string.Format("RenderFrame {0} ({2:F1} ms)\nTick {1} ({3:F1} ms)\nOre ({4:F1} ms)\nNormal Pathing ({5:F1} ms\t[{9} paths])\nPathToPath ({6:F1}\t[{8} paths])\n$ {7}", Game.RenderFrame, Game.orderManager.FrameNumber, Game.RenderTime * 1000, Game.TickTime * 1000, Game.OreTime * 1000, - Game.LocalPlayer.Cash), new int2(5, 5), Color.White); + Game.NormalPathTime * 1000, + Game.PathToPathTime * 1000, + Game.LocalPlayer.Cash, + Game.PathToPathCount, + Game.NormalPathCount + ), new int2(5, 5), Color.White); } void DrawSelectionBox(Actor selectedUnit, Color c, bool drawHealthBar) diff --git a/OpenRa.Game/PathFinder.cs b/OpenRa.Game/PathFinder.cs index 5e9c85dd32..21eb448f9a 100644 --- a/OpenRa.Game/PathFinder.cs +++ b/OpenRa.Game/PathFinder.cs @@ -28,7 +28,16 @@ namespace OpenRa.Game public List FindUnitPath(int2 src, int2 dest, UnitMovementType umt) { - return FindUnitPath(src, DefaultEstimator(dest), umt); + var sw = new Stopwatch(); + /*if (passableCost[(int)umt][dest.X, dest.Y] == double.PositiveInfinity) + return new List(); + if (!Game.BuildingInfluence.CanMoveHere(dest)) + return new List();*/ + + var result = FindUnitPath(src, DefaultEstimator(dest), umt); + Game.NormalPathTime += sw.ElapsedTime(); + Game.NormalPathCount++; + return result; } public List FindUnitPathToRange(int2 src, int2 dest, UnitMovementType umt, int range) @@ -43,6 +52,8 @@ namespace OpenRa.Game public List FindPathToPath( int2 from, List path, UnitMovementType umt ) { + var sw = new Stopwatch(); + var cellInfo = InitCellInfo(); var queue = new PriorityQueue(); var estimator = DefaultEstimator( from ); @@ -63,6 +74,8 @@ namespace OpenRa.Game } var ret = FindPath( cellInfo, queue, estimator, umt, true ); ret.Reverse(); + Game.PathToPathTime += sw.ElapsedTime(); + Game.PathToPathCount++; return ret; }