diff --git a/DebugUtils/Source/DetourDebugDraw.cpp b/DebugUtils/Source/DetourDebugDraw.cpp
index 20a8bbb..02b9102 100755
--- a/DebugUtils/Source/DetourDebugDraw.cpp
+++ b/DebugUtils/Source/DetourDebugDraw.cpp
@@ -421,7 +421,7 @@ void duDebugDrawNavMeshPoly(duDebugDraw* dd, const dtNavMesh& mesh, dtPolyRef re
const dtMeshTile* tile = 0;
const dtPoly* poly = 0;
- if (mesh.getTileAndPolyByRef(ref, &tile, &poly) != DT_SUCCESS)
+ if (dtStatusFailed(mesh.getTileAndPolyByRef(ref, &tile, &poly)))
return;
dd->depthMask(false);
diff --git a/Detour/Include/DetourNavMesh.h b/Detour/Include/DetourNavMesh.h
index dfb6e4a..474da2b 100644
--- a/Detour/Include/DetourNavMesh.h
+++ b/Detour/Include/DetourNavMesh.h
@@ -66,15 +66,48 @@ enum dtPolyTypes
DT_POLYTYPE_OFFMESH_CONNECTION = 1, // Off-mesh connections.
};
-enum dtStatus
+
+typedef unsigned int dtStatus;
+
+// High level status.
+static const unsigned int DT_FAILURE = 1 << 31; // Operation failed.
+static const unsigned int DT_SUCCESS = 1 << 30; // Operation succeed.
+static const unsigned int DT_IN_PROGRESS = 1 << 29; // Operation still in progress.
+
+// Detail information for status.
+static const unsigned int DT_STATUS_DETAIL_MASK = 0x0ffffff;
+static const unsigned int DT_WRONG_MAGIC = 1 << 0; // Input data is not recognized.
+static const unsigned int DT_WRONG_VERSION = 1 << 1; // Input data is in wrong version.
+static const unsigned int DT_OUT_OF_MEMORY = 1 << 2; // Operation ran out of memory.
+static const unsigned int DT_INVALID_PARAM = 1 << 3; // An input parameter was invalid.
+static const unsigned int DT_BUFFER_TOO_SMALL = 1 << 4; // Result buffer for the query was too small to store all results.
+static const unsigned int DT_OUT_OF_NODES = 1 << 5; // Query ran out of nodes during search.
+static const unsigned int DT_PARTIAL_RESULT = 1 << 6; // Query did not reach the end location, returning best guess.
+
+
+// Returns true of status is success.
+inline bool dtStatusSucceed(dtStatus status)
{
- DT_FAILURE = 0, // Operation failed.
- DT_FAILURE_DATA_MAGIC,
- DT_FAILURE_DATA_VERSION,
- DT_FAILURE_OUT_OF_MEMORY,
- DT_SUCCESS, // Operation succeed.
- DT_IN_PROGRESS, // Operation still in progress.
-};
+ return (status & DT_SUCCESS) != 0;
+}
+
+// Returns true of status is failure.
+inline bool dtStatusFailed(dtStatus status)
+{
+ return (status & DT_FAILURE) != 0;
+}
+
+// Returns true of status is in progress.
+inline bool dtStatusInProgress(dtStatus status)
+{
+ return (status & DT_IN_PROGRESS) != 0;
+}
+
+// Returns true if specific detail is set.
+inline bool dtStatusDetail(dtStatus status, unsigned int detail)
+{
+ return (status & detail) != 0;
+}
// Structure describing the navigation polygon data.
@@ -384,8 +417,8 @@ private:
dtPolyRef findNearestPolyInTile(const dtMeshTile* tile, const float* center,
const float* extents, float* nearestPt) const;
// Returns closest point on polygon.
- dtStatus closestPointOnPolyInTile(const dtMeshTile* tile, unsigned int ip,
- const float* pos, float* closest) const;
+ void closestPointOnPolyInTile(const dtMeshTile* tile, unsigned int ip,
+ const float* pos, float* closest) const;
dtNavMeshParams m_params; // Current initialization params. TODO: do not store this info twice.
float m_orig[3]; // Origin of the tile (0,0)
diff --git a/Detour/Include/DetourNavMeshQuery.h b/Detour/Include/DetourNavMeshQuery.h
index 818a444..105e493 100644
--- a/Detour/Include/DetourNavMeshQuery.h
+++ b/Detour/Include/DetourNavMeshQuery.h
@@ -365,7 +365,7 @@ private:
dtPolyRef findNearestPolyInTile(const dtMeshTile* tile, const float* center, const float* extents,
const dtQueryFilter* filter, float* nearestPt) const;
// Returns closest point on polygon.
- dtStatus closestPointOnPolyInTile(const dtMeshTile* tile, const dtPoly* poly, const float* pos, float* closest) const;
+ void closestPointOnPolyInTile(const dtMeshTile* tile, const dtPoly* poly, const float* pos, float* closest) const;
// Returns portal points between two polygons.
dtStatus getPortalPoints(dtPolyRef from, dtPolyRef to, float* left, float* right,
diff --git a/Detour/Source/DetourNavMesh.cpp b/Detour/Source/DetourNavMesh.cpp
index eaeff12..e806eae 100644
--- a/Detour/Source/DetourNavMesh.cpp
+++ b/Detour/Source/DetourNavMesh.cpp
@@ -189,10 +189,10 @@ dtStatus dtNavMesh::init(const dtNavMeshParams* params)
m_tiles = (dtMeshTile*)dtAlloc(sizeof(dtMeshTile)*m_maxTiles, DT_ALLOC_PERM);
if (!m_tiles)
- return DT_FAILURE_OUT_OF_MEMORY;
+ return DT_FAILURE | DT_OUT_OF_MEMORY;
m_posLookup = (dtMeshTile**)dtAlloc(sizeof(dtMeshTile*)*m_tileLutSize, DT_ALLOC_PERM);
if (!m_posLookup)
- return DT_FAILURE_OUT_OF_MEMORY;
+ return DT_FAILURE | DT_OUT_OF_MEMORY;
memset(m_tiles, 0, sizeof(dtMeshTile)*m_maxTiles);
memset(m_posLookup, 0, sizeof(dtMeshTile*)*m_tileLutSize);
m_nextFree = 0;
@@ -208,7 +208,7 @@ dtStatus dtNavMesh::init(const dtNavMeshParams* params)
m_polyBits = dtIlog2(dtNextPow2((unsigned int)params->maxPolys));
m_saltBits = 32 - m_tileBits - m_polyBits;
if (m_saltBits < 10)
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
return DT_SUCCESS;
}
@@ -218,9 +218,9 @@ dtStatus dtNavMesh::init(unsigned char* data, const int dataSize, const int flag
// Make sure the data is in right format.
dtMeshHeader* header = (dtMeshHeader*)data;
if (header->magic != DT_NAVMESH_MAGIC)
- return DT_FAILURE_DATA_MAGIC;
+ return DT_FAILURE | DT_WRONG_MAGIC;
if (header->version != DT_NAVMESH_VERSION)
- return DT_FAILURE_DATA_VERSION;
+ return DT_FAILURE | DT_WRONG_VERSION;
dtNavMeshParams params;
dtVcopy(params.orig, header->bmin);
@@ -229,9 +229,9 @@ dtStatus dtNavMesh::init(unsigned char* data, const int dataSize, const int flag
params.maxTiles = 1;
params.maxPolys = header->polyCount;
- dtStatus res = init(¶ms);
- if (res != DT_SUCCESS)
- return res;
+ dtStatus status = init(¶ms);
+ if (dtStatusFailed(status))
+ return status;
return addTile(data, dataSize, flags, 0, 0);
}
@@ -555,8 +555,8 @@ void dtNavMesh::connectIntOffMeshLinks(dtMeshTile* tile)
}
}
-dtStatus dtNavMesh::closestPointOnPolyInTile(const dtMeshTile* tile, unsigned int ip,
- const float* pos, float* closest) const
+void dtNavMesh::closestPointOnPolyInTile(const dtMeshTile* tile, unsigned int ip,
+ const float* pos, float* closest) const
{
const dtPoly* poly = &tile->polys[ip];
@@ -583,8 +583,6 @@ dtStatus dtNavMesh::closestPointOnPolyInTile(const dtMeshTile* tile, unsigned in
closestDistSqr = d;
}
}
-
- return DT_SUCCESS;
}
dtPolyRef dtNavMesh::findNearestPolyInTile(const dtMeshTile* tile,
@@ -606,8 +604,7 @@ dtPolyRef dtNavMesh::findNearestPolyInTile(const dtMeshTile* tile,
{
dtPolyRef ref = polys[i];
float closestPtPoly[3];
- if (closestPointOnPolyInTile(tile, decodePolyIdPoly(ref), center, closestPtPoly) != DT_SUCCESS)
- continue;
+ closestPointOnPolyInTile(tile, decodePolyIdPoly(ref), center, closestPtPoly);
float d = dtVdistSqr(center, closestPtPoly);
if (d < nearestDistanceSqr)
{
@@ -708,9 +705,9 @@ dtStatus dtNavMesh::addTile(unsigned char* data, int dataSize, int flags,
// Make sure the data is in right format.
dtMeshHeader* header = (dtMeshHeader*)data;
if (header->magic != DT_NAVMESH_MAGIC)
- return DT_FAILURE_DATA_MAGIC;
+ return DT_FAILURE | DT_WRONG_MAGIC;
if (header->version != DT_NAVMESH_VERSION)
- return DT_FAILURE_DATA_VERSION;
+ return DT_FAILURE | DT_WRONG_VERSION;
// Make sure the location is free.
if (getTileAt(header->x, header->y))
@@ -732,7 +729,7 @@ dtStatus dtNavMesh::addTile(unsigned char* data, int dataSize, int flags,
// Try to relocate the tile to specific index with same salt.
int tileIndex = (int)decodePolyIdTile((dtPolyRef)lastRef);
if (tileIndex >= m_maxTiles)
- return DT_FAILURE_OUT_OF_MEMORY;
+ return DT_FAILURE | DT_OUT_OF_MEMORY;
// Try to find the specific tile id from the free list.
dtMeshTile* target = &m_tiles[tileIndex];
dtMeshTile* prev = 0;
@@ -744,7 +741,7 @@ dtStatus dtNavMesh::addTile(unsigned char* data, int dataSize, int flags,
}
// Could not find the correct location.
if (tile != target)
- return DT_FAILURE_OUT_OF_MEMORY;
+ return DT_FAILURE | DT_OUT_OF_MEMORY;
// Remove from freelist
if (!prev)
m_nextFree = tile->next;
@@ -757,7 +754,7 @@ dtStatus dtNavMesh::addTile(unsigned char* data, int dataSize, int flags,
// Make sure we could allocate a tile.
if (!tile)
- return DT_FAILURE_OUT_OF_MEMORY;
+ return DT_FAILURE | DT_OUT_OF_MEMORY;
// Insert tile into the position lut.
int h = computeTileHash(header->x, header->y, m_tileLutMask);
@@ -910,11 +907,12 @@ void dtNavMesh::calcTileLoc(const float* pos, int* tx, int* ty) const
dtStatus dtNavMesh::getTileAndPolyByRef(const dtPolyRef ref, const dtMeshTile** tile, const dtPoly** poly) const
{
+ if (!ref) return DT_FAILURE;
unsigned int salt, it, ip;
decodePolyId(ref, salt, it, ip);
- if (it >= (unsigned int)m_maxTiles) return DT_FAILURE;
- if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE;
- if (ip >= (unsigned int)m_tiles[it].header->polyCount) return DT_FAILURE;
+ if (it >= (unsigned int)m_maxTiles) return DT_FAILURE | DT_INVALID_PARAM;
+ if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE | DT_INVALID_PARAM;
+ if (ip >= (unsigned int)m_tiles[it].header->polyCount) return DT_FAILURE | DT_INVALID_PARAM;
*tile = &m_tiles[it];
*poly = &m_tiles[it].polys[ip];
return DT_SUCCESS;
@@ -930,6 +928,7 @@ void dtNavMesh::getTileAndPolyByRefUnsafe(const dtPolyRef ref, const dtMeshTile*
bool dtNavMesh::isValidPolyRef(dtPolyRef ref) const
{
+ if (!ref) return false;
unsigned int salt, it, ip;
decodePolyId(ref, salt, it, ip);
if (it >= (unsigned int)m_maxTiles) return false;
@@ -941,14 +940,14 @@ bool dtNavMesh::isValidPolyRef(dtPolyRef ref) const
dtStatus dtNavMesh::removeTile(dtTileRef ref, unsigned char** data, int* dataSize)
{
if (!ref)
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
unsigned int tileIndex = decodePolyIdTile((dtPolyRef)ref);
unsigned int tileSalt = decodePolyIdSalt((dtPolyRef)ref);
if ((int)tileIndex >= m_maxTiles)
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
dtMeshTile* tile = &m_tiles[tileIndex];
if (tile->salt != tileSalt)
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
// Remove tile from hash lookup.
int h = computeTileHash(tile->header->x,tile->header->y,m_tileLutMask);
@@ -1057,7 +1056,7 @@ dtStatus dtNavMesh::storeTileState(const dtMeshTile* tile, unsigned char* data,
// Make sure there is enough space to store the state.
const int sizeReq = getTileStateSize(tile);
if (maxDataSize < sizeReq)
- return DT_FAILURE;
+ return DT_FAILURE | DT_BUFFER_TOO_SMALL;
dtTileState* tileState = (dtTileState*)data; data += dtAlign4(sizeof(dtTileState));
dtPolyState* polyStates = (dtPolyState*)data; data += dtAlign4(sizeof(dtPolyState) * tile->header->polyCount);
@@ -1084,18 +1083,18 @@ dtStatus dtNavMesh::restoreTileState(dtMeshTile* tile, const unsigned char* data
// Make sure there is enough space to store the state.
const int sizeReq = getTileStateSize(tile);
if (maxDataSize < sizeReq)
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
const dtTileState* tileState = (const dtTileState*)data; data += dtAlign4(sizeof(dtTileState));
const dtPolyState* polyStates = (const dtPolyState*)data; data += dtAlign4(sizeof(dtPolyState) * tile->header->polyCount);
// Check that the restore is possible.
if (tileState->magic != DT_NAVMESH_STATE_MAGIC)
- return DT_FAILURE_DATA_MAGIC;
+ return DT_FAILURE | DT_WRONG_MAGIC;
if (tileState->version != DT_NAVMESH_STATE_VERSION)
- return DT_FAILURE_DATA_VERSION;
+ return DT_FAILURE | DT_WRONG_VERSION;
if (tileState->ref != getTileRef(tile))
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
// Restore per poly state.
for (int i = 0; i < tile->header->polyCount; ++i)
@@ -1114,12 +1113,15 @@ dtStatus dtNavMesh::getOffMeshConnectionPolyEndPoints(dtPolyRef prevRef, dtPolyR
{
unsigned int salt, it, ip;
+ if (!polyRef)
+ return DT_FAILURE;
+
// Get current polygon
decodePolyId(polyRef, salt, it, ip);
- if (it >= (unsigned int)m_maxTiles) return DT_FAILURE;
- if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE;
+ if (it >= (unsigned int)m_maxTiles) return DT_FAILURE | DT_INVALID_PARAM;
+ if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE | DT_INVALID_PARAM;
const dtMeshTile* tile = &m_tiles[it];
- if (ip >= (unsigned int)tile->header->polyCount) return DT_FAILURE;
+ if (ip >= (unsigned int)tile->header->polyCount) return DT_FAILURE | DT_INVALID_PARAM;
const dtPoly* poly = &tile->polys[ip];
// Make sure that the current poly is indeed off-mesh link.
@@ -1154,6 +1156,9 @@ const dtOffMeshConnection* dtNavMesh::getOffMeshConnectionByRef(dtPolyRef ref) c
{
unsigned int salt, it, ip;
+ if (!ref)
+ return 0;
+
// Get current polygon
decodePolyId(ref, salt, it, ip);
if (it >= (unsigned int)m_maxTiles) return 0;
@@ -1174,12 +1179,13 @@ const dtOffMeshConnection* dtNavMesh::getOffMeshConnectionByRef(dtPolyRef ref) c
dtStatus dtNavMesh::setPolyFlags(dtPolyRef ref, unsigned short flags)
{
+ if (!ref) return DT_FAILURE;
unsigned int salt, it, ip;
decodePolyId(ref, salt, it, ip);
- if (it >= (unsigned int)m_maxTiles) return DT_FAILURE;
- if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE;
+ if (it >= (unsigned int)m_maxTiles) return DT_FAILURE | DT_INVALID_PARAM;
+ if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE | DT_INVALID_PARAM;
dtMeshTile* tile = &m_tiles[it];
- if (ip >= (unsigned int)tile->header->polyCount) return DT_FAILURE;
+ if (ip >= (unsigned int)tile->header->polyCount) return DT_FAILURE | DT_INVALID_PARAM;
dtPoly* poly = &tile->polys[ip];
// Change flags.
@@ -1190,12 +1196,13 @@ dtStatus dtNavMesh::setPolyFlags(dtPolyRef ref, unsigned short flags)
dtStatus dtNavMesh::getPolyFlags(dtPolyRef ref, unsigned short* resultFlags) const
{
+ if (!ref) return DT_FAILURE;
unsigned int salt, it, ip;
decodePolyId(ref, salt, it, ip);
- if (it >= (unsigned int)m_maxTiles) return DT_FAILURE;
- if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE;
+ if (it >= (unsigned int)m_maxTiles) return DT_FAILURE | DT_INVALID_PARAM;
+ if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE | DT_INVALID_PARAM;
const dtMeshTile* tile = &m_tiles[it];
- if (ip >= (unsigned int)tile->header->polyCount) return DT_FAILURE;
+ if (ip >= (unsigned int)tile->header->polyCount) return DT_FAILURE | DT_INVALID_PARAM;
const dtPoly* poly = &tile->polys[ip];
*resultFlags = poly->flags;
@@ -1205,12 +1212,13 @@ dtStatus dtNavMesh::getPolyFlags(dtPolyRef ref, unsigned short* resultFlags) con
dtStatus dtNavMesh::setPolyArea(dtPolyRef ref, unsigned char area)
{
+ if (!ref) return DT_FAILURE;
unsigned int salt, it, ip;
decodePolyId(ref, salt, it, ip);
- if (it >= (unsigned int)m_maxTiles) return DT_FAILURE;
- if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE;
+ if (it >= (unsigned int)m_maxTiles) return DT_FAILURE | DT_INVALID_PARAM;
+ if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE | DT_INVALID_PARAM;
dtMeshTile* tile = &m_tiles[it];
- if (ip >= (unsigned int)tile->header->polyCount) return DT_FAILURE;
+ if (ip >= (unsigned int)tile->header->polyCount) return DT_FAILURE | DT_INVALID_PARAM;
dtPoly* poly = &tile->polys[ip];
poly->setArea(area);
@@ -1220,12 +1228,13 @@ dtStatus dtNavMesh::setPolyArea(dtPolyRef ref, unsigned char area)
dtStatus dtNavMesh::getPolyArea(dtPolyRef ref, unsigned char* resultArea) const
{
+ if (!ref) return DT_FAILURE;
unsigned int salt, it, ip;
decodePolyId(ref, salt, it, ip);
- if (it >= (unsigned int)m_maxTiles) return DT_FAILURE;
- if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE;
+ if (it >= (unsigned int)m_maxTiles) return DT_FAILURE | DT_INVALID_PARAM;
+ if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return DT_FAILURE | DT_INVALID_PARAM;
const dtMeshTile* tile = &m_tiles[it];
- if (ip >= (unsigned int)tile->header->polyCount) return DT_FAILURE;
+ if (ip >= (unsigned int)tile->header->polyCount) return DT_FAILURE | DT_INVALID_PARAM;
const dtPoly* poly = &tile->polys[ip];
*resultArea = poly->getArea();
diff --git a/Detour/Source/DetourNavMeshQuery.cpp b/Detour/Source/DetourNavMeshQuery.cpp
index 44aafe2..2a2ebfd 100644
--- a/Detour/Source/DetourNavMeshQuery.cpp
+++ b/Detour/Source/DetourNavMeshQuery.cpp
@@ -121,7 +121,7 @@ dtStatus dtNavMeshQuery::init(const dtNavMesh* nav, const int maxNodes)
}
m_nodePool = new (dtAlloc(sizeof(dtNodePool), DT_ALLOC_PERM)) dtNodePool(maxNodes, dtNextPow2(maxNodes/4));
if (!m_nodePool)
- return DT_FAILURE_OUT_OF_MEMORY;
+ return DT_FAILURE | DT_OUT_OF_MEMORY;
}
else
{
@@ -132,7 +132,7 @@ dtStatus dtNavMeshQuery::init(const dtNavMesh* nav, const int maxNodes)
{
m_tinyNodePool = new (dtAlloc(sizeof(dtNodePool), DT_ALLOC_PERM)) dtNodePool(64, 32);
if (!m_tinyNodePool)
- return DT_FAILURE_OUT_OF_MEMORY;
+ return DT_FAILURE | DT_OUT_OF_MEMORY;
}
else
{
@@ -150,7 +150,7 @@ dtStatus dtNavMeshQuery::init(const dtNavMesh* nav, const int maxNodes)
}
m_openList = new (dtAlloc(sizeof(dtNodeQueue), DT_ALLOC_PERM)) dtNodeQueue(maxNodes);
if (!m_openList)
- return DT_FAILURE_OUT_OF_MEMORY;
+ return DT_FAILURE | DT_OUT_OF_MEMORY;
}
else
{
@@ -166,16 +166,18 @@ dtStatus dtNavMeshQuery::closestPointOnPoly(dtPolyRef ref, const float* pos, flo
dtAssert(m_nav);
const dtMeshTile* tile = 0;
const dtPoly* poly = 0;
- if (m_nav->getTileAndPolyByRef(ref, &tile, &poly) != DT_SUCCESS)
- return DT_FAILURE;
- if (!tile) return DT_FAILURE;
- if (closestPointOnPolyInTile(tile, poly, pos, closest) != DT_SUCCESS)
- return DT_FAILURE;
+ if (dtStatusFailed(m_nav->getTileAndPolyByRef(ref, &tile, &poly)))
+ return DT_FAILURE | DT_INVALID_PARAM;
+ if (!tile)
+ return DT_FAILURE | DT_INVALID_PARAM;
+
+ closestPointOnPolyInTile(tile, poly, pos, closest);
+
return DT_SUCCESS;
}
-dtStatus dtNavMeshQuery::closestPointOnPolyInTile(const dtMeshTile* tile, const dtPoly* poly,
- const float* pos, float* closest) const
+void dtNavMeshQuery::closestPointOnPolyInTile(const dtMeshTile* tile, const dtPoly* poly,
+ const float* pos, float* closest) const
{
const unsigned int ip = (unsigned int)(poly - tile->polys);
const dtPolyDetail* pd = &tile->detailMeshes[ip];
@@ -253,8 +255,6 @@ dtStatus dtNavMeshQuery::closestPointOnPolyInTile(const dtMeshTile* tile, const
closestDistSqr = d;
}
}
-
- return DT_SUCCESS;
}
dtStatus dtNavMeshQuery::closestPointOnPolyBoundary(dtPolyRef ref, const float* pos, float* closest) const
@@ -263,8 +263,8 @@ dtStatus dtNavMeshQuery::closestPointOnPolyBoundary(dtPolyRef ref, const float*
const dtMeshTile* tile = 0;
const dtPoly* poly = 0;
- if (m_nav->getTileAndPolyByRef(ref, &tile, &poly) != DT_SUCCESS)
- return DT_FAILURE;
+ if (dtStatusFailed(m_nav->getTileAndPolyByRef(ref, &tile, &poly)))
+ return DT_FAILURE | DT_INVALID_PARAM;
// Collect vertices.
float verts[DT_VERTS_PER_POLYGON*3];
@@ -311,8 +311,8 @@ dtStatus dtNavMeshQuery::getPolyHeight(dtPolyRef ref, const float* pos, float* h
const dtMeshTile* tile = 0;
const dtPoly* poly = 0;
- if (m_nav->getTileAndPolyByRef(ref, &tile, &poly) != DT_SUCCESS)
- return DT_FAILURE;
+ if (dtStatusFailed(m_nav->getTileAndPolyByRef(ref, &tile, &poly)))
+ return DT_FAILURE | DT_INVALID_PARAM;
if (poly->getType() == DT_POLYTYPE_OFFMESH_CONNECTION)
{
@@ -350,7 +350,7 @@ dtStatus dtNavMeshQuery::getPolyHeight(dtPolyRef ref, const float* pos, float* h
}
}
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
}
dtStatus dtNavMeshQuery::findNearestPoly(const float* center, const float* extents,
@@ -364,8 +364,8 @@ dtStatus dtNavMeshQuery::findNearestPoly(const float* center, const float* exten
// Get nearby polygons from proximity grid.
dtPolyRef polys[128];
int polyCount = 0;
- if (queryPolygons(center, extents, filter, polys, &polyCount, 128) != DT_SUCCESS)
- return DT_FAILURE;
+ if (dtStatusFailed(queryPolygons(center, extents, filter, polys, &polyCount, 128)))
+ return DT_FAILURE | DT_INVALID_PARAM;
// Find nearest polygon amongst the nearby polygons.
dtPolyRef nearest = 0;
@@ -374,8 +374,7 @@ dtStatus dtNavMeshQuery::findNearestPoly(const float* center, const float* exten
{
dtPolyRef ref = polys[i];
float closestPtPoly[3];
- if (closestPointOnPoly(ref, center, closestPtPoly) != DT_SUCCESS)
- continue;
+ closestPointOnPoly(ref, center, closestPtPoly);
float d = dtVdistSqr(center, closestPtPoly);
if (d < nearestDistanceSqr)
{
@@ -413,8 +412,7 @@ dtPolyRef dtNavMeshQuery::findNearestPolyInTile(const dtMeshTile* tile, const fl
dtPolyRef ref = polys[i];
const dtPoly* poly = &tile->polys[m_nav->decodePolyIdPoly(ref)];
float closestPtPoly[3];
- if (closestPointOnPolyInTile(tile, poly, center, closestPtPoly) != DT_SUCCESS)
- continue;
+ closestPointOnPolyInTile(tile, poly, center, closestPtPoly);
float d = dtVdistSqr(center, closestPtPoly);
if (d < nearestDistanceSqr)
@@ -547,7 +545,7 @@ dtStatus dtNavMeshQuery::queryPolygons(const float* center, const float* extents
if (n >= maxPolys)
{
*polyCount = n;
- return DT_SUCCESS;
+ return DT_SUCCESS | DT_BUFFER_TOO_SMALL;
}
}
}
@@ -568,14 +566,14 @@ dtStatus dtNavMeshQuery::findPath(dtPolyRef startRef, dtPolyRef endRef,
*pathCount = 0;
if (!startRef || !endRef)
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
if (!maxPath)
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
// Validate input
if (!m_nav->isValidPolyRef(startRef) || !m_nav->isValidPolyRef(endRef))
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
if (startRef == endRef)
{
@@ -599,6 +597,8 @@ dtStatus dtNavMeshQuery::findPath(dtPolyRef startRef, dtPolyRef endRef,
dtNode* lastBestNode = startNode;
float lastBestNodeCost = startNode->total;
+ dtStatus status = DT_SUCCESS;
+
while (!m_openList->empty())
{
// Remove node from open list and put it in closed list.
@@ -648,7 +648,10 @@ dtStatus dtNavMeshQuery::findPath(dtPolyRef startRef, dtPolyRef endRef,
dtNode* neighbourNode = m_nodePool->getNode(neighbourRef);
if (!neighbourNode)
+ {
+ status |= DT_OUT_OF_NODES;
continue;
+ }
// If the node is visited the first time, calculate node position.
if (neighbourNode->flags == 0)
@@ -726,6 +729,9 @@ dtStatus dtNavMeshQuery::findPath(dtPolyRef startRef, dtPolyRef endRef,
}
}
+ if (lastBestNode->id != endRef)
+ status |= DT_PARTIAL_RESULT;
+
// Reverse the path.
dtNode* prev = 0;
dtNode* node = lastBestNode;
@@ -744,13 +750,18 @@ dtStatus dtNavMeshQuery::findPath(dtPolyRef startRef, dtPolyRef endRef,
do
{
path[n++] = node->id;
+ if (n >= maxPath)
+ {
+ status |= DT_BUFFER_TOO_SMALL;
+ break;
+ }
node = m_nodePool->getNodeAtIdx(node->pidx);
}
- while (node && n < maxPath);
+ while (node);
*pathCount = n;
- return DT_SUCCESS;
+ return status;
}
dtStatus dtNavMeshQuery::initSlicedFindPath(dtPolyRef startRef, dtPolyRef endRef,
@@ -771,11 +782,11 @@ dtStatus dtNavMeshQuery::initSlicedFindPath(dtPolyRef startRef, dtPolyRef endRef
m_query.filter = filter;
if (!startRef || !endRef)
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
// Validate input
if (!m_nav->isValidPolyRef(startRef) || !m_nav->isValidPolyRef(endRef))
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
if (startRef == endRef)
{
@@ -804,7 +815,7 @@ dtStatus dtNavMeshQuery::initSlicedFindPath(dtPolyRef startRef, dtPolyRef endRef
dtStatus dtNavMeshQuery::updateSlicedFindPath(const int maxIter)
{
- if (m_query.status!= DT_IN_PROGRESS)
+ if (!dtStatusInProgress(m_query.status))
return m_query.status;
// Make sure the request is still valid.
@@ -828,7 +839,8 @@ dtStatus dtNavMeshQuery::updateSlicedFindPath(const int maxIter)
if (bestNode->id == m_query.endRef)
{
m_query.lastBestNode = bestNode;
- m_query.status = DT_SUCCESS;
+ const dtStatus details = m_query.status & DT_STATUS_DETAIL_MASK;
+ m_query.status = DT_SUCCESS | details;
return m_query.status;
}
@@ -837,7 +849,7 @@ dtStatus dtNavMeshQuery::updateSlicedFindPath(const int maxIter)
const dtPolyRef bestRef = bestNode->id;
const dtMeshTile* bestTile = 0;
const dtPoly* bestPoly = 0;
- if (m_nav->getTileAndPolyByRef(bestRef, &bestTile, &bestPoly) != DT_SUCCESS)
+ if (dtStatusFailed(m_nav->getTileAndPolyByRef(bestRef, &bestTile, &bestPoly)))
{
// The polygon has disappeared during the sliced query, fail.
m_query.status = DT_FAILURE;
@@ -852,7 +864,7 @@ dtStatus dtNavMeshQuery::updateSlicedFindPath(const int maxIter)
parentRef = m_nodePool->getNodeAtIdx(bestNode->pidx)->id;
if (parentRef)
{
- if (m_nav->getTileAndPolyByRef(parentRef, &parentTile, &parentPoly) != DT_SUCCESS)
+ if (dtStatusFailed(m_nav->getTileAndPolyByRef(parentRef, &parentTile, &parentPoly)))
{
// The polygon has disappeared during the sliced query, fail.
m_query.status = DT_FAILURE;
@@ -879,7 +891,10 @@ dtStatus dtNavMeshQuery::updateSlicedFindPath(const int maxIter)
dtNode* neighbourNode = m_nodePool->getNode(neighbourRef);
if (!neighbourNode)
+ {
+ m_query.status |= DT_OUT_OF_NODES;
continue;
+ }
// If the node is visited the first time, calculate node position.
if (neighbourNode->flags == 0)
@@ -959,7 +974,10 @@ dtStatus dtNavMeshQuery::updateSlicedFindPath(const int maxIter)
// Exhausted all nodes, but could not find path.
if (m_openList->empty())
- m_query.status = DT_SUCCESS;
+ {
+ const dtStatus details = m_query.status & DT_STATUS_DETAIL_MASK;
+ m_query.status = DT_SUCCESS | details;
+ }
return m_query.status;
}
@@ -968,7 +986,7 @@ dtStatus dtNavMeshQuery::finalizeSlicedFindPath(dtPolyRef* path, int* pathCount,
{
*pathCount = 0;
- if (m_query.status != DT_SUCCESS)
+ if (dtStatusFailed(m_query.status))
{
// Reset query.
memset(&m_query, 0, sizeof(dtQueryData));
@@ -986,6 +1004,10 @@ dtStatus dtNavMeshQuery::finalizeSlicedFindPath(dtPolyRef* path, int* pathCount,
{
// Reverse the path.
dtAssert(m_query.lastBestNode);
+
+ if (m_query.lastBestNode->id != m_query.endRef)
+ m_query.status |= DT_PARTIAL_RESULT;
+
dtNode* prev = 0;
dtNode* node = m_query.lastBestNode;
do
@@ -1002,17 +1024,24 @@ dtStatus dtNavMeshQuery::finalizeSlicedFindPath(dtPolyRef* path, int* pathCount,
do
{
path[n++] = node->id;
+ if (n >= maxPath)
+ {
+ m_query.status |= DT_BUFFER_TOO_SMALL;
+ break;
+ }
node = m_nodePool->getNodeAtIdx(node->pidx);
}
- while (node && n < maxPath);
+ while (node);
}
+ const dtStatus details = m_query.status & DT_STATUS_DETAIL_MASK;
+
// Reset query.
memset(&m_query, 0, sizeof(dtQueryData));
*pathCount = n;
- return DT_SUCCESS;
+ return DT_SUCCESS | details;
}
dtStatus dtNavMeshQuery::finalizeSlicedFindPathPartial(const dtPolyRef* existing, const int existingSize,
@@ -1025,7 +1054,7 @@ dtStatus dtNavMeshQuery::finalizeSlicedFindPathPartial(const dtPolyRef* existing
return DT_FAILURE;
}
- if (m_query.status != DT_SUCCESS && m_query.status != DT_IN_PROGRESS)
+ if (dtStatusFailed(m_query.status))
{
// Reset query.
memset(&m_query, 0, sizeof(dtQueryData));
@@ -1071,17 +1100,24 @@ dtStatus dtNavMeshQuery::finalizeSlicedFindPathPartial(const dtPolyRef* existing
do
{
path[n++] = node->id;
+ if (n >= maxPath)
+ {
+ m_query.status |= DT_BUFFER_TOO_SMALL;
+ break;
+ }
node = m_nodePool->getNodeAtIdx(node->pidx);
}
- while (node && n < maxPath);
+ while (node);
}
+ const dtStatus details = m_query.status & DT_STATUS_DETAIL_MASK;
+
// Reset query.
memset(&m_query, 0, sizeof(dtQueryData));
*pathCount = n;
- return DT_SUCCESS;
+ return DT_SUCCESS | details;
}
@@ -1095,17 +1131,17 @@ dtStatus dtNavMeshQuery::findStraightPath(const float* startPos, const float* en
*straightPathCount = 0;
if (!maxStraightPath)
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
if (!path[0])
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
int n = 0;
// TODO: Should this be callers responsibility?
float closestStartPos[3];
- if (closestPointOnPolyBoundary(path[0], startPos, closestStartPos) != DT_SUCCESS)
- return DT_FAILURE;
+ if (dtStatusFailed(closestPointOnPolyBoundary(path[0], startPos, closestStartPos)))
+ return DT_FAILURE | DT_INVALID_PARAM;
// Add start point.
dtVcopy(&straightPath[n*3], closestStartPos);
@@ -1117,12 +1153,12 @@ dtStatus dtNavMeshQuery::findStraightPath(const float* startPos, const float* en
if (n >= maxStraightPath)
{
*straightPathCount = n;
- return DT_SUCCESS;
+ return DT_SUCCESS | DT_BUFFER_TOO_SMALL;
}
float closestEndPos[3];
- if (closestPointOnPolyBoundary(path[pathSize-1], endPos, closestEndPos) != DT_SUCCESS)
- return DT_FAILURE;
+ if (dtStatusFailed(closestPointOnPolyBoundary(path[pathSize-1], endPos, closestEndPos)))
+ return DT_FAILURE | DT_INVALID_PARAM;
if (pathSize > 1)
{
@@ -1148,10 +1184,10 @@ dtStatus dtNavMeshQuery::findStraightPath(const float* startPos, const float* en
if (i+1 < pathSize)
{
// Next portal.
- if (getPortalPoints(path[i], path[i+1], left, right, fromType, toType) != DT_SUCCESS)
+ if (dtStatusFailed(getPortalPoints(path[i], path[i+1], left, right, fromType, toType)))
{
- if (closestPointOnPolyBoundary(path[i], endPos, closestEndPos) != DT_SUCCESS)
- return DT_FAILURE;
+ if (dtStatusFailed(closestPointOnPolyBoundary(path[i], endPos, closestEndPos)))
+ return DT_FAILURE | DT_INVALID_PARAM;
dtVcopy(&straightPath[n*3], closestEndPos);
if (straightPathFlags)
@@ -1215,7 +1251,7 @@ dtStatus dtNavMeshQuery::findStraightPath(const float* startPos, const float* en
if (flags == DT_STRAIGHTPATH_END || n >= maxStraightPath)
{
*straightPathCount = n;
- return DT_SUCCESS;
+ return DT_SUCCESS | ((n >= maxStraightPath) ? DT_BUFFER_TOO_SMALL : 0);
}
}
else
@@ -1274,7 +1310,7 @@ dtStatus dtNavMeshQuery::findStraightPath(const float* startPos, const float* en
if (flags == DT_STRAIGHTPATH_END || n >= maxStraightPath)
{
*straightPathCount = n;
- return DT_SUCCESS;
+ return DT_SUCCESS | ((n >= maxStraightPath) ? DT_BUFFER_TOO_SMALL : 0);
}
}
else
@@ -1316,7 +1352,8 @@ dtStatus dtNavMeshQuery::findStraightPath(const float* startPos, const float* en
}
*straightPathCount = n;
- return DT_SUCCESS;
+
+ return DT_SUCCESS | ((n >= maxStraightPath) ? DT_BUFFER_TOO_SMALL : 0);
}
dtStatus dtNavMeshQuery::moveAlongSurface(dtPolyRef startRef, const float* startPos, const float* endPos,
@@ -1329,8 +1366,12 @@ dtStatus dtNavMeshQuery::moveAlongSurface(dtPolyRef startRef, const float* start
*visitedCount = 0;
// Validate input
- if (!startRef) return DT_FAILURE;
- if (!m_nav->isValidPolyRef(startRef)) return DT_FAILURE;
+ if (!startRef)
+ return DT_FAILURE | DT_INVALID_PARAM;
+ if (!m_nav->isValidPolyRef(startRef))
+ return DT_FAILURE | DT_INVALID_PARAM;
+
+ dtStatus status = DT_SUCCESS;
static const int MAX_STACK = 48;
dtNode* stack[MAX_STACK];
@@ -1495,16 +1536,21 @@ dtStatus dtNavMeshQuery::moveAlongSurface(dtPolyRef startRef, const float* start
do
{
visited[n++] = node->id;
+ if (n >= maxVisitedSize)
+ {
+ status |= DT_BUFFER_TOO_SMALL;
+ break;
+ }
node = m_tinyNodePool->getNodeAtIdx(node->pidx);
}
- while (node && n < maxVisitedSize);
+ while (node);
}
dtVcopy(resultPos, bestPos);
*visitedCount = n;
- return DT_SUCCESS;
+ return status;
}
@@ -1515,14 +1561,14 @@ dtStatus dtNavMeshQuery::getPortalPoints(dtPolyRef from, dtPolyRef to, float* le
const dtMeshTile* fromTile = 0;
const dtPoly* fromPoly = 0;
- if (m_nav->getTileAndPolyByRef(from, &fromTile, &fromPoly) != DT_SUCCESS)
- return DT_FAILURE;
+ if (dtStatusFailed(m_nav->getTileAndPolyByRef(from, &fromTile, &fromPoly)))
+ return DT_FAILURE | DT_INVALID_PARAM;
fromType = fromPoly->getType();
const dtMeshTile* toTile = 0;
const dtPoly* toPoly = 0;
- if (m_nav->getTileAndPolyByRef(to, &toTile, &toPoly) != DT_SUCCESS)
- return DT_FAILURE;
+ if (dtStatusFailed(m_nav->getTileAndPolyByRef(to, &toTile, &toPoly)))
+ return DT_FAILURE | DT_INVALID_PARAM;
toType = toPoly->getType();
return getPortalPoints(from, fromPoly, fromTile, to, toPoly, toTile, left, right);
@@ -1544,7 +1590,7 @@ dtStatus dtNavMeshQuery::getPortalPoints(dtPolyRef from, const dtPoly* fromPoly,
}
}
if (!link)
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
// Handle off-mesh connections.
if (fromPoly->getType() == DT_POLYTYPE_OFFMESH_CONNECTION)
@@ -1560,7 +1606,7 @@ dtStatus dtNavMeshQuery::getPortalPoints(dtPolyRef from, const dtPoly* fromPoly,
return DT_SUCCESS;
}
}
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
}
if (toPoly->getType() == DT_POLYTYPE_OFFMESH_CONNECTION)
@@ -1575,7 +1621,7 @@ dtStatus dtNavMeshQuery::getPortalPoints(dtPolyRef from, const dtPoly* fromPoly,
return DT_SUCCESS;
}
}
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
}
// Find portal vertices.
@@ -1607,7 +1653,8 @@ dtStatus dtNavMeshQuery::getEdgeMidPoint(dtPolyRef from, dtPolyRef to, float* mi
{
float left[3], right[3];
unsigned char fromType, toType;
- if (!getPortalPoints(from, to, left,right, fromType, toType)) return DT_FAILURE;
+ if (dtStatusFailed(getPortalPoints(from, to, left,right, fromType, toType)))
+ return DT_FAILURE | DT_INVALID_PARAM;
mid[0] = (left[0]+right[0])*0.5f;
mid[1] = (left[1]+right[1])*0.5f;
mid[2] = (left[2]+right[2])*0.5f;
@@ -1619,8 +1666,8 @@ dtStatus dtNavMeshQuery::getEdgeMidPoint(dtPolyRef from, const dtPoly* fromPoly,
float* mid) const
{
float left[3], right[3];
- if (getPortalPoints(from, fromPoly, fromTile, to, toPoly, toTile, left, right) != DT_SUCCESS)
- return DT_FAILURE;
+ if (dtStatusFailed(getPortalPoints(from, fromPoly, fromTile, to, toPoly, toTile, left, right)))
+ return DT_FAILURE | DT_INVALID_PARAM;
mid[0] = (left[0]+right[0])*0.5f;
mid[1] = (left[1]+right[1])*0.5f;
mid[2] = (left[2]+right[2])*0.5f;
@@ -1639,7 +1686,7 @@ dtStatus dtNavMeshQuery::raycast(dtPolyRef startRef, const float* startPos, cons
// Validate input
if (!startRef || !m_nav->isValidPolyRef(startRef))
- return DT_FAILURE;
+ return DT_FAILURE | DT_INVALID_PARAM;
dtPolyRef curRef = startRef;
float verts[DT_VERTS_PER_POLYGON*3];
@@ -1649,6 +1696,8 @@ dtStatus dtNavMeshQuery::raycast(dtPolyRef startRef, const float* startPos, cons
hitNormal[1] = 0;
hitNormal[2] = 0;
+ dtStatus status = DT_SUCCESS;
+
while (curRef)
{
// Cast ray against current polygon.
@@ -1673,7 +1722,7 @@ dtStatus dtNavMeshQuery::raycast(dtPolyRef startRef, const float* startPos, cons
// Could not hit the polygon, keep the old t and report hit.
if (pathCount)
*pathCount = n;
- return DT_SUCCESS;
+ return status;
}
// Keep track of furthest t so far.
if (tmax > *t)
@@ -1682,6 +1731,8 @@ dtStatus dtNavMeshQuery::raycast(dtPolyRef startRef, const float* startPos, cons
// Store visited polygons.
if (n < maxPath)
path[n++] = curRef;
+ else
+ status |= DT_BUFFER_TOO_SMALL;
// Ray end is completely inside the polygon.
if (segMax == -1)
@@ -1689,7 +1740,7 @@ dtStatus dtNavMeshQuery::raycast(dtPolyRef startRef, const float* startPos, cons
*t = FLT_MAX;
if (pathCount)
*pathCount = n;
- return DT_SUCCESS;
+ return status;
}
// Follow neighbours.
@@ -1791,7 +1842,7 @@ dtStatus dtNavMeshQuery::raycast(dtPolyRef startRef, const float* startPos, cons
if (pathCount)
*pathCount = n;
- return DT_SUCCESS;
+ return status;
}
// No hit, advance to neighbour polygon.
@@ -1801,7 +1852,7 @@ dtStatus dtNavMeshQuery::raycast(dtPolyRef startRef, const float* startPos, cons
if (pathCount)
*pathCount = n;
- return DT_SUCCESS;
+ return status;
}
dtStatus dtNavMeshQuery::findPolysAroundCircle(dtPolyRef startRef, const float* centerPos, const float radius,
@@ -1816,8 +1867,8 @@ dtStatus dtNavMeshQuery::findPolysAroundCircle(dtPolyRef startRef, const float*
*resultCount = 0;
// Validate input
- if (!startRef) return DT_FAILURE;
- if (!m_nav->isValidPolyRef(startRef)) return DT_FAILURE;
+ if (!startRef || !m_nav->isValidPolyRef(startRef))
+ return DT_FAILURE | DT_INVALID_PARAM;
m_nodePool->clear();
m_openList->clear();
@@ -1831,6 +1882,8 @@ dtStatus dtNavMeshQuery::findPolysAroundCircle(dtPolyRef startRef, const float*
startNode->flags = DT_NODE_OPEN;
m_openList->push(startNode);
+ dtStatus status = DT_SUCCESS;
+
int n = 0;
if (n < maxResult)
{
@@ -1842,6 +1895,10 @@ dtStatus dtNavMeshQuery::findPolysAroundCircle(dtPolyRef startRef, const float*
resultCost[n] = 0;
++n;
}
+ else
+ {
+ status |= DT_BUFFER_TOO_SMALL;
+ }
const float radiusSqr = dtSqr(radius);
@@ -1897,7 +1954,10 @@ dtStatus dtNavMeshQuery::findPolysAroundCircle(dtPolyRef startRef, const float*
dtNode* neighbourNode = m_nodePool->getNode(neighbourRef);
if (!neighbourNode)
+ {
+ status |= DT_OUT_OF_NODES;
continue;
+ }
if (neighbourNode->flags & DT_NODE_CLOSED)
continue;
@@ -1933,6 +1993,10 @@ dtStatus dtNavMeshQuery::findPolysAroundCircle(dtPolyRef startRef, const float*
resultCost[n] = neighbourNode->total;
++n;
}
+ else
+ {
+ status |= DT_BUFFER_TOO_SMALL;
+ }
neighbourNode->flags = DT_NODE_OPEN;
m_openList->push(neighbourNode);
}
@@ -1941,7 +2005,7 @@ dtStatus dtNavMeshQuery::findPolysAroundCircle(dtPolyRef startRef, const float*
*resultCount = n;
- return DT_SUCCESS;
+ return status;
}
dtStatus dtNavMeshQuery::findPolysAroundShape(dtPolyRef startRef, const float* verts, const int nverts,
@@ -1956,8 +2020,8 @@ dtStatus dtNavMeshQuery::findPolysAroundShape(dtPolyRef startRef, const float* v
*resultCount = 0;
// Validate input
- if (!startRef) return DT_FAILURE;
- if (!m_nav->isValidPolyRef(startRef)) return DT_FAILURE;
+ if (!startRef || !m_nav->isValidPolyRef(startRef))
+ return DT_FAILURE | DT_INVALID_PARAM;
m_nodePool->clear();
m_openList->clear();
@@ -1976,6 +2040,8 @@ dtStatus dtNavMeshQuery::findPolysAroundShape(dtPolyRef startRef, const float* v
startNode->flags = DT_NODE_OPEN;
m_openList->push(startNode);
+ dtStatus status = DT_SUCCESS;
+
int n = 0;
if (n < maxResult)
{
@@ -1987,6 +2053,10 @@ dtStatus dtNavMeshQuery::findPolysAroundShape(dtPolyRef startRef, const float* v
resultCost[n] = 0;
++n;
}
+ else
+ {
+ status |= DT_BUFFER_TOO_SMALL;
+ }
while (!m_openList->empty())
{
@@ -2042,7 +2112,10 @@ dtStatus dtNavMeshQuery::findPolysAroundShape(dtPolyRef startRef, const float* v
dtNode* neighbourNode = m_nodePool->getNode(neighbourRef);
if (!neighbourNode)
+ {
+ status |= DT_OUT_OF_NODES;
continue;
+ }
if (neighbourNode->flags & DT_NODE_CLOSED)
continue;
@@ -2078,6 +2151,10 @@ dtStatus dtNavMeshQuery::findPolysAroundShape(dtPolyRef startRef, const float* v
resultCost[n] = neighbourNode->total;
++n;
}
+ else
+ {
+ status |= DT_BUFFER_TOO_SMALL;
+ }
neighbourNode->flags = DT_NODE_OPEN;
m_openList->push(neighbourNode);
}
@@ -2086,7 +2163,7 @@ dtStatus dtNavMeshQuery::findPolysAroundShape(dtPolyRef startRef, const float* v
*resultCount = n;
- return DT_SUCCESS;
+ return status;
}
dtStatus dtNavMeshQuery::findLocalNeighbourhood(dtPolyRef startRef, const float* centerPos, const float radius,
@@ -2100,8 +2177,8 @@ dtStatus dtNavMeshQuery::findLocalNeighbourhood(dtPolyRef startRef, const float*
*resultCount = 0;
// Validate input
- if (!startRef) return DT_FAILURE;
- if (!m_nav->isValidPolyRef(startRef)) return DT_FAILURE;
+ if (!startRef || !m_nav->isValidPolyRef(startRef))
+ return DT_FAILURE | DT_INVALID_PARAM;
static const int MAX_STACK = 48;
dtNode* stack[MAX_STACK];
@@ -2120,6 +2197,8 @@ dtStatus dtNavMeshQuery::findLocalNeighbourhood(dtPolyRef startRef, const float*
float pa[DT_VERTS_PER_POLYGON*3];
float pb[DT_VERTS_PER_POLYGON*3];
+ dtStatus status = DT_SUCCESS;
+
int n = 0;
if (n < maxResult)
{
@@ -2128,6 +2207,10 @@ dtStatus dtNavMeshQuery::findLocalNeighbourhood(dtPolyRef startRef, const float*
resultParent[n] = 0;
++n;
}
+ else
+ {
+ status |= DT_BUFFER_TOO_SMALL;
+ }
while (nstack)
{
@@ -2241,6 +2324,10 @@ dtStatus dtNavMeshQuery::findLocalNeighbourhood(dtPolyRef startRef, const float*
resultParent[n] = curRef;
++n;
}
+ else
+ {
+ status |= DT_BUFFER_TOO_SMALL;
+ }
if (nstack < MAX_STACK)
{
@@ -2251,7 +2338,7 @@ dtStatus dtNavMeshQuery::findLocalNeighbourhood(dtPolyRef startRef, const float*
*resultCount = n;
- return DT_SUCCESS;
+ return status;
}
@@ -2290,14 +2377,16 @@ dtStatus dtNavMeshQuery::getPolyWallSegments(dtPolyRef ref, const dtQueryFilter*
const dtMeshTile* tile = 0;
const dtPoly* poly = 0;
- if (m_nav->getTileAndPolyByRef(ref, &tile, &poly) != DT_SUCCESS)
- return DT_FAILURE;
+ if (dtStatusFailed(m_nav->getTileAndPolyByRef(ref, &tile, &poly)))
+ return DT_FAILURE | DT_INVALID_PARAM;
int n = 0;
static const int MAX_INTERVAL = 16;
dtSegInterval ints[MAX_INTERVAL];
int nints;
+ dtStatus status = DT_SUCCESS;
+
for (int i = 0, j = (int)poly->vertCount-1; i < (int)poly->vertCount; j = i++)
{
// Skip non-solid edges.
@@ -2354,6 +2443,10 @@ dtStatus dtNavMeshQuery::getPolyWallSegments(dtPolyRef ref, const dtQueryFilter*
dtVcopy(seg+0, vj);
dtVcopy(seg+3, vi);
}
+ else
+ {
+ status |= DT_BUFFER_TOO_SMALL;
+ }
}
else
{
@@ -2366,13 +2459,17 @@ dtStatus dtNavMeshQuery::getPolyWallSegments(dtPolyRef ref, const dtQueryFilter*
dtVlerp(seg+0, vj,vi, tmin);
dtVlerp(seg+3, vj,vi, tmax);
}
+ else
+ {
+ status |= DT_BUFFER_TOO_SMALL;
+ }
}
}
}
*segmentCount = n;
- return DT_SUCCESS;
+ return status;
}
dtStatus dtNavMeshQuery::findDistanceToWall(dtPolyRef startRef, const float* centerPos, const float maxRadius,
@@ -2384,8 +2481,8 @@ dtStatus dtNavMeshQuery::findDistanceToWall(dtPolyRef startRef, const float* cen
dtAssert(m_openList);
// Validate input
- if (!startRef) return DT_FAILURE;
- if (!m_nav->isValidPolyRef(startRef)) return DT_FAILURE;
+ if (!startRef || !m_nav->isValidPolyRef(startRef))
+ return DT_FAILURE | DT_INVALID_PARAM;
m_nodePool->clear();
m_openList->clear();
@@ -2401,6 +2498,8 @@ dtStatus dtNavMeshQuery::findDistanceToWall(dtPolyRef startRef, const float* cen
float radiusSqr = dtSqr(maxRadius);
+ dtStatus status = DT_SUCCESS;
+
while (!m_openList->empty())
{
dtNode* bestNode = m_openList->pop();
@@ -2508,7 +2607,10 @@ dtStatus dtNavMeshQuery::findDistanceToWall(dtPolyRef startRef, const float* cen
dtNode* neighbourNode = m_nodePool->getNode(neighbourRef);
if (!neighbourNode)
+ {
+ status |= DT_OUT_OF_NODES;
continue;
+ }
if (neighbourNode->flags & DT_NODE_CLOSED)
continue;
@@ -2549,7 +2651,7 @@ dtStatus dtNavMeshQuery::findDistanceToWall(dtPolyRef startRef, const float* cen
*hitDist = sqrtf(radiusSqr);
- return DT_SUCCESS;
+ return status;
}
bool dtNavMeshQuery::isInClosedList(dtPolyRef ref) const
diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser
index 2a23fec..aa6de24 100644
--- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser
+++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser
@@ -23,13 +23,15 @@
6BD403421224642500995864 /* NavMeshTesterTool.cpp:547 */,
6B920A121225B1C900D5B5AD /* DetourHashLookup.cpp:78 */,
6B920A141225B1CF00D5B5AD /* DetourHashLookup.cpp:131 */,
- 6BD66851124350F50021A7A4 /* NavMeshTesterTool.cpp:486 */,
6B8D55CD127AAA360077C699 /* CrowdManager.cpp:1197 */,
- 6B74B5EA128312A900262888 /* main.cpp:211 */,
6B74B60C128312E600262888 /* CrowdTool.cpp:296 */,
6B74B72E1286B1B000262888 /* CrowdManager.cpp:1313 */,
6B6BEC911299636E0077F7A4 /* RecastRegion.cpp:1244 */,
6B6BEC94129963DA0077F7A4 /* RecastRegion.cpp:307 */,
+ 6B6BEDD2129FD0580077F7A4 /* NavMeshTesterTool.cpp:722 */,
+ 6B6BEDD6129FD07E0077F7A4 /* DetourNavMeshQuery.cpp:818 */,
+ 6B6BEDE2129FD0BA0077F7A4 /* NavMeshTesterTool.cpp:482 */,
+ 6B6BEDE4129FD0BF0077F7A4 /* NavMeshTesterTool.cpp:486 */,
);
codeSenseManager = 6B8632AA0F78115100E2684A /* Code sense */;
executables = (
@@ -135,75 +137,75 @@
PBXFindDataSource_LocationID,
);
};
- PBXPerProjectTemplateStateSaveDate = 312039686;
- PBXWorkspaceStateSaveDate = 312039686;
+ PBXPerProjectTemplateStateSaveDate = 312457071;
+ PBXWorkspaceStateSaveDate = 312457071;
};
perUserProjectItems = {
6B4DE62F12807542001CFDF4 = 6B4DE62F12807542001CFDF4 /* PBXTextBookmark */;
6B4DE649128079E0001CFDF4 = 6B4DE649128079E0001CFDF4 /* PBXTextBookmark */;
6B4DE64A128079E0001CFDF4 = 6B4DE64A128079E0001CFDF4 /* PBXTextBookmark */;
- 6B6BE67D12914E050077F7A4 = 6B6BE67D12914E050077F7A4 /* PBXTextBookmark */;
- 6B6BE685129152770077F7A4 = 6B6BE685129152770077F7A4 /* PBXTextBookmark */;
6B6BE686129152770077F7A4 = 6B6BE686129152770077F7A4 /* PBXTextBookmark */;
6B6BE687129152770077F7A4 = 6B6BE687129152770077F7A4 /* PBXTextBookmark */;
6B6BE689129152770077F7A4 = 6B6BE689129152770077F7A4 /* PBXTextBookmark */;
6B6BE68B129152770077F7A4 = 6B6BE68B129152770077F7A4 /* PBXTextBookmark */;
6B6BE68C129152770077F7A4 = 6B6BE68C129152770077F7A4 /* PBXTextBookmark */;
- 6B6BE68D129152770077F7A4 = 6B6BE68D129152770077F7A4 /* PBXTextBookmark */;
- 6B6BE68E129152770077F7A4 = 6B6BE68E129152770077F7A4 /* PBXTextBookmark */;
- 6B6BE68F129152770077F7A4 = 6B6BE68F129152770077F7A4 /* PBXTextBookmark */;
- 6B6BEC19129959080077F7A4 /* PBXTextBookmark */ = 6B6BEC19129959080077F7A4 /* PBXTextBookmark */;
- 6B6BEC2F12995D2A0077F7A4 /* PBXTextBookmark */ = 6B6BEC2F12995D2A0077F7A4 /* PBXTextBookmark */;
- 6B6BEC3012995D2A0077F7A4 /* PBXTextBookmark */ = 6B6BEC3012995D2A0077F7A4 /* PBXTextBookmark */;
- 6B6BEC3112995D2A0077F7A4 /* PBXTextBookmark */ = 6B6BEC3112995D2A0077F7A4 /* PBXTextBookmark */;
- 6B6BEC3212995D2A0077F7A4 /* PBXTextBookmark */ = 6B6BEC3212995D2A0077F7A4 /* PBXTextBookmark */;
- 6B6BEC3C12995D440077F7A4 /* PBXTextBookmark */ = 6B6BEC3C12995D440077F7A4 /* PBXTextBookmark */;
- 6B6BEC3D12995D480077F7A4 /* PBXTextBookmark */ = 6B6BEC3D12995D480077F7A4 /* PBXTextBookmark */;
- 6B6BEC3E12995D4B0077F7A4 /* PBXTextBookmark */ = 6B6BEC3E12995D4B0077F7A4 /* PBXTextBookmark */;
- 6B6BEC4112995D690077F7A4 /* PBXTextBookmark */ = 6B6BEC4112995D690077F7A4 /* PBXTextBookmark */;
- 6B6BEC4212995D690077F7A4 /* PBXTextBookmark */ = 6B6BEC4212995D690077F7A4 /* PBXTextBookmark */;
- 6B6BEC4312995D690077F7A4 /* PBXTextBookmark */ = 6B6BEC4312995D690077F7A4 /* PBXTextBookmark */;
- 6B6BEC4612995DEA0077F7A4 /* PBXTextBookmark */ = 6B6BEC4612995DEA0077F7A4 /* PBXTextBookmark */;
- 6B6BEC4712995DEA0077F7A4 /* PBXTextBookmark */ = 6B6BEC4712995DEA0077F7A4 /* PBXTextBookmark */;
- 6B6BEC4812995DEA0077F7A4 /* PBXTextBookmark */ = 6B6BEC4812995DEA0077F7A4 /* PBXTextBookmark */;
- 6B6BEC4912995DEA0077F7A4 /* PBXTextBookmark */ = 6B6BEC4912995DEA0077F7A4 /* PBXTextBookmark */;
- 6B6BEC4A12995DEA0077F7A4 /* PBXTextBookmark */ = 6B6BEC4A12995DEA0077F7A4 /* PBXTextBookmark */;
- 6B6BEC4D12995E080077F7A4 /* PBXTextBookmark */ = 6B6BEC4D12995E080077F7A4 /* PBXTextBookmark */;
- 6B6BEC4E12995E080077F7A4 /* PBXTextBookmark */ = 6B6BEC4E12995E080077F7A4 /* PBXTextBookmark */;
- 6B6BEC4F12995E080077F7A4 /* PBXTextBookmark */ = 6B6BEC4F12995E080077F7A4 /* PBXTextBookmark */;
- 6B6BEC6012995F3B0077F7A4 /* PBXTextBookmark */ = 6B6BEC6012995F3B0077F7A4 /* PBXTextBookmark */;
- 6B6BEC651299600A0077F7A4 /* PBXTextBookmark */ = 6B6BEC651299600A0077F7A4 /* PBXTextBookmark */;
- 6B6BEC67129960A70077F7A4 /* PBXTextBookmark */ = 6B6BEC67129960A70077F7A4 /* PBXTextBookmark */;
- 6B6BEC68129960A70077F7A4 /* PBXTextBookmark */ = 6B6BEC68129960A70077F7A4 /* PBXTextBookmark */;
- 6B6BEC6B129960D00077F7A4 /* PBXTextBookmark */ = 6B6BEC6B129960D00077F7A4 /* PBXTextBookmark */;
- 6B6BEC6F129961A20077F7A4 /* PBXTextBookmark */ = 6B6BEC6F129961A20077F7A4 /* PBXTextBookmark */;
- 6B6BEC70129961A20077F7A4 /* PBXTextBookmark */ = 6B6BEC70129961A20077F7A4 /* PBXTextBookmark */;
- 6B6BEC71129961A20077F7A4 /* PBXTextBookmark */ = 6B6BEC71129961A20077F7A4 /* PBXTextBookmark */;
- 6B6BEC75129961C80077F7A4 /* PBXTextBookmark */ = 6B6BEC75129961C80077F7A4 /* PBXTextBookmark */;
- 6B6BEC76129961C80077F7A4 /* PBXTextBookmark */ = 6B6BEC76129961C80077F7A4 /* PBXTextBookmark */;
- 6B6BEC77129961C80077F7A4 /* PBXTextBookmark */ = 6B6BEC77129961C80077F7A4 /* PBXTextBookmark */;
- 6B6BEC79129961F00077F7A4 /* PBXTextBookmark */ = 6B6BEC79129961F00077F7A4 /* PBXTextBookmark */;
- 6B6BEC7E129962F50077F7A4 /* PBXTextBookmark */ = 6B6BEC7E129962F50077F7A4 /* PBXTextBookmark */;
- 6B6BEC7F129962F50077F7A4 /* PBXTextBookmark */ = 6B6BEC7F129962F50077F7A4 /* PBXTextBookmark */;
- 6B6BEC80129962F50077F7A4 /* PBXTextBookmark */ = 6B6BEC80129962F50077F7A4 /* PBXTextBookmark */;
- 6B6BEC82129963000077F7A4 /* PBXTextBookmark */ = 6B6BEC82129963000077F7A4 /* PBXTextBookmark */;
- 6B6BEC851299630A0077F7A4 /* PBXTextBookmark */ = 6B6BEC851299630A0077F7A4 /* PBXTextBookmark */;
- 6B6BEC86129963180077F7A4 /* PBXTextBookmark */ = 6B6BEC86129963180077F7A4 /* PBXTextBookmark */;
- 6B6BEC8D129963480077F7A4 /* PBXTextBookmark */ = 6B6BEC8D129963480077F7A4 /* PBXTextBookmark */;
- 6B6BEC8F129963550077F7A4 /* PBXTextBookmark */ = 6B6BEC8F129963550077F7A4 /* PBXTextBookmark */;
- 6B6BEC90129963610077F7A4 /* PBXTextBookmark */ = 6B6BEC90129963610077F7A4 /* PBXTextBookmark */;
- 6B6BEC931299636F0077F7A4 /* PBXTextBookmark */ = 6B6BEC931299636F0077F7A4 /* PBXTextBookmark */;
- 6B6BEC9B1299642F0077F7A4 /* PBXTextBookmark */ = 6B6BEC9B1299642F0077F7A4 /* PBXTextBookmark */;
- 6B6BEC9D1299644A0077F7A4 /* PBXTextBookmark */ = 6B6BEC9D1299644A0077F7A4 /* PBXTextBookmark */;
- 6B6BEC9E1299644A0077F7A4 /* PBXTextBookmark */ = 6B6BEC9E1299644A0077F7A4 /* PBXTextBookmark */;
- 6B6BECA51299680A0077F7A4 /* PBXTextBookmark */ = 6B6BECA51299680A0077F7A4 /* PBXTextBookmark */;
- 6B6BECA61299680A0077F7A4 /* PBXTextBookmark */ = 6B6BECA61299680A0077F7A4 /* PBXTextBookmark */;
- 6B6BECA71299680A0077F7A4 /* PBXTextBookmark */ = 6B6BECA71299680A0077F7A4 /* PBXTextBookmark */;
- 6B6BECAA129968B20077F7A4 /* PBXTextBookmark */ = 6B6BECAA129968B20077F7A4 /* PBXTextBookmark */;
- 6B6BECAF129968E50077F7A4 /* PBXTextBookmark */ = 6B6BECAF129968E50077F7A4 /* PBXTextBookmark */;
+ 6B6BEC3012995D2A0077F7A4 = 6B6BEC3012995D2A0077F7A4 /* PBXTextBookmark */;
+ 6B6BEC4712995DEA0077F7A4 = 6B6BEC4712995DEA0077F7A4 /* PBXTextBookmark */;
+ 6B6BEC4812995DEA0077F7A4 = 6B6BEC4812995DEA0077F7A4 /* PBXTextBookmark */;
+ 6B6BEC75129961C80077F7A4 = 6B6BEC75129961C80077F7A4 /* PBXTextBookmark */;
+ 6B6BEC7E129962F50077F7A4 = 6B6BEC7E129962F50077F7A4 /* PBXTextBookmark */;
+ 6B6BECA51299680A0077F7A4 = 6B6BECA51299680A0077F7A4 /* PBXTextBookmark */;
+ 6B6BECB5129970130077F7A4 = 6B6BECB5129970130077F7A4 /* PBXTextBookmark */;
+ 6B6BECB6129970130077F7A4 = 6B6BECB6129970130077F7A4 /* PBXTextBookmark */;
+ 6B6BECB7129970130077F7A4 = 6B6BECB7129970130077F7A4 /* PBXTextBookmark */;
+ 6B6BECB8129970130077F7A4 = 6B6BECB8129970130077F7A4 /* PBXTextBookmark */;
+ 6B6BECB9129970130077F7A4 = 6B6BECB9129970130077F7A4 /* PBXTextBookmark */;
+ 6B6BECC2129FA4F20077F7A4 = 6B6BECC2129FA4F20077F7A4 /* PBXTextBookmark */;
+ 6B6BECC3129FA4F20077F7A4 = 6B6BECC3129FA4F20077F7A4 /* PBXTextBookmark */;
+ 6B6BED8C129FB8670077F7A4 /* PBXTextBookmark */ = 6B6BED8C129FB8670077F7A4 /* PBXTextBookmark */;
+ 6B6BED8D129FB8670077F7A4 /* PBXTextBookmark */ = 6B6BED8D129FB8670077F7A4 /* PBXTextBookmark */;
+ 6B6BED8E129FB8670077F7A4 /* PBXTextBookmark */ = 6B6BED8E129FB8670077F7A4 /* PBXTextBookmark */;
+ 6B6BED92129FB8840077F7A4 /* PBXTextBookmark */ = 6B6BED92129FB8840077F7A4 /* PBXTextBookmark */;
+ 6B6BED93129FC9550077F7A4 /* PBXTextBookmark */ = 6B6BED93129FC9550077F7A4 /* PBXTextBookmark */;
+ 6B6BED94129FC9550077F7A4 /* PBXTextBookmark */ = 6B6BED94129FC9550077F7A4 /* PBXTextBookmark */;
+ 6B6BED95129FC9550077F7A4 /* PBXTextBookmark */ = 6B6BED95129FC9550077F7A4 /* PBXTextBookmark */;
+ 6B6BED96129FC9550077F7A4 /* PBXTextBookmark */ = 6B6BED96129FC9550077F7A4 /* PBXTextBookmark */;
+ 6B6BED97129FC9550077F7A4 /* PBXTextBookmark */ = 6B6BED97129FC9550077F7A4 /* PBXTextBookmark */;
+ 6B6BEDB0129FCDB20077F7A4 /* PBXTextBookmark */ = 6B6BEDB0129FCDB20077F7A4 /* PBXTextBookmark */;
+ 6B6BEDB1129FCDB20077F7A4 /* PBXTextBookmark */ = 6B6BEDB1129FCDB20077F7A4 /* PBXTextBookmark */;
+ 6B6BEDB2129FCDB20077F7A4 /* PBXTextBookmark */ = 6B6BEDB2129FCDB20077F7A4 /* PBXTextBookmark */;
+ 6B6BEDB3129FCDB20077F7A4 /* PBXTextBookmark */ = 6B6BEDB3129FCDB20077F7A4 /* PBXTextBookmark */;
+ 6B6BEDB4129FCDB20077F7A4 /* PBXTextBookmark */ = 6B6BEDB4129FCDB20077F7A4 /* PBXTextBookmark */;
+ 6B6BEDB5129FCDB20077F7A4 /* PBXTextBookmark */ = 6B6BEDB5129FCDB20077F7A4 /* PBXTextBookmark */;
+ 6B6BEDB6129FCDB20077F7A4 /* PBXTextBookmark */ = 6B6BEDB6129FCDB20077F7A4 /* PBXTextBookmark */;
+ 6B6BEDB7129FCDB20077F7A4 /* PBXTextBookmark */ = 6B6BEDB7129FCDB20077F7A4 /* PBXTextBookmark */;
+ 6B6BEDB8129FCDB20077F7A4 /* PBXTextBookmark */ = 6B6BEDB8129FCDB20077F7A4 /* PBXTextBookmark */;
+ 6B6BEDBF129FCE930077F7A4 /* PBXTextBookmark */ = 6B6BEDBF129FCE930077F7A4 /* PBXTextBookmark */;
+ 6B6BEDC0129FCE930077F7A4 /* PBXTextBookmark */ = 6B6BEDC0129FCE930077F7A4 /* PBXTextBookmark */;
+ 6B6BEDC1129FCE930077F7A4 /* PBXTextBookmark */ = 6B6BEDC1129FCE930077F7A4 /* PBXTextBookmark */;
+ 6B6BEDC4129FCF980077F7A4 /* PBXTextBookmark */ = 6B6BEDC4129FCF980077F7A4 /* PBXTextBookmark */;
+ 6B6BEDC5129FCF980077F7A4 /* PBXTextBookmark */ = 6B6BEDC5129FCF980077F7A4 /* PBXTextBookmark */;
+ 6B6BEDC6129FCF980077F7A4 /* PBXTextBookmark */ = 6B6BEDC6129FCF980077F7A4 /* PBXTextBookmark */;
+ 6B6BEDC7129FCF980077F7A4 /* PBXTextBookmark */ = 6B6BEDC7129FCF980077F7A4 /* PBXTextBookmark */;
+ 6B6BEDC8129FCF980077F7A4 /* PBXTextBookmark */ = 6B6BEDC8129FCF980077F7A4 /* PBXTextBookmark */;
+ 6B6BEDCD129FD0400077F7A4 /* PBXTextBookmark */ = 6B6BEDCD129FD0400077F7A4 /* PBXTextBookmark */;
+ 6B6BEDCE129FD0400077F7A4 /* PBXTextBookmark */ = 6B6BEDCE129FD0400077F7A4 /* PBXTextBookmark */;
+ 6B6BEDD4129FD05B0077F7A4 /* PBXTextBookmark */ = 6B6BEDD4129FD05B0077F7A4 /* PBXTextBookmark */;
+ 6B6BEDD5129FD05B0077F7A4 /* PBXTextBookmark */ = 6B6BEDD5129FD05B0077F7A4 /* PBXTextBookmark */;
+ 6B6BEDD8129FD0830077F7A4 /* PBXTextBookmark */ = 6B6BEDD8129FD0830077F7A4 /* PBXTextBookmark */;
+ 6B6BEDD9129FD0830077F7A4 /* PBXTextBookmark */ = 6B6BEDD9129FD0830077F7A4 /* PBXTextBookmark */;
+ 6B6BEDDA129FD0830077F7A4 /* PBXTextBookmark */ = 6B6BEDDA129FD0830077F7A4 /* PBXTextBookmark */;
+ 6B6BEDDB129FD0A10077F7A4 /* PBXTextBookmark */ = 6B6BEDDB129FD0A10077F7A4 /* PBXTextBookmark */;
+ 6B6BEDDC129FD0A10077F7A4 /* PBXTextBookmark */ = 6B6BEDDC129FD0A10077F7A4 /* PBXTextBookmark */;
+ 6B6BEDDD129FD0A10077F7A4 /* PBXTextBookmark */ = 6B6BEDDD129FD0A10077F7A4 /* PBXTextBookmark */;
+ 6B6BEDE6129FD0C30077F7A4 /* PBXTextBookmark */ = 6B6BEDE6129FD0C30077F7A4 /* PBXTextBookmark */;
+ 6B6BEDE7129FD0C30077F7A4 /* PBXTextBookmark */ = 6B6BEDE7129FD0C30077F7A4 /* PBXTextBookmark */;
+ 6B6BEDE8129FD0C30077F7A4 /* PBXTextBookmark */ = 6B6BEDE8129FD0C30077F7A4 /* PBXTextBookmark */;
+ 6B6BEDEB129FD0F60077F7A4 /* PBXTextBookmark */ = 6B6BEDEB129FD0F60077F7A4 /* PBXTextBookmark */;
+ 6B6BEDEC129FD0F60077F7A4 /* PBXTextBookmark */ = 6B6BEDEC129FD0F60077F7A4 /* PBXTextBookmark */;
+ 6B6BEDED129FD0F60077F7A4 /* PBXTextBookmark */ = 6B6BEDED129FD0F60077F7A4 /* PBXTextBookmark */;
6B74B5F3128312AC00262888 = 6B74B5F3128312AC00262888 /* PBXTextBookmark */;
6B74B5F4128312AC00262888 = 6B74B5F4128312AC00262888 /* PBXTextBookmark */;
- 6B74B60F128312E900262888 = 6B74B60F128312E900262888 /* PBXTextBookmark */;
6B74B626128314A500262888 = 6B74B626128314A500262888 /* PBXTextBookmark */;
6B74B627128314A500262888 = 6B74B627128314A500262888 /* PBXTextBookmark */;
6B74B628128314A500262888 = 6B74B628128314A500262888 /* PBXTextBookmark */;
@@ -211,17 +213,13 @@
6B74B62B128314A500262888 = 6B74B62B128314A500262888 /* PBXTextBookmark */;
6B74B6D81286ABC000262888 = 6B74B6D81286ABC000262888 /* PBXTextBookmark */;
6B74B7061286AEBD00262888 = 6B74B7061286AEBD00262888 /* PBXTextBookmark */;
- 6B74B7071286AEBD00262888 = 6B74B7071286AEBD00262888 /* PBXTextBookmark */;
6B74B7601286BB6900262888 = 6B74B7601286BB6900262888 /* PBXTextBookmark */;
6B74B7611286BB6900262888 = 6B74B7611286BB6900262888 /* PBXTextBookmark */;
6B74B76B1286F56B00262888 = 6B74B76B1286F56B00262888 /* PBXTextBookmark */;
- 6B74B76F1286F56B00262888 = 6B74B76F1286F56B00262888 /* PBXTextBookmark */;
6B74B7771286F61200262888 = 6B74B7771286F61200262888 /* PBXTextBookmark */;
6B74B7801286F72D00262888 = 6B74B7801286F72D00262888 /* PBXTextBookmark */;
6B74B7811286F72D00262888 = 6B74B7811286F72D00262888 /* PBXTextBookmark */;
6B74B7821286F72D00262888 = 6B74B7821286F72D00262888 /* PBXTextBookmark */;
- 6B74B7831286F72D00262888 = 6B74B7831286F72D00262888 /* PBXTextBookmark */;
- 6B74B7841286F72D00262888 = 6B74B7841286F72D00262888 /* PBXTextBookmark */;
6B74B7901286F77500262888 = 6B74B7901286F77500262888 /* PBXTextBookmark */;
6B74B7991286F7CD00262888 = 6B74B7991286F7CD00262888 /* PBXTextBookmark */;
6B74B7AD1286F93000262888 = 6B74B7AD1286F93000262888 /* PBXTextBookmark */;
@@ -260,7 +258,7 @@
ignoreCount = 0;
lineNumber = 1324;
location = Recast;
- modificationTime = 312042536.286122;
+ modificationTime = 312463596.073982;
originalNumberOfMultipleMatches = 1;
state = 1;
};
@@ -336,9 +334,9 @@
};
6B137C7E0F7FCBFE00459200 /* Recast.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {931, 9659}}";
- sepNavSelRange = "{12869, 0}";
- sepNavVisRange = "{12166, 1292}";
+ sepNavIntBoundsRect = "{{0, 0}, {853, 8983}}";
+ sepNavSelRange = "{9462, 0}";
+ sepNavVisRange = "{9109, 1531}";
sepNavWindowFrame = "{{15, 51}, {1214, 722}}";
};
};
@@ -382,9 +380,9 @@
};
6B137C890F7FCC1100459200 /* RecastRegion.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {853, 16198}}";
- sepNavSelRange = "{31211, 0}";
- sepNavVisRange = "{30801, 795}";
+ sepNavIntBoundsRect = "{{0, 0}, {1139, 16458}}";
+ sepNavSelRange = "{8520, 0}";
+ sepNavVisRange = "{8425, 450}";
};
};
6B25B6100FFA62AD004F1BC4 /* Sample.h */ = {
@@ -403,9 +401,9 @@
};
6B25B6180FFA62BE004F1BC4 /* main.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {853, 12103}}";
- sepNavSelRange = "{5423, 0}";
- sepNavVisRange = "{4987, 831}";
+ sepNavIntBoundsRect = "{{0, 0}, {853, 11999}}";
+ sepNavSelRange = "{5160, 0}";
+ sepNavVisRange = "{4897, 625}";
sepNavWindowFrame = "{{15, 51}, {1214, 722}}";
};
};
@@ -419,9 +417,9 @@
};
6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {936, 15600}}";
- sepNavSelRange = "{29050, 0}";
- sepNavVisRange = "{28341, 1224}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 15860}}";
+ sepNavSelRange = "{22924, 0}";
+ sepNavVisRange = "{22448, 843}";
sepNavWindowFrame = "{{38, 30}, {1214, 722}}";
};
};
@@ -453,7 +451,7 @@
ignoreCount = 0;
lineNumber = 362;
location = Recast;
- modificationTime = 312042354.75943;
+ modificationTime = 312463420.817002;
originalNumberOfMultipleMatches = 1;
state = 1;
};
@@ -516,26 +514,6 @@
sepNavWindowFrame = "{{61, 36}, {1011, 695}}";
};
};
- 6B6BE67D12914E050077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6BB93C7710CFE1D500F74F2B /* DebugDraw.h */;
- name = "DebugDraw.h: 69";
- rLen = 0;
- rLoc = 2265;
- rType = 0;
- vrLen = 1174;
- vrLoc = 2003;
- };
- 6B6BE685129152770077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
- name = "DetourNavMesh.h: 81";
- rLen = 0;
- rLoc = 2770;
- rType = 0;
- vrLen = 1409;
- vrLoc = 2458;
- };
6B6BE686129152770077F7A4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */;
@@ -600,56 +578,6 @@
vrLen = 778;
vrLoc = 3342;
};
- 6B6BE68D129152770077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6BAF40D912196A25008CFCDF /* DetourNavMeshQuery.h */;
- name = "DetourNavMeshQuery.h: 208";
- rLen = 16;
- rLoc = 9856;
- rType = 0;
- vrLen = 2392;
- vrLoc = 8190;
- };
- 6B6BE68E129152770077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
- name = "DetourNavMeshQuery.cpp: 1668";
- rLen = 0;
- rLoc = 44244;
- rType = 0;
- vrLen = 896;
- vrLoc = 43826;
- };
- 6B6BE68F129152770077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
- name = "DetourNavMeshQuery.cpp: 1180";
- rLen = 0;
- rLoc = 31097;
- rType = 0;
- vrLen = 896;
- vrLoc = 30758;
- };
- 6B6BEC19129959080077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
- name = "DetourNavMeshQuery.cpp: 1180";
- rLen = 0;
- rLoc = 31097;
- rType = 0;
- vrLen = 964;
- vrLoc = 30752;
- };
- 6B6BEC2F12995D2A0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
- name = "DetourNavMeshQuery.cpp: 1178";
- rLen = 0;
- rLoc = 31089;
- rType = 0;
- vrLen = 964;
- vrLoc = 30752;
- };
6B6BEC3012995D2A0077F7A4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
@@ -660,96 +588,6 @@
vrLen = 831;
vrLoc = 4987;
};
- 6B6BEC3112995D2A0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 340";
- rLen = 13;
- rLoc = 8908;
- rType = 0;
- vrLen = 1411;
- vrLoc = 28936;
- };
- 6B6BEC3212995D2A0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1219";
- rLen = 0;
- rLoc = 29971;
- rType = 0;
- vrLen = 1229;
- vrLoc = 29232;
- };
- 6B6BEC3C12995D440077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1219";
- rLen = 0;
- rLoc = 29971;
- rType = 0;
- vrLen = 1229;
- vrLoc = 29232;
- };
- 6B6BEC3D12995D480077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1219";
- rLen = 0;
- rLoc = 29971;
- rType = 0;
- vrLen = 676;
- vrLoc = 29628;
- };
- 6B6BEC3E12995D4B0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1211";
- rLen = 0;
- rLoc = 29568;
- rType = 0;
- vrLen = 1229;
- vrLoc = 29232;
- };
- 6B6BEC4112995D690077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1211";
- rLen = 0;
- rLoc = 29568;
- rType = 0;
- vrLen = 1229;
- vrLoc = 29232;
- };
- 6B6BEC4212995D690077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */;
- name = "Sample_SoloMeshTiled.cpp: 1055";
- rLen = 0;
- rLoc = 31906;
- rType = 0;
- vrLen = 1319;
- vrLoc = 10556;
- };
- 6B6BEC4312995D690077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */;
- name = "Sample_SoloMeshTiled.cpp: 1055";
- rLen = 0;
- rLoc = 31906;
- rType = 0;
- vrLen = 1319;
- vrLoc = 10556;
- };
- 6B6BEC4612995DEA0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */;
- name = "Sample_SoloMeshTiled.cpp: 1055";
- rLen = 0;
- rLoc = 31906;
- rType = 0;
- vrLen = 1430;
- vrLoc = 10128;
- };
6B6BEC4712995DEA0077F7A4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6BB93C7710CFE1D500F74F2B /* DebugDraw.h */;
@@ -770,133 +608,6 @@
vrLen = 947;
vrLoc = 4059;
};
- 6B6BEC4912995DEA0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
- rLen = 0;
- rLoc = 554;
- rType = 1;
- };
- 6B6BEC4A12995DEA0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
- name = "Sample_TileMesh.cpp: 555";
- rLen = 0;
- rLoc = 14806;
- rType = 0;
- vrLen = 1423;
- vrLoc = 14014;
- };
- 6B6BEC4D12995E080077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
- name = "Sample_TileMesh.cpp: 555";
- rLen = 0;
- rLoc = 14806;
- rType = 0;
- vrLen = 1423;
- vrLoc = 14014;
- };
- 6B6BEC4E12995E080077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1210";
- rLen = 0;
- rLoc = 29540;
- rType = 0;
- vrLen = 1221;
- vrLoc = 29366;
- };
- 6B6BEC4F12995E080077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1210";
- rLen = 0;
- rLoc = 29540;
- rType = 0;
- vrLen = 1221;
- vrLoc = 29366;
- };
- 6B6BEC6012995F3B0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1214";
- rLen = 0;
- rLoc = 29540;
- rType = 0;
- vrLen = 925;
- vrLoc = 29250;
- };
- 6B6BEC651299600A0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1214";
- rLen = 0;
- rLoc = 29540;
- rType = 0;
- vrLen = 1148;
- vrLoc = 29535;
- };
- 6B6BEC67129960A70077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 376";
- rLen = 0;
- rLoc = 9857;
- rType = 0;
- vrLen = 751;
- vrLoc = 9691;
- };
- 6B6BEC68129960A70077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 363";
- rLen = 0;
- rLoc = 9536;
- rType = 0;
- vrLen = 226;
- vrLoc = 10796;
- };
- 6B6BEC6B129960D00077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 322";
- rLen = 0;
- rLoc = 8730;
- rType = 0;
- vrLen = 623;
- vrLoc = 8207;
- };
- 6B6BEC6F129961A20077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1252";
- rLen = 0;
- rLoc = 30818;
- rType = 0;
- vrLen = 862;
- vrLoc = 30348;
- };
- 6B6BEC70129961A20077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */;
- name = "Sample_SoloMeshTiled.cpp: 1055";
- rLen = 0;
- rLoc = 31906;
- rType = 0;
- vrLen = 1489;
- vrLoc = 10113;
- };
- 6B6BEC71129961A20077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */;
- name = "Sample_SoloMeshTiled.cpp: 872";
- rLen = 0;
- rLoc = 26670;
- rType = 0;
- vrLen = 1264;
- vrLoc = 26177;
- };
6B6BEC75129961C80077F7A4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */;
@@ -907,126 +618,16 @@
vrLen = 1352;
vrLoc = 26182;
};
- 6B6BEC76129961C80077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
- name = "Sample_TileMesh.cpp: 555";
- rLen = 0;
- rLoc = 14806;
- rType = 0;
- vrLen = 1458;
- vrLoc = 14011;
- };
- 6B6BEC77129961C80077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
- name = "Sample_TileMesh.cpp: 1035";
- rLen = 0;
- rLoc = 29141;
- rType = 0;
- vrLen = 1072;
- vrLoc = 28684;
- };
- 6B6BEC79129961F00077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
- name = "Sample_TileMesh.cpp: 1035";
- rLen = 0;
- rLoc = 29141;
- rType = 0;
- vrLen = 1064;
- vrLoc = 28684;
- };
6B6BEC7E129962F50077F7A4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 1033";
rLen = 0;
- rLoc = 29050;
+ rLoc = 29237;
rType = 0;
vrLen = 1224;
vrLoc = 28341;
};
- 6B6BEC7F129962F50077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1252";
- rLen = 0;
- rLoc = 30818;
- rType = 0;
- vrLen = 862;
- vrLoc = 30348;
- };
- 6B6BEC80129962F50077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1252";
- rLen = 0;
- rLoc = 30724;
- rType = 0;
- vrLen = 1005;
- vrLoc = 30033;
- };
- 6B6BEC82129963000077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1235";
- rLen = 0;
- rLoc = 30295;
- rType = 0;
- vrLen = 1005;
- vrLoc = 30033;
- };
- 6B6BEC851299630A0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1235";
- rLen = 0;
- rLoc = 30295;
- rType = 0;
- vrLen = 1005;
- vrLoc = 30033;
- };
- 6B6BEC86129963180077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1235";
- rLen = 0;
- rLoc = 30295;
- rType = 0;
- vrLen = 492;
- vrLoc = 30033;
- };
- 6B6BEC8D129963480077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1247";
- rLen = 0;
- rLoc = 30724;
- rType = 0;
- vrLen = 892;
- vrLoc = 30304;
- };
- 6B6BEC8F129963550077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1256";
- rLen = 0;
- rLoc = 30884;
- rType = 0;
- vrLen = 892;
- vrLoc = 30304;
- };
- 6B6BEC90129963610077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1256";
- rLen = 0;
- rLoc = 30884;
- rType = 0;
- vrLen = 892;
- vrLoc = 30304;
- };
6B6BEC911299636E0077F7A4 /* RecastRegion.cpp:1244 */ = {
isa = PBXFileBreakpoint;
actions = (
@@ -1037,24 +638,14 @@
delayBeforeContinue = 0;
fileReference = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
functionName = "rcBuildRegions(rcContext* ctx, rcCompactHeightfield& chf, const int borderSize, const int minRegionArea, const int mergeRegionArea)";
- hitCount = 1;
+ hitCount = 0;
ignoreCount = 0;
lineNumber = 1244;
location = Recast;
- modificationTime = 312042371.393623;
+ modificationTime = 312463420.758797;
originalNumberOfMultipleMatches = 1;
state = 1;
};
- 6B6BEC931299636F0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1256";
- rLen = 0;
- rLoc = 30884;
- rType = 0;
- vrLen = 889;
- vrLoc = 30304;
- };
6B6BEC94129963DA0077F7A4 /* RecastRegion.cpp:307 */ = {
isa = PBXFileBreakpoint;
actions = (
@@ -1065,44 +656,14 @@
delayBeforeContinue = 0;
fileReference = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
functionName = "floodRegion(int x, int y, int i, unsigned short level, unsigned short r, rcCompactHeightfield& chf, unsigned short* srcReg, unsigned short* srcDist, rcIntArray& stack)";
- hitCount = 1;
+ hitCount = 0;
ignoreCount = 0;
lineNumber = 307;
location = Recast;
- modificationTime = 312042460.561444;
+ modificationTime = 312463420.766739;
originalNumberOfMultipleMatches = 1;
state = 1;
};
- 6B6BEC9B1299642F0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1255";
- rLen = 0;
- rLoc = 30884;
- rType = 0;
- vrLen = 938;
- vrLoc = 30309;
- };
- 6B6BEC9D1299644A0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 305";
- rLen = 0;
- rLoc = 8305;
- rType = 0;
- vrLen = 354;
- vrLoc = 7986;
- };
- 6B6BEC9E1299644A0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 319";
- rLen = 0;
- rLoc = 8520;
- rType = 0;
- vrLen = 489;
- vrLoc = 8360;
- };
6B6BECA51299680A0077F7A4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */;
@@ -1113,37 +674,7 @@
vrLen = 793;
vrLoc = 10308;
};
- 6B6BECA61299680A0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 319";
- rLen = 0;
- rLoc = 8520;
- rType = 0;
- vrLen = 708;
- vrLoc = 8174;
- };
- 6B6BECA71299680A0077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1272";
- rLen = 0;
- rLoc = 31381;
- rType = 0;
- vrLen = 941;
- vrLoc = 30628;
- };
- 6B6BECAA129968B20077F7A4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
- name = "RecastRegion.cpp: 1254";
- rLen = 0;
- rLoc = 30979;
- rType = 0;
- vrLen = 872;
- vrLoc = 30724;
- };
- 6B6BECAF129968E50077F7A4 /* PBXTextBookmark */ = {
+ 6B6BECB5129970130077F7A4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */;
name = "RecastRegion.cpp: 1262";
@@ -1153,7 +684,341 @@
vrLen = 795;
vrLoc = 30801;
};
- 6B74B5EA128312A900262888 /* main.cpp:211 */ = {
+ 6B6BECB6129970130077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */;
+ name = "Recast.h: 254";
+ rLen = 0;
+ rLoc = 9462;
+ rType = 0;
+ vrLen = 1531;
+ vrLoc = 9109;
+ };
+ 6B6BECB7129970130077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
+ name = "DetourNavMesh.h: 73";
+ rLen = 0;
+ rLoc = 3562;
+ rType = 0;
+ vrLen = 1472;
+ vrLoc = 2394;
+ };
+ 6B6BECB8129970130077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */;
+ name = "DetourNavMesh.cpp: 232";
+ rLen = 0;
+ rLoc = 6115;
+ rType = 0;
+ vrLen = 1167;
+ vrLoc = 4398;
+ };
+ 6B6BECB9129970130077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF40D912196A25008CFCDF /* DetourNavMeshQuery.h */;
+ name = "DetourNavMeshQuery.h: 203";
+ rLen = 0;
+ rLoc = 9351;
+ rType = 0;
+ vrLen = 1953;
+ vrLoc = 7848;
+ };
+ 6B6BECC2129FA4F20077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
+ name = "DetourNavMeshQuery.cpp: 2561";
+ rLen = 0;
+ rLoc = 70699;
+ rType = 0;
+ vrLen = 909;
+ vrLoc = 29546;
+ };
+ 6B6BECC3129FA4F20077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
+ name = "DetourNavMeshQuery.cpp: 1138";
+ rLen = 0;
+ rLoc = 31126;
+ rType = 0;
+ vrLen = 876;
+ vrLoc = 29579;
+ };
+ 6B6BED8C129FB8670077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
+ name = "DetourNavMeshQuery.cpp: 1126";
+ rLen = 0;
+ rLoc = 30805;
+ rType = 0;
+ vrLen = 992;
+ vrLoc = 29546;
+ };
+ 6B6BED8D129FB8670077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
+ name = "DetourNavMesh.h: 73";
+ rLen = 0;
+ rLoc = 3562;
+ rType = 0;
+ vrLen = 1531;
+ vrLoc = 2336;
+ };
+ 6B6BED8E129FB8670077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
+ name = "DetourNavMesh.h: 91";
+ rLen = 0;
+ rLoc = 3562;
+ rType = 0;
+ vrLen = 1057;
+ vrLoc = 2463;
+ };
+ 6B6BED92129FB8840077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
+ name = "DetourNavMesh.h: 79";
+ rLen = 0;
+ rLoc = 3187;
+ rType = 0;
+ vrLen = 897;
+ vrLoc = 2462;
+ };
+ 6B6BED93129FC9550077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */;
+ name = "DetourNavMesh.cpp: 913";
+ rLen = 0;
+ rLoc = 24754;
+ rType = 0;
+ vrLen = 785;
+ vrLoc = 26140;
+ };
+ 6B6BED94129FC9550077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF40D912196A25008CFCDF /* DetourNavMeshQuery.h */;
+ name = "DetourNavMeshQuery.h: 112";
+ rLen = 0;
+ rLoc = 4934;
+ rType = 0;
+ vrLen = 1573;
+ vrLoc = 4574;
+ };
+ 6B6BED95129FC9550077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
+ name = "DetourNavMesh.h: 78";
+ rLen = 21;
+ rLoc = 2806;
+ rType = 0;
+ vrLen = 1458;
+ vrLoc = 2273;
+ };
+ 6B6BED96129FC9550077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
+ name = "DetourNavMeshQuery.cpp: 843";
+ rLen = 0;
+ rLoc = 22666;
+ rType = 0;
+ vrLen = 1205;
+ vrLoc = 22292;
+ };
+ 6B6BED97129FC9550077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
+ name = "DetourNavMeshQuery.cpp: 2495";
+ rLen = 0;
+ rLoc = 65801;
+ rType = 0;
+ vrLen = 1110;
+ vrLoc = 65812;
+ };
+ 6B6BEDB0129FCDB20077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
+ name = "DetourNavMeshQuery.cpp: 1011";
+ rLen = 0;
+ rLoc = 27646;
+ rType = 0;
+ vrLen = 439;
+ vrLoc = 27312;
+ };
+ 6B6BEDB1129FCDB20077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
+ name = "DetourNavMesh.h: 417";
+ rLen = 21;
+ rLoc = 16429;
+ rType = 0;
+ vrLen = 1388;
+ vrLoc = 15695;
+ };
+ 6B6BEDB2129FCDB20077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */;
+ name = "DetourNavMesh.cpp: 406";
+ rLen = 0;
+ rLoc = 10886;
+ rType = 0;
+ vrLen = 1031;
+ vrLoc = 10309;
+ };
+ 6B6BEDB3129FCDB20077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */;
+ name = "DetourDebugDraw.cpp: 424";
+ rLen = 0;
+ rLoc = 11902;
+ rType = 0;
+ vrLen = 800;
+ vrLoc = 11400;
+ };
+ 6B6BEDB4129FCDB20077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 1096";
+ rLen = 0;
+ rLoc = 33219;
+ rType = 0;
+ vrLen = 608;
+ vrLoc = 32746;
+ };
+ 6B6BEDB5129FCDB20077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 653";
+ rLen = 0;
+ rLoc = 20319;
+ rType = 0;
+ vrLen = 626;
+ vrLoc = 19857;
+ };
+ 6B6BEDB6129FCDB20077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 860";
+ rLen = 0;
+ rLoc = 22924;
+ rType = 0;
+ vrLen = 843;
+ vrLoc = 22448;
+ };
+ 6B6BEDB7129FCDB20077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ rLen = 0;
+ rLoc = 24168;
+ rType = 0;
+ };
+ 6B6BEDB8129FCDB20077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 855";
+ rLen = 0;
+ rLoc = 24017;
+ rType = 0;
+ vrLen = 566;
+ vrLoc = 23815;
+ };
+ 6B6BEDBF129FCE930077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 858";
+ rLen = 0;
+ rLoc = 24073;
+ rType = 0;
+ vrLen = 800;
+ vrLoc = 23815;
+ };
+ 6B6BEDC0129FCE930077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */;
+ name = "DetourNavMesh.cpp: 406";
+ rLen = 0;
+ rLoc = 10886;
+ rType = 0;
+ vrLen = 1334;
+ vrLoc = 10133;
+ };
+ 6B6BEDC1129FCE930077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */;
+ name = "DetourNavMesh.cpp: 232";
+ rLen = 0;
+ rLoc = 6115;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 5510;
+ };
+ 6B6BEDC4129FCF980077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */;
+ name = "DetourNavMesh.cpp: 237";
+ rLen = 0;
+ rLoc = 6210;
+ rType = 0;
+ vrLen = 1061;
+ vrLoc = 5151;
+ };
+ 6B6BEDC5129FCF980077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
+ name = "DetourNavMesh.h: 95";
+ rLen = 0;
+ rLoc = 3712;
+ rType = 0;
+ vrLen = 1440;
+ vrLoc = 2462;
+ };
+ 6B6BEDC6129FCF980077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 643";
+ rLen = 0;
+ rLoc = 20061;
+ rType = 0;
+ vrLen = 573;
+ vrLoc = 19677;
+ };
+ 6B6BEDC7129FCF980077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ rLen = 0;
+ rLoc = 17738;
+ rType = 0;
+ };
+ 6B6BEDC8129FCF980077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 648";
+ rLen = 0;
+ rLoc = 17877;
+ rType = 0;
+ vrLen = 836;
+ vrLoc = 17461;
+ };
+ 6B6BEDCD129FD0400077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 482";
+ rLen = 16;
+ rLoc = 12845;
+ rType = 0;
+ vrLen = 762;
+ vrLoc = 12550;
+ };
+ 6B6BEDCE129FD0400077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 482";
+ rLen = 0;
+ rLoc = 12862;
+ rType = 0;
+ vrLen = 762;
+ vrLoc = 12550;
+ };
+ 6B6BEDD2129FD0580077F7A4 /* NavMeshTesterTool.cpp:722 */ = {
isa = PBXFileBreakpoint;
actions = (
);
@@ -1161,16 +1026,207 @@
continueAfterActions = 0;
countType = 0;
delayBeforeContinue = 0;
- fileReference = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
- functionName = "main(int /*argc*/, char** /*argv*/)";
- hitCount = 0;
+ fileReference = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ functionName = "NavMeshTesterTool::recalc()";
+ hitCount = 3;
ignoreCount = 0;
- lineNumber = 211;
+ lineNumber = 722;
location = Recast;
- modificationTime = 312042355.03191;
+ modificationTime = 312463578.547393;
originalNumberOfMultipleMatches = 1;
state = 1;
};
+ 6B6BEDD4129FD05B0077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 478";
+ rLen = 24;
+ rLoc = 12765;
+ rType = 0;
+ vrLen = 639;
+ vrLoc = 19452;
+ };
+ 6B6BEDD5129FD05B0077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 720";
+ rLen = 0;
+ rLoc = 19875;
+ rType = 0;
+ vrLen = 639;
+ vrLoc = 19452;
+ };
+ 6B6BEDD6129FD07E0077F7A4 /* DetourNavMeshQuery.cpp:818 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
+ functionName = "dtNavMeshQuery::updateSlicedFindPath(const int maxIter)";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 818;
+ location = Recast;
+ modificationTime = 312463486.272693;
+ originalNumberOfMultipleMatches = 1;
+ state = 1;
+ };
+ 6B6BEDD8129FD0830077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 720";
+ rLen = 0;
+ rLoc = 19875;
+ rType = 0;
+ vrLen = 720;
+ vrLoc = 19508;
+ };
+ 6B6BEDD9129FD0830077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
+ name = "DetourNavMeshQuery.cpp: 771";
+ rLen = 0;
+ rLoc = 20784;
+ rType = 0;
+ vrLen = 692;
+ vrLoc = 21748;
+ };
+ 6B6BEDDA129FD0830077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
+ name = "DetourNavMeshQuery.cpp: 771";
+ rLen = 0;
+ rLoc = 20784;
+ rType = 0;
+ vrLen = 692;
+ vrLoc = 21748;
+ };
+ 6B6BEDDB129FD0A10077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */;
+ name = "DetourNavMeshQuery.cpp: 771";
+ rLen = 0;
+ rLoc = 20784;
+ rType = 0;
+ vrLen = 692;
+ vrLoc = 21748;
+ };
+ 6B6BEDDC129FD0A10077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ rLen = 0;
+ rLoc = 210;
+ rType = 1;
+ };
+ 6B6BEDDD129FD0A10077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 211";
+ rLen = 0;
+ rLoc = 5160;
+ rType = 0;
+ vrLen = 633;
+ vrLoc = 4897;
+ };
+ 6B6BEDE2129FD0BA0077F7A4 /* NavMeshTesterTool.cpp:482 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ functionName = "NavMeshTesterTool::handleUpdate(const float /*dt*/)";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 482;
+ location = Recast;
+ modificationTime = 312463546.226455;
+ originalNumberOfMultipleMatches = 1;
+ state = 1;
+ };
+ 6B6BEDE4129FD0BF0077F7A4 /* NavMeshTesterTool.cpp:486 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ functionName = "NavMeshTesterTool::handleUpdate(const float /*dt*/)";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 486;
+ location = Recast;
+ modificationTime = 312463551.566745;
+ originalNumberOfMultipleMatches = 1;
+ state = 1;
+ };
+ 6B6BEDE6129FD0C30077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 211";
+ rLen = 0;
+ rLoc = 5160;
+ rType = 0;
+ vrLen = 625;
+ vrLoc = 4897;
+ };
+ 6B6BEDE7129FD0C30077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 484";
+ rLen = 0;
+ rLoc = 12921;
+ rType = 0;
+ vrLen = 831;
+ vrLoc = 12746;
+ };
+ 6B6BEDE8129FD0C30077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 484";
+ rLen = 0;
+ rLoc = 12921;
+ rType = 0;
+ vrLen = 831;
+ vrLoc = 12746;
+ };
+ 6B6BEDEB129FD0F60077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 481";
+ rLen = 0;
+ rLoc = 12841;
+ rType = 0;
+ vrLen = 720;
+ vrLoc = 19508;
+ };
+ 6B6BEDEC129FD0F60077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
+ name = "DetourNavMesh.h: 95";
+ rLen = 0;
+ rLoc = 3712;
+ rType = 0;
+ vrLen = 1155;
+ vrLoc = 2746;
+ };
+ 6B6BEDED129FD0F60077F7A4 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
+ name = "DetourNavMesh.h: 95";
+ rLen = 0;
+ rLoc = 3729;
+ rType = 0;
+ vrLen = 648;
+ vrLoc = 3404;
+ };
6B74B5F3128312AC00262888 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B8036AD113BAABE005ED67B /* Sample_Debug.cpp */;
@@ -1205,20 +1261,10 @@
ignoreCount = 0;
lineNumber = 296;
location = Recast;
- modificationTime = 312042355.052158;
+ modificationTime = 312463420.690158;
originalNumberOfMultipleMatches = 1;
state = 1;
};
- 6B74B60F128312E900262888 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
- name = "main.cpp: 183";
- rLen = 0;
- rLoc = 4517;
- rType = 0;
- vrLen = 637;
- vrLoc = 4260;
- };
6B74B626128314A500262888 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */;
@@ -1289,16 +1335,6 @@
vrLen = 956;
vrLoc = 1526;
};
- 6B74B7071286AEBD00262888 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6BB93C7A10CFE1D500F74F2B /* DebugDraw.cpp */;
- name = "DebugDraw.cpp: 321";
- rLen = 0;
- rLoc = 8933;
- rType = 0;
- vrLen = 932;
- vrLoc = 8604;
- };
6B74B72E1286B1B000262888 /* CrowdManager.cpp:1313 */ = {
isa = PBXFileBreakpoint;
actions = (
@@ -1313,7 +1349,7 @@
ignoreCount = 0;
lineNumber = 1313;
location = Recast;
- modificationTime = 312042355.124587;
+ modificationTime = 312463420.744539;
originalNumberOfMultipleMatches = 1;
state = 1;
};
@@ -1347,16 +1383,6 @@
vrLen = 621;
vrLoc = 30539;
};
- 6B74B76F1286F56B00262888 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */;
- name = "DetourNavMesh.cpp: 1169";
- rLen = 0;
- rLoc = 31834;
- rType = 0;
- vrLen = 625;
- vrLoc = 23739;
- };
6B74B7771286F61200262888 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */;
@@ -1397,26 +1423,6 @@
vrLen = 893;
vrLoc = 1971;
};
- 6B74B7831286F72D00262888 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
- name = "Sample_TileMesh.cpp: 1156";
- rLen = 62;
- rLoc = 32666;
- rType = 0;
- vrLen = 1382;
- vrLoc = 31865;
- };
- 6B74B7841286F72D00262888 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */;
- name = "Sample_SoloMeshTiled.cpp: 1062";
- rLen = 0;
- rLoc = 32283;
- rType = 0;
- vrLen = 1365;
- vrLoc = 31388;
- };
6B74B7901286F77500262888 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */;
@@ -1575,7 +1581,7 @@
ignoreCount = 0;
lineNumber = 1197;
location = Recast;
- modificationTime = 312042355.013579;
+ modificationTime = 312463420.644555;
originalNumberOfMultipleMatches = 1;
state = 1;
};
@@ -1618,9 +1624,9 @@
};
6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {915, 16172}}";
- sepNavSelRange = "{31834, 0}";
- sepNavVisRange = "{23739, 625}";
+ sepNavIntBoundsRect = "{{0, 0}, {853, 16146}}";
+ sepNavSelRange = "{6210, 0}";
+ sepNavVisRange = "{5151, 1061}";
sepNavWindowFrame = "{{15, 51}, {1214, 722}}";
};
};
@@ -1633,9 +1639,9 @@
};
6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 5408}}";
- sepNavSelRange = "{2770, 0}";
- sepNavVisRange = "{2458, 1409}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 5902}}";
+ sepNavSelRange = "{3729, 0}";
+ sepNavVisRange = "{3404, 648}";
};
};
6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */ = {
@@ -1650,7 +1656,7 @@
fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
name = detail;
rLen = 0;
- rLoc = 13611;
+ rLoc = 14959;
rType = 0;
vrLen = 1182;
vrLoc = 9676;
@@ -1669,7 +1675,7 @@
ignoreCount = 0;
lineNumber = 78;
location = Recast;
- modificationTime = 312042350.053281;
+ modificationTime = 312463411.59927;
originalNumberOfMultipleMatches = 0;
state = 2;
};
@@ -1686,7 +1692,7 @@
hitCount = 0;
ignoreCount = 0;
lineNumber = 131;
- modificationTime = 312042536.28699;
+ modificationTime = 312463596.064153;
originalNumberOfMultipleMatches = 1;
state = 1;
};
@@ -1699,9 +1705,9 @@
};
6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1013, 14417}}";
- sepNavSelRange = "{26670, 0}";
- sepNavVisRange = "{26182, 1352}";
+ sepNavIntBoundsRect = "{{0, 0}, {853, 14781}}";
+ sepNavSelRange = "{33219, 0}";
+ sepNavVisRange = "{32746, 608}";
sepNavWindowFrame = "{{38, 30}, {1214, 722}}";
};
};
@@ -1749,9 +1755,9 @@
};
6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1139, 8593}}";
- sepNavSelRange = "{20711, 0}";
- sepNavVisRange = "{20290, 461}";
+ sepNavIntBoundsRect = "{{0, 0}, {853, 8658}}";
+ sepNavSelRange = "{20061, 0}";
+ sepNavVisRange = "{19677, 573}";
};
};
6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */ = {
@@ -1775,7 +1781,7 @@
ignoreCount = 0;
lineNumber = 137;
location = Recast;
- modificationTime = 312042354.785557;
+ modificationTime = 312463420.832202;
originalNumberOfMultipleMatches = 1;
state = 1;
};
@@ -1796,16 +1802,16 @@
};
6BAF40D912196A25008CFCDF /* DetourNavMeshQuery.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {873, 5278}}";
- sepNavSelRange = "{9856, 16}";
- sepNavVisRange = "{8190, 2392}";
+ sepNavIntBoundsRect = "{{0, 0}, {873, 5226}}";
+ sepNavSelRange = "{4934, 0}";
+ sepNavVisRange = "{4574, 1573}";
};
};
6BAF40DA12196A3D008CFCDF /* DetourNavMeshQuery.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {853, 33111}}";
- sepNavSelRange = "{31089, 0}";
- sepNavVisRange = "{30752, 964}";
+ sepNavIntBoundsRect = "{{0, 0}, {853, 34398}}";
+ sepNavSelRange = "{20784, 0}";
+ sepNavVisRange = "{21748, 692}";
};
};
6BAF427A121ADCC2008CFCDF /* DetourAssert.h */ = {
@@ -1859,9 +1865,9 @@
};
6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {931, 15951}}";
- sepNavSelRange = "{8413, 0}";
- sepNavVisRange = "{8249, 624}";
+ sepNavIntBoundsRect = "{{0, 0}, {853, 16133}}";
+ sepNavSelRange = "{12841, 0}";
+ sepNavVisRange = "{19508, 720}";
sepNavWindowFrame = "{{38, 30}, {1214, 722}}";
};
};
@@ -1909,9 +1915,9 @@
};
6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {950, 5902}}";
- sepNavSelRange = "{4852, 0}";
- sepNavVisRange = "{4283, 1195}";
+ sepNavIntBoundsRect = "{{0, 0}, {853, 6097}}";
+ sepNavSelRange = "{11902, 0}";
+ sepNavVisRange = "{11400, 800}";
sepNavWindowFrame = "{{61, 9}, {1214, 722}}";
};
};
@@ -1951,7 +1957,7 @@
ignoreCount = 0;
lineNumber = 281;
location = Recast;
- modificationTime = 312042354.73736;
+ modificationTime = 312463420.441296;
originalNumberOfMultipleMatches = 1;
state = 1;
};
@@ -1997,7 +2003,7 @@
ignoreCount = 0;
lineNumber = 547;
location = Recast;
- modificationTime = 312042354.843051;
+ modificationTime = 312463420.531742;
originalNumberOfMultipleMatches = 1;
state = 1;
};
@@ -2024,24 +2030,6 @@
sepNavWindowFrame = "{{15, 134}, {1120, 639}}";
};
};
- 6BD66851124350F50021A7A4 /* NavMeshTesterTool.cpp:486 */ = {
- isa = PBXFileBreakpoint;
- actions = (
- );
- breakpointStyle = 0;
- continueAfterActions = 0;
- countType = 0;
- delayBeforeContinue = 0;
- fileReference = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
- functionName = "NavMeshTesterTool::handleUpdate(const float /*dt*/)";
- hitCount = 0;
- ignoreCount = 0;
- lineNumber = 486;
- location = Recast;
- modificationTime = 312042354.932704;
- originalNumberOfMultipleMatches = 1;
- state = 1;
- };
6BF5F23911747606000502A6 /* Filelist.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {931, 1222}}";
diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
index ca447a1..d22a9b6 100644
--- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
+++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
@@ -284,14 +284,14 @@
PBXSmartGroupTreeModuleOutlineStateSelectionKey
- 34
- 27
+ 15
+ 11
1
0
PBXSmartGroupTreeModuleOutlineStateVisibleRectKey
- {{0, 394}, {264, 622}}
+ {{0, 0}, {264, 622}}
PBXTopSmartGroupGIDs
@@ -326,7 +326,7 @@
PBXProjectModuleGUID
6B8632A30F78115100E2684A
PBXProjectModuleLabel
- RecastRegion.cpp
+ DetourNavMesh.h
PBXSplitModuleInNavigatorKey
Split0
@@ -334,11 +334,11 @@
PBXProjectModuleGUID
6B8632A40F78115100E2684A
PBXProjectModuleLabel
- RecastRegion.cpp
+ DetourNavMesh.h
_historyCapacity
0
bookmark
- 6B6BECAF129968E50077F7A4
+ 6B6BEDED129FD0F60077F7A4
history
6B8D565F127ADB0D0077C699
@@ -353,39 +353,40 @@
6B74B627128314A500262888
6B74B628128314A500262888
6B74B62A128314A500262888
- 6B74B62B128314A500262888
6B74B6D81286ABC000262888
6B74B7061286AEBD00262888
6B74B7601286BB6900262888
6B74B7611286BB6900262888
6B74B76B1286F56B00262888
- 6B74B76F1286F56B00262888
6B74B7771286F61200262888
6B74B7801286F72D00262888
6B74B7811286F72D00262888
6B74B7821286F72D00262888
6B74B7901286F77500262888
- 6B74B7991286F7CD00262888
6B74B7AD1286F93000262888
6B74B7B21286F99100262888
6B74B7C01286FA5200262888
6B74B7C51286FAB500262888
- 6B74B7CD128D1BE600262888
- 6B6BE685129152770077F7A4
6B6BE686129152770077F7A4
6B6BE687129152770077F7A4
6B6BE689129152770077F7A4
6B6BE68B129152770077F7A4
6B6BE68C129152770077F7A4
- 6B6BE68D129152770077F7A4
- 6B6BEC2F12995D2A0077F7A4
- 6B6BEC3012995D2A0077F7A4
6B6BEC4712995DEA0077F7A4
6B6BEC4812995DEA0077F7A4
- 6B6BEC75129961C80077F7A4
- 6B6BEC7E129962F50077F7A4
6B6BECA51299680A0077F7A4
- 6B6BECA61299680A0077F7A4
+ 6B6BECB5129970130077F7A4
+ 6B6BECB6129970130077F7A4
+ 6B6BED94129FC9550077F7A4
+ 6B6BEDB3129FCDB20077F7A4
+ 6B6BEDB4129FCDB20077F7A4
+ 6B6BEDB6129FCDB20077F7A4
+ 6B6BEDC4129FCF980077F7A4
+ 6B6BEDC6129FCF980077F7A4
+ 6B6BEDDB129FD0A10077F7A4
+ 6B6BEDE6129FD0C30077F7A4
+ 6B6BEDEB129FD0F60077F7A4
+ 6B6BEDEC129FD0F60077F7A4
SplitCount
@@ -399,18 +400,18 @@
GeometryConfiguration
Frame
- {{0, 0}, {914, 533}}
+ {{0, 0}, {914, 443}}
RubberWindowFrame
47 97 1200 681 0 0 1280 778
Module
PBXNavigatorGroup
Proportion
- 533pt
+ 443pt
Proportion
- 102pt
+ 192pt
Tabs
@@ -424,9 +425,7 @@
GeometryConfiguration
Frame
- {{10, 27}, {914, 75}}
- RubberWindowFrame
- 47 97 1200 681 0 0 1280 778
+ {{10, 27}, {914, 78}}
Module
XCDetailModule
@@ -442,7 +441,9 @@
GeometryConfiguration
Frame
- {{10, 27}, {914, 66}}
+ {{10, 27}, {914, 165}}
+ RubberWindowFrame
+ 47 97 1200 681 0 0 1280 778
Module
PBXProjectFindModule
@@ -508,11 +509,11 @@
TableOfContents
- 6B6BEC1A129959080077F7A4
+ 6B6BED8F129FB8670077F7A4
1CA23ED40692098700951B8B
- 6B6BEC1B129959080077F7A4
+ 6B6BED90129FB8670077F7A4
6B8632A30F78115100E2684A
- 6B6BEC1C129959080077F7A4
+ 6B6BED91129FB8670077F7A4
1CA23EDF0692099D00951B8B
1CA23EE00692099D00951B8B
1CA23EE10692099D00951B8B
@@ -660,14 +661,14 @@
TableOfContents
- 6B6BEC3312995D2A0077F7A4
+ 6B6BEDB9129FCDB20077F7A4
1CCC7628064C1048000F2A68
1CCC7629064C1048000F2A68
- 6B6BEC3412995D2A0077F7A4
- 6B6BEC3512995D2A0077F7A4
- 6B6BEC3612995D2A0077F7A4
- 6B6BEC3712995D2A0077F7A4
- 6B6BEC3812995D2A0077F7A4
+ 6B6BEDBA129FCDB20077F7A4
+ 6B6BEDBB129FCDB20077F7A4
+ 6B6BEDBC129FCDB20077F7A4
+ 6B6BEDBD129FCDB20077F7A4
+ 6B6BEDBE129FCDB20077F7A4
ToolbarConfigUserDefaultsMinorVersion
2
@@ -699,9 +700,9 @@
5
WindowOrderList
- 6B6BECB0129968E50077F7A4
- 6B6BEC3B12995D2A0077F7A4
- 6B6BEC3A12995D2A0077F7A4
+ 6B6BEDEE129FD0F60077F7A4
+ 6B6BEDD0129FD0400077F7A4
+ 6B6BEDD1129FD0400077F7A4
/Users/memon/Code/recastnavigation/RecastDemo/Build/Xcode/Recast.xcodeproj
WindowString
diff --git a/RecastDemo/Source/NavMeshTesterTool.cpp b/RecastDemo/Source/NavMeshTesterTool.cpp
index 38b06e4..95bfac6 100644
--- a/RecastDemo/Source/NavMeshTesterTool.cpp
+++ b/RecastDemo/Source/NavMeshTesterTool.cpp
@@ -442,7 +442,8 @@ void NavMeshTesterTool::handleToggle()
m_pathIterPolyCount -= npos;
// Handle the connection.
- if (m_navMesh->getOffMeshConnectionPolyEndPoints(prevRef, polyRef, startPos, endPos) == DT_SUCCESS)
+ dtStatus status = m_navMesh->getOffMeshConnectionPolyEndPoints(prevRef, polyRef, startPos, endPos);
+ if (dtStatusSucceed(status))
{
if (m_nsmoothPath < MAX_SMOOTH)
{
@@ -476,12 +477,11 @@ void NavMeshTesterTool::handleUpdate(const float /*dt*/)
{
if (m_toolMode == TOOLMODE_PATHFIND_SLICED)
{
- if (m_pathFindStatus == DT_IN_PROGRESS)
+ if (dtStatusInProgress(m_pathFindStatus))
{
m_pathFindStatus = m_navQuery->updateSlicedFindPath(1);
}
-
- if (m_pathFindStatus == DT_SUCCESS)
+ if (dtStatusSucceed(m_pathFindStatus))
{
m_navQuery->finalizeSlicedFindPath(m_polys, &m_npolys, MAX_POLYS);
m_nstraightPath = 0;
@@ -498,7 +498,7 @@ void NavMeshTesterTool::handleUpdate(const float /*dt*/)
m_straightPathPolys, &m_nstraightPath, MAX_POLYS);
}
- m_pathFindStatus = DT_FAILURE;
+ m_pathFindStatus = DT_FAILURE;
}
}
}
@@ -639,7 +639,8 @@ void NavMeshTesterTool::recalc()
npolys -= npos;
// Handle the connection.
- if (m_navMesh->getOffMeshConnectionPolyEndPoints(prevRef, polyRef, startPos, endPos) == DT_SUCCESS)
+ dtStatus status = m_navMesh->getOffMeshConnectionPolyEndPoints(prevRef, polyRef, startPos, endPos);
+ if (dtStatusSucceed(status))
{
if (m_nsmoothPath < MAX_SMOOTH)
{
@@ -856,7 +857,8 @@ static void getPolyCenter(dtNavMesh* navMesh, dtPolyRef ref, float* center)
const dtMeshTile* tile = 0;
const dtPoly* poly = 0;
- if (navMesh->getTileAndPolyByRef(ref, &tile, &poly) != DT_SUCCESS)
+ dtStatus status = navMesh->getTileAndPolyByRef(ref, &tile, &poly);
+ if (dtStatusFailed(status))
return;
for (int i = 0; i < (int)poly->vertCount; ++i)
diff --git a/RecastDemo/Source/Sample_SoloMeshSimple.cpp b/RecastDemo/Source/Sample_SoloMeshSimple.cpp
index f704351..45c8659 100644
--- a/RecastDemo/Source/Sample_SoloMeshSimple.cpp
+++ b/RecastDemo/Source/Sample_SoloMeshSimple.cpp
@@ -640,14 +640,18 @@ bool Sample_SoloMeshSimple::handleBuild()
return false;
}
- if (m_navMesh->init(navData, navDataSize, DT_TILE_FREE_DATA) != DT_SUCCESS)
+ dtStatus status;
+
+ status = m_navMesh->init(navData, navDataSize, DT_TILE_FREE_DATA);
+ if (dtStatusFailed(status))
{
dtFree(navData);
m_ctx->log(RC_LOG_ERROR, "Could not init Detour navmesh");
return false;
}
- if (m_navQuery->init(m_navMesh, 2048) != DT_SUCCESS)
+ status = m_navQuery->init(m_navMesh, 2048);
+ if (dtStatusFailed(status))
{
m_ctx->log(RC_LOG_ERROR, "Could not init Detour navmesh query");
return false;
diff --git a/RecastDemo/Source/Sample_SoloMeshTiled.cpp b/RecastDemo/Source/Sample_SoloMeshTiled.cpp
index a6bf423..20b1f1f 100644
--- a/RecastDemo/Source/Sample_SoloMeshTiled.cpp
+++ b/RecastDemo/Source/Sample_SoloMeshTiled.cpp
@@ -1082,14 +1082,18 @@ bool Sample_SoloMeshTiled::handleBuild()
return false;
}
- if (m_navMesh->init(navData, navDataSize, DT_TILE_FREE_DATA) != DT_SUCCESS)
+ dtStatus status;
+
+ status = m_navMesh->init(navData, navDataSize, DT_TILE_FREE_DATA);
+ if (dtStatusFailed(status))
{
dtFree(navData);
m_ctx->log(RC_LOG_ERROR, "Could not init Detour navmesh");
return false;
}
- if (m_navQuery->init(m_navMesh, 2048) != DT_SUCCESS)
+ status = m_navQuery->init(m_navMesh, 2048);
+ if (dtStatusFailed(status))
{
m_ctx->log(RC_LOG_ERROR, "Could not init Detour navmesh query");
return false;
diff --git a/RecastDemo/Source/Sample_TileMesh.cpp b/RecastDemo/Source/Sample_TileMesh.cpp
index e0fe3b2..58444e3 100644
--- a/RecastDemo/Source/Sample_TileMesh.cpp
+++ b/RecastDemo/Source/Sample_TileMesh.cpp
@@ -296,8 +296,13 @@ dtNavMesh* Sample_TileMesh::loadAll(const char* path)
}
dtNavMesh* mesh = dtAllocNavMesh();
-
- if (!mesh || mesh->init(&header.params) != DT_SUCCESS)
+ if (!mesh)
+ {
+ fclose(fp);
+ return 0;
+ }
+ dtStatus status = mesh->init(&header.params);
+ if (dtStatusFailed(status))
{
fclose(fp);
return 0;
@@ -712,13 +717,18 @@ bool Sample_TileMesh::handleBuild()
params.tileHeight = m_tileSize*m_cellSize;
params.maxTiles = m_maxTiles;
params.maxPolys = m_maxPolysPerTile;
- if (m_navMesh->init(¶ms) != DT_SUCCESS)
+
+ dtStatus status;
+
+ status = m_navMesh->init(¶ms);
+ if (dtStatusFailed(status))
{
m_ctx->log(RC_LOG_ERROR, "buildTiledNavigation: Could not init navmesh.");
return false;
}
- if (m_navQuery->init(m_navMesh, 2048) != DT_SUCCESS)
+ status = m_navQuery->init(m_navMesh, 2048);
+ if (dtStatusFailed(status))
{
m_ctx->log(RC_LOG_ERROR, "buildTiledNavigation: Could not init Detour navmesh query");
return false;
@@ -766,7 +776,8 @@ void Sample_TileMesh::buildTile(const float* pos)
m_navMesh->removeTile(m_navMesh->getTileRefAt(tx,ty),0,0);
// Let the navmesh own the data.
- if (m_navMesh->addTile(data,dataSize,DT_TILE_FREE_DATA,0,0) != DT_SUCCESS)
+ dtStatus status = m_navMesh->addTile(data,dataSize,DT_TILE_FREE_DATA,0,0);
+ if (dtStatusFailed(status))
dtFree(data);
}
@@ -846,7 +857,8 @@ void Sample_TileMesh::buildAllTiles()
// Remove any previous data (navmesh owns and deletes the data).
m_navMesh->removeTile(m_navMesh->getTileRefAt(x,y),0,0);
// Let the navmesh own the data.
- if (m_navMesh->addTile(data,dataSize,DT_TILE_FREE_DATA,0,0) != DT_SUCCESS)
+ dtStatus status = m_navMesh->addTile(data,dataSize,DT_TILE_FREE_DATA,0,0);
+ if (dtStatusFailed(status))
dtFree(data);
}
}