forked from mirror/DotRecast
m_npath instead of m_path.Count
This commit is contained in:
parent
fc673b2c25
commit
19e358bdfc
|
@ -238,7 +238,7 @@ namespace DotRecast.Detour.Crowd
|
||||||
/// @param[in] filter The filter to apply to the operation.
|
/// @param[in] filter The filter to apply to the operation.
|
||||||
public bool OptimizePathTopology(DtNavMeshQuery navquery, IDtQueryFilter filter, int maxIterations)
|
public bool OptimizePathTopology(DtNavMeshQuery navquery, IDtQueryFilter filter, int maxIterations)
|
||||||
{
|
{
|
||||||
if (m_path.Count < 3)
|
if (m_npath < 3)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -262,21 +262,21 @@ namespace DotRecast.Detour.Crowd
|
||||||
// Advance the path up to and over the off-mesh connection.
|
// Advance the path up to and over the off-mesh connection.
|
||||||
long prevRef = 0, polyRef = m_path[0];
|
long prevRef = 0, polyRef = m_path[0];
|
||||||
int npos = 0;
|
int npos = 0;
|
||||||
while (npos < m_path.Count && polyRef != offMeshConRef)
|
while (npos < m_npath && polyRef != offMeshConRef)
|
||||||
{
|
{
|
||||||
prevRef = polyRef;
|
prevRef = polyRef;
|
||||||
polyRef = m_path[npos];
|
polyRef = m_path[npos];
|
||||||
npos++;
|
npos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (npos == m_path.Count)
|
if (npos == m_npath)
|
||||||
{
|
{
|
||||||
// Could not find offMeshConRef
|
// Could not find offMeshConRef
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prune path
|
// Prune path
|
||||||
m_path = m_path.GetRange(npos, m_path.Count - npos);
|
m_path = m_path.GetRange(npos, m_npath - npos);
|
||||||
m_npath -= npos;
|
m_npath -= npos;
|
||||||
|
|
||||||
refs[0] = prevRef;
|
refs[0] = prevRef;
|
||||||
|
@ -398,7 +398,7 @@ namespace DotRecast.Detour.Crowd
|
||||||
public void FixPathStart(long safeRef, RcVec3f safePos)
|
public void FixPathStart(long safeRef, RcVec3f safePos)
|
||||||
{
|
{
|
||||||
m_pos = safePos;
|
m_pos = safePos;
|
||||||
if (m_path.Count < 3 && m_path.Count > 0)
|
if (m_npath < 3 && m_npath > 0)
|
||||||
{
|
{
|
||||||
long p = m_path[m_npath - 1];
|
long p = m_path[m_npath - 1];
|
||||||
m_path.Clear();
|
m_path.Clear();
|
||||||
|
@ -420,12 +420,12 @@ namespace DotRecast.Detour.Crowd
|
||||||
{
|
{
|
||||||
// Keep valid path as far as possible.
|
// Keep valid path as far as possible.
|
||||||
int n = 0;
|
int n = 0;
|
||||||
while (n < m_path.Count && navquery.IsValidPolyRef(m_path[n], filter))
|
while (n < m_npath && navquery.IsValidPolyRef(m_path[n], filter))
|
||||||
{
|
{
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_path.Count == n)
|
if (m_npath == n)
|
||||||
{
|
{
|
||||||
// All valid, no need to fix.
|
// All valid, no need to fix.
|
||||||
return true;
|
return true;
|
||||||
|
@ -438,7 +438,7 @@ namespace DotRecast.Detour.Crowd
|
||||||
m_path.Add(safeRef);
|
m_path.Add(safeRef);
|
||||||
m_npath = 1;
|
m_npath = 1;
|
||||||
}
|
}
|
||||||
else if (n < m_path.Count)
|
else if (n < m_npath)
|
||||||
{
|
{
|
||||||
// The path is partially usable.
|
// The path is partially usable.
|
||||||
m_path = m_path.GetRange(0, n);
|
m_path = m_path.GetRange(0, n);
|
||||||
|
@ -446,7 +446,7 @@ namespace DotRecast.Detour.Crowd
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clamp target pos to last poly
|
// Clamp target pos to last poly
|
||||||
navquery.ClosestPointOnPolyBoundary(m_path[m_path.Count - 1], m_target, out m_target);
|
navquery.ClosestPointOnPolyBoundary(m_path[m_npath - 1], m_target, out m_target);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,7 +462,7 @@ namespace DotRecast.Detour.Crowd
|
||||||
public bool IsValid(int maxLookAhead, DtNavMeshQuery navquery, IDtQueryFilter filter)
|
public bool IsValid(int maxLookAhead, DtNavMeshQuery navquery, IDtQueryFilter filter)
|
||||||
{
|
{
|
||||||
// Check that all polygons still pass query filter.
|
// Check that all polygons still pass query filter.
|
||||||
int n = Math.Min(m_path.Count, maxLookAhead);
|
int n = Math.Min(m_npath, maxLookAhead);
|
||||||
for (int i = 0; i < n; ++i)
|
for (int i = 0; i < n; ++i)
|
||||||
{
|
{
|
||||||
if (!navquery.IsValidPolyRef(m_path[i], filter))
|
if (!navquery.IsValidPolyRef(m_path[i], filter))
|
||||||
|
@ -492,14 +492,14 @@ namespace DotRecast.Detour.Crowd
|
||||||
/// @return The polygon reference id of the first polygon in the corridor. (Or zero if there is no path.)
|
/// @return The polygon reference id of the first polygon in the corridor. (Or zero if there is no path.)
|
||||||
public long GetFirstPoly()
|
public long GetFirstPoly()
|
||||||
{
|
{
|
||||||
return 0 == m_path.Count ? 0 : m_path[0];
|
return 0 == m_npath ? 0 : m_path[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The polygon reference id of the last polygon in the corridor, the polygon containing the target.
|
/// The polygon reference id of the last polygon in the corridor, the polygon containing the target.
|
||||||
/// @return The polygon reference id of the last polygon in the corridor. (Or zero if there is no path.)
|
/// @return The polygon reference id of the last polygon in the corridor. (Or zero if there is no path.)
|
||||||
public long GetLastPoly()
|
public long GetLastPoly()
|
||||||
{
|
{
|
||||||
return 0 == m_path.Count ? 0 : m_path[m_path.Count - 1];
|
return 0 == m_npath ? 0 : m_path[m_npath - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The corridor's path.
|
/// The corridor's path.
|
||||||
|
@ -513,7 +513,7 @@ namespace DotRecast.Detour.Crowd
|
||||||
/// @return The number of polygons in the current corridor path.
|
/// @return The number of polygons in the current corridor path.
|
||||||
public int GetPathCount()
|
public int GetPathCount()
|
||||||
{
|
{
|
||||||
return m_path.Count;
|
return m_npath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue