diff --git a/DebugUtils/Source/DetourDebugDraw.cpp b/DebugUtils/Source/DetourDebugDraw.cpp index ce9a4fe..194e23b 100755 --- a/DebugUtils/Source/DetourDebugDraw.cpp +++ b/DebugUtils/Source/DetourDebugDraw.cpp @@ -385,7 +385,7 @@ static void calcRect(const float* va, const float* vb, static void drawMeshTilePortal(duDebugDraw* dd, const dtMeshTile* tile) { // Draw portals - const float padx = 0.01f; + const float padx = 0.02f; const float pady = tile->header->walkableClimb; dd->begin(DU_DRAW_LINES, 2.0f); @@ -414,7 +414,7 @@ static void drawMeshTilePortal(duDebugDraw* dd, const dtMeshTile* tile) { unsigned int col = side == 0 ? duRGBA(128,0,0,128) : duRGBA(128,0,128,128); - const float x = va[0] + ((side == 0) ? -0.02f : 0.02f); + const float x = va[0] + ((side == 0) ? -padx : padx); dd->vertex(x,va[1]-pady,va[2], col); dd->vertex(x,va[1]+pady,va[2], col); @@ -450,7 +450,7 @@ static void drawMeshTilePortal(duDebugDraw* dd, const dtMeshTile* tile) { unsigned int col = side == 2 ? duRGBA(0,128,0,128) : duRGBA(0,128,128,128); - const float z = va[2] + ((side == 2) ? -0.02f : 0.02f); + const float z = va[2] + ((side == 2) ? -padx : padx); dd->vertex(va[0],va[1]-pady,z, col); dd->vertex(va[0],va[1]+pady,z, col); diff --git a/Detour/Include/DetourCommon.h b/Detour/Include/DetourCommon.h index 0fa884d..1173ecf 100644 --- a/Detour/Include/DetourCommon.h +++ b/Detour/Include/DetourCommon.h @@ -201,6 +201,8 @@ bool dtIntersectSegmentPoly2D(const float* p0, const float* p1, float& tmin, float& tmax, int& segMin, int& segMax); +bool dtPointInPolygon(const float* pt, const float* verts, const int nverts); + bool dtDistancePtPolyEdgesSqr(const float* pt, const float* verts, const int nverts, float* ed, float* et); @@ -208,4 +210,7 @@ float dtDistancePtSegSqr2D(const float* pt, const float* p, const float* q, floa void dtCalcPolyCenter(float* tc, const unsigned short* idx, int nidx, const float* verts); +bool dtOverlapPolyPoly2D(const float* polya, const int npolya, + const float* polyb, const int npolyb); + #endif // DETOURCOMMON_H \ No newline at end of file diff --git a/Detour/Include/DetourNavMesh.h b/Detour/Include/DetourNavMesh.h index 600e648..6135a13 100644 --- a/Detour/Include/DetourNavMesh.h +++ b/Detour/Include/DetourNavMesh.h @@ -324,19 +324,24 @@ public: const dtPolyRef* path, const int pathSize, float* straightPath, unsigned char* straightPathFlags, dtPolyRef* straightPathRefs, const int maxStraightPathSize) const; - - // Moves towards end position a long the path corridor. - // The start location is assumed to be roughly at inside the first polygon on the path. - // The return value can be used to advance the path pointer along the path. + + // Moves from startPos to endPos constrained to the navmesh. + // If the endPos is reachable, the resultPos will be endPos, + // or else the resultPos will be the nearest point in navmesh. + // Note: The resulting point is not projected to the ground, use getPolyHeight() to get height. + // Note: The algorithm is optimized for small delta movement and small number of polygons. // Params: - // startPos[3] - (in) current position of the agent. - // endPos[3] - (in) new position of the agent. - // resultPos[3] - (out) new positio after the move, constrained to be inside the path polygons. - // path - (in) remainder of the path to follow. - // pathSize - (in) number of polygons on the path. - // Returns: Index to the path polygon where the result position lies. - int moveAlongPathCorridor(const float* startPos, const float* endPos, float* resultPos, - const dtPolyRef* path, const int pathSize) const; + // startRef - (in) ref to the polygon where startPos lies. + // startPos[3] - (in) start position of the mover. + // endPos[3] - (in) desired end position of the mover. + // filter - (in) path polygon filter. + // resultPos[3] - (out) new position of the mover. + // visited - (out) array of visited polygons. + // maxVisitedSize - (in) max number of polygons in the visited array. + // Returns: Number of entries in the visited array. + int moveAlongSurface(dtPolyRef startRef, const float* startPos, const float* endPos, + const dtQueryFilter* filter, + float* resultPos, dtPolyRef* visited, const int maxVisitedSize) const; // Casts 'walkability' ray along the navmesh surface from startPos towards the endPos. // Params: @@ -375,7 +380,7 @@ public: // resultCost - (out, opt) search cost at each result polygon. // maxResult - (int) maximum capacity of search results. // Returns: Number of results. - int findPolysAroundCircle(dtPolyRef startRef, const float* centerPos, float radius, + int findPolysAroundCircle(dtPolyRef startRef, const float* centerPos, const float radius, const dtQueryFilter* filter, dtPolyRef* resultRef, dtPolyRef* resultParent, float* resultCost, const int maxResult) const; @@ -396,6 +401,29 @@ public: dtPolyRef* resultRef, dtPolyRef* resultParent, float* resultCost, const int maxResult) const; + // Finds non-overlapping local neighbourhood around center location. + // Note: The algorithm is optimized for small query radius and small number of polygons. + // Params: + // startRef - (in) ref to the polygon where the search starts. + // centerPos[3] - (in) center if the query circle. + // radius - (in) radius of the query circle. + // filter - (in) path polygon filter. + // resultRef - (out) refs to the polygons touched by the circle. + // resultParent - (out, opt) parent of each result polygon. + // maxResult - (int) maximum capacity of search results. + // Returns: Number of results. + int findLocalNeighbourhood(dtPolyRef startRef, const float* centerPos, const float radius, + const dtQueryFilter* filter, + dtPolyRef* resultRef, dtPolyRef* resultParent, const int maxResult) const; + + // Returns wall segments of specified polygon. + // Params: + // ref - (in) ref to the polygon. + // filter - (in) path polygon filter. + // segments[DT_VERTS_PER_POLYGON*3*2] - (out) wall segments. + // Returns: Number of wall segments. + int getPolyWallSegments(dtPolyRef ref, const dtQueryFilter* filter, float* segments); + // Returns closest point on navigation polygon. // Uses detail polygons to find the closest point to the navigation polygon surface. // Params: @@ -561,6 +589,7 @@ private: float m_areaCost[DT_MAX_AREAS]; // Cost per area. + class dtNodePool* m_tinyNodePool; // Pointer to node pool. class dtNodePool* m_nodePool; // Pointer to node pool. class dtNodeQueue* m_openList; // Pointer to open list queue. }; diff --git a/Detour/Source/DetourCommon.cpp b/Detour/Source/DetourCommon.cpp index 7716854..c0b973e 100644 --- a/Detour/Source/DetourCommon.cpp +++ b/Detour/Source/DetourCommon.cpp @@ -238,6 +238,22 @@ bool dtClosestHeightPointTriangle(const float* p, const float* a, const float* b return false; } +bool dtPointInPolygon(const float* pt, const float* verts, const int nverts) +{ + // TODO: Replace pnpoly with triArea2D tests? + int i, j; + bool c = false; + for (i = 0, j = nverts-1; i < nverts; j = i++) + { + const float* vi = &verts[i*3]; + const float* vj = &verts[j*3]; + if (((vi[2] > pt[2]) != (vj[2] > pt[2])) && + (pt[0] < (vj[0]-vi[0]) * (pt[2]-vi[2]) / (vj[2]-vi[2]) + vi[0]) ) + c = !c; + } + return c; +} + bool dtDistancePtPolyEdgesSqr(const float* pt, const float* verts, const int nverts, float* ed, float* et) { @@ -255,3 +271,59 @@ bool dtDistancePtPolyEdgesSqr(const float* pt, const float* verts, const int nve } return c; } + +static void projectPoly(const float* axis, const float* poly, const int npoly, + float& rmin, float& rmax) +{ + rmin = rmax = dtVdot2D(axis, &poly[0]); + for (int i = 1; i < npoly; ++i) + { + const float d = dtVdot2D(axis, &poly[i*3]); + rmin = dtMin(rmin, d); + rmax = dtMax(rmax, d); + } +} + +inline bool overlapRange(const float amin, const float amax, + const float bmin, const float bmax, + const float eps) +{ + return ((amin+eps) > bmax || (amax-eps) < bmin) ? false : true; +} + +bool dtOverlapPolyPoly2D(const float* polya, const int npolya, + const float* polyb, const int npolyb) +{ + const float eps = 1e-4f; + + for (int i = 0, j = npolya-1; i < npolya; j=i++) + { + const float* va = &polya[j*3]; + const float* vb = &polya[i*3]; + const float n[3] = { vb[2]-va[2], 0, -(vb[0]-va[0]) }; + float amin,amax,bmin,bmax; + projectPoly(n, polya, npolya, amin,amax); + projectPoly(n, polyb, npolyb, bmin,bmax); + if (!overlapRange(amin,amax, bmin,bmax, eps)) + { + // Found separating axis + return false; + } + } + for (int i = 0, j = npolyb-1; i < npolyb; j=i++) + { + const float* va = &polyb[j*3]; + const float* vb = &polyb[i*3]; + const float n[3] = { vb[2]-va[2], 0, -(vb[0]-va[0]) }; + float amin,amax,bmin,bmax; + projectPoly(n, polya, npolya, amin,amax); + projectPoly(n, polyb, npolyb, bmin,bmax); + if (!overlapRange(amin,amax, bmin,bmax, eps)) + { + // Found separating axis + return false; + } + } + return true; +} + diff --git a/Detour/Source/DetourNavMesh.cpp b/Detour/Source/DetourNavMesh.cpp index e180f8e..cdd0416 100644 --- a/Detour/Source/DetourNavMesh.cpp +++ b/Detour/Source/DetourNavMesh.cpp @@ -176,6 +176,7 @@ dtNavMesh::dtNavMesh() : m_saltBits(0), m_tileBits(0), m_polyBits(0), + m_tinyNodePool(0), m_nodePool(0), m_openList(0) { @@ -198,8 +199,10 @@ dtNavMesh::~dtNavMesh() m_tiles[i].dataSize = 0; } } + m_tinyNodePool->~dtNodePool(); m_nodePool->~dtNodePool(); m_openList->~dtNodeQueue(); + dtFree(m_tinyNodePool); dtFree(m_nodePool); dtFree(m_openList); dtFree(m_posLookup); @@ -242,6 +245,13 @@ bool dtNavMesh::init(const dtNavMeshParams* params) if (!m_nodePool) return false; } + + if (!m_tinyNodePool) + { + m_tinyNodePool = new (dtAlloc(sizeof(dtNodePool), DT_ALLOC_PERM)) dtNodePool(64, 32); + if (!m_tinyNodePool) + return false; + } // TODO: check the open list size too. if (!m_openList) @@ -1762,100 +1772,170 @@ int dtNavMesh::findStraightPath(const float* startPos, const float* endPos, return straightPathSize; } -// Moves towards end position a long the path corridor. -// Returns: Index to the result path polygon. -int dtNavMesh::moveAlongPathCorridor(const float* startPos, const float* endPos, float* resultPos, - const dtPolyRef* path, const int pathSize) const +int dtNavMesh::moveAlongSurface(dtPolyRef startRef, const float* startPos, const float* endPos, + const dtQueryFilter* filter, + float* resultPos, dtPolyRef* visited, const int maxVisitedSize) const { - if (!pathSize) - return 0; - - float verts[DT_VERTS_PER_POLYGON*3]; - float edged[DT_VERTS_PER_POLYGON]; - float edget[DT_VERTS_PER_POLYGON]; - int n = 0; - - static const float SLOP = 0.01f; + if (!startRef) return 0; + if (!getPolyByRef(startRef)) return 0; + if (!m_tinyNodePool) return 0; - dtVcopy(resultPos, startPos); + static const int MAX_STACK = 48; + dtNode* stack[MAX_STACK]; + int nstack = 0; - while (n < pathSize) - { - // Get current polygon and poly vertices. - unsigned int salt, it, ip; - decodePolyId(path[n], salt, it, ip); - if (it >= (unsigned int)m_maxTiles) return n; - if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return n; - if (ip >= (unsigned int)m_tiles[it].header->polyCount) return n; - const dtMeshTile* tile = &m_tiles[it]; - const dtPoly* poly = &tile->polys[ip]; + m_tinyNodePool->clear(); + + dtNode* startNode = m_tinyNodePool->getNode(startRef); + startNode->pidx = 0; + startNode->cost = 0; + startNode->total = 0; + startNode->id = startRef; + startNode->flags = DT_NODE_CLOSED; + stack[nstack++] = startNode; - // In case of Off-Mesh link, just snap to the end location and advance over it. - if (poly->type == DT_POLYTYPE_OFFMESH_CONNECTION) - { - if (n+1 < pathSize) - { - float left[3], right[3]; - unsigned char fromType, toType; - if (!getPortalPoints(path[n], path[n+1], left, right, fromType, toType)) - return n; - dtVcopy(resultPos, endPos); - } - return n+1; - } + float bestPos[3]; + float bestDist = FLT_MAX; + dtNode* bestNode = 0; + dtVcopy(bestPos, startPos); + + // Search constraints + float searchPos[3], searchRadSqr; + dtVlerp(searchPos, startPos, endPos, 0.5f); + searchRadSqr = dtSqr(dtVdist(startPos, endPos)/2.0f + 0.001f); + + unsigned int it, ip; + float verts[DT_VERTS_PER_POLYGON*3]; + + while (nstack) + { + // Pop front. + dtNode* curNode = stack[0]; + for (int i = 0; i < nstack-1; ++i) + stack[i] = stack[i+1]; + nstack--; + + // Get poly and tile. + // The API input has been cheked already, skip checking internal data. + const dtPolyRef curRef = curNode->id; + it = decodePolyIdTile(curRef); + ip = decodePolyIdPoly(curRef); + const dtMeshTile* curTile = &m_tiles[it]; + const dtPoly* curPoly = &curTile->polys[ip]; // Collect vertices. - int nv = 0; - for (int i = 0; i < (int)poly->vertCount; ++i) + const int nverts = curPoly->vertCount; + for (int i = 0; i < nverts; ++i) + dtVcopy(&verts[i*3], &curTile->verts[curPoly->verts[i]*3]); + + // If target is inside the poly, stop search. + if (dtPointInPolygon(endPos, verts, nverts)) { - dtVcopy(&verts[nv*3], &tile->verts[poly->verts[i]*3]); - nv++; + bestNode = curNode; + dtVcopy(bestPos, endPos); + break; } - const bool inside = dtDistancePtPolyEdgesSqr(endPos, verts, nv, edged, edget); - if (inside) + // Find wall edges and find nearest point inside the walls. + for (int i = 0, j = (int)curPoly->vertCount-1; i < (int)curPoly->vertCount; j = i++) { - // The end point is inside the current polygon. - dtVcopy(resultPos, endPos); - return n; - } - - // Constraint the point on the polygon boundary. - // This results sliding movement. - float dmin = FLT_MAX; - int imin = -1; - for (int i = 0; i < nv; ++i) - { - if (edged[i] < dmin) + // Skip non-solid edges. + dtPolyRef neighbourRef = 0; + if (curPoly->neis[j] & DT_EXT_LINK) { - dmin = edged[i]; - imin = i; + // Tile border. + for (unsigned int k = curPoly->firstLink; k != DT_NULL_LINK; k = curTile->links[k].next) + { + const dtLink* link = &curTile->links[k]; + if (link->edge == j) + { + if (link->ref != 0 && passFilter(filter, getPolyFlags(link->ref))) + neighbourRef = link->ref; + break; + } + } + } + else if (curPoly->neis[j] && passFilter(filter, curTile->polys[curPoly->neis[j]-1].flags)) + { + // Internal edge, encode id. + neighbourRef = getTilePolyRefBase(curTile) | (unsigned int)(curPoly->neis[j]-1); + } + + if (!neighbourRef) + { + // Wall edge, calc distance. + const float* vj = &verts[j*3]; + const float* vi = &verts[i*3]; + float tseg; + const float distSqr = dtDistancePtSegSqr2D(endPos, vj, vi, tseg); + if (distSqr < bestDist) + { + // Update nearest distance. + dtVlerp(bestPos, vj,vi, tseg); + bestDist = distSqr; + bestNode = curNode; + } + } + else + { + // Skip if no node can be allocated. + dtNode* neighbourNode = m_tinyNodePool->getNode(neighbourRef); + if (!neighbourNode) + continue; + // Skip if already visited. + if (neighbourNode->flags & DT_NODE_CLOSED) + continue; + + // Skip the link if it is too far from search constraint. + const float* vj = &verts[j*3]; + const float* vi = &verts[i*3]; + float tseg; + float distSqr = dtDistancePtSegSqr2D(searchPos, vj, vi, tseg); + if (distSqr > searchRadSqr) + continue; + + // Mark as the node as visited and push to queue. + if (nstack < MAX_STACK) + { + neighbourNode->pidx = m_tinyNodePool->getNodeIdx(curNode); + neighbourNode->flags |= DT_NODE_CLOSED; + stack[nstack++] = neighbourNode; + } } } - const float* va = &verts[imin*3]; - const float* vb = &verts[((imin+1)%nv)*3]; - dtVlerp(resultPos, va, vb, edget[imin]); - - // Check to see if the point is on the portal edge to the next polygon. - if (n+1 >= pathSize) - return n; - // TODO: optimize - float left[3], right[3]; - unsigned char fromType, toType; - if (!getPortalPoints(path[n], path[n+1], left, right, fromType, toType)) - return n; - // If the dtClamped point is close to the next portal edge, advance to next poly. - float t; - const float d = dtDistancePtSegSqr2D(resultPos, left, right, t); - if (d > SLOP*SLOP) - return n; - // Advance to next polygon. - n++; } + int n = 0; + if (bestNode) + { + // Reverse the path. + dtNode* prev = 0; + dtNode* node = bestNode; + do + { + dtNode* next = m_tinyNodePool->getNodeAtIdx(node->pidx); + node->pidx = m_tinyNodePool->getNodeIdx(prev); + prev = node; + node = next; + } + while (node); + + // Store result + node = prev; + do + { + visited[n++] = node->id; + node = m_tinyNodePool->getNodeAtIdx(node->pidx); + } + while (node && n < maxVisitedSize); + } + + dtVcopy(resultPos, bestPos); + return n; } + bool dtNavMesh::getPortalPoints(dtPolyRef from, dtPolyRef to, float* left, float* right, unsigned char& fromType, unsigned char& toType) const { @@ -2198,7 +2278,8 @@ int dtNavMesh::raycast(dtPolyRef centerRef, const float* startPos, const float* return n; } -int dtNavMesh::findPolysAroundCircle(dtPolyRef centerRef, const float* centerPos, float radius, const dtQueryFilter* filter, +int dtNavMesh::findPolysAroundCircle(dtPolyRef centerRef, const float* centerPos, const float radius, + const dtQueryFilter* filter, dtPolyRef* resultRef, dtPolyRef* resultParent, float* resultCost, const int maxResult) const { @@ -2497,6 +2578,217 @@ int dtNavMesh::findPolysAroundShape(dtPolyRef centerRef, const float* verts, con return n; } + +int dtNavMesh::findLocalNeighbourhood(dtPolyRef centerRef, const float* centerPos, const float radius, + const dtQueryFilter* filter, + dtPolyRef* resultRef, dtPolyRef* resultParent, const int maxResult) const +{ + if (!centerRef) return 0; + if (!getPolyByRef(centerRef)) return 0; + if (!m_tinyNodePool) return 0; + + static const int MAX_STACK = 48; + dtNode* stack[MAX_STACK]; + int nstack = 0; + + m_tinyNodePool->clear(); + + dtNode* startNode = m_tinyNodePool->getNode(centerRef); + startNode->pidx = 0; + startNode->id = centerRef; + startNode->flags = DT_NODE_CLOSED; + stack[nstack++] = startNode; + + const float radiusSqr = dtSqr(radius); + + float pa[DT_VERTS_PER_POLYGON*3]; + float pb[DT_VERTS_PER_POLYGON*3]; + unsigned int it, ip; + + int n = 0; + if (n < maxResult) + { + resultRef[n] = startNode->id; + if (resultParent) + resultParent[n] = 0; + ++n; + } + + while (nstack) + { + // Pop front. + dtNode* curNode = stack[0]; + for (int i = 0; i < nstack-1; ++i) + stack[i] = stack[i+1]; + nstack--; + + // Get poly and tile. + // The API input has been cheked already, skip checking internal data. + const dtPolyRef curRef = curNode->id; + it = decodePolyIdTile(curRef); + ip = decodePolyIdPoly(curRef); + const dtMeshTile* curTile = &m_tiles[it]; + const dtPoly* curPoly = &curTile->polys[ip]; + + for (unsigned int i = curPoly->firstLink; i != DT_NULL_LINK; i = curTile->links[i].next) + { + const dtLink* link = &curTile->links[i]; + dtPolyRef neighbourRef = link->ref; + // Skip invalid neighbours. + if (!neighbourRef) + continue; + + // Skip if cannot alloca more nodes. + dtNode* neighbourNode = m_tinyNodePool->getNode(neighbourRef); + if (!neighbourNode) + continue; + // Skip visited. + if (neighbourNode->flags & DT_NODE_CLOSED) + continue; + + // Expand to neighbour + it = decodePolyIdTile(neighbourRef); + ip = decodePolyIdPoly(neighbourRef); + const dtMeshTile* neighbourTile = &m_tiles[it]; + const dtPoly* neighbourPoly = &neighbourTile->polys[ip]; + + // Skip off-mesh connections. + if (neighbourPoly->type == DT_POLYTYPE_OFFMESH_CONNECTION) + continue; + + // Do not advance if the polygon is excluded by the filter. + if (!passFilter(filter, neighbourPoly->flags)) + continue; + + // Find edge and calc distance to the edge. + float va[3], vb[3]; + if (!getPortalPoints(curRef, curPoly, curTile, neighbourRef, neighbourPoly, neighbourTile, va, vb)) + continue; + + // If the circle is not touching the next polygon, skip it. + float tseg; + float distSqr = dtDistancePtSegSqr2D(centerPos, va, vb, tseg); + if (distSqr > radiusSqr) + continue; + + // Mark node visited, this is done before the overlap test so that + // we will not visit the poly again if the test fails. + neighbourNode->flags |= DT_NODE_CLOSED; + neighbourNode->pidx = m_tinyNodePool->getNodeIdx(curNode); + + // Check that the polygon does not collide with existing polygons. + + // Collect vertices of the neighbour poly. + const int npa = neighbourPoly->vertCount; + for (int k = 0; k < npa; ++k) + dtVcopy(&pa[k*3], &neighbourTile->verts[neighbourPoly->verts[k]*3]); + + bool overlap = false; + for (int j = 0; j < n; ++j) + { + dtPolyRef pastRef = resultRef[j]; + + // Connected polys do not overlap. + bool areConnected = false; + for (unsigned int k = curPoly->firstLink; k != DT_NULL_LINK; k = curTile->links[k].next) + { + if (curTile->links[k].ref == pastRef) + { + areConnected = true; + break; + } + } + if (areConnected) + continue; + + // Potentially overlapping. + it = decodePolyIdTile(pastRef); + ip = decodePolyIdPoly(pastRef); + const dtMeshTile* pastTile = &m_tiles[it]; + const dtPoly* pastPoly = &pastTile->polys[ip]; + + // Get vertices and test overlap + const int npb = pastPoly->vertCount; + for (int k = 0; k < npb; ++k) + dtVcopy(&pb[k*3], &pastTile->verts[pastPoly->verts[k]*3]); + + if (dtOverlapPolyPoly2D(pa,npa, pb,npb)) + { + overlap = true; + break; + } + } + if (overlap) + continue; + + // This poly is fine, store and advance to the poly. + if (n < maxResult) + { + resultRef[n] = neighbourRef; + if (resultParent) + resultParent[n] = curRef; + ++n; + } + + if (nstack < MAX_STACK) + { + stack[nstack++] = neighbourNode; + } + } + } + + return n; +} + +int dtNavMesh::getPolyWallSegments(dtPolyRef ref, const dtQueryFilter* filter, float* segments) +{ + unsigned int salt, it, ip; + decodePolyId(ref, salt, it, ip); + if (it >= (unsigned int)m_maxTiles) return 0; + const dtMeshTile* tile = &m_tiles[it]; + if (tile->salt != salt || tile->header == 0) return 0; + if (ip >= (unsigned int)tile->header->polyCount) return 0; + const dtPoly* poly = &tile->polys[ip]; + + int n = 0; + + for (int i = 0, j = (int)poly->vertCount-1; i < (int)poly->vertCount; j = i++) + { + // Skip non-solid edges. + if (poly->neis[j] & DT_EXT_LINK) + { + // Tile border. + bool solid = true; + for (unsigned int k = poly->firstLink; k != DT_NULL_LINK; k = tile->links[k].next) + { + const dtLink* link = &tile->links[k]; + if (link->edge == j) + { + if (link->ref != 0 && passFilter(filter, getPolyFlags(link->ref))) + solid = false; + break; + } + } + if (!solid) continue; + } + else if (poly->neis[j] && passFilter(filter, tile->polys[poly->neis[j]-1].flags)) + { + // Internal edge + continue; + } + + // Store segment. + const float* vj = &tile->verts[poly->verts[j]*3]; + const float* vi = &tile->verts[poly->verts[i]*3]; + float* seg = &segments[n*6]; + n++; + dtVcopy(seg+0, vj); + dtVcopy(seg+3, vi); + } + + return n; +} + float dtNavMesh::findDistanceToWall(dtPolyRef centerRef, const float* centerPos, float maxRadius, const dtQueryFilter* filter, float* hitPos, float* hitNormal) const { @@ -2574,7 +2866,7 @@ float dtNavMesh::findDistanceToWall(dtPolyRef centerRef, const float* centerPos, } if (!solid) continue; } - else if (bestPoly->neis[j] && passFilter(filter, bestTile->polys[bestPoly->neis[j]].flags)) + else if (bestPoly->neis[j] && passFilter(filter, bestTile->polys[bestPoly->neis[j]-1].flags)) { // Internal edge continue; diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast index 7193eb4..6f9653c 100755 Binary files a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast and b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast differ diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser index 0d667e5..2a10198 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser @@ -9,7 +9,7 @@ }; }; 29B97313FDCFA39411CA2CEA /* Project object */ = { - activeBuildConfigurationName = Release; + activeBuildConfigurationName = Debug; activeExecutable = 6B8632970F78114600E2684A /* Recast */; activeTarget = 8D1107260486CEB800E47090 /* Recast */; addToTargets = ( @@ -20,7 +20,7 @@ 6B42164711806B2F006C347B /* DetourDebugDraw.cpp:413 */, 6B5562791193EF9600843384 /* Sample_Debug.cpp:60 */, 6B10014C11AD1C1E0098A59A /* RecastMesh.cpp:1272 */, - 6BAF39C71210074C008CFCDF /* NavMeshTesterTool.cpp:401 */, + 6BAF39C71210074C008CFCDF /* NavMeshTesterTool.cpp:235 */, ); codeSenseManager = 6B8632AA0F78115100E2684A /* Code sense */; executables = ( @@ -533,6 +533,110 @@ 6BAF3A2F12101D4B008CFCDF /* PBXTextBookmark */ = 6BAF3A2F12101D4B008CFCDF /* PBXTextBookmark */; 6BAF3A3012101D4B008CFCDF /* PBXTextBookmark */ = 6BAF3A3012101D4B008CFCDF /* PBXTextBookmark */; 6BAF3A3112101D4B008CFCDF /* PBXTextBookmark */ = 6BAF3A3112101D4B008CFCDF /* PBXTextBookmark */; + 6BAF3A3212102220008CFCDF /* PBXTextBookmark */ = 6BAF3A3212102220008CFCDF /* PBXTextBookmark */; + 6BAF3A3312102220008CFCDF /* PBXTextBookmark */ = 6BAF3A3312102220008CFCDF /* PBXTextBookmark */; + 6BAF3A3412102220008CFCDF /* PBXTextBookmark */ = 6BAF3A3412102220008CFCDF /* PBXTextBookmark */; + 6BAF3A3512102220008CFCDF /* PBXTextBookmark */ = 6BAF3A3512102220008CFCDF /* PBXTextBookmark */; + 6BAF3A381210235F008CFCDF /* PBXTextBookmark */ = 6BAF3A381210235F008CFCDF /* PBXTextBookmark */; + 6BAF3A391210235F008CFCDF /* PBXTextBookmark */ = 6BAF3A391210235F008CFCDF /* PBXTextBookmark */; + 6BAF3A3A1210235F008CFCDF /* PBXTextBookmark */ = 6BAF3A3A1210235F008CFCDF /* PBXTextBookmark */; + 6BAF3A3B1210235F008CFCDF /* PBXTextBookmark */ = 6BAF3A3B1210235F008CFCDF /* PBXTextBookmark */; + 6BAF3A3C1210235F008CFCDF /* PBXTextBookmark */ = 6BAF3A3C1210235F008CFCDF /* PBXTextBookmark */; + 6BAF3A3D1210235F008CFCDF /* PBXTextBookmark */ = 6BAF3A3D1210235F008CFCDF /* PBXTextBookmark */; + 6BAF3A3E1210235F008CFCDF /* PBXTextBookmark */ = 6BAF3A3E1210235F008CFCDF /* PBXTextBookmark */; + 6BAF3A3F1210235F008CFCDF /* PBXTextBookmark */ = 6BAF3A3F1210235F008CFCDF /* PBXTextBookmark */; + 6BAF3A401210235F008CFCDF /* PBXTextBookmark */ = 6BAF3A401210235F008CFCDF /* PBXTextBookmark */; + 6BAF3A43121023ED008CFCDF /* PBXTextBookmark */ = 6BAF3A43121023ED008CFCDF /* PBXTextBookmark */; + 6BAF3A44121023ED008CFCDF /* PBXTextBookmark */ = 6BAF3A44121023ED008CFCDF /* PBXTextBookmark */; + 6BAF3A45121023ED008CFCDF /* PBXTextBookmark */ = 6BAF3A45121023ED008CFCDF /* PBXTextBookmark */; + 6BAF3A46121023ED008CFCDF /* PBXTextBookmark */ = 6BAF3A46121023ED008CFCDF /* PBXTextBookmark */; + 6BAF3A47121023ED008CFCDF /* PBXTextBookmark */ = 6BAF3A47121023ED008CFCDF /* PBXTextBookmark */; + 6BAF3A4A12102425008CFCDF /* PBXTextBookmark */ = 6BAF3A4A12102425008CFCDF /* PBXTextBookmark */; + 6BAF3A4B121028E6008CFCDF /* PBXTextBookmark */ = 6BAF3A4B121028E6008CFCDF /* PBXTextBookmark */; + 6BAF3A4C121028E6008CFCDF /* PBXTextBookmark */ = 6BAF3A4C121028E6008CFCDF /* PBXTextBookmark */; + 6BAF3A4E121028E6008CFCDF /* PBXTextBookmark */ = 6BAF3A4E121028E6008CFCDF /* PBXTextBookmark */; + 6BAF3A4F121028E6008CFCDF /* PBXTextBookmark */ = 6BAF3A4F121028E6008CFCDF /* PBXTextBookmark */; + 6BAF3A50121028E6008CFCDF /* PBXTextBookmark */ = 6BAF3A50121028E6008CFCDF /* PBXTextBookmark */; + 6BAF3A51121028E6008CFCDF /* PBXTextBookmark */ = 6BAF3A51121028E6008CFCDF /* PBXTextBookmark */; + 6BAF3A52121028E6008CFCDF /* PBXTextBookmark */ = 6BAF3A52121028E6008CFCDF /* PBXTextBookmark */; + 6BAF3A54121028E6008CFCDF /* PBXTextBookmark */ = 6BAF3A54121028E6008CFCDF /* PBXTextBookmark */; + 6BAF3A5A121029E5008CFCDF /* PBXTextBookmark */ = 6BAF3A5A121029E5008CFCDF /* PBXTextBookmark */; + 6BAF3A5B121029E5008CFCDF /* PBXTextBookmark */ = 6BAF3A5B121029E5008CFCDF /* PBXTextBookmark */; + 6BAF3A5E12102BB9008CFCDF /* PBXTextBookmark */ = 6BAF3A5E12102BB9008CFCDF /* PBXTextBookmark */; + 6BAF3A5F12102BB9008CFCDF /* PBXTextBookmark */ = 6BAF3A5F12102BB9008CFCDF /* PBXTextBookmark */; + 6BAF3A6012102BB9008CFCDF /* PBXTextBookmark */ = 6BAF3A6012102BB9008CFCDF /* PBXTextBookmark */; + 6BAF3A6112102BB9008CFCDF /* PBXTextBookmark */ = 6BAF3A6112102BB9008CFCDF /* PBXTextBookmark */; + 6BAF3A6212102BB9008CFCDF /* PBXTextBookmark */ = 6BAF3A6212102BB9008CFCDF /* PBXTextBookmark */; + 6BAF3A6312102BB9008CFCDF /* PBXTextBookmark */ = 6BAF3A6312102BB9008CFCDF /* PBXTextBookmark */; + 6BAF3A6412102BB9008CFCDF /* PBXTextBookmark */ = 6BAF3A6412102BB9008CFCDF /* PBXTextBookmark */; + 6BAF3A6512102BB9008CFCDF /* PBXTextBookmark */ = 6BAF3A6512102BB9008CFCDF /* PBXTextBookmark */; + 6BAF3A6612102BB9008CFCDF /* PBXTextBookmark */ = 6BAF3A6612102BB9008CFCDF /* PBXTextBookmark */; + 6BAF3A6712102BB9008CFCDF /* PBXTextBookmark */ = 6BAF3A6712102BB9008CFCDF /* PBXTextBookmark */; + 6BAF3A6912102C00008CFCDF /* PBXTextBookmark */ = 6BAF3A6912102C00008CFCDF /* PBXTextBookmark */; + 6BAF3A6A12102C00008CFCDF /* PBXTextBookmark */ = 6BAF3A6A12102C00008CFCDF /* PBXTextBookmark */; + 6BAF3A6B12102C00008CFCDF /* PBXTextBookmark */ = 6BAF3A6B12102C00008CFCDF /* PBXTextBookmark */; + 6BAF3A6C12102C00008CFCDF /* PBXTextBookmark */ = 6BAF3A6C12102C00008CFCDF /* PBXTextBookmark */; + 6BAF3A7812103373008CFCDF /* PBXTextBookmark */ = 6BAF3A7812103373008CFCDF /* PBXTextBookmark */; + 6BAF3A7912103373008CFCDF /* PBXTextBookmark */ = 6BAF3A7912103373008CFCDF /* PBXTextBookmark */; + 6BAF3A7A12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A7A12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A7B12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A7B12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A7C12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A7C12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A7D12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A7D12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A7E12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A7E12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A7F12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A7F12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8012103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8012103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8112103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8112103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8212103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8212103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8312103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8312103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8412103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8412103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8512103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8512103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8612103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8612103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8712103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8712103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8812103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8812103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8912103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8912103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8A12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8A12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8B12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8B12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8C12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8C12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8D12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8D12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8E12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8E12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A8F12103373008CFCDF /* PBXTextBookmark */ = 6BAF3A8F12103373008CFCDF /* PBXTextBookmark */; + 6BAF3A9012103373008CFCDF /* PBXTextBookmark */ = 6BAF3A9012103373008CFCDF /* PBXTextBookmark */; + 6BAF3A9112103373008CFCDF /* PBXTextBookmark */ = 6BAF3A9112103373008CFCDF /* PBXTextBookmark */; + 6BAF3A9212103373008CFCDF /* PBXTextBookmark */ = 6BAF3A9212103373008CFCDF /* PBXTextBookmark */; + 6BAF3A9312103373008CFCDF /* PBXTextBookmark */ = 6BAF3A9312103373008CFCDF /* PBXTextBookmark */; + 6BAF3A9412103373008CFCDF /* PBXTextBookmark */ = 6BAF3A9412103373008CFCDF /* PBXTextBookmark */; + 6BAF3A9512103373008CFCDF /* PBXTextBookmark */ = 6BAF3A9512103373008CFCDF /* PBXTextBookmark */; + 6BAF3A9612103373008CFCDF /* PBXTextBookmark */ = 6BAF3A9612103373008CFCDF /* PBXTextBookmark */; + 6BAF3A9712103373008CFCDF /* PBXTextBookmark */ = 6BAF3A9712103373008CFCDF /* PBXTextBookmark */; + 6BAF3A9A12103445008CFCDF /* PBXTextBookmark */ = 6BAF3A9A12103445008CFCDF /* PBXTextBookmark */; + 6BAF3A9D1210349A008CFCDF /* PBXTextBookmark */ = 6BAF3A9D1210349A008CFCDF /* PBXTextBookmark */; + 6BAF3A9F121034C4008CFCDF /* PBXTextBookmark */ = 6BAF3A9F121034C4008CFCDF /* PBXTextBookmark */; + 6BAF3AA112103513008CFCDF /* PBXTextBookmark */ = 6BAF3AA112103513008CFCDF /* PBXTextBookmark */; + 6BAF3AA5121035FB008CFCDF /* PBXTextBookmark */ = 6BAF3AA5121035FB008CFCDF /* PBXTextBookmark */; + 6BAF3AA6121035FB008CFCDF /* PBXTextBookmark */ = 6BAF3AA6121035FB008CFCDF /* PBXTextBookmark */; + 6BAF3AA7121035FB008CFCDF /* PBXTextBookmark */ = 6BAF3AA7121035FB008CFCDF /* PBXTextBookmark */; + 6BAF3AA8121035FB008CFCDF /* PBXTextBookmark */ = 6BAF3AA8121035FB008CFCDF /* PBXTextBookmark */; + 6BAF3AAB1210369A008CFCDF /* PBXTextBookmark */ = 6BAF3AAB1210369A008CFCDF /* PBXTextBookmark */; + 6BAF3AAC1210369A008CFCDF /* PBXTextBookmark */ = 6BAF3AAC1210369A008CFCDF /* PBXTextBookmark */; + 6BAF3AAD1210369A008CFCDF /* PBXTextBookmark */ = 6BAF3AAD1210369A008CFCDF /* PBXTextBookmark */; + 6BAF3AAE1210369A008CFCDF /* PBXTextBookmark */ = 6BAF3AAE1210369A008CFCDF /* PBXTextBookmark */; + 6BAF3AB0121036A6008CFCDF /* PBXTextBookmark */ = 6BAF3AB0121036A6008CFCDF /* PBXTextBookmark */; + 6BAF3AB2121036CD008CFCDF /* PBXTextBookmark */ = 6BAF3AB2121036CD008CFCDF /* PBXTextBookmark */; + 6BAF3AB3121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3AB3121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3AB4121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3AB4121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3AB5121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3AB5121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3AB6121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3AB6121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3AB7121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3AB7121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3AB8121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3AB8121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3AB9121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3AB9121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3ABA121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3ABA121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3ABB121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3ABB121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3ABC121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3ABC121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3ABD121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3ABD121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3ABE121038F9008CFCDF /* PBXTextBookmark */ = 6BAF3ABE121038F9008CFCDF /* PBXTextBookmark */; + 6BAF3AC0121039AF008CFCDF /* PBXTextBookmark */ = 6BAF3AC0121039AF008CFCDF /* PBXTextBookmark */; + 6BAF3AC2121039C7008CFCDF /* PBXTextBookmark */ = 6BAF3AC2121039C7008CFCDF /* PBXTextBookmark */; + 6BAF3AC3121039C7008CFCDF /* PBXTextBookmark */ = 6BAF3AC3121039C7008CFCDF /* PBXTextBookmark */; 6BBB4AA1115B4F3400CF791D = 6BBB4AA1115B4F3400CF791D /* PBXTextBookmark */; 6BBB4AA5115B4F3400CF791D = 6BBB4AA5115B4F3400CF791D /* PBXTextBookmark */; 6BBB4AA6115B4F3400CF791D = 6BBB4AA6115B4F3400CF791D /* PBXTextBookmark */; @@ -711,16 +815,16 @@ }; 6B1185FC10068B040018F96F /* DetourCommon.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {826, 3088}}"; - sepNavSelRange = "{5622, 78}"; - sepNavVisRange = "{4527, 1469}"; + sepNavIntBoundsRect = "{{0, 0}, {826, 3008}}"; + sepNavSelRange = "{5932, 0}"; + sepNavVisRange = "{4853, 1278}"; }; }; 6B1185FD10068B150018F96F /* DetourCommon.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {826, 4112}}"; - sepNavSelRange = "{6297, 0}"; - sepNavVisRange = "{5957, 719}"; + sepNavIntBoundsRect = "{{0, 0}, {826, 4960}}"; + sepNavSelRange = "{7557, 19}"; + sepNavVisRange = "{7141, 890}"; }; }; 6B137C6C0F7FCBBB00459200 /* imgui.cpp */ = { @@ -1146,9 +1250,9 @@ }; 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1112, 45456}}"; - sepNavSelRange = "{48509, 0}"; - sepNavVisRange = "{51130, 361}"; + sepNavIntBoundsRect = "{{0, 0}, {1112, 48624}}"; + sepNavSelRange = "{51761, 0}"; + sepNavVisRange = "{54594, 235}"; sepNavWindowFrame = "{{15, 51}, {1214, 722}}"; }; }; @@ -1161,9 +1265,9 @@ }; 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {845, 8864}}"; - sepNavSelRange = "{13757, 0}"; - sepNavVisRange = "{12646, 1977}"; + sepNavIntBoundsRect = "{{0, 0}, {826, 9456}}"; + sepNavSelRange = "{17915, 0}"; + sepNavVisRange = "{17222, 1595}"; }; }; 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */ = { @@ -1178,7 +1282,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = detail; rLen = 0; - rLoc = 20952; + rLoc = 22187; rType = 0; vrLen = 1182; vrLoc = 9676; @@ -1188,7 +1292,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 358"; rLen = 0; - rLoc = 15425; + rLoc = 15518; rType = 0; vrLen = 1664; vrLoc = 14967; @@ -1198,7 +1302,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 601"; rLen = 0; - rLoc = 17903; + rLoc = 6358; rType = 0; vrLen = 909; vrLoc = 15773; @@ -1645,7 +1749,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 52"; rLen = 0; - rLoc = 1544; + rLoc = 1582; rType = 0; vrLen = 866; vrLoc = 1398; @@ -1654,7 +1758,7 @@ isa = PBXTextBookmark; fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; rLen = 0; - rLoc = 40; + rLoc = 41; rType = 1; }; 6BAF37FE11FEB4BB008CFCDF /* PBXTextBookmark */ = { @@ -1692,7 +1796,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 751"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 1096; vrLoc = 19548; @@ -1702,7 +1806,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 52"; rLen = 0; - rLoc = 1544; + rLoc = 1582; rType = 0; vrLen = 866; vrLoc = 1398; @@ -1712,7 +1816,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 777"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 644; vrLoc = 20473; @@ -1722,7 +1826,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 119"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 865; vrLoc = 2865; @@ -1752,7 +1856,7 @@ comments = "error: expected `)' before 'continue'"; fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; rLen = 0; - rLoc = 738; + rLoc = 234; rType = 1; }; 6BAF380D11FEB62E008CFCDF /* PBXTextBookmark */ = { @@ -1780,7 +1884,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 786"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 675; vrLoc = 20897; @@ -1790,7 +1894,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 56"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 949; vrLoc = 1468; @@ -1800,7 +1904,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 786"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 813; vrLoc = 20792; @@ -1810,7 +1914,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 785"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 797; vrLoc = 20809; @@ -1820,7 +1924,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 56"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 949; vrLoc = 1468; @@ -1830,7 +1934,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 71"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 850; vrLoc = 1620; @@ -1840,7 +1944,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 1058"; rLen = 0; - rLoc = 28455; + rLoc = 29173; rType = 0; vrLen = 1182; vrLoc = 28959; @@ -1870,7 +1974,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 92"; rLen = 19; - rLoc = 2559; + rLoc = 2627; rType = 0; vrLen = 902; vrLoc = 1879; @@ -1880,7 +1984,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 1057"; rLen = 0; - rLoc = 28423; + rLoc = 29141; rType = 0; vrLen = 1182; vrLoc = 28959; @@ -1890,7 +1994,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 1057"; rLen = 0; - rLoc = 28423; + rLoc = 29141; rType = 0; vrLen = 1182; vrLoc = 28959; @@ -1900,7 +2004,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 92"; rLen = 19; - rLoc = 2559; + rLoc = 2627; rType = 0; vrLen = 902; vrLoc = 1879; @@ -1940,7 +2044,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 92"; rLen = 19; - rLoc = 2559; + rLoc = 2627; rType = 0; vrLen = 902; vrLoc = 1879; @@ -1950,7 +2054,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 1123"; rLen = 0; - rLoc = 30234; + rLoc = 32738; rType = 0; vrLen = 883; vrLoc = 30899; @@ -1960,7 +2064,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 1138"; rLen = 0; - rLoc = 30234; + rLoc = 32738; rType = 0; vrLen = 769; vrLoc = 31570; @@ -1970,7 +2074,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 1136"; rLen = 0; - rLoc = 30234; + rLoc = 32738; rType = 0; vrLen = 777; vrLoc = 31570; @@ -1980,9 +2084,9 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 1159"; rLen = 0; - rLoc = 30234; + rLoc = 32738; rType = 0; - vrLen = 830; + vrLen = 607; vrLoc = 31801; }; 6BAF38371201A188008CFCDF /* PBXTextBookmark */ = { @@ -1990,9 +2094,9 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 1165"; rLen = 0; - rLoc = 30234; + rLoc = 32738; rType = 0; - vrLen = 747; + vrLen = 170; vrLoc = 32238; }; 6BAF38391201A1F2008CFCDF /* PBXTextBookmark */ = { @@ -2000,9 +2104,9 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 1182"; rLen = 0; - rLoc = 30234; + rLoc = 32738; rType = 0; - vrLen = 930; + vrLen = 60; vrLoc = 32348; }; 6BAF383B1201A23A008CFCDF /* PBXTextBookmark */ = { @@ -2010,9 +2114,9 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 1168"; rLen = 0; - rLoc = 30234; + rLoc = 32738; rType = 0; - vrLen = 894; + vrLen = 24; vrLoc = 32384; }; 6BAF383C1201A747008CFCDF /* PBXTextBookmark */ = { @@ -2029,8 +2133,8 @@ isa = PBXTextBookmark; fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 772"; - rLen = 133; - rLoc = 20192; + rLen = 0; + rLoc = 6358; rType = 0; vrLen = 731; vrLoc = 21168; @@ -2050,7 +2154,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 776"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 705; vrLoc = 20951; @@ -2060,7 +2164,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 790"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 705; vrLoc = 20951; @@ -2080,7 +2184,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 790"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 705; vrLoc = 20951; @@ -2450,7 +2554,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 790"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 698; vrLoc = 20958; @@ -2510,7 +2614,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 788"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 810; vrLoc = 20897; @@ -2530,7 +2634,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 271"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 958; vrLoc = 6645; @@ -2540,7 +2644,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 46"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 884; vrLoc = 2841; @@ -2550,7 +2654,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 46"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 917; vrLoc = 2841; @@ -2560,7 +2664,7 @@ fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; name = "DetourCommon.h: 211"; rLen = 0; - rLoc = 5996; + rLoc = 6106; rType = 0; vrLen = 1321; vrLoc = 4620; @@ -2570,7 +2674,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 280"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 924; vrLoc = 6905; @@ -2580,7 +2684,7 @@ fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; name = "DetourCommon.h: 211"; rLen = 0; - rLoc = 5996; + rLoc = 6106; rType = 0; vrLen = 1347; vrLoc = 4598; @@ -2590,7 +2694,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 280"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 866; vrLoc = 6905; @@ -2630,7 +2734,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 271"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 958; vrLoc = 6645; @@ -2640,7 +2744,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 67"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 889; vrLoc = 1725; @@ -2650,7 +2754,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 101"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 767; vrLoc = 2135; @@ -2660,7 +2764,7 @@ comments = "error: 'eps' was not declared in this scope"; fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; rLen = 0; - rLoc = 273; + rLoc = 329; rType = 1; }; 6BAF388F120AD602008CFCDF /* PBXTextBookmark */ = { @@ -2668,7 +2772,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 101"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 767; vrLoc = 2135; @@ -2678,7 +2782,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 271"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 680; vrLoc = 6884; @@ -2688,7 +2792,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 277"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 680; vrLoc = 6884; @@ -2698,7 +2802,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 101"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 721; vrLoc = 2181; @@ -2708,7 +2812,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 277"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 680; vrLoc = 6884; @@ -2718,7 +2822,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 67"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 756; vrLoc = 1860; @@ -2728,7 +2832,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 67"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 893; vrLoc = 1817; @@ -2738,7 +2842,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 80"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 896; vrLoc = 1817; @@ -2758,7 +2862,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 80"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 348; vrLoc = 2313; @@ -2768,7 +2872,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 99"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 765; vrLoc = 2338; @@ -2778,7 +2882,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 99"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 839; vrLoc = 2338; @@ -2788,7 +2892,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 99"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 806; vrLoc = 2537; @@ -2798,7 +2902,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 99"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 343; vrLoc = 2740; @@ -2808,7 +2912,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 62"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 753; vrLoc = 1653; @@ -2818,7 +2922,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 62"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 757; vrLoc = 1653; @@ -2828,7 +2932,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 62"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 757; vrLoc = 1653; @@ -2838,7 +2942,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 56"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 778; vrLoc = 1434; @@ -2848,7 +2952,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 103"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 889; vrLoc = 2288; @@ -2858,7 +2962,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 60"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 787; vrLoc = 1656; @@ -2868,7 +2972,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 76"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 798; vrLoc = 1579; @@ -2878,7 +2982,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 399"; rLen = 0; - rLoc = 17446; + rLoc = 18681; rType = 0; vrLen = 1768; vrLoc = 16710; @@ -2888,7 +2992,7 @@ fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; name = "DetourCommon.h: 210"; rLen = 0; - rLoc = 5996; + rLoc = 6106; rType = 0; vrLen = 1415; vrLoc = 4527; @@ -2898,7 +3002,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 278"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 834; vrLoc = 6835; @@ -2908,7 +3012,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 76"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 798; vrLoc = 1579; @@ -2928,7 +3032,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 278"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 834; vrLoc = 6835; @@ -2938,7 +3042,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 399"; rLen = 0; - rLoc = 17446; + rLoc = 18681; rType = 0; vrLen = 1768; vrLoc = 16710; @@ -2948,7 +3052,7 @@ fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; name = "DetourCommon.h: 210"; rLen = 0; - rLoc = 5996; + rLoc = 6106; rType = 0; vrLen = 1415; vrLoc = 4527; @@ -2958,7 +3062,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 258"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 1041; vrLoc = 5606; @@ -2968,7 +3072,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 258"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 1041; vrLoc = 5606; @@ -2978,7 +3082,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 341"; rLen = 200; - rLoc = 14208; + rLoc = 14301; rType = 0; vrLen = 2151; vrLoc = 12914; @@ -2988,7 +3092,7 @@ fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; name = "DetourCommon.cpp: 258"; rLen = 0; - rLoc = 7061; + rLoc = 8501; rType = 0; vrLen = 1041; vrLoc = 5606; @@ -2998,7 +3102,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 341"; rLen = 200; - rLoc = 14208; + rLoc = 14301; rType = 0; vrLen = 2151; vrLoc = 12914; @@ -3018,7 +3122,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 341"; rLen = 20; - rLoc = 14230; + rLoc = 14323; rType = 0; vrLen = 2075; vrLoc = 13087; @@ -3048,7 +3152,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 341"; rLen = 20; - rLoc = 14230; + rLoc = 14323; rType = 0; vrLen = 2075; vrLoc = 13087; @@ -3158,7 +3262,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 342"; rLen = 7; - rLoc = 14366; + rLoc = 14459; rType = 0; vrLen = 2074; vrLoc = 13087; @@ -3188,7 +3292,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 341"; rLen = 16; - rLoc = 14213; + rLoc = 14306; rType = 0; vrLen = 2074; vrLoc = 13087; @@ -3208,7 +3312,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 346"; rLen = 0; - rLoc = 14570; + rLoc = 14663; rType = 0; vrLen = 2074; vrLoc = 13087; @@ -3228,7 +3332,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 341"; rLen = 16; - rLoc = 14213; + rLoc = 14306; rType = 0; vrLen = 2074; vrLoc = 13087; @@ -3248,7 +3352,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 342"; rLen = 7; - rLoc = 14366; + rLoc = 14459; rType = 0; vrLen = 2074; vrLoc = 13087; @@ -3458,7 +3562,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 341"; rLen = 200; - rLoc = 14208; + rLoc = 14301; rType = 0; vrLen = 2057; vrLoc = 12798; @@ -3488,7 +3592,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 341"; rLen = 200; - rLoc = 14208; + rLoc = 14301; rType = 0; vrLen = 2057; vrLoc = 12798; @@ -3508,7 +3612,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 343"; rLen = 0; - rLoc = 14355; + rLoc = 14448; rType = 0; vrLen = 2044; vrLoc = 12914; @@ -3538,7 +3642,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 2742"; rLen = 4; - rLoc = 72615; + rLoc = 78254; rType = 0; vrLen = 1012; vrLoc = 74027; @@ -3558,7 +3662,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 343"; rLen = 0; - rLoc = 14399; + rLoc = 14492; rType = 0; vrLen = 2061; vrLoc = 12798; @@ -3578,7 +3682,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 343"; rLen = 9; - rLoc = 14344; + rLoc = 14437; rType = 0; vrLen = 2062; vrLoc = 12798; @@ -3598,7 +3702,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 343"; rLen = 0; - rLoc = 14330; + rLoc = 14423; rType = 0; vrLen = 2112; vrLoc = 12852; @@ -3618,7 +3722,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 343"; rLen = 0; - rLoc = 14355; + rLoc = 14448; rType = 0; vrLen = 2044; vrLoc = 12914; @@ -3628,7 +3732,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 2742"; rLen = 4; - rLoc = 72615; + rLoc = 78254; rType = 0; vrLen = 1016; vrLoc = 74023; @@ -3678,7 +3782,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 76"; rLen = 0; - rLoc = 1404; + rLoc = 1430; rType = 0; vrLen = 975; vrLoc = 1468; @@ -3698,7 +3802,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 629"; rLen = 0; - rLoc = 15508; + rLoc = 6358; rType = 0; vrLen = 1095; vrLoc = 16098; @@ -3708,7 +3812,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 45"; rLen = 0; - rLoc = 1363; + rLoc = 1401; rType = 0; vrLen = 837; vrLoc = 1220; @@ -3718,7 +3822,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 162"; rLen = 0; - rLoc = 2048; + rLoc = 2074; rType = 0; vrLen = 524; vrLoc = 4347; @@ -3746,7 +3850,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 176"; rLen = 0; - rLoc = 2664; + rLoc = 2690; rType = 0; vrLen = 621; vrLoc = 4400; @@ -3756,7 +3860,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 45"; rLen = 0; - rLoc = 1363; + rLoc = 1401; rType = 0; vrLen = 837; vrLoc = 1220; @@ -3766,7 +3870,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 162"; rLen = 0; - rLoc = 2048; + rLoc = 2074; rType = 0; vrLen = 524; vrLoc = 4347; @@ -3806,7 +3910,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 162"; rLen = 0; - rLoc = 2048; + rLoc = 2074; rType = 0; vrLen = 430; vrLoc = 4347; @@ -3826,7 +3930,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 678"; rLen = 0; - rLoc = 15507; + rLoc = 6358; rType = 0; vrLen = 787; vrLoc = 17477; @@ -3846,7 +3950,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 671"; rLen = 0; - rLoc = 15184; + rLoc = 6358; rType = 0; vrLen = 963; vrLoc = 17244; @@ -3866,7 +3970,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 680"; rLen = 0; - rLoc = 15386; + rLoc = 6358; rType = 0; vrLen = 988; vrLoc = 17335; @@ -3876,7 +3980,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 680"; rLen = 0; - rLoc = 15386; + rLoc = 6358; rType = 0; vrLen = 988; vrLoc = 17335; @@ -3886,7 +3990,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 680"; rLen = 0; - rLoc = 15386; + rLoc = 6358; rType = 0; vrLen = 895; vrLoc = 17538; @@ -3896,7 +4000,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 680"; rLen = 0; - rLoc = 15386; + rLoc = 6358; rType = 0; vrLen = 254; vrLoc = 17447; @@ -3906,7 +4010,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 669"; rLen = 0; - rLoc = 15115; + rLoc = 6358; rType = 0; vrLen = 913; vrLoc = 17447; @@ -3916,7 +4020,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 682"; rLen = 0; - rLoc = 15386; + rLoc = 6358; rType = 0; vrLen = 913; vrLoc = 17447; @@ -3926,7 +4030,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 682"; rLen = 0; - rLoc = 15386; + rLoc = 6358; rType = 0; vrLen = 906; vrLoc = 17592; @@ -3936,7 +4040,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 682"; rLen = 0; - rLoc = 15386; + rLoc = 6358; rType = 0; vrLen = 254; vrLoc = 17447; @@ -3946,7 +4050,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 45"; rLen = 0; - rLoc = 1363; + rLoc = 1401; rType = 0; vrLen = 763; vrLoc = 1220; @@ -3956,7 +4060,7 @@ comments = "error: lvalue required as left operand of assignment"; fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; rLen = 0; - rLoc = 597; + rLoc = 234; rType = 1; }; 6BAF395E120FF37D008CFCDF /* PBXTextBookmark */ = { @@ -3964,7 +4068,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 611"; rLen = 0; - rLoc = 13575; + rLoc = 6358; rType = 0; vrLen = 1023; vrLoc = 15153; @@ -3974,7 +4078,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 45"; rLen = 0; - rLoc = 1363; + rLoc = 1401; rType = 0; vrLen = 763; vrLoc = 1220; @@ -3984,7 +4088,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 720"; rLen = 0; - rLoc = 16405; + rLoc = 6358; rType = 0; vrLen = 913; vrLoc = 18681; @@ -3994,7 +4098,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 73"; rLen = 15; - rLoc = 2003; + rLoc = 2071; rType = 0; vrLen = 837; vrLoc = 1363; @@ -4003,8 +4107,8 @@ isa = PBXTextBookmark; comments = "error: 'polys' was not declared in this scope"; fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; - rLen = 1; - rLoc = 426; + rLen = 0; + rLoc = 234; rType = 1; }; 6BAF3969120FF483008CFCDF /* PBXTextBookmark */ = { @@ -4012,7 +4116,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 716"; rLen = 0; - rLoc = 16301; + rLoc = 6358; rType = 0; vrLen = 1055; vrLoc = 18681; @@ -4022,7 +4126,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 45"; rLen = 0; - rLoc = 1363; + rLoc = 1401; rType = 0; vrLen = 746; vrLoc = 1220; @@ -4031,8 +4135,8 @@ isa = PBXTextBookmark; fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 494"; - rLen = 1; - rLoc = 10461; + rLen = 0; + rLoc = 6358; rType = 0; vrLen = 983; vrLoc = 11574; @@ -4042,7 +4146,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 73"; rLen = 15; - rLoc = 2003; + rLoc = 2071; rType = 0; vrLen = 837; vrLoc = 1363; @@ -4052,7 +4156,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 529"; rLen = 0; - rLoc = 11551; + rLoc = 6358; rType = 0; vrLen = 879; vrLoc = 13352; @@ -4071,8 +4175,8 @@ isa = PBXTextBookmark; comments = "error: 'totalTime' was not declared in this scope"; fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; - rLen = 1; - rLoc = 633; + rLen = 0; + rLoc = 234; rType = 1; }; 6BAF3973120FF609008CFCDF /* PBXTextBookmark */ = { @@ -4080,7 +4184,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 529"; rLen = 0; - rLoc = 11551; + rLoc = 6358; rType = 0; vrLen = 879; vrLoc = 13352; @@ -4100,7 +4204,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 741"; rLen = 0; - rLoc = 17268; + rLoc = 6358; rType = 0; vrLen = 605; vrLoc = 19455; @@ -4110,7 +4214,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 740"; rLen = 0; - rLoc = 17268; + rLoc = 6358; rType = 0; vrLen = 556; vrLoc = 19561; @@ -4120,7 +4224,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 740"; rLen = 0; - rLoc = 17268; + rLoc = 6358; rType = 0; vrLen = 549; vrLoc = 19683; @@ -4130,7 +4234,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 740"; rLen = 0; - rLoc = 17268; + rLoc = 6358; rType = 0; vrLen = 282; vrLoc = 19561; @@ -4140,7 +4244,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 716"; rLen = 0; - rLoc = 16684; + rLoc = 6358; rType = 0; vrLen = 843; vrLoc = 19212; @@ -4150,7 +4254,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 569"; rLen = 10; - rLoc = 24054; + rLoc = 25289; rType = 0; vrLen = 1221; vrLoc = 23129; @@ -4168,7 +4272,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 716"; rLen = 0; - rLoc = 16684; + rLoc = 6358; rType = 0; vrLen = 843; vrLoc = 19212; @@ -4178,7 +4282,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 569"; rLen = 10; - rLoc = 24054; + rLoc = 25289; rType = 0; vrLen = 1221; vrLoc = 23129; @@ -4218,7 +4322,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 740"; rLen = 0; - rLoc = 17268; + rLoc = 6358; rType = 0; vrLen = 282; vrLoc = 19561; @@ -4238,7 +4342,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 568"; rLen = 26; - rLoc = 23981; + rLoc = 25216; rType = 0; vrLen = 1221; vrLoc = 23129; @@ -4266,7 +4370,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 569"; rLen = 10; - rLoc = 24054; + rLoc = 25289; rType = 0; vrLen = 1221; vrLoc = 23129; @@ -4286,7 +4390,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 568"; rLen = 14; - rLoc = 23993; + rLoc = 25228; rType = 0; vrLen = 1221; vrLoc = 23129; @@ -4306,7 +4410,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 568"; rLen = 26; - rLoc = 23981; + rLoc = 25216; rType = 0; vrLen = 1221; vrLoc = 23129; @@ -4474,7 +4578,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 716"; rLen = 0; - rLoc = 16684; + rLoc = 6358; rType = 0; vrLen = 843; vrLoc = 19212; @@ -4494,7 +4598,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 670"; rLen = 0; - rLoc = 15312; + rLoc = 6358; rType = 0; vrLen = 936; vrLoc = 17492; @@ -4504,7 +4608,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 670"; rLen = 0; - rLoc = 15312; + rLoc = 6358; rType = 0; vrLen = 928; vrLoc = 17492; @@ -4521,7 +4625,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 670"; rLen = 0; - rLoc = 15312; + rLoc = 6358; rType = 0; vrLen = 928; vrLoc = 17492; @@ -4546,7 +4650,7 @@ vrLen = 698; vrLoc = 13276; }; - 6BAF39C71210074C008CFCDF /* NavMeshTesterTool.cpp:401 */ = { + 6BAF39C71210074C008CFCDF /* NavMeshTesterTool.cpp:235 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -4558,7 +4662,7 @@ functionName = "NavMeshTesterTool::handleStep()"; hitCount = 1; ignoreCount = 0; - lineNumber = 401; + lineNumber = 235; location = Recast; modificationTime = 303040337.11714; state = 1; @@ -4578,7 +4682,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 670"; rLen = 0; - rLoc = 15312; + rLoc = 6358; rType = 0; vrLen = 905; vrLoc = 17515; @@ -4598,7 +4702,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 496"; rLen = 0; - rLoc = 10461; + rLoc = 6358; rType = 0; vrLen = 999; vrLoc = 12352; @@ -4618,7 +4722,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 498"; rLen = 0; - rLoc = 10557; + rLoc = 6358; rType = 0; vrLen = 1025; vrLoc = 12352; @@ -4668,7 +4772,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 496"; rLen = 0; - rLoc = 10461; + rLoc = 6358; rType = 0; vrLen = 999; vrLoc = 12352; @@ -4688,7 +4792,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 498"; rLen = 0; - rLoc = 10557; + rLoc = 6358; rType = 0; vrLen = 1025; vrLoc = 12352; @@ -4876,7 +4980,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 52"; rLen = 0; - rLoc = 1544; + rLoc = 1582; rType = 0; vrLen = 631; vrLoc = 1361; @@ -4886,7 +4990,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 752"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 888; vrLoc = 20037; @@ -4906,7 +5010,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 752"; rLen = 0; - rLoc = 20325; + rLoc = 6358; rType = 0; vrLen = 888; vrLoc = 20037; @@ -4916,7 +5020,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 52"; rLen = 0; - rLoc = 1544; + rLoc = 1582; rType = 0; vrLen = 631; vrLoc = 1361; @@ -4926,7 +5030,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 1091"; rLen = 0; - rLoc = 30985; + rLoc = 33489; rType = 0; vrLen = 756; vrLoc = 30414; @@ -4936,7 +5040,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 101"; rLen = 0; - rLoc = 2664; + rLoc = 2690; rType = 0; vrLen = 648; vrLoc = 2205; @@ -4946,7 +5050,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 96"; rLen = 0; - rLoc = 2664; + rLoc = 2690; rType = 0; vrLen = 648; vrLoc = 2205; @@ -4956,7 +5060,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 96"; rLen = 0; - rLoc = 2664; + rLoc = 2690; rType = 0; vrLen = 690; vrLoc = 2231; @@ -4976,7 +5080,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 98"; rLen = 0; - rLoc = 2664; + rLoc = 2690; rType = 0; vrLen = 157; vrLoc = 2484; @@ -4986,7 +5090,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 112"; rLen = 0; - rLoc = 2664; + rLoc = 2690; rType = 0; vrLen = 628; vrLoc = 2566; @@ -4996,7 +5100,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 112"; rLen = 0; - rLoc = 2664; + rLoc = 2690; rType = 0; vrLen = 561; vrLoc = 2692; @@ -5006,7 +5110,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 112"; rLen = 0; - rLoc = 2664; + rLoc = 2690; rType = 0; vrLen = 561; vrLoc = 2692; @@ -5016,7 +5120,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 112"; rLen = 0; - rLoc = 2664; + rLoc = 2690; rType = 0; vrLen = 564; vrLoc = 2692; @@ -5026,7 +5130,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 106"; rLen = 0; - rLoc = 2253; + rLoc = 2279; rType = 0; vrLen = 278; vrLoc = 2547; @@ -5036,7 +5140,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 101"; rLen = 0; - rLoc = 2663; + rLoc = 2689; rType = 0; vrLen = 693; vrLoc = 2158; @@ -5046,7 +5150,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 79"; rLen = 0; - rLoc = 2251; + rLoc = 2277; rType = 0; vrLen = 695; vrLoc = 1557; @@ -5056,7 +5160,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 84"; rLen = 0; - rLoc = 2462; + rLoc = 2488; rType = 0; vrLen = 964; vrLoc = 2089; @@ -5066,7 +5170,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 567"; rLen = 0; - rLoc = 15166; + rLoc = 6358; rType = 0; vrLen = 1166; vrLoc = 14743; @@ -5076,7 +5180,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 567"; rLen = 0; - rLoc = 15166; + rLoc = 6358; rType = 0; vrLen = 364; vrLoc = 14743; @@ -5086,7 +5190,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 632"; rLen = 0; - rLoc = 17268; + rLoc = 6358; rType = 0; vrLen = 794; vrLoc = 16791; @@ -5096,7 +5200,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 635"; rLen = 0; - rLoc = 17284; + rLoc = 6358; rType = 0; vrLen = 794; vrLoc = 16791; @@ -5116,7 +5220,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 635"; rLen = 0; - rLoc = 17284; + rLoc = 6358; rType = 0; vrLen = 794; vrLoc = 16791; @@ -5131,6 +5235,1062 @@ vrLen = 1977; vrLoc = 12646; }; + 6BAF3A3212102220008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 327"; + rLen = 0; + rLoc = 13473; + rType = 0; + vrLen = 1977; + vrLoc = 12646; + }; + 6BAF3A3312102220008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 52"; + rLen = 0; + rLoc = 1582; + rType = 0; + vrLen = 795; + vrLoc = 1333; + }; + 6BAF3A3412102220008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 327"; + rLen = 0; + rLoc = 13473; + rType = 0; + vrLen = 1977; + vrLoc = 12646; + }; + 6BAF3A3512102220008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 41"; + rLen = 0; + rLoc = 1334; + rType = 0; + vrLen = 768; + vrLoc = 1073; + }; + 6BAF3A381210235F008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 509"; + rLen = 3; + rLoc = 22314; + rType = 0; + vrLen = 1066; + vrLoc = 20350; + }; + 6BAF3A391210235F008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 41"; + rLen = 33; + rLoc = 1336; + rType = 0; + vrLen = 752; + vrLoc = 1073; + }; + 6BAF3A3A1210235F008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1020"; + rLen = 28; + rLoc = 29494; + rType = 0; + vrLen = 982; + vrLoc = 28414; + }; + 6BAF3A3B1210235F008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 40"; + rLen = 28; + rLoc = 1304; + rType = 0; + vrLen = 751; + vrLoc = 1073; + }; + 6BAF3A3C1210235F008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1006"; + rLen = 0; + rLoc = 29113; + rType = 0; + vrLen = 982; + vrLoc = 28414; + }; + 6BAF3A3D1210235F008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 40"; + rLen = 0; + rLoc = 1332; + rType = 0; + vrLen = 751; + vrLoc = 1073; + }; + 6BAF3A3E1210235F008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1020"; + rLen = 28; + rLoc = 29494; + rType = 0; + vrLen = 982; + vrLoc = 28414; + }; + 6BAF3A3F1210235F008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 41"; + rLen = 33; + rLoc = 1336; + rType = 0; + vrLen = 752; + vrLoc = 1073; + }; + 6BAF3A401210235F008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 736"; + rLen = 0; + rLoc = 20324; + rType = 0; + vrLen = 1044; + vrLoc = 19557; + }; + 6BAF3A43121023ED008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 69"; + rLen = 21; + rLoc = 1982; + rType = 0; + vrLen = 798; + vrLoc = 1302; + }; + 6BAF3A44121023ED008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 738"; + rLen = 0; + rLoc = 20412; + rType = 0; + vrLen = 1095; + vrLoc = 19557; + }; + 6BAF3A45121023ED008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 738"; + rLen = 0; + rLoc = 20412; + rType = 0; + vrLen = 1095; + vrLoc = 19557; + }; + 6BAF3A46121023ED008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 69"; + rLen = 21; + rLoc = 1982; + rType = 0; + vrLen = 798; + vrLoc = 1302; + }; + 6BAF3A47121023ED008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1079"; + rLen = 0; + rLoc = 32079; + rType = 0; + vrLen = 876; + vrLoc = 30231; + }; + 6BAF3A4A12102425008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 204"; + rLen = 0; + rLoc = 5570; + rType = 0; + vrLen = 907; + vrLoc = 4753; + }; + 6BAF3A4B121028E6008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 406"; + rLen = 0; + rLoc = 18300; + rType = 0; + vrLen = 1746; + vrLoc = 16147; + }; + 6BAF3A4C121028E6008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BAF3A4D121028E6008CFCDF /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 876"; + rLen = 0; + rLoc = 23721; + rType = 0; + vrLen = 758; + vrLoc = 22967; + }; + 6BAF3A4D121028E6008CFCDF /* NavMeshTesterTool.cpp */ = { + isa = PBXFileReference; + name = NavMeshTesterTool.cpp; + path = /Users/memon/Code/recastnavigation/Backups/Backup_100809/NavMeshTesterTool.cpp; + sourceTree = ""; + }; + 6BAF3A4E121028E6008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2762"; + rLen = 0; + rLoc = 73397; + rType = 0; + vrLen = 1099; + vrLoc = 75144; + }; + 6BAF3A4F121028E6008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 382"; + rLen = 21; + rLoc = 16460; + rType = 0; + vrLen = 1747; + vrLoc = 16147; + }; + 6BAF3A50121028E6008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 407"; + rLen = 0; + rLoc = 18353; + rType = 0; + vrLen = 1721; + vrLoc = 16147; + }; + 6BAF3A51121028E6008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 406"; + rLen = 0; + rLoc = 18300; + rType = 0; + vrLen = 1746; + vrLoc = 16147; + }; + 6BAF3A52121028E6008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BAF3A53121028E6008CFCDF /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 876"; + rLen = 0; + rLoc = 23721; + rType = 0; + vrLen = 758; + vrLoc = 22967; + }; + 6BAF3A53121028E6008CFCDF /* NavMeshTesterTool.cpp */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = NavMeshTesterTool.cpp; + path = /Users/memon/Code/recastnavigation/Backups/Backup_100809/NavMeshTesterTool.cpp; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {826, 21184}}"; + sepNavSelRange = "{25529, 0}"; + sepNavVisRange = "{25325, 818}"; + }; + }; + 6BAF3A54121028E6008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2755"; + rLen = 0; + rLoc = 73169; + rType = 0; + vrLen = 1236; + vrLoc = 74597; + }; + 6BAF3A5A121029E5008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: 'actualNode' was not declared in this scope"; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + rLen = 1; + rLoc = 2726; + rType = 1; + }; + 6BAF3A5B121029E5008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2778"; + rLen = 0; + rLoc = 74511; + rType = 0; + vrLen = 664; + vrLoc = 75747; + }; + 6BAF3A5E12102BB9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2787"; + rLen = 0; + rLoc = 74704; + rType = 0; + vrLen = 664; + vrLoc = 75747; + }; + 6BAF3A5F12102BB9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */; + name = "OffMeshConnectionTool.cpp: 132"; + rLen = 0; + rLoc = 3217; + rType = 0; + vrLen = 710; + vrLoc = 2506; + }; + 6BAF3A6012102BB9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 69"; + rLen = 4; + rLoc = 1993; + rType = 0; + vrLen = 701; + vrLoc = 1399; + }; + 6BAF3A6112102BB9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 794"; + rLen = 21; + rLoc = 22262; + rType = 0; + vrLen = 1001; + vrLoc = 21471; + }; + 6BAF3A6212102BB9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2787"; + rLen = 0; + rLoc = 74704; + rType = 0; + vrLen = 664; + vrLoc = 75747; + }; + 6BAF3A6312102BB9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */; + name = "OffMeshConnectionTool.cpp: 132"; + rLen = 0; + rLoc = 3217; + rType = 0; + vrLen = 710; + vrLoc = 2506; + }; + 6BAF3A6412102BB9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 794"; + rLen = 21; + rLoc = 22262; + rType = 0; + vrLen = 1071; + vrLoc = 21401; + }; + 6BAF3A6512102BB9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 69"; + rLen = 21; + rLoc = 1982; + rType = 0; + vrLen = 701; + vrLoc = 1399; + }; + 6BAF3A6612102BB9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 69"; + rLen = 4; + rLoc = 1993; + rType = 0; + vrLen = 701; + vrLoc = 1399; + }; + 6BAF3A6712102BB9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 204"; + rLen = 0; + rLoc = 5566; + rType = 0; + vrLen = 859; + vrLoc = 5077; + }; + 6BAF3A6912102C00008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 205"; + rLen = 0; + rLoc = 5573; + rType = 0; + vrLen = 904; + vrLoc = 5077; + }; + 6BAF3A6A12102C00008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2787"; + rLen = 0; + rLoc = 74704; + rType = 0; + vrLen = 627; + vrLoc = 75747; + }; + 6BAF3A6B12102C00008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 205"; + rLen = 0; + rLoc = 5573; + rType = 0; + vrLen = 904; + vrLoc = 5077; + }; + 6BAF3A6C12102C00008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2685"; + rLen = 0; + rLoc = 71074; + rType = 0; + vrLen = 514; + vrLoc = 73029; + }; + 6BAF3A7812103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 53"; + rLen = 0; + rLoc = 1582; + rType = 0; + vrLen = 770; + vrLoc = 1269; + }; + 6BAF3A7912103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 406"; + rLen = 0; + rLoc = 18323; + rType = 0; + vrLen = 1213; + vrLoc = 17065; + }; + 6BAF3A7A12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2800"; + rLen = 96; + rLoc = 74811; + rType = 0; + vrLen = 632; + vrLoc = 76226; + }; + 6BAF3A7B12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 794"; + rLen = 22; + rLoc = 22219; + rType = 0; + vrLen = 809; + vrLoc = 21746; + }; + 6BAF3A7C12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2819"; + rLen = 0; + rLoc = 74794; + rType = 0; + vrLen = 654; + vrLoc = 76552; + }; + 6BAF3A7D12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 406"; + rLen = 0; + rLoc = 18268; + rType = 0; + vrLen = 1688; + vrLoc = 16272; + }; + 6BAF3A7E12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2858"; + rLen = 0; + rLoc = 74797; + rType = 0; + vrLen = 849; + vrLoc = 76919; + }; + 6BAF3A7F12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 406"; + rLen = 0; + rLoc = 18268; + rType = 0; + vrLen = 1630; + vrLoc = 16330; + }; + 6BAF3A8012103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 53"; + rLen = 0; + rLoc = 1582; + rType = 0; + vrLen = 789; + vrLoc = 1269; + }; + 6BAF3A8112103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1074"; + rLen = 0; + rLoc = 31937; + rType = 0; + vrLen = 823; + vrLoc = 30241; + }; + 6BAF3A8212103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 53"; + rLen = 0; + rLoc = 1582; + rType = 0; + vrLen = 770; + vrLoc = 1269; + }; + 6BAF3A8312103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 795"; + rLen = 0; + rLoc = 22330; + rType = 0; + vrLen = 896; + vrLoc = 21831; + }; + 6BAF3A8412103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 408"; + rLen = 87; + rLoc = 18592; + rType = 0; + vrLen = 1579; + vrLoc = 16453; + }; + 6BAF3A8512103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2670"; + rLen = 0; + rLoc = 70789; + rType = 0; + vrLen = 995; + vrLoc = 72217; + }; + 6BAF3A8612103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 480"; + rLen = 0; + rLoc = 21392; + rType = 0; + vrLen = 1053; + vrLoc = 19750; + }; + 6BAF3A8712103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2669"; + rLen = 12; + rLoc = 70723; + rType = 0; + vrLen = 1060; + vrLoc = 72353; + }; + 6BAF3A8812103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 572"; + rLen = 0; + rLoc = 25155; + rType = 0; + vrLen = 1382; + vrLoc = 23270; + }; + 6BAF3A8912103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2824"; + rLen = 0; + rLoc = 74905; + rType = 0; + vrLen = 978; + vrLoc = 76986; + }; + 6BAF3A8A12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 572"; + rLen = 0; + rLoc = 25155; + rType = 0; + vrLen = 1431; + vrLoc = 23221; + }; + 6BAF3A8B12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2824"; + rLen = 19; + rLoc = 74826; + rType = 0; + vrLen = 978; + vrLoc = 76986; + }; + 6BAF3A8C12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 408"; + rLen = 0; + rLoc = 18592; + rType = 0; + vrLen = 1578; + vrLoc = 17065; + }; + 6BAF3A8D12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2824"; + rLen = 19; + rLoc = 74826; + rType = 0; + vrLen = 978; + vrLoc = 76986; + }; + 6BAF3A8E12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 408"; + rLen = 15; + rLoc = 18661; + rType = 0; + vrLen = 1578; + vrLoc = 17065; + }; + 6BAF3A8F12103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2824"; + rLen = 0; + rLoc = 74905; + rType = 0; + vrLen = 970; + vrLoc = 76975; + }; + 6BAF3A9012103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 408"; + rLen = 19; + rLoc = 18597; + rType = 0; + vrLen = 1562; + vrLoc = 17065; + }; + 6BAF3A9112103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2847"; + rLen = 0; + rLoc = 75578; + rType = 0; + vrLen = 838; + vrLoc = 76988; + }; + 6BAF3A9212103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 408"; + rLen = 0; + rLoc = 18592; + rType = 0; + vrLen = 1358; + vrLoc = 17129; + }; + 6BAF3A9312103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2638"; + rLen = 0; + rLoc = 70460; + rType = 0; + vrLen = 705; + vrLoc = 71662; + }; + 6BAF3A9412103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 794"; + rLen = 22; + rLoc = 22219; + rType = 0; + vrLen = 658; + vrLoc = 21881; + }; + 6BAF3A9512103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 406"; + rLen = 0; + rLoc = 18323; + rType = 0; + vrLen = 1213; + vrLoc = 17065; + }; + 6BAF3A9612103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2800"; + rLen = 96; + rLoc = 74811; + rType = 0; + vrLen = 632; + vrLoc = 76226; + }; + 6BAF3A9712103373008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1075"; + rLen = 0; + rLoc = 30900; + rType = 0; + vrLen = 852; + vrLoc = 30387; + }; + 6BAF3A9A12103445008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1082"; + rLen = 0; + rLoc = 31335; + rType = 0; + vrLen = 989; + vrLoc = 30545; + }; + 6BAF3A9D1210349A008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1088"; + rLen = 0; + rLoc = 31499; + rType = 0; + vrLen = 1003; + vrLoc = 30594; + }; + 6BAF3A9F121034C4008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1091"; + rLen = 0; + rLoc = 31791; + rType = 0; + vrLen = 825; + vrLoc = 30794; + }; + 6BAF3AA112103513008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1093"; + rLen = 0; + rLoc = 31796; + rType = 0; + vrLen = 971; + vrLoc = 30823; + }; + 6BAF3AA5121035FB008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; + name = "DetourCommon.h: 209"; + rLen = 87; + rLoc = 5817; + rType = 0; + vrLen = 1188; + vrLoc = 4833; + }; + 6BAF3AA6121035FB008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1082"; + rLen = 0; + rLoc = 31085; + rType = 0; + vrLen = 977; + vrLoc = 30431; + }; + 6BAF3AA7121035FB008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; + name = "DetourCommon.h: 209"; + rLen = 87; + rLoc = 5817; + rType = 0; + vrLen = 1188; + vrLoc = 4833; + }; + 6BAF3AA8121035FB008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 28"; + rLen = 0; + rLoc = 1137; + rType = 0; + vrLen = 966; + vrLoc = 446; + }; + 6BAF3AAB1210369A008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7710CFE1D500F74F2B /* DebugDraw.h */; + name = "DebugDraw.h: 90"; + rLen = 0; + rLoc = 2888; + rType = 0; + vrLen = 1325; + vrLoc = 2397; + }; + 6BAF3AAC1210369A008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1105"; + rLen = 0; + rLoc = 31796; + rType = 0; + vrLen = 945; + vrLoc = 31247; + }; + 6BAF3AAD1210369A008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7710CFE1D500F74F2B /* DebugDraw.h */; + name = "DebugDraw.h: 90"; + rLen = 0; + rLoc = 2888; + rType = 0; + vrLen = 1325; + vrLoc = 2397; + }; + 6BAF3AAE1210369A008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1098"; + rLen = 0; + rLoc = 31566; + rType = 0; + vrLen = 855; + vrLoc = 31247; + }; + 6BAF3AB0121036A6008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1100"; + rLen = 0; + rLoc = 31660; + rType = 0; + vrLen = 857; + vrLoc = 31247; + }; + 6BAF3AB2121036CD008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1100"; + rLen = 0; + rLoc = 31660; + rType = 0; + vrLen = 862; + vrLoc = 31247; + }; + 6BAF3AB3121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1100"; + rLen = 0; + rLoc = 31662; + rType = 0; + vrLen = 885; + vrLoc = 31247; + }; + 6BAF3AB4121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; + name = "DetourCommon.h: 211"; + rLen = 0; + rLoc = 5932; + rType = 0; + vrLen = 1278; + vrLoc = 4853; + }; + 6BAF3AB5121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; + name = "DetourCommon.cpp: 294"; + rLen = 19; + rLoc = 7557; + rType = 0; + vrLen = 890; + vrLoc = 7141; + }; + 6BAF3AB6121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2780"; + rLen = 0; + rLoc = 75857; + rType = 0; + vrLen = 775; + vrLoc = 75511; + }; + 6BAF3AB7121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 1100"; + rLen = 0; + rLoc = 31662; + rType = 0; + vrLen = 885; + vrLoc = 31247; + }; + 6BAF3AB8121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2582"; + rLen = 0; + rLoc = 70460; + rType = 0; + vrLen = 787; + vrLoc = 70113; + }; + 6BAF3AB9121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; + name = "DetourCommon.h: 209"; + rLen = 87; + rLoc = 5817; + rType = 0; + vrLen = 1188; + vrLoc = 4833; + }; + 6BAF3ABA121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; + name = "DetourCommon.h: 210"; + rLen = 0; + rLoc = 5904; + rType = 0; + vrLen = 1188; + vrLoc = 4833; + }; + 6BAF3ABB121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; + name = "DetourCommon.h: 213"; + rLen = 17; + rLoc = 6002; + rType = 0; + vrLen = 1277; + vrLoc = 4853; + }; + 6BAF3ABC121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; + name = "DetourCommon.cpp: 294"; + rLen = 19; + rLoc = 7557; + rType = 0; + vrLen = 890; + vrLoc = 7141; + }; + 6BAF3ABD121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 2780"; + rLen = 0; + rLoc = 75857; + rType = 0; + vrLen = 775; + vrLoc = 75511; + }; + 6BAF3ABE121038F9008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 422"; + rLen = 0; + rLoc = 18591; + rType = 0; + vrLen = 1575; + vrLoc = 17534; + }; + 6BAF3AC0121039AF008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 405"; + rLen = 0; + rLoc = 17625; + rType = 0; + vrLen = 1595; + vrLoc = 17222; + }; + 6BAF3AC2121039C7008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 407"; + rLen = 0; + rLoc = 17740; + rType = 0; + vrLen = 1595; + vrLoc = 17222; + }; + 6BAF3AC3121039C7008CFCDF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 410"; + rLen = 0; + rLoc = 17915; + rType = 0; + vrLen = 1595; + vrLoc = 17222; + }; 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1112, 3888}}"; @@ -5148,15 +6308,16 @@ 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {826, 1584}}"; - sepNavSelRange = "{1544, 0}"; - sepNavVisRange = "{1361, 631}"; + sepNavSelRange = "{1582, 0}"; + sepNavVisRange = "{1269, 770}"; }; }; 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {826, 17472}}"; - sepNavSelRange = "{17284, 0}"; - sepNavVisRange = "{16791, 794}"; + sepNavIntBoundsRect = "{{0, 0}, {936, 18400}}"; + sepNavSelRange = "{31662, 0}"; + sepNavVisRange = "{31247, 885}"; + sepNavWindowFrame = "{{38, 30}, {1214, 722}}"; }; }; 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */ = { @@ -5175,9 +6336,9 @@ }; 6BB93C7710CFE1D500F74F2B /* DebugDraw.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {826, 2688}}"; - sepNavSelRange = "{5429, 0}"; - sepNavVisRange = "{5180, 706}"; + sepNavIntBoundsRect = "{{0, 0}, {826, 2672}}"; + sepNavSelRange = "{2888, 0}"; + sepNavVisRange = "{2397, 1325}"; }; }; 6BB93C7810CFE1D500F74F2B /* DetourDebugDraw.h */ = { @@ -5203,9 +6364,10 @@ }; 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {826, 8956}}"; + sepNavIntBoundsRect = "{{0, 0}, {826, 8832}}"; sepNavSelRange = "{13297, 0}"; - sepNavVisRange = "{13882, 540}"; + sepNavVisRange = "{13778, 719}"; + sepNavWindowFrame = "{{61, 9}, {1214, 722}}"; }; }; 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */ = { @@ -5485,7 +6647,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 76"; rLen = 0; - rLoc = 2231; + rLoc = 2299; rType = 0; vrLen = 566; vrLoc = 1608; @@ -5666,7 +6828,7 @@ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */; name = "NavMeshTesterTool.h: 60"; rLen = 11; - rLoc = 1794; + rLoc = 1832; rType = 0; vrLen = 786; vrLoc = 1642; @@ -5696,7 +6858,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 2380"; rLen = 0; - rLoc = 67069; + rLoc = 67085; rType = 0; vrLen = 708; vrLoc = 64760; @@ -5706,7 +6868,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 2451"; rLen = 0; - rLoc = 69296; + rLoc = 69312; rType = 0; vrLen = 1202; vrLoc = 66704; @@ -5716,7 +6878,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 707"; rLen = 0; - rLoc = 20912; + rLoc = 21195; rType = 0; vrLen = 1012; vrLoc = 15713; @@ -5740,9 +6902,9 @@ }; 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {909, 2728}}"; - sepNavSelRange = "{2918, 0}"; - sepNavVisRange = "{2872, 504}"; + sepNavIntBoundsRect = "{{0, 0}, {826, 2592}}"; + sepNavSelRange = "{3217, 0}"; + sepNavVisRange = "{2506, 710}"; }; }; 6BF5F23911747606000502A6 /* Filelist.cpp */ = { diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 index 331e6c2..52509d4 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 @@ -283,8 +283,8 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 14 - 11 + 10 + 2 1 0 @@ -337,7 +337,7 @@ _historyCapacity 0 bookmark - 6BAF3A3112101D4B008CFCDF + 6BAF3AC3121039C7008CFCDF history 6BBB4AA1115B4F3400CF791D @@ -357,7 +357,6 @@ 6BF5F31C117490A1000502A6 6BF5F32E11759C3C000502A6 6BF5F474117644A2000502A6 - 6BF5F475117644A2000502A6 6BF5F5041176F5F8000502A6 6B4214D911803923006C347B 6B2CDC911197F0720090FA4D @@ -380,7 +379,6 @@ 6BF9B1F211EC43FC0043574C 6BF9B20B11EC450E0043574C 6BF9B21211EC49A30043574C - 6BF9B21311EC49A30043574C 6BF9B21B11EC49F90043574C 6BAF37D411FEAC16008CFCDF 6BAF37F911FEB4BB008CFCDF @@ -395,20 +393,21 @@ 6BAF3873120AD32F008CFCDF 6BAF3874120AD32F008CFCDF 6BAF3875120AD32F008CFCDF - 6BAF38F2120FD8CC008CFCDF 6BAF390F120FEB27008CFCDF 6BAF3910120FEB27008CFCDF - 6BAF3938120FEF30008CFCDF 6BAF3971120FF609008CFCDF - 6BAF39D012100A22008CFCDF 6BAF39D112100A22008CFCDF 6BAF39D212100A22008CFCDF - 6BAF39DB12100D84008CFCDF 6BAF39E712100DE4008CFCDF 6BAF39F012100ED1008CFCDF - 6BAF39F112100ED1008CFCDF - 6BAF3A2E12101D4B008CFCDF - 6BAF3A2F12101D4B008CFCDF + 6BAF3A5F12102BB9008CFCDF + 6BAF3A7812103373008CFCDF + 6BAF3AAB1210369A008CFCDF + 6BAF3AB3121038F9008CFCDF + 6BAF3AB4121038F9008CFCDF + 6BAF3AB5121038F9008CFCDF + 6BAF3AB6121038F9008CFCDF + 6BAF3AC2121039C7008CFCDF prevStack @@ -428,7 +427,6 @@ 6BBB4AEF115B4F3400CF791D 6BBB4AF0115B4F3400CF791D 6BBB4AF1115B4F3400CF791D - 6BBB4AF4115B4F3400CF791D 6BBB4AF7115B4F3400CF791D 6BBB4AF8115B4F3400CF791D 6BBB4AF9115B4F3400CF791D @@ -448,7 +446,6 @@ 6BF5F33911759C3C000502A6 6B4215D1118066FE006C347B 6B4215DF1180672F006C347B - 6B4216881180725E006C347B 6B5562681193EF2F00843384 6B2CDD181197FE370090FA4D 6B10005C11AD08FA0098A59A @@ -474,12 +471,9 @@ 6BF9B14911EB8CF20043574C 6BAF37D611FEAC16008CFCDF 6BAF37FE11FEB4BB008CFCDF - 6BAF380211FEB4BB008CFCDF - 6BAF382612019EDA008CFCDF 6BAF382712019EDA008CFCDF 6BAF382812019EDA008CFCDF 6BAF382912019EDA008CFCDF - 6BAF382A12019EDA008CFCDF 6BAF385F120A8A8E008CFCDF 6BAF3860120A8A8E008CFCDF 6BAF3861120A8A8E008CFCDF @@ -507,40 +501,63 @@ 6BAF3919120FEB27008CFCDF 6BAF391B120FEB27008CFCDF 6BAF391C120FEB27008CFCDF - 6BAF393B120FEF30008CFCDF - 6BAF393D120FEF30008CFCDF 6BAF3944120FEF7A008CFCDF 6BBB4AD2115B4F3400CF791D - 6BBB4AD4115B4F3400CF791D - 6BAF38431202CBF8008CFCDF - 6BAF395E120FF37D008CFCDF - 6BAF395F120FF37D008CFCDF - 6BAF3969120FF483008CFCDF - 6BAF396A120FF483008CFCDF - 6BAF396B120FF483008CFCDF - 6BAF396C120FF483008CFCDF - 6BAF3973120FF609008CFCDF 6BAF3974120FF609008CFCDF - 6BAF3982120FF75F008CFCDF 6BAF3983120FF75F008CFCDF 6BAF398E120FF809008CFCDF 6BAF3990120FF809008CFCDF 6BAF3992120FF809008CFCDF - 6BAF39C112100714008CFCDF 6BAF39CA1210074E008CFCDF - 6BAF39D412100A22008CFCDF 6BAF39D512100A22008CFCDF - 6BAF39D612100A22008CFCDF - 6BAF39DD12100D84008CFCDF 6BAF39DE12100D84008CFCDF - 6BAF39DF12100D84008CFCDF 6BAF39E412100DA6008CFCDF 6BAF39E912100DE4008CFCDF 6BAF39EA12100DE4008CFCDF 6BAF39F312100ED1008CFCDF - 6BAF39F412100ED1008CFCDF - 6BAF39F512100ED1008CFCDF - 6BAF3A3012101D4B008CFCDF + 6BAF3A3412102220008CFCDF + 6BAF3A3B1210235F008CFCDF + 6BAF3A3D1210235F008CFCDF + 6BAF3A3F1210235F008CFCDF + 6BAF3A46121023ED008CFCDF + 6BAF3A4F121028E6008CFCDF + 6BAF3A50121028E6008CFCDF + 6BAF3A51121028E6008CFCDF + 6BAF3A6212102BB9008CFCDF + 6BAF3A6312102BB9008CFCDF + 6BAF3A6512102BB9008CFCDF + 6BAF3A6612102BB9008CFCDF + 6BAF3A7C12103373008CFCDF + 6BAF3A7D12103373008CFCDF + 6BAF3A7E12103373008CFCDF + 6BAF3A7F12103373008CFCDF + 6BAF3A8012103373008CFCDF + 6BAF3A8212103373008CFCDF + 6BAF3A8412103373008CFCDF + 6BAF3A8512103373008CFCDF + 6BAF3A8612103373008CFCDF + 6BAF3A8712103373008CFCDF + 6BAF3A8812103373008CFCDF + 6BAF3A8912103373008CFCDF + 6BAF3A8A12103373008CFCDF + 6BAF3A8B12103373008CFCDF + 6BAF3A8C12103373008CFCDF + 6BAF3A8D12103373008CFCDF + 6BAF3A8E12103373008CFCDF + 6BAF3A8F12103373008CFCDF + 6BAF3A9012103373008CFCDF + 6BAF3A9112103373008CFCDF + 6BAF3A9212103373008CFCDF + 6BAF3A9312103373008CFCDF + 6BAF3A9512103373008CFCDF + 6BAF3A9612103373008CFCDF + 6BAF3AB7121038F9008CFCDF + 6BAF3AB8121038F9008CFCDF + 6BAF3AB9121038F9008CFCDF + 6BAF3ABA121038F9008CFCDF + 6BAF3ABB121038F9008CFCDF + 6BAF3ABC121038F9008CFCDF + 6BAF3ABD121038F9008CFCDF SplitCount @@ -554,18 +571,18 @@ GeometryConfiguration Frame - {{0, 0}, {887, 567}} + {{0, 0}, {887, 530}} RubberWindowFrame 33 87 1173 691 0 0 1280 778 Module PBXNavigatorGroup Proportion - 567pt + 530pt Proportion - 79pt + 116pt Tabs @@ -633,7 +650,7 @@ GeometryConfiguration Frame - {{10, 27}, {887, 52}} + {{10, 27}, {887, 89}} RubberWindowFrame 33 87 1173 691 0 0 1280 778 @@ -855,6 +872,7 @@ 5 WindowOrderList + 6BAF3AC4121039C7008CFCDF 6BAF394F120FF023008CFCDF 6BAF3950120FF023008CFCDF /Users/memon/Code/recastnavigation/RecastDemo/Build/Xcode/Recast.xcodeproj diff --git a/RecastDemo/Include/NavMeshTesterTool.h b/RecastDemo/Include/NavMeshTesterTool.h index 075e01b..d6e0b5f 100644 --- a/RecastDemo/Include/NavMeshTesterTool.h +++ b/RecastDemo/Include/NavMeshTesterTool.h @@ -37,7 +37,8 @@ class NavMeshTesterTool : public SampleTool TOOLMODE_RAYCAST, TOOLMODE_DISTANCE_TO_WALL, TOOLMODE_FIND_POLYS_IN_CIRCLE, - TOOLMODE_FIND_POLYS_IN_POLY, + TOOLMODE_FIND_POLYS_IN_SHAPE, + TOOLMODE_FIND_LOCAL_NEIGHBOURHOOD, }; ToolMode m_toolMode; @@ -65,6 +66,7 @@ class NavMeshTesterTool : public SampleTool float m_hitNormal[3]; bool m_hitResult; float m_distanceToWall; + float m_neighbourhoodRadius; bool m_sposSet; bool m_eposSet; diff --git a/RecastDemo/Source/NavMeshTesterTool.cpp b/RecastDemo/Source/NavMeshTesterTool.cpp index cdaa53f..1d75b74 100644 --- a/RecastDemo/Source/NavMeshTesterTool.cpp +++ b/RecastDemo/Source/NavMeshTesterTool.cpp @@ -31,6 +31,7 @@ #include "DetourNavMesh.h" #include "DetourNavMeshBuilder.h" #include "DetourDebugDraw.h" +#include "DetourCommon.h" #ifdef WIN32 # define snprintf _snprintf @@ -161,6 +162,8 @@ NavMeshTesterTool::NavMeshTesterTool() : m_polyPickExt[0] = 2; m_polyPickExt[1] = 4; m_polyPickExt[2] = 2; + + m_neighbourhoodRadius = 2.5f; } NavMeshTesterTool::~NavMeshTesterTool() @@ -199,6 +202,7 @@ void NavMeshTesterTool::init(Sample* sample) m_sample->setNavMeshDrawFlags(flags); } + m_neighbourhoodRadius = sample->getAgentRadius() * 20.0f; } void NavMeshTesterTool::handleMenu() @@ -228,9 +232,14 @@ void NavMeshTesterTool::handleMenu() m_toolMode = TOOLMODE_FIND_POLYS_IN_CIRCLE; recalc(); } - if (imguiCheck("Find Polys in Poly", m_toolMode == TOOLMODE_FIND_POLYS_IN_POLY)) + if (imguiCheck("Find Polys in Poly", m_toolMode == TOOLMODE_FIND_POLYS_IN_SHAPE)) { - m_toolMode = TOOLMODE_FIND_POLYS_IN_POLY; + m_toolMode = TOOLMODE_FIND_POLYS_IN_SHAPE; + recalc(); + } + if (imguiCheck("Find Local Neighbourhood", m_toolMode == TOOLMODE_FIND_LOCAL_NEIGHBOURHOOD)) + { + m_toolMode = TOOLMODE_FIND_LOCAL_NEIGHBOURHOOD; recalc(); } @@ -738,7 +747,7 @@ void NavMeshTesterTool::recalc() } } - else if (m_toolMode == TOOLMODE_FIND_POLYS_IN_POLY) + else if (m_toolMode == TOOLMODE_FIND_POLYS_IN_SHAPE) { if (m_sposSet && m_startRef && m_eposSet) { @@ -774,6 +783,19 @@ void NavMeshTesterTool::recalc() m_polys, m_parent, 0, MAX_POLYS); } } + else if (m_toolMode == TOOLMODE_FIND_LOCAL_NEIGHBOURHOOD) + { + if (m_sposSet && m_startRef) + { +#ifdef DUMP_REQS + printf("fln %f %f %f %f 0x%x 0x%x\n", + m_spos[0],m_spos[1],m_spos[2], m_neighbourhoodRadius, + m_filter.includeFlags, m_filter.excludeFlags); +#endif + m_npolys = m_navMesh->findLocalNeighbourhood(m_startRef, m_spos, m_neighbourhoodRadius, &m_filter, + m_polys, m_parent, MAX_POLYS); + } + } } static void getPolyCenter(dtNavMesh* navMesh, dtPolyRef ref, float* center) @@ -1000,7 +1022,7 @@ void NavMeshTesterTool::handleRender() dd.depthMask(true); } } - else if (m_toolMode == TOOLMODE_FIND_POLYS_IN_POLY) + else if (m_toolMode == TOOLMODE_FIND_POLYS_IN_SHAPE) { for (int i = 0; i < m_npolys; ++i) { @@ -1033,6 +1055,67 @@ void NavMeshTesterTool::handleRender() dd.end(); dd.depthMask(true); } + } + else if (m_toolMode == TOOLMODE_FIND_LOCAL_NEIGHBOURHOOD) + { + for (int i = 0; i < m_npolys; ++i) + { + duDebugDrawNavMeshPoly(&dd, *m_navMesh, m_polys[i], pathCol); + dd.depthMask(false); + if (m_parent[i]) + { + float p0[3], p1[3]; + dd.depthMask(false); + getPolyCenter(m_navMesh, m_parent[i], p0); + getPolyCenter(m_navMesh, m_polys[i], p1); + duDebugDrawArc(&dd, p0[0],p0[1],p0[2], p1[0],p1[1],p1[2], 0.25f, 0.0f, 0.4f, duRGBA(0,0,0,128), 2.0f); + dd.depthMask(true); + } + + float segs[DT_VERTS_PER_POLYGON*3*2]; + const int nsegs = m_navMesh->getPolyWallSegments(m_polys[i], &m_filter, segs); + dd.begin(DU_DRAW_LINES, 2.0f); + for (int j = 0; j < nsegs; ++j) + { + const float* s = &segs[j*6]; + + // Skip too distant segments. + float tseg; + float distSqr = dtDistancePtSegSqr2D(m_spos, s, s+3, tseg); + if (distSqr > dtSqr(m_neighbourhoodRadius)) + continue; + + float delta[3], norm[3], p0[3], p1[3]; + rcVsub(delta, s+3,s); + rcVmad(p0, s, delta, 0.5f); + norm[0] = delta[2]; + norm[1] = 0; + norm[2] = -delta[0]; + rcVnormalize(norm); + rcVmad(p1, p0, norm, agentRadius*0.5f); + + // Skip backfacing segments. + unsigned int col = duRGBA(255,255,255,192); + if (dtTriArea2D(m_spos, s, s+3) < 0.0f) + col = duRGBA(255,255,255,64); + + dd.vertex(p0[0],p0[1]+agentClimb,p0[2],duRGBA(0,0,0,128)); + dd.vertex(p1[0],p1[1]+agentClimb,p1[2],duRGBA(0,0,0,128)); + + dd.vertex(s[0],s[1]+agentClimb,s[2],col); + dd.vertex(s[3],s[4]+agentClimb,s[5],col); + } + dd.end(); + + dd.depthMask(true); + } + + if (m_sposSet) + { + dd.depthMask(false); + duDebugDrawCircle(&dd, m_spos[0], m_spos[1]+agentHeight/2, m_spos[2], m_neighbourhoodRadius, duRGBA(64,16,0,220), 2.0f); + dd.depthMask(true); + } } }