forked from bit/DotRecastNetSim
add detail build times
This commit is contained in:
parent
dcc13b6199
commit
762e62b757
|
@ -597,6 +597,7 @@ public class RecastDemo
|
|||
sample.update(sample.getInputGeom(), buildResult.Item1, buildResult.Item2);
|
||||
sample.setChanged(false);
|
||||
settingsUI.setBuildTime((Stopwatch.GetTimestamp() - t) / TimeSpan.TicksPerMillisecond);
|
||||
settingsUI.setBuildTelemetry(buildResult.Item1.Select(x => x.getTelemetry()).ToList());
|
||||
toolsUI.setSample(sample);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,9 @@ freely, subject to the following restrictions:
|
|||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using DotRecast.Core;
|
||||
using DotRecast.Recast.Demo.Draw;
|
||||
using DotRecast.Recast.Demo.UI;
|
||||
|
@ -61,6 +63,7 @@ public class RcSettingsView : IRcView
|
|||
// public readonly NkColor transparent = NkColor.create();
|
||||
private bool buildTriggered;
|
||||
private long buildTime;
|
||||
private Dictionary<string, long> telemetries = new();
|
||||
private readonly int[] voxels = new int[2];
|
||||
private readonly int[] tiles = new int[2];
|
||||
private int maxTiles;
|
||||
|
@ -177,6 +180,10 @@ public class RcSettingsView : IRcView
|
|||
ImGui.NewLine();
|
||||
|
||||
ImGui.Text($"Build Time: {buildTime} ms");
|
||||
foreach (var (key, millis) in telemetries)
|
||||
{
|
||||
ImGui.Text($"{key}: {millis} ms");
|
||||
}
|
||||
ImGui.Separator();
|
||||
buildTriggered = ImGui.Button("Build");
|
||||
const string strLoadNavMesh = "Load Nav Mesh...";
|
||||
|
@ -289,6 +296,15 @@ public class RcSettingsView : IRcView
|
|||
this.buildTime = buildTime;
|
||||
}
|
||||
|
||||
public void setBuildTelemetry(IList<Telemetry> telemetries)
|
||||
{
|
||||
this.telemetries = telemetries
|
||||
.SelectMany(x => x.ToList())
|
||||
.GroupBy(x => x.Item1)
|
||||
.ToDictionary(x => x.Key, x => x.Sum(y => y.Item2));
|
||||
|
||||
}
|
||||
|
||||
public DrawMode getDrawMode()
|
||||
{
|
||||
return drawMode;
|
||||
|
|
|
@ -11,8 +11,7 @@
|
|||
private readonly Heightfield solid;
|
||||
private readonly Telemetry telemetry;
|
||||
|
||||
public RecastBuilderResult(int tileX, int tileZ, Heightfield solid, CompactHeightfield chf, ContourSet cs, PolyMesh pmesh,
|
||||
PolyMeshDetail dmesh, Telemetry ctx)
|
||||
public RecastBuilderResult(int tileX, int tileZ, Heightfield solid, CompactHeightfield chf, ContourSet cs, PolyMesh pmesh, PolyMeshDetail dmesh, Telemetry ctx)
|
||||
{
|
||||
this.tileX = tileX;
|
||||
this.tileZ = tileZ;
|
||||
|
|
|
@ -20,6 +20,7 @@ using System;
|
|||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using DotRecast.Core;
|
||||
|
||||
|
@ -47,12 +48,11 @@ namespace DotRecast.Recast
|
|||
Console.WriteLine(@string);
|
||||
}
|
||||
|
||||
public void print()
|
||||
public List<Tuple<string, long>> ToList()
|
||||
{
|
||||
foreach (var (n, v) in timerAccum)
|
||||
{
|
||||
Console.WriteLine(n + ": " + v.Read() / TimeSpan.TicksPerMillisecond);
|
||||
}
|
||||
return timerAccum
|
||||
.Select(x => Tuple.Create(x.Key, x.Value.Read() / TimeSpan.TicksPerMillisecond))
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -261,7 +261,10 @@ public class RecastSoloMeshTest
|
|||
Console.WriteLine(" " + (time3 - time) / TimeSpan.TicksPerMillisecond + " ms");
|
||||
saveObj(filename.Substring(0, filename.LastIndexOf('.')) + "_" + partitionType + "_detail.obj", m_dmesh);
|
||||
saveObj(filename.Substring(0, filename.LastIndexOf('.')) + "_" + partitionType + ".obj", m_pmesh);
|
||||
m_ctx.print();
|
||||
foreach (var (key, millis) in m_ctx.ToList())
|
||||
{
|
||||
Console.WriteLine($"{key} : {millis} ms");
|
||||
}
|
||||
}
|
||||
|
||||
private void saveObj(string filename, PolyMesh mesh)
|
||||
|
|
Loading…
Reference in New Issue