refactor: FIND_LOCAL_NEIGHBOURHOOD

This commit is contained in:
ikpil 2023-09-10 14:30:46 +09:00
parent 8ca7142bc5
commit 013a53fbc9
2 changed files with 23 additions and 12 deletions

View File

@ -695,19 +695,9 @@ public class TestNavmeshSampleTool : ISampleTool
_tool.FindPolysAroundShape(navQuery, settings.agentHeight, m_startRef, m_endRef, m_spos, m_epos, m_filter, ref m_polys, ref m_parent, ref m_queryPoly); _tool.FindPolysAroundShape(navQuery, settings.agentHeight, m_startRef, m_endRef, m_spos, m_epos, m_filter, ref m_polys, ref m_parent, ref m_queryPoly);
} }
else if (_mode == RcTestNavmeshToolMode.FIND_LOCAL_NEIGHBOURHOOD) else if (_mode == RcTestNavmeshToolMode.FIND_LOCAL_NEIGHBOURHOOD)
{
if (m_sposSet && m_startRef != 0)
{ {
m_neighbourhoodRadius = settings.agentRadius * 20.0f; m_neighbourhoodRadius = settings.agentRadius * 20.0f;
List<long> resultRef = new(); _tool.FindLocalNeighbourhood(navQuery, m_startRef, m_spos, m_neighbourhoodRadius, m_filter, ref m_polys, ref m_parent);
List<long> resultParent = new();
var status = navQuery.FindLocalNeighbourhood(m_startRef, m_spos, m_neighbourhoodRadius, m_filter, ref resultRef, ref resultParent);
if (status.Succeeded())
{
m_polys = resultRef;
m_parent = resultParent;
}
}
} }
else if (_mode == RcTestNavmeshToolMode.RANDOM_POINTS_IN_CIRCLE) else if (_mode == RcTestNavmeshToolMode.RANDOM_POINTS_IN_CIRCLE)
{ {

View File

@ -338,6 +338,27 @@ namespace DotRecast.Recast.Toolset.Tools
return status; return status;
} }
public DtStatus FindLocalNeighbourhood(DtNavMeshQuery navQuery, long startRef, RcVec3f spos, float radius, IDtQueryFilter filter,
ref List<long> resultRef, ref List<long> resultParent)
{
if (startRef == 0)
{
resultRef?.Clear();
resultParent?.Clear();
return DtStatus.DT_FAILURE;
}
resultRef ??= new List<long>();
resultParent ??= new List<long>();
resultRef.Clear();
resultParent.Clear();
var status = navQuery.FindLocalNeighbourhood(startRef, spos, radius, filter, ref resultRef, ref resultParent);
return status;
}
public DtStatus FindPolysAroundShape(DtNavMeshQuery navQuery, float agentHeight, long startRef, long endRef, RcVec3f spos, RcVec3f epos, IDtQueryFilter filter, public DtStatus FindPolysAroundShape(DtNavMeshQuery navQuery, float agentHeight, long startRef, long endRef, RcVec3f spos, RcVec3f epos, IDtQueryFilter filter,
ref List<long> resultRefs, ref List<long> resultParents, ref RcVec3f[] queryPoly) ref List<long> resultRefs, ref List<long> resultParents, ref RcVec3f[] queryPoly)
{ {