forked from mirror/DotRecast
feat: add random point count
This commit is contained in:
parent
fccc6fa2e7
commit
54e8835cb7
|
@ -35,6 +35,7 @@ public class TestNavmeshSampleTool : ISampleTool
|
|||
private int _straightPathOption;
|
||||
|
||||
// for random point in circle mode
|
||||
private int _randomPointCount = 300;
|
||||
private bool _constrainByCircle;
|
||||
|
||||
//
|
||||
|
@ -126,6 +127,7 @@ public class TestNavmeshSampleTool : ISampleTool
|
|||
|
||||
if (_mode == RcTestNavmeshToolMode.RANDOM_POINTS_IN_CIRCLE)
|
||||
{
|
||||
ImGui.SliderInt("Random point count", ref _randomPointCount, 0, 10000);
|
||||
ImGui.Checkbox("Constrained", ref _constrainByCircle);
|
||||
}
|
||||
|
||||
|
@ -761,7 +763,7 @@ public class TestNavmeshSampleTool : ISampleTool
|
|||
var refs = new List<long>();
|
||||
var parentRefs = new List<long>();
|
||||
|
||||
var status = _tool.FindPolysAroundShape(navQuery, settings, m_startRef, m_spos, m_epos, m_filter, ref refs, ref parentRefs, out var queryPoly);
|
||||
var status = _tool.FindPolysAroundShape(navQuery, settings.agentHeight, m_startRef, m_spos, m_epos, m_filter, ref refs, ref parentRefs, out var queryPoly);
|
||||
if (status.Succeeded())
|
||||
{
|
||||
m_queryPoly = queryPoly;
|
||||
|
@ -791,7 +793,7 @@ public class TestNavmeshSampleTool : ISampleTool
|
|||
if (m_sposSet && m_startRef != 0 && m_eposSet)
|
||||
{
|
||||
var points = new List<RcVec3f>();
|
||||
_tool.FindRandomPointAroundCircle(navQuery, m_startRef, m_spos, m_epos, m_filter, _constrainByCircle, 500, ref points);
|
||||
_tool.FindRandomPointAroundCircle(navQuery, m_startRef, m_spos, m_epos, m_filter, _constrainByCircle, _randomPointCount, ref points);
|
||||
randomPoints.AddRange(points);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -269,11 +269,10 @@ namespace DotRecast.Recast.Toolset.Tools
|
|||
return navQuery.FindPolysAroundCircle(startRef, spos, dist, filter, ref resultRef, ref resultParent, ref costs);
|
||||
}
|
||||
|
||||
public DtStatus FindPolysAroundShape(DtNavMeshQuery navQuery, RcNavMeshBuildSettings settings, long startRef, RcVec3f spos, RcVec3f epos, IDtQueryFilter filter, ref List<long> resultRef, ref List<long> resultParent, out RcVec3f[] queryPoly)
|
||||
public DtStatus FindPolysAroundShape(DtNavMeshQuery navQuery, float agentHeight, long startRef, RcVec3f spos, RcVec3f epos, IDtQueryFilter filter, ref List<long> resultRef, ref List<long> resultParent, out RcVec3f[] queryPoly)
|
||||
{
|
||||
float nx = (epos.z - spos.z) * 0.25f;
|
||||
float nz = -(epos.x - spos.x) * 0.25f;
|
||||
float agentHeight = settings != null ? settings.agentHeight : 0;
|
||||
|
||||
queryPoly = new RcVec3f[4];
|
||||
queryPoly[0].x = spos.x + nx * 1.2f;
|
||||
|
|
Loading…
Reference in New Issue