Changed dtNavmeshQuery.getPolyWallSegments() to require max number of segments to store.

This commit is contained in:
Mikko Mononen
2010-10-15 06:35:40 +00:00
parent ab9ada50c5
commit c9df5dc995
7 changed files with 177 additions and 656 deletions

View File

@@ -2147,7 +2147,8 @@ static void insertInterval(dtSegInterval* ints, int& nints, const int maxInts,
nints++;
}
int dtNavMeshQuery::getPolyWallSegments(dtPolyRef ref, const dtQueryFilter* filter, float* segments)
int dtNavMeshQuery::getPolyWallSegments(dtPolyRef ref, const dtQueryFilter* filter,
float* segments, const int maxSegments)
{
dtAssert(m_nav);
@@ -2210,7 +2211,7 @@ int dtNavMeshQuery::getPolyWallSegments(dtPolyRef ref, const dtQueryFilter* filt
if (imin == imax) continue;
if (imin == 0 && imax == 255)
{
if (n < DT_VERTS_PER_POLYGON)
if (n < maxSegments)
{
float* seg = &segments[n*6];
n++;
@@ -2222,7 +2223,7 @@ int dtNavMeshQuery::getPolyWallSegments(dtPolyRef ref, const dtQueryFilter* filt
{
const float tmin = imin/255.0f;
const float tmax = imax/255.0f;
if (n < DT_VERTS_PER_POLYGON)
if (n < maxSegments)
{
float* seg = &segments[n*6];
n++;