forked from mirror/DotRecast
draw agent option
This commit is contained in:
parent
13be6d5bd8
commit
997d3f1a9b
|
@ -19,11 +19,8 @@ freely, subject to the following restrictions:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using DotRecast.Core.Numerics;
|
using DotRecast.Core.Numerics;
|
||||||
using DotRecast.Detour;
|
using DotRecast.Detour;
|
||||||
using DotRecast.Detour.Crowd;
|
|
||||||
using DotRecast.Detour.Dynamic.Colliders;
|
|
||||||
using DotRecast.Recast.Toolset.Builder;
|
using DotRecast.Recast.Toolset.Builder;
|
||||||
using Silk.NET.OpenGL;
|
using Silk.NET.OpenGL;
|
||||||
|
|
||||||
|
|
|
@ -18,12 +18,9 @@ freely, subject to the following restrictions:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using DotRecast.Core.Numerics;
|
using DotRecast.Core.Numerics;
|
||||||
using DotRecast.Detour;
|
using DotRecast.Detour;
|
||||||
using DotRecast.Detour.Crowd;
|
using DotRecast.Detour.Crowd;
|
||||||
using DotRecast.Recast.Toolset.Builder;
|
|
||||||
using DotRecast.Recast.Demo.Draw;
|
using DotRecast.Recast.Demo.Draw;
|
||||||
using DotRecast.Recast.Toolset;
|
using DotRecast.Recast.Toolset;
|
||||||
using DotRecast.Recast.Toolset.Tools;
|
using DotRecast.Recast.Toolset.Tools;
|
||||||
|
@ -98,6 +95,11 @@ public class CrowdAgentProfilingSampleTool : ISampleTool
|
||||||
ImGui.SliderInt("Max Iterations", ref toolCfg.maxIterations, 0, 4000);
|
ImGui.SliderInt("Max Iterations", ref toolCfg.maxIterations, 0, 4000);
|
||||||
ImGui.NewLine();
|
ImGui.NewLine();
|
||||||
|
|
||||||
|
ImGui.Text("Debug Draw");
|
||||||
|
ImGui.Separator();
|
||||||
|
ImGui.Checkbox("Show Agents", ref toolCfg.showAgents);
|
||||||
|
ImGui.NewLine();
|
||||||
|
|
||||||
if (ImGui.Button("Start Crowd Profiling"))
|
if (ImGui.Button("Start Crowd Profiling"))
|
||||||
{
|
{
|
||||||
var settings = _sample.GetSettings();
|
var settings = _sample.GetSettings();
|
||||||
|
@ -118,11 +120,11 @@ public class CrowdAgentProfilingSampleTool : ISampleTool
|
||||||
ImGui.Text($"{rtt.Key}: {rtt.Micros} us");
|
ImGui.Text($"{rtt.Key}: {rtt.Micros} us");
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui.Text($"Sampling Time: {_tool.GetCrowdUpdateSamplingTime()} ms");
|
ImGui.Text($"Sampling Time: {_tool.GetCrowdUpdateSamplingTime():0.00} ms");
|
||||||
ImGui.Text($"Current Update Time: {_tool.GetCrowdUpdateTime()} ms");
|
ImGui.Text($"Current Update Time: {_tool.GetCrowdUpdateTime():0.00} ms");
|
||||||
ImGui.Text($"Avg Update Time: {_tool.GetCrowdUpdateAvgTime()} ms");
|
ImGui.Text($"Avg Update Time: {_tool.GetCrowdUpdateAvgTime():0.00} ms");
|
||||||
ImGui.Text($"Max Update Time: {_tool.GetCrowdUpdateMaxTime()} ms");
|
ImGui.Text($"Max Update Time: {_tool.GetCrowdUpdateMaxTime():0.00} ms");
|
||||||
ImGui.Text($"Min Update Time: {_tool.GetCrowdUpdateMinTime()} ms");
|
ImGui.Text($"Min Update Time: {_tool.GetCrowdUpdateMinTime():0.00} ms");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,7 +134,7 @@ public class CrowdAgentProfilingSampleTool : ISampleTool
|
||||||
dd.DepthMask(false);
|
dd.DepthMask(false);
|
||||||
|
|
||||||
var crowd = _tool.GetCrowd();
|
var crowd = _tool.GetCrowd();
|
||||||
if (crowd != null)
|
if (crowd != null && _tool.GetToolConfig().showAgents)
|
||||||
{
|
{
|
||||||
foreach (DtCrowdAgent ag in crowd.GetActiveAgents())
|
foreach (DtCrowdAgent ag in crowd.GetActiveAgents())
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
|
@ -26,12 +26,12 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||||
private readonly List<DtPolyPoint> _polyPoints;
|
private readonly List<DtPolyPoint> _polyPoints;
|
||||||
|
|
||||||
private const int SamplingCount = 500;
|
private const int SamplingCount = 500;
|
||||||
private long _samplingUpdateTime;
|
private double _samplingUpdateTime;
|
||||||
private readonly RcCyclicBuffer<long> _updateTimes;
|
private readonly RcCyclicBuffer<long> _updateTimes;
|
||||||
private long _curUpdateTime;
|
private double _curUpdateTime;
|
||||||
private long _avgUpdateTime;
|
private double _avgUpdateTime;
|
||||||
private long _minUpdateTime;
|
private double _minUpdateTime;
|
||||||
private long _maxUpdateTime;
|
private double _maxUpdateTime;
|
||||||
|
|
||||||
public RcCrowdAgentProfilingTool()
|
public RcCrowdAgentProfilingTool()
|
||||||
{
|
{
|
||||||
|
@ -269,11 +269,11 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||||
_updateTimes.PushBack(currentTime);
|
_updateTimes.PushBack(currentTime);
|
||||||
|
|
||||||
// for benchmark
|
// for benchmark
|
||||||
_samplingUpdateTime = _updateTimes.Sum() / TimeSpan.TicksPerMillisecond;
|
_samplingUpdateTime = _updateTimes.Sum() / (double)TimeSpan.TicksPerMillisecond;
|
||||||
_curUpdateTime = currentTime / TimeSpan.TicksPerMillisecond;
|
_curUpdateTime = currentTime / (double)TimeSpan.TicksPerMillisecond;
|
||||||
_avgUpdateTime = (long)(_updateTimes.Average() / TimeSpan.TicksPerMillisecond);
|
_avgUpdateTime = (_updateTimes.Average() / (double)TimeSpan.TicksPerMillisecond);
|
||||||
_minUpdateTime = _updateTimes.Min() / TimeSpan.TicksPerMillisecond;
|
_minUpdateTime = _updateTimes.Min() / (double)TimeSpan.TicksPerMillisecond;
|
||||||
_maxUpdateTime = _updateTimes.Max() / TimeSpan.TicksPerMillisecond;
|
_maxUpdateTime = _updateTimes.Max() / (double)TimeSpan.TicksPerMillisecond;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MoveMob(DtNavMeshQuery navquery, IDtQueryFilter filter, DtCrowdAgent ag, RcCrowdAgentData crowAgentData)
|
private void MoveMob(DtNavMeshQuery navquery, IDtQueryFilter filter, DtCrowdAgent ag, RcCrowdAgentData crowAgentData)
|
||||||
|
@ -374,27 +374,27 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public long GetCrowdUpdateSamplingTime()
|
public double GetCrowdUpdateSamplingTime()
|
||||||
{
|
{
|
||||||
return _samplingUpdateTime;
|
return _samplingUpdateTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long GetCrowdUpdateTime()
|
public double GetCrowdUpdateTime()
|
||||||
{
|
{
|
||||||
return _curUpdateTime;
|
return _curUpdateTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long GetCrowdUpdateAvgTime()
|
public double GetCrowdUpdateAvgTime()
|
||||||
{
|
{
|
||||||
return _avgUpdateTime;
|
return _avgUpdateTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long GetCrowdUpdateMinTime()
|
public double GetCrowdUpdateMinTime()
|
||||||
{
|
{
|
||||||
return _minUpdateTime;
|
return _minUpdateTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long GetCrowdUpdateMaxTime()
|
public double GetCrowdUpdateMaxTime()
|
||||||
{
|
{
|
||||||
return _maxUpdateTime;
|
return _maxUpdateTime;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
namespace DotRecast.Recast.Toolset.Tools
|
namespace DotRecast.Recast.Toolset.Tools
|
||||||
{
|
{
|
||||||
public class RcCrowdAgentProfilingToolConfig
|
public class RcCrowdAgentProfilingToolConfig
|
||||||
{
|
{
|
||||||
|
@ -12,5 +12,7 @@
|
||||||
public float percentTravellers = 15f;
|
public float percentTravellers = 15f;
|
||||||
public int pathQueueSize = 32;
|
public int pathQueueSize = 32;
|
||||||
public int maxIterations = 300;
|
public int maxIterations = 300;
|
||||||
|
|
||||||
|
public bool showAgents = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue