From a715e9a5f7ebdfe0883ce620517cb02911d0fbbd Mon Sep 17 00:00:00 2001 From: Mikko Mononen Date: Fri, 5 Feb 2010 16:15:49 +0000 Subject: [PATCH] Area progress: Pass area type and ability flags to recast. Convex Area tool. Mark chf with convex volumes. Better visualization of volumes. --- DebugUtils/Source/DetourDebugDraw.cpp | 17 +- Detour/Include/DetourNavMesh.h | 28 +- Detour/Include/DetourNavMeshBuilder.h | 4 + Detour/Source/DetourNavMesh.cpp | 76 +- Detour/Source/DetourNavMeshBuilder.cpp | 32 +- Recast/Include/Recast.h | 27 +- Recast/Source/RecastArea.cpp | 114 +- Recast/Source/RecastMesh.cpp | 19 + .../Xcode/Recast.xcodeproj/memon.pbxuser | 4844 ++++++++++++++++- .../Recast.xcodeproj/memon.perspectivev3 | 207 +- .../Xcode/Recast.xcodeproj/project.pbxproj | 12 +- RecastDemo/Include/BoxVolumeTool.h | 47 - RecastDemo/Include/InputGeom.h | 37 +- RecastDemo/Include/Sample.h | 26 +- RecastDemo/Source/BoxVolumeTool.cpp | 152 - RecastDemo/Source/InputGeom.cpp | 152 +- RecastDemo/Source/NavMeshTesterTool.cpp | 45 +- RecastDemo/Source/OffMeshConnectionTool.cpp | 4 +- RecastDemo/Source/Sample_SoloMeshSimple.cpp | 45 +- RecastDemo/Source/Sample_SoloMeshTiled.cpp | 45 +- RecastDemo/Source/Sample_TileMesh.cpp | 46 +- 21 files changed, 5324 insertions(+), 655 deletions(-) delete mode 100644 RecastDemo/Include/BoxVolumeTool.h delete mode 100644 RecastDemo/Source/BoxVolumeTool.cpp diff --git a/DebugUtils/Source/DetourDebugDraw.cpp b/DebugUtils/Source/DetourDebugDraw.cpp index 91c9f3a..9212bb2 100755 --- a/DebugUtils/Source/DetourDebugDraw.cpp +++ b/DebugUtils/Source/DetourDebugDraw.cpp @@ -49,7 +49,7 @@ static void drawPolyBoundaries(duDebugDraw* dd, const dtMeshHeader* header, { const dtPoly* p = &header->polys[i]; - if (p->flags & DT_POLY_OFFMESH_CONNECTION) continue; + if (p->type == DT_POLYTYPE_OFFMESH_CONNECTION) continue; const dtPolyDetail* pd = &header->detailMeshes[i]; @@ -126,7 +126,7 @@ static void drawMeshTile(duDebugDraw* dd, const dtNavMesh* mesh, const dtMeshTil for (int i = 0; i < header->polyCount; ++i) { const dtPoly* p = &header->polys[i]; - if (p->flags & DT_POLY_OFFMESH_CONNECTION) // Skip off-mesh links. + if (p->type == DT_POLYTYPE_OFFMESH_CONNECTION) // Skip off-mesh links. continue; const dtPolyDetail* pd = &header->detailMeshes[i]; @@ -135,7 +135,12 @@ static void drawMeshTile(duDebugDraw* dd, const dtNavMesh* mesh, const dtMeshTil if ((flags & DU_DRAWNAVMESH_CLOSEDLIST) && mesh->isInClosedList(base | (dtPolyRef)i)) col = duRGBA(255,196,0,64); else - col = duRGBA(0,196,255,64); + { + if (p->area == 0) // Treat zero area type as default. + col = duRGBA(0,192,255,64); + else + col = duIntToCol(p->area, 64); + } for (int j = 0; j < pd->triCount; ++j) { @@ -163,14 +168,14 @@ static void drawMeshTile(duDebugDraw* dd, const dtNavMesh* mesh, const dtMeshTil for (int i = 0; i < header->polyCount; ++i) { const dtPoly* p = &header->polys[i]; - if ((p->flags & DT_POLY_OFFMESH_CONNECTION) == 0) // Skip regular polys. + if (p->type != DT_POLYTYPE_OFFMESH_CONNECTION) // Skip regular polys. continue; unsigned int col; if ((flags & DU_DRAWNAVMESH_CLOSEDLIST) && mesh->isInClosedList(base | (dtPolyRef)i)) col = duRGBA(255,196,0,220); else - col = duRGBA(255,255,255,220); + col = duDarkenColor(duIntToCol(p->area, 220)); const dtOffMeshConnection* con = &header->offMeshCons[i - header->offMeshBase]; const float* va = &header->verts[p->verts[0]*3]; @@ -452,7 +457,7 @@ void duDebugDrawNavMeshPoly(duDebugDraw* dd, const dtNavMesh* mesh, dtPolyRef re const unsigned int c = (col & 0x00ffffff) | (64 << 24); - if (p->flags & DT_POLY_OFFMESH_CONNECTION) + if (p->type == DT_POLYTYPE_OFFMESH_CONNECTION) { dtOffMeshConnection* con = &header->offMeshCons[ip - header->offMeshBase]; diff --git a/Detour/Include/DetourNavMesh.h b/Detour/Include/DetourNavMesh.h index cbf4ede..1ad948f 100644 --- a/Detour/Include/DetourNavMesh.h +++ b/Detour/Include/DetourNavMesh.h @@ -32,6 +32,8 @@ static const unsigned short DT_EXT_LINK = 0x8000; static const unsigned int DT_NULL_LINK = 0xffffffff; static const unsigned int DT_OFFMESH_CON_BIDIR = 1; +static const int DT_MAX_AREAS = 64; + // Flags returned by findStraightPath(). enum dtStraightPathFlags { @@ -41,10 +43,10 @@ enum dtStraightPathFlags }; // Flags describing polygon properties. -enum dtPolyFlags +enum dtPolyTypes { - DT_POLY_GROUND = 0x01, // Regular ground polygons. - DT_POLY_OFFMESH_CONNECTION = 0x02, // Off-mesh connections. + DT_POLYTYPE_GROUND = 0, // Regular ground polygons. + DT_POLYTYPE_OFFMESH_CONNECTION = 1, // Off-mesh connections. }; struct dtQueryFilter @@ -62,6 +64,8 @@ struct dtPoly unsigned short neis[DT_VERTS_PER_POLYGON]; // Refs to neighbours of the poly. unsigned short flags; // Flags (see dtPolyFlags). unsigned char vertCount; // Number of vertices. + unsigned char area : 6; // Area ID of the polygon. + unsigned char type : 2; // Polygon type, see dtPolyTypes. }; // Stucture describing polygon detail triangles. @@ -363,6 +367,17 @@ public: // height - (out) height at the location. // Returns: true if over polygon. bool getPolyHeight(dtPolyRef ref, const float* pos, float* height) const; + + // Sets the pathfinding cost of the specified area. + // Params: + // area - (in) area ID (0-63). + // cost - (int) travel cost of the area. + void setAreaCost(const int area, float cost); + + // Returns the pathfinding cost of the specified area. + // Params: + // area - (in) area ID (0-63). + float getAreaCost(const int area) const; // Returns pointer to a polygon based on ref. const dtPoly* getPolyByRef(dtPolyRef ref) const; @@ -432,8 +447,9 @@ private: dtQueryFilter* filter, float* nearestPt); // Returns closest point on polygon. bool closestPointOnPolyInTile(const dtMeshTile* tile, unsigned int ip, const float* pos, float* closest) const; - + unsigned short getPolyFlags(dtPolyRef ref); + unsigned char getPolyType(dtPolyRef ref); float getCost(dtPolyRef prev, dtPolyRef from, dtPolyRef to) const; float getFirstCost(const float* pos, dtPolyRef from, dtPolyRef to) const; float getLastCost(dtPolyRef from, dtPolyRef to, const float* pos) const; @@ -441,7 +457,7 @@ private: // Returns portal points between two polygons. bool getPortalPoints(dtPolyRef from, dtPolyRef to, float* left, float* right, - unsigned short& fromFlags, unsigned short& toFlags) const; + unsigned char& fromType, unsigned char& toType) const; // Returns edge mid point between two polygons. bool getEdgeMidPoint(dtPolyRef from, dtPolyRef to, float* mid) const; @@ -459,6 +475,8 @@ private: unsigned int m_tileBits; // Number of tile bits in the tile ID. unsigned int m_polyBits; // Number of poly bits in the tile ID. + float m_areaCost[DT_MAX_AREAS]; // Cost per area. + class dtNodePool* m_nodePool; // Pointer to node pool. class dtNodeQueue* m_openList; // Pointer to open list queue. }; diff --git a/Detour/Include/DetourNavMeshBuilder.h b/Detour/Include/DetourNavMeshBuilder.h index 0251869..cad4908 100644 --- a/Detour/Include/DetourNavMeshBuilder.h +++ b/Detour/Include/DetourNavMeshBuilder.h @@ -26,6 +26,8 @@ struct dtNavMeshCreateParams int vertCount; // Navmesh polygons const unsigned short* polys; + const unsigned short* polyFlags; + const unsigned char* polyAreas; int polyCount; int nvp; // Navmesh Detail @@ -37,6 +39,8 @@ struct dtNavMeshCreateParams // Off-Mesh Connections. const float* offMeshConVerts; const float* offMeshConRad; + const unsigned short* offMeshConFlags; + const unsigned char* offMeshConAreas; const unsigned char* offMeshConDir; int offMeshConCount; // Settings diff --git a/Detour/Source/DetourNavMesh.cpp b/Detour/Source/DetourNavMesh.cpp index b01af75..0162faf 100644 --- a/Detour/Source/DetourNavMesh.cpp +++ b/Detour/Source/DetourNavMesh.cpp @@ -421,7 +421,7 @@ void dtNavMesh::connectIntLinks(dtMeshTile* tile) dtPoly* poly = &header->polys[i]; poly->firstLink = DT_NULL_LINK; - if (poly->flags & DT_POLY_OFFMESH_CONNECTION) + if (poly->type == DT_POLYTYPE_OFFMESH_CONNECTION) continue; // Build edge links backwards so that the links will be @@ -827,7 +827,7 @@ bool dtNavMesh::getOffMeshConnectionPolyEndPoints(dtPolyRef prevRef, dtPolyRef p const dtPoly* poly = &header->polys[ip]; // Make sure that the current poly is indeed off-mesh link. - if ((poly->flags & DT_POLY_OFFMESH_CONNECTION) == 0) + if (poly->type != DT_POLYTYPE_OFFMESH_CONNECTION) return false; // Figure out which way to hand out the vertices. @@ -865,7 +865,7 @@ bool dtNavMesh::getPolyHeight(dtPolyRef ref, const float* pos, float* height) co if (ip >= (unsigned int)header->polyCount) return false; const dtPoly* poly = &header->polys[ip]; - if (poly->flags & DT_POLY_OFFMESH_CONNECTION) + if (poly->type == DT_POLYTYPE_OFFMESH_CONNECTION) { const float* v0 = &header->verts[poly->verts[0]*3]; const float* v1 = &header->verts[poly->verts[1]*3]; @@ -903,6 +903,18 @@ bool dtNavMesh::getPolyHeight(dtPolyRef ref, const float* pos, float* height) co return false; } +void dtNavMesh::setAreaCost(const int area, float cost) +{ + if (area >= 0 && area > DT_MAX_AREAS) + m_areaCost[area] = cost; +} + +float dtNavMesh::getAreaCost(const int area) const +{ + if (area >= 0 && area > DT_MAX_AREAS) + return m_areaCost[area]; + return -1; +} dtPolyRef dtNavMesh::findNearestPoly(const float* center, const float* extents, dtQueryFilter* filter, float* nearestPt) { @@ -1271,8 +1283,8 @@ int dtNavMesh::findStraightPath(const float* startPos, const float* endPos, int leftIndex = 0; int rightIndex = 0; - unsigned short leftPolyFlags = 0; - unsigned short rightPolyFlags = 0; + unsigned char leftPolyType = 0; + unsigned char rightPolyType = 0; dtPolyRef leftPolyRef = path[0]; dtPolyRef rightPolyRef = path[0]; @@ -1280,12 +1292,12 @@ int dtNavMesh::findStraightPath(const float* startPos, const float* endPos, for (int i = 0; i < pathSize; ++i) { float left[3], right[3]; - unsigned short fromFlags, toFlags; + unsigned char fromType, toType; if (i+1 < pathSize) { // Next portal. - if (!getPortalPoints(path[i], path[i+1], left, right, fromFlags, toFlags)) + if (!getPortalPoints(path[i], path[i+1], left, right, fromType, toType)) { if (!closestPointOnPolyBoundary(path[i], endPos, closestEndPos)) return 0; @@ -1306,7 +1318,7 @@ int dtNavMesh::findStraightPath(const float* startPos, const float* endPos, vcopy(left, closestEndPos); vcopy(right, closestEndPos); - fromFlags = toFlags = 0; + fromType = toType = DT_POLYTYPE_GROUND; } // Right vertex. @@ -1314,7 +1326,7 @@ int dtNavMesh::findStraightPath(const float* startPos, const float* endPos, { vcopy(portalRight, right); rightPolyRef = (i+1 < pathSize) ? path[i+1] : 0; - rightPolyFlags = toFlags; + rightPolyType = toType; rightIndex = i; } else @@ -1325,7 +1337,7 @@ int dtNavMesh::findStraightPath(const float* startPos, const float* endPos, { vcopy(portalRight, right); rightPolyRef = (i+1 < pathSize) ? path[i+1] : 0; - rightPolyFlags = toFlags; + rightPolyType = toType; rightIndex = i; } else @@ -1333,7 +1345,7 @@ int dtNavMesh::findStraightPath(const float* startPos, const float* endPos, vcopy(portalApex, portalLeft); apexIndex = leftIndex; - unsigned char flags = (leftPolyFlags & DT_POLY_OFFMESH_CONNECTION) ? DT_STRAIGHTPATH_OFFMESH_CONNECTION : 0; + unsigned char flags = (leftPolyType == DT_POLYTYPE_OFFMESH_CONNECTION) ? DT_STRAIGHTPATH_OFFMESH_CONNECTION : 0; dtPolyRef ref = leftPolyRef; if (!vequal(&straightPath[(straightPathSize-1)*3], portalApex)) @@ -1375,7 +1387,7 @@ int dtNavMesh::findStraightPath(const float* startPos, const float* endPos, { vcopy(portalLeft, left); leftPolyRef = (i+1 < pathSize) ? path[i+1] : 0; - leftPolyFlags = toFlags; + leftPolyType = toType; leftIndex = i; } else @@ -1386,7 +1398,7 @@ int dtNavMesh::findStraightPath(const float* startPos, const float* endPos, { vcopy(portalLeft, left); leftPolyRef = (i+1 < pathSize) ? path[i+1] : 0; - leftPolyFlags = toFlags; + leftPolyType = toType; leftIndex = i; } else @@ -1394,7 +1406,7 @@ int dtNavMesh::findStraightPath(const float* startPos, const float* endPos, vcopy(portalApex, portalRight); apexIndex = rightIndex; - unsigned char flags = (rightPolyFlags & DT_POLY_OFFMESH_CONNECTION) ? DT_STRAIGHTPATH_OFFMESH_CONNECTION : 0; + unsigned char flags = (rightPolyType == DT_POLYTYPE_OFFMESH_CONNECTION) ? DT_STRAIGHTPATH_OFFMESH_CONNECTION : 0; dtPolyRef ref = rightPolyRef; if (!vequal(&straightPath[(straightPathSize-1)*3], portalApex)) @@ -1474,13 +1486,13 @@ int dtNavMesh::moveAlongPathCorridor(const float* startPos, const float* endPos, const dtPoly* poly = &header->polys[ip]; // In case of Off-Mesh link, just snap to the end location and advance over it. - if (poly->flags & DT_POLY_OFFMESH_CONNECTION) + if (poly->type == DT_POLYTYPE_OFFMESH_CONNECTION) { if (n+1 < pathSize) { float left[3], right[3]; - unsigned short fromFlags, toFlags; - if (!getPortalPoints(path[n], path[n+1], left, right, fromFlags, toFlags)) + unsigned char fromType, toType; + if (!getPortalPoints(path[n], path[n+1], left, right, fromType, toType)) return n; vcopy(resultPos, endPos); } @@ -1523,8 +1535,8 @@ int dtNavMesh::moveAlongPathCorridor(const float* startPos, const float* endPos, if (n+1 >= pathSize) return n; float left[3], right[3]; - unsigned short fromFlags, toFlags; - if (!getPortalPoints(path[n], path[n+1], left, right, fromFlags, toFlags)) + unsigned char fromType, toType; + if (!getPortalPoints(path[n], path[n+1], left, right, fromType, toType)) return n; // If the clamped point is close to the next portal edge, advance to next poly. float t; @@ -1540,7 +1552,7 @@ int dtNavMesh::moveAlongPathCorridor(const float* startPos, const float* endPos, // Returns portal points between two polygons. bool dtNavMesh::getPortalPoints(dtPolyRef from, dtPolyRef to, float* left, float* right, - unsigned short& fromFlags, unsigned short& toFlags) const + unsigned char& fromType, unsigned char& toType) const { unsigned int salt, it, ip; decodePolyId(from, salt, it, ip); @@ -1549,7 +1561,7 @@ bool dtNavMesh::getPortalPoints(dtPolyRef from, dtPolyRef to, float* left, float if (ip >= (unsigned int)m_tiles[it].header->polyCount) return false; const dtMeshHeader* fromHeader = m_tiles[it].header; const dtPoly* fromPoly = &fromHeader->polys[ip]; - fromFlags = fromPoly->flags; + fromType = fromPoly->type; for (unsigned int i = fromPoly->firstLink; i != DT_NULL_LINK; i = fromHeader->links[i].next) { @@ -1563,9 +1575,9 @@ bool dtNavMesh::getPortalPoints(dtPolyRef from, dtPolyRef to, float* left, float if (ip >= (unsigned int)m_tiles[it].header->polyCount) return false; const dtMeshHeader* toHeader = m_tiles[it].header; const dtPoly* toPoly = &toHeader->polys[ip]; - toFlags = toPoly->flags; + toType = toPoly->type; - if (fromPoly->flags & DT_POLY_OFFMESH_CONNECTION) + if (fromPoly->type == DT_POLYTYPE_OFFMESH_CONNECTION) { // Find link that points to first vertex. for (unsigned int i = fromPoly->firstLink; i != DT_NULL_LINK; i = fromHeader->links[i].next) @@ -1581,7 +1593,7 @@ bool dtNavMesh::getPortalPoints(dtPolyRef from, dtPolyRef to, float* left, float return false; } - if (toPoly->flags & DT_POLY_OFFMESH_CONNECTION) + if (toPoly->type == DT_POLYTYPE_OFFMESH_CONNECTION) { for (unsigned int i = toPoly->firstLink; i != DT_NULL_LINK; i = toHeader->links[i].next) { @@ -1638,8 +1650,8 @@ bool dtNavMesh::getPortalPoints(dtPolyRef from, dtPolyRef to, float* left, float bool dtNavMesh::getEdgeMidPoint(dtPolyRef from, dtPolyRef to, float* mid) const { float left[3], right[3]; - unsigned short fromFlags, toFlags; - if (!getPortalPoints(from, to, left,right, fromFlags, toFlags)) return false; + unsigned char fromType, toType; + if (!getPortalPoints(from, to, left,right, fromType, toType)) return false; mid[0] = (left[0]+right[0])*0.5f; mid[1] = (left[1]+right[1])*0.5f; mid[2] = (left[2]+right[2])*0.5f; @@ -1658,6 +1670,18 @@ unsigned short dtNavMesh::getPolyFlags(dtPolyRef ref) return poly->flags; } +unsigned char dtNavMesh::getPolyType(dtPolyRef ref) +{ + unsigned int salt, it, ip; + decodePolyId(ref, salt, it, ip); + if (it >= (unsigned int)m_maxTiles) return 0; + if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return 0; + if (ip >= (unsigned int)m_tiles[it].header->polyCount) return 0; + const dtMeshHeader* header = m_tiles[it].header; + const dtPoly* poly = &header->polys[ip]; + return poly->type; +} + int dtNavMesh::raycast(dtPolyRef centerRef, const float* startPos, const float* endPos, dtQueryFilter* filter, float& t, float* hitNormal, dtPolyRef* path, const int pathSize) { diff --git a/Detour/Source/DetourNavMeshBuilder.cpp b/Detour/Source/DetourNavMeshBuilder.cpp index 257c493..f591652 100644 --- a/Detour/Source/DetourNavMeshBuilder.cpp +++ b/Detour/Source/DetourNavMeshBuilder.cpp @@ -257,8 +257,8 @@ bool dtCreateNavMeshData(dtNavMeshCreateParams* params, unsigned char** outData, // Classify off-mesh connection points. We store only the connections // whose start point is inside the tile. - unsigned char* offMeshConFlags = new unsigned char [params->offMeshConCount*2]; - if (!offMeshConFlags) + unsigned char* offMeshConClass = new unsigned char [params->offMeshConCount*2]; + if (!offMeshConClass) return false; int storedOffMeshConCount = 0; @@ -266,16 +266,16 @@ bool dtCreateNavMeshData(dtNavMeshCreateParams* params, unsigned char** outData, for (int i = 0; i < params->offMeshConCount; ++i) { - offMeshConFlags[i*2+0] = classifyOffMeshPoint(¶ms->offMeshConVerts[(i*2+0)*3], params->bmin, params->bmax); - offMeshConFlags[i*2+1] = classifyOffMeshPoint(¶ms->offMeshConVerts[(i*2+1)*3], params->bmin, params->bmax); + offMeshConClass[i*2+0] = classifyOffMeshPoint(¶ms->offMeshConVerts[(i*2+0)*3], params->bmin, params->bmax); + offMeshConClass[i*2+1] = classifyOffMeshPoint(¶ms->offMeshConVerts[(i*2+1)*3], params->bmin, params->bmax); // Cound how many links should be allocated for off-mesh connections. - if (offMeshConFlags[i*2+0] == 0xff) + if (offMeshConClass[i*2+0] == 0xff) offMeshConLinkCount++; - if (offMeshConFlags[i*2+1] == 0xff) + if (offMeshConClass[i*2+1] == 0xff) offMeshConLinkCount++; - if (offMeshConFlags[i*2+0] == 0xff) + if (offMeshConClass[i*2+0] == 0xff) storedOffMeshConCount++; } @@ -400,7 +400,7 @@ bool dtCreateNavMeshData(dtNavMeshCreateParams* params, unsigned char** outData, for (int i = 0; i < params->offMeshConCount; ++i) { // Only store connections which start from this tile. - if (offMeshConFlags[i*2+0] == 0xff) + if (offMeshConClass[i*2+0] == 0xff) { const float* linkv = ¶ms->offMeshConVerts[i*2*3]; float* v = &navVerts[(offMeshVertsBase + n*2)*3]; @@ -417,7 +417,9 @@ bool dtCreateNavMeshData(dtNavMeshCreateParams* params, unsigned char** outData, { dtPoly* p = &navPolys[i]; p->vertCount = 0; - p->flags = DT_POLY_GROUND; + p->flags = params->polyFlags[i]; + p->area = params->polyAreas[i]; + p->type = DT_POLYTYPE_GROUND; for (int j = 0; j < nvp; ++j) { if (src[j] == MESH_NULL_IDX) break; @@ -432,13 +434,15 @@ bool dtCreateNavMeshData(dtNavMeshCreateParams* params, unsigned char** outData, for (int i = 0; i < params->offMeshConCount; ++i) { // Only store connections which start from this tile. - if (offMeshConFlags[i*2+0] == 0xff) + if (offMeshConClass[i*2+0] == 0xff) { dtPoly* p = &navPolys[offMeshPolyBase+n]; p->vertCount = 2; p->verts[0] = (unsigned short)(offMeshVertsBase + n*2+0); p->verts[1] = (unsigned short)(offMeshVertsBase + n*2+1); - p->flags = DT_POLY_OFFMESH_CONNECTION; // Off-mesh link poly. + p->flags = params->offMeshConFlags[i]; + p->area = params->offMeshConAreas[i]; + p->type = DT_POLYTYPE_OFFMESH_CONNECTION; n++; } } @@ -503,7 +507,7 @@ bool dtCreateNavMeshData(dtNavMeshCreateParams* params, unsigned char** outData, for (int i = 0; i < params->offMeshConCount; ++i) { // Only store connections which start from this tile. - if (offMeshConFlags[i*2+0] == 0xff) + if (offMeshConClass[i*2+0] == 0xff) { dtOffMeshConnection* con = &offMeshCons[n]; con->poly = offMeshPolyBase + n; @@ -513,12 +517,12 @@ bool dtCreateNavMeshData(dtNavMeshCreateParams* params, unsigned char** outData, vcopy(&con->pos[3], &endPts[3]); con->rad = params->offMeshConRad[i]; con->flags = params->offMeshConDir[i] ? DT_OFFMESH_CON_BIDIR : 0; - con->side = offMeshConFlags[i*2+1]; + con->side = offMeshConClass[i*2+1]; n++; } } - delete [] offMeshConFlags; + delete [] offMeshConClass; *outData = data; *outDataSize = dataSize; diff --git a/Recast/Include/Recast.h b/Recast/Include/Recast.h index ca1a620..a68138a 100644 --- a/Recast/Include/Recast.h +++ b/Recast/Include/Recast.h @@ -159,13 +159,14 @@ struct rcContourSet // z = bmin[2] + verts[i*3+2]*cs; struct rcPolyMesh { - inline rcPolyMesh() : verts(0), polys(0), regs(0), areas(0), nverts(0), npolys(0), nvp(3) {} + inline rcPolyMesh() : verts(0), polys(0), regs(0), flags(0), areas(0), nverts(0), npolys(0), nvp(3) {} - inline ~rcPolyMesh() { delete [] verts; delete [] polys; delete [] regs; delete [] areas; } + inline ~rcPolyMesh() { delete [] verts; delete [] polys; delete [] regs; delete [] flags; delete [] areas; } unsigned short* verts; // Vertices of the mesh, 3 elements per vertex. unsigned short* polys; // Polygons of the mesh, nvp*2 elements per polygon. unsigned short* regs; // Region ID of the polygons. + unsigned short* flags; // Per polygon flags. unsigned char* areas; // Area ID of polygons. int nverts; // Number of vertices. int npolys; // Number of polygons. @@ -508,11 +509,31 @@ bool rcBuildCompactHeightfield(const int walkableHeight, const int walkableClimb rcHeightfield& hf, rcCompactHeightfield& chf); +// Erodes specified area id and replaces the are with null. +// Params: +// areaId - (in) area to erode. +// radius - (in) radius of erosion (max 255). +// chf - (in/out) compact heightfield to erode. bool rcErodeArea(unsigned char areaId, int radius, rcCompactHeightfield& chf); -bool rcMarkBoxArea(const float* bmin, const float* bmax, unsigned char areaId, +// Marks the area of the convex polygon into the area type of the compact heighfield. +// Params: +// bmin/bmax - (in) bounds of the axis aligned box. +// areaId - (in) area ID to mark. +// chf - (in/out) compact heightfield to mark. +void rcMarkBoxArea(const float* bmin, const float* bmax, unsigned char areaId, rcCompactHeightfield& chf); +// Marks the area of the convex polygon into the area type of the compact heighfield. +// Params: +// verts - (in) vertices of the convex polygon. +// nverts - (in) number of vertices in the polygon. +// hmin/hmax - (in) min and max height of the polygon. +// areaId - (in) area ID to mark. +// chf - (in/out) compact heightfield to mark. +void rcMarkConvexPolyArea(const float* verts, const int nverts, + const float hmin, const float hmax, unsigned char areaId, + rcCompactHeightfield& chf); // Builds distance field and stores it into the combat heightfield. diff --git a/Recast/Source/RecastArea.cpp b/Recast/Source/RecastArea.cpp index d9fb0f8..cb5f2a8 100644 --- a/Recast/Source/RecastArea.cpp +++ b/Recast/Source/RecastArea.cpp @@ -207,30 +207,35 @@ bool rcErodeArea(unsigned char areaId, int radius, rcCompactHeightfield& chf) return true; } -bool rcMarkBoxArea(const float* bmin, const float* bmax, unsigned char areaId, +void rcMarkBoxArea(const float* bmin, const float* bmax, unsigned char areaId, rcCompactHeightfield& chf) { - int minx = (int)floorf((bmin[0]-chf.bmin[0])/chf.cs); - int miny = (int)floorf((bmin[1]-chf.bmin[1])/chf.ch); - int minz = (int)floorf((bmin[2]-chf.bmin[2])/chf.cs); - int maxx = (int)ceilf((bmax[0]-chf.bmin[0])/chf.cs); - int maxy = (int)ceilf((bmax[1]-chf.bmin[1])/chf.ch); - int maxz = (int)ceilf((bmax[2]-chf.bmin[2])/chf.cs); + int minx = (int)((bmin[0]-chf.bmin[0])/chf.cs); + int miny = (int)((bmin[1]-chf.bmin[1])/chf.ch); + int minz = (int)((bmin[2]-chf.bmin[2])/chf.cs); + int maxx = (int)((bmax[0]-chf.bmin[0])/chf.cs); + int maxy = (int)((bmax[1]-chf.bmin[1])/chf.ch); + int maxz = (int)((bmax[2]-chf.bmin[2])/chf.cs); - minx = rcClamp(minx, 0, chf.width); - minz = rcClamp(minz, 0, chf.height); - maxx = rcClamp(maxx, 0, chf.width); - maxz = rcClamp(maxz, 0, chf.height); + if (maxx < 0) return; + if (minx >= chf.width) return; + if (maxz < 0) return; + if (minz >= chf.height) return; + + if (minx < 0) minx = 0; + if (maxx >= chf.width) maxx = chf.width-1; + if (minz < 0) minz = 0; + if (maxz >= chf.height) maxz = chf.height-1; - for (int z = minz; z < maxz; ++z) + for (int z = minz; z <= maxz; ++z) { - for (int x = minx; x < maxx; ++x) + for (int x = minx; x <= maxx; ++x) { const rcCompactCell& c = chf.cells[x+z*chf.width]; for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i) { rcCompactSpan& s = chf.spans[i]; - if ((int)s.y >= miny && (int)s.y < maxy) + if ((int)s.y >= miny && (int)s.y <= maxy) { if (areaId < chf.areas[i]) chf.areas[i] = areaId; @@ -238,5 +243,84 @@ bool rcMarkBoxArea(const float* bmin, const float* bmax, unsigned char areaId, } } } - return true; } + + +static int pointInPoly(int nvert, const float* verts, const float* p) +{ + int i, j, c = 0; + for (i = 0, j = nvert-1; i < nvert; j = i++) + { + const float* vi = &verts[i*3]; + const float* vj = &verts[j*3]; + if (((vi[2] > p[2]) != (vj[2] > p[2])) && + (p[0] < (vj[0]-vi[0]) * (p[2]-vi[2]) / (vj[2]-vi[2]) + vi[0]) ) + c = !c; + } + return c; +} + +void rcMarkConvexPolyArea(const float* verts, const int nverts, + const float hmin, const float hmax, unsigned char areaId, + rcCompactHeightfield& chf) +{ + float bmin[3], bmax[3]; + vcopy(bmin, verts); + vcopy(bmax, verts); + for (int i = 1; i < nverts; ++i) + { + vmin(bmin, &verts[i*3]); + vmax(bmax, &verts[i*3]); + } + bmin[1] = hmin; + bmax[1] = hmax; + + int minx = (int)((bmin[0]-chf.bmin[0])/chf.cs); + int miny = (int)((bmin[1]-chf.bmin[1])/chf.ch); + int minz = (int)((bmin[2]-chf.bmin[2])/chf.cs); + int maxx = (int)((bmax[0]-chf.bmin[0])/chf.cs); + int maxy = (int)((bmax[1]-chf.bmin[1])/chf.ch); + int maxz = (int)((bmax[2]-chf.bmin[2])/chf.cs); + + if (maxx < 0) return; + if (minx >= chf.width) return; + if (maxz < 0) return; + if (minz >= chf.height) return; + + if (minx < 0) minx = 0; + if (maxx >= chf.width) maxx = chf.width-1; + if (minz < 0) minz = 0; + if (maxz >= chf.height) maxz = chf.height-1; + + + // TODO: Optimize. + for (int z = minz; z <= maxz; ++z) + { + for (int x = minx; x <= maxx; ++x) + { + const rcCompactCell& c = chf.cells[x+z*chf.width]; + for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i) + { + rcCompactSpan& s = chf.spans[i]; + if ((int)s.y >= miny && (int)s.y <= maxy) + { + if (areaId < chf.areas[i]) + { + float p[3]; + p[0] = chf.bmin[0] + (x+0.5f)*chf.cs; + p[1] = 0; + p[2] = chf.bmin[2] + (z+0.5f)*chf.cs; + + if (pointInPoly(nverts, verts, p)) + { + chf.areas[i] = areaId; + } + } + } + } + } + } + + +} + diff --git a/Recast/Source/RecastMesh.cpp b/Recast/Source/RecastMesh.cpp index 38b53e1..124e9b4 100644 --- a/Recast/Source/RecastMesh.cpp +++ b/Recast/Source/RecastMesh.cpp @@ -1066,6 +1066,15 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Adjacency failed."); return false; } + + // Just allocate the mesh flags array. The user is resposible to fill it. + mesh.flags = new unsigned short[mesh.npolys]; + if (!mesh.flags) + { + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'mesh.flags' (%d).", mesh.npolys); + return false; + } rcTimeVal endTime = rcGetPerformanceTimer(); @@ -1138,6 +1147,15 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) return false; } memset(mesh.areas, 0, sizeof(unsigned char)*maxPolys); + + mesh.flags = new unsigned short[maxPolys]; + if (!mesh.flags) + { + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "rcMergePolyMeshes: Out of memory 'mesh.flags' (%d).", maxPolys); + return false; + } + memset(mesh.flags, 0, sizeof(unsigned short)*maxPolys); rcScopedDelete nextVert = new int[maxVerts]; if (!nextVert) @@ -1187,6 +1205,7 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) unsigned short* src = &pmesh->polys[j*2*mesh.nvp]; mesh.regs[mesh.npolys] = pmesh->regs[j]; mesh.areas[mesh.npolys] = pmesh->areas[j]; + mesh.flags[mesh.npolys] = pmesh->flags[j]; mesh.npolys++; for (int k = 0; k < mesh.nvp; ++k) { diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser index b2ff7d0..5ca1452 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 = ( @@ -18,6 +18,7 @@ breakpoints = ( 6B84BDF5110DF38D007D997B /* DetourNavMesh.cpp:251 */, 6B84BE1D110DF6C6007D997B /* Sample_TileMesh.cpp:478 */, + 6B324BE6111C511800EBD2FD /* BoxVolumeTool.cpp:27 */, ); codeSenseManager = 6B8632AA0F78115100E2684A /* Code sense */; executables = ( @@ -178,6 +179,406 @@ 6B324AE7111C07AB00EBD2FD /* PBXTextBookmark */ = 6B324AE7111C07AB00EBD2FD /* PBXTextBookmark */; 6B324AE8111C07AB00EBD2FD /* PBXTextBookmark */ = 6B324AE8111C07AB00EBD2FD /* PBXTextBookmark */; 6B324AE9111C07AB00EBD2FD /* PBXTextBookmark */ = 6B324AE9111C07AB00EBD2FD /* PBXTextBookmark */; + 6B324AEA111C0D9700EBD2FD /* PBXTextBookmark */ = 6B324AEA111C0D9700EBD2FD /* PBXTextBookmark */; + 6B324AEB111C0D9700EBD2FD /* PBXTextBookmark */ = 6B324AEB111C0D9700EBD2FD /* PBXTextBookmark */; + 6B324AEC111C0D9700EBD2FD /* PBXTextBookmark */ = 6B324AEC111C0D9700EBD2FD /* PBXTextBookmark */; + 6B324AED111C0D9700EBD2FD /* PBXTextBookmark */ = 6B324AED111C0D9700EBD2FD /* PBXTextBookmark */; + 6B324AEE111C0D9700EBD2FD /* PBXTextBookmark */ = 6B324AEE111C0D9700EBD2FD /* PBXTextBookmark */; + 6B324AEF111C0D9700EBD2FD /* PBXTextBookmark */ = 6B324AEF111C0D9700EBD2FD /* PBXTextBookmark */; + 6B324AF0111C0D9700EBD2FD /* PBXTextBookmark */ = 6B324AF0111C0D9700EBD2FD /* PBXTextBookmark */; + 6B324AF1111C0D9700EBD2FD /* PBXTextBookmark */ = 6B324AF1111C0D9700EBD2FD /* PBXTextBookmark */; + 6B324AF2111C0E3B00EBD2FD /* PBXTextBookmark */ = 6B324AF2111C0E3B00EBD2FD /* PBXTextBookmark */; + 6B324AF3111C0E3B00EBD2FD /* PBXTextBookmark */ = 6B324AF3111C0E3B00EBD2FD /* PBXTextBookmark */; + 6B324AF4111C0E3B00EBD2FD /* PBXTextBookmark */ = 6B324AF4111C0E3B00EBD2FD /* PBXTextBookmark */; + 6B324AF5111C0E3B00EBD2FD /* PBXTextBookmark */ = 6B324AF5111C0E3B00EBD2FD /* PBXTextBookmark */; + 6B324AF6111C0E3B00EBD2FD /* PBXTextBookmark */ = 6B324AF6111C0E3B00EBD2FD /* PBXTextBookmark */; + 6B324AF7111C0E3B00EBD2FD /* PBXTextBookmark */ = 6B324AF7111C0E3B00EBD2FD /* PBXTextBookmark */; + 6B324AF8111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324AF8111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324AF9111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324AF9111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324AFA111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324AFA111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324AFB111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324AFB111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324AFC111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324AFC111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324AFD111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324AFD111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324AFE111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324AFE111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324AFF111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324AFF111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B00111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324B00111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B01111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324B01111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B02111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324B02111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B03111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324B03111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B04111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324B04111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B05111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324B05111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B06111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324B06111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B07111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324B07111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B08111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324B08111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B09111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324B09111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B0A111C0F2700EBD2FD /* PBXTextBookmark */ = 6B324B0A111C0F2700EBD2FD /* PBXTextBookmark */; + 6B324B0C111C103600EBD2FD /* PBXTextBookmark */ = 6B324B0C111C103600EBD2FD /* PBXTextBookmark */; + 6B324B0D111C103600EBD2FD /* PBXTextBookmark */ = 6B324B0D111C103600EBD2FD /* PBXTextBookmark */; + 6B324B0E111C103600EBD2FD /* PBXTextBookmark */ = 6B324B0E111C103600EBD2FD /* PBXTextBookmark */; + 6B324B0F111C103600EBD2FD /* PBXTextBookmark */ = 6B324B0F111C103600EBD2FD /* PBXTextBookmark */; + 6B324B10111C103600EBD2FD /* PBXTextBookmark */ = 6B324B10111C103600EBD2FD /* PBXTextBookmark */; + 6B324B11111C103600EBD2FD /* PBXTextBookmark */ = 6B324B11111C103600EBD2FD /* PBXTextBookmark */; + 6B324B12111C103600EBD2FD /* PBXTextBookmark */ = 6B324B12111C103600EBD2FD /* PBXTextBookmark */; + 6B324B13111C103600EBD2FD /* PBXTextBookmark */ = 6B324B13111C103600EBD2FD /* PBXTextBookmark */; + 6B324B14111C103600EBD2FD /* PBXTextBookmark */ = 6B324B14111C103600EBD2FD /* PBXTextBookmark */; + 6B324B15111C103600EBD2FD /* PBXTextBookmark */ = 6B324B15111C103600EBD2FD /* PBXTextBookmark */; + 6B324B16111C103600EBD2FD /* PBXTextBookmark */ = 6B324B16111C103600EBD2FD /* PBXTextBookmark */; + 6B324B17111C103600EBD2FD /* PBXTextBookmark */ = 6B324B17111C103600EBD2FD /* PBXTextBookmark */; + 6B324B18111C103600EBD2FD /* PBXTextBookmark */ = 6B324B18111C103600EBD2FD /* PBXTextBookmark */; + 6B324B19111C103600EBD2FD /* PBXTextBookmark */ = 6B324B19111C103600EBD2FD /* PBXTextBookmark */; + 6B324B1E111C10C700EBD2FD /* PBXTextBookmark */ = 6B324B1E111C10C700EBD2FD /* PBXTextBookmark */; + 6B324B1F111C10C700EBD2FD /* PBXTextBookmark */ = 6B324B1F111C10C700EBD2FD /* PBXTextBookmark */; + 6B324B20111C10C700EBD2FD /* PBXTextBookmark */ = 6B324B20111C10C700EBD2FD /* PBXTextBookmark */; + 6B324B21111C10C700EBD2FD /* PBXTextBookmark */ = 6B324B21111C10C700EBD2FD /* PBXTextBookmark */; + 6B324B22111C10C700EBD2FD /* PBXTextBookmark */ = 6B324B22111C10C700EBD2FD /* PBXTextBookmark */; + 6B324B23111C10C700EBD2FD /* PBXTextBookmark */ = 6B324B23111C10C700EBD2FD /* PBXTextBookmark */; + 6B324B24111C10C700EBD2FD /* PBXTextBookmark */ = 6B324B24111C10C700EBD2FD /* PBXTextBookmark */; + 6B324B29111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B29111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B2A111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B2A111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B2B111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B2B111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B2C111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B2C111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B2D111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B2D111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B2E111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B2E111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B2F111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B2F111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B30111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B30111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B31111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B31111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B32111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B32111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B33111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B33111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B34111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B34111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B35111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B35111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B36111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B36111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B37111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B37111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B38111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B38111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B39111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B39111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B3A111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B3A111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B3B111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B3B111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B3C111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B3C111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B3D111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B3D111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B3E111C153D00EBD2FD /* PBXTextBookmark */ = 6B324B3E111C153D00EBD2FD /* PBXTextBookmark */; + 6B324B47111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B47111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B48111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B48111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B49111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B49111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B4A111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B4A111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B4B111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B4B111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B4C111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B4C111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B4D111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B4D111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B4E111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B4E111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B4F111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B4F111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B50111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B50111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B51111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B51111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B52111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B52111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B53111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B53111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B54111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B54111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B55111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B55111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B56111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B56111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B57111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B57111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B58111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B58111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B59111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B59111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B5A111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B5A111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B5B111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B5B111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B5C111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B5C111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B5D111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B5D111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B5E111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B5E111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B5F111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B5F111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B60111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B60111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B61111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B61111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B62111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B62111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B63111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B63111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B64111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B64111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B65111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B65111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B66111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B66111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B67111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B67111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B68111C1AC800EBD2FD /* PBXTextBookmark */ = 6B324B68111C1AC800EBD2FD /* PBXTextBookmark */; + 6B324B6A111C1B7500EBD2FD /* PBXTextBookmark */ = 6B324B6A111C1B7500EBD2FD /* PBXTextBookmark */; + 6B324B6B111C1B7500EBD2FD /* PBXTextBookmark */ = 6B324B6B111C1B7500EBD2FD /* PBXTextBookmark */; + 6B324B6C111C1B7500EBD2FD /* PBXTextBookmark */ = 6B324B6C111C1B7500EBD2FD /* PBXTextBookmark */; + 6B324B6D111C1B7500EBD2FD /* PBXTextBookmark */ = 6B324B6D111C1B7500EBD2FD /* PBXTextBookmark */; + 6B324B70111C1C4F00EBD2FD /* PBXTextBookmark */ = 6B324B70111C1C4F00EBD2FD /* PBXTextBookmark */; + 6B324B71111C1C4F00EBD2FD /* PBXTextBookmark */ = 6B324B71111C1C4F00EBD2FD /* PBXTextBookmark */; + 6B324B72111C1C4F00EBD2FD /* PBXTextBookmark */ = 6B324B72111C1C4F00EBD2FD /* PBXTextBookmark */; + 6B324B73111C1C4F00EBD2FD /* PBXTextBookmark */ = 6B324B73111C1C4F00EBD2FD /* PBXTextBookmark */; + 6B324B74111C1C4F00EBD2FD /* PBXTextBookmark */ = 6B324B74111C1C4F00EBD2FD /* PBXTextBookmark */; + 6B324B75111C1C4F00EBD2FD /* PBXTextBookmark */ = 6B324B75111C1C4F00EBD2FD /* PBXTextBookmark */; + 6B324B76111C1C4F00EBD2FD /* PBXTextBookmark */ = 6B324B76111C1C4F00EBD2FD /* PBXTextBookmark */; + 6B324B77111C1C4F00EBD2FD /* PBXTextBookmark */ = 6B324B77111C1C4F00EBD2FD /* PBXTextBookmark */; + 6B324B79111C1C8200EBD2FD /* PBXTextBookmark */ = 6B324B79111C1C8200EBD2FD /* PBXTextBookmark */; + 6B324B7A111C1C8200EBD2FD /* PBXTextBookmark */ = 6B324B7A111C1C8200EBD2FD /* PBXTextBookmark */; + 6B324B7B111C1C8200EBD2FD /* PBXTextBookmark */ = 6B324B7B111C1C8200EBD2FD /* PBXTextBookmark */; + 6B324B7C111C1C8200EBD2FD /* PBXTextBookmark */ = 6B324B7C111C1C8200EBD2FD /* PBXTextBookmark */; + 6B324B7D111C1C8200EBD2FD /* PBXTextBookmark */ = 6B324B7D111C1C8200EBD2FD /* PBXTextBookmark */; + 6B324B7E111C1C8200EBD2FD /* PBXTextBookmark */ = 6B324B7E111C1C8200EBD2FD /* PBXTextBookmark */; + 6B324B80111C1CF000EBD2FD /* PBXTextBookmark */ = 6B324B80111C1CF000EBD2FD /* PBXTextBookmark */; + 6B324B81111C1CF000EBD2FD /* PBXTextBookmark */ = 6B324B81111C1CF000EBD2FD /* PBXTextBookmark */; + 6B324B82111C1CF000EBD2FD /* PBXTextBookmark */ = 6B324B82111C1CF000EBD2FD /* PBXTextBookmark */; + 6B324B83111C1CF000EBD2FD /* PBXTextBookmark */ = 6B324B83111C1CF000EBD2FD /* PBXTextBookmark */; + 6B324B85111C1D9700EBD2FD /* PBXTextBookmark */ = 6B324B85111C1D9700EBD2FD /* PBXTextBookmark */; + 6B324B86111C1D9700EBD2FD /* PBXTextBookmark */ = 6B324B86111C1D9700EBD2FD /* PBXTextBookmark */; + 6B324B87111C1D9700EBD2FD /* PBXTextBookmark */ = 6B324B87111C1D9700EBD2FD /* PBXTextBookmark */; + 6B324B88111C1D9700EBD2FD /* PBXTextBookmark */ = 6B324B88111C1D9700EBD2FD /* PBXTextBookmark */; + 6B324B89111C1D9700EBD2FD /* PBXTextBookmark */ = 6B324B89111C1D9700EBD2FD /* PBXTextBookmark */; + 6B324B8A111C1DE600EBD2FD /* PBXTextBookmark */ = 6B324B8A111C1DE600EBD2FD /* PBXTextBookmark */; + 6B324B8B111C1DE600EBD2FD /* PBXTextBookmark */ = 6B324B8B111C1DE600EBD2FD /* PBXTextBookmark */; + 6B324B8C111C1DE600EBD2FD /* PBXTextBookmark */ = 6B324B8C111C1DE600EBD2FD /* PBXTextBookmark */; + 6B324B8D111C1DE600EBD2FD /* PBXTextBookmark */ = 6B324B8D111C1DE600EBD2FD /* PBXTextBookmark */; + 6B324B8E111C24DD00EBD2FD /* PBXTextBookmark */ = 6B324B8E111C24DD00EBD2FD /* PBXTextBookmark */; + 6B324B8F111C24DD00EBD2FD /* PBXTextBookmark */ = 6B324B8F111C24DD00EBD2FD /* PBXTextBookmark */; + 6B324B90111C24DD00EBD2FD /* PBXTextBookmark */ = 6B324B90111C24DD00EBD2FD /* PBXTextBookmark */; + 6B324B91111C24DD00EBD2FD /* PBXTextBookmark */ = 6B324B91111C24DD00EBD2FD /* PBXTextBookmark */; + 6B324B92111C24DD00EBD2FD /* PBXTextBookmark */ = 6B324B92111C24DD00EBD2FD /* PBXTextBookmark */; + 6B324B93111C24DD00EBD2FD /* PBXTextBookmark */ = 6B324B93111C24DD00EBD2FD /* PBXTextBookmark */; + 6B324B94111C24DD00EBD2FD /* PBXTextBookmark */ = 6B324B94111C24DD00EBD2FD /* PBXTextBookmark */; + 6B324B95111C259E00EBD2FD /* PBXTextBookmark */ = 6B324B95111C259E00EBD2FD /* PBXTextBookmark */; + 6B324B96111C259E00EBD2FD /* PBXTextBookmark */ = 6B324B96111C259E00EBD2FD /* PBXTextBookmark */; + 6B324B97111C259E00EBD2FD /* PBXTextBookmark */ = 6B324B97111C259E00EBD2FD /* PBXTextBookmark */; + 6B324B98111C259E00EBD2FD /* PBXTextBookmark */ = 6B324B98111C259E00EBD2FD /* PBXTextBookmark */; + 6B324B99111C259E00EBD2FD /* PBXTextBookmark */ = 6B324B99111C259E00EBD2FD /* PBXTextBookmark */; + 6B324B9C111C286B00EBD2FD /* PBXTextBookmark */ = 6B324B9C111C286B00EBD2FD /* PBXTextBookmark */; + 6B324B9F111C446100EBD2FD /* PBXTextBookmark */ = 6B324B9F111C446100EBD2FD /* PBXTextBookmark */; + 6B324BA0111C446100EBD2FD /* PBXTextBookmark */ = 6B324BA0111C446100EBD2FD /* PBXTextBookmark */; + 6B324BA1111C446100EBD2FD /* PBXTextBookmark */ = 6B324BA1111C446100EBD2FD /* PBXTextBookmark */; + 6B324BA2111C446100EBD2FD /* PBXTextBookmark */ = 6B324BA2111C446100EBD2FD /* PBXTextBookmark */; + 6B324BA3111C446100EBD2FD /* PBXTextBookmark */ = 6B324BA3111C446100EBD2FD /* PBXTextBookmark */; + 6B324BA4111C446100EBD2FD /* PBXTextBookmark */ = 6B324BA4111C446100EBD2FD /* PBXTextBookmark */; + 6B324BA5111C446100EBD2FD /* PBXTextBookmark */ = 6B324BA5111C446100EBD2FD /* PBXTextBookmark */; + 6B324BA6111C446100EBD2FD /* PBXTextBookmark */ = 6B324BA6111C446100EBD2FD /* PBXTextBookmark */; + 6B324BA7111C446100EBD2FD /* PBXTextBookmark */ = 6B324BA7111C446100EBD2FD /* PBXTextBookmark */; + 6B324BA8111C446100EBD2FD /* PBXTextBookmark */ = 6B324BA8111C446100EBD2FD /* PBXTextBookmark */; + 6B324BA9111C446100EBD2FD /* PBXTextBookmark */ = 6B324BA9111C446100EBD2FD /* PBXTextBookmark */; + 6B324BAA111C446100EBD2FD /* PBXTextBookmark */ = 6B324BAA111C446100EBD2FD /* PBXTextBookmark */; + 6B324BAB111C446100EBD2FD /* PBXTextBookmark */ = 6B324BAB111C446100EBD2FD /* PBXTextBookmark */; + 6B324BAC111C446100EBD2FD /* PBXTextBookmark */ = 6B324BAC111C446100EBD2FD /* PBXTextBookmark */; + 6B324BAD111C446100EBD2FD /* PBXTextBookmark */ = 6B324BAD111C446100EBD2FD /* PBXTextBookmark */; + 6B324BAE111C446100EBD2FD /* PBXTextBookmark */ = 6B324BAE111C446100EBD2FD /* PBXTextBookmark */; + 6B324BAF111C446100EBD2FD /* PBXTextBookmark */ = 6B324BAF111C446100EBD2FD /* PBXTextBookmark */; + 6B324BB0111C446100EBD2FD /* PBXTextBookmark */ = 6B324BB0111C446100EBD2FD /* PBXTextBookmark */; + 6B324BB1111C446100EBD2FD /* PBXTextBookmark */ = 6B324BB1111C446100EBD2FD /* PBXTextBookmark */; + 6B324BB2111C467A00EBD2FD /* PBXTextBookmark */ = 6B324BB2111C467A00EBD2FD /* PBXTextBookmark */; + 6B324BB3111C46E300EBD2FD /* PBXTextBookmark */ = 6B324BB3111C46E300EBD2FD /* PBXTextBookmark */; + 6B324BB4111C4AC500EBD2FD /* PBXTextBookmark */ = 6B324BB4111C4AC500EBD2FD /* PBXTextBookmark */; + 6B324BB5111C4AC500EBD2FD /* PBXTextBookmark */ = 6B324BB5111C4AC500EBD2FD /* PBXTextBookmark */; + 6B324BB6111C4AF000EBD2FD /* PBXTextBookmark */ = 6B324BB6111C4AF000EBD2FD /* PBXTextBookmark */; + 6B324BB7111C4AFF00EBD2FD /* PBXTextBookmark */ = 6B324BB7111C4AFF00EBD2FD /* PBXTextBookmark */; + 6B324BB8111C4C2B00EBD2FD /* PBXTextBookmark */ = 6B324BB8111C4C2B00EBD2FD /* PBXTextBookmark */; + 6B324BB9111C4C2B00EBD2FD /* PBXTextBookmark */ = 6B324BB9111C4C2B00EBD2FD /* PBXTextBookmark */; + 6B324BBA111C4C2B00EBD2FD /* PBXTextBookmark */ = 6B324BBA111C4C2B00EBD2FD /* PBXTextBookmark */; + 6B324BBB111C4C2B00EBD2FD /* PBXTextBookmark */ = 6B324BBB111C4C2B00EBD2FD /* PBXTextBookmark */; + 6B324BBC111C4C2B00EBD2FD /* PBXTextBookmark */ = 6B324BBC111C4C2B00EBD2FD /* PBXTextBookmark */; + 6B324BBD111C4C2B00EBD2FD /* PBXTextBookmark */ = 6B324BBD111C4C2B00EBD2FD /* PBXTextBookmark */; + 6B324BBE111C4C2B00EBD2FD /* PBXTextBookmark */ = 6B324BBE111C4C2B00EBD2FD /* PBXTextBookmark */; + 6B324BBF111C4C2B00EBD2FD /* PBXTextBookmark */ = 6B324BBF111C4C2B00EBD2FD /* PBXTextBookmark */; + 6B324BC0111C4C2B00EBD2FD /* PBXTextBookmark */ = 6B324BC0111C4C2B00EBD2FD /* PBXTextBookmark */; + 6B324BC1111C4C2B00EBD2FD /* PBXTextBookmark */ = 6B324BC1111C4C2B00EBD2FD /* PBXTextBookmark */; + 6B324BC2111C4C2B00EBD2FD /* PBXTextBookmark */ = 6B324BC2111C4C2B00EBD2FD /* PBXTextBookmark */; + 6B324BC3111C4DE500EBD2FD /* PBXTextBookmark */ = 6B324BC3111C4DE500EBD2FD /* PBXTextBookmark */; + 6B324BC4111C4E4800EBD2FD /* PBXTextBookmark */ = 6B324BC4111C4E4800EBD2FD /* PBXTextBookmark */; + 6B324BCC111C4F7D00EBD2FD /* PBXTextBookmark */ = 6B324BCC111C4F7D00EBD2FD /* PBXTextBookmark */; + 6B324BCD111C4F7D00EBD2FD /* PBXTextBookmark */ = 6B324BCD111C4F7D00EBD2FD /* PBXTextBookmark */; + 6B324BCE111C4F7D00EBD2FD /* PBXTextBookmark */ = 6B324BCE111C4F7D00EBD2FD /* PBXTextBookmark */; + 6B324BCF111C4F7D00EBD2FD /* PBXTextBookmark */ = 6B324BCF111C4F7D00EBD2FD /* PBXTextBookmark */; + 6B324BD0111C4F7D00EBD2FD /* PBXTextBookmark */ = 6B324BD0111C4F7D00EBD2FD /* PBXTextBookmark */; + 6B324BD5111C4F9C00EBD2FD /* PBXTextBookmark */ = 6B324BD5111C4F9C00EBD2FD /* PBXTextBookmark */; + 6B324BD8111C502A00EBD2FD /* PBXTextBookmark */ = 6B324BD8111C502A00EBD2FD /* PBXTextBookmark */; + 6B324BDE111C508B00EBD2FD /* PBXTextBookmark */ = 6B324BDE111C508B00EBD2FD /* PBXTextBookmark */; + 6B324BE1111C50CA00EBD2FD /* PBXTextBookmark */ = 6B324BE1111C50CA00EBD2FD /* PBXTextBookmark */; + 6B324BE3111C510100EBD2FD /* PBXTextBookmark */ = 6B324BE3111C510100EBD2FD /* PBXTextBookmark */; + 6B324BE7111C511900EBD2FD /* PBXTextBookmark */ = 6B324BE7111C511900EBD2FD /* PBXTextBookmark */; + 6B324BE9111C513F00EBD2FD /* PBXTextBookmark */ = 6B324BE9111C513F00EBD2FD /* PBXTextBookmark */; + 6B324BEA111C517500EBD2FD /* PBXTextBookmark */ = 6B324BEA111C517500EBD2FD /* PBXTextBookmark */; + 6B324BED111C528A00EBD2FD /* PBXTextBookmark */ = 6B324BED111C528A00EBD2FD /* PBXTextBookmark */; + 6B324BEE111C53E700EBD2FD /* PBXTextBookmark */ = 6B324BEE111C53E700EBD2FD /* PBXTextBookmark */; + 6B324BEF111C542600EBD2FD /* PBXTextBookmark */ = 6B324BEF111C542600EBD2FD /* PBXTextBookmark */; + 6B324BF0111C542600EBD2FD /* PBXTextBookmark */ = 6B324BF0111C542600EBD2FD /* PBXTextBookmark */; + 6B324BF1111C542600EBD2FD /* PBXTextBookmark */ = 6B324BF1111C542600EBD2FD /* PBXTextBookmark */; + 6B324BF2111C542600EBD2FD /* PBXTextBookmark */ = 6B324BF2111C542600EBD2FD /* PBXTextBookmark */; + 6B324BF3111C542600EBD2FD /* PBXTextBookmark */ = 6B324BF3111C542600EBD2FD /* PBXTextBookmark */; + 6B324BF8111C54DB00EBD2FD /* PBXTextBookmark */ = 6B324BF8111C54DB00EBD2FD /* PBXTextBookmark */; + 6B324BF9111C54DB00EBD2FD /* PBXTextBookmark */ = 6B324BF9111C54DB00EBD2FD /* PBXTextBookmark */; + 6B324BFA111C54DB00EBD2FD /* PBXTextBookmark */ = 6B324BFA111C54DB00EBD2FD /* PBXTextBookmark */; + 6B324BFB111C54DB00EBD2FD /* PBXTextBookmark */ = 6B324BFB111C54DB00EBD2FD /* PBXTextBookmark */; + 6B324BFC111C54DB00EBD2FD /* PBXTextBookmark */ = 6B324BFC111C54DB00EBD2FD /* PBXTextBookmark */; + 6B324BFF111C558800EBD2FD /* PBXTextBookmark */ = 6B324BFF111C558800EBD2FD /* PBXTextBookmark */; + 6B324C02111C568500EBD2FD /* PBXTextBookmark */ = 6B324C02111C568500EBD2FD /* PBXTextBookmark */; + 6B324C03111C568500EBD2FD /* PBXTextBookmark */ = 6B324C03111C568500EBD2FD /* PBXTextBookmark */; + 6B324C04111C568500EBD2FD /* PBXTextBookmark */ = 6B324C04111C568500EBD2FD /* PBXTextBookmark */; + 6B324C05111C568500EBD2FD /* PBXTextBookmark */ = 6B324C05111C568500EBD2FD /* PBXTextBookmark */; + 6B324C06111C56B000EBD2FD /* PBXTextBookmark */ = 6B324C06111C56B000EBD2FD /* PBXTextBookmark */; + 6B324C07111C56B000EBD2FD /* PBXTextBookmark */ = 6B324C07111C56B000EBD2FD /* PBXTextBookmark */; + 6B324C08111C56B000EBD2FD /* PBXTextBookmark */ = 6B324C08111C56B000EBD2FD /* PBXTextBookmark */; + 6B324C09111C56B000EBD2FD /* PBXTextBookmark */ = 6B324C09111C56B000EBD2FD /* PBXTextBookmark */; + 6B324C0A111C56B000EBD2FD /* PBXTextBookmark */ = 6B324C0A111C56B000EBD2FD /* PBXTextBookmark */; + 6B324C0B111C574E00EBD2FD /* PBXTextBookmark */ = 6B324C0B111C574E00EBD2FD /* PBXTextBookmark */; + 6B324C0C111C574E00EBD2FD /* PBXTextBookmark */ = 6B324C0C111C574E00EBD2FD /* PBXTextBookmark */; + 6B324C0D111C574E00EBD2FD /* PBXTextBookmark */ = 6B324C0D111C574E00EBD2FD /* PBXTextBookmark */; + 6B324C0E111C574E00EBD2FD /* PBXTextBookmark */ = 6B324C0E111C574E00EBD2FD /* PBXTextBookmark */; + 6B324C1B111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C1B111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C1C111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C1C111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C1D111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C1D111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C1E111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C1E111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C1F111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C1F111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C20111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C20111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C21111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C21111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C22111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C22111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C23111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C23111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C24111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C24111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C25111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C25111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C26111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C26111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C27111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C27111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C28111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C28111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C29111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C29111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C2A111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C2A111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C2B111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C2B111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C2C111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C2C111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C2D111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C2D111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C2E111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C2E111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C2F111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C2F111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C30111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C30111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C31111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C31111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C32111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C32111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C33111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C33111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C34111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C34111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C35111C5B8D00EBD2FD /* PBXTextBookmark */ = 6B324C35111C5B8D00EBD2FD /* PBXTextBookmark */; + 6B324C37111C5BAF00EBD2FD /* PBXTextBookmark */ = 6B324C37111C5BAF00EBD2FD /* PBXTextBookmark */; + 6B324C3A111C5BCC00EBD2FD /* PBXTextBookmark */ = 6B324C3A111C5BCC00EBD2FD /* PBXTextBookmark */; + 6B324C3B111C5BFB00EBD2FD /* PBXTextBookmark */ = 6B324C3B111C5BFB00EBD2FD /* PBXTextBookmark */; + 6B324C3C111C5BFB00EBD2FD /* PBXTextBookmark */ = 6B324C3C111C5BFB00EBD2FD /* PBXTextBookmark */; + 6B324C3D111C5BFB00EBD2FD /* PBXTextBookmark */ = 6B324C3D111C5BFB00EBD2FD /* PBXTextBookmark */; + 6B324C3E111C5BFB00EBD2FD /* PBXTextBookmark */ = 6B324C3E111C5BFB00EBD2FD /* PBXTextBookmark */; + 6B324C3F111C5BFB00EBD2FD /* PBXTextBookmark */ = 6B324C3F111C5BFB00EBD2FD /* PBXTextBookmark */; + 6B324C40111C5BFB00EBD2FD /* PBXTextBookmark */ = 6B324C40111C5BFB00EBD2FD /* PBXTextBookmark */; + 6B324C43111C5C5A00EBD2FD /* PBXTextBookmark */ = 6B324C43111C5C5A00EBD2FD /* PBXTextBookmark */; + 6B324C44111C5C5A00EBD2FD /* PBXTextBookmark */ = 6B324C44111C5C5A00EBD2FD /* PBXTextBookmark */; + 6B324C45111C5C5A00EBD2FD /* PBXTextBookmark */ = 6B324C45111C5C5A00EBD2FD /* PBXTextBookmark */; + 6B324C46111C5C5A00EBD2FD /* PBXTextBookmark */ = 6B324C46111C5C5A00EBD2FD /* PBXTextBookmark */; + 6B324C47111C5C5A00EBD2FD /* PBXTextBookmark */ = 6B324C47111C5C5A00EBD2FD /* PBXTextBookmark */; + 6B324C48111C5C5A00EBD2FD /* PBXTextBookmark */ = 6B324C48111C5C5A00EBD2FD /* PBXTextBookmark */; + 6B324C49111C5C5A00EBD2FD /* PBXTextBookmark */ = 6B324C49111C5C5A00EBD2FD /* PBXTextBookmark */; + 6B324C4A111C5C5A00EBD2FD /* PBXTextBookmark */ = 6B324C4A111C5C5A00EBD2FD /* PBXTextBookmark */; + 6B324C4C111C5C7100EBD2FD /* PBXTextBookmark */ = 6B324C4C111C5C7100EBD2FD /* PBXTextBookmark */; + 6B324C50111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C50111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C51111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C51111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C52111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C52111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C53111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C53111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C54111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C54111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C55111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C55111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C56111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C56111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C57111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C57111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C58111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C58111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C59111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C59111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C5A111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C5A111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C5B111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C5B111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C5C111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C5C111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C5D111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C5D111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C5E111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C5E111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C5F111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C5F111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C60111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C60111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C61111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C61111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C62111C5D1400EBD2FD /* PBXTextBookmark */ = 6B324C62111C5D1400EBD2FD /* PBXTextBookmark */; + 6B324C6D111C5DDC00EBD2FD /* PBXTextBookmark */ = 6B324C6D111C5DDC00EBD2FD /* PBXTextBookmark */; + 6B324C6E111C5DDC00EBD2FD /* PBXTextBookmark */ = 6B324C6E111C5DDC00EBD2FD /* PBXTextBookmark */; + 6B324C6F111C5DDC00EBD2FD /* PBXTextBookmark */ = 6B324C6F111C5DDC00EBD2FD /* PBXTextBookmark */; + 6B324C70111C5DDC00EBD2FD /* PBXTextBookmark */ = 6B324C70111C5DDC00EBD2FD /* PBXTextBookmark */; + 6B324C71111C5DDC00EBD2FD /* PBXTextBookmark */ = 6B324C71111C5DDC00EBD2FD /* PBXTextBookmark */; + 6B324C72111C5DDC00EBD2FD /* PBXTextBookmark */ = 6B324C72111C5DDC00EBD2FD /* PBXTextBookmark */; + 6B324C75111C5E7C00EBD2FD /* PBXTextBookmark */ = 6B324C75111C5E7C00EBD2FD /* PBXTextBookmark */; + 6B324C76111C5E7C00EBD2FD /* PBXTextBookmark */ = 6B324C76111C5E7C00EBD2FD /* PBXTextBookmark */; + 6B324C77111C5E7C00EBD2FD /* PBXTextBookmark */ = 6B324C77111C5E7C00EBD2FD /* PBXTextBookmark */; + 6B324C78111C5E7C00EBD2FD /* PBXTextBookmark */ = 6B324C78111C5E7C00EBD2FD /* PBXTextBookmark */; + 6B324C79111C5E7C00EBD2FD /* PBXTextBookmark */ = 6B324C79111C5E7C00EBD2FD /* PBXTextBookmark */; + 6B324C7A111C5E7C00EBD2FD /* PBXTextBookmark */ = 6B324C7A111C5E7C00EBD2FD /* PBXTextBookmark */; + 6B324C7B111C5E7C00EBD2FD /* PBXTextBookmark */ = 6B324C7B111C5E7C00EBD2FD /* PBXTextBookmark */; + 6B324C7C111C5E7C00EBD2FD /* PBXTextBookmark */ = 6B324C7C111C5E7C00EBD2FD /* PBXTextBookmark */; + 6B324C7E111C5EF800EBD2FD /* PBXTextBookmark */ = 6B324C7E111C5EF800EBD2FD /* PBXTextBookmark */; + 6B324C7F111C5EF800EBD2FD /* PBXTextBookmark */ = 6B324C7F111C5EF800EBD2FD /* PBXTextBookmark */; + 6B324C80111C5EF800EBD2FD /* PBXTextBookmark */ = 6B324C80111C5EF800EBD2FD /* PBXTextBookmark */; + 6B324C81111C5EF800EBD2FD /* PBXTextBookmark */ = 6B324C81111C5EF800EBD2FD /* PBXTextBookmark */; + 6B324C85111C5F1B00EBD2FD /* PBXTextBookmark */ = 6B324C85111C5F1B00EBD2FD /* PBXTextBookmark */; + 6B324C88111C5F3900EBD2FD /* PBXTextBookmark */ = 6B324C88111C5F3900EBD2FD /* PBXTextBookmark */; + 6B324C8B111C5F9C00EBD2FD /* PBXTextBookmark */ = 6B324C8B111C5F9C00EBD2FD /* PBXTextBookmark */; + 6B324C8E111C5FD500EBD2FD /* PBXTextBookmark */ = 6B324C8E111C5FD500EBD2FD /* PBXTextBookmark */; + 6B324C90111C5FF200EBD2FD /* PBXTextBookmark */ = 6B324C90111C5FF200EBD2FD /* PBXTextBookmark */; + 6B324C92111C604500EBD2FD /* PBXTextBookmark */ = 6B324C92111C604500EBD2FD /* PBXTextBookmark */; + 6B324C93111C604500EBD2FD /* PBXTextBookmark */ = 6B324C93111C604500EBD2FD /* PBXTextBookmark */; + 6B324C94111C604500EBD2FD /* PBXTextBookmark */ = 6B324C94111C604500EBD2FD /* PBXTextBookmark */; + 6B324C95111C604500EBD2FD /* PBXTextBookmark */ = 6B324C95111C604500EBD2FD /* PBXTextBookmark */; + 6B324C97111C606C00EBD2FD /* PBXTextBookmark */ = 6B324C97111C606C00EBD2FD /* PBXTextBookmark */; + 6B324C9E111C6DD400EBD2FD /* PBXTextBookmark */ = 6B324C9E111C6DD400EBD2FD /* PBXTextBookmark */; + 6B324C9F111C6DD400EBD2FD /* PBXTextBookmark */ = 6B324C9F111C6DD400EBD2FD /* PBXTextBookmark */; + 6B324CA0111C6DD400EBD2FD /* PBXTextBookmark */ = 6B324CA0111C6DD400EBD2FD /* PBXTextBookmark */; + 6B324CA1111C6DD400EBD2FD /* PBXTextBookmark */ = 6B324CA1111C6DD400EBD2FD /* PBXTextBookmark */; + 6B324CA2111C6DD400EBD2FD /* PBXTextBookmark */ = 6B324CA2111C6DD400EBD2FD /* PBXTextBookmark */; + 6B324CA3111C6DD400EBD2FD /* PBXTextBookmark */ = 6B324CA3111C6DD400EBD2FD /* PBXTextBookmark */; + 6B324CA4111C6DD400EBD2FD /* PBXTextBookmark */ = 6B324CA4111C6DD400EBD2FD /* PBXTextBookmark */; + 6B324CA5111C6DD400EBD2FD /* PBXTextBookmark */ = 6B324CA5111C6DD400EBD2FD /* PBXTextBookmark */; + 6B324CA6111C6DD400EBD2FD /* PBXTextBookmark */ = 6B324CA6111C6DD400EBD2FD /* PBXTextBookmark */; + 6B324CA9111C6DED00EBD2FD /* PBXTextBookmark */ = 6B324CA9111C6DED00EBD2FD /* PBXTextBookmark */; + 6B324CAC111C6E0100EBD2FD /* PBXTextBookmark */ = 6B324CAC111C6E0100EBD2FD /* PBXTextBookmark */; + 6B324CAD111C6E0100EBD2FD /* PBXTextBookmark */ = 6B324CAD111C6E0100EBD2FD /* PBXTextBookmark */; + 6B324CAE111C6E0100EBD2FD /* PBXTextBookmark */ = 6B324CAE111C6E0100EBD2FD /* PBXTextBookmark */; + 6B324CAF111C6E0100EBD2FD /* PBXTextBookmark */ = 6B324CAF111C6E0100EBD2FD /* PBXTextBookmark */; + 6B324CB1111C6E8100EBD2FD /* PBXTextBookmark */ = 6B324CB1111C6E8100EBD2FD /* PBXTextBookmark */; + 6B324CB5111C6EEA00EBD2FD /* PBXTextBookmark */ = 6B324CB5111C6EEA00EBD2FD /* PBXTextBookmark */; + 6B324CB6111C6EEA00EBD2FD /* PBXTextBookmark */ = 6B324CB6111C6EEA00EBD2FD /* PBXTextBookmark */; + 6B324CB7111C6EEA00EBD2FD /* PBXTextBookmark */ = 6B324CB7111C6EEA00EBD2FD /* PBXTextBookmark */; + 6B324CB8111C6EEA00EBD2FD /* PBXTextBookmark */ = 6B324CB8111C6EEA00EBD2FD /* PBXTextBookmark */; + 6B324CB9111C6EEA00EBD2FD /* PBXTextBookmark */ = 6B324CB9111C6EEA00EBD2FD /* PBXTextBookmark */; + 6B324CBA111C6EEA00EBD2FD /* PBXTextBookmark */ = 6B324CBA111C6EEA00EBD2FD /* PBXTextBookmark */; + 6B324CBB111C6EEA00EBD2FD /* PBXTextBookmark */ = 6B324CBB111C6EEA00EBD2FD /* PBXTextBookmark */; + 6B324CBC111C6F3C00EBD2FD /* PBXTextBookmark */ = 6B324CBC111C6F3C00EBD2FD /* PBXTextBookmark */; + 6B324CBD111C6F3C00EBD2FD /* PBXTextBookmark */ = 6B324CBD111C6F3C00EBD2FD /* PBXTextBookmark */; + 6B324CBE111C6F3C00EBD2FD /* PBXTextBookmark */ = 6B324CBE111C6F3C00EBD2FD /* PBXTextBookmark */; + 6B324CBF111C6F3C00EBD2FD /* PBXTextBookmark */ = 6B324CBF111C6F3C00EBD2FD /* PBXTextBookmark */; + 6B324CC3111C6F6300EBD2FD /* PBXTextBookmark */ = 6B324CC3111C6F6300EBD2FD /* PBXTextBookmark */; + 6B324CC4111C6F6300EBD2FD /* PBXTextBookmark */ = 6B324CC4111C6F6300EBD2FD /* PBXTextBookmark */; + 6B324CC5111C6F6300EBD2FD /* PBXTextBookmark */ = 6B324CC5111C6F6300EBD2FD /* PBXTextBookmark */; + 6B324CC6111C6F6300EBD2FD /* PBXTextBookmark */ = 6B324CC6111C6F6300EBD2FD /* PBXTextBookmark */; + 6B324CC8111C6FB900EBD2FD /* PBXTextBookmark */ = 6B324CC8111C6FB900EBD2FD /* PBXTextBookmark */; + 6B324CCA111C74E200EBD2FD /* PBXTextBookmark */ = 6B324CCA111C74E200EBD2FD /* PBXTextBookmark */; + 6B324CCD111C759F00EBD2FD /* PBXTextBookmark */ = 6B324CCD111C759F00EBD2FD /* PBXTextBookmark */; + 6B324CCE111C759F00EBD2FD /* PBXTextBookmark */ = 6B324CCE111C759F00EBD2FD /* PBXTextBookmark */; + 6B324CCF111C759F00EBD2FD /* PBXTextBookmark */ = 6B324CCF111C759F00EBD2FD /* PBXTextBookmark */; + 6B324CD0111C759F00EBD2FD /* PBXTextBookmark */ = 6B324CD0111C759F00EBD2FD /* PBXTextBookmark */; + 6B324CD1111C759F00EBD2FD /* PBXTextBookmark */ = 6B324CD1111C759F00EBD2FD /* PBXTextBookmark */; + 6B324CD2111C759F00EBD2FD /* PBXTextBookmark */ = 6B324CD2111C759F00EBD2FD /* PBXTextBookmark */; + 6B324CD4111C75BC00EBD2FD /* PBXTextBookmark */ = 6B324CD4111C75BC00EBD2FD /* PBXTextBookmark */; + 6B324CD5111C75E300EBD2FD /* PBXTextBookmark */ = 6B324CD5111C75E300EBD2FD /* PBXTextBookmark */; + 6B324CD6111C77B700EBD2FD /* PBXTextBookmark */ = 6B324CD6111C77B700EBD2FD /* PBXTextBookmark */; + 6B324CDA111C789800EBD2FD /* PBXTextBookmark */ = 6B324CDA111C789800EBD2FD /* PBXTextBookmark */; + 6B324CDB111C789800EBD2FD /* PBXTextBookmark */ = 6B324CDB111C789800EBD2FD /* PBXTextBookmark */; + 6B324CDC111C789800EBD2FD /* PBXTextBookmark */ = 6B324CDC111C789800EBD2FD /* PBXTextBookmark */; + 6B324CDD111C789800EBD2FD /* PBXTextBookmark */ = 6B324CDD111C789800EBD2FD /* PBXTextBookmark */; + 6B324CDE111C789800EBD2FD /* PBXTextBookmark */ = 6B324CDE111C789800EBD2FD /* PBXTextBookmark */; + 6B324CDF111C789800EBD2FD /* PBXTextBookmark */ = 6B324CDF111C789800EBD2FD /* PBXTextBookmark */; + 6B324CE0111C789800EBD2FD /* PBXTextBookmark */ = 6B324CE0111C789800EBD2FD /* PBXTextBookmark */; + 6B324CE1111C789800EBD2FD /* PBXTextBookmark */ = 6B324CE1111C789800EBD2FD /* PBXTextBookmark */; + 6B324CE2111C789800EBD2FD /* PBXTextBookmark */ = 6B324CE2111C789800EBD2FD /* PBXTextBookmark */; + 6B324CE3111C78DA00EBD2FD /* PBXTextBookmark */ = 6B324CE3111C78DA00EBD2FD /* PBXTextBookmark */; + 6B324CE4111C78DA00EBD2FD /* PBXTextBookmark */ = 6B324CE4111C78DA00EBD2FD /* PBXTextBookmark */; + 6B324CE5111C78DA00EBD2FD /* PBXTextBookmark */ = 6B324CE5111C78DA00EBD2FD /* PBXTextBookmark */; + 6B324CE6111C78DA00EBD2FD /* PBXTextBookmark */ = 6B324CE6111C78DA00EBD2FD /* PBXTextBookmark */; + 6B324CE8111C795500EBD2FD /* PBXTextBookmark */ = 6B324CE8111C795500EBD2FD /* PBXTextBookmark */; + 6B324CE9111C795500EBD2FD /* PBXTextBookmark */ = 6B324CE9111C795500EBD2FD /* PBXTextBookmark */; + 6B324CEA111C795500EBD2FD /* PBXTextBookmark */ = 6B324CEA111C795500EBD2FD /* PBXTextBookmark */; + 6B324CEB111C795500EBD2FD /* PBXTextBookmark */ = 6B324CEB111C795500EBD2FD /* PBXTextBookmark */; + 6B324CEC111C795500EBD2FD /* PBXTextBookmark */ = 6B324CEC111C795500EBD2FD /* PBXTextBookmark */; + 6B324CED111C795500EBD2FD /* PBXTextBookmark */ = 6B324CED111C795500EBD2FD /* PBXTextBookmark */; + 6B324CF2111C7A9800EBD2FD /* PBXTextBookmark */ = 6B324CF2111C7A9800EBD2FD /* PBXTextBookmark */; + 6B324CF3111C7A9800EBD2FD /* PBXTextBookmark */ = 6B324CF3111C7A9800EBD2FD /* PBXTextBookmark */; + 6B324CF4111C7A9800EBD2FD /* PBXTextBookmark */ = 6B324CF4111C7A9800EBD2FD /* PBXTextBookmark */; + 6B324CF5111C7A9800EBD2FD /* PBXTextBookmark */ = 6B324CF5111C7A9800EBD2FD /* PBXTextBookmark */; + 6B324CF6111C7A9800EBD2FD /* PBXTextBookmark */ = 6B324CF6111C7A9800EBD2FD /* PBXTextBookmark */; + 6B324CF9111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324CF9111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324CFA111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324CFA111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324CFB111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324CFB111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324CFC111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324CFC111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324CFD111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324CFD111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324CFE111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324CFE111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324CFF111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324CFF111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324D00111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324D00111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324D01111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324D01111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324D02111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324D02111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324D03111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324D03111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324D04111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324D04111C7B0900EBD2FD /* PBXTextBookmark */; + 6B324D05111C7B0900EBD2FD /* PBXTextBookmark */ = 6B324D05111C7B0900EBD2FD /* PBXTextBookmark */; 6B69739F10FFCA4500984788 = 6B69739F10FFCA4500984788 /* PBXTextBookmark */; 6B6973A210FFCA4500984788 = 6B6973A210FFCA4500984788 /* PBXTextBookmark */; 6B8DE70D10B01BBF00DF20FB = 6B8DE70D10B01BBF00DF20FB /* PBXTextBookmark */; @@ -589,9 +990,9 @@ }; 6B137C7E0F7FCBFE00459200 /* Recast.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 9104}}"; - sepNavSelRange = "{19796, 0}"; - sepNavVisRange = "{19607, 1291}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 9184}}"; + sepNavSelRange = "{18922, 0}"; + sepNavVisRange = "{18110, 1493}"; }; }; 6B137C800F7FCBFE00459200 /* RecastLog.h */ = { @@ -611,9 +1012,9 @@ }; 6B137C820F7FCC1100459200 /* Recast.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 4312}}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 4256}}"; sepNavSelRange = "{7159, 77}"; - sepNavVisRange = "{6833, 582}"; + sepNavVisRange = "{6663, 752}"; }; }; 6B137C830F7FCC1100459200 /* RecastContour.cpp */ = { @@ -640,9 +1041,9 @@ }; 6B137C870F7FCC1100459200 /* RecastMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 19320}}"; - sepNavSelRange = "{25301, 0}"; - sepNavVisRange = "{24899, 722}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 19408}}"; + sepNavSelRange = "{4760, 0}"; + sepNavVisRange = "{9428, 807}"; }; }; 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */ = { @@ -668,16 +1069,16 @@ }; 6B25B6100FFA62AD004F1BC4 /* Sample.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 1744}}"; - sepNavSelRange = "{1392, 19}"; - sepNavVisRange = "{942, 892}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 2112}}"; + sepNavSelRange = "{2150, 0}"; + sepNavVisRange = "{1826, 688}"; }; }; 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {815, 3696}}"; sepNavSelRange = "{2224, 0}"; - sepNavVisRange = "{1982, 387}"; + sepNavVisRange = "{1982, 384}"; }; }; 6B25B6180FFA62BE004F1BC4 /* main.cpp */ = { @@ -697,9 +1098,9 @@ }; 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1160, 12576}}"; - sepNavSelRange = "{6437, 0}"; - sepNavVisRange = "{6388, 994}"; + sepNavIntBoundsRect = "{{0, 0}, {887, 13840}}"; + sepNavSelRange = "{21084, 0}"; + sepNavVisRange = "{20616, 1051}"; sepNavWindowFrame = "{{38, 30}, {1214, 722}}"; }; }; @@ -798,7 +1199,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 636"; rLen = 0; - rLoc = 17949; + rLoc = 17953; rType = 0; vrLen = 653; vrLoc = 17536; @@ -828,7 +1229,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 636"; rLen = 0; - rLoc = 17949; + rLoc = 17953; rType = 0; vrLen = 653; vrLoc = 17536; @@ -838,7 +1239,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 130"; rLen = 0; - rLoc = 5414; + rLoc = 5574; rType = 0; vrLen = 1174; vrLoc = 4824; @@ -848,7 +1249,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 130"; rLen = 0; - rLoc = 5414; + rLoc = 5574; rType = 0; vrLen = 936; vrLoc = 919; @@ -958,7 +1359,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 287"; rLen = 0; - rLoc = 6437; + rLoc = 6449; rType = 0; vrLen = 992; vrLoc = 6388; @@ -1086,7 +1487,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 287"; rLen = 0; - rLoc = 6437; + rLoc = 6449; rType = 0; vrLen = 992; vrLoc = 6388; @@ -1234,6 +1635,4005 @@ vrLen = 735; vrLoc = 837; }; + 6B324AEA111C0D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 19"; + rLen = 0; + rLoc = 944; + rType = 0; + vrLen = 1250; + vrLoc = 202; + }; + 6B324AEB111C0D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; + name = "DetourNavMeshBuilder.h: 29"; + rLen = 67; + rLoc = 1132; + rType = 0; + vrLen = 754; + vrLoc = 837; + }; + 6B324AEC111C0D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 658"; + rLen = 0; + rLoc = 19262; + rType = 0; + vrLen = 754; + vrLoc = 18659; + }; + 6B324AED111C0D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 21"; + rLen = 0; + rLoc = 967; + rType = 0; + vrLen = 976; + vrLoc = 918; + }; + 6B324AEE111C0D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 19"; + rLen = 0; + rLoc = 944; + rType = 0; + vrLen = 1250; + vrLoc = 202; + }; + 6B324AEF111C0D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; + name = "DetourNavMeshBuilder.h: 29"; + rLen = 67; + rLoc = 1132; + rType = 0; + vrLen = 754; + vrLoc = 837; + }; + 6B324AF0111C0D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 658"; + rLen = 0; + rLoc = 19262; + rType = 0; + vrLen = 754; + vrLoc = 18659; + }; + 6B324AF1111C0D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 47"; + rLen = 0; + rLoc = 1929; + rType = 0; + vrLen = 1148; + vrLoc = 1307; + }; + 6B324AF2111C0E3B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 446"; + rLen = 0; + rLoc = 20056; + rType = 0; + vrLen = 1563; + vrLoc = 18834; + }; + 6B324AF3111C0E3B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1288"; + rLen = 15; + rLoc = 35081; + rType = 0; + vrLen = 913; + vrLoc = 34283; + }; + 6B324AF4111C0E3B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 49"; + rLen = 0; + rLoc = 1933; + rType = 0; + vrLen = 1263; + vrLoc = 2152; + }; + 6B324AF5111C0E3B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1288"; + rLen = 15; + rLoc = 35081; + rType = 0; + vrLen = 913; + vrLoc = 34283; + }; + 6B324AF6111C0E3B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 446"; + rLen = 0; + rLoc = 20056; + rType = 0; + vrLen = 1563; + vrLoc = 18834; + }; + 6B324AF7111C0E3B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1584"; + rLen = 0; + rLoc = 43371; + rType = 0; + vrLen = 966; + vrLoc = 44805; + }; + 6B324AF8111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1670"; + rLen = 0; + rLoc = 46183; + rType = 0; + vrLen = 874; + vrLoc = 45419; + }; + 6B324AF9111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 47"; + rLen = 30; + rLoc = 1867; + rType = 0; + vrLen = 744; + vrLoc = 1481; + }; + 6B324AFA111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 63"; + rLen = 0; + rLoc = 1889; + rType = 0; + vrLen = 425; + vrLoc = 1610; + }; + 6B324AFB111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; + name = "DetourNavMeshBuilder.h: 43"; + rLen = 0; + rLoc = 1550; + rType = 0; + vrLen = 539; + vrLoc = 1215; + }; + 6B324AFC111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 444"; + rLen = 0; + rLoc = 12803; + rType = 0; + vrLen = 543; + vrLoc = 12241; + }; + 6B324AFD111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1659"; + rLen = 0; + rLoc = 45774; + rType = 0; + vrLen = 966; + vrLoc = 44805; + }; + 6B324AFE111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 439"; + rLen = 0; + rLoc = 19587; + rType = 0; + vrLen = 1637; + vrLoc = 18794; + }; + 6B324AFF111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1670"; + rLen = 0; + rLoc = 46183; + rType = 0; + vrLen = 874; + vrLoc = 45419; + }; + 6B324B00111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 47"; + rLen = 30; + rLoc = 1867; + rType = 0; + vrLen = 744; + vrLoc = 1481; + }; + 6B324B01111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 63"; + rLen = 0; + rLoc = 1889; + rType = 0; + vrLen = 425; + vrLoc = 1610; + }; + 6B324B02111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 441"; + rLen = 0; + rLoc = 12675; + rType = 0; + vrLen = 614; + vrLoc = 12314; + }; + 6B324B03111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; + name = "DetourNavMeshBuilder.h: 42"; + rLen = 0; + rLoc = 1511; + rType = 0; + vrLen = 504; + vrLoc = 1215; + }; + 6B324B04111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 441"; + rLen = 0; + rLoc = 12715; + rType = 0; + vrLen = 549; + vrLoc = 12314; + }; + 6B324B05111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; + name = "DetourNavMeshBuilder.h: 42"; + rLen = 0; + rLoc = 1511; + rType = 0; + vrLen = 503; + vrLoc = 1215; + }; + 6B324B06111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 435"; + rLen = 15; + rLoc = 12451; + rType = 0; + vrLen = 592; + vrLoc = 12221; + }; + 6B324B07111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; + name = "DetourNavMeshBuilder.h: 42"; + rLen = 0; + rLoc = 1504; + rType = 0; + vrLen = 503; + vrLoc = 1215; + }; + 6B324B08111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 444"; + rLen = 0; + rLoc = 12803; + rType = 0; + vrLen = 543; + vrLoc = 12241; + }; + 6B324B09111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; + name = "DetourNavMeshBuilder.h: 43"; + rLen = 0; + rLoc = 1550; + rType = 0; + vrLen = 539; + vrLoc = 1215; + }; + 6B324B0A111C0F2700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 518"; + rLen = 0; + rLoc = 15238; + rType = 0; + vrLen = 392; + vrLoc = 15141; + }; + 6B324B0C111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; + name = "DetourDebugDraw.cpp: 52"; + rLen = 0; + rLoc = 1755; + rType = 0; + vrLen = 479; + vrLoc = 1519; + }; + 6B324B0D111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 47"; + rLen = 30; + rLoc = 1867; + rType = 0; + vrLen = 744; + vrLoc = 1481; + }; + 6B324B0E111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 424"; + rLen = 0; + rLoc = 11866; + rType = 0; + vrLen = 455; + vrLoc = 11543; + }; + 6B324B0F111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 445"; + rLen = 0; + rLoc = 12801; + rType = 0; + vrLen = 541; + vrLoc = 11709; + }; + 6B324B10111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + rLen = 0; + rLoc = 1889; + rType = 0; + }; + 6B324B11111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 530"; + rLen = 0; + rLoc = 15441; + rType = 0; + vrLen = 258; + vrLoc = 15286; + }; + 6B324B12111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 830"; + rLen = 30; + rLoc = 22885; + rType = 0; + vrLen = 710; + vrLoc = 22465; + }; + 6B324B13111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 46"; + rLen = 18; + rLoc = 1809; + rType = 0; + vrLen = 744; + vrLoc = 1481; + }; + 6B324B14111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 422"; + rLen = 0; + rLoc = 12108; + rType = 0; + vrLen = 534; + vrLoc = 11854; + }; + 6B324B15111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; + name = "DetourDebugDraw.cpp: 52"; + rLen = 0; + rLoc = 1755; + rType = 0; + vrLen = 479; + vrLoc = 1519; + }; + 6B324B16111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 47"; + rLen = 30; + rLoc = 1867; + rType = 0; + vrLen = 744; + vrLoc = 1481; + }; + 6B324B17111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 424"; + rLen = 0; + rLoc = 11866; + rType = 0; + vrLen = 455; + vrLoc = 11543; + }; + 6B324B18111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 445"; + rLen = 0; + rLoc = 12801; + rType = 0; + vrLen = 541; + vrLoc = 11709; + }; + 6B324B19111C103600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 158"; + rLen = 0; + rLoc = 4845; + rType = 0; + vrLen = 691; + vrLoc = 3831; + }; + 6B324B1E111C10C700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 158"; + rLen = 0; + rLoc = 4845; + rType = 0; + vrLen = 646; + vrLoc = 3816; + }; + 6B324B1F111C10C700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 662"; + rLen = 0; + rLoc = 19262; + rType = 0; + vrLen = 586; + vrLoc = 18880; + }; + 6B324B20111C10C700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: no matching function for call to 'dtNavMesh::getPortalPoints(dtPolyRef&, dtPolyRef&, float [3], float [3], short unsigned int&, short unsigned int&) const'"; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + rLen = 0; + rLoc = 1653; + rType = 1; + }; + 6B324B21111C10C700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 158"; + rLen = 0; + rLoc = 4845; + rType = 0; + vrLen = 646; + vrLoc = 3816; + }; + 6B324B22111C10C700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1526"; + rLen = 0; + rLoc = 41426; + rType = 0; + vrLen = 656; + vrLoc = 40827; + }; + 6B324B23111C10C700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; + name = "DetourNavMeshBuilder.cpp: 662"; + rLen = 0; + rLoc = 19262; + rType = 0; + vrLen = 586; + vrLoc = 18880; + }; + 6B324B24111C10C700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1636"; + rLen = 0; + rLoc = 44972; + rType = 0; + vrLen = 644; + vrLoc = 44542; + }; + 6B324B29111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1633"; + rLen = 0; + rLoc = 44954; + rType = 0; + vrLen = 970; + vrLoc = 44297; + }; + 6B324B2A111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 70"; + rLen = 5; + rLoc = 2948; + rType = 0; + vrLen = 1641; + vrLoc = 1761; + }; + 6B324B2B111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 219"; + rLen = 0; + rLoc = 5186; + rType = 0; + vrLen = 744; + vrLoc = 4957; + }; + 6B324B2C111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */; + name = "OffMeshConnectionTool.cpp: 128"; + rLen = 0; + rLoc = 3173; + rType = 0; + vrLen = 428; + vrLoc = 2852; + }; + 6B324B2D111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 781"; + rLen = 74; + rLoc = 21258; + rType = 0; + vrLen = 1052; + vrLoc = 20427; + }; + 6B324B2E111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 1032"; + rLen = 0; + rLoc = 30861; + rType = 0; + vrLen = 1087; + vrLoc = 29995; + }; + 6B324B2F111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 582"; + rLen = 0; + rLoc = 18291; + rType = 0; + vrLen = 1059; + vrLoc = 17413; + }; + 6B324B30111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 164"; + rLen = 0; + rLoc = 6225; + rType = 0; + vrLen = 1158; + vrLoc = 6064; + }; + 6B324B31111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 986"; + rLen = 0; + rLoc = 25301; + rType = 0; + vrLen = 617; + vrLoc = 24817; + }; + 6B324B32111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1633"; + rLen = 0; + rLoc = 44954; + rType = 0; + vrLen = 970; + vrLoc = 44297; + }; + 6B324B33111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 35"; + rLen = 16; + rLoc = 1470; + rType = 0; + vrLen = 1119; + vrLoc = 1033; + }; + 6B324B34111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 320"; + rLen = 40; + rLoc = 7791; + rType = 0; + vrLen = 921; + vrLoc = 7326; + }; + 6B324B35111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 70"; + rLen = 5; + rLoc = 2948; + rType = 0; + vrLen = 1641; + vrLoc = 1761; + }; + 6B324B36111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 219"; + rLen = 0; + rLoc = 5186; + rType = 0; + vrLen = 744; + vrLoc = 4957; + }; + 6B324B37111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */; + name = "OffMeshConnectionTool.cpp: 128"; + rLen = 0; + rLoc = 3173; + rType = 0; + vrLen = 428; + vrLoc = 2852; + }; + 6B324B38111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 590"; + rLen = 128; + rLoc = 18748; + rType = 0; + vrLen = 1046; + vrLoc = 17413; + }; + 6B324B39111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 1042"; + rLen = 0; + rLoc = 31446; + rType = 0; + vrLen = 1067; + vrLoc = 30033; + }; + 6B324B3A111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 781"; + rLen = 74; + rLoc = 21258; + rType = 0; + vrLen = 1052; + vrLoc = 20427; + }; + 6B324B3B111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 1032"; + rLen = 0; + rLoc = 30861; + rType = 0; + vrLen = 1087; + vrLoc = 29995; + }; + 6B324B3C111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 582"; + rLen = 0; + rLoc = 18291; + rType = 0; + vrLen = 1059; + vrLoc = 17413; + }; + 6B324B3D111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 164"; + rLen = 0; + rLoc = 6225; + rType = 0; + vrLen = 1158; + vrLoc = 6064; + }; + 6B324B3E111C153D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 1208"; + rLen = 0; + rLoc = 31372; + rType = 0; + vrLen = 988; + vrLoc = 30637; + }; + 6B324B47111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 1208"; + rLen = 0; + rLoc = 31372; + rType = 0; + vrLen = 988; + vrLoc = 30637; + }; + 6B324B48111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 31"; + rLen = 10; + rLoc = 1146; + rType = 0; + vrLen = 631; + vrLoc = 915; + }; + 6B324B49111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */; + name = "OffMeshConnectionTool.cpp: 73"; + rLen = 0; + rLoc = 1903; + rType = 0; + vrLen = 600; + vrLoc = 1659; + }; + 6B324B4A111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 62"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 745; + vrLoc = 1507; + }; + 6B324B4B111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 174"; + rLen = 0; + rLoc = 4573; + rType = 0; + vrLen = 717; + vrLoc = 3938; + }; + 6B324B4C111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 37"; + rLen = 0; + rLoc = 1333; + rType = 0; + vrLen = 816; + vrLoc = 942; + }; + 6B324B4D111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 260"; + rLen = 0; + rLoc = 9648; + rType = 0; + vrLen = 1005; + vrLoc = 9098; + }; + 6B324B4E111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 580"; + rLen = 0; + rLoc = 17579; + rType = 0; + vrLen = 889; + vrLoc = 17240; + }; + 6B324B4F111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7910CFE1D500F74F2B /* RecastDebugDraw.h */; + name = "RecastDebugDraw.h: 22"; + rLen = 0; + rLoc = 1032; + rType = 0; + vrLen = 2119; + vrLoc = 202; + }; + 6B324B50111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93CF410CFEC4500F74F2B /* RecastDump.h */; + name = "RecastDump.h: 22"; + rLen = 0; + rLoc = 964; + rType = 0; + vrLen = 1149; + vrLoc = 0; + }; + 6B324B51111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93CF510CFEC4500F74F2B /* RecastDump.cpp */; + name = "RecastDump.cpp: 58"; + rLen = 0; + rLoc = 1801; + rType = 0; + vrLen = 681; + vrLoc = 1002; + }; + 6B324B52111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7A10CFE1D500F74F2B /* DebugDraw.cpp */; + name = "DebugDraw.cpp: 214"; + rLen = 0; + rLoc = 6795; + rType = 0; + vrLen = 962; + vrLoc = 6353; + }; + 6B324B53111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; + name = "RecastDebugDraw.cpp: 161"; + rLen = 228; + rLoc = 4470; + rType = 0; + vrLen = 711; + vrLoc = 4421; + }; + 6B324B54111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: 'poly' was not declared in this scope"; + fRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; + rLen = 1; + rLoc = 141; + rType = 1; + }; + 6B324B55111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 1208"; + rLen = 0; + rLoc = 31372; + rType = 0; + vrLen = 988; + vrLoc = 30637; + }; + 6B324B56111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 43"; + rLen = 0; + rLoc = 1637; + rType = 0; + vrLen = 834; + vrLoc = 942; + }; + 6B324B57111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */; + name = "OffMeshConnectionTool.cpp: 127"; + rLen = 0; + rLoc = 3050; + rType = 0; + vrLen = 644; + vrLoc = 2677; + }; + 6B324B58111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 31"; + rLen = 10; + rLoc = 1146; + rType = 0; + vrLen = 631; + vrLoc = 915; + }; + 6B324B59111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 62"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 745; + vrLoc = 1507; + }; + 6B324B5A111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 591"; + rLen = 0; + rLoc = 18036; + rType = 0; + vrLen = 894; + vrLoc = 17240; + }; + 6B324B5B111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 158"; + rLen = 0; + rLoc = 4845; + rType = 0; + vrLen = 793; + vrLoc = 3686; + }; + 6B324B5C111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 39"; + rLen = 301; + rLoc = 1336; + rType = 0; + vrLen = 834; + vrLoc = 942; + }; + 6B324B5D111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 174"; + rLen = 0; + rLoc = 4573; + rType = 0; + vrLen = 717; + vrLoc = 3938; + }; + 6B324B5E111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 37"; + rLen = 0; + rLoc = 1333; + rType = 0; + vrLen = 816; + vrLoc = 942; + }; + 6B324B5F111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; + name = "RecastDebugDraw.cpp: 162"; + rLen = 16; + rLoc = 4518; + rType = 0; + vrLen = 711; + vrLoc = 4421; + }; + 6B324B60111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 580"; + rLen = 0; + rLoc = 17579; + rType = 0; + vrLen = 889; + vrLoc = 17240; + }; + 6B324B61111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; + name = "DetourDebugDraw.cpp: 52"; + rLen = 0; + rLoc = 1755; + rType = 0; + vrLen = 740; + vrLoc = 1287; + }; + 6B324B62111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; + name = "RecastDebugDraw.cpp: 162"; + rLen = 16; + rLoc = 4518; + rType = 0; + vrLen = 711; + vrLoc = 4421; + }; + 6B324B63111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7910CFE1D500F74F2B /* RecastDebugDraw.h */; + name = "RecastDebugDraw.h: 22"; + rLen = 0; + rLoc = 1032; + rType = 0; + vrLen = 2119; + vrLoc = 202; + }; + 6B324B64111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93CF410CFEC4500F74F2B /* RecastDump.h */; + name = "RecastDump.h: 22"; + rLen = 0; + rLoc = 964; + rType = 0; + vrLen = 1149; + vrLoc = 0; + }; + 6B324B65111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93CF510CFEC4500F74F2B /* RecastDump.cpp */; + name = "RecastDump.cpp: 58"; + rLen = 0; + rLoc = 1801; + rType = 0; + vrLen = 681; + vrLoc = 1002; + }; + 6B324B66111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7A10CFE1D500F74F2B /* DebugDraw.cpp */; + name = "DebugDraw.cpp: 214"; + rLen = 0; + rLoc = 6795; + rType = 0; + vrLen = 962; + vrLoc = 6353; + }; + 6B324B67111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; + name = "RecastDebugDraw.cpp: 161"; + rLen = 228; + rLoc = 4470; + rType = 0; + vrLen = 711; + vrLoc = 4421; + }; + 6B324B68111C1AC800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; + name = "DetourDebugDraw.cpp: 142"; + rLen = 0; + rLoc = 4032; + rType = 0; + vrLen = 882; + vrLoc = 4767; + }; + 6B324B6A111C1B7500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; + name = "DetourDebugDraw.cpp: 142"; + rLen = 0; + rLoc = 4032; + rType = 0; + vrLen = 938; + vrLoc = 4767; + }; + 6B324B6B111C1B7500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 37"; + rLen = 0; + rLoc = 1333; + rType = 0; + vrLen = 753; + vrLoc = 966; + }; + 6B324B6C111C1B7500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; + name = "DetourDebugDraw.cpp: 142"; + rLen = 0; + rLoc = 4032; + rType = 0; + vrLen = 938; + vrLoc = 4767; + }; + 6B324B6D111C1B7500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 33"; + rLen = 0; + rLoc = 1263; + rType = 0; + vrLen = 713; + vrLoc = 966; + }; + 6B324B70111C1C4F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 35"; + rLen = 0; + rLoc = 1309; + rType = 0; + vrLen = 753; + vrLoc = 966; + }; + 6B324B71111C1C4F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; + name = "RecastDebugDraw.cpp: 526"; + rLen = 0; + rLoc = 13512; + rType = 0; + vrLen = 723; + vrLoc = 12982; + }; + 6B324B72111C1C4F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 76"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 700; + vrLoc = 3375; + }; + 6B324B73111C1C4F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 219"; + rLen = 0; + rLoc = 5186; + rType = 0; + vrLen = 931; + vrLoc = 4927; + }; + 6B324B74111C1C4F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 35"; + rLen = 0; + rLoc = 1309; + rType = 0; + vrLen = 753; + vrLoc = 966; + }; + 6B324B75111C1C4F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; + name = "RecastDebugDraw.cpp: 526"; + rLen = 0; + rLoc = 13512; + rType = 0; + vrLen = 723; + vrLoc = 12982; + }; + 6B324B76111C1C4F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 76"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 700; + vrLoc = 3375; + }; + 6B324B77111C1C4F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 404"; + rLen = 0; + rLoc = 11986; + rType = 0; + vrLen = 818; + vrLoc = 9712; + }; + 6B324B79111C1C8200EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 404"; + rLen = 0; + rLoc = 11986; + rType = 0; + vrLen = 818; + vrLoc = 9712; + }; + 6B324B7A111C1C8200EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 96"; + rLen = 0; + rLoc = 2224; + rType = 0; + vrLen = 384; + vrLoc = 1982; + }; + 6B324B7B111C1C8200EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 35"; + rLen = 0; + rLoc = 1309; + rType = 0; + vrLen = 756; + vrLoc = 965; + }; + 6B324B7C111C1C8200EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 404"; + rLen = 0; + rLoc = 11986; + rType = 0; + vrLen = 818; + vrLoc = 9712; + }; + 6B324B7D111C1C8200EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 96"; + rLen = 0; + rLoc = 2224; + rType = 0; + vrLen = 384; + vrLoc = 1982; + }; + 6B324B7E111C1C8200EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 33"; + rLen = 0; + rLoc = 1262; + rType = 0; + vrLen = 756; + vrLoc = 965; + }; + 6B324B80111C1CF000EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 33"; + rLen = 0; + rLoc = 1262; + rType = 0; + vrLen = 861; + vrLoc = 965; + }; + 6B324B81111C1CF000EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 174"; + rLen = 0; + rLoc = 4573; + rType = 0; + vrLen = 714; + vrLoc = 3941; + }; + 6B324B82111C1CF000EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 33"; + rLen = 0; + rLoc = 1262; + rType = 0; + vrLen = 861; + vrLoc = 965; + }; + 6B324B83111C1CF000EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 158"; + rLen = 0; + rLoc = 4108; + rType = 0; + vrLen = 739; + vrLoc = 3876; + }; + 6B324B85111C1D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 426"; + rLen = 0; + rLoc = 11884; + rType = 0; + vrLen = 816; + vrLoc = 11546; + }; + 6B324B86111C1D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 158"; + rLen = 0; + rLoc = 4108; + rType = 0; + vrLen = 757; + vrLoc = 3876; + }; + 6B324B87111C1D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 158"; + rLen = 0; + rLoc = 4108; + rType = 0; + vrLen = 758; + vrLoc = 3876; + }; + 6B324B88111C1D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 426"; + rLen = 0; + rLoc = 11884; + rType = 0; + vrLen = 816; + vrLoc = 11546; + }; + 6B324B89111C1D9700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 276"; + rLen = 22; + rLoc = 6946; + rType = 0; + vrLen = 1008; + vrLoc = 8088; + }; + 6B324B8A111C1DE600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 276"; + rLen = 22; + rLoc = 6946; + rType = 0; + vrLen = 1081; + vrLoc = 8088; + }; + 6B324B8B111C1DE600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 404"; + rLen = 0; + rLoc = 11986; + rType = 0; + vrLen = 855; + vrLoc = 9675; + }; + 6B324B8C111C1DE600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 276"; + rLen = 22; + rLoc = 6946; + rType = 0; + vrLen = 1081; + vrLoc = 8088; + }; + 6B324B8D111C1DE600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 413"; + rLen = 0; + rLoc = 11986; + rType = 0; + vrLen = 853; + vrLoc = 9675; + }; + 6B324B8E111C24DD00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 392"; + rLen = 0; + rLoc = 10000; + rType = 0; + vrLen = 961; + vrLoc = 9567; + }; + 6B324B8F111C24DD00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 34"; + rLen = 106; + rLoc = 1201; + rType = 0; + vrLen = 682; + vrLoc = 837; + }; + 6B324B90111C24DD00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 150"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 714; + vrLoc = 3065; + }; + 6B324B91111C24DD00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 392"; + rLen = 0; + rLoc = 10000; + rType = 0; + vrLen = 961; + vrLoc = 9567; + }; + 6B324B92111C24DD00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 150"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 714; + vrLoc = 3065; + }; + 6B324B93111C24DD00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 34"; + rLen = 106; + rLoc = 1201; + rType = 0; + vrLen = 682; + vrLoc = 837; + }; + 6B324B94111C24DD00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 127"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 545; + vrLoc = 2834; + }; + 6B324B95111C259E00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 34"; + rLen = 106; + rLoc = 1201; + rType = 0; + vrLen = 682; + vrLoc = 837; + }; + 6B324B96111C259E00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 136"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 428; + vrLoc = 3021; + }; + 6B324B97111C259E00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 136"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 428; + vrLoc = 3021; + }; + 6B324B98111C259E00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 34"; + rLen = 106; + rLoc = 1201; + rType = 0; + vrLen = 682; + vrLoc = 837; + }; + 6B324B99111C259E00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 139"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 390; + vrLoc = 3027; + }; + 6B324B9C111C286B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 52"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 738; + vrLoc = 1229; + }; + 6B324B9F111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 380"; + rLen = 0; + rLoc = 16897; + rType = 0; + vrLen = 1183; + vrLoc = 16291; + }; + 6B324BA0111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 905"; + rLen = 1; + rLoc = 24733; + rType = 0; + vrLen = 820; + vrLoc = 24435; + }; + 6B324BA1111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 93"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 767; + vrLoc = 1772; + }; + 6B324BA2111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 93"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 740; + vrLoc = 1786; + }; + 6B324BA3111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 375"; + rLen = 48; + rLoc = 16748; + rType = 0; + vrLen = 1492; + vrLoc = 15406; + }; + 6B324BA4111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 912"; + rLen = 51; + rLoc = 24861; + rType = 0; + vrLen = 897; + vrLoc = 24711; + }; + 6B324BA5111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 377"; + rLen = 0; + rLoc = 16903; + rType = 0; + vrLen = 1435; + vrLoc = 15406; + }; + 6B324BA6111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 912"; + rLen = 0; + rLoc = 24866; + rType = 0; + vrLen = 898; + vrLoc = 24711; + }; + 6B324BA7111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 380"; + rLen = 0; + rLoc = 16897; + rType = 0; + vrLen = 1201; + vrLoc = 16350; + }; + 6B324BA8111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1663"; + rLen = 0; + rLoc = 45359; + rType = 0; + vrLen = 1061; + vrLoc = 44826; + }; + 6B324BA9111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 460"; + rLen = 0; + rLoc = 20010; + rType = 0; + vrLen = 1696; + vrLoc = 19209; + }; + 6B324BAA111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1559"; + rLen = 0; + rLoc = 41900; + rType = 0; + vrLen = 1065; + vrLoc = 41625; + }; + 6B324BAB111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 460"; + rLen = 0; + rLoc = 20010; + rType = 0; + vrLen = 1708; + vrLoc = 19209; + }; + 6B324BAC111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1659"; + rLen = 0; + rLoc = 45101; + rType = 0; + vrLen = 1099; + vrLoc = 44826; + }; + 6B324BAD111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 463"; + rLen = 0; + rLoc = 20176; + rType = 0; + vrLen = 1706; + vrLoc = 19209; + }; + 6B324BAE111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 915"; + rLen = 0; + rLoc = 24979; + rType = 0; + vrLen = 820; + vrLoc = 24435; + }; + 6B324BAF111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 380"; + rLen = 0; + rLoc = 16897; + rType = 0; + vrLen = 1183; + vrLoc = 16291; + }; + 6B324BB0111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 905"; + rLen = 1; + rLoc = 24733; + rType = 0; + vrLen = 820; + vrLoc = 24435; + }; + 6B324BB1111C446100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 40"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 470; + vrLoc = 1002; + }; + 6B324BB2111C467A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 57"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 873; + vrLoc = 1278; + }; + 6B324BB3111C46E300EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 61"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 609; + vrLoc = 1391; + }; + 6B324BB4111C4AC500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 46"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 677; + vrLoc = 1229; + }; + 6B324BB5111C4AC500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 57"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 617; + vrLoc = 1278; + }; + 6B324BB6111C4AF000EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 58"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 700; + vrLoc = 1278; + }; + 6B324BB7111C4AFF00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 55"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 616; + vrLoc = 1278; + }; + 6B324BB8111C4C2B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 380"; + rLen = 0; + rLoc = 16897; + rType = 0; + vrLen = 1183; + vrLoc = 16291; + }; + 6B324BB9111C4C2B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 906"; + rLen = 0; + rLoc = 24734; + rType = 0; + vrLen = 820; + vrLoc = 24435; + }; + 6B324BBA111C4C2B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 39"; + rLen = 0; + rLoc = 1307; + rType = 0; + vrLen = 765; + vrLoc = 784; + }; + 6B324BBB111C4C2B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 170"; + rLen = 0; + rLoc = 4760; + rType = 0; + vrLen = 807; + vrLoc = 9428; + }; + 6B324BBC111C4C2B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 42"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 602; + vrLoc = 1229; + }; + 6B324BBD111C4C2B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 380"; + rLen = 0; + rLoc = 16897; + rType = 0; + vrLen = 1183; + vrLoc = 16291; + }; + 6B324BBE111C4C2B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 906"; + rLen = 0; + rLoc = 24734; + rType = 0; + vrLen = 820; + vrLoc = 24435; + }; + 6B324BBF111C4C2B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 42"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 602; + vrLoc = 1229; + }; + 6B324BC0111C4C2B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 39"; + rLen = 0; + rLoc = 1307; + rType = 0; + vrLen = 765; + vrLoc = 784; + }; + 6B324BC1111C4C2B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 170"; + rLen = 0; + rLoc = 4760; + rType = 0; + vrLen = 807; + vrLoc = 9428; + }; + 6B324BC2111C4C2B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 68"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 483; + vrLoc = 1595; + }; + 6B324BC3111C4DE500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 66"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 466; + vrLoc = 1545; + }; + 6B324BC4111C4E4800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 63"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 578; + vrLoc = 1279; + }; + 6B324BCC111C4F7D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 36"; + rLen = 0; + rLoc = 1258; + rType = 0; + vrLen = 765; + vrLoc = 784; + }; + 6B324BCD111C4F7D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 44"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 604; + vrLoc = 1279; + }; + 6B324BCE111C4F7D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 44"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 604; + vrLoc = 1279; + }; + 6B324BCF111C4F7D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 36"; + rLen = 0; + rLoc = 1258; + rType = 0; + vrLen = 765; + vrLoc = 784; + }; + 6B324BD0111C4F7D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 43"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 628; + vrLoc = 1229; + }; + 6B324BD5111C4F9C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 118"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 777; + vrLoc = 2706; + }; + 6B324BD8111C502A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 58"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 627; + vrLoc = 1271; + }; + 6B324BDE111C508B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 58"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 674; + vrLoc = 1271; + }; + 6B324BE1111C50CA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 58"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 691; + vrLoc = 1271; + }; + 6B324BE3111C510100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 58"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 691; + vrLoc = 1271; + }; + 6B324BE6111C511800EBD2FD /* BoxVolumeTool.cpp:27 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + functionName = "convexhull(const float* pts, int npts, int* out)"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 27; + location = Recast; + modificationTime = 287078558.541171; + state = 1; + }; + 6B324BE7111C511900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 58"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 691; + vrLoc = 1271; + }; + 6B324BE9111C513F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 58"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 691; + vrLoc = 1271; + }; + 6B324BEA111C517500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 224"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 420; + vrLoc = 4902; + }; + 6B324BED111C528A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 50"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 746; + vrLoc = 1311; + }; + 6B324BEE111C53E700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 221"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 904; + vrLoc = 4614; + }; + 6B324BEF111C542600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 32"; + rLen = 11; + rLoc = 1165; + rType = 0; + vrLen = 765; + vrLoc = 784; + }; + 6B324BF0111C542600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 224"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 891; + vrLoc = 4614; + }; + 6B324BF1111C542600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 224"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 891; + vrLoc = 4614; + }; + 6B324BF2111C542600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 32"; + rLen = 11; + rLoc = 1165; + rType = 0; + vrLen = 765; + vrLoc = 784; + }; + 6B324BF3111C542600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 224"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 901; + vrLoc = 4612; + }; + 6B324BF8111C54DB00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 32"; + rLen = 11; + rLoc = 1165; + rType = 0; + vrLen = 756; + vrLoc = 784; + }; + 6B324BF9111C54DB00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 229"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 1103; + vrLoc = 4617; + }; + 6B324BFA111C54DB00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 229"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 1103; + vrLoc = 4617; + }; + 6B324BFB111C54DB00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 32"; + rLen = 11; + rLoc = 1165; + rType = 0; + vrLen = 756; + vrLoc = 784; + }; + 6B324BFC111C54DB00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 227"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 1070; + vrLoc = 4696; + }; + 6B324BFF111C558800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 182"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 600; + vrLoc = 4136; + }; + 6B324C02111C568500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 179"; + rLen = 433; + rLoc = 4549; + rType = 0; + vrLen = 968; + vrLoc = 4138; + }; + 6B324C03111C568500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 177"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 910; + vrLoc = 3437; + }; + 6B324C04111C568500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 179"; + rLen = 433; + rLoc = 4549; + rType = 0; + vrLen = 968; + vrLoc = 4138; + }; + 6B324C05111C568500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 175"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 850; + vrLoc = 3719; + }; + 6B324C06111C56B000EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 35"; + rLen = 0; + rLoc = 1231; + rType = 0; + vrLen = 756; + vrLoc = 784; + }; + 6B324C07111C56B000EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 159"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 844; + vrLoc = 3719; + }; + 6B324C08111C56B000EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 159"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 844; + vrLoc = 3719; + }; + 6B324C09111C56B000EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 35"; + rLen = 0; + rLoc = 1231; + rType = 0; + vrLen = 756; + vrLoc = 784; + }; + 6B324C0A111C56B000EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 163"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 839; + vrLoc = 3719; + }; + 6B324C0B111C574E00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 159"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 817; + vrLoc = 3721; + }; + 6B324C0C111C574E00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 70"; + rLen = 5; + rLoc = 2948; + rType = 0; + vrLen = 1683; + vrLoc = 1719; + }; + 6B324C0D111C574E00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 159"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 817; + vrLoc = 3721; + }; + 6B324C0E111C574E00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 29"; + rLen = 0; + rLoc = 1114; + rType = 0; + vrLen = 836; + vrLoc = 915; + }; + 6B324C1B111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 31"; + rLen = 0; + rLoc = 1149; + rType = 0; + vrLen = 1041; + vrLoc = 591; + }; + 6B324C1C111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 422"; + rLen = 0; + rLoc = 11256; + rType = 0; + vrLen = 1001; + vrLoc = 10022; + }; + 6B324C1D111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 267"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 898; + vrLoc = 5827; + }; + 6B324C1E111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 676"; + rLen = 0; + rLoc = 17918; + rType = 0; + vrLen = 666; + vrLoc = 17384; + }; + 6B324C1F111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 480"; + rLen = 0; + rLoc = 14895; + rType = 0; + vrLen = 743; + vrLoc = 14600; + }; + 6B324C20111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: 'class InputGeom' has no member named 'getBoxVolumeVerts'"; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + rLen = 1; + rLoc = 842; + rType = 1; + }; + 6B324C21111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 85"; + rLen = 0; + rLoc = 3222; + rType = 0; + vrLen = 1622; + vrLoc = 1821; + }; + 6B324C22111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 420"; + rLen = 0; + rLoc = 11986; + rType = 0; + vrLen = 1204; + vrLoc = 9906; + }; + 6B324C23111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 87"; + rLen = 0; + rLoc = 3449; + rType = 0; + vrLen = 1637; + vrLoc = 1806; + }; + 6B324C24111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 377"; + rLen = 0; + rLoc = 9627; + rType = 0; + vrLen = 833; + vrLoc = 9167; + }; + 6B324C25111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 85"; + rLen = 124; + rLoc = 3222; + rType = 0; + vrLen = 1637; + vrLoc = 1806; + }; + 6B324C26111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 379"; + rLen = 0; + rLoc = 9662; + rType = 0; + vrLen = 837; + vrLoc = 9167; + }; + 6B324C27111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 50"; + rLen = 11; + rLoc = 1695; + rType = 0; + vrLen = 1186; + vrLoc = 1220; + }; + 6B324C28111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 186"; + rLen = 0; + rLoc = 4511; + rType = 0; + vrLen = 851; + vrLoc = 5094; + }; + 6B324C29111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 28"; + rLen = 0; + rLoc = 1110; + rType = 0; + vrLen = 1051; + vrLoc = 591; + }; + 6B324C2A111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 418"; + rLen = 1; + rLoc = 11156; + rType = 0; + vrLen = 547; + vrLoc = 10233; + }; + 6B324C2B111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 28"; + rLen = 0; + rLoc = 1078; + rType = 0; + vrLen = 1051; + vrLoc = 591; + }; + 6B324C2C111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 239"; + rLen = 0; + rLoc = 6022; + rType = 0; + vrLen = 700; + vrLoc = 5335; + }; + 6B324C2D111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 31"; + rLen = 0; + rLoc = 1149; + rType = 0; + vrLen = 1041; + vrLoc = 591; + }; + 6B324C2E111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 422"; + rLen = 0; + rLoc = 11256; + rType = 0; + vrLen = 1001; + vrLoc = 10022; + }; + 6B324C2F111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 324"; + rLen = 17; + rLoc = 7672; + rType = 0; + vrLen = 932; + vrLoc = 7136; + }; + 6B324C30111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 296"; + rLen = 0; + rLoc = 9223; + rType = 0; + vrLen = 554; + vrLoc = 8731; + }; + 6B324C31111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 489"; + rLen = 0; + rLoc = 14705; + rType = 0; + vrLen = 555; + vrLoc = 14212; + }; + 6B324C32111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 267"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 898; + vrLoc = 5827; + }; + 6B324C33111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 676"; + rLen = 0; + rLoc = 17918; + rType = 0; + vrLen = 666; + vrLoc = 17384; + }; + 6B324C34111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 480"; + rLen = 0; + rLoc = 14895; + rType = 0; + vrLen = 743; + vrLoc = 14600; + }; + 6B324C35111C5B8D00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 849"; + rLen = 0; + rLoc = 25467; + rType = 0; + vrLen = 839; + vrLoc = 24925; + }; + 6B324C37111C5BAF00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 849"; + rLen = 0; + rLoc = 25467; + rType = 0; + vrLen = 968; + vrLoc = 24944; + }; + 6B324C3A111C5BCC00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 849"; + rLen = 0; + rLoc = 25467; + rType = 0; + vrLen = 968; + vrLoc = 24944; + }; + 6B324C3B111C5BFB00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 266"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 300; + vrLoc = 4878; + }; + 6B324C3C111C5BFB00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 849"; + rLen = 0; + rLoc = 25467; + rType = 0; + vrLen = 478; + vrLoc = 25184; + }; + 6B324C3D111C5BFB00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + rLen = 0; + rLoc = 429; + rType = 1; + }; + 6B324C3E111C5BFB00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 266"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 300; + vrLoc = 4878; + }; + 6B324C3F111C5BFB00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 849"; + rLen = 0; + rLoc = 25467; + rType = 0; + vrLen = 478; + vrLoc = 25184; + }; + 6B324C40111C5BFB00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 405"; + rLen = 0; + rLoc = 10885; + rType = 0; + vrLen = 408; + vrLoc = 9998; + }; + 6B324C43111C5C5A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 849"; + rLen = 0; + rLoc = 25467; + rType = 0; + vrLen = 1001; + vrLoc = 24939; + }; + 6B324C44111C5C5A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 193"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 672; + vrLoc = 4152; + }; + 6B324C45111C5C5A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 86"; + rLen = 0; + rLoc = 3289; + rType = 0; + vrLen = 1623; + vrLoc = 1853; + }; + 6B324C46111C5C5A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 401"; + rLen = 0; + rLoc = 10885; + rType = 0; + vrLen = 965; + vrLoc = 10056; + }; + 6B324C47111C5C5A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 401"; + rLen = 0; + rLoc = 10885; + rType = 0; + vrLen = 965; + vrLoc = 10056; + }; + 6B324C48111C5C5A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 193"; + rLen = 0; + rLoc = 1091; + rType = 0; + vrLen = 672; + vrLoc = 4152; + }; + 6B324C49111C5C5A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 86"; + rLen = 0; + rLoc = 3289; + rType = 0; + vrLen = 1623; + vrLoc = 1853; + }; + 6B324C4A111C5C5A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 381"; + rLen = 0; + rLoc = 9571; + rType = 0; + vrLen = 854; + vrLoc = 9111; + }; + 6B324C4C111C5C7100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 388"; + rLen = 0; + rLoc = 9850; + rType = 0; + vrLen = 832; + vrLoc = 9111; + }; + 6B324C50111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 380"; + rLen = 0; + rLoc = 9531; + rType = 0; + vrLen = 892; + vrLoc = 9111; + }; + 6B324C51111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 65"; + rLen = 0; + rLoc = 2150; + rType = 0; + vrLen = 688; + vrLoc = 1826; + }; + 6B324C52111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 27"; + rLen = 0; + rLoc = 1094; + rType = 0; + vrLen = 596; + vrLoc = 1038; + }; + 6B324C53111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 190"; + rLen = 109; + rLoc = 4637; + rType = 0; + vrLen = 607; + vrLoc = 4240; + }; + 6B324C54111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 45"; + rLen = 51; + rLoc = 1362; + rType = 0; + vrLen = 591; + vrLoc = 1102; + }; + 6B324C55111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 265"; + rLen = 0; + rLoc = 6043; + rType = 0; + vrLen = 581; + vrLoc = 5564; + }; + 6B324C56111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: no matching function for call to 'Sample_SoloMeshSimple::setTool(int*)'"; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + rLen = 0; + rLoc = 102; + rType = 1; + }; + 6B324C57111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 380"; + rLen = 0; + rLoc = 9531; + rType = 0; + vrLen = 892; + vrLoc = 9111; + }; + 6B324C58111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 103"; + rLen = 5; + rLoc = 2621; + rType = 0; + vrLen = 728; + vrLoc = 2114; + }; + 6B324C59111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 65"; + rLen = 0; + rLoc = 2150; + rType = 0; + vrLen = 688; + vrLoc = 1826; + }; + 6B324C5A111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 54"; + rLen = 0; + rLoc = 1680; + rType = 0; + vrLen = 571; + vrLoc = 1122; + }; + 6B324C5B111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; + name = "BoxVolumeTool.cpp: 27"; + rLen = 0; + rLoc = 1094; + rType = 0; + vrLen = 596; + vrLoc = 1038; + }; + 6B324C5C111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 45"; + rLen = 51; + rLoc = 1362; + rType = 0; + vrLen = 591; + vrLoc = 1102; + }; + 6B324C5D111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 190"; + rLen = 109; + rLoc = 4637; + rType = 0; + vrLen = 607; + vrLoc = 4240; + }; + 6B324C5E111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 45"; + rLen = 51; + rLoc = 1362; + rType = 0; + vrLen = 591; + vrLoc = 1102; + }; + 6B324C5F111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 102"; + rLen = 0; + rLoc = 2571; + rType = 0; + vrLen = 580; + vrLoc = 2114; + }; + 6B324C60111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; + name = "BoxVolumeTool.h: 45"; + rLen = 51; + rLoc = 1362; + rType = 0; + vrLen = 591; + vrLoc = 1102; + }; + 6B324C61111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 265"; + rLen = 0; + rLoc = 6043; + rType = 0; + vrLen = 581; + vrLoc = 5564; + }; + 6B324C62111C5D1400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 96"; + rLen = 0; + rLoc = 2409; + rType = 0; + vrLen = 616; + vrLoc = 2026; + }; + 6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {815, 880}}"; + sepNavSelRange = "{960, 0}"; + sepNavVisRange = "{0, 1205}"; + }; + }; + 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {815, 4688}}"; + sepNavSelRange = "{2596, 0}"; + sepNavVisRange = "{2421, 413}"; + }; + }; + 6B324C6D111C5DDC00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 88"; + rLen = 0; + rLoc = 2245; + rType = 0; + vrLen = 616; + vrLoc = 2026; + }; + 6B324C6E111C5DDC00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */; + name = "ConvexVolumeTool.h: 20"; + rLen = 0; + rLoc = 960; + rType = 0; + vrLen = 1019; + vrLoc = 128; + }; + 6B324C6F111C5DDC00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + rLen = 0; + rLoc = 2147483830; + rType = 0; + }; + 6B324C70111C5DDC00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 88"; + rLen = 0; + rLoc = 2245; + rType = 0; + vrLen = 616; + vrLoc = 2026; + }; + 6B324C71111C5DDC00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */; + name = "ConvexVolumeTool.h: 20"; + rLen = 0; + rLoc = 960; + rType = 0; + vrLen = 1019; + vrLoc = 128; + }; + 6B324C72111C5DDC00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + name = "ConvexVolumeTool.cpp: 17"; + rLen = 0; + rLoc = 917; + rType = 0; + vrLen = 883; + vrLoc = 391; + }; + 6B324C75111C5E7C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + name = "ConvexVolumeTool.cpp: 17"; + rLen = 0; + rLoc = 917; + rType = 0; + vrLen = 883; + vrLoc = 391; + }; + 6B324C76111C5E7C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 31"; + rLen = 0; + rLoc = 1212; + rType = 0; + vrLen = 549; + vrLoc = 1019; + }; + 6B324C77111C5E7C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 38"; + rLen = 0; + rLoc = 1420; + rType = 0; + vrLen = 548; + vrLoc = 1043; + }; + 6B324C78111C5E7C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: BoxVolumeTool.h: No such file or directory"; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + rLen = 1; + rLoc = 36; + rType = 1; + }; + 6B324C79111C5E7C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + name = "ConvexVolumeTool.cpp: 17"; + rLen = 0; + rLoc = 917; + rType = 0; + vrLen = 883; + vrLoc = 391; + }; + 6B324C7A111C5E7C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 31"; + rLen = 0; + rLoc = 1212; + rType = 0; + vrLen = 549; + vrLoc = 1019; + }; + 6B324C7B111C5E7C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 38"; + rLen = 0; + rLoc = 1420; + rType = 0; + vrLen = 548; + vrLoc = 1043; + }; + 6B324C7C111C5E7C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 37"; + rLen = 0; + rLoc = 1390; + rType = 0; + vrLen = 507; + vrLoc = 1019; + }; + 6B324C7E111C5EF800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 37"; + rLen = 0; + rLoc = 1390; + rType = 0; + vrLen = 535; + vrLoc = 1019; + }; + 6B324C7F111C5EF800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 380"; + rLen = 0; + rLoc = 9531; + rType = 0; + vrLen = 673; + vrLoc = 9330; + }; + 6B324C80111C5EF800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 37"; + rLen = 0; + rLoc = 1390; + rType = 0; + vrLen = 535; + vrLoc = 1019; + }; + 6B324C81111C5EF800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 279"; + rLen = 0; + rLoc = 6834; + rType = 0; + vrLen = 843; + vrLoc = 5335; + }; + 6B324C85111C5F1B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 234"; + rLen = 0; + rLoc = 5640; + rType = 0; + vrLen = 809; + vrLoc = 5335; + }; + 6B324C88111C5F3900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 236"; + rLen = 0; + rLoc = 5674; + rType = 0; + vrLen = 811; + vrLoc = 5335; + }; + 6B324C8B111C5F9C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 419"; + rLen = 0; + rLoc = 10834; + rType = 0; + vrLen = 943; + vrLoc = 10000; + }; + 6B324C8E111C5FD500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 414"; + rLen = 0; + rLoc = 10410; + rType = 0; + vrLen = 996; + vrLoc = 10000; + }; + 6B324C90111C5FF200EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 416"; + rLen = 0; + rLoc = 10512; + rType = 0; + vrLen = 996; + vrLoc = 10000; + }; + 6B324C92111C604500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7710CFE1D500F74F2B /* DebugDraw.h */; + name = "DebugDraw.h: 71"; + rLen = 0; + rLoc = 2344; + rType = 0; + vrLen = 1019; + vrLoc = 1037; + }; + 6B324C93111C604500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 405"; + rLen = 0; + rLoc = 10129; + rType = 0; + vrLen = 965; + vrLoc = 10000; + }; + 6B324C94111C604500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7710CFE1D500F74F2B /* DebugDraw.h */; + name = "DebugDraw.h: 71"; + rLen = 0; + rLoc = 2344; + rType = 0; + vrLen = 1019; + vrLoc = 1037; + }; + 6B324C95111C604500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 437"; + rLen = 0; + rLoc = 10885; + rType = 0; + vrLen = 955; + vrLoc = 10469; + }; + 6B324C97111C606C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 463"; + rLen = 0; + rLoc = 11986; + rType = 0; + vrLen = 1005; + vrLoc = 10917; + }; + 6B324C9E111C6DD400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 271"; + rLen = 77; + rLoc = 7159; + rType = 0; + vrLen = 752; + vrLoc = 6663; + }; + 6B324C9F111C6DD400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 518"; + rLen = 36; + rLoc = 18994; + rType = 0; + vrLen = 1457; + vrLoc = 17378; + }; + 6B324CA0111C6DD400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 449"; + rLen = 0; + rLoc = 11555; + rType = 0; + vrLen = 1046; + vrLoc = 10370; + }; + 6B324CA1111C6DD400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + name = "ConvexVolumeTool.cpp: 77"; + rLen = 343; + rLoc = 2105; + rType = 0; + vrLen = 690; + vrLoc = 1887; + }; + 6B324CA2111C6DD400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 279"; + rLen = 0; + rLoc = 7870; + rType = 0; + vrLen = 845; + vrLoc = 7346; + }; + 6B324CA3111C6DD400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 38"; + rLen = 0; + rLoc = 1420; + rType = 0; + vrLen = 640; + vrLoc = 1019; + }; + 6B324CA4111C6DD400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 449"; + rLen = 0; + rLoc = 11555; + rType = 0; + vrLen = 1046; + vrLoc = 10370; + }; + 6B324CA5111C6DD400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 279"; + rLen = 0; + rLoc = 7870; + rType = 0; + vrLen = 845; + vrLoc = 7346; + }; + 6B324CA6111C6DD400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 477"; + rLen = 0; + rLoc = 14895; + rType = 0; + vrLen = 1018; + vrLoc = 14408; + }; + 6B324CA9111C6DED00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 477"; + rLen = 0; + rLoc = 14895; + rType = 0; + vrLen = 1018; + vrLoc = 14408; + }; + 6B324CAC111C6E0100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 477"; + rLen = 0; + rLoc = 14895; + rType = 0; + vrLen = 1018; + vrLoc = 14408; + }; + 6B324CAD111C6E0100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + rLen = 0; + rLoc = 267; + rType = 1; + }; + 6B324CAE111C6E0100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 477"; + rLen = 0; + rLoc = 14895; + rType = 0; + vrLen = 1018; + vrLoc = 14408; + }; + 6B324CAF111C6E0100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 269"; + rLen = 0; + rLoc = 7547; + rType = 0; + vrLen = 754; + vrLoc = 7059; + }; + 6B324CB1111C6E8100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 300"; + rLen = 0; + rLoc = 8570; + rType = 0; + vrLen = 598; + vrLoc = 7965; + }; + 6B324CB5111C6EEA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 142"; + rLen = 396; + rLoc = 3741; + rType = 0; + vrLen = 617; + vrLoc = 3649; + }; + 6B324CB6111C6EEA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 257"; + rLen = 0; + rLoc = 6906; + rType = 0; + vrLen = 705; + vrLoc = 6808; + }; + 6B324CB7111C6EEA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 300"; + rLen = 0; + rLoc = 8570; + rType = 0; + vrLen = 613; + vrLoc = 7965; + }; + 6B324CB8111C6EEA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 179"; + rLen = 433; + rLoc = 4549; + rType = 0; + vrLen = 761; + vrLoc = 4345; + }; + 6B324CB9111C6EEA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 257"; + rLen = 0; + rLoc = 6906; + rType = 0; + vrLen = 708; + vrLoc = 6808; + }; + 6B324CBA111C6EEA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 142"; + rLen = 396; + rLoc = 3741; + rType = 0; + vrLen = 617; + vrLoc = 3649; + }; + 6B324CBB111C6EEA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 265"; + rLen = 0; + rLoc = 6898; + rType = 0; + vrLen = 709; + vrLoc = 7204; + }; + 6B324CBC111C6F3C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 265"; + rLen = 0; + rLoc = 6898; + rType = 0; + vrLen = 736; + vrLoc = 7204; + }; + 6B324CBD111C6F3C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 449"; + rLen = 0; + rLoc = 11555; + rType = 0; + vrLen = 861; + vrLoc = 10555; + }; + 6B324CBE111C6F3C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 265"; + rLen = 0; + rLoc = 6898; + rType = 0; + vrLen = 736; + vrLoc = 7204; + }; + 6B324CBF111C6F3C00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 443"; + rLen = 0; + rLoc = 11456; + rType = 0; + vrLen = 953; + vrLoc = 10645; + }; + 6B324CC3111C6F6300EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 415"; + rLen = 0; + rLoc = 10511; + rType = 0; + vrLen = 887; + vrLoc = 10075; + }; + 6B324CC4111C6F6300EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 265"; + rLen = 0; + rLoc = 6898; + rType = 0; + vrLen = 791; + vrLoc = 7179; + }; + 6B324CC5111C6F6300EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 415"; + rLen = 0; + rLoc = 10511; + rType = 0; + vrLen = 887; + vrLoc = 10075; + }; + 6B324CC6111C6F6300EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 328"; + rLen = 0; + rLoc = 8683; + rType = 0; + vrLen = 726; + vrLoc = 8338; + }; + 6B324CC8111C6FB900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 328"; + rLen = 0; + rLoc = 8683; + rType = 0; + vrLen = 727; + vrLoc = 8338; + }; + 6B324CCA111C74E200EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 304"; + rLen = 0; + rLoc = 8644; + rType = 0; + vrLen = 617; + vrLoc = 7963; + }; + 6B324CCD111C759F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 304"; + rLen = 0; + rLoc = 8644; + rType = 0; + vrLen = 618; + vrLoc = 7963; + }; + 6B324CCE111C759F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */; + name = "ConvexVolumeTool.h: 20"; + rLen = 0; + rLoc = 960; + rType = 0; + vrLen = 1205; + vrLoc = 0; + }; + 6B324CCF111C759F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + name = "ConvexVolumeTool.cpp: 77"; + rLen = 343; + rLoc = 2105; + rType = 0; + vrLen = 686; + vrLoc = 1891; + }; + 6B324CD0111C759F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 304"; + rLen = 0; + rLoc = 8644; + rType = 0; + vrLen = 618; + vrLoc = 7963; + }; + 6B324CD1111C759F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */; + name = "ConvexVolumeTool.h: 20"; + rLen = 0; + rLoc = 960; + rType = 0; + vrLen = 1205; + vrLoc = 0; + }; + 6B324CD2111C759F00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + name = "ConvexVolumeTool.cpp: 146"; + rLen = 0; + rLoc = 3581; + rType = 0; + vrLen = 808; + vrLoc = 3127; + }; + 6B324CD4111C75BC00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + name = "ConvexVolumeTool.cpp: 142"; + rLen = 0; + rLoc = 3529; + rType = 0; + vrLen = 804; + vrLoc = 3127; + }; + 6B324CD5111C75E300EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + name = "ConvexVolumeTool.cpp: 96"; + rLen = 0; + rLoc = 2570; + rType = 0; + vrLen = 413; + vrLoc = 2421; + }; + 6B324CD6111C77B700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + name = "ConvexVolumeTool.cpp: 100"; + rLen = 0; + rLoc = 2622; + rType = 0; + vrLen = 413; + vrLoc = 2421; + }; + 6B324CDA111C789800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + name = "ConvexVolumeTool.cpp: 97"; + rLen = 0; + rLoc = 2596; + rType = 0; + vrLen = 413; + vrLoc = 2421; + }; + 6B324CDB111C789800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 473"; + rLen = 262; + rLoc = 14633; + rType = 0; + vrLen = 1077; + vrLoc = 14402; + }; + 6B324CDC111C789800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 674"; + rLen = 0; + rLoc = 17919; + rType = 0; + vrLen = 1060; + vrLoc = 17393; + }; + 6B324CDD111C789800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: 'm_chf' was not declared in this scope"; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + rLen = 1; + rLoc = 845; + rType = 1; + }; + 6B324CDE111C789800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; + name = "ConvexVolumeTool.cpp: 97"; + rLen = 0; + rLoc = 2596; + rType = 0; + vrLen = 413; + vrLoc = 2421; + }; + 6B324CDF111C789800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 473"; + rLen = 262; + rLoc = 14633; + rType = 0; + vrLen = 1077; + vrLoc = 14402; + }; + 6B324CE0111C789800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 843"; + rLen = 0; + rLoc = 25200; + rType = 0; + vrLen = 1218; + vrLoc = 24685; + }; + 6B324CE1111C789800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 674"; + rLen = 0; + rLoc = 17919; + rType = 0; + vrLen = 1060; + vrLoc = 17393; + }; + 6B324CE2111C789800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 846"; + rLen = 0; + rLoc = 25348; + rType = 0; + vrLen = 1202; + vrLoc = 24685; + }; + 6B324CE3111C78DA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 846"; + rLen = 0; + rLoc = 25348; + rType = 0; + vrLen = 1202; + vrLoc = 24685; + }; + 6B324CE4111C78DA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + rLen = 0; + rLoc = 315; + rType = 1; + }; + 6B324CE5111C78DA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 846"; + rLen = 0; + rLoc = 25348; + rType = 0; + vrLen = 1202; + vrLoc = 24685; + }; + 6B324CE6111C78DA00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 304"; + rLen = 0; + rLoc = 8660; + rType = 0; + vrLen = 713; + vrLoc = 7850; + }; + 6B324CE8111C795500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 430"; + rLen = 0; + rLoc = 10885; + rType = 0; + vrLen = 326; + vrLoc = 9938; + }; + 6B324CE9111C795500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 669"; + rLen = 0; + rLoc = 17656; + rType = 0; + vrLen = 620; + vrLoc = 17432; + }; + 6B324CEA111C795500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + rLen = 0; + rLoc = 315; + rType = 1; + }; + 6B324CEB111C795500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 305"; + rLen = 0; + rLoc = 8692; + rType = 0; + vrLen = 345; + vrLoc = 8191; + }; + 6B324CEC111C795500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 669"; + rLen = 0; + rLoc = 17656; + rType = 0; + vrLen = 620; + vrLoc = 17432; + }; + 6B324CED111C795500EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 223"; + rLen = 0; + rLoc = 6514; + rType = 0; + vrLen = 534; + vrLoc = 5963; + }; + 6B324CF2111C7A9800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 534"; + rLen = 0; + rLoc = 18922; + rType = 0; + vrLen = 1493; + vrLoc = 18110; + }; + 6B324CF3111C7A9800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: return-statement with a value, in function returning 'void'"; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + rLen = 1; + rLoc = 245; + rType = 1; + }; + 6B324CF4111C7A9800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 210"; + rLen = 0; + rLoc = 5854; + rType = 0; + vrLen = 740; + vrLoc = 5727; + }; + 6B324CF5111C7A9800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 534"; + rLen = 0; + rLoc = 18922; + rType = 0; + vrLen = 1493; + vrLoc = 18110; + }; + 6B324CF6111C7A9800EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 324"; + rLen = 0; + rLoc = 8758; + rType = 0; + vrLen = 604; + vrLoc = 8158; + }; + 6B324CF9111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 324"; + rLen = 0; + rLoc = 8758; + rType = 0; + vrLen = 604; + vrLoc = 8158; + }; + 6B324CFA111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; + name = "DetourDebugDraw.cpp: 142"; + rLen = 0; + rLoc = 4042; + rType = 0; + vrLen = 889; + vrLoc = 3709; + }; + 6B324CFB111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 903"; + rLen = 0; + rLoc = 24730; + rType = 0; + vrLen = 728; + vrLoc = 24435; + }; + 6B324CFC111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 571"; + rLen = 644; + rLoc = 17398; + rType = 0; + vrLen = 996; + vrLoc = 17150; + }; + 6B324CFD111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 1044"; + rLen = 0; + rLoc = 30613; + rType = 0; + vrLen = 1240; + vrLoc = 30352; + }; + 6B324CFE111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 674"; + rLen = 0; + rLoc = 17919; + rType = 0; + vrLen = 1060; + vrLoc = 17393; + }; + 6B324CFF111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 324"; + rLen = 0; + rLoc = 8758; + rType = 0; + vrLen = 604; + vrLoc = 8158; + }; + 6B324D00111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; + name = "DetourDebugDraw.cpp: 142"; + rLen = 0; + rLoc = 4042; + rType = 0; + vrLen = 889; + vrLoc = 3709; + }; + 6B324D01111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 903"; + rLen = 0; + rLoc = 24730; + rType = 0; + vrLen = 728; + vrLoc = 24435; + }; + 6B324D02111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 674"; + rLen = 0; + rLoc = 17919; + rType = 0; + vrLen = 1060; + vrLoc = 17393; + }; + 6B324D03111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 571"; + rLen = 644; + rLoc = 17398; + rType = 0; + vrLen = 996; + vrLoc = 17150; + }; + 6B324D04111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 1044"; + rLen = 0; + rLoc = 30613; + rType = 0; + vrLen = 1240; + vrLoc = 30352; + }; + 6B324D05111C7B0900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 794"; + rLen = 0; + rLoc = 21084; + rType = 0; + vrLen = 1051; + vrLoc = 20616; + }; 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 492}}"; @@ -1244,8 +5644,8 @@ 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {815, 6992}}"; - sepNavSelRange = "{1047, 0}"; - sepNavVisRange = "{837, 735}"; + sepNavSelRange = "{944, 0}"; + sepNavVisRange = "{202, 1250}"; }; }; 6B555DF6100B273500247EA3 /* stb_truetype.h */ = { @@ -1257,9 +5657,9 @@ }; 6B624169103434880002E346 /* RecastMeshDetail.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 18532}}"; - sepNavSelRange = "{15973, 0}"; - sepNavVisRange = "{15819, 770}"; + sepNavIntBoundsRect = "{{0, 0}, {859, 18592}}"; + sepNavSelRange = "{3741, 396}"; + sepNavVisRange = "{3649, 617}"; sepNavWindowFrame = "{{61, 36}, {1011, 695}}"; }; }; @@ -1297,7 +5697,7 @@ ignoreCount = 0; lineNumber = 251; location = Recast; - modificationTime = 286725198.351409; + modificationTime = 287078558.540658; state = 1; }; 6B84BE1D110DF6C6007D997B /* Sample_TileMesh.cpp:478 */ = { @@ -1314,7 +5714,7 @@ ignoreCount = 0; lineNumber = 478; location = Recast; - modificationTime = 286725198.351851; + modificationTime = 287078558.540979; state = 1; }; 6B8632970F78114600E2684A /* Recast */ = { @@ -1385,31 +5785,31 @@ }; 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 33168}}"; - sepNavSelRange = "{17949, 0}"; - sepNavVisRange = "{17536, 670}"; + sepNavIntBoundsRect = "{{0, 0}, {852, 33184}}"; + sepNavSelRange = "{24730, 0}"; + sepNavVisRange = "{24435, 728}"; sepNavWindowFrame = "{{15, 51}, {1214, 722}}"; }; }; 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 10832}}"; - sepNavSelRange = "{18744, 0}"; - sepNavVisRange = "{18315, 1016}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 10688}}"; + sepNavSelRange = "{19262, 0}"; + sepNavVisRange = "{18880, 586}"; }; }; 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 7552}}"; - sepNavSelRange = "{967, 0}"; - sepNavVisRange = "{919, 972}"; + sepNavIntBoundsRect = "{{0, 0}, {845, 7872}}"; + sepNavSelRange = "{16897, 0}"; + sepNavVisRange = "{16291, 1183}"; }; }; 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 1040}}"; - sepNavSelRange = "{2289, 0}"; - sepNavVisRange = "{1214, 1109}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 1184}}"; + sepNavSelRange = "{1550, 0}"; + sepNavVisRange = "{1215, 539}"; }; }; 6B8DE89210B6A4B900DF20FB /* PBXTextBookmark */ = { @@ -1417,7 +5817,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = detail; rLen = 0; - rLoc = 16893; + rLoc = 17386; rType = 0; vrLen = 1182; vrLoc = 9676; @@ -1434,16 +5834,16 @@ }; 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 10832}}"; - sepNavSelRange = "{15494, 0}"; - sepNavVisRange = "{14597, 894}"; + sepNavIntBoundsRect = "{{0, 0}, {887, 11376}}"; + sepNavSelRange = "{17398, 644}"; + sepNavVisRange = "{17150, 996}"; }; }; 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1160, 17728}}"; - sepNavSelRange = "{3152, 0}"; - sepNavVisRange = "{2752, 502}"; + sepNavIntBoundsRect = "{{0, 0}, {943, 18688}}"; + sepNavSelRange = "{30613, 0}"; + sepNavVisRange = "{30352, 1240}"; }; }; 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */ = { @@ -1503,23 +5903,23 @@ }; 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {887, 11024}}"; - sepNavSelRange = "{4563, 0}"; - sepNavVisRange = "{4249, 423}"; + sepNavIntBoundsRect = "{{0, 0}, {887, 11424}}"; + sepNavSelRange = "{6946, 22}"; + sepNavVisRange = "{8088, 1081}"; }; }; 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 1264}}"; - sepNavSelRange = "{2451, 0}"; - sepNavVisRange = "{1640, 1396}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 1472}}"; + sepNavSelRange = "{3289, 0}"; + sepNavVisRange = "{1853, 1623}"; }; }; 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 6432}}"; - sepNavSelRange = "{9433, 0}"; - sepNavVisRange = "{9094, 926}"; + sepNavIntBoundsRect = "{{0, 0}, {1195, 7520}}"; + sepNavSelRange = "{10885, 0}"; + sepNavVisRange = "{9938, 326}"; }; }; 6BB7FDC010F37703006DA0A6 /* PBXTextBookmark */ = { @@ -1627,7 +6027,7 @@ fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; name = "RecastMesh.cpp: 1103"; rLen = 0; - rLoc = 28918; + rLoc = 29199; rType = 0; vrLen = 915; vrLoc = 27462; @@ -1654,9 +6054,9 @@ }; 6BB93C7710CFE1D500F74F2B /* DebugDraw.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 2112}}"; - sepNavSelRange = "{2441, 13}"; - sepNavVisRange = "{1854, 1113}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 2256}}"; + sepNavSelRange = "{2344, 0}"; + sepNavVisRange = "{1037, 1019}"; }; }; 6BB93C7810CFE1D500F74F2B /* DetourDebugDraw.h */ = { @@ -1670,33 +6070,33 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1181, 624}}"; sepNavSelRange = "{1032, 0}"; - sepNavVisRange = "{202, 2149}"; + sepNavVisRange = "{202, 2119}"; }; }; 6BB93C7A10CFE1D500F74F2B /* DebugDraw.cpp */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {815, 6064}}"; sepNavSelRange = "{6795, 0}"; - sepNavVisRange = "{6353, 1022}"; + sepNavVisRange = "{6353, 962}"; }; }; 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 7728}}"; - sepNavSelRange = "{1246, 0}"; - sepNavVisRange = "{591, 950}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 7936}}"; + sepNavSelRange = "{4042, 0}"; + sepNavVisRange = "{3709, 889}"; }; }; 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 11088}}"; - sepNavSelRange = "{2308, 0}"; - sepNavVisRange = "{2132, 616}"; + sepNavIntBoundsRect = "{{0, 0}, {901, 11248}}"; + sepNavSelRange = "{13512, 0}"; + sepNavVisRange = "{12982, 723}"; }; }; 6BB93CF410CFEC4500F74F2B /* RecastDump.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 467}}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 490}}"; sepNavSelRange = "{964, 0}"; sepNavVisRange = "{0, 1149}"; sepNavWindowFrame = "{{38, 15}, {1174, 737}}"; @@ -1704,9 +6104,9 @@ }; 6BB93CF510CFEC4500F74F2B /* RecastDump.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 1616}}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 1648}}"; sepNavSelRange = "{1801, 0}"; - sepNavVisRange = "{1096, 522}"; + sepNavVisRange = "{1002, 681}"; }; }; 6BB93D1510CFFC6D00F74F2B /* PBXTextBookmark */ = { @@ -1734,7 +6134,7 @@ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; name = "Sample.h: 13"; rLen = 0; - rLoc = 1335; + rLoc = 2012; rType = 0; vrLen = 783; vrLoc = 664; @@ -1788,9 +6188,9 @@ }; 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 2512}}"; - sepNavSelRange = "{2747, 0}"; - sepNavVisRange = "{2271, 695}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 2544}}"; + sepNavSelRange = "{1903, 0}"; + sepNavVisRange = "{1659, 600}"; }; }; 6BCF32441104CDB5009445BF /* PBXTextBookmark */ = { @@ -1798,7 +6198,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 808"; rLen = 0; - rLoc = 21391; + rLoc = 22247; rType = 0; vrLen = 677; vrLoc = 21177; @@ -1848,7 +6248,7 @@ fRef = 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */; name = "OffMeshConnectionTool.cpp: 116"; rLen = 0; - rLoc = 3052; + rLoc = 3173; rType = 0; vrLen = 657; vrLoc = 2637; @@ -1858,7 +6258,7 @@ fRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; name = "DetourDebugDraw.cpp: 185"; rLen = 0; - rLoc = 4284; + rLoc = 4401; rType = 0; vrLen = 1230; vrLoc = 4689; @@ -1988,7 +6388,7 @@ fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; name = "RecastMesh.cpp: 1148"; rLen = 16; - rLoc = 30870; + rLoc = 31456; rType = 0; vrLen = 536; vrLoc = 28828; @@ -1998,7 +6398,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 59"; rLen = 6; - rLoc = 1678; + rLoc = 1681; rType = 0; vrLen = 342; vrLoc = 1510; @@ -2048,7 +6448,7 @@ fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; name = "DetourNavMeshBuilder.h: 32"; rLen = 0; - rLoc = 1191; + rLoc = 1258; rType = 0; vrLen = 858; vrLoc = 1035; @@ -2058,7 +6458,7 @@ fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; name = "DetourNavMeshBuilder.h: 54"; rLen = 0; - rLoc = 1796; + rLoc = 1942; rType = 0; vrLen = 826; vrLoc = 1065; @@ -2068,7 +6468,7 @@ fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; name = "DetourNavMeshBuilder.h: 54"; rLen = 422; - rLoc = 1796; + rLoc = 1942; rType = 0; vrLen = 856; vrLoc = 1035; @@ -2078,7 +6478,7 @@ fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; name = "DetourNavMeshBuilder.cpp: 575"; rLen = 0; - rLoc = 16439; + rLoc = 16574; rType = 0; vrLen = 803; vrLoc = 15718; @@ -2088,7 +6488,7 @@ fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; name = "DetourNavMeshBuilder.h: 55"; rLen = 0; - rLoc = 2222; + rLoc = 2368; rType = 0; vrLen = 856; vrLoc = 1035; @@ -2098,7 +6498,7 @@ fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; name = "DetourNavMeshBuilder.h: 40"; rLen = 0; - rLoc = 1442; + rLoc = 1588; rType = 0; vrLen = 1059; vrLoc = 1264; @@ -2108,7 +6508,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 361"; rLen = 0; - rLoc = 16456; + rLoc = 16949; rType = 0; vrLen = 1227; vrLoc = 15736; @@ -2118,7 +6518,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 361"; rLen = 0; - rLoc = 16456; + rLoc = 16949; rType = 0; vrLen = 1311; vrLoc = 15654; @@ -2128,7 +6528,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 361"; rLen = 0; - rLoc = 16456; + rLoc = 16949; rType = 0; vrLen = 1069; vrLoc = 2551; @@ -2138,7 +6538,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 34"; rLen = 0; - rLoc = 1412; + rLoc = 1449; rType = 0; vrLen = 1189; vrLoc = 667; @@ -2202,7 +6602,7 @@ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; name = "Sample.h: 88"; rLen = 105; - rLoc = 2504; + rLoc = 3184; rType = 0; vrLen = 1090; vrLoc = 2133; @@ -2212,7 +6612,7 @@ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; name = "Sample.h: 85"; rLen = 0; - rLoc = 2415; + rLoc = 3095; rType = 0; vrLen = 1034; vrLoc = 2216; @@ -2812,7 +7212,7 @@ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; name = "Sample.h: 98"; rLen = 0; - rLoc = 2990; + rLoc = 3670; rType = 0; vrLen = 988; vrLoc = 2237; @@ -2822,7 +7222,7 @@ fRef = 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */; name = "OffMeshConnectionTool.cpp: 128"; rLen = 5; - rLoc = 3022; + rLoc = 3130; rType = 0; vrLen = 650; vrLoc = 2804; @@ -2992,7 +7392,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 654"; rLen = 0; - rLoc = 16632; + rLoc = 16647; rType = 0; vrLen = 1087; vrLoc = 16439; @@ -3002,7 +7402,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 641"; rLen = 0; - rLoc = 16265; + rLoc = 16280; rType = 0; vrLen = 1051; vrLoc = 16406; @@ -3052,7 +7452,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 460"; rLen = 0; - rLoc = 10545; + rLoc = 10560; rType = 0; vrLen = 744; vrLoc = 10567; @@ -3082,7 +7482,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 555"; rLen = 0; - rLoc = 13174; + rLoc = 13189; rType = 0; vrLen = 1338; vrLoc = 13335; @@ -3092,7 +7492,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 179"; rLen = 0; - rLoc = 4527; + rLoc = 4547; rType = 0; vrLen = 596; vrLoc = 4166; @@ -3102,7 +7502,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 179"; rLen = 0; - rLoc = 4527; + rLoc = 4547; rType = 0; vrLen = 553; vrLoc = 4166; @@ -3112,7 +7512,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 180"; rLen = 0; - rLoc = 4527; + rLoc = 4547; rType = 0; vrLen = 533; vrLoc = 4166; @@ -3122,7 +7522,7 @@ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 27"; rLen = 0; - rLoc = 1033; + rLoc = 1178; rType = 0; vrLen = 880; vrLoc = 960; @@ -3132,7 +7532,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 205"; rLen = 0; - rLoc = 4987; + rLoc = 5007; rType = 0; vrLen = 580; vrLoc = 4705; @@ -3142,7 +7542,7 @@ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 27"; rLen = 0; - rLoc = 1033; + rLoc = 1178; rType = 0; vrLen = 880; vrLoc = 960; @@ -3152,7 +7552,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 207"; rLen = 0; - rLoc = 5399; + rLoc = 5560; rType = 0; vrLen = 580; vrLoc = 4693; @@ -3162,7 +7562,7 @@ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 27"; rLen = 0; - rLoc = 1033; + rLoc = 1178; rType = 0; vrLen = 880; vrLoc = 960; @@ -3172,7 +7572,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 210"; rLen = 0; - rLoc = 5132; + rLoc = 5152; rType = 0; vrLen = 725; vrLoc = 4800; @@ -3182,7 +7582,7 @@ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 27"; rLen = 0; - rLoc = 1033; + rLoc = 1178; rType = 0; vrLen = 880; vrLoc = 960; @@ -3192,7 +7592,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 211"; rLen = 0; - rLoc = 5161; + rLoc = 5202; rType = 0; vrLen = 537; vrLoc = 4794; @@ -3202,7 +7602,7 @@ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 27"; rLen = 0; - rLoc = 1033; + rLoc = 1178; rType = 0; vrLen = 880; vrLoc = 960; @@ -3212,7 +7612,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 230"; rLen = 0; - rLoc = 5858; + rLoc = 6142; rType = 0; vrLen = 679; vrLoc = 5207; @@ -3238,17 +7638,29 @@ vrLoc = 5947; }; 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.h; + name = BoxVolumeTool.h; + path = /Users/memon/Code/recastnavigation/RecastDemo/Include/BoxVolumeTool.h; + sourceTree = ""; uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 768}}"; - sepNavSelRange = "{1161, 11}"; - sepNavVisRange = "{919, 603}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 880}}"; + sepNavSelRange = "{1362, 51}"; + sepNavVisRange = "{1102, 591}"; }; }; 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.cpp; + name = BoxVolumeTool.cpp; + path = /Users/memon/Code/recastnavigation/RecastDemo/Source/BoxVolumeTool.cpp; + sourceTree = ""; uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 2448}}"; - sepNavSelRange = "{3274, 0}"; - sepNavVisRange = "{1243, 527}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 4604}}"; + sepNavSelRange = "{1094, 0}"; + sepNavVisRange = "{1038, 613}"; }; }; 6BF7C3CC11131F26002B3F46 /* PBXTextBookmark */ = { @@ -3266,7 +7678,7 @@ fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; name = "BoxVolumeTool.h: 32"; rLen = 11; - rLoc = 1161; + rLoc = 1165; rType = 0; vrLen = 603; vrLoc = 919; @@ -3276,7 +7688,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 235"; rLen = 0; - rLoc = 5946; + rLoc = 6230; rType = 0; vrLen = 569; vrLoc = 5290; @@ -3286,7 +7698,7 @@ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 63"; rLen = 0; - rLoc = 2658; + rLoc = 3093; rType = 0; vrLen = 1349; vrLoc = 1517; @@ -3296,7 +7708,7 @@ fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; name = "BoxVolumeTool.h: 1"; rLen = 0; - rLoc = 1548; + rLoc = 1693; rType = 0; vrLen = 0; vrLoc = 0; @@ -3306,7 +7718,7 @@ fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; name = "BoxVolumeTool.h: 1"; rLen = 0; - rLoc = 1548; + rLoc = 1693; rType = 0; vrLen = 0; vrLoc = 0; @@ -3335,7 +7747,7 @@ isa = PBXTextBookmark; fRef = 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */; name = "OffMeshConnectionTool.cpp: 1"; - rLen = 3800; + rLen = 3921; rLoc = 0; rType = 0; vrLen = 536; @@ -3346,7 +7758,7 @@ fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; name = "BoxVolumeTool.h: 24"; rLen = 0; - rLoc = 1018; + rLoc = 1021; rType = 0; vrLen = 1106; vrLoc = 0; @@ -3366,7 +7778,7 @@ fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; name = "BoxVolumeTool.h: 35"; rLen = 0; - rLoc = 1204; + rLoc = 1340; rType = 0; vrLen = 589; vrLoc = 943; @@ -3376,7 +7788,7 @@ fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; name = "BoxVolumeTool.h: 31"; rLen = 0; - rLoc = 1135; + rLoc = 1141; rType = 0; vrLen = 613; vrLoc = 919; @@ -3386,7 +7798,7 @@ fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; name = "BoxVolumeTool.h: 31"; rLen = 10; - rLoc = 1142; + rLoc = 1146; rType = 0; vrLen = 609; vrLoc = 919; @@ -3396,7 +7808,7 @@ fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; name = "BoxVolumeTool.h: 31"; rLen = 0; - rLoc = 1152; + rLoc = 1156; rType = 0; vrLen = 609; vrLoc = 919; @@ -3406,7 +7818,7 @@ fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; name = "BoxVolumeTool.cpp: 117"; rLen = 0; - rLoc = 2864; + rLoc = 1091; rType = 0; vrLen = 429; vrLoc = 2489; @@ -3416,7 +7828,7 @@ fRef = 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */; name = "BoxVolumeTool.h: 32"; rLen = 11; - rLoc = 1161; + rLoc = 1165; rType = 0; vrLen = 603; vrLoc = 919; @@ -3426,7 +7838,7 @@ fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; name = "BoxVolumeTool.cpp: 141"; rLen = 0; - rLoc = 3276; + rLoc = 1091; rType = 0; vrLen = 693; vrLoc = 2931; @@ -3436,7 +7848,7 @@ fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; name = "BoxVolumeTool.cpp: 139"; rLen = 0; - rLoc = 3274; + rLoc = 1091; rType = 0; vrLen = 696; vrLoc = 2928; @@ -3446,7 +7858,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 241"; rLen = 0; - rLoc = 6113; + rLoc = 6397; rType = 0; vrLen = 569; vrLoc = 5290; @@ -3455,8 +7867,8 @@ isa = PBXTextBookmark; fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 64"; - rLen = 374; - rLoc = 2659; + rLen = 356; + rLoc = 3094; rType = 0; vrLen = 1382; vrLoc = 1483; @@ -3466,7 +7878,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 348"; rLen = 0; - rLoc = 9374; + rLoc = 10075; rType = 0; vrLen = 602; vrLoc = 7685; @@ -3475,8 +7887,8 @@ isa = PBXTextBookmark; fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 42"; - rLen = 13; - rLoc = 1546; + rLen = 0; + rLoc = 1772; rType = 0; vrLen = 663; vrLoc = 939; @@ -3486,7 +7898,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 349"; rLen = 0; - rLoc = 9051; + rLoc = 9893; rType = 0; vrLen = 621; vrLoc = 7798; @@ -3495,8 +7907,8 @@ isa = PBXTextBookmark; fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 40"; - rLen = 110; - rLoc = 1451; + rLen = 0; + rLoc = 1772; rType = 0; vrLen = 663; vrLoc = 939; @@ -3506,7 +7918,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 366"; rLen = 0; - rLoc = 9372; + rLoc = 10073; rType = 0; vrLen = 669; vrLoc = 8473; @@ -3516,7 +7928,7 @@ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 43"; rLen = 0; - rLoc = 1561; + rLoc = 1772; rType = 0; vrLen = 1382; vrLoc = 1676; @@ -3526,7 +7938,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 364"; rLen = 1; - rLoc = 9303; + rLoc = 10001; rType = 0; vrLen = 645; vrLoc = 8473; @@ -3536,7 +7948,7 @@ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 71"; rLen = 0; - rLoc = 2729; + rLoc = 3174; rType = 0; vrLen = 1434; vrLoc = 1602; @@ -3546,7 +7958,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 364"; rLen = 0; - rLoc = 9303; + rLoc = 10001; rType = 0; vrLen = 662; vrLoc = 8433; @@ -3556,7 +7968,7 @@ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 75"; rLen = 12; - rLoc = 3010; + rLoc = 3427; rType = 0; vrLen = 1396; vrLoc = 1640; @@ -3566,7 +7978,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 364"; rLen = 0; - rLoc = 9303; + rLoc = 10001; rType = 0; vrLen = 698; vrLoc = 8433; @@ -3576,7 +7988,7 @@ fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; name = "BoxVolumeTool.cpp: 42"; rLen = 0; - rLoc = 1373; + rLoc = 1091; rType = 0; vrLen = 700; vrLoc = 2954; @@ -3586,7 +7998,7 @@ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 65"; rLen = 0; - rLoc = 2451; + rLoc = 2835; rType = 0; vrLen = 1396; vrLoc = 1640; @@ -3596,7 +8008,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 370"; rLen = 0; - rLoc = 9428; + rLoc = 11986; rType = 0; vrLen = 661; vrLoc = 8472; @@ -3606,7 +8018,7 @@ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; name = "InputGeom.h: 65"; rLen = 0; - rLoc = 2451; + rLoc = 2835; rType = 0; vrLen = 1396; vrLoc = 1640; @@ -3616,7 +8028,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 228"; rLen = 0; - rLoc = 5411; + rLoc = 5572; rType = 0; vrLen = 788; vrLoc = 5132; @@ -3626,7 +8038,7 @@ fRef = 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */; name = "OffMeshConnectionTool.cpp: 145"; rLen = 0; - rLoc = 3415; + rLoc = 3536; rType = 0; vrLen = 707; vrLoc = 2259; @@ -3636,16 +8048,16 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 162"; rLen = 0; - rLoc = 6576; + rLoc = 6736; rType = 0; vrLen = 1603; vrLoc = 5924; }; 6BF7C4531115C277002B3F46 /* RecastArea.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 3648}}"; - sepNavSelRange = "{5636, 0}"; - sepNavVisRange = "{5494, 526}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 5184}}"; + sepNavSelRange = "{8758, 0}"; + sepNavVisRange = "{8158, 604}"; }; }; 6BF7C4571115C403002B3F46 /* RecastArea.cpp */ = { @@ -3670,7 +8082,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 193"; rLen = 0; - rLoc = 4815; + rLoc = 5419; rType = 0; vrLen = 646; vrLoc = 4301; @@ -3680,7 +8092,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1151"; rLen = 0; - rLoc = 31453; + rLoc = 31718; rType = 0; vrLen = 1087; vrLoc = 30878; @@ -3720,7 +8132,7 @@ fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; name = "BoxVolumeTool.cpp: 140"; rLen = 0; - rLoc = 3274; + rLoc = 1091; rType = 0; vrLen = 527; vrLoc = 1243; @@ -3740,7 +8152,7 @@ fRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; name = "BoxVolumeTool.cpp: 140"; rLen = 0; - rLoc = 3274; + rLoc = 1091; rType = 0; vrLen = 527; vrLoc = 1243; @@ -3760,7 +8172,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 395"; rLen = 0; - rLoc = 9528; + rLoc = 11986; rType = 0; vrLen = 863; vrLoc = 8852; @@ -3780,7 +8192,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 395"; rLen = 0; - rLoc = 9528; + rLoc = 11986; rType = 0; vrLen = 865; vrLoc = 8850; @@ -3810,7 +8222,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 406"; rLen = 0; - rLoc = 9906; + rLoc = 11986; rType = 0; vrLen = 911; vrLoc = 9094; @@ -3840,7 +8252,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 401"; rLen = 0; - rLoc = 9722; + rLoc = 11986; rType = 0; vrLen = 911; vrLoc = 9094; @@ -3900,7 +8312,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 392"; rLen = 0; - rLoc = 9433; + rLoc = 11986; rType = 0; vrLen = 926; vrLoc = 9094; @@ -3910,7 +8322,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 392"; rLen = 0; - rLoc = 9433; + rLoc = 11986; rType = 0; vrLen = 926; vrLoc = 9094; @@ -3980,7 +8392,7 @@ fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; name = "RecastMesh.cpp: 1174"; rLen = 0; - rLoc = 31130; + rLoc = 31716; rType = 0; vrLen = 621; vrLoc = 29610; @@ -4020,7 +8432,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 689"; rLen = 0; - rLoc = 18266; + rLoc = 18275; rType = 0; vrLen = 721; vrLoc = 17655; @@ -4030,7 +8442,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 681"; rLen = 0; - rLoc = 18042; + rLoc = 18051; rType = 0; vrLen = 851; vrLoc = 17548; @@ -4040,7 +8452,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1071"; rLen = 0; - rLoc = 29525; + rLoc = 29790; rType = 0; vrLen = 853; vrLoc = 28942; @@ -4050,7 +8462,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 178"; rLen = 0; - rLoc = 4563; + rLoc = 5167; rType = 0; vrLen = 423; vrLoc = 4249; @@ -4060,7 +8472,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 691"; rLen = 0; - rLoc = 18063; + rLoc = 18072; rType = 0; vrLen = 823; vrLoc = 17777; @@ -4070,7 +8482,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1071"; rLen = 0; - rLoc = 29525; + rLoc = 29790; rType = 0; vrLen = 853; vrLoc = 28942; @@ -4080,7 +8492,7 @@ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; name = "NavMeshTesterTool.cpp: 178"; rLen = 0; - rLoc = 4563; + rLoc = 5167; rType = 0; vrLen = 423; vrLoc = 4249; @@ -4090,7 +8502,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 191"; rLen = 0; - rLoc = 7909; + rLoc = 8069; rType = 0; vrLen = 1185; vrLoc = 7213; @@ -4100,7 +8512,7 @@ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; name = "DetourNavMesh.h: 191"; rLen = 0; - rLoc = 7909; + rLoc = 8069; rType = 0; vrLen = 1185; vrLoc = 7213; @@ -4110,7 +8522,7 @@ fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; name = "DetourNavMeshBuilder.h: 63"; rLen = 0; - rLoc = 2289; + rLoc = 2435; rType = 0; vrLen = 1109; vrLoc = 1214; @@ -4120,7 +8532,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 458"; rLen = 0; - rLoc = 10569; + rLoc = 10584; rType = 0; vrLen = 609; vrLoc = 10612; @@ -4130,7 +8542,7 @@ fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; name = "DetourNavMeshBuilder.h: 31"; rLen = 0; - rLoc = 1176; + rLoc = 1243; rType = 0; vrLen = 856; vrLoc = 1013; @@ -4140,7 +8552,7 @@ fRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; name = "DetourNavMeshBuilder.cpp: 640"; rLen = 0; - rLoc = 18744; + rLoc = 18879; rType = 0; vrLen = 1016; vrLoc = 18315; @@ -4160,7 +8572,7 @@ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 606"; rLen = 0; - rLoc = 18564; + rLoc = 19395; rType = 0; vrLen = 872; vrLoc = 18039; @@ -4180,7 +8592,7 @@ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 609"; rLen = 0; - rLoc = 18608; + rLoc = 19439; rType = 0; vrLen = 1035; vrLoc = 16818; @@ -4246,8 +8658,8 @@ isa = PBXTextBookmark; fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 473"; - rLen = 295; - rLoc = 14618; + rLen = 264; + rLoc = 14633; rType = 0; vrLen = 1013; vrLoc = 14323; @@ -4257,7 +8669,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 692"; rLen = 0; - rLoc = 17910; + rLoc = 17919; rType = 0; vrLen = 1050; vrLoc = 17752; @@ -4266,8 +8678,8 @@ isa = PBXTextBookmark; fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 103"; - rLen = 100; - rLoc = 2569; + rLen = 109; + rLoc = 2572; rType = 0; vrLen = 720; vrLoc = 2010; @@ -4277,7 +8689,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 264"; rLen = 0; - rLoc = 6031; + rLoc = 6043; rType = 0; vrLen = 679; vrLoc = 5289; @@ -4286,7 +8698,7 @@ isa = PBXTextBookmark; fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 38"; - rLen = 27; + rLen = 30; rLoc = 1394; rType = 0; vrLen = 796; @@ -4297,7 +8709,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 38"; rLen = 0; - rLoc = 1391; + rLoc = 1394; rType = 0; vrLen = 652; vrLoc = 837; @@ -4306,8 +8718,8 @@ isa = PBXTextBookmark; fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 296"; - rLen = 31; - rLoc = 9185; + rLen = 34; + rLoc = 9197; rType = 0; vrLen = 609; vrLoc = 8935; @@ -4317,7 +8729,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 346"; rLen = 0; - rLoc = 7681; + rLoc = 7696; rType = 0; vrLen = 1097; vrLoc = 7578; @@ -4347,7 +8759,7 @@ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 303"; rLen = 0; - rLoc = 9281; + rLoc = 9296; rType = 0; vrLen = 680; vrLoc = 8883; @@ -4387,7 +8799,7 @@ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; name = "Sample.h: 38"; rLen = 19; - rLoc = 1392; + rLoc = 2069; rType = 0; vrLen = 892; vrLoc = 942; @@ -4417,7 +8829,7 @@ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 302"; rLen = 0; - rLoc = 9280; + rLoc = 9295; rType = 0; vrLen = 720; vrLoc = 8859; @@ -4427,7 +8839,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 346"; rLen = 0; - rLoc = 7681; + rLoc = 7696; rType = 0; vrLen = 1222; vrLoc = 7540; @@ -4437,7 +8849,7 @@ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; name = "Sample.h: 38"; rLen = 19; - rLoc = 1392; + rLoc = 2069; rType = 0; vrLen = 892; vrLoc = 942; @@ -4447,7 +8859,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 68"; rLen = 1627; - rLoc = 1882; + rLoc = 1885; rType = 0; vrLen = 797; vrLoc = 2714; @@ -4537,7 +8949,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 69"; rLen = 0; - rLoc = 1867; + rLoc = 1870; rType = 0; vrLen = 396; vrLoc = 1676; @@ -4557,7 +8969,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 766"; rLen = 0; - rLoc = 22538; + rLoc = 22553; rType = 0; vrLen = 847; vrLoc = 22213; @@ -4577,7 +8989,7 @@ fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; name = "Recast.h: 252"; rLen = 0; - rLoc = 9360; + rLoc = 9433; rType = 0; vrLen = 892; vrLoc = 8785; @@ -4637,7 +9049,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 847"; rLen = 0; - rLoc = 22633; + rLoc = 23489; rType = 0; vrLen = 1743; vrLoc = 22419; @@ -4667,7 +9079,7 @@ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 639"; rLen = 138; - rLoc = 19807; + rLoc = 20638; rType = 0; vrLen = 2394; vrLoc = 19013; @@ -4677,7 +9089,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 1089"; rLen = 0; - rLoc = 32465; + rLoc = 33317; rType = 0; vrLen = 2773; vrLoc = 31899; @@ -4687,7 +9099,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 847"; rLen = 0; - rLoc = 22633; + rLoc = 23489; rType = 0; vrLen = 1743; vrLoc = 22419; @@ -4707,7 +9119,7 @@ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 485"; rLen = 0; - rLoc = 15064; + rLoc = 15048; rType = 0; vrLen = 876; vrLoc = 14618; @@ -4717,7 +9129,7 @@ fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; name = "Recast.h: 550"; rLen = 0; - rLoc = 19796; + rLoc = 20803; rType = 0; vrLen = 1291; vrLoc = 19607; @@ -4764,7 +9176,7 @@ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 493"; rLen = 0; - rLoc = 15353; + rLoc = 15337; rType = 0; vrLen = 860; vrLoc = 14911; @@ -4784,7 +9196,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 124"; rLen = 0; - rLoc = 3152; + rLoc = 3155; rType = 0; vrLen = 502; vrLoc = 2752; @@ -4794,7 +9206,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 124"; rLen = 0; - rLoc = 3152; + rLoc = 3155; rType = 0; vrLen = 502; vrLoc = 2752; @@ -4804,7 +9216,7 @@ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 499"; rLen = 0; - rLoc = 15494; + rLoc = 15478; rType = 0; vrLen = 894; vrLoc = 14597; @@ -4824,7 +9236,7 @@ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; name = "Sample_SoloMeshSimple.cpp: 499"; rLen = 0; - rLoc = 15494; + rLoc = 15478; rType = 0; vrLen = 894; vrLoc = 14597; diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 index 7b2525a..c98ee67 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 @@ -281,13 +281,14 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 55 + 43 + 35 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 606}, {358, 643}} + {{0, 269}, {358, 643}} PBXTopSmartGroupGIDs @@ -322,7 +323,7 @@ PBXProjectModuleGUID 6B8632A30F78115100E2684A PBXProjectModuleLabel - imguiRenderGL.cpp + Sample_TileMesh.cpp PBXSplitModuleInNavigatorKey Split0 @@ -330,30 +331,25 @@ PBXProjectModuleGUID 6B8632A40F78115100E2684A PBXProjectModuleLabel - imguiRenderGL.cpp + Sample_TileMesh.cpp _historyCapacity 0 bookmark - 6B324AE9111C07AB00EBD2FD + 6B324D05111C7B0900EBD2FD history 6B8DE70D10B01BBF00DF20FB - 6BB93D1510CFFC6D00F74F2B 6BBB883C10EA9B6F008FEA1F 6BB7FDC010F37703006DA0A6 6BB7FDC110F37703006DA0A6 - 6BB7FF6D10F4E8E2006DA0A6 6B69739F10FFCA4500984788 6BCF341A1105EC43009445BF 6BF7BE1F110F0792002B3F46 6BF7C0E511116E74002B3F46 - 6BF7C0EE11116E74002B3F46 6BF7C1D01111BCF2002B3F46 6BF7C2441111DAC1002B3F46 6BF7C2761112BE4F002B3F46 6BF7C2851112C348002B3F46 - 6BF7C2BD1112D453002B3F46 - 6BF7C2EF1112D646002B3F46 6BF7C3211112DB82002B3F46 6BF7C3431112E74B002B3F46 6BF7C36E1112EB25002B3F46 @@ -361,48 +357,52 @@ 6BF7C394111316AD002B3F46 6BF7C395111316AD002B3F46 6BF7C3CC11131F26002B3F46 - 6BF7C3CF11131F26002B3F46 - 6BF7C4021113209A002B3F46 6BF7C4641115C514002B3F46 - 6BF7C4821115C7C4002B3F46 6BF7C4831115C7C4002B3F46 - 6BF7C50D1115DB96002B3F46 - 6BF7C50E1115DB96002B3F46 - 6BF7C5241115FA3B002B3F46 - 6BF7C5BE1116E1C6002B3F46 - 6BF7C5D41116E3A1002B3F46 - 6BF7C5E61116E464002B3F46 - 6BF7C5ED1116F280002B3F46 6BF7C5F91116F346002B3F46 - 6BF7C6581117142A002B3F46 6BF7C6591117142A002B3F46 6BF7C67C1117163B002B3F46 6BF7C67D1117163B002B3F46 - 6BF7C68C111720C6002B3F46 - 6BF7C69A11172159002B3F46 6BF7C69B11172159002B3F46 6BF7C6AA11172278002B3F46 - 6BF7C6B1111722A5002B3F46 - 6BF7C6B5111761C3002B3F46 6B324A7C111BF65400EBD2FD - 6B324AA7111BF92500EBD2FD - 6B324AC1111C00D700EBD2FD - 6B324AC2111C00D700EBD2FD 6B324AC3111C00D700EBD2FD - 6B324AC4111C00D700EBD2FD 6B324AC5111C00D700EBD2FD - 6B324AC6111C00D700EBD2FD - 6B324AC8111C00D700EBD2FD - 6B324AC9111C00D700EBD2FD 6B324ACA111C00D700EBD2FD 6B324AE6111C07AB00EBD2FD - 6B324AE7111C07AB00EBD2FD + 6B324AEA111C0D9700EBD2FD + 6B324AFB111C0F2700EBD2FD + 6B324B1F111C10C700EBD2FD + 6B324B49111C1AC800EBD2FD + 6B324B4F111C1AC800EBD2FD + 6B324B50111C1AC800EBD2FD + 6B324B51111C1AC800EBD2FD + 6B324B52111C1AC800EBD2FD + 6B324B71111C1C4F00EBD2FD + 6B324B7A111C1C8200EBD2FD + 6B324B8A111C1DE600EBD2FD + 6B324BB8111C4C2B00EBD2FD + 6B324BBB111C4C2B00EBD2FD + 6B324C45111C5C5A00EBD2FD + 6B324C51111C5D1400EBD2FD + 6B324C92111C604500EBD2FD + 6B324C9E111C6DD400EBD2FD + 6B324CB5111C6EEA00EBD2FD + 6B324CC3111C6F6300EBD2FD + 6B324CCE111C759F00EBD2FD + 6B324CDA111C789800EBD2FD + 6B324CF2111C7A9800EBD2FD + 6B324CF9111C7B0900EBD2FD + 6B324CFA111C7B0900EBD2FD + 6B324CFB111C7B0900EBD2FD + 6B324CFC111C7B0900EBD2FD + 6B324CFD111C7B0900EBD2FD + 6B324CFE111C7B0900EBD2FD prevStack 6B9869FC10DFFA98007D8D84 6BBB87E510EA97CC008FEA1F - 6BBB87E910EA97CC008FEA1F 6BBB883F10EA9B6F008FEA1F 6BBB885510EA9ECC008FEA1F 6BBB889D10EAA094008FEA1F @@ -412,7 +412,6 @@ 6BB7FE2110F37CF7006DA0A6 6BB7FE2210F37CF7006DA0A6 6BB7FE5410F3817A006DA0A6 - 6BB7FECF10F4B5E1006DA0A6 6BB7FF2410F4D699006DA0A6 6BB7FF9610F4E8E2006DA0A6 6BB700C310FA3AB1006DA0A6 @@ -428,37 +427,26 @@ 6BF7C0F611116E74002B3F46 6BF7C10811116E74002B3F46 6BF7C10E11116E74002B3F46 - 6BF7C11511116E74002B3F46 6BF7C16E11119D8F002B3F46 6BF7C1E51111BD81002B3F46 6BF7C1F21111C0A6002B3F46 6BF7C15711119BB4002B3F46 6BF7C30C1112D8C1002B3F46 - 6BF7C399111316AD002B3F46 6BF7C39C111316AD002B3F46 6BB7FDD910F37703006DA0A6 6BF7C16711119C69002B3F46 - 6BF7C3D711131F26002B3F46 - 6BF7C3E211131F26002B3F46 6BF7C4661115C514002B3F46 - 6BF7C4671115C514002B3F46 6BF7C46A1115C514002B3F46 6BF7C52F1115FA3B002B3F46 - 6BF7C5F11116F280002B3F46 6BF7C6081116F61A002B3F46 6BF7C11111116E74002B3F46 6BF7C66A1117142A002B3F46 - 6BF7C678111715D1002B3F46 6BF7C6801117163B002B3F46 - 6BF7C690111720C6002B3F46 6BF7C6A411172253002B3F46 6B324A7E111BF65400EBD2FD 6B324AA8111BF92500EBD2FD 6B324AA9111BF92500EBD2FD - 6B324AAA111BF92500EBD2FD - 6B324AB5111BFEFD00EBD2FD 6B324AB6111BFEFD00EBD2FD - 6B324ACC111C00D700EBD2FD 6B324ACD111C00D700EBD2FD 6B324ACE111C00D700EBD2FD 6B324ACF111C00D700EBD2FD @@ -468,9 +456,108 @@ 6B324AD3111C00D700EBD2FD 6B324AD4111C00D700EBD2FD 6B324AD5111C00D700EBD2FD - 6B324AD6111C00D700EBD2FD 6B324AD7111C00D700EBD2FD 6B324AE8111C07AB00EBD2FD + 6B324AEE111C0D9700EBD2FD + 6B324AEF111C0D9700EBD2FD + 6B324AF0111C0D9700EBD2FD + 6B324B01111C0F2700EBD2FD + 6B324B02111C0F2700EBD2FD + 6B324B03111C0F2700EBD2FD + 6B324B04111C0F2700EBD2FD + 6B324B05111C0F2700EBD2FD + 6B324B06111C0F2700EBD2FD + 6B324B07111C0F2700EBD2FD + 6B324B08111C0F2700EBD2FD + 6B324B09111C0F2700EBD2FD + 6B324B11111C103600EBD2FD + 6B324B14111C103600EBD2FD + 6B324B15111C103600EBD2FD + 6B324B18111C103600EBD2FD + 6B324B21111C10C700EBD2FD + 6B324B23111C10C700EBD2FD + 6B324B33111C153D00EBD2FD + 6B324B35111C153D00EBD2FD + 6B324B37111C153D00EBD2FD + 6B324B39111C153D00EBD2FD + 6B324B3A111C153D00EBD2FD + 6B324B3B111C153D00EBD2FD + 6B324B55111C1AC800EBD2FD + 6B324B56111C1AC800EBD2FD + 6B324B57111C1AC800EBD2FD + 6B324B5A111C1AC800EBD2FD + 6B324B5B111C1AC800EBD2FD + 6B324B5C111C1AC800EBD2FD + 6B324B5D111C1AC800EBD2FD + 6B324B5E111C1AC800EBD2FD + 6B324B5F111C1AC800EBD2FD + 6B324B60111C1AC800EBD2FD + 6B324B61111C1AC800EBD2FD + 6B324B62111C1AC800EBD2FD + 6B324B63111C1AC800EBD2FD + 6B324B64111C1AC800EBD2FD + 6B324B65111C1AC800EBD2FD + 6B324B66111C1AC800EBD2FD + 6B324B67111C1AC800EBD2FD + 6B324B6C111C1B7500EBD2FD + 6B324B74111C1C4F00EBD2FD + 6B324B75111C1C4F00EBD2FD + 6B324B7D111C1C8200EBD2FD + 6B324B82111C1CF000EBD2FD + 6B324B87111C1D9700EBD2FD + 6B324B8C111C1DE600EBD2FD + 6B324BBD111C4C2B00EBD2FD + 6B324BBE111C4C2B00EBD2FD + 6B324BC1111C4C2B00EBD2FD + 6B324C21111C5B8D00EBD2FD + 6B324C23111C5B8D00EBD2FD + 6B324C25111C5B8D00EBD2FD + 6B324C27111C5B8D00EBD2FD + 6B324C29111C5B8D00EBD2FD + 6B324C2B111C5B8D00EBD2FD + 6B324C2D111C5B8D00EBD2FD + 6B324C2F111C5B8D00EBD2FD + 6B324C30111C5B8D00EBD2FD + 6B324C31111C5B8D00EBD2FD + 6B324C33111C5B8D00EBD2FD + 6B324C34111C5B8D00EBD2FD + 6B324C49111C5C5A00EBD2FD + 6B324C58111C5D1400EBD2FD + 6B324C59111C5D1400EBD2FD + 6B324C5D111C5D1400EBD2FD + 6B324C5F111C5D1400EBD2FD + 6B324C61111C5D1400EBD2FD + 6B324C70111C5DDC00EBD2FD + 6B324C71111C5DDC00EBD2FD + 6B324C79111C5E7C00EBD2FD + 6B324C7A111C5E7C00EBD2FD + 6B324C7B111C5E7C00EBD2FD + 6B324C80111C5EF800EBD2FD + 6B324CA4111C6DD400EBD2FD + 6B324CA5111C6DD400EBD2FD + 6B324CAE111C6E0100EBD2FD + 6B324CB7111C6EEA00EBD2FD + 6B324CB8111C6EEA00EBD2FD + 6B324CB9111C6EEA00EBD2FD + 6B324CBA111C6EEA00EBD2FD + 6B324CBE111C6F3C00EBD2FD + 6B324CC5111C6F6300EBD2FD + 6B324CD0111C759F00EBD2FD + 6B324CD1111C759F00EBD2FD + 6B324CDE111C789800EBD2FD + 6B324CDF111C789800EBD2FD + 6B324CE0111C789800EBD2FD + 6B324CE1111C789800EBD2FD + 6B324CE5111C78DA00EBD2FD + 6BF7C678111715D1002B3F46 + 6B324CF4111C7A9800EBD2FD + 6B324CF5111C7A9800EBD2FD + 6B324CFF111C7B0900EBD2FD + 6B324D00111C7B0900EBD2FD + 6B324D01111C7B0900EBD2FD + 6B324D02111C7B0900EBD2FD + 6B324D03111C7B0900EBD2FD + 6B324D04111C7B0900EBD2FD SplitCount @@ -484,18 +571,18 @@ GeometryConfiguration Frame - {{0, 0}, {876, 423}} + {{0, 0}, {876, 545}} RubberWindowFrame 11 76 1256 702 0 0 1280 778 Module PBXNavigatorGroup Proportion - 423pt + 545pt Proportion - 233pt + 111pt Tabs @@ -509,7 +596,7 @@ GeometryConfiguration Frame - {{10, 27}, {876, 88}} + {{10, 27}, {876, 48}} Module XCDetailModule @@ -525,7 +612,7 @@ GeometryConfiguration Frame - {{10, 27}, {876, 138}} + {{10, 27}, {876, 197}} Module PBXProjectFindModule @@ -563,7 +650,7 @@ GeometryConfiguration Frame - {{10, 27}, {876, 206}} + {{10, 27}, {876, 84}} RubberWindowFrame 11 76 1256 702 0 0 1280 778 @@ -672,8 +759,8 @@ yes sizes - {{0, 0}, {623, 109}} - {{623, 0}, {633, 109}} + {{0, 0}, {625, 125}} + {{625, 0}, {631, 125}} VerticalSplitView @@ -688,8 +775,8 @@ yes sizes - {{0, 0}, {1256, 109}} - {{0, 109}, {1256, 287}} + {{0, 0}, {1256, 125}} + {{0, 125}, {1256, 271}} @@ -719,10 +806,10 @@ Value 85 Summary - 403 + 401 Frame - {{623, 0}, {633, 109}} + {{625, 0}, {631, 125}} Module @@ -785,6 +872,8 @@ 5 WindowOrderList + 6B324BD2111C4F7D00EBD2FD + 6B324BD3111C4F7D00EBD2FD /Users/memon/Code/recastnavigation/RecastDemo/Build/Xcode/Recast.xcodeproj WindowString diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj index 6dc103b..cff04d6 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj @@ -25,6 +25,7 @@ 6B25B6190FFA62BE004F1BC4 /* Sample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; }; 6B25B61D0FFA62BE004F1BC4 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; }; 6B2AEC530FFB8958005BE9CC /* Sample_TileMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; }; + 6B324C66111C5D9A00EBD2FD /* ConvexVolumeTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; }; 6B555DB1100B212E00247EA3 /* imguiRenderGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; }; 6B62416A103434880002E346 /* RecastMeshDetail.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; }; 6B8632DA0F78122C00E2684A /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B8632D90F78122C00E2684A /* SDL.framework */; }; @@ -42,7 +43,6 @@ 6BB93CF610CFEC4500F74F2B /* RecastDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB93CF510CFEC4500F74F2B /* RecastDump.cpp */; }; 6BCF32361104CD05009445BF /* OffMeshConnectionTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */; }; 6BF7C1401111953A002B3F46 /* TestCase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BF7C13F1111953A002B3F46 /* TestCase.cpp */; }; - 6BF7C3C511131B1F002B3F46 /* BoxVolumeTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */; }; 6BF7C4541115C277002B3F46 /* RecastArea.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; @@ -83,6 +83,8 @@ 6B25B6180FFA62BE004F1BC4 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = ../../Source/main.cpp; sourceTree = SOURCE_ROOT; }; 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_TileMesh.h; path = ../../Include/Sample_TileMesh.h; sourceTree = SOURCE_ROOT; }; 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_TileMesh.cpp; path = ../../Source/Sample_TileMesh.cpp; sourceTree = SOURCE_ROOT; }; + 6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConvexVolumeTool.h; path = ../../Include/ConvexVolumeTool.h; sourceTree = SOURCE_ROOT; }; + 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConvexVolumeTool.cpp; path = ../../Source/ConvexVolumeTool.cpp; sourceTree = SOURCE_ROOT; }; 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imguiRenderGL.h; path = ../../Include/imguiRenderGL.h; sourceTree = SOURCE_ROOT; }; 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imguiRenderGL.cpp; path = ../../Source/imguiRenderGL.cpp; sourceTree = SOURCE_ROOT; }; 6B555DF6100B273500247EA3 /* stb_truetype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stb_truetype.h; path = ../../Contrib/stb_truetype.h; sourceTree = SOURCE_ROOT; }; @@ -115,8 +117,6 @@ 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OffMeshConnectionTool.cpp; path = ../../Source/OffMeshConnectionTool.cpp; sourceTree = SOURCE_ROOT; }; 6BF7C13E11119520002B3F46 /* TestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestCase.h; path = ../../Include/TestCase.h; sourceTree = SOURCE_ROOT; }; 6BF7C13F1111953A002B3F46 /* TestCase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TestCase.cpp; path = ../../Source/TestCase.cpp; sourceTree = SOURCE_ROOT; }; - 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoxVolumeTool.h; path = ../../Include/BoxVolumeTool.h; sourceTree = SOURCE_ROOT; }; - 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BoxVolumeTool.cpp; path = ../../Source/BoxVolumeTool.cpp; sourceTree = SOURCE_ROOT; }; 6BF7C4531115C277002B3F46 /* RecastArea.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RecastArea.cpp; path = ../../../Recast/Source/RecastArea.cpp; sourceTree = SOURCE_ROOT; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* Recast.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Recast.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -270,12 +270,12 @@ 6BB7FE8E10F4A175006DA0A6 /* Tools */ = { isa = PBXGroup; children = ( + 6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */, + 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */, 6BCF32341104CD05009445BF /* OffMeshConnectionTool.h */, 6BCF32351104CD05009445BF /* OffMeshConnectionTool.cpp */, 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */, 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */, - 6BF7C3C311131B0F002B3F46 /* BoxVolumeTool.h */, - 6BF7C3C411131B1F002B3F46 /* BoxVolumeTool.cpp */, ); name = Tools; sourceTree = ""; @@ -397,8 +397,8 @@ 6BB7FDA510F36F0E006DA0A6 /* InputGeom.cpp in Sources */, 6BCF32361104CD05009445BF /* OffMeshConnectionTool.cpp in Sources */, 6BF7C1401111953A002B3F46 /* TestCase.cpp in Sources */, - 6BF7C3C511131B1F002B3F46 /* BoxVolumeTool.cpp in Sources */, 6BF7C4541115C277002B3F46 /* RecastArea.cpp in Sources */, + 6B324C66111C5D9A00EBD2FD /* ConvexVolumeTool.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/RecastDemo/Include/BoxVolumeTool.h b/RecastDemo/Include/BoxVolumeTool.h deleted file mode 100644 index 2e6394e..0000000 --- a/RecastDemo/Include/BoxVolumeTool.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// Copyright (c) 2009 Mikko Mononen memon@inside.org -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. -// - -#ifndef BOXVOLUMETOOL_H -#define BOXVOLUMETOOL_H - -#include "Sample.h" - -// Tool to create box volumess for InputGeom - -class BoxVolumeTool : public SampleTool -{ - Sample* m_sample; - float m_hitPos[3]; - bool m_hitPosSet; - float m_areaType; - float m_boxHeight; - -public: - BoxVolumeTool(); - ~BoxVolumeTool(); - - virtual int type() { return TOOL_BOX_VOLUME; } - virtual void init(Sample* sample); - virtual void reset(); - virtual void handleMenu(); - virtual void handleClick(const float* p, bool shift); - virtual void handleRender(); - virtual void handleRenderOverlay(double* proj, double* model, int* view); -}; - -#endif // BOXVOLUMETOOL_H diff --git a/RecastDemo/Include/InputGeom.h b/RecastDemo/Include/InputGeom.h index f188879..0ad965e 100644 --- a/RecastDemo/Include/InputGeom.h +++ b/RecastDemo/Include/InputGeom.h @@ -22,6 +22,15 @@ #include "ChunkyTriMesh.h" #include "MeshLoaderObj.h" +static const int MAX_CONVEXVOL_PTS = 12; +struct ConvexVolume +{ + float verts[MAX_CONVEXVOL_PTS*3]; + float hmin, hmax; + int nverts; + int area; +}; + class InputGeom { rcChunkyTriMesh* m_chunkyMesh; @@ -33,13 +42,14 @@ class InputGeom float m_offMeshConVerts[MAX_OFFMESH_CONNECTIONS*3*2]; float m_offMeshConRads[MAX_OFFMESH_CONNECTIONS]; unsigned char m_offMeshConDirs[MAX_OFFMESH_CONNECTIONS]; + unsigned char m_offMeshConAreas[MAX_OFFMESH_CONNECTIONS]; + unsigned short m_offMeshConFlags[MAX_OFFMESH_CONNECTIONS]; int m_offMeshConCount; - // Box Volumes. - static const int MAX_BOX_VOLUMES = 256; - float m_boxVolVerts[MAX_BOX_VOLUMES*3*2]; - unsigned char m_boxVolTypes[MAX_BOX_VOLUMES]; - int m_boxVolCount; + // Convex Volumes. + static const int MAX_VOLUMES = 256; + ConvexVolume m_volumes[MAX_VOLUMES]; + int m_volumeCount; public: InputGeom(); @@ -62,17 +72,20 @@ public: const float* getOffMeshConnectionVerts() const { return m_offMeshConVerts; } const float* getOffMeshConnectionRads() const { return m_offMeshConRads; } const unsigned char* getOffMeshConnectionDirs() const { return m_offMeshConDirs; } - void addOffMeshConnection(const float* spos, const float* epos, const float rad, unsigned char bidir); + const unsigned char* getOffMeshConnectionAreas() const { return m_offMeshConAreas; } + const unsigned short* getOffMeshConnectionFlags() const { return m_offMeshConFlags; } + void addOffMeshConnection(const float* spos, const float* epos, const float rad, + unsigned char bidir, unsigned char area, unsigned short flags); void deleteOffMeshConnection(int i); void drawOffMeshConnections(struct duDebugDraw* dd, bool hilight = false); // Box Volumes. - int getBoxVolumeCount() const { return m_boxVolCount; } - const float* getBoxVolumeVerts() const { return m_boxVolVerts; } - const unsigned char* getBoxVolumeTypes() const { return m_boxVolTypes; } - void addBoxVolume(const float* bmin, const float* bmax, unsigned char type); - void deleteBoxVolume(int i); - void drawBoxVolumes(struct duDebugDraw* dd, bool hilight = false); + int getConvexVolumeCount() const { return m_volumeCount; } + const ConvexVolume* getConvexVolumes() const { return m_volumes; } + void addConvexVolume(const float* verts, const int nverts, + const float minh, const float maxh, unsigned char area); + void deleteConvexVolume(int i); + void drawConvexVolumes(struct duDebugDraw* dd, bool hilight = false); }; #endif // INPUTGEOM_H diff --git a/RecastDemo/Include/Sample.h b/RecastDemo/Include/Sample.h index a4912a3..10eed04 100644 --- a/RecastDemo/Include/Sample.h +++ b/RecastDemo/Include/Sample.h @@ -22,6 +22,29 @@ #include "DebugDraw.h" #include "DetourNavMesh.h" + +// These are just sample areas to use consistent values across the samples. +// The use should specify these base on his needs. +enum SamplePolyAreas +{ + SAMPLE_POLYAREA_GROUND, + SAMPLE_POLYAREA_WATER, + SAMPLE_POLYAREA_ROAD, + SAMPLE_POLYAREA_DOOR, + SAMPLE_POLYAREA_GRASS, + SAMPLE_POLYAREA_JUMP, +}; +enum SamplePolyFlags +{ + SAMPLE_POLYFLAGS_WALK = 0x01, // Ability to walk (ground, grass, road) + SAMPLE_POLYFLAGS_SWIM = 0x02, // Ability to swim (water). + SAMPLE_POLYFLAGS_DOOR = 0x04, // Ability to move through doors. + SAMPLE_POLYFLAGS_JUMP = 0x08, // Ability to jump. + SAMPLE_POLYFLAGS_ALL = 0xffff // All abilities. +}; + + +// OpenGL debug draw implementation. struct DebugDrawGL : public duDebugDraw { virtual void depthMask(bool state); @@ -31,6 +54,7 @@ struct DebugDrawGL : public duDebugDraw virtual void end(); }; +// Tool types. enum SampleToolType { TOOL_NONE = 0, @@ -38,7 +62,7 @@ enum SampleToolType TOOL_TILE_HIGHLIGHT, TOOL_NAVMESH_TESTER, TOOL_OFFMESH_CONNECTION, - TOOL_BOX_VOLUME, + TOOL_CONVEX_VOLUME, }; struct SampleTool diff --git a/RecastDemo/Source/BoxVolumeTool.cpp b/RecastDemo/Source/BoxVolumeTool.cpp deleted file mode 100644 index 658cd84..0000000 --- a/RecastDemo/Source/BoxVolumeTool.cpp +++ /dev/null @@ -1,152 +0,0 @@ -// -// Copyright (c) 2009 Mikko Mononen memon@inside.org -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. -// - -#define _USE_MATH_DEFINES -#include -#include -#include -#include -#include "SDL.h" -#include "SDL_opengl.h" -#include "imgui.h" -#include "BoxVolumeTool.h" -#include "InputGeom.h" -#include "Sample.h" -#include "Recast.h" -#include "RecastDebugDraw.h" -#include "DetourDebugDraw.h" - -#ifdef WIN32 -# define snprintf _snprintf -#endif - -BoxVolumeTool::BoxVolumeTool() : - m_sample(0), - m_hitPosSet(0), - m_areaType(1), - m_boxHeight(5.0f) -{ -} - -BoxVolumeTool::~BoxVolumeTool() -{ -} - -void BoxVolumeTool::init(Sample* sample) -{ - m_sample = sample; -} - -void BoxVolumeTool::reset() -{ - m_hitPosSet = false; -} - -void BoxVolumeTool::handleMenu() -{ - imguiSlider("Box Height", &m_boxHeight, 0.1f, 20.0f, 0.1f); - imguiSlider("Area Type", &m_areaType, 1.0f, 20.0f, 1.0f); - - if (!m_hitPosSet) - { - imguiValue("Click to set connection start."); - } - else - { - imguiValue("Click to set connection end."); - } -} - -void BoxVolumeTool::handleClick(const float* p, bool shift) -{ - if (!m_sample) return; - InputGeom* geom = m_sample->getInputGeom(); - if (!geom) return; - - if (shift) - { - // Delete - // Find nearest link end-point - int nearestIndex = -1; - const float* verts = geom->getBoxVolumeVerts(); - for (int i = 0; i < geom->getBoxVolumeCount(); ++i) - { - const float* bmin = &verts[(i*2+0)*3]; - const float* bmax = &verts[(i*2+1)*3]; - if (p[0] >= bmin[0] && p[0] <= bmax[0] && - p[1] >= bmin[1] && p[1] <= bmax[1] && - p[2] >= bmin[2] && p[2] <= bmax[2]) - { - nearestIndex = i; // Each link has two vertices. - } - } - // If end point close enough, delete it. - if (nearestIndex != -1) - { - geom->deleteBoxVolume(nearestIndex); - } - } - else - { - // Create - if (!m_hitPosSet) - { - vcopy(m_hitPos, p); - m_hitPosSet = true; - } - else - { - float bmin[3], bmax[3]; - vcopy(bmin, m_hitPos); - vcopy(bmax, m_hitPos); - vmin(bmin, p); - vmax(bmax, p); - bmin[1] -= m_boxHeight/4.0f; - bmax[1] = bmin[1]+m_boxHeight; - geom->addBoxVolume(bmin, bmax, (unsigned char)m_areaType); - - m_hitPosSet = false; - } - } - -} - -void BoxVolumeTool::handleRender() -{ - DebugDrawGL dd; - const float s = m_sample->getAgentRadius(); - - if (m_hitPosSet) - duDebugDrawCross(&dd, m_hitPos[0],m_hitPos[1]+0.1f,m_hitPos[2], s, duRGBA(0,0,0,128), 2.0f); - - InputGeom* geom = m_sample->getInputGeom(); - if (geom) - geom->drawBoxVolumes(&dd, true); -} - -void BoxVolumeTool::handleRenderOverlay(double* proj, double* model, int* view) -{ - GLdouble x, y, z; - - // Draw start and end point labels - if (m_hitPosSet && gluProject((GLdouble)m_hitPos[0], (GLdouble)m_hitPos[1], (GLdouble)m_hitPos[2], - model, proj, view, &x, &y, &z)) - { - imguiDrawText((int)x, (int)(y-25), IMGUI_ALIGN_CENTER, "Start", imguiRGBA(0,0,0,220)); - } -} diff --git a/RecastDemo/Source/InputGeom.cpp b/RecastDemo/Source/InputGeom.cpp index fc4f392..f4beddd 100644 --- a/RecastDemo/Source/InputGeom.cpp +++ b/RecastDemo/Source/InputGeom.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "Recast.h" #include "RecastLog.h" #include "InputGeom.h" @@ -108,7 +109,7 @@ InputGeom::InputGeom() : m_chunkyMesh(0), m_mesh(0), m_offMeshConCount(0), - m_boxVolCount(0) + m_volumeCount(0) { } @@ -128,7 +129,7 @@ bool InputGeom::loadMesh(const char* filepath) m_mesh = 0; } m_offMeshConCount = 0; - m_boxVolCount = 0; + m_volumeCount = 0; m_mesh = new rcMeshLoaderObj; if (!m_mesh) @@ -182,7 +183,7 @@ bool InputGeom::load(const char* filePath) fclose(fp); m_offMeshConCount = 0; - m_boxVolCount = 0; + m_volumeCount = 0; delete m_mesh; m_mesh = 0; @@ -216,26 +217,30 @@ bool InputGeom::load(const char* filePath) if (m_offMeshConCount < MAX_OFFMESH_CONNECTIONS) { float* v = &m_offMeshConVerts[m_offMeshConCount*3*2]; - int bidir; + int bidir, area = 0, flags = 0; float rad; - sscanf(row+1, "%f %f %f %f %f %f %f %d", - &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &rad, &bidir); + sscanf(row+1, "%f %f %f %f %f %f %f %d %d %d", + &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &rad, &bidir, &area, &flags); m_offMeshConRads[m_offMeshConCount] = rad; m_offMeshConDirs[m_offMeshConCount] = bidir; + m_offMeshConAreas[m_offMeshConCount] = area; + m_offMeshConFlags[m_offMeshConCount] = flags; m_offMeshConCount++; } } - else if (row[0] == 'b') + else if (row[0] == 'v') { - // Box volumes - if (m_boxVolCount < MAX_BOX_VOLUMES) + // Convex volumes + if (m_volumeCount < MAX_VOLUMES) { - float* v = &m_boxVolVerts[m_boxVolCount*3*2]; - int type; - sscanf(row+1, "%f %f %f %f %f %f %d", - &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &type); - m_boxVolTypes[m_boxVolCount] = (unsigned char)type; - m_boxVolCount++; + ConvexVolume* vol = &m_volumes[m_volumeCount++]; + sscanf(row+1, "%d %d %f %f", &vol->nverts, &vol->area, &vol->hmin, &vol->hmax); + for (int i = 0; i < vol->nverts; ++i) + { + row[0] = '\0'; + src = parseRow(src, srcEnd, row, sizeof(row)/sizeof(char)); + sscanf(row, "%f %f %f", &vol->verts[i*3+0], &vol->verts[i*3+1], &vol->verts[i*3+2]); + } } } } @@ -261,17 +266,19 @@ bool InputGeom::save(const char* filepath) const float* v = &m_offMeshConVerts[i*3*2]; const float rad = m_offMeshConRads[i]; const int bidir = m_offMeshConDirs[i]; - fprintf(fp, "c %f %f %f %f %f %f %f %d\n", - v[0], v[1], v[2], v[3], v[4], v[5], rad, bidir); + const int area = m_offMeshConAreas[i]; + const int flags = m_offMeshConFlags[i]; + fprintf(fp, "c %f %f %f %f %f %f %f %d %d %d\n", + v[0], v[1], v[2], v[3], v[4], v[5], rad, bidir, area, flags); } - // Box volumes - for (int i = 0; i < m_boxVolCount; ++i) + // Convex volumes + for (int i = 0; i < m_volumeCount; ++i) { - const float* v = &m_boxVolVerts[i*3*2]; - const int bidir = m_boxVolTypes[i]; - fprintf(fp, "b %f %f %f %f %f %f %d\n", - v[0], v[1], v[2], v[3], v[4], v[5], bidir); + ConvexVolume* vol = &m_volumes[i]; + fprintf(fp, "v %d %d %f %f\n", vol->nverts, vol->area, vol->hmin, vol->hmax); + for (int i = 0; i < vol->nverts; ++i) + fprintf(fp, "%f %f %f\n", vol->verts[i*3+0], vol->verts[i*3+1], vol->verts[i*3+2]); } fclose(fp); @@ -312,12 +319,15 @@ bool InputGeom::raycastMesh(float* src, float* dst, float& tmin) return hit; } -void InputGeom::addOffMeshConnection(const float* spos, const float* epos, const float rad, unsigned char bidir) +void InputGeom::addOffMeshConnection(const float* spos, const float* epos, const float rad, + unsigned char bidir, unsigned char area, unsigned short flags) { if (m_offMeshConCount >= MAX_OFFMESH_CONNECTIONS) return; float* v = &m_offMeshConVerts[m_offMeshConCount*3*2]; m_offMeshConRads[m_offMeshConCount] = rad; m_offMeshConDirs[m_offMeshConCount] = bidir; + m_offMeshConAreas[m_offMeshConCount] = area; + m_offMeshConFlags[m_offMeshConCount] = flags; vcopy(&v[0], spos); vcopy(&v[3], epos); m_offMeshConCount++; @@ -332,6 +342,8 @@ void InputGeom::deleteOffMeshConnection(int i) vcopy(&dst[3], &src[3]); m_offMeshConRads[i] = m_offMeshConRads[m_offMeshConCount]; m_offMeshConDirs[i] = m_offMeshConDirs[m_offMeshConCount]; + m_offMeshConAreas[i] = m_offMeshConAreas[m_offMeshConCount]; + m_offMeshConFlags[i] = m_offMeshConFlags[m_offMeshConCount]; } void InputGeom::drawOffMeshConnections(duDebugDraw* dd, bool hilight) @@ -365,47 +377,89 @@ void InputGeom::drawOffMeshConnections(duDebugDraw* dd, bool hilight) dd->depthMask(true); } -void InputGeom::addBoxVolume(const float* bmin, const float* bmax, unsigned char type) +void InputGeom::addConvexVolume(const float* verts, const int nverts, + const float minh, const float maxh, unsigned char area) { - if (m_boxVolCount >= MAX_OFFMESH_CONNECTIONS) return; - float* v = &m_boxVolVerts[m_boxVolCount*3*2]; - m_boxVolTypes[m_boxVolCount] = type; - vcopy(&v[0], bmin); - vcopy(&v[3], bmax); - m_boxVolCount++; + if (m_volumeCount >= MAX_VOLUMES) return; + ConvexVolume* vol = &m_volumes[m_volumeCount++]; + memset(vol, 0, sizeof(ConvexVolume)); + memcpy(vol->verts, verts, sizeof(float)*3*nverts); + vol->hmin = minh; + vol->hmax = maxh; + vol->nverts = nverts; + vol->area = area; } -void InputGeom::deleteBoxVolume(int i) +void InputGeom::deleteConvexVolume(int i) { - m_boxVolCount--; - float* src = &m_boxVolVerts[m_boxVolCount*3*2]; - float* dst = &m_boxVolVerts[i*3*2]; - vcopy(&dst[0], &src[0]); - vcopy(&dst[3], &src[3]); - m_boxVolTypes[i] = m_boxVolTypes[m_boxVolCount]; + m_volumeCount--; + m_volumes[i] = m_volumes[m_volumeCount]; } -void InputGeom::drawBoxVolumes(struct duDebugDraw* dd, bool hilight) +void InputGeom::drawConvexVolumes(struct duDebugDraw* dd, bool hilight) { dd->depthMask(false); + + dd->begin(DU_DRAW_TRIS); - dd->begin(DU_DRAW_LINES, 2.0f); - for (int i = 0; i < m_boxVolCount; ++i) + for (int i = 0; i < m_volumeCount; ++i) { - unsigned int col = duIntToCol(m_boxVolTypes[i]+1, 220); - const float* bounds = &m_boxVolVerts[i*3*2]; - duAppendBoxWire(dd, bounds[0],bounds[1],bounds[2],bounds[3],bounds[4],bounds[5], col); + const ConvexVolume* vol = &m_volumes[i]; + unsigned int col = duIntToCol(vol->area, 32); + for (int j = 0, k = vol->nverts-1; j < vol->nverts; k = j++) + { + const float* va = &vol->verts[k*3]; + const float* vb = &vol->verts[j*3]; + + dd->vertex(vol->verts[0],vol->hmax,vol->verts[2], col); + dd->vertex(vb[0],vol->hmax,vb[2], col); + dd->vertex(va[0],vol->hmax,va[2], col); + + dd->vertex(va[0],vol->hmin,va[2], duDarkenColor(col)); + dd->vertex(va[0],vol->hmax,va[2], col); + dd->vertex(vb[0],vol->hmax,vb[2], col); + + dd->vertex(va[0],vol->hmin,va[2], duDarkenColor(col)); + dd->vertex(vb[0],vol->hmax,vb[2], col); + dd->vertex(vb[0],vol->hmin,vb[2], duDarkenColor(col)); + } + } + + dd->end(); + + dd->begin(DU_DRAW_LINES, 2.0f); + for (int i = 0; i < m_volumeCount; ++i) + { + const ConvexVolume* vol = &m_volumes[i]; + unsigned int col = duIntToCol(vol->area, 220); + for (int j = 0, k = vol->nverts-1; j < vol->nverts; k = j++) + { + const float* va = &vol->verts[k*3]; + const float* vb = &vol->verts[j*3]; + dd->vertex(va[0],vol->hmin,va[2], duDarkenColor(col)); + dd->vertex(vb[0],vol->hmin,vb[2], duDarkenColor(col)); + dd->vertex(va[0],vol->hmax,va[2], col); + dd->vertex(vb[0],vol->hmax,vb[2], col); + dd->vertex(va[0],vol->hmin,va[2], duDarkenColor(col)); + dd->vertex(va[0],vol->hmax,va[2], col); + } } dd->end(); - dd->begin(DU_DRAW_POINTS, 4.0f); - for (int i = 0; i < m_boxVolCount; ++i) + dd->begin(DU_DRAW_POINTS, 3.0f); + for (int i = 0; i < m_volumeCount; ++i) { - unsigned int col = duDarkenColor(duIntToCol(m_boxVolTypes[i]+1, 255)); - const float* bounds = &m_boxVolVerts[i*3*2]; - duAppendBoxPoints(dd, bounds[0],bounds[1],bounds[2],bounds[3],bounds[4],bounds[5], col); + const ConvexVolume* vol = &m_volumes[i]; + unsigned int col = duDarkenColor(duIntToCol(vol->area, 255)); + for (int j = 0; j < vol->nverts; ++j) + { + dd->vertex(vol->verts[j*3+0],vol->verts[j*3+1]+0.1f,vol->verts[j*3+2], col); + dd->vertex(vol->verts[j*3+0],vol->hmin,vol->verts[j*3+2], col); + dd->vertex(vol->verts[j*3+0],vol->hmax,vol->verts[j*3+2], col); + } } dd->end(); + dd->depthMask(true); } diff --git a/RecastDemo/Source/NavMeshTesterTool.cpp b/RecastDemo/Source/NavMeshTesterTool.cpp index bc15454..f361ccd 100644 --- a/RecastDemo/Source/NavMeshTesterTool.cpp +++ b/RecastDemo/Source/NavMeshTesterTool.cpp @@ -60,7 +60,7 @@ NavMeshTesterTool::NavMeshTesterTool() : m_sposSet(false), m_eposSet(false) { - m_filter.includeFlags = DT_POLY_GROUND | DT_POLY_OFFMESH_CONNECTION; + m_filter.includeFlags = SAMPLE_POLYFLAGS_ALL; m_filter.excludeFlags = 0; m_polyPickExt[0] = 2; @@ -127,29 +127,56 @@ void NavMeshTesterTool::handleMenu() imguiLabel("Include Flags"); - if (imguiCheck("Ground", (m_filter.includeFlags & DT_POLY_GROUND) ? true : false)) + imguiIndent(); + if (imguiCheck("Walk", (m_filter.includeFlags & SAMPLE_POLYFLAGS_WALK) != 0)) { - m_filter.includeFlags ^= DT_POLY_GROUND; + m_filter.includeFlags ^= SAMPLE_POLYFLAGS_WALK; recalc(); } - if (imguiCheck("Off-Mesh Connections", (m_filter.includeFlags & DT_POLY_OFFMESH_CONNECTION) ? true : false)) + if (imguiCheck("Swim", (m_filter.includeFlags & SAMPLE_POLYFLAGS_SWIM) != 0)) { - m_filter.includeFlags ^= DT_POLY_OFFMESH_CONNECTION; + m_filter.includeFlags ^= SAMPLE_POLYFLAGS_SWIM; recalc(); } + if (imguiCheck("Door", (m_filter.includeFlags & SAMPLE_POLYFLAGS_DOOR) != 0)) + { + m_filter.includeFlags ^= SAMPLE_POLYFLAGS_DOOR; + recalc(); + } + if (imguiCheck("Jump", (m_filter.includeFlags & SAMPLE_POLYFLAGS_JUMP) != 0)) + { + m_filter.includeFlags ^= SAMPLE_POLYFLAGS_JUMP; + recalc(); + } + imguiUnindent(); + imguiSeparator(); imguiLabel("Exclude Flags"); - if (imguiCheck("Ground", (m_filter.excludeFlags & DT_POLY_GROUND) ? true : false)) + imguiIndent(); + if (imguiCheck("Walk", (m_filter.excludeFlags & SAMPLE_POLYFLAGS_WALK) != 0)) { - m_filter.excludeFlags ^= DT_POLY_GROUND; + m_filter.excludeFlags ^= SAMPLE_POLYFLAGS_WALK; recalc(); } - if (imguiCheck("Off-Mesh Connections", (m_filter.excludeFlags & DT_POLY_OFFMESH_CONNECTION) ? true : false)) + if (imguiCheck("Swim", (m_filter.excludeFlags & SAMPLE_POLYFLAGS_SWIM) != 0)) { - m_filter.excludeFlags ^= DT_POLY_OFFMESH_CONNECTION; + m_filter.excludeFlags ^= SAMPLE_POLYFLAGS_SWIM; recalc(); } + if (imguiCheck("Door", (m_filter.excludeFlags & SAMPLE_POLYFLAGS_DOOR) != 0)) + { + m_filter.excludeFlags ^= SAMPLE_POLYFLAGS_DOOR; + recalc(); + } + if (imguiCheck("Jump", (m_filter.excludeFlags & SAMPLE_POLYFLAGS_JUMP) != 0)) + { + m_filter.excludeFlags ^= SAMPLE_POLYFLAGS_JUMP; + recalc(); + } + imguiUnindent(); + + imguiSeparator(); if (m_toolMode == TOOLMODE_PATHFIND_ITER || m_toolMode == TOOLMODE_PATHFIND_STRAIGHT) { diff --git a/RecastDemo/Source/OffMeshConnectionTool.cpp b/RecastDemo/Source/OffMeshConnectionTool.cpp index c059d5b..4f9fcb3 100644 --- a/RecastDemo/Source/OffMeshConnectionTool.cpp +++ b/RecastDemo/Source/OffMeshConnectionTool.cpp @@ -123,7 +123,9 @@ void OffMeshConnectionTool::handleClick(const float* p, bool shift) } else { - geom->addOffMeshConnection(m_hitPos, p, m_sample->getAgentRadius(), m_bidir ? 1 : 0); + const unsigned char area = SAMPLE_POLYAREA_JUMP; + const unsigned short flags = SAMPLE_POLYFLAGS_JUMP; + geom->addOffMeshConnection(m_hitPos, p, m_sample->getAgentRadius(), m_bidir ? 1 : 0, area, flags); m_hitPosSet = false; } } diff --git a/RecastDemo/Source/Sample_SoloMeshSimple.cpp b/RecastDemo/Source/Sample_SoloMeshSimple.cpp index 5a1a3c3..cac68a1 100644 --- a/RecastDemo/Source/Sample_SoloMeshSimple.cpp +++ b/RecastDemo/Source/Sample_SoloMeshSimple.cpp @@ -35,7 +35,7 @@ #include "DetourDebugDraw.h" #include "NavMeshTesterTool.h" #include "OffMeshConnectionTool.h" -#include "BoxVolumeTool.h" +#include "ConvexVolumeTool.h" #ifdef WIN32 # define snprintf _snprintf @@ -100,9 +100,9 @@ void Sample_SoloMeshSimple::handleTools() { setTool(new OffMeshConnectionTool); } - if (imguiCheck("Create Box Volumes", type == TOOL_BOX_VOLUME)) + if (imguiCheck("Create Convex Volumes", type == TOOL_CONVEX_VOLUME)) { - setTool(new BoxVolumeTool); + setTool(new ConvexVolumeTool); } imguiSeparator(); @@ -293,7 +293,7 @@ void Sample_SoloMeshSimple::handleRender() glDepthMask(GL_TRUE); } - m_geom->drawBoxVolumes(&dd); + m_geom->drawConvexVolumes(&dd); if (m_tool) m_tool->handleRender(); @@ -471,13 +471,9 @@ bool Sample_SoloMeshSimple::handleBuild() } // (Optional) Mark areas. - const float* boxVerts = m_geom->getBoxVolumeVerts(); - const unsigned char* boxTypes = m_geom->getBoxVolumeTypes(); - for (int i = 0; i < m_geom->getBoxVolumeCount(); ++i) - { - const float* v = &boxVerts[i*3*2]; - rcMarkBoxArea(&v[0], &v[3], boxTypes[i], *m_chf); - } + const ConvexVolume* vols = m_geom->getConvexVolumes(); + for (int i = 0; i < m_geom->getConvexVolumeCount(); ++i) + rcMarkConvexPolyArea(vols[i].verts, vols[i].nverts, vols[i].hmin, vols[i].hmax, (unsigned char)vols[i].area, *m_chf); // Prepare for region partitioning, by calculating distance field along the walkable surface. if (!rcBuildDistanceField(*m_chf)) @@ -572,11 +568,36 @@ bool Sample_SoloMeshSimple::handleBuild() unsigned char* navData = 0; int navDataSize = 0; + // Update poly flags from areas. + for (int i = 0; i < m_pmesh->npolys; ++i) + { + if (m_pmesh->areas[i] == RC_WALKABLE_AREA) + m_pmesh->areas[i] = SAMPLE_POLYAREA_GROUND; + + if (m_pmesh->areas[i] == SAMPLE_POLYAREA_GROUND || + m_pmesh->areas[i] == SAMPLE_POLYAREA_GRASS || + m_pmesh->areas[i] == SAMPLE_POLYAREA_ROAD) + { + m_pmesh->flags[i] = SAMPLE_POLYFLAGS_WALK; + } + else if (m_pmesh->areas[i] == SAMPLE_POLYAREA_WATER) + { + m_pmesh->flags[i] = SAMPLE_POLYFLAGS_SWIM; + } + else if (m_pmesh->areas[i] == SAMPLE_POLYAREA_DOOR) + { + m_pmesh->flags[i] = SAMPLE_POLYFLAGS_WALK | SAMPLE_POLYFLAGS_DOOR; + } + } + + dtNavMeshCreateParams params; memset(¶ms, 0, sizeof(params)); params.verts = m_pmesh->verts; params.vertCount = m_pmesh->nverts; params.polys = m_pmesh->polys; + params.polyAreas = m_pmesh->areas; + params.polyFlags = m_pmesh->flags; params.polyCount = m_pmesh->npolys; params.nvp = m_pmesh->nvp; params.detailMeshes = m_dmesh->meshes; @@ -587,6 +608,8 @@ bool Sample_SoloMeshSimple::handleBuild() params.offMeshConVerts = m_geom->getOffMeshConnectionVerts(); params.offMeshConRad = m_geom->getOffMeshConnectionRads(); params.offMeshConDir = m_geom->getOffMeshConnectionDirs(); + params.offMeshConAreas = m_geom->getOffMeshConnectionAreas(); + params.offMeshConFlags = m_geom->getOffMeshConnectionFlags(); params.offMeshConCount = m_geom->getOffMeshConnectionCount(); params.walkableHeight = m_agentHeight; params.walkableRadius = m_agentRadius; diff --git a/RecastDemo/Source/Sample_SoloMeshTiled.cpp b/RecastDemo/Source/Sample_SoloMeshTiled.cpp index 94be38b..2abb0fc 100644 --- a/RecastDemo/Source/Sample_SoloMeshTiled.cpp +++ b/RecastDemo/Source/Sample_SoloMeshTiled.cpp @@ -34,7 +34,7 @@ #include "DetourDebugDraw.h" #include "NavMeshTesterTool.h" #include "OffMeshConnectionTool.h" -#include "BoxVolumeTool.h" +#include "ConvexVolumeTool.h" #ifdef WIN32 # define snprintf _snprintf @@ -187,9 +187,9 @@ void Sample_SoloMeshTiled::handleTools() { setTool(new OffMeshConnectionTool); } - if (imguiCheck("Create Box Volumes", type == TOOL_BOX_VOLUME)) + if (imguiCheck("Create Convex Volumes", type == TOOL_CONVEX_VOLUME)) { - setTool(new BoxVolumeTool); + setTool(new ConvexVolumeTool); } if (imguiCheck("Highlight Tile", type == TOOL_TILE_HIGHLIGHT)) { @@ -486,7 +486,7 @@ void Sample_SoloMeshTiled::handleRender() } } - m_geom->drawBoxVolumes(&dd); + m_geom->drawConvexVolumes(&dd); if (m_tool) m_tool->handleRender(); @@ -840,13 +840,10 @@ bool Sample_SoloMeshTiled::handleBuild() continue; } - const float* boxVerts = m_geom->getBoxVolumeVerts(); - const unsigned char* boxTypes = m_geom->getBoxVolumeTypes(); - for (int i = 0; i < m_geom->getBoxVolumeCount(); ++i) - { - const float* v = &boxVerts[i*3*2]; - rcMarkBoxArea(&v[0], &v[3], boxTypes[i], *chf); - } + // (Optional) Mark areas. + const ConvexVolume* vols = m_geom->getConvexVolumes(); + for (int i = 0; i < m_geom->getConvexVolumeCount(); ++i) + rcMarkConvexPolyArea(vols[i].verts, vols[i].nverts, vols[i].hmin, vols[i].hmax, (unsigned char)vols[i].area, *chf); if (!rcBuildDistanceField(*chf)) { @@ -1022,11 +1019,35 @@ bool Sample_SoloMeshTiled::handleBuild() unsigned char* navData = 0; int navDataSize = 0; + // Update poly flags from areas. + for (int i = 0; i < m_pmesh->npolys; ++i) + { + if (m_pmesh->areas[i] == RC_WALKABLE_AREA) + m_pmesh->areas[i] = SAMPLE_POLYAREA_GROUND; + + if (m_pmesh->areas[i] == SAMPLE_POLYAREA_GROUND || + m_pmesh->areas[i] == SAMPLE_POLYAREA_GRASS || + m_pmesh->areas[i] == SAMPLE_POLYAREA_ROAD) + { + m_pmesh->flags[i] = SAMPLE_POLYFLAGS_WALK; + } + else if (m_pmesh->areas[i] == SAMPLE_POLYAREA_WATER) + { + m_pmesh->flags[i] = SAMPLE_POLYFLAGS_SWIM; + } + else if (m_pmesh->areas[i] == SAMPLE_POLYAREA_DOOR) + { + m_pmesh->flags[i] = SAMPLE_POLYFLAGS_WALK | SAMPLE_POLYFLAGS_DOOR; + } + } + dtNavMeshCreateParams params; memset(¶ms, 0, sizeof(params)); params.verts = m_pmesh->verts; params.vertCount = m_pmesh->nverts; params.polys = m_pmesh->polys; + params.polyAreas = m_pmesh->areas; + params.polyFlags = m_pmesh->flags; params.polyCount = m_pmesh->npolys; params.nvp = m_pmesh->nvp; params.detailMeshes = m_dmesh->meshes; @@ -1037,6 +1058,8 @@ bool Sample_SoloMeshTiled::handleBuild() params.offMeshConVerts = m_geom->getOffMeshConnectionVerts(); params.offMeshConRad = m_geom->getOffMeshConnectionRads(); params.offMeshConDir = m_geom->getOffMeshConnectionDirs(); + params.offMeshConAreas = m_geom->getOffMeshConnectionAreas(); + params.offMeshConFlags = m_geom->getOffMeshConnectionFlags(); params.offMeshConCount = m_geom->getOffMeshConnectionCount(); params.walkableHeight = m_agentHeight; params.walkableRadius = m_agentRadius; diff --git a/RecastDemo/Source/Sample_TileMesh.cpp b/RecastDemo/Source/Sample_TileMesh.cpp index ba8ade6..c395497 100644 --- a/RecastDemo/Source/Sample_TileMesh.cpp +++ b/RecastDemo/Source/Sample_TileMesh.cpp @@ -34,7 +34,7 @@ #include "DetourDebugDraw.h" #include "NavMeshTesterTool.h" #include "OffMeshConnectionTool.h" -#include "BoxVolumeTool.h" +#include "ConvexVolumeTool.h" #ifdef WIN32 # define snprintf _snprintf @@ -258,9 +258,9 @@ void Sample_TileMesh::handleTools() { setTool(new OffMeshConnectionTool); } - if (imguiCheck("Create Box Volumes", type == TOOL_BOX_VOLUME)) + if (imguiCheck("Create Convex Volumes", type == TOOL_CONVEX_VOLUME)) { - setTool(new BoxVolumeTool); + setTool(new ConvexVolumeTool); } imguiSeparator(); @@ -321,7 +321,7 @@ void Sample_TileMesh::handleRender() if (m_tool) m_tool->handleRender(); - m_geom->drawBoxVolumes(&dd); + m_geom->drawConvexVolumes(&dd); glDepthMask(GL_TRUE); } @@ -667,14 +667,10 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm return false; } - const float* boxVerts = m_geom->getBoxVolumeVerts(); - const unsigned char* boxTypes = m_geom->getBoxVolumeTypes(); - for (int i = 0; i < m_geom->getBoxVolumeCount(); ++i) - { - const float* v = &boxVerts[i*3*2]; - rcMarkBoxArea(&v[0], &v[3], boxTypes[i], *m_chf); - } - + // (Optional) Mark areas. + const ConvexVolume* vols = m_geom->getConvexVolumes(); + for (int i = 0; i < m_geom->getConvexVolumeCount(); ++i) + rcMarkConvexPolyArea(vols[i].verts, vols[i].nverts, vols[i].hmin, vols[i].hmax, (unsigned char)vols[i].area, *m_chf); // Prepare for region partitioning, by calculating distance field along the walkable surface. if (!rcBuildDistanceField(*m_chf)) @@ -773,11 +769,35 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm return false; } + // Update poly flags from areas. + for (int i = 0; i < m_pmesh->npolys; ++i) + { + if (m_pmesh->areas[i] == RC_WALKABLE_AREA) + m_pmesh->areas[i] = SAMPLE_POLYAREA_GROUND; + + if (m_pmesh->areas[i] == SAMPLE_POLYAREA_GROUND || + m_pmesh->areas[i] == SAMPLE_POLYAREA_GRASS || + m_pmesh->areas[i] == SAMPLE_POLYAREA_ROAD) + { + m_pmesh->flags[i] = SAMPLE_POLYFLAGS_WALK; + } + else if (m_pmesh->areas[i] == SAMPLE_POLYAREA_WATER) + { + m_pmesh->flags[i] = SAMPLE_POLYFLAGS_SWIM; + } + else if (m_pmesh->areas[i] == SAMPLE_POLYAREA_DOOR) + { + m_pmesh->flags[i] = SAMPLE_POLYFLAGS_WALK | SAMPLE_POLYFLAGS_DOOR; + } + } + dtNavMeshCreateParams params; memset(¶ms, 0, sizeof(params)); params.verts = m_pmesh->verts; params.vertCount = m_pmesh->nverts; params.polys = m_pmesh->polys; + params.polyAreas = m_pmesh->areas; + params.polyFlags = m_pmesh->flags; params.polyCount = m_pmesh->npolys; params.nvp = m_pmesh->nvp; params.detailMeshes = m_dmesh->meshes; @@ -788,6 +808,8 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm params.offMeshConVerts = m_geom->getOffMeshConnectionVerts(); params.offMeshConRad = m_geom->getOffMeshConnectionRads(); params.offMeshConDir = m_geom->getOffMeshConnectionDirs(); + params.offMeshConAreas = m_geom->getOffMeshConnectionAreas(); + params.offMeshConFlags = m_geom->getOffMeshConnectionFlags(); params.offMeshConCount = m_geom->getOffMeshConnectionCount(); params.walkableHeight = m_agentHeight; params.walkableRadius = m_agentRadius;