From ed73b463081f00030e63506302de1cf0de9a7c59 Mon Sep 17 00:00:00 2001 From: Mikko Mononen Date: Mon, 28 Sep 2009 09:54:37 +0000 Subject: [PATCH] - Changed gotos as cleanup mechanism to a scoped delete template. - Removed unnecessary ptr casts to ints to allow to compile on 64bits systems. - Added custom and portable qsort_r. - Use gettimeofday() as performance timer on unix/bsd/osx - Moved variables from rcCompactSpan to separate arrays. --- Detour/Source/DetourTileNavMeshBuilder.cpp | 2 + Recast/Include/Recast.h | 29 +- Recast/Source/Recast.cpp | 4 +- Recast/Source/RecastContour.cpp | 31 +- Recast/Source/RecastDebugDraw.cpp | 17 +- Recast/Source/RecastFilter.cpp | 16 +- Recast/Source/RecastMesh.cpp | 160 +- Recast/Source/RecastMeshDetail.cpp | 75 +- Recast/Source/RecastRegion.cpp | 308 +- Recast/Source/RecastTimer.cpp | 32 +- .../Xcode/Recast.xcodeproj/memon.pbxuser | 3928 ++++++----------- .../Recast.xcodeproj/memon.perspectivev3 | 84 +- .../Xcode/Recast.xcodeproj/project.pbxproj | 5 +- RecastDemo/Source/Sample_TileMesh.cpp | 17 + RecastDemo/Source/imguiRenderGL.cpp | 32 +- RecastDemo/Source/main.cpp | 11 +- 16 files changed, 1643 insertions(+), 3108 deletions(-) diff --git a/Detour/Source/DetourTileNavMeshBuilder.cpp b/Detour/Source/DetourTileNavMeshBuilder.cpp index 95dd34b0..c55a2703 100644 --- a/Detour/Source/DetourTileNavMeshBuilder.cpp +++ b/Detour/Source/DetourTileNavMeshBuilder.cpp @@ -34,6 +34,8 @@ bool dtCreateNavMeshTileData(const unsigned short* verts, const int nverts, return false; if (nverts >= 0xffff) return false; + if (npolys > DT_MAX_TILES) + return false; if (!nverts) return false; diff --git a/Recast/Include/Recast.h b/Recast/Include/Recast.h index 90de8ed3..cf6479e0 100644 --- a/Recast/Include/Recast.h +++ b/Recast/Include/Recast.h @@ -92,18 +92,23 @@ struct rcCompactCell struct rcCompactSpan { unsigned short y; // Bottom coordinate of the span. - unsigned short reg; // Region ID - unsigned short dist; // Distance to border unsigned short con; // Connections to neighbour cells. unsigned char h; // Height of the span. - unsigned char flags; // Flags. }; // Compact static heightfield. struct rcCompactHeightfield { - inline rcCompactHeightfield() : maxDistance(0), maxRegions(0), cells(0), spans(0) {} - inline ~rcCompactHeightfield() { delete [] cells; delete [] spans; } + inline rcCompactHeightfield() : + maxDistance(0), maxRegions(0), cells(0), + spans(0), dist(0), reg(0) {} + inline ~rcCompactHeightfield() + { + delete [] cells; + delete [] spans; + delete [] dist; + delete [] reg; + } int width, height; // Width and height of the heighfield. int spanCount; // Number of spans in the heightfield. int walkableHeight, walkableClimb; // Agent properties. @@ -113,6 +118,8 @@ struct rcCompactHeightfield float cs, ch; // Cell size and height. rcCompactCell* cells; // Pointer to width*height cells. rcCompactSpan* spans; // Pointer to spans. + unsigned short* dist; // Pointer to per span distance to border. + unsigned short* reg; // Pointer to per span region ID. }; struct rcContour @@ -207,6 +214,18 @@ public: inline int size() const { return m_size; } }; +// Simple helper class to delete array in scope +template class rcScopedDelete +{ + T* ptr; +public: + inline rcScopedDelete() : ptr(0) {} + inline rcScopedDelete(T* p) : ptr(p) {} + inline ~rcScopedDelete() { delete [] ptr; } + inline operator T*() { return ptr; } + inline T* operator=(T* p) { ptr = p; return ptr; } +}; + enum rcSpanFlags { RC_WALKABLE = 0x01, diff --git a/Recast/Source/Recast.cpp b/Recast/Source/Recast.cpp index 4bd8b7a1..8f151935 100644 --- a/Recast/Source/Recast.cpp +++ b/Recast/Source/Recast.cpp @@ -188,7 +188,7 @@ bool rcBuildCompactHeightfield(const int walkableHeight, const int walkableClimb if (s->flags == flags) { const int bot = (int)s->smax; - const int top = (int)s->next ? (int)s->next->smin : MAX_HEIGHT; + const int top = s->next ? (int)s->next->smin : MAX_HEIGHT; chf.spans[idx].y = (unsigned short)rcClamp(bot, 0, 0xffff); chf.spans[idx].h = (unsigned char)rcClamp(top - bot, 0, 0xff); idx++; @@ -208,6 +208,7 @@ bool rcBuildCompactHeightfield(const int walkableHeight, const int walkableClimb for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i) { rcCompactSpan& s = chf.spans[i]; + for (int dir = 0; dir < 4; ++dir) { setCon(s, dir, 0xf); @@ -216,6 +217,7 @@ bool rcBuildCompactHeightfield(const int walkableHeight, const int walkableClimb // First check that the neighbour cell is in bounds. if (nx < 0 || ny < 0 || nx >= w || ny >= h) continue; + // Iterate over all neighbour spans and check if any of the is // accessible from current cell. const rcCompactCell& nc = chf.cells[nx+ny*w]; diff --git a/Recast/Source/RecastContour.cpp b/Recast/Source/RecastContour.cpp index 96f763a1..eb2b5e66 100644 --- a/Recast/Source/RecastContour.cpp +++ b/Recast/Source/RecastContour.cpp @@ -35,7 +35,7 @@ static int getCornerHeight(int x, int y, int i, int dir, unsigned short regs[4] = {0,0,0,0}; - regs[0] = s.reg; + regs[0] = chf.reg[i]; if (rcGetCon(s, dir) != 0xf) { @@ -44,7 +44,7 @@ static int getCornerHeight(int x, int y, int i, int dir, const int ai = (int)chf.cells[ax+ay*chf.width].index + rcGetCon(s, dir); const rcCompactSpan& as = chf.spans[ai]; ch = rcMax(ch, (int)as.y); - regs[1] = as.reg; + regs[1] = chf.reg[ai]; if (rcGetCon(as, dirp) != 0xf) { const int ax2 = ax + rcGetDirOffsetX(dirp); @@ -52,7 +52,7 @@ static int getCornerHeight(int x, int y, int i, int dir, const int ai2 = (int)chf.cells[ax2+ay2*chf.width].index + rcGetCon(as, dirp); const rcCompactSpan& as2 = chf.spans[ai2]; ch = rcMax(ch, (int)as2.y); - regs[2] = as2.reg; + regs[2] = chf.reg[ai2]; } } if (rcGetCon(s, dirp) != 0xf) @@ -62,7 +62,7 @@ static int getCornerHeight(int x, int y, int i, int dir, const int ai = (int)chf.cells[ax+ay*chf.width].index + rcGetCon(s, dirp); const rcCompactSpan& as = chf.spans[ai]; ch = rcMax(ch, (int)as.y); - regs[3] = as.reg; + regs[3] = chf.reg[ai]; if (rcGetCon(as, dir) != 0xf) { const int ax2 = ax + rcGetDirOffsetX(dir); @@ -70,7 +70,7 @@ static int getCornerHeight(int x, int y, int i, int dir, const int ai2 = (int)chf.cells[ax2+ay2*chf.width].index + rcGetCon(as, dir); const rcCompactSpan& as2 = chf.spans[ai2]; ch = rcMax(ch, (int)as2.y); - regs[2] = as2.reg; + regs[2] = chf.reg[ai2]; } } @@ -132,8 +132,7 @@ static void walkContour(int x, int y, int i, const int ax = x + rcGetDirOffsetX(dir); const int ay = y + rcGetDirOffsetY(dir); const int ai = (int)chf.cells[ax+ay*chf.width].index + rcGetCon(s, dir); - const rcCompactSpan& as = chf.spans[ai]; - r = (int)as.reg; + r = (int)chf.reg[ai]; } if (isBorderVertex) r |= RC_BORDER_VERTEX; @@ -288,7 +287,7 @@ static void simplifyContour(rcIntArray& points, rcIntArray& simplified, float ma simplified.push(points[i*4+2]); simplified.push(i); } - } + } } // Add points until all raw points are within @@ -551,7 +550,7 @@ bool rcBuildContours(rcCompactHeightfield& chf, return false; cset.nconts = 0; - unsigned char* flags = new unsigned char[chf.spanCount]; + rcScopedDelete flags = new unsigned char[chf.spanCount]; if (!flags) { if (rcGetLog()) @@ -572,7 +571,7 @@ bool rcBuildContours(rcCompactHeightfield& chf, { unsigned char res = 0; const rcCompactSpan& s = chf.spans[i]; - if (!s.reg || (s.reg & RC_BORDER_REG)) + if (!chf.reg[i] || (chf.reg[i] & RC_BORDER_REG)) { flags[i] = 0; continue; @@ -585,10 +584,9 @@ bool rcBuildContours(rcCompactHeightfield& chf, const int ax = x + rcGetDirOffsetX(dir); const int ay = y + rcGetDirOffsetY(dir); const int ai = (int)chf.cells[ax+ay*w].index + rcGetCon(s, dir); - const rcCompactSpan& as = chf.spans[ai]; - r = as.reg; + r = chf.reg[ai]; } - if (r == s.reg) + if (r == chf.reg[i]) res |= (1 << dir); } flags[i] = res ^ 0xf; // Inverse, mark non connected edges. @@ -615,7 +613,7 @@ bool rcBuildContours(rcCompactHeightfield& chf, flags[i] = 0; continue; } - unsigned short reg = chf.spans[i].reg; + unsigned short reg = chf.reg[i]; if (!reg || (reg & RC_BORDER_REG)) continue; @@ -629,7 +627,7 @@ bool rcBuildContours(rcCompactHeightfield& chf, // Create contour. if (simplified.size()/4 >= 3) { - if (cset.nconts >= maxContours) + if (cset.nconts > maxContours) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildContours: Too many contours %d, max %d.", cset.nconts, maxContours); @@ -707,9 +705,6 @@ bool rcBuildContours(rcCompactHeightfield& chf, } } - - delete [] flags; - rcTimeVal simplifyEndTime = rcGetPerformanceTimer(); rcTimeVal endTime = rcGetPerformanceTimer(); diff --git a/Recast/Source/RecastDebugDraw.cpp b/Recast/Source/RecastDebugDraw.cpp index fecee4c6..cee381ac 100644 --- a/Recast/Source/RecastDebugDraw.cpp +++ b/Recast/Source/RecastDebugDraw.cpp @@ -31,7 +31,7 @@ void rcDebugDrawMesh(const float* verts, int nverts, glBegin(GL_TRIANGLES); for (int i = 0; i < ntris*3; i += 3) { - float a = (2+normals[i+0]+normals[i+1])/4; + float a = (2+normals[i+0]+normals[i+1])/4 * 0.6f; if (flags && !flags[i/3]) glColor3f(a,a*0.3f,a*0.1f); else @@ -291,6 +291,8 @@ void rcDebugDrawCompactHeightfieldRegions(const rcCompactHeightfield& chf) float col[4] = { 1,1,1,1 }; + glDepthMask(GL_TRUE); + glBegin(GL_QUADS); for (int y = 0; y < chf.height; ++y) { @@ -303,16 +305,19 @@ void rcDebugDrawCompactHeightfieldRegions(const rcCompactHeightfield& chf) for (unsigned i = c.index, ni = c.index+c.count; i < ni; ++i) { const rcCompactSpan& s = chf.spans[i]; - if (s.reg) + + if (chf.reg[i]) { - intToCol(s.reg, col); + intToCol(chf.reg[i], col); glColor4fv(col); } else { - glColor4ub(0,0,0,128); + glColor4ub(0,0,0,64); } - const float fy = chf.bmin[1] + (s.y+1)*ch; + + const float fy = chf.bmin[1] + (s.y)*ch; + glVertex3f(fx, fy, fz); glVertex3f(fx, fy, fz+cs); glVertex3f(fx+cs, fy, fz+cs); @@ -346,7 +351,7 @@ void rcDebugDrawCompactHeightfieldDistance(const rcCompactHeightfield& chf) { const rcCompactSpan& s = chf.spans[i]; const float fy = chf.bmin[1] + (s.y+1)*ch; - float cd = (float)s.dist * dscale; + float cd = (float)chf.dist[i] * dscale; glColor3f(cd, cd, cd); glVertex3f(fx, fy, fz); glVertex3f(fx, fy, fz+cs); diff --git a/Recast/Source/RecastFilter.cpp b/Recast/Source/RecastFilter.cpp index 3421ea18..cd1b4aa2 100644 --- a/Recast/Source/RecastFilter.cpp +++ b/Recast/Source/RecastFilter.cpp @@ -45,8 +45,8 @@ void rcFilterLedgeSpans(const int walkableHeight, if ((s->flags & RC_WALKABLE) == 0) continue; - const int bot = (int)s->smax; - const int top = (int)s->next ? (int)s->next->smin : MAX_HEIGHT; + const int bot = (int)(s->smax); + const int top = s->next ? (int)(s->next->smin) : MAX_HEIGHT; // Find neighbours minimum height. int minh = MAX_HEIGHT; @@ -74,7 +74,7 @@ void rcFilterLedgeSpans(const int walkableHeight, for (ns = solid.spans[dx + dy*w]; ns; ns = ns->next) { nbot = (int)ns->smax; - ntop = (int)ns->next ? (int)ns->next->smin : MAX_HEIGHT; + ntop = ns->next ? (int)ns->next->smin : MAX_HEIGHT; // Skip neightbour if the gap between the spans is too small. if (rcMin(top,ntop) - rcMax(bot,nbot) > walkableHeight) minh = rcMin(minh, nbot - bot); @@ -114,8 +114,8 @@ void rcFilterWalkableLowHeightSpans(int walkableHeight, { for (rcSpan* s = solid.spans[x + y*w]; s; s = s->next) { - const int bot = (int)s->smax; - const int top = (int)s->next ? (int)s->next->smin : MAX_HEIGHT; + const int bot = (int)(s->smax); + const int top = s->next ? (int)(s->next->smin) : MAX_HEIGHT; if ((top - bot) <= walkableHeight) s->flags &= ~RC_WALKABLE; } @@ -193,8 +193,8 @@ bool rcMarkReachableSpans(const int walkableHeight, stackSize--; rcReachableSeed cur = stack[stackSize]; - const int bot = (int)cur.s->smax; - const int top = (int)cur.s->next ? (int)cur.s->next->smin : MAX_HEIGHT; + const int bot = (int)(cur.s->smax); + const int top = cur.s->next ? (int)(cur.s->next->smin) : MAX_HEIGHT; // Visit neighbours in all 4 directions. for (int dir = 0; dir < 4; ++dir) @@ -214,7 +214,7 @@ bool rcMarkReachableSpans(const int walkableHeight, continue; const int nbot = (int)ns->smax; - const int ntop = (int)ns->next ? (int)ns->next->smin : MAX_HEIGHT; + const int ntop = ns->next ? (int)ns->next->smin : MAX_HEIGHT; // Skip neightbour if the gap between the spans is too small. if (rcMin(top,ntop) - rcMax(bot,nbot) < walkableHeight) continue; diff --git a/Recast/Source/RecastMesh.cpp b/Recast/Source/RecastMesh.cpp index 0bcca931..695a192b 100644 --- a/Recast/Source/RecastMesh.cpp +++ b/Recast/Source/RecastMesh.cpp @@ -491,19 +491,6 @@ static bool removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int m { static const int nvp = mesh.nvp; - int* edges = 0; - int nedges = 0; - int* hole = 0; - int nhole = 0; - int* hreg = 0; - int nhreg = 0; - int* tris = 0; - int* tverts = 0; - int* thole = 0; - unsigned short* polys = 0; - unsigned short* pregs = 0; - int npolys = 0; - // Count number of polygons to remove. int nrem = 0; for (int i = 0; i < mesh.npolys; ++i) @@ -513,30 +500,33 @@ static bool removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int m if (p[j] == rem) { nrem++; break; } } - edges = new int[nrem*nvp*3]; + int nedges = 0; + rcScopedDelete edges = new int[nrem*nvp*3]; if (!edges) { if (rcGetLog()) rcGetLog()->log(RC_LOG_WARNING, "removeVertex: Out of memory 'edges' (%d).", nrem*nvp*3); - goto failure; + return false; } - hole = new int[nrem*nvp]; + int nhole = 0; + rcScopedDelete hole = new int[nrem*nvp]; if (!hole) { if (rcGetLog()) rcGetLog()->log(RC_LOG_WARNING, "removeVertex: Out of memory 'hole' (%d).", nrem*nvp); - goto failure; + return false; } - hreg = new int[nrem*nvp]; + + int nhreg = 0; + rcScopedDelete hreg = new int[nrem*nvp]; if (!hreg) { if (rcGetLog()) rcGetLog()->log(RC_LOG_WARNING, "removeVertex: Out of memory 'hreg' (%d).", nrem*nvp); - goto failure; + return false; } - for (int i = 0; i < mesh.npolys; ++i) { unsigned short* p = &mesh.polys[i*nvp*2]; @@ -635,28 +625,28 @@ static bool removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int m break; } - tris = new int[nhole*3]; + rcScopedDelete tris = new int[nhole*3]; if (!tris) { if (rcGetLog()) rcGetLog()->log(RC_LOG_WARNING, "removeVertex: Out of memory 'tris' (%d).", nhole*3); - goto failure; + return false; } - tverts = new int[nhole*4]; + rcScopedDelete tverts = new int[nhole*4]; if (!tverts) { if (rcGetLog()) rcGetLog()->log(RC_LOG_WARNING, "removeVertex: Out of memory 'tverts' (%d).", nhole*4); - goto failure; + return false; } - thole = new int[nhole]; + rcScopedDelete thole = new int[nhole]; if (!tverts) { if (rcGetLog()) rcGetLog()->log(RC_LOG_WARNING, "removeVertex: Out of memory 'thole' (%d).", nhole); - goto failure; + return false; } // Generate temp vertex array for triangulation. @@ -674,24 +664,25 @@ static bool removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int m int ntris = triangulate(nhole, &tverts[0], &thole[0], tris); // Merge the hole triangles back to polygons. - polys = new unsigned short[(ntris+1)*nvp]; + rcScopedDelete polys = new unsigned short[(ntris+1)*nvp]; if (!polys) { if (rcGetLog()) rcGetLog()->log(RC_LOG_WARNING, "removeVertex: Out of memory 'polys' (%d).", (ntris+1)*nvp); - goto failure; + return false; } - pregs = new unsigned short[ntris]; + rcScopedDelete pregs = new unsigned short[ntris]; if (!pregs) { if (rcGetLog()) rcGetLog()->log(RC_LOG_WARNING, "removeVertex: Out of memory 'pregs' (%d).", ntris); - goto failure; + return false; } unsigned short* tmpPoly = &polys[ntris*nvp]; // Build initial polygons. + int npolys = 0; memset(polys, 0xff, ntris*nvp*sizeof(unsigned short)); for (int j = 0; j < ntris; ++j) { @@ -766,28 +757,7 @@ static bool removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int m mesh.npolys++; } - delete [] edges; - delete [] hole; - delete [] hreg; - delete [] tris; - delete [] thole; - delete [] tverts; - delete [] polys; - delete [] pregs; - return true; - -failure: - delete [] edges; - delete [] hole; - delete [] hreg; - delete [] tris; - delete [] thole; - delete [] tverts; - delete [] polys; - delete [] pregs; - - return false; } @@ -816,20 +786,13 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Too many vertices %d.", maxVertices); return false; } - - unsigned char* vflags = 0; - int* nextVert = 0; - int* firstVert = 0; - int* indices = 0; - int* tris = 0; - unsigned short* polys = 0; - - vflags = new unsigned char[maxVertices]; + + rcScopedDelete vflags = new unsigned char[maxVertices]; if (!vflags) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'mesh.verts' (%d).", maxVertices); - goto failure; + return false; } memset(vflags, 0, maxVertices); @@ -838,21 +801,21 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'mesh.verts' (%d).", maxVertices); - goto failure; + return false; } mesh.polys = new unsigned short[maxTris*nvp*2]; if (!mesh.polys) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'mesh.polys' (%d).", maxTris*nvp*2); - goto failure; + return false; } mesh.regs = new unsigned short[maxTris]; if (!mesh.regs) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'mesh.regs' (%d).", maxTris); - goto failure; + return false; } mesh.nverts = 0; mesh.npolys = 0; @@ -862,45 +825,45 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) memset(mesh.polys, 0xff, sizeof(unsigned short)*maxTris*nvp*2); memset(mesh.regs, 0, sizeof(unsigned short)*maxTris); - nextVert = new int[maxVertices]; + rcScopedDelete nextVert = new int[maxVertices]; if (!nextVert) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'nextVert' (%d).", maxVertices); - goto failure; + return false; } memset(nextVert, 0, sizeof(int)*maxVertices); - firstVert = new int[VERTEX_BUCKET_COUNT]; + rcScopedDelete firstVert = new int[VERTEX_BUCKET_COUNT]; if (!firstVert) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'firstVert' (%d).", VERTEX_BUCKET_COUNT); - goto failure; + return false; } for (int i = 0; i < VERTEX_BUCKET_COUNT; ++i) firstVert[i] = -1; - indices = new int[maxVertsPerCont]; + rcScopedDelete indices = new int[maxVertsPerCont]; if (!indices) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'indices' (%d).", maxVertsPerCont); - goto failure; + return false; } - tris = new int[maxVertsPerCont*3]; + rcScopedDelete tris = new int[maxVertsPerCont*3]; if (!tris) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'tris' (%d).", maxVertsPerCont*3); - goto failure; + return false; } - polys = new unsigned short[(maxVertsPerCont+1)*nvp]; + rcScopedDelete polys = new unsigned short[(maxVertsPerCont+1)*nvp]; if (!polys) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'polys' (%d).", maxVertsPerCont*nvp); - goto failure; + return false; } unsigned short* tmpPoly = &polys[maxVertsPerCont*nvp]; @@ -1029,18 +992,16 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) if (vflags[i]) { if (!removeVertex(mesh, i, maxTris)) - goto failure; + { + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Failed to remove edge vertex %d.", i); + return false; + } for (int j = i; j < mesh.nverts-1; ++j) vflags[j] = vflags[j+1]; --i; } } - - delete [] vflags; - delete [] firstVert; - delete [] nextVert; - delete [] indices; - delete [] tris; // Calculate adjacency. if (!buildMeshAdjacency(mesh.polys, mesh.npolys, mesh.nverts, nvp)) @@ -1058,16 +1019,6 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) rcGetBuildTimes()->buildPolymesh += rcGetDeltaTimeUsec(startTime, endTime); return true; - -failure: - delete [] vflags; - delete [] tmpPoly; - delete [] firstVert; - delete [] nextVert; - delete [] indices; - delete [] tris; - - return false; } bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) @@ -1077,10 +1028,6 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) rcTimeVal startTime = rcGetPerformanceTimer(); - int* nextVert = 0; - int* firstVert = 0; - unsigned short* vremap = 0; - mesh.nvp = meshes[0]->nvp; mesh.cs = meshes[0]->cs; mesh.ch = meshes[0]->ch; @@ -1127,31 +1074,31 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) } memset(mesh.regs, 0, sizeof(unsigned short)*maxPolys); - nextVert = new int[maxVerts]; + rcScopedDelete nextVert = new int[maxVerts]; if (!nextVert) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcMergePolyMeshes: Out of memory 'nextVert' (%d).", maxVerts); - goto failure; + return false; } memset(nextVert, 0, sizeof(int)*maxVerts); - firstVert = new int[VERTEX_BUCKET_COUNT]; + rcScopedDelete firstVert = new int[VERTEX_BUCKET_COUNT]; if (!firstVert) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcMergePolyMeshes: Out of memory 'firstVert' (%d).", VERTEX_BUCKET_COUNT); - goto failure; + return false; } for (int i = 0; i < VERTEX_BUCKET_COUNT; ++i) firstVert[i] = -1; - vremap = new unsigned short[maxVertsPerMesh]; + rcScopedDelete vremap = new unsigned short[maxVertsPerMesh]; if (!vremap) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcMergePolyMeshes: Out of memory 'vremap' (%d).", maxVertsPerMesh); - goto failure; + return false; } memset(nextVert, 0, sizeof(int)*maxVerts); @@ -1192,21 +1139,10 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) } - delete [] firstVert; - delete [] nextVert; - delete [] vremap; - rcTimeVal endTime = rcGetPerformanceTimer(); if (rcGetBuildTimes()) rcGetBuildTimes()->mergePolyMesh += rcGetDeltaTimeUsec(startTime, endTime); return true; - -failure: - delete [] firstVert; - delete [] nextVert; - delete [] vremap; - - return false; } diff --git a/Recast/Source/RecastMeshDetail.cpp b/Recast/Source/RecastMeshDetail.cpp index ef17531d..7cdc68de 100644 --- a/Recast/Source/RecastMeshDetail.cpp +++ b/Recast/Source/RecastMeshDetail.cpp @@ -108,6 +108,32 @@ static int ptcmp(void* up, const void *v1, const void *v2) return 0; } +// Naive qsort implementation, since qsort_r is not standard. + +inline void iqswap(unsigned char* a, unsigned char* b, const int size) +{ + for (int i = 0; i < size; ++i) rcSwap(a[i], b[i]); +} + +void qsortr(void* data, int n, int stride, void* thunk, int (*cmp)(void *, const void *, const void *)) +{ + if (n <= 1) return; + unsigned char* d = (unsigned char*)data; + unsigned char* v = &d[0]; + int i = 0, j = n; + for (;;) + { + do { ++i; } while (i < n && cmp(thunk, &d[i*stride], v) < 0); + do { --j; } while (cmp(thunk, &d[j*stride], v) > 0); + if (i >= j) break; + iqswap(&d[i*stride], &d[j*stride], stride); + } + iqswap(&d[(i-1)*stride], &d[0], stride); + qsortr(d, i-1, stride, thunk, cmp); + qsortr(d+i*stride, n-i, stride, thunk, cmp); +} + + // Based on Paul Bourke's triangulate.c // http://astronomy.swin.edu.au/~pbourke/terrain/triangulate/triangulate.c static void delaunay(const int nv, float *verts, rcIntArray& idx, rcIntArray& tris, rcIntArray& edges) @@ -116,11 +142,8 @@ static void delaunay(const int nv, float *verts, rcIntArray& idx, rcIntArray& tr idx.resize(nv); for (int i = 0; i < nv; ++i) idx[i] = i; -#ifdef WIN32 - qsort_s(&idx[0], idx.size(), sizeof(int), ptcmp, verts); -#else - qsort_r(&idx[0], idx.size(), sizeof(int), verts, ptcmp); -#endif + + qsortr(&idx[0], idx.size(), sizeof(int), verts, ptcmp); // Find the maximum and minimum vertex bounds. // This is to allow calculation of the bounding triangle @@ -164,6 +187,7 @@ static void delaunay(const int nv, float *verts, rcIntArray& idx, rcIntArray& tr tris.push(-2); tris.push(-1); tris.push(0); // not completed + for (int i = 0; i < nv; ++i) { @@ -485,6 +509,13 @@ static bool buildPolyDetail(const float* in, const int nin, unsigned short reg, tris.resize(0); idx.resize(0); delaunay(nverts, verts, idx, tris, edges); + + if (tris.size() == 0) + { + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "buildPolyDetail: Could not triangulate polygon."); + return false; + } if (sampleDist > 0) { @@ -689,25 +720,23 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c rcIntArray stack(512); rcIntArray samples(512); float verts[256*3]; - float* poly = 0; - int* bounds = 0; rcHeightPatch hp; int nPolyVerts = 0; int maxhw = 0, maxhh = 0; - bounds = new int[mesh.npolys*4]; + rcScopedDelete bounds = new int[mesh.npolys*4]; if (!bounds) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMeshDetail: Out of memory 'bounds' (%d).", mesh.npolys*4); - goto failure; + return false; } - poly = new float[nvp*3]; + rcScopedDelete poly = new float[nvp*3]; if (!bounds) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMeshDetail: Out of memory 'poly' (%d).", nvp*3); - goto failure; + return false; } // Find max size for a polygon area. @@ -746,7 +775,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMeshDetail: Out of memory 'hp.data' (%d).", maxhw*maxhh); - goto failure; + return false; } dmesh.nmeshes = mesh.npolys; @@ -757,7 +786,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMeshDetail: Out of memory 'dmesh.meshes' (%d).", dmesh.nmeshes*4); - goto failure; + return false; } int vcap = nPolyVerts+nPolyVerts/2; @@ -769,7 +798,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMeshDetail: Out of memory 'dmesh.verts' (%d).", vcap*3); - goto failure; + return false; } dmesh.ntris = 0; dmesh.tris = new unsigned char[tcap*4]; @@ -777,7 +806,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMeshDetail: Out of memory 'dmesh.tris' (%d).", tcap*4); - goto failure; + return false; } for (int i = 0; i < mesh.npolys; ++i) @@ -810,7 +839,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c chf, hp, verts, nverts, tris, edges, idx, samples)) { - goto failure; + return false; } // Offset detail vertices, unnecassary? @@ -836,7 +865,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMeshDetail: Out of memory 'newv' (%d).", vcap*3); - goto failure; + return false; } if (dmesh.nverts) memcpy(newv, dmesh.verts, sizeof(float)*3*dmesh.nverts); @@ -861,7 +890,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMeshDetail: Out of memory 'newt' (%d).", tcap*4); - goto failure; + return false; } if (dmesh.ntris) memcpy(newt, dmesh.tris, sizeof(unsigned char)*4*dmesh.ntris); @@ -879,22 +908,12 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c } } - delete [] bounds; - delete [] poly; - rcTimeVal endTime = rcGetPerformanceTimer(); if (rcGetBuildTimes()) rcGetBuildTimes()->buildDetailMesh += rcGetDeltaTimeUsec(startTime, endTime); return true; - -failure: - - delete [] bounds; - delete [] poly; - - return false; } bool rcMergePolyMeshDetails(rcPolyMeshDetail** meshes, const int nmeshes, rcPolyMeshDetail& mesh) diff --git a/Recast/Source/RecastRegion.cpp b/Recast/Source/RecastRegion.cpp index ecc32ecb..3e553b84 100644 --- a/Recast/Source/RecastRegion.cpp +++ b/Recast/Source/RecastRegion.cpp @@ -238,7 +238,7 @@ static unsigned short* boxBlur(rcCompactHeightfield& chf, int thr, static bool floodRegion(int x, int y, int i, unsigned short level, unsigned short minLevel, unsigned short r, rcCompactHeightfield& chf, - unsigned short* src, + unsigned short* srcReg, unsigned short* srcDist, rcIntArray& stack) { const int w = chf.width; @@ -248,8 +248,8 @@ static bool floodRegion(int x, int y, int i, stack.push((int)x); stack.push((int)y); stack.push((int)i); - src[i*2] = r; - src[i*2+1] = 0; + srcReg[i] = r; + srcDist[i] = 0; unsigned short lev = level >= minLevel+2 ? level-2 : minLevel; int count = 0; @@ -272,7 +272,7 @@ static bool floodRegion(int x, int y, int i, const int ax = cx + rcGetDirOffsetX(dir); const int ay = cy + rcGetDirOffsetY(dir); const int ai = (int)chf.cells[ax+ay*w].index + rcGetCon(cs, dir); - unsigned short nr = src[ai*2]; + unsigned short nr = srcReg[ai]; if (nr != 0 && nr != r) ar = nr; @@ -285,7 +285,7 @@ static bool floodRegion(int x, int y, int i, const int ay2 = ay + rcGetDirOffsetY(dir2); const int ai2 = (int)chf.cells[ax2+ay2*w].index + rcGetCon(as, dir2); - unsigned short nr = src[ai2*2]; + unsigned short nr = srcReg[ai2]; if (nr != 0 && nr != r) ar = nr; } @@ -293,7 +293,7 @@ static bool floodRegion(int x, int y, int i, } if (ar != 0) { - src[ci*2] = 0; + srcReg[ci] = 0; continue; } count++; @@ -306,12 +306,12 @@ static bool floodRegion(int x, int y, int i, const int ax = cx + rcGetDirOffsetX(dir); const int ay = cy + rcGetDirOffsetY(dir); const int ai = (int)chf.cells[ax+ay*w].index + rcGetCon(cs, dir); - if (chf.spans[ai].dist >= lev) + if (chf.dist[ai] >= lev) { - if (src[ai*2] == 0) + if (srcReg[ai] == 0) { - src[ai*2] = r; - src[ai*2+1] = 0; + srcReg[ai] = r; + srcDist[ai] = 0; stack.push(ax); stack.push(ay); stack.push(ai); @@ -326,8 +326,8 @@ static bool floodRegion(int x, int y, int i, static unsigned short* expandRegions(int maxIter, unsigned short level, rcCompactHeightfield& chf, - unsigned short* src, - unsigned short* dst, + unsigned short* srcReg, unsigned short* srcDist, + unsigned short* dstReg, unsigned short* dstDist, rcIntArray& stack) { const int w = chf.width; @@ -342,7 +342,7 @@ static unsigned short* expandRegions(int maxIter, unsigned short level, const rcCompactCell& c = chf.cells[x+y*w]; for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i) { - if (chf.spans[i].dist >= level && src[i*2] == 0) + if (chf.dist[i] >= level && srcReg[i] == 0) { stack.push(x); stack.push(y); @@ -357,7 +357,8 @@ static unsigned short* expandRegions(int maxIter, unsigned short level, { int failed = 0; - memcpy(dst, src, sizeof(unsigned short)*chf.spanCount*2); + memcpy(dstReg, srcReg, sizeof(unsigned short)*chf.spanCount); + memcpy(dstDist, srcDist, sizeof(unsigned short)*chf.spanCount); for (int j = 0; j < stack.size(); j += 3) { @@ -370,7 +371,7 @@ static unsigned short* expandRegions(int maxIter, unsigned short level, continue; } - unsigned short r = src[i*2]; + unsigned short r = srcReg[i]; unsigned short d2 = 0xffff; const rcCompactSpan& s = chf.spans[i]; for (int dir = 0; dir < 4; ++dir) @@ -379,20 +380,20 @@ static unsigned short* expandRegions(int maxIter, unsigned short level, const int ax = x + rcGetDirOffsetX(dir); const int ay = y + rcGetDirOffsetY(dir); const int ai = (int)chf.cells[ax+ay*w].index + rcGetCon(s, dir); - if (src[ai*2] > 0 && (src[ai*2] & RC_BORDER_REG) == 0) + if (srcReg[ai] > 0 && (srcReg[ai] & RC_BORDER_REG) == 0) { - if ((int)src[ai*2+1]+2 < (int)d2) + if ((int)srcDist[ai]+2 < (int)d2) { - r = src[ai*2]; - d2 = src[ai*2+1]+2; + r = srcReg[ai]; + d2 = srcDist[ai]+2; } } } if (r) { stack[j+2] = -1; // mark as used - dst[i*2] = r; - dst[i*2+1] = d2; + dstReg[i] = r; + dstDist[i] = d2; } else { @@ -401,7 +402,8 @@ static unsigned short* expandRegions(int maxIter, unsigned short level, } // rcSwap source and dest. - rcSwap(src, dst); + rcSwap(srcReg, dstReg); + rcSwap(srcDist, dstDist); if (failed*3 == stack.size()) break; @@ -414,7 +416,7 @@ static unsigned short* expandRegions(int maxIter, unsigned short level, } } - return src; + return srcReg; } @@ -467,19 +469,19 @@ static void replaceNeighbour(rcRegion& reg, unsigned short oldId, unsigned short removeAdjacentNeighbours(reg); } -static bool canMergeWithRegion(rcRegion& reg, unsigned short id) +static bool canMergeWithRegion(const rcRegion& rega, const rcRegion& regb) { int n = 0; - for (int i = 0; i < reg.connections.size(); ++i) + for (int i = 0; i < rega.connections.size(); ++i) { - if (reg.connections[i] == id) + if (rega.connections[i] == regb.id) n++; } if (n > 1) return false; - for (int i = 0; i < reg.floors.size(); ++i) + for (int i = 0; i < rega.floors.size(); ++i) { - if (reg.floors[i] == id) + if (rega.floors[i] == regb.id) return false; } return true; @@ -562,7 +564,7 @@ static bool isRegionConnectedToBorder(const rcRegion& reg) return false; } -static bool isSolidEdge(rcCompactHeightfield& chf, unsigned short* src, +static bool isSolidEdge(rcCompactHeightfield& chf, unsigned short* srcReg, int x, int y, int i, int dir) { const rcCompactSpan& s = chf.spans[i]; @@ -572,16 +574,16 @@ static bool isSolidEdge(rcCompactHeightfield& chf, unsigned short* src, const int ax = x + rcGetDirOffsetX(dir); const int ay = y + rcGetDirOffsetY(dir); const int ai = (int)chf.cells[ax+ay*chf.width].index + rcGetCon(s, dir); - r = src[ai*2]; + r = srcReg[ai]; } - if (r == src[i*2]) + if (r == srcReg[i]) return false; return true; } static void walkContour(int x, int y, int i, int dir, rcCompactHeightfield& chf, - unsigned short* src, + unsigned short* srcReg, rcIntArray& cont) { int startDir = dir; @@ -594,7 +596,7 @@ static void walkContour(int x, int y, int i, int dir, const int ax = x + rcGetDirOffsetX(dir); const int ay = y + rcGetDirOffsetY(dir); const int ai = (int)chf.cells[ax+ay*chf.width].index + rcGetCon(ss, dir); - curReg = src[ai*2]; + curReg = srcReg[ai]; } cont.push(curReg); @@ -603,7 +605,7 @@ static void walkContour(int x, int y, int i, int dir, { const rcCompactSpan& s = chf.spans[i]; - if (isSolidEdge(chf, src, x, y, i, dir)) + if (isSolidEdge(chf, srcReg, x, y, i, dir)) { // Choose the edge corner unsigned short r = 0; @@ -612,7 +614,7 @@ static void walkContour(int x, int y, int i, int dir, const int ax = x + rcGetDirOffsetX(dir); const int ay = y + rcGetDirOffsetY(dir); const int ai = (int)chf.cells[ax+ay*chf.width].index + rcGetCon(s, dir); - r = src[ai*2]; + r = srcReg[ai]; } if (r != curReg) { @@ -670,11 +672,11 @@ static void walkContour(int x, int y, int i, int dir, static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, unsigned short& maxRegionId, rcCompactHeightfield& chf, - unsigned short* src) + unsigned short* srcReg) { const int w = chf.width; const int h = chf.height; - + int nreg = maxRegionId+1; rcRegion* regions = new rcRegion[nreg]; if (!regions) @@ -686,7 +688,7 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, for (int i = 0; i < nreg; ++i) regions[i].id = (unsigned short)i; - + // Find edge of a region and find connections around the contour. for (int y = 0; y < h; ++y) { @@ -695,19 +697,19 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, const rcCompactCell& c = chf.cells[x+y*w]; for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i) { - unsigned short r = src[i*2]; + unsigned short r = srcReg[i]; if (r == 0 || r >= nreg) continue; rcRegion& reg = regions[r]; reg.count++; - + // Update floors. for (int j = (int)c.index; j < ni; ++j) { if (i == j) continue; - unsigned short floorId = src[j*2]; + unsigned short floorId = srcReg[j]; if (floorId == 0 || floorId >= nreg) continue; addUniqueFloorRegion(reg, floorId); @@ -721,7 +723,7 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, int ndir = -1; for (int dir = 0; dir < 4; ++dir) { - if (isSolidEdge(chf, src, x, y, i, dir)) + if (isSolidEdge(chf, srcReg, x, y, i, dir)) { ndir = dir; break; @@ -732,7 +734,7 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, { // The cell is at border. // Walk around the contour to find all the neighbours. - walkContour(x, y, i, ndir, chf, src, reg.connections); + walkContour(x, y, i, ndir, chf, srcReg, reg.connections); } } } @@ -743,7 +745,7 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, { rcRegion& reg = regions[i]; if (reg.id == 0 || (reg.id & RC_BORDER_REG)) - continue; + continue; if (reg.count == 0) continue; @@ -757,8 +759,8 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, } } } - - + + // Merge too small regions to neighbour regions. int mergeCount = 0 ; do @@ -768,14 +770,14 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, { rcRegion& reg = regions[i]; if (reg.id == 0 || (reg.id & RC_BORDER_REG)) - continue; + continue; if (reg.count == 0) continue; - + // Check to see if the region should be merged. if (reg.count > mergeRegionSize && isRegionConnectedToBorder(reg)) continue; - + // Small region with more than 1 connection. // Or region which is not connected to a border at all. // Find smallest neighbour region that connects to this one. @@ -787,8 +789,8 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, rcRegion& mreg = regions[reg.connections[j]]; if (mreg.id == 0 || (mreg.id & RC_BORDER_REG)) continue; if (mreg.count < smallest && - canMergeWithRegion(reg, mreg.id) && - canMergeWithRegion(mreg, reg.id)) + canMergeWithRegion(reg, mreg) && + canMergeWithRegion(mreg, reg)) { smallest = mreg.count; mergeId = mreg.id; @@ -821,16 +823,16 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, } } while (mergeCount > 0); - + // Compress region Ids. for (int i = 0; i < nreg; ++i) { regions[i].remap = false; - if (regions[i].id == 0) continue; // Skip nil regions. - if (regions[i].id & RC_BORDER_REG) continue; // Skip external regions. + if (regions[i].id == 0) continue; // Skip nil regions. + if (regions[i].id & RC_BORDER_REG) continue; // Skip external regions. regions[i].remap = true; } - + unsigned short regIdGen = 0; for (int i = 0; i < nreg; ++i) { @@ -848,12 +850,12 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, } } maxRegionId = regIdGen; - + // Remap regions. for (int i = 0; i < chf.spanCount; ++i) { - if ((src[i*2] & RC_BORDER_REG) == 0) - src[i*2] = regions[src[i*2]].id; + if ((srcReg[i] & RC_BORDER_REG) == 0) + srcReg[i] = regions[srcReg[i]].id; } delete [] regions; @@ -861,10 +863,17 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, return true; } + bool rcBuildDistanceField(rcCompactHeightfield& chf) { rcTimeVal startTime = rcGetPerformanceTimer(); + if (chf.dist) + { + delete [] chf.dist; + chf.dist = 0; + } + unsigned short* dist0 = new unsigned short[chf.spanCount]; if (!dist0) { @@ -902,13 +911,11 @@ bool rcBuildDistanceField(rcCompactHeightfield& chf) rcSwap(src, dst); // Store distance. - for (int i = 0; i < chf.spanCount; ++i) - chf.spans[i].dist = src[i]; + chf.dist = src; rcTimeVal blurEndTime = rcGetPerformanceTimer(); - delete [] dist0; - delete [] dist1; + delete [] dst; rcTimeVal endTime = rcGetPerformanceTimer(); @@ -930,7 +937,7 @@ bool rcBuildDistanceField(rcCompactHeightfield& chf) static void paintRectRegion(int minx, int maxx, int miny, int maxy, unsigned short regId, unsigned short minLevel, - rcCompactHeightfield& chf, unsigned short* src) + rcCompactHeightfield& chf, unsigned short* srcReg) { const int w = chf.width; for (int y = miny; y < maxy; ++y) @@ -940,8 +947,8 @@ static void paintRectRegion(int minx, int maxx, int miny, int maxy, const rcCompactCell& c = chf.cells[x+y*w]; for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i) { - if (chf.spans[i].dist >= minLevel) - src[i*2] = regId; + if (chf.dist[i] >= minLevel) + srcReg[i] = regId; } } } @@ -961,39 +968,46 @@ bool rcBuildRegionsMonotone(rcCompactHeightfield& chf, { rcTimeVal startTime = rcGetPerformanceTimer(); - unsigned short* src = 0; - rcSweepSpan* sweeps = 0; - rcIntArray prev(256); - const int w = chf.width; const int h = chf.height; unsigned short minLevel = (unsigned short)(walkableRadius*2); unsigned short id = 1; - src = new unsigned short[chf.spanCount*2]; - if (!src) + if (chf.reg) + { + delete [] chf.reg; + chf.reg = 0; + } + + rcScopedDelete srcReg = new unsigned short[chf.spanCount]; + if (!srcReg) { if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "rcBuildRegionsMonotone: Out of memory 'src' (%d).", chf.spanCount*2); - goto failure; + rcGetLog()->log(RC_LOG_ERROR, "rcBuildRegionsMonotone: Out of memory 'src' (%d).", chf.spanCount); + return false; } - memset(src,0,sizeof(unsigned short)*2*chf.spanCount); + memset(srcReg,0,sizeof(unsigned short)*chf.spanCount); - sweeps = new rcSweepSpan[chf.width]; + rcScopedDelete sweeps = new rcSweepSpan[rcMax(chf.width,chf.height)]; if (!sweeps) { if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "rcBuildDistanceField: Out of memory 'sweeps' (%d).", chf.width); - goto failure; + rcGetLog()->log(RC_LOG_ERROR, "rcBuildRegionsMonotone: Out of memory 'sweeps' (%d).", chf.width); + return false; } // Mark border regions. - paintRectRegion(0, borderSize, 0, h, id|RC_BORDER_REG, minLevel, chf, src); id++; - paintRectRegion(w-borderSize, w, 0, h, id|RC_BORDER_REG, minLevel, chf, src); id++; - paintRectRegion(0, w, 0, borderSize, id|RC_BORDER_REG, minLevel, chf, src); id++; - paintRectRegion(0, w, h-borderSize, h, id|RC_BORDER_REG, minLevel, chf, src); id++; + if (borderSize) + { + paintRectRegion(0, borderSize, 0, h, id|RC_BORDER_REG, minLevel, chf, srcReg); id++; + paintRectRegion(w-borderSize, w, 0, h, id|RC_BORDER_REG, minLevel, chf, srcReg); id++; + paintRectRegion(0, w, 0, borderSize, id|RC_BORDER_REG, minLevel, chf, srcReg); id++; + paintRectRegion(0, w, h-borderSize, h, id|RC_BORDER_REG, minLevel, chf, srcReg); id++; + } + rcIntArray prev(256); + // Sweep one line at a time. for (int y = borderSize; y < h-borderSize; ++y) { @@ -1009,7 +1023,7 @@ bool rcBuildRegionsMonotone(rcCompactHeightfield& chf, for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i) { const rcCompactSpan& s = chf.spans[i]; - if (s.dist < minLevel) continue; + if (chf.dist[i] < minLevel) continue; // -x unsigned short previd = 0; @@ -1018,8 +1032,8 @@ bool rcBuildRegionsMonotone(rcCompactHeightfield& chf, const int ax = x + rcGetDirOffsetX(0); const int ay = y + rcGetDirOffsetY(0); const int ai = (int)chf.cells[ax+ay*w].index + rcGetCon(s, 0); - if ((src[ai*2] & RC_BORDER_REG) == 0) - previd = src[ai*2]; + if ((srcReg[ai] & RC_BORDER_REG) == 0) + previd = srcReg[ai]; } if (!previd) @@ -1030,31 +1044,29 @@ bool rcBuildRegionsMonotone(rcCompactHeightfield& chf, sweeps[previd].nei = 0; } - if (previd != 0) + // -y + if (rcGetCon(s,3) != 0xf) { - // -y - if (rcGetCon(s,3) != 0xf) + const int ax = x + rcGetDirOffsetX(3); + const int ay = y + rcGetDirOffsetY(3); + const int ai = (int)chf.cells[ax+ay*w].index + rcGetCon(s, 3); + if (srcReg[ai] && (srcReg[ai] & RC_BORDER_REG) == 0) { - const int ax = x + rcGetDirOffsetX(3); - const int ay = y + rcGetDirOffsetY(3); - const int ai = (int)chf.cells[ax+ay*w].index + rcGetCon(s, 3); - if (src[ai*2] && (src[ai*2] & RC_BORDER_REG) == 0) + unsigned char nr = srcReg[ai]; + if (!sweeps[previd].nei || sweeps[previd].nei == nr) { - unsigned char nr = src[ai*2]; - if (!sweeps[previd].nei || sweeps[previd].nei == nr) - { - sweeps[previd].nei = nr; - sweeps[previd].ns++; - prev[nr]++; - } - else - { - sweeps[previd].nei = 0xffff; - } + sweeps[previd].nei = nr; + sweeps[previd].ns++; + prev[nr]++; + } + else + { + sweeps[previd].nei = 0xffff; } } } - src[i*2] = previd; + + srcReg[i] = previd; } } @@ -1079,29 +1091,24 @@ bool rcBuildRegionsMonotone(rcCompactHeightfield& chf, for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i) { - if (src[i*2] > 0 && src[i*2] < rid) - src[i*2] = sweeps[src[i*2]].id; + if (srcReg[i] > 0 && srcReg[i] < rid) + srcReg[i] = sweeps[srcReg[i]].id; } } } - rcTimeVal filterStartTime = rcGetPerformanceTimer(); // Filter out small regions. chf.maxRegions = id; - if (!filterSmallRegions(minRegionSize, mergeRegionSize, chf.maxRegions, chf, src)) - goto failure; + if (!filterSmallRegions(minRegionSize, mergeRegionSize, chf.maxRegions, chf, srcReg)) + return false; rcTimeVal filterEndTime = rcGetPerformanceTimer(); - - // Write the result out. - for (int i = 0; i < chf.spanCount; ++i) - chf.spans[i].reg = src[i*2]; - - delete [] src; - delete [] sweeps; + // Store the result out. + chf.reg = srcReg; + srcReg = 0; rcTimeVal endTime = rcGetPerformanceTimer(); @@ -1112,12 +1119,6 @@ bool rcBuildRegionsMonotone(rcCompactHeightfield& chf, } return true; - -failure: - delete [] src; - delete [] sweeps; - - return false; } bool rcBuildRegions(rcCompactHeightfield& chf, @@ -1128,20 +1129,23 @@ bool rcBuildRegions(rcCompactHeightfield& chf, const int w = chf.width; const int h = chf.height; - - unsigned short* tmp1 = new unsigned short[chf.spanCount*2]; - if (!tmp1) + + if (!chf.reg) { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "rcBuildDistanceField: Out of memory 'tmp1' (%d).", chf.spanCount*2); - return false; + chf.reg = new unsigned short[chf.spanCount]; + if (!chf.reg) + { + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "rcBuildRegions: Out of memory 'chf.reg' (%d).", chf.spanCount); + return false; + } } - unsigned short* tmp2 = new unsigned short[chf.spanCount*2]; - if (!tmp2) + + rcScopedDelete tmp = new unsigned short[chf.spanCount*4]; + if (!tmp) { if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "rcBuildDistanceField: Out of memory 'tmp2' (%d).", chf.spanCount*2); - delete [] tmp1; + rcGetLog()->log(RC_LOG_ERROR, "rcBuildRegions: Out of memory 'tmp' (%d).", chf.spanCount*4); return false; } @@ -1150,10 +1154,13 @@ bool rcBuildRegions(rcCompactHeightfield& chf, rcIntArray stack(1024); rcIntArray visited(1024); - unsigned short* src = tmp1; - unsigned short* dst = tmp2; + unsigned short* srcReg = tmp; + unsigned short* srcDist = tmp+chf.spanCount; + unsigned short* dstReg = tmp+chf.spanCount*2; + unsigned short* dstDist = tmp+chf.spanCount*3; - memset(src, 0, sizeof(unsigned short) * chf.spanCount*2); + memset(srcReg, 0, sizeof(unsigned short)*chf.spanCount); + memset(srcDist, 0, sizeof(unsigned short)*chf.spanCount); unsigned short regionId = 1; unsigned short level = (chf.maxDistance+1) & ~1; @@ -1163,10 +1170,10 @@ bool rcBuildRegions(rcCompactHeightfield& chf, const int expandIters = 4 + walkableRadius * 2; // Mark border regions. - paintRectRegion(0, borderSize, 0, h, regionId|RC_BORDER_REG, minLevel, chf, src); regionId++; - paintRectRegion(w-borderSize, w, 0, h, regionId|RC_BORDER_REG, minLevel, chf, src); regionId++; - paintRectRegion(0, w, 0, borderSize, regionId|RC_BORDER_REG, minLevel, chf, src); regionId++; - paintRectRegion(0, w, h-borderSize, h, regionId|RC_BORDER_REG, minLevel, chf, src); regionId++; + paintRectRegion(0, borderSize, 0, h, regionId|RC_BORDER_REG, minLevel, chf, srcReg); regionId++; + paintRectRegion(w-borderSize, w, 0, h, regionId|RC_BORDER_REG, minLevel, chf, srcReg); regionId++; + paintRectRegion(0, w, 0, borderSize, regionId|RC_BORDER_REG, minLevel, chf, srcReg); regionId++; + paintRectRegion(0, w, h-borderSize, h, regionId|RC_BORDER_REG, minLevel, chf, srcReg); regionId++; rcTimeVal expTime = 0; rcTimeVal floodTime = 0; @@ -1178,8 +1185,11 @@ bool rcBuildRegions(rcCompactHeightfield& chf, rcTimeVal expStartTime = rcGetPerformanceTimer(); // Expand current regions until no empty connected cells found. - if (expandRegions(expandIters, level, chf, src, dst, stack) != src) - rcSwap(src, dst); + if (expandRegions(expandIters, level, chf, srcReg, srcDist, dstReg, dstDist, stack) != srcReg) + { + rcSwap(srcReg, dstReg); + rcSwap(srcDist, dstDist); + } expTime += rcGetPerformanceTimer() - expStartTime; @@ -1193,10 +1203,10 @@ bool rcBuildRegions(rcCompactHeightfield& chf, const rcCompactCell& c = chf.cells[x+y*w]; for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i) { - if (chf.spans[i].dist < level || src[i*2] != 0) + if (chf.dist[i] < level || srcReg[i] != 0) continue; - if (floodRegion(x, y, i, minLevel, level, regionId, chf, src, stack)) + if (floodRegion(x, y, i, minLevel, level, regionId, chf, srcReg, srcDist, stack)) regionId++; } } @@ -1207,8 +1217,11 @@ bool rcBuildRegions(rcCompactHeightfield& chf, } // Expand current regions until no empty connected cells found. - if (expandRegions(expandIters*8, minLevel, chf, src, dst, stack) != src) - rcSwap(src, dst); + if (expandRegions(expandIters*8, minLevel, chf, srcReg, srcDist, dstReg, dstDist, stack) != srcReg) + { + rcSwap(srcReg, dstReg); + rcSwap(srcDist, dstDist); + } rcTimeVal regEndTime = rcGetPerformanceTimer(); @@ -1216,17 +1229,14 @@ bool rcBuildRegions(rcCompactHeightfield& chf, // Filter out small regions. chf.maxRegions = regionId; - if (!filterSmallRegions(minRegionSize, mergeRegionSize, chf.maxRegions, chf, src)) + if (!filterSmallRegions(minRegionSize, mergeRegionSize, chf.maxRegions, chf, srcReg)) return false; rcTimeVal filterEndTime = rcGetPerformanceTimer(); // Write the result out. for (int i = 0; i < chf.spanCount; ++i) - chf.spans[i].reg = src[i*2]; - - delete [] tmp1; - delete [] tmp2; + chf.reg[i] = srcReg[i]; rcTimeVal endTime = rcGetPerformanceTimer(); diff --git a/Recast/Source/RecastTimer.cpp b/Recast/Source/RecastTimer.cpp index 51ffb7d3..f67e8d3b 100644 --- a/Recast/Source/RecastTimer.cpp +++ b/Recast/Source/RecastTimer.cpp @@ -21,38 +21,22 @@ int rcGetDeltaTimeUsec(rcTimeVal start, rcTimeVal end) return (int)(elapsed*1000000 / freq); } -#elif defined(__MACH__) - -// OSX -#include - -rcTimeVal rcGetPerformanceTimer() -{ - return mach_absolute_time(); -} - -int rcGetDeltaTimeUsec(rcTimeVal start, rcTimeVal end) -{ - static mach_timebase_info_data_t timebaseInfo; - if (timebaseInfo.denom == 0) - mach_timebase_info(&timebaseInfo); - uint64_t elapsed = end - start; - uint64_t nanosec = elapsed * timebaseInfo.numer / timebaseInfo.denom; - return (int)(nanosec / 1000); -} - #else -// TODO: Linux, etc +// Linux, BSD, OSX + +#include rcTimeVal rcGetPerformanceTimer() { - return 0; + timeval now; + gettimeofday(&now, NULL); + return (rcTimeVal)now.tv_sec*1000000L + (rcTimeVal)now.tv_usec; } int rcGetDeltaTimeUsec(rcTimeVal start, rcTimeVal end) { - return 0; + return (int)(end - start); } -#endif \ No newline at end of file +#endif diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser index 2bf2b992..6c8670f2 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 = ( @@ -21,9 +21,11 @@ 6B0249EF10037C0C00CF7107 /* DetourTileNavMesh.cpp:1 */, 6B024AC01004AB3900CF7107 /* DetourTileNavMesh.cpp:1 */, 6B9D0932102722F0009B1A6C /* RecastTexture.cpp:301 */, - 6B9D09921028542A009B1A6C /* RecastDebugDraw.cpp:693 */, - 6B93FEFF1030443300F0C0DA /* Recast.cpp:273 */, - 6B9301521032F08300F0C0DA /* Recast.cpp:273 */, + 6B9D09921028542A009B1A6C /* RecastDebugDraw.cpp:698 */, + 6B93FEFF1030443300F0C0DA /* Recast.cpp:275 */, + 6B9301521032F08300F0C0DA /* Recast.cpp:275 */, + 6B4C5232104FC1F600E88FB8 /* Recast.cpp:275 */, + 6BA8225E1066632D00AA331F /* RecastMeshDetail.cpp:519 */, ); codeSenseManager = 6B8632AA0F78115100E2684A /* Code sense */; executables = ( @@ -114,240 +116,115 @@ PBXFileDataSource_Target_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 272984131; - PBXWorkspaceStateSaveDate = 272984131; + PBXPerProjectTemplateStateSaveDate = 275822847; + PBXWorkspaceStateSaveDate = 275822847; }; perUserProjectItems = { - 6B02498D1003751300CF7107 = 6B02498D1003751300CF7107 /* PBXTextBookmark */; - 6B0249BE1003793900CF7107 = 6B0249BE1003793900CF7107 /* PBXTextBookmark */; - 6B024A721004A2FE00CF7107 = 6B024A721004A2FE00CF7107 /* PBXTextBookmark */; - 6B024BCF1005DFAB00CF7107 = 6B024BCF1005DFAB00CF7107 /* PBXTextBookmark */; - 6B024C011006098300CF7107 = 6B024C011006098300CF7107 /* PBXTextBookmark */; - 6B024C041006098300CF7107 = 6B024C041006098300CF7107 /* PBXTextBookmark */; - 6B024C1110060C7600CF7107 = 6B024C1110060C7600CF7107 /* PlistBookmark */; - 6B024C1310060C7600CF7107 = 6B024C1310060C7600CF7107 /* PlistBookmark */; - 6B05AF59104042D5004A71D1 = 6B05AF59104042D5004A71D1 /* PBXTextBookmark */; - 6B05AFA810404FAB004A71D1 = 6B05AFA810404FAB004A71D1 /* PBXTextBookmark */; - 6B05AFA910404FAB004A71D1 = 6B05AFA910404FAB004A71D1 /* PBXTextBookmark */; - 6B05B00C10405F0A004A71D1 = 6B05B00C10405F0A004A71D1 /* PBXTextBookmark */; - 6B092B500FFCA0A20088D3A5 = 6B092B500FFCA0A20088D3A5 /* PBXTextBookmark */; - 6B092BBC0FFCEC1A0088D3A5 = 6B092BBC0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B1186211006945C0018F96F = 6B1186211006945C0018F96F /* PBXBookmark */; - 6B11862D1006945C0018F96F = 6B11862D1006945C0018F96F /* PBXBookmark */; - 6B1186301006945C0018F96F = 6B1186301006945C0018F96F /* PBXTextBookmark */; - 6B1186311006945C0018F96F = 6B1186311006945C0018F96F /* PBXTextBookmark */; - 6B1186411006945C0018F96F = 6B1186411006945C0018F96F /* PBXTextBookmark */; - 6B1E032E0F925D9100CC0038 = 6B1E032E0F925D9100CC0038 /* PBXTextBookmark */; - 6B25B4080FFA13E9004F1BC4 = 6B25B4080FFA13E9004F1BC4 /* PBXTextBookmark */; - 6B25B4120FFA1545004F1BC4 = 6B25B4120FFA1545004F1BC4 /* PBXTextBookmark */; - 6B25B43E0FFA1786004F1BC4 = 6B25B43E0FFA1786004F1BC4 /* PBXTextBookmark */; - 6B25B44B0FFA1968004F1BC4 = 6B25B44B0FFA1968004F1BC4 /* PBXTextBookmark */; - 6B25B6250FFA63C8004F1BC4 = 6B25B6250FFA63C8004F1BC4 /* PBXTextBookmark */; - 6B2AEC670FFB8AB0005BE9CC = 6B2AEC670FFB8AB0005BE9CC /* PBXTextBookmark */; - 6B2AEC740FFB8AB0005BE9CC = 6B2AEC740FFB8AB0005BE9CC /* PBXTextBookmark */; - 6B2AEC750FFB8AB0005BE9CC = 6B2AEC750FFB8AB0005BE9CC /* PBXTextBookmark */; - 6B3314EE1042BC8200E98B50 = 6B3314EE1042BC8200E98B50 /* PBXTextBookmark */; - 6B3314EF1042BC8200E98B50 = 6B3314EF1042BC8200E98B50 /* PBXTextBookmark */; - 6B3314F41042BC8200E98B50 = 6B3314F41042BC8200E98B50 /* PBXTextBookmark */; - 6B3314F61042BC8200E98B50 = 6B3314F61042BC8200E98B50 /* PBXTextBookmark */; - 6B3314F71042BC8200E98B50 = 6B3314F71042BC8200E98B50 /* PBXTextBookmark */; - 6B3314F91042BC8200E98B50 = 6B3314F91042BC8200E98B50 /* PBXTextBookmark */; - 6B3314FD1042BC8200E98B50 = 6B3314FD1042BC8200E98B50 /* PBXTextBookmark */; - 6B3314FE1042BC8200E98B50 = 6B3314FE1042BC8200E98B50 /* PBXTextBookmark */; - 6B3315011042BC8200E98B50 = 6B3315011042BC8200E98B50 /* PBXTextBookmark */; - 6B3315021042BC8200E98B50 = 6B3315021042BC8200E98B50 /* PBXTextBookmark */; - 6B3315031042BC8200E98B50 = 6B3315031042BC8200E98B50 /* PBXTextBookmark */; - 6B3315041042BC8200E98B50 = 6B3315041042BC8200E98B50 /* PBXTextBookmark */; - 6B3315051042BC8200E98B50 = 6B3315051042BC8200E98B50 /* PBXTextBookmark */; - 6B3315061042BC8200E98B50 = 6B3315061042BC8200E98B50 /* PBXTextBookmark */; - 6B3315071042BC8200E98B50 = 6B3315071042BC8200E98B50 /* PBXTextBookmark */; - 6B3315081042BC8200E98B50 = 6B3315081042BC8200E98B50 /* PBXTextBookmark */; - 6B3315091042BC8200E98B50 = 6B3315091042BC8200E98B50 /* PBXTextBookmark */; - 6B33150A1042BC8200E98B50 = 6B33150A1042BC8200E98B50 /* PBXTextBookmark */; - 6B33150B1042BC8200E98B50 = 6B33150B1042BC8200E98B50 /* PBXTextBookmark */; - 6B33150C1042BC8200E98B50 = 6B33150C1042BC8200E98B50 /* PBXTextBookmark */; - 6B33150D1042BC8200E98B50 = 6B33150D1042BC8200E98B50 /* PBXTextBookmark */; - 6B33150E1042BC8200E98B50 = 6B33150E1042BC8200E98B50 /* PBXTextBookmark */; - 6B33150F1042BC8200E98B50 = 6B33150F1042BC8200E98B50 /* PBXTextBookmark */; - 6B3315101042BC8200E98B50 = 6B3315101042BC8200E98B50 /* PBXTextBookmark */; - 6B3315111042BC8200E98B50 = 6B3315111042BC8200E98B50 /* PBXTextBookmark */; - 6B3315121042BC8200E98B50 = 6B3315121042BC8200E98B50 /* PBXTextBookmark */; - 6B3315131042BC8200E98B50 = 6B3315131042BC8200E98B50 /* PBXTextBookmark */; - 6B3315141042BC8200E98B50 = 6B3315141042BC8200E98B50 /* PBXTextBookmark */; - 6B3315151042BC8200E98B50 = 6B3315151042BC8200E98B50 /* PBXTextBookmark */; - 6B3315161042BC8200E98B50 = 6B3315161042BC8200E98B50 /* PBXTextBookmark */; - 6B3315171042BC8200E98B50 = 6B3315171042BC8200E98B50 /* PBXTextBookmark */; - 6B3315181042BC8200E98B50 = 6B3315181042BC8200E98B50 /* PBXTextBookmark */; - 6B3315191042BC8200E98B50 = 6B3315191042BC8200E98B50 /* PBXTextBookmark */; - 6B33151A1042BC8200E98B50 = 6B33151A1042BC8200E98B50 /* PBXTextBookmark */; - 6B33151B1042BC8200E98B50 = 6B33151B1042BC8200E98B50 /* PBXTextBookmark */; - 6B33151C1042BC8200E98B50 = 6B33151C1042BC8200E98B50 /* PBXTextBookmark */; - 6B3315301042BD3500E98B50 = 6B3315301042BD3500E98B50 /* PBXTextBookmark */; - 6B3315321042BE1600E98B50 = 6B3315321042BE1600E98B50 /* PBXTextBookmark */; - 6B3315361042BE1600E98B50 = 6B3315361042BE1600E98B50 /* PBXTextBookmark */; - 6B33153B1042BE1600E98B50 = 6B33153B1042BE1600E98B50 /* PBXTextBookmark */; - 6B33153C1042BE1600E98B50 = 6B33153C1042BE1600E98B50 /* PBXTextBookmark */; - 6B33153D1042BE1600E98B50 = 6B33153D1042BE1600E98B50 /* PBXTextBookmark */; - 6B33153E1042BE1600E98B50 = 6B33153E1042BE1600E98B50 /* PBXTextBookmark */; - 6B33153F1042BE1600E98B50 = 6B33153F1042BE1600E98B50 /* PBXTextBookmark */; - 6B3315401042BE1600E98B50 = 6B3315401042BE1600E98B50 /* PBXTextBookmark */; - 6B3315421042BE1600E98B50 = 6B3315421042BE1600E98B50 /* PBXTextBookmark */; - 6B33154D1042C42500E98B50 = 6B33154D1042C42500E98B50 /* PBXTextBookmark */; - 6B33154F1042C42500E98B50 = 6B33154F1042C42500E98B50 /* PBXTextBookmark */; - 6B3315531042C42500E98B50 = 6B3315531042C42500E98B50 /* PBXTextBookmark */; - 6B3315561042C42500E98B50 = 6B3315561042C42500E98B50 /* PBXTextBookmark */; - 6B3315571042C42500E98B50 = 6B3315571042C42500E98B50 /* PBXTextBookmark */; - 6B3315581042C42500E98B50 = 6B3315581042C42500E98B50 /* PBXTextBookmark */; - 6B3315591042C42500E98B50 = 6B3315591042C42500E98B50 /* PBXTextBookmark */; - 6B33155A1042C42500E98B50 = 6B33155A1042C42500E98B50 /* PBXTextBookmark */; - 6B33155B1042C42500E98B50 = 6B33155B1042C42500E98B50 /* PBXTextBookmark */; - 6B33155C1042C42500E98B50 = 6B33155C1042C42500E98B50 /* PBXTextBookmark */; - 6B33155D1042C42500E98B50 = 6B33155D1042C42500E98B50 /* PBXTextBookmark */; - 6B33155E1042C42500E98B50 = 6B33155E1042C42500E98B50 /* PBXTextBookmark */; - 6B33155F1042C42500E98B50 = 6B33155F1042C42500E98B50 /* PBXTextBookmark */; - 6B3315601042C42500E98B50 = 6B3315601042C42500E98B50 /* PBXTextBookmark */; - 6B3315611042C42500E98B50 = 6B3315611042C42500E98B50 /* PBXTextBookmark */; - 6B3315621042C42500E98B50 = 6B3315621042C42500E98B50 /* PBXTextBookmark */; - 6B33156B1042C54200E98B50 = 6B33156B1042C54200E98B50 /* PBXTextBookmark */; - 6B33156D1042C54200E98B50 = 6B33156D1042C54200E98B50 /* PBXTextBookmark */; - 6B3315771042C6A000E98B50 = 6B3315771042C6A000E98B50 /* PBXTextBookmark */; - 6B3315791042C6A000E98B50 = 6B3315791042C6A000E98B50 /* PBXTextBookmark */; - 6B33157A1042C6A000E98B50 = 6B33157A1042C6A000E98B50 /* PBXTextBookmark */; - 6B3315821042CB6F00E98B50 = 6B3315821042CB6F00E98B50 /* PBXTextBookmark */; - 6B3315841042CB6F00E98B50 = 6B3315841042CB6F00E98B50 /* PBXTextBookmark */; - 6B3315891043BF9A00E98B50 = 6B3315891043BF9A00E98B50 /* PBXTextBookmark */; - 6B33158E1043BF9A00E98B50 = 6B33158E1043BF9A00E98B50 /* PBXTextBookmark */; - 6B3315901043BF9A00E98B50 = 6B3315901043BF9A00E98B50 /* PBXTextBookmark */; - 6B3315911043BF9A00E98B50 = 6B3315911043BF9A00E98B50 /* PBXTextBookmark */; - 6B3315E51043D5BA00E98B50 = 6B3315E51043D5BA00E98B50 /* PBXTextBookmark */; - 6B3315E71043D5BA00E98B50 = 6B3315E71043D5BA00E98B50 /* PBXTextBookmark */; - 6B3315E81043D5BA00E98B50 = 6B3315E81043D5BA00E98B50 /* PBXTextBookmark */; - 6B3315E91043D5BA00E98B50 = 6B3315E91043D5BA00E98B50 /* PBXTextBookmark */; - 6B3315EA1043D5BA00E98B50 = 6B3315EA1043D5BA00E98B50 /* PBXTextBookmark */; - 6B331683104407EA00E98B50 = 6B331683104407EA00E98B50 /* PBXTextBookmark */; - 6B331685104407EA00E98B50 = 6B331685104407EA00E98B50 /* PBXTextBookmark */; - 6B331686104407EA00E98B50 = 6B331686104407EA00E98B50 /* PBXTextBookmark */; - 6B331687104407EA00E98B50 = 6B331687104407EA00E98B50 /* PBXTextBookmark */; - 6B3316891044269D00E98B50 = 6B3316891044269D00E98B50 /* PBXTextBookmark */; - 6B33168D1044269D00E98B50 = 6B33168D1044269D00E98B50 /* PBXTextBookmark */; - 6B33168E1044269D00E98B50 = 6B33168E1044269D00E98B50 /* PBXTextBookmark */; - 6B33168F1044269D00E98B50 = 6B33168F1044269D00E98B50 /* PBXTextBookmark */; - 6B3316901044269D00E98B50 = 6B3316901044269D00E98B50 /* PBXTextBookmark */; - 6B3316911044269D00E98B50 = 6B3316911044269D00E98B50 /* PBXTextBookmark */; - 6B3316921044269D00E98B50 = 6B3316921044269D00E98B50 /* PBXTextBookmark */; - 6B33169B104428D300E98B50 = 6B33169B104428D300E98B50 /* PBXTextBookmark */; - 6B33169C104428D300E98B50 = 6B33169C104428D300E98B50 /* PBXTextBookmark */; - 6B3316BB10442A2200E98B50 = 6B3316BB10442A2200E98B50 /* PBXTextBookmark */; - 6B3316BC10442A2200E98B50 = 6B3316BC10442A2200E98B50 /* PBXTextBookmark */; - 6B3316BD10442A2200E98B50 = 6B3316BD10442A2200E98B50 /* PBXTextBookmark */; - 6B3316C610442A8600E98B50 = 6B3316C610442A8600E98B50 /* PBXTextBookmark */; - 6B3316C710442A8600E98B50 = 6B3316C710442A8600E98B50 /* PBXTextBookmark */; - 6B3316D110442C1700E98B50 = 6B3316D110442C1700E98B50 /* PBXTextBookmark */; - 6B3316D210442C1700E98B50 = 6B3316D210442C1700E98B50 /* PBXTextBookmark */; - 6B3316D310442C1700E98B50 = 6B3316D310442C1700E98B50 /* PBXTextBookmark */; - 6B3316D510442C1700E98B50 = 6B3316D510442C1700E98B50 /* PBXTextBookmark */; - 6B3316D710442C1700E98B50 = 6B3316D710442C1700E98B50 /* PBXTextBookmark */; - 6B3316D810442C1700E98B50 = 6B3316D810442C1700E98B50 /* PBXTextBookmark */; - 6B3316D910442C1700E98B50 = 6B3316D910442C1700E98B50 /* PBXTextBookmark */; - 6B3316DA10442C1700E98B50 = 6B3316DA10442C1700E98B50 /* PBXTextBookmark */; - 6B3316DB10442C1700E98B50 = 6B3316DB10442C1700E98B50 /* PBXTextBookmark */; - 6B3316DC10442C1700E98B50 = 6B3316DC10442C1700E98B50 /* PBXTextBookmark */; - 6B3316E410442CE300E98B50 = 6B3316E410442CE300E98B50 /* PBXTextBookmark */; - 6B3316EA10442D1D00E98B50 = 6B3316EA10442D1D00E98B50 /* PBXTextBookmark */; - 6B3316F2104431DE00E98B50 = 6B3316F2104431DE00E98B50 /* PBXTextBookmark */; - 6B3316F4104431DE00E98B50 = 6B3316F4104431DE00E98B50 /* PBXTextBookmark */; - 6B331700104432A400E98B50 = 6B331700104432A400E98B50 /* PBXTextBookmark */; - 6B331702104432A400E98B50 = 6B331702104432A400E98B50 /* PBXTextBookmark */; - 6B33170410455F3500E98B50 = 6B33170410455F3500E98B50 /* PBXTextBookmark */; - 6B33170510455F3500E98B50 = 6B33170510455F3500E98B50 /* PBXTextBookmark */; - 6B3317091045683900E98B50 = 6B3317091045683900E98B50 /* PBXTextBookmark */; - 6B33170A1045683900E98B50 = 6B33170A1045683900E98B50 /* PBXTextBookmark */; - 6B33170B1045683900E98B50 = 6B33170B1045683900E98B50 /* PBXTextBookmark */; - 6B33170D1045683900E98B50 = 6B33170D1045683900E98B50 /* PBXTextBookmark */; - 6B33170F1045683900E98B50 = 6B33170F1045683900E98B50 /* PBXTextBookmark */; - 6B3317101045683900E98B50 = 6B3317101045683900E98B50 /* PBXTextBookmark */; - 6B3317111045683900E98B50 = 6B3317111045683900E98B50 /* PBXTextBookmark */; - 6B3317131045683900E98B50 = 6B3317131045683900E98B50 /* PBXTextBookmark */; - 6B3317141045683900E98B50 = 6B3317141045683900E98B50 /* PBXTextBookmark */; - 6B3317151045683900E98B50 = 6B3317151045683900E98B50 /* PBXTextBookmark */; - 6B3317161045683900E98B50 = 6B3317161045683900E98B50 /* PBXTextBookmark */; - 6B3317181045683900E98B50 = 6B3317181045683900E98B50 /* PBXTextBookmark */; - 6B3317191045683900E98B50 = 6B3317191045683900E98B50 /* PBXTextBookmark */; - 6B33171A1045683900E98B50 = 6B33171A1045683900E98B50 /* PBXTextBookmark */; - 6B3317F01046805E00E98B50 /* PBXTextBookmark */ = 6B3317F01046805E00E98B50 /* PBXTextBookmark */; - 6B3317F21046805E00E98B50 /* PBXTextBookmark */ = 6B3317F21046805E00E98B50 /* PBXTextBookmark */; - 6B3317F31046805E00E98B50 /* PBXTextBookmark */ = 6B3317F31046805E00E98B50 /* PBXTextBookmark */; - 6B3317F51046805E00E98B50 /* PBXTextBookmark */ = 6B3317F51046805E00E98B50 /* PBXTextBookmark */; - 6B3317F61046805E00E98B50 /* PBXTextBookmark */ = 6B3317F61046805E00E98B50 /* PBXTextBookmark */; - 6B3317F71046805E00E98B50 /* PBXTextBookmark */ = 6B3317F71046805E00E98B50 /* PBXTextBookmark */; - 6B3317F91046805E00E98B50 /* PBXTextBookmark */ = 6B3317F91046805E00E98B50 /* PBXTextBookmark */; - 6B3317FA1046805E00E98B50 /* PBXTextBookmark */ = 6B3317FA1046805E00E98B50 /* PBXTextBookmark */; - 6B3317FB1046805E00E98B50 /* PBXTextBookmark */ = 6B3317FB1046805E00E98B50 /* PBXTextBookmark */; - 6B3317FC1046805E00E98B50 /* PBXTextBookmark */ = 6B3317FC1046805E00E98B50 /* PBXTextBookmark */; - 6B3317FD1046806200E98B50 /* PBXTextBookmark */ = 6B3317FD1046806200E98B50 /* PBXTextBookmark */; - 6B3317FE1046807A00E98B50 /* PBXTextBookmark */ = 6B3317FE1046807A00E98B50 /* PBXTextBookmark */; - 6B331808104680C900E98B50 /* PBXTextBookmark */ = 6B331808104680C900E98B50 /* PBXTextBookmark */; - 6B331809104680C900E98B50 /* PBXTextBookmark */ = 6B331809104680C900E98B50 /* PBXTextBookmark */; - 6B33180A104680C900E98B50 /* PBXTextBookmark */ = 6B33180A104680C900E98B50 /* PBXTextBookmark */; - 6B33180B104680C900E98B50 /* PBXTextBookmark */ = 6B33180B104680C900E98B50 /* PBXTextBookmark */; - 6B41875F10397C9F00FBF4A5 = 6B41875F10397C9F00FBF4A5 /* PBXTextBookmark */; - 6B41878E1039854600FBF4A5 = 6B41878E1039854600FBF4A5 /* PBXTextBookmark */; - 6B4187C41039909100FBF4A5 = 6B4187C41039909100FBF4A5 /* PBXTextBookmark */; - 6B418869103ACAC700FBF4A5 = 6B418869103ACAC700FBF4A5 /* PBXTextBookmark */; - 6B458EA80FB4540500044EA9 = 6B458EA80FB4540500044EA9 /* PBXTextBookmark */; - 6B555D30100B143200247EA3 = 6B555D30100B143200247EA3 /* PBXTextBookmark */; - 6B555DC9100B236A00247EA3 = 6B555DC9100B236A00247EA3 /* PBXTextBookmark */; - 6B555E01100B285300247EA3 = 6B555E01100B285300247EA3 /* PBXTextBookmark */; - 6B555E13100B285300247EA3 = 6B555E13100B285300247EA3 /* PBXTextBookmark */; - 6B555EE0100B39A600247EA3 = 6B555EE0100B39A600247EA3 /* PBXTextBookmark */; - 6B555EF9100B42E600247EA3 = 6B555EF9100B42E600247EA3 /* PBXTextBookmark */; - 6B555F0D100B473F00247EA3 = 6B555F0D100B473F00247EA3 /* PBXTextBookmark */; - 6B555F0E100B473F00247EA3 = 6B555F0E100B473F00247EA3 /* PBXTextBookmark */; - 6B6241E91034B2FA0002E346 = 6B6241E91034B2FA0002E346 /* PBXTextBookmark */; - 6B6241EB1034B2FA0002E346 = 6B6241EB1034B2FA0002E346 /* PBXTextBookmark */; - 6B74D052103DD64C00623975 = 6B74D052103DD64C00623975 /* PBXTextBookmark */; - 6B74D091103DDCC300623975 = 6B74D091103DDCC300623975 /* PBXTextBookmark */; - 6B7707B90FBD66CF00D21BAE = 6B7707B90FBD66CF00D21BAE /* PBXTextBookmark */; - 6B7707F00FBD90F100D21BAE = 6B7707F00FBD90F100D21BAE /* PBXTextBookmark */; - 6B7707F90FBD90F100D21BAE = 6B7707F90FBD90F100D21BAE /* PBXTextBookmark */; - 6B7708F70FBDA96300D21BAE = 6B7708F70FBDA96300D21BAE /* PBXTextBookmark */; - 6B7EBB69100721310066EF8C = 6B7EBB69100721310066EF8C /* PBXTextBookmark */; - 6B86333B0F7813A600E2684A = 6B86333B0F7813A600E2684A /* PBXTextBookmark */; - 6B8AE8DF10121C6000FF1D07 = 6B8AE8DF10121C6000FF1D07 /* PBXTextBookmark */; - 6B8AE8FA10123B5700FF1D07 = 6B8AE8FA10123B5700FF1D07 /* PBXTextBookmark */; - 6B8DB3900F9798DE007FA9E1 = 6B8DB3900F9798DE007FA9E1 /* PBXTextBookmark */; - 6B92CE69100E0577003DA304 = 6B92CE69100E0577003DA304 /* PBXTextBookmark */; - 6B92CE6A100E0577003DA304 = 6B92CE6A100E0577003DA304 /* PBXTextBookmark */; - 6B92CE8A100E0739003DA304 = 6B92CE8A100E0739003DA304 /* PBXTextBookmark */; - 6B93FDBB102FFCFE00F0C0DA = 6B93FDBB102FFCFE00F0C0DA /* PBXTextBookmark */; - 6B93FDF010300CBE00F0C0DA = 6B93FDF010300CBE00F0C0DA /* PBXTextBookmark */; - 6B95065010383C6900213080 = 6B95065010383C6900213080 /* PBXTextBookmark */; - 6B9506891038680900213080 = 6B9506891038680900213080 /* PBXTextBookmark */; - 6B95069A103869D900213080 = 6B95069A103869D900213080 /* PBXTextBookmark */; - 6B9506F810388A4200213080 = 6B9506F810388A4200213080 /* PBXTextBookmark */; - 6B9507401038910D00213080 = 6B9507401038910D00213080 /* PBXTextBookmark */; - 6B955A0610359EBB00FE9FE3 = 6B955A0610359EBB00FE9FE3 /* PBXTextBookmark */; - 6B955A0810359EBB00FE9FE3 = 6B955A0810359EBB00FE9FE3 /* PBXTextBookmark */; - 6B955A0A10359EBB00FE9FE3 = 6B955A0A10359EBB00FE9FE3 /* PBXTextBookmark */; - 6B955A0C10359EBB00FE9FE3 = 6B955A0C10359EBB00FE9FE3 /* PBXTextBookmark */; - 6B995F9F100F336B00D7BF5A = 6B995F9F100F336B00D7BF5A /* PBXTextBookmark */; - 6B995FA2100F336B00D7BF5A = 6B995FA2100F336B00D7BF5A /* PBXTextBookmark */; - 6B995FDF100F387200D7BF5A = 6B995FDF100F387200D7BF5A /* PBXTextBookmark */; - 6B9B7D9D0FF91AC600A9090F = 6B9B7D9D0FF91AC600A9090F /* PBXTextBookmark */; - 6B9D0AF4102991F0009B1A6C = 6B9D0AF4102991F0009B1A6C /* PBXTextBookmark */; - 6BB788290FC0593E003C24DB = 6BB788290FC0593E003C24DB /* PBXTextBookmark */; - 6BB7882A0FC0593E003C24DB = 6BB7882A0FC0593E003C24DB /* PBXTextBookmark */; - 6BB7882B0FC0593E003C24DB = 6BB7882B0FC0593E003C24DB /* PBXTextBookmark */; - 6BB85D3E0FCEAA6300758966 = 6BB85D3E0FCEAA6300758966 /* PBXTextBookmark */; - 6BC745AF0FF527E50083A694 = 6BC745AF0FF527E50083A694 /* PBXTextBookmark */; - 6BF26BB51041520F0099C14A = 6BF26BB51041520F0099C14A /* PBXTextBookmark */; - 6BF26BC5104158E90099C14A = 6BF26BC5104158E90099C14A /* PBXTextBookmark */; - 6BF26BC9104158E90099C14A = 6BF26BC9104158E90099C14A /* PBXTextBookmark */; - 6BF26BD4104158E90099C14A = 6BF26BD4104158E90099C14A /* PBXTextBookmark */; - 6BF26BD5104158E90099C14A = 6BF26BD5104158E90099C14A /* PBXTextBookmark */; - 6BF26BD8104158E90099C14A = 6BF26BD8104158E90099C14A /* PBXTextBookmark */; - 6BF26C1110415C680099C14A = 6BF26C1110415C680099C14A /* PBXTextBookmark */; - 6BF26C1210415C680099C14A = 6BF26C1210415C680099C14A /* PBXTextBookmark */; + 6B29D502104999490041538A = 6B29D502104999490041538A /* PBXTextBookmark */; + 6B29D53D104A79440041538A = 6B29D53D104A79440041538A /* PBXTextBookmark */; + 6B29D53F104A79440041538A = 6B29D53F104A79440041538A /* PBXTextBookmark */; + 6B29D540104A79440041538A = 6B29D540104A79440041538A /* PBXTextBookmark */; + 6B29D543104A79440041538A = 6B29D543104A79440041538A /* PBXTextBookmark */; + 6B29D544104A79440041538A = 6B29D544104A79440041538A /* PBXTextBookmark */; + 6B29D545104A79440041538A = 6B29D545104A79440041538A /* PBXTextBookmark */; + 6B29D54B104A79440041538A = 6B29D54B104A79440041538A /* PBXTextBookmark */; + 6B29D569104A81F50041538A = 6B29D569104A81F50041538A /* PBXTextBookmark */; + 6B3317F01046805E00E98B50 = 6B3317F01046805E00E98B50 /* PBXTextBookmark */; + 6B3317F21046805E00E98B50 = 6B3317F21046805E00E98B50 /* PBXTextBookmark */; + 6B3317F31046805E00E98B50 = 6B3317F31046805E00E98B50 /* PBXTextBookmark */; + 6B3317F71046805E00E98B50 = 6B3317F71046805E00E98B50 /* PBXTextBookmark */; + 6B33182C10469F7D00E98B50 = 6B33182C10469F7D00E98B50 /* PBXTextBookmark */; + 6B33183110469F7D00E98B50 = 6B33183110469F7D00E98B50 /* PBXTextBookmark */; + 6B33183210469F7D00E98B50 = 6B33183210469F7D00E98B50 /* PBXTextBookmark */; + 6B47BE1E105A47F400A26F5B = 6B47BE1E105A47F400A26F5B /* PBXTextBookmark */; + 6B47BE29105A47F400A26F5B = 6B47BE29105A47F400A26F5B /* PBXTextBookmark */; + 6B4C5162104EAA9F00E88FB8 = 6B4C5162104EAA9F00E88FB8 /* PBXTextBookmark */; + 6B4C5167104EAA9F00E88FB8 = 6B4C5167104EAA9F00E88FB8 /* PBXTextBookmark */; + 6B4C526C104FCA2400E88FB8 = 6B4C526C104FCA2400E88FB8 /* PBXTextBookmark */; + 6B4C52B0104FD54200E88FB8 = 6B4C52B0104FD54200E88FB8 /* PBXTextBookmark */; + 6B595C981056512C001FCC62 = 6B595C981056512C001FCC62 /* PBXTextBookmark */; + 6B595C991056512C001FCC62 = 6B595C991056512C001FCC62 /* PBXTextBookmark */; + 6B595C9A1056512C001FCC62 = 6B595C9A1056512C001FCC62 /* PBXTextBookmark */; + 6B595C9C1056512C001FCC62 = 6B595C9C1056512C001FCC62 /* PBXTextBookmark */; + 6B6FA3391070B90A009B0572 /* PBXTextBookmark */ = 6B6FA3391070B90A009B0572 /* PBXTextBookmark */; + 6B6FA33A1070B90A009B0572 /* PBXTextBookmark */ = 6B6FA33A1070B90A009B0572 /* PBXTextBookmark */; + 6B6FA33B1070B90A009B0572 /* PBXTextBookmark */ = 6B6FA33B1070B90A009B0572 /* PBXTextBookmark */; + 6B6FA33C1070B90A009B0572 /* PBXTextBookmark */ = 6B6FA33C1070B90A009B0572 /* PBXTextBookmark */; + 6B6FA3431070B93C009B0572 /* PBXTextBookmark */ = 6B6FA3431070B93C009B0572 /* PBXTextBookmark */; + 6B6FA3441070B93F009B0572 /* PBXTextBookmark */ = 6B6FA3441070B93F009B0572 /* PBXTextBookmark */; + 6B6FA3451070B941009B0572 /* PBXTextBookmark */ = 6B6FA3451070B941009B0572 /* PBXTextBookmark */; + 6B6FA34C1070B9AF009B0572 /* PBXTextBookmark */ = 6B6FA34C1070B9AF009B0572 /* PBXTextBookmark */; + 6B6FA34D1070B9AF009B0572 /* PBXTextBookmark */ = 6B6FA34D1070B9AF009B0572 /* PBXTextBookmark */; + 6B6FA3511070B9EE009B0572 /* PBXTextBookmark */ = 6B6FA3511070B9EE009B0572 /* PBXTextBookmark */; + 6B6FA35C1070BF26009B0572 /* PBXTextBookmark */ = 6B6FA35C1070BF26009B0572 /* PBXTextBookmark */; + 6B6FA35D1070BF26009B0572 /* PBXTextBookmark */ = 6B6FA35D1070BF26009B0572 /* PBXTextBookmark */; + 6B853D671066ACF5009B426A = 6B853D671066ACF5009B426A /* PBXTextBookmark */; + 6B853DD41066C751009B426A = 6B853DD41066C751009B426A /* PBXTextBookmark */; + 6BA821FE106651F300AA331F = 6BA821FE106651F300AA331F /* PBXTextBookmark */; + 6BA82204106651F300AA331F = 6BA82204106651F300AA331F /* PBXTextBookmark */; + 6BA82211106651F300AA331F = 6BA82211106651F300AA331F /* PBXTextBookmark */; + 6BA82232106660E000AA331F = 6BA82232106660E000AA331F /* PBXTextBookmark */; + 6BC43053104BF2B10041BBF5 = 6BC43053104BF2B10041BBF5 /* PBXTextBookmark */; + 6BC43054104BF2B10041BBF5 = 6BC43054104BF2B10041BBF5 /* PBXTextBookmark */; + 6BC43055104BF2B10041BBF5 = 6BC43055104BF2B10041BBF5 /* PBXTextBookmark */; + 6BC43059104BF2B10041BBF5 = 6BC43059104BF2B10041BBF5 /* PBXTextBookmark */; + 6BC4305A104BF2B10041BBF5 = 6BC4305A104BF2B10041BBF5 /* PBXTextBookmark */; + 6BC4305B104BF2B10041BBF5 = 6BC4305B104BF2B10041BBF5 /* PBXTextBookmark */; + 6BC4305C104BF2B10041BBF5 = 6BC4305C104BF2B10041BBF5 /* PBXTextBookmark */; + 6BC43060104BF2B10041BBF5 = 6BC43060104BF2B10041BBF5 /* PBXTextBookmark */; + 6BC430CD104CFB6C0041BBF5 = 6BC430CD104CFB6C0041BBF5 /* PBXTextBookmark */; + 6BC430D2104CFB6C0041BBF5 = 6BC430D2104CFB6C0041BBF5 /* PBXTextBookmark */; + 6BC430D8104CFB6C0041BBF5 = 6BC430D8104CFB6C0041BBF5 /* PBXTextBookmark */; + 6BC43126104E846A0041BBF5 = 6BC43126104E846A0041BBF5 /* PBXTextBookmark */; + 6BC43139104E90970041BBF5 = 6BC43139104E90970041BBF5 /* PBXTextBookmark */; + 6BC4313A104E90970041BBF5 = 6BC4313A104E90970041BBF5 /* PBXTextBookmark */; + 6BCB773F105D706200C20CF6 = 6BCB773F105D706200C20CF6 /* PBXTextBookmark */; + 6BCB7742105D706200C20CF6 = 6BCB7742105D706200C20CF6 /* PBXTextBookmark */; + 6BCB7744105D706200C20CF6 = 6BCB7744105D706200C20CF6 /* PBXTextBookmark */; + 6BCB774D105D706200C20CF6 = 6BCB774D105D706200C20CF6 /* PBXTextBookmark */; + 6BCB7750105D706200C20CF6 = 6BCB7750105D706200C20CF6 /* PBXTextBookmark */; + 6BCB778A105E224500C20CF6 = 6BCB778A105E224500C20CF6 /* PBXTextBookmark */; + 6BCB77A1105E7EA400C20CF6 = 6BCB77A1105E7EA400C20CF6 /* PBXTextBookmark */; + 6BCB77B7105E80FD00C20CF6 = 6BCB77B7105E80FD00C20CF6 /* PBXTextBookmark */; + 6BCB77D1105E870D00C20CF6 = 6BCB77D1105E870D00C20CF6 /* PBXTextBookmark */; + 6BF888A810679FAF00377388 = 6BF888A810679FAF00377388 /* PBXTextBookmark */; + 6BF888B81070B04F00377388 = 6BF888B81070B04F00377388 /* PBXTextBookmark */; + 6BF888BB1070B04F00377388 = 6BF888BB1070B04F00377388 /* PBXTextBookmark */; + 6BF888BD1070B04F00377388 = 6BF888BD1070B04F00377388 /* PBXTextBookmark */; + 6BF888BE1070B04F00377388 = 6BF888BE1070B04F00377388 /* PBXTextBookmark */; + 6BF888C11070B04F00377388 = 6BF888C11070B04F00377388 /* PBXTextBookmark */; + 6BF888C21070B04F00377388 = 6BF888C21070B04F00377388 /* PBXTextBookmark */; + 6BF888C31070B04F00377388 = 6BF888C31070B04F00377388 /* PBXTextBookmark */; + 6BF888C41070B04F00377388 = 6BF888C41070B04F00377388 /* PBXTextBookmark */; + 6BF888C51070B04F00377388 = 6BF888C51070B04F00377388 /* PBXTextBookmark */; + 6BF888C81070B04F00377388 = 6BF888C81070B04F00377388 /* PBXTextBookmark */; + 6BF888CA1070B04F00377388 = 6BF888CA1070B04F00377388 /* PBXTextBookmark */; + 6BF888CE1070B04F00377388 = 6BF888CE1070B04F00377388 /* PBXTextBookmark */; + 6BF888CF1070B04F00377388 = 6BF888CF1070B04F00377388 /* PBXTextBookmark */; + 6BF888D01070B04F00377388 = 6BF888D01070B04F00377388 /* PBXTextBookmark */; + 6BF888D21070B04F00377388 = 6BF888D21070B04F00377388 /* PBXTextBookmark */; + 6BF888DE1070B1F800377388 = 6BF888DE1070B1F800377388 /* PBXTextBookmark */; + 6BF888DF1070B1F800377388 = 6BF888DF1070B1F800377388 /* PBXTextBookmark */; + 6BF888E21070B1F800377388 = 6BF888E21070B1F800377388 /* PBXTextBookmark */; + 6BF888E31070B1F800377388 = 6BF888E31070B1F800377388 /* PBXTextBookmark */; + 6BF888E41070B1F800377388 = 6BF888E41070B1F800377388 /* PBXTextBookmark */; + 6BF888E51070B1F800377388 = 6BF888E51070B1F800377388 /* PBXTextBookmark */; + 6BF888E71070B20700377388 = 6BF888E71070B20700377388 /* PBXTextBookmark */; + 6BF888E91070B20700377388 = 6BF888E91070B20700377388 /* PBXTextBookmark */; + 6BF888EE1070B30700377388 = 6BF888EE1070B30700377388 /* PBXTextBookmark */; + 6BF888F21070B3A300377388 = 6BF888F21070B3A300377388 /* PBXTextBookmark */; + 6BF888F41070B3A300377388 = 6BF888F41070B3A300377388 /* PBXTextBookmark */; + 6BF888FC1070B6A400377388 = 6BF888FC1070B6A400377388 /* PBXTextBookmark */; + 6BF888FF1070B70B00377388 = 6BF888FF1070B70B00377388 /* PBXTextBookmark */; + 6BF889001070B70B00377388 = 6BF889001070B70B00377388 /* PBXTextBookmark */; + 6BF889011070B70B00377388 = 6BF889011070B70B00377388 /* PBXTextBookmark */; + 6BF889021070B70B00377388 = 6BF889021070B70B00377388 /* PBXTextBookmark */; + 6BF889031070B70B00377388 = 6BF889031070B70B00377388 /* PBXTextBookmark */; + 6BF889041070B70B00377388 = 6BF889041070B70B00377388 /* PBXTextBookmark */; + 6BF889051070B70B00377388 = 6BF889051070B70B00377388 /* PBXTextBookmark */; + 6BF889061070B70B00377388 = 6BF889061070B70B00377388 /* PBXTextBookmark */; + 6BF889071070B70B00377388 = 6BF889071070B70B00377388 /* PBXTextBookmark */; + 6BF889091070B71100377388 = 6BF889091070B71100377388 /* PBXTextBookmark */; }; sourceControlManager = 6B8632A90F78115100E2684A /* Source Control */; userBuildSettings = { @@ -361,16 +238,6 @@ sepNavWindowFrame = "{{38, 57}, {1011, 695}}"; }; }; - 6B02498D1003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; - name = "BuilderStatMesh.h: 27"; - rLen = 221; - rLoc = 425; - rType = 0; - vrLen = 558; - vrLoc = 362; - }; 6B0249B11003783F00CF7107 /* Sample_TileMesh.cpp:48 */ = { isa = PBXFileBreakpoint; actions = ( @@ -384,18 +251,9 @@ hitCount = 0; ignoreCount = 0; lineNumber = 48; - modificationTime = 273052800.379284; - state = 0; - }; - 6B0249BE1003793900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; - name = "ChunkyTriMesh.cpp: 32"; - rLen = 46; - rLoc = 1108; - rType = 0; - vrLen = 438; - vrLoc = 965; + location = Recast; + modificationTime = 275820615.342737; + state = 1; }; 6B0249ED10037C0A00CF7107 /* DetourTileNavMesh.cpp:1 */ = { isa = PBXFileBreakpoint; @@ -410,8 +268,9 @@ hitCount = 0; ignoreCount = 0; lineNumber = 1; - modificationTime = 273052800.389692; - state = 0; + location = Recast; + modificationTime = 275820615.343371; + state = 1; }; 6B0249EF10037C0C00CF7107 /* DetourTileNavMesh.cpp:1 */ = { isa = PBXFileBreakpoint; @@ -426,18 +285,9 @@ hitCount = 0; ignoreCount = 0; lineNumber = 1; - modificationTime = 273052800.409487; - state = 0; - }; - 6B024A721004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 192"; - rLen = 0; - rLoc = 5231; - rType = 0; - vrLen = 0; - vrLoc = 4345; + location = Recast; + modificationTime = 275820615.343635; + state = 1; }; 6B024AC01004AB3900CF7107 /* DetourTileNavMesh.cpp:1 */ = { isa = PBXFileBreakpoint; @@ -452,159 +302,36 @@ hitCount = 0; ignoreCount = 0; lineNumber = 1; - modificationTime = 273052800.419016; - state = 0; - }; - 6B024BCF1005DFAB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; - name = "BuilderTiledMesh.h: 61"; - rLen = 16; - rLoc = 2139; - rType = 0; - vrLen = 588; - vrLoc = 718; - }; - 6B024C011006098300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 089C165DFE840E0CC02AAC07 /* English */; - name = "InfoPlist.strings: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 45; - vrLoc = 0; - }; - 6B024C041006098300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 089C165DFE840E0CC02AAC07 /* English */; - name = "InfoPlist.strings: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 45; - vrLoc = 0; - }; - 6B024C1110060C7600CF7107 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D1107310486CEB800E47090 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = /Users/memon/Code/recastnavigation/RecastDemo/Build/Xcode/Info.plist; - rLen = 0; - rLoc = 2147483647; - }; - 6B024C1310060C7600CF7107 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D1107310486CEB800E47090 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = /Users/memon/Code/recastnavigation/RecastDemo/Build/Xcode/Info.plist; - rLen = 0; - rLoc = 2147483647; - }; - 6B05AF59104042D5004A71D1 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; - name = "RecastMesh.cpp: 1143"; - rLen = 0; - rLoc = 28276; - rType = 0; - vrLen = 813; - vrLoc = 27699; - }; - 6B05AFA810404FAB004A71D1 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; - name = "Recast.h: 183"; - rLen = 16; - rLoc = 7052; - rType = 0; - vrLen = 758; - vrLoc = 7108; - }; - 6B05AFA910404FAB004A71D1 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; - name = "RecastMeshDetail.cpp: 923"; - rLen = 0; - rLoc = 24134; - rType = 0; - vrLen = 651; - vrLoc = 23170; - }; - 6B05B00C10405F0A004A71D1 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7F0F7FCBFE00459200 /* RecastDebugDraw.h */; - name = "RecastDebugDraw.h: 45"; - rLen = 0; - rLoc = 1918; - rType = 0; - vrLen = 1760; - vrLoc = 1037; - }; - 6B092B500FFCA0A20088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B510FFCA0A20088D3A5 /* Label.c */; - name = "Label.c: 102"; - rLen = 111; - rLoc = 2055; - rType = 0; - vrLen = 615; - vrLoc = 1673; - }; - 6B092B510FFCA0A20088D3A5 /* Label.c */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - name = Label.c; - path = /Users/memon/Downloads/GraphicsGems/gems/Label.c; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1824}}"; - sepNavSelRange = "{2055, 111}"; - sepNavVisRange = "{1618, 670}"; - }; + location = Recast; + modificationTime = 275820615.343862; + state = 1; }; 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 520}}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 561}}"; sepNavSelRange = "{1461, 0}"; sepNavVisRange = "{0, 1461}"; }; }; 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 3248}}"; - sepNavSelRange = "{5231, 0}"; - sepNavVisRange = "{3923, 795}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 3392}}"; + sepNavSelRange = "{4244, 0}"; + sepNavVisRange = "{3923, 889}"; }; }; - 6B092BBC0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 1"; - rLen = 0; - rLoc = 1461; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; 6B1185F41006895B0018F96F /* DetourNode.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 2192}}"; - sepNavSelRange = "{3267, 0}"; - sepNavVisRange = "{0, 1288}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 2256}}"; + sepNavSelRange = "{2540, 726}"; + sepNavVisRange = "{2704, 563}"; }; }; 6B1185F61006896B0018F96F /* DetourNode.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 2384}}"; - sepNavSelRange = "{2978, 0}"; - sepNavVisRange = "{0, 1117}"; + sepNavSelRange = "{2094, 860}"; + sepNavVisRange = "{2453, 525}"; }; }; 6B1185FC10068B040018F96F /* DetourCommon.h */ = { @@ -621,44 +348,6 @@ sepNavVisRange = "{0, 1288}"; }; }; - 6B1186211006945C0018F96F /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 6B024C0C10060AC600CF7107 /* Icon.icns */; - }; - 6B11862D1006945C0018F96F /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 6B024C0C10060AC600CF7107 /* Icon.icns */; - }; - 6B1186301006945C0018F96F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B1185F41006895B0018F96F /* DetourNode.cpp */; - name = "DetourNode.cpp: 1"; - rLen = 0; - rLoc = 3267; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; - 6B1186311006945C0018F96F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B1185F61006896B0018F96F /* DetourNode.h */; - name = "DetourNode.h: 1"; - rLen = 0; - rLoc = 2978; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; - 6B1186411006945C0018F96F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; - name = "DetourCommon.cpp: 1"; - rLen = 0; - rLoc = 6005; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; 6B137C6C0F7FCBBB00459200 /* imgui.cpp */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1167, 9360}}"; @@ -683,8 +372,8 @@ 6B137C7A0F7FCBE400459200 /* imgui.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 1568}}"; - sepNavSelRange = "{0, 918}"; - sepNavVisRange = "{441, 926}"; + sepNavSelRange = "{2439, 0}"; + sepNavVisRange = "{2109, 432}"; }; }; 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */ = { @@ -694,61 +383,69 @@ sepNavVisRange = "{915, 681}"; }; }; + 6B137C7C0F7FCBE400459200 /* SDLMain.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 561}}"; + sepNavSelRange = "{307, 0}"; + sepNavVisRange = "{0, 307}"; + }; + }; 6B137C7E0F7FCBFE00459200 /* Recast.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 8256}}"; - sepNavSelRange = "{15950, 0}"; - sepNavVisRange = "{16579, 1618}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 8128}}"; + sepNavSelRange = "{16149, 0}"; + sepNavVisRange = "{15676, 1809}"; }; }; 6B137C7F0F7FCBFE00459200 /* RecastDebugDraw.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {992, 960}}"; - sepNavSelRange = "{2344, 1}"; - sepNavVisRange = "{1037, 1760}"; + sepNavSelRange = "{1783, 0}"; + sepNavVisRange = "{1034, 1763}"; }; }; 6B137C800F7FCBFE00459200 /* RecastLog.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1328}}"; - sepNavSelRange = "{2095, 15}"; - sepNavVisRange = "{1527, 681}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1296}}"; + sepNavSelRange = "{1648, 0}"; + sepNavVisRange = "{1418, 747}"; }; }; 6B137C810F7FCBFE00459200 /* RecastTimer.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 520}}"; - sepNavSelRange = "{1068, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 561}}"; + sepNavSelRange = "{1000, 0}"; sepNavVisRange = "{0, 1186}"; sepNavWindowFrame = "{{15, 78}, {1011, 695}}"; }; }; 6B137C820F7FCC1100459200 /* Recast.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 4416}}"; - sepNavSelRange = "{1380, 0}"; - sepNavVisRange = "{1061, 656}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 4320}}"; + sepNavSelRange = "{7227, 0}"; + sepNavVisRange = "{6468, 759}"; }; }; 6B137C830F7FCC1100459200 /* RecastContour.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 11728}}"; - sepNavSelRange = "{3230, 0}"; - sepNavVisRange = "{2154, 1125}"; + sepNavIntBoundsRect = "{{0, 0}, {1219, 11936}}"; + sepNavSelRange = "{5811, 23}"; + sepNavVisRange = "{5608, 510}"; }; }; 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 12544}}"; - sepNavSelRange = "{16203, 69}"; - sepNavVisRange = "{15711, 750}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 12784}}"; + sepNavSelRange = "{8860, 0}"; + sepNavVisRange = "{8297, 896}"; }; }; 6B137C850F7FCC1100459200 /* RecastFilter.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 3872}}"; - sepNavSelRange = "{7174, 0}"; - sepNavVisRange = "{5903, 1045}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 3932}}"; + sepNavSelRange = "{2482, 58}"; + sepNavVisRange = "{2067, 856}"; + sepNavWindowFrame = "{{15, 78}, {1011, 695}}"; }; }; 6B137C860F7FCC1100459200 /* RecastLog.cpp */ = { @@ -760,94 +457,32 @@ }; 6B137C870F7FCC1100459200 /* RecastMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 19136}}"; - sepNavSelRange = "{28276, 0}"; - sepNavVisRange = "{27593, 1010}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 18720}}"; + sepNavSelRange = "{17746, 0}"; + sepNavVisRange = "{15885, 893}"; }; }; 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 4848}}"; - sepNavSelRange = "{5532, 0}"; - sepNavVisRange = "{5184, 889}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 4496}}"; + sepNavSelRange = "{6570, 0}"; + sepNavVisRange = "{6154, 1081}"; }; }; 6B137C890F7FCC1100459200 /* RecastRegion.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 20512}}"; - sepNavSelRange = "{26571, 0}"; - sepNavVisRange = "{26110, 684}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 19760}}"; + sepNavSelRange = "{25815, 0}"; + sepNavVisRange = "{25554, 763}"; }; }; 6B137C8A0F7FCC1100459200 /* RecastTimer.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 928}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{25, 582}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 688}}"; + sepNavSelRange = "{471, 0}"; + sepNavVisRange = "{77, 635}"; }; }; - 6B1E032E0F925D9100CC0038 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 921"; - rLen = 0; - rLoc = 27016; - rType = 0; - vrLen = 918; - vrLoc = 20892; - }; - 6B25B3F60FFA124D004F1BC4 /* SDL_mouse.h */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = SDL_mouse.h; - path = /Library/Frameworks/SDL.framework/Versions/A/Headers/SDL_mouse.h; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 2288}}"; - sepNavSelRange = "{4241, 0}"; - sepNavVisRange = "{3733, 956}"; - }; - }; - 6B25B4080FFA13E9004F1BC4 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; - name = "imgui.cpp: 537"; - rLen = 0; - rLoc = 5820; - rType = 0; - vrLen = 508; - vrLoc = 11934; - }; - 6B25B4120FFA1545004F1BC4 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B3F60FFA124D004F1BC4 /* SDL_mouse.h */; - name = "SDL_mouse.h: 124"; - rLen = 0; - rLoc = 4241; - rType = 0; - vrLen = 895; - vrLoc = 3794; - }; - 6B25B43E0FFA1786004F1BC4 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B86333C0F7813A600E2684A /* SDL_events.h */; - name = "SDL_events.h: 244"; - rLen = 51; - rLoc = 8853; - rType = 0; - vrLen = 1342; - vrLoc = 10249; - }; - 6B25B44B0FFA1968004F1BC4 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B3F60FFA124D004F1BC4 /* SDL_mouse.h */; - name = "SDL_mouse.h: 55"; - rLen = 65; - rLoc = 1841; - rType = 0; - vrLen = 1141; - vrLoc = 1250; - }; 6B25B6100FFA62AD004F1BC4 /* Sample.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 848}}"; @@ -857,56 +492,136 @@ }; 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1152}}"; - sepNavSelRange = "{425, 221}"; - sepNavVisRange = "{358, 594}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1168}}"; + sepNavSelRange = "{726, 0}"; + sepNavVisRange = "{299, 682}"; }; }; 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1104}}"; - sepNavSelRange = "{180, 0}"; - sepNavVisRange = "{0, 660}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1072}}"; + sepNavSelRange = "{960, 0}"; + sepNavVisRange = "{613, 833}"; }; }; 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 2096}}"; - sepNavSelRange = "{202, 0}"; - sepNavVisRange = "{366, 700}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 2352}}"; + sepNavSelRange = "{700, 0}"; + sepNavVisRange = "{336, 748}"; }; }; 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 5824}}"; - sepNavSelRange = "{2700, 0}"; - sepNavVisRange = "{2551, 979}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 5632}}"; + sepNavSelRange = "{450, 1}"; + sepNavVisRange = "{0, 709}"; }; }; 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 9296}}"; - sepNavSelRange = "{420, 0}"; - sepNavVisRange = "{4731, 952}"; + sepNavIntBoundsRect = "{{0, 0}, {1160, 9104}}"; + sepNavSelRange = "{13425, 0}"; + sepNavVisRange = "{12836, 897}"; }; }; 6B25B6180FFA62BE004F1BC4 /* main.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 12352}}"; - sepNavSelRange = "{4855, 0}"; - sepNavVisRange = "{4391, 813}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 12400}}"; + sepNavSelRange = "{12751, 0}"; + sepNavVisRange = "{12515, 666}"; }; }; - 6B25B6250FFA63C8004F1BC4 /* PBXTextBookmark */ = { + 6B29D502104999490041538A /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B137C6E0F7FCBBB00459200 /* SDLMain.m */; - name = "SDLMain.m: 1"; + fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; + name = "RecastDebugDraw.cpp: 349"; rLen = 0; - rLoc = 0; + rLoc = 8860; rType = 0; - vrLen = 894; + vrLen = 724; + vrLoc = 8372; + }; + 6B29D53D104A79440041538A /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */; + name = "DetourTileNavMeshBuilder.h: 15"; + rLen = 0; + rLoc = 812; + rType = 0; + vrLen = 1461; vrLoc = 0; }; + 6B29D53F104A79440041538A /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */; + name = "DetourTileNavMeshBuilder.cpp: 35"; + rLen = 83; + rLoc = 1541; + rType = 0; + vrLen = 964; + vrLoc = 976; + }; + 6B29D540104A79440041538A /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */; + name = "DetourTileNavMesh.h: 27"; + rLen = 89; + rLoc = 1128; + rType = 0; + vrLen = 1189; + vrLoc = 1048; + }; + 6B29D543104A79440041538A /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */; + name = "DetourTileNavMesh.h: 37"; + rLen = 15; + rLoc = 1611; + rType = 0; + vrLen = 1235; + vrLoc = 975; + }; + 6B29D544104A79440041538A /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */; + name = "DetourTileNavMeshBuilder.cpp: 132"; + rLen = 0; + rLoc = 4244; + rType = 0; + vrLen = 743; + vrLoc = 3975; + }; + 6B29D545104A79440041538A /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */; + name = "DetourTileNavMeshBuilder.h: 29"; + rLen = 0; + rLoc = 1461; + rType = 0; + vrLen = 1461; + vrLoc = 0; + }; + 6B29D54B104A79440041538A /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; + name = "DetourTileNavMesh.cpp: 547"; + rLen = 0; + rLoc = 13941; + rType = 0; + vrLen = 708; + vrLoc = 13892; + }; + 6B29D569104A81F50041538A /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 558"; + rLen = 0; + rLoc = 12576; + rType = 0; + vrLen = 593; + vrLoc = 12544; + }; 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 1776}}"; @@ -917,1394 +632,39 @@ }; 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1111, 13600}}"; - sepNavSelRange = "{22466, 0}"; - sepNavVisRange = "{21778, 1468}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 14304}}"; + sepNavSelRange = "{23199, 0}"; + sepNavVisRange = "{0, 1325}"; }; }; 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {950, 15824}}"; - sepNavSelRange = "{15834, 160}"; - sepNavVisRange = "{15283, 1435}"; + sepNavIntBoundsRect = "{{0, 0}, {950, 15504}}"; + sepNavSelRange = "{20748, 0}"; + sepNavVisRange = "{20325, 1228}"; }; }; 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1536}}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1568}}"; sepNavSelRange = "{367, 0}"; - sepNavVisRange = "{0, 793}"; + sepNavVisRange = "{484, 754}"; }; }; 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 4912}}"; - sepNavSelRange = "{10704, 0}"; - sepNavVisRange = "{10070, 1242}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 5072}}"; + sepNavSelRange = "{1611, 15}"; + sepNavVisRange = "{919, 1318}"; }; }; 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 22368}}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 22448}}"; sepNavSelRange = "{13941, 0}"; - sepNavVisRange = "{13892, 768}"; + sepNavVisRange = "{13785, 875}"; }; }; - 6B2AEC670FFB8AB0005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C6E0F7FCBBB00459200 /* SDLMain.m */; - name = "SDLMain.m: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 894; - vrLoc = 0; - }; - 6B2AEC740FFB8AB0005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; - name = "Builder.h: 39"; - rLen = 75; - rLoc = 771; - rType = 0; - vrLen = 732; - vrLoc = 337; - }; - 6B2AEC750FFB8AB0005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; - name = "Builder.cpp: 47"; - rLen = 0; - rLoc = 202; - rType = 0; - vrLen = 625; - vrLoc = 372; - }; - 6B3314EE1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */; - name = "DetourStatNavMeshBuilder.h: 12"; - rLen = 0; - rLoc = 639; - rType = 0; - vrLen = 1416; - vrLoc = 0; - }; - 6B3314EF1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */; - name = "DetourStatNavMeshBuilder.cpp: 225"; - rLen = 0; - rLoc = 5801; - rType = 0; - vrLen = 736; - vrLoc = 5389; - }; - 6B3314F41042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */; - name = "DetourDebugDraw.h: 27"; - rLen = 0; - rLoc = 1194; - rType = 0; - vrLen = 1465; - vrLoc = 0; - }; - 6B3314F61042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 131"; - rLen = 0; - rLoc = 4694; - rType = 0; - vrLen = 1912; - vrLoc = 3168; - }; - 6B3314F71042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 441"; - rLen = 0; - rLoc = 10567; - rType = 0; - vrLen = 453; - vrLoc = 10265; - }; - 6B3314F91042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; - name = "Sample_StatMesh.h: 33"; - rLen = 0; - rLoc = 599; - rType = 0; - vrLen = 504; - vrLoc = 358; - }; - 6B3314FD1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; - name = "Recast.h: 485"; - rLen = 21; - rLoc = 18892; - rType = 0; - vrLen = 1361; - vrLoc = 16453; - }; - 6B3314FE1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; - name = "RecastMeshDetail.cpp: 558"; - rLen = 0; - rLoc = 14394; - rType = 0; - vrLen = 758; - vrLoc = 14176; - }; - 6B3315011042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; - name = "Sample_StatMeshTiled.cpp: 582"; - rLen = 0; - rLoc = 15997; - rType = 0; - vrLen = 915; - vrLoc = 25772; - }; - 6B3315021042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */; - name = "DetourStatNavMeshBuilder.h: 12"; - rLen = 0; - rLoc = 639; - rType = 0; - vrLen = 1416; - vrLoc = 0; - }; - 6B3315031042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */; - name = "DetourStatNavMeshBuilder.cpp: 225"; - rLen = 53; - rLoc = 5794; - rType = 0; - vrLen = 892; - vrLoc = 5248; - }; - 6B3315041042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - name = "DetourTileNavMesh.cpp: 370"; - rLen = 0; - rLoc = 10141; - rType = 0; - vrLen = 1102; - vrLoc = 9226; - }; - 6B3315051042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */; - name = "DetourTileNavMeshBuilder.cpp: 132"; - rLen = 8; - rLoc = 4182; - rType = 0; - vrLen = 1070; - vrLoc = 3417; - }; - 6B3315061042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 204"; - rLen = 0; - rLoc = 8285; - rType = 0; - vrLen = 1624; - vrLoc = 7011; - }; - 6B3315071042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 59"; - rLen = 8; - rLoc = 1946; - rType = 0; - vrLen = 1158; - vrLoc = 1367; - }; - 6B3315081042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - name = "DetourTileNavMesh.cpp: 360"; - rLen = 0; - rLoc = 9687; - rType = 0; - vrLen = 1115; - vrLoc = 9473; - }; - 6B3315091042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */; - name = "DetourStatNavMeshBuilder.cpp: 225"; - rLen = 0; - rLoc = 5801; - rType = 0; - vrLen = 736; - vrLoc = 5389; - }; - 6B33150A1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; - name = "Sample_StatMeshTiled.cpp: 800"; - rLen = 0; - rLoc = 23215; - rType = 0; - vrLen = 765; - vrLoc = 22602; - }; - 6B33150B1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */; - name = "DetourTileNavMeshBuilder.cpp: 41"; - rLen = 0; - rLoc = 1641; - rType = 0; - vrLen = 838; - vrLoc = 1200; - }; - 6B33150C1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - name = "DetourTileNavMesh.cpp: 366"; - rLen = 0; - rLoc = 9922; - rType = 0; - vrLen = 1043; - vrLoc = 9473; - }; - 6B33150D1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 613"; - rLen = 0; - rLoc = 16258; - rType = 0; - vrLen = 1266; - vrLoc = 15211; - }; - 6B33150E1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; - name = "Sample_StatMeshTiled.cpp: 588"; - rLen = 0; - rLoc = 16300; - rType = 0; - vrLen = 1210; - vrLoc = 15408; - }; - 6B33150F1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; - name = "Sample.cpp: 78"; - rLen = 0; - rLoc = 1481; - rType = 0; - vrLen = 710; - vrLoc = 1130; - }; - 6B3315101042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; - name = "RecastDebugDraw.cpp: 697"; - rLen = 0; - rLoc = 16331; - rType = 0; - vrLen = 1465; - vrLoc = 0; - }; - 6B3315111042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; - name = "RecastDebugDraw.cpp: 598"; - rLen = 0; - rLoc = 14053; - rType = 0; - vrLen = 790; - vrLoc = 13338; - }; - 6B3315121042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */; - name = "DetourDebugDraw.h: 27"; - rLen = 0; - rLoc = 1194; - rType = 0; - vrLen = 1465; - vrLoc = 0; - }; - 6B3315131042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 481"; - rLen = 0; - rLoc = 12646; - rType = 0; - vrLen = 964; - vrLoc = 11948; - }; - 6B3315141042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 131"; - rLen = 0; - rLoc = 4694; - rType = 0; - vrLen = 1912; - vrLoc = 3168; - }; - 6B3315151042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 441"; - rLen = 0; - rLoc = 10567; - rType = 0; - vrLen = 453; - vrLoc = 10265; - }; - 6B3315161042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 480"; - rLen = 0; - rLoc = 12618; - rType = 0; - vrLen = 699; - vrLoc = 11988; - }; - 6B3315171042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; - name = "Sample_StatMesh.cpp: 122"; - rLen = 0; - rLoc = 2330; - rType = 0; - vrLen = 777; - vrLoc = 2031; - }; - 6B3315181042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; - name = "Sample_StatMesh.h: 36"; - rLen = 0; - rLoc = 645; - rType = 0; - vrLen = 553; - vrLoc = 358; - }; - 6B3315191042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; - name = "Sample_StatMesh.cpp: 162"; - rLen = 0; - rLoc = 2330; - rType = 0; - vrLen = 669; - vrLoc = 3189; - }; - 6B33151A1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; - name = "Sample_StatMesh.h: 33"; - rLen = 0; - rLoc = 599; - rType = 0; - vrLen = 504; - vrLoc = 358; - }; - 6B33151B1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; - name = "Sample_StatMesh.cpp: 221"; - rLen = 0; - rLoc = 5018; - rType = 0; - vrLen = 1121; - vrLoc = 7697; - }; - 6B33151C1042BC8200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - name = "DetourTileNavMesh.cpp: 494"; - rLen = 0; - rLoc = 12498; - rType = 0; - vrLen = 792; - vrLoc = 12269; - }; - 6B3315301042BD3500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 373"; - rLen = 0; - rLoc = 9597; - rType = 0; - vrLen = 929; - vrLoc = 10515; - }; - 6B3315321042BE1600E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; - name = "Sample_StatMesh.cpp: 206"; - rLen = 0; - rLoc = 4624; - rType = 0; - vrLen = 893; - vrLoc = 4210; - }; - 6B3315361042BE1600E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C860F7FCC1100459200 /* RecastLog.cpp */; - name = "RecastLog.cpp: 47"; - rLen = 0; - rLoc = 1420; - rType = 0; - vrLen = 612; - vrLoc = 1157; - }; - 6B33153B1042BE1600E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; - name = "Sample_StatMesh.cpp: 206"; - rLen = 0; - rLoc = 4624; - rType = 0; - vrLen = 893; - vrLoc = 4210; - }; - 6B33153C1042BE1600E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; - name = "Recast.cpp: 37"; - rLen = 0; - rLoc = 1301; - rType = 0; - vrLen = 734; - vrLoc = 2964; - }; - 6B33153D1042BE1600E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; - name = "RecastContour.cpp: 738"; - rLen = 0; - rLoc = 18620; - rType = 0; - vrLen = 828; - vrLoc = 7955; - }; - 6B33153E1042BE1600E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C850F7FCC1100459200 /* RecastFilter.cpp */; - name = "RecastFilter.cpp: 37"; - rLen = 0; - rLoc = 1325; - rType = 0; - vrLen = 972; - vrLoc = 6305; - }; - 6B33153F1042BE1600E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C860F7FCC1100459200 /* RecastLog.cpp */; - name = "RecastLog.cpp: 47"; - rLen = 0; - rLoc = 1420; - rType = 0; - vrLen = 612; - vrLoc = 1157; - }; - 6B3315401042BE1600E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; - name = "RecastMesh.cpp: 676"; - rLen = 0; - rLoc = 16698; - rType = 0; - vrLen = 1171; - vrLoc = 0; - }; - 6B3315421042BE1600E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 1058"; - rLen = 0; - rLoc = 29597; - rType = 0; - vrLen = 920; - vrLoc = 22208; - }; - 6B33154D1042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */; - name = "DetourTileNavMesh.h: 253"; - rLen = 0; - rLoc = 10704; - rType = 0; - vrLen = 1184; - vrLoc = 10128; - }; - 6B33154F1042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */; - name = "DetourTileNavMeshBuilder.cpp: 175"; - rLen = 6; - rLoc = 5160; - rType = 0; - vrLen = 712; - vrLoc = 4816; - }; - 6B3315531042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; - name = "RecastMesh.cpp: 943"; - rLen = 0; - rLoc = 23230; - rType = 0; - vrLen = 695; - vrLoc = 22911; - }; - 6B3315561042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; - name = "RecastMeshDetail.cpp: 527"; - rLen = 0; - rLoc = 13635; - rType = 0; - vrLen = 868; - vrLoc = 13208; - }; - 6B3315571042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */; - name = "DetourTileNavMesh.h: 253"; - rLen = 0; - rLoc = 10704; - rType = 0; - vrLen = 1184; - vrLoc = 10128; - }; - 6B3315581042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - name = "DetourTileNavMesh.cpp: 534"; - rLen = 0; - rLoc = 13513; - rType = 0; - vrLen = 677; - vrLoc = 13470; - }; - 6B3315591042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; - name = "Recast.h: 218"; - rLen = 13; - rLoc = 8368; - rType = 0; - vrLen = 861; - vrLoc = 7817; - }; - 6B33155A1042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 994"; - rLen = 13; - rLoc = 27764; - rType = 0; - vrLen = 848; - vrLoc = 23063; - }; - 6B33155B1042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; - name = "RecastMesh.cpp: 301"; - rLen = 6; - rLoc = 8601; - rType = 0; - vrLen = 618; - vrLoc = 8278; - }; - 6B33155C1042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; - name = "RecastContour.cpp: 619"; - rLen = 13; - rLoc = 15173; - rType = 0; - vrLen = 678; - vrLoc = 14821; - }; - 6B33155D1042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */; - name = "DetourTileNavMeshBuilder.cpp: 175"; - rLen = 6; - rLoc = 5160; - rType = 0; - vrLen = 712; - vrLoc = 4816; - }; - 6B33155E1042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - name = "DetourTileNavMesh.cpp: 1296"; - rLen = 6; - rLoc = 32980; - rType = 0; - vrLen = 677; - vrLoc = 32568; - }; - 6B33155F1042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 264"; - rLen = 0; - rLoc = 6843; - rType = 0; - vrLen = 442; - vrLoc = 6876; - }; - 6B3315601042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; - name = "Recast.h: 222"; - rLen = 16; - rLoc = 8561; - rType = 0; - vrLen = 861; - vrLoc = 7817; - }; - 6B3315611042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; - name = "RecastMesh.cpp: 943"; - rLen = 0; - rLoc = 23230; - rType = 0; - vrLen = 695; - vrLoc = 22911; - }; - 6B3315621042C42500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; - name = "RecastDebugDraw.cpp: 566"; - rLen = 0; - rLoc = 13421; - rType = 0; - vrLen = 451; - vrLoc = 13193; - }; - 6B33156B1042C54200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; - name = "RecastContour.cpp: 230"; - rLen = 0; - rLoc = 6132; - rType = 0; - vrLen = 883; - vrLoc = 5779; - }; - 6B33156D1042C54200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; - name = "RecastContour.cpp: 230"; - rLen = 0; - rLoc = 6132; - rType = 0; - vrLen = 883; - vrLoc = 5779; - }; - 6B3315771042C6A000E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 29"; - rLen = 0; - rLoc = 1224; - rType = 0; - vrLen = 903; - vrLoc = 1259; - }; - 6B3315791042C6A000E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; - name = "RecastDebugDraw.cpp: 720"; - rLen = 0; - rLoc = 16907; - rType = 0; - vrLen = 840; - vrLoc = 16758; - }; - 6B33157A1042C6A000E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 29"; - rLen = 0; - rLoc = 1224; - rType = 0; - vrLen = 903; - vrLoc = 1259; - }; - 6B3315821042CB6F00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; - name = "RecastDebugDraw.cpp: 24"; - rLen = 0; - rLoc = 1059; - rType = 0; - vrLen = 1096; - vrLoc = 706; - }; - 6B3315841042CB6F00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; - name = "RecastDebugDraw.cpp: 24"; - rLen = 0; - rLoc = 1059; - rType = 0; - vrLen = 1096; - vrLoc = 706; - }; - 6B3315891043BF9A00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; - name = "RecastMeshDetail.cpp: 122"; - rLen = 0; - rLoc = 3404; - rType = 0; - vrLen = 1054; - vrLoc = 2783; - }; - 6B33158E1043BF9A00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; - name = "RecastMeshDetail.cpp: 122"; - rLen = 0; - rLoc = 3404; - rType = 0; - vrLen = 1054; - vrLoc = 2783; - }; - 6B3315901043BF9A00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; - name = "Sample_StatMeshTiled.cpp: 641"; - rLen = 0; - rLoc = 18181; - rType = 0; - vrLen = 1034; - vrLoc = 22329; - }; - 6B3315911043BF9A00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 491"; - rLen = 0; - rLoc = 12766; - rType = 0; - vrLen = 860; - vrLoc = 20838; - }; - 6B3315E51043D5BA00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C800F7FCBFE00459200 /* RecastLog.h */; - name = "RecastLog.h: 53"; - rLen = 43; - rLoc = 1674; - rType = 0; - vrLen = 681; - vrLoc = 1527; - }; - 6B3315E71043D5BA00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 1098"; - rLen = 0; - rLoc = 26223; - rType = 0; - vrLen = 820; - vrLoc = 25599; - }; - 6B3315E81043D5BA00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; - name = "Recast.cpp: 120"; - rLen = 0; - rLoc = 3205; - rType = 0; - vrLen = 714; - vrLoc = 2964; - }; - 6B3315E91043D5BA00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; - name = "RecastRasterization.cpp: 223"; - rLen = 0; - rLoc = 5532; - rType = 0; - vrLen = 984; - vrLoc = 5082; - }; - 6B3315EA1043D5BA00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C800F7FCBFE00459200 /* RecastLog.h */; - name = "RecastLog.h: 53"; - rLen = 43; - rLoc = 1674; - rType = 0; - vrLen = 681; - vrLoc = 1527; - }; - 6B331683104407EA00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; - name = "Recast.cpp: 189"; - rLen = 0; - rLoc = 4899; - rType = 0; - vrLen = 777; - vrLoc = 4522; - }; - 6B331685104407EA00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; - name = "RecastRasterization.cpp: 267"; - rLen = 0; - rLoc = 6790; - rType = 0; - vrLen = 981; - vrLoc = 6174; - }; - 6B331686104407EA00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C850F7FCC1100459200 /* RecastFilter.cpp */; - name = "RecastFilter.cpp: 38"; - rLen = 0; - rLoc = 1326; - rType = 0; - vrLen = 892; - vrLoc = 1052; - }; - 6B331687104407EA00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; - name = "Recast.cpp: 189"; - rLen = 0; - rLoc = 4899; - rType = 0; - vrLen = 777; - vrLoc = 4522; - }; - 6B3316891044269D00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C850F7FCC1100459200 /* RecastFilter.cpp */; - name = "RecastFilter.cpp: 88"; - rLen = 0; - rLoc = 2916; - rType = 0; - vrLen = 1021; - vrLoc = 2483; - }; - 6B33168D1044269D00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C850F7FCC1100459200 /* RecastFilter.cpp */; - name = "RecastFilter.cpp: 88"; - rLen = 0; - rLoc = 2916; - rType = 0; - vrLen = 1021; - vrLoc = 2483; - }; - 6B33168E1044269D00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; - name = "Sample_StatMeshSimple.h: 21"; - rLen = 0; - rLoc = 180; - rType = 0; - vrLen = 566; - vrLoc = 0; - }; - 6B33168F1044269D00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; - name = "Sample_StatMeshSimple.cpp: 225"; - rLen = 0; - rLoc = 420; - rType = 0; - vrLen = 822; - vrLoc = 4816; - }; - 6B3316901044269D00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; - name = "Sample_StatMeshSimple.h: 21"; - rLen = 0; - rLoc = 180; - rType = 0; - vrLen = 566; - vrLoc = 0; - }; - 6B3316911044269D00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; - name = "Sample_StatMeshSimple.cpp: 34"; - rLen = 0; - rLoc = 420; - rType = 0; - vrLen = 610; - vrLoc = 553; - }; - 6B3316921044269D00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; - name = "Sample_StatMeshSimple.h: 15"; - rLen = 0; - rLoc = 180; - rType = 0; - vrLen = 572; - vrLoc = 0; - }; - 6B33169B104428D300E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; - name = "Sample_StatMeshSimple.cpp: 31"; - rLen = 0; - rLoc = 420; - rType = 0; - vrLen = 540; - vrLoc = 303; - }; - 6B33169C104428D300E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; - name = "Sample_StatMeshSimple.h: 17"; - rLen = 0; - rLoc = 180; - rType = 0; - vrLen = 596; - vrLoc = 0; - }; - 6B3316BB10442A2200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; - name = "Sample_StatMeshSimple.cpp: 255"; - rLen = 0; - rLoc = 420; - rType = 0; - vrLen = 512; - vrLoc = 5897; - }; - 6B3316BC10442A2200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; - name = "RecastRasterization.cpp: 167"; - rLen = 0; - rLoc = 3939; - rType = 0; - vrLen = 520; - vrLoc = 3768; - }; - 6B3316BD10442A2200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 869"; - rLen = 0; - rLoc = 25967; - rType = 0; - vrLen = 2685; - vrLoc = 23403; - }; - 6B3316C610442A8600E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; - name = "RecastRasterization.cpp: 164"; - rLen = 0; - rLoc = 3939; - rType = 0; - vrLen = 569; - vrLoc = 3847; - }; - 6B3316C710442A8600E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 867"; - rLen = 0; - rLoc = 25967; - rType = 0; - vrLen = 2685; - vrLoc = 23403; - }; - 6B3316D110442C1700E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; - name = "RecastRasterization.cpp: 87"; - rLen = 0; - rLoc = 2685; - rType = 0; - vrLen = 1003; - vrLoc = 7291; - }; - 6B3316D210442C1700E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; - name = "Sample_StatMeshSimple.h: 24"; - rLen = 0; - rLoc = 477; - rType = 0; - vrLen = 664; - vrLoc = 104; - }; - 6B3316D310442C1700E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; - name = "Sample_StatMeshSimple.cpp: 20"; - rLen = 0; - rLoc = 419; - rType = 0; - vrLen = 1118; - vrLoc = 1192; - }; - 6B3316D510442C1700E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; - name = "Sample.cpp: 85"; - rLen = 0; - rLoc = 1655; - rType = 0; - vrLen = 813; - vrLoc = 2126; - }; - 6B3316D710442C1700E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; - name = "Sample_StatMeshTiled.cpp: 979"; - rLen = 0; - rLoc = 30157; - rType = 0; - vrLen = 2764; - vrLoc = 27425; - }; - 6B3316D810442C1700E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; - name = "RecastRasterization.cpp: 87"; - rLen = 0; - rLoc = 2685; - rType = 0; - vrLen = 1003; - vrLoc = 7291; - }; - 6B3316D910442C1700E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; - name = "Sample_StatMeshSimple.h: 24"; - rLen = 0; - rLoc = 477; - rType = 0; - vrLen = 664; - vrLoc = 104; - }; - 6B3316DA10442C1700E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; - name = "Sample_StatMeshSimple.cpp: 20"; - rLen = 0; - rLoc = 419; - rType = 0; - vrLen = 1118; - vrLoc = 1192; - }; - 6B3316DB10442C1700E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; - name = "Sample_StatMeshTiled.cpp: 978"; - rLen = 0; - rLoc = 30156; - rType = 0; - vrLen = 2764; - vrLoc = 27425; - }; - 6B3316DC10442C1700E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; - name = "Sample.cpp: 85"; - rLen = 0; - rLoc = 1655; - rType = 0; - vrLen = 813; - vrLoc = 2126; - }; - 6B3316E410442CE300E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; - name = "main.cpp: 580"; - rLen = 0; - rLoc = 12996; - rType = 0; - vrLen = 627; - vrLoc = 12603; - }; - 6B3316EA10442D1D00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; - name = "Sample_StatMeshTiled.cpp: 978"; - rLen = 0; - rLoc = 30156; - rType = 0; - vrLen = 2764; - vrLoc = 27425; - }; - 6B3316F2104431DE00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 1096"; - rLen = 0; - rLoc = 26146; - rType = 0; - vrLen = 793; - vrLoc = 25440; - }; - 6B3316F4104431DE00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 1096"; - rLen = 0; - rLoc = 26146; - rType = 0; - vrLen = 793; - vrLoc = 25440; - }; - 6B331700104432A400E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; - name = "Sample_StatMeshTiled.cpp: 578"; - rLen = 0; - rLoc = 15805; - rType = 0; - vrLen = 1400; - vrLoc = 15099; - }; - 6B331702104432A400E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; - name = "Sample_StatMeshTiled.cpp: 578"; - rLen = 0; - rLoc = 15805; - rType = 0; - vrLen = 1400; - vrLoc = 15099; - }; - 6B33170410455F3500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 623"; - rLen = 0; - rLoc = 16503; - rType = 0; - vrLen = 1415; - vrLoc = 15544; - }; - 6B33170510455F3500E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 623"; - rLen = 0; - rLoc = 16503; - rType = 0; - vrLen = 1415; - vrLoc = 15544; - }; - 6B3317071045682A00E98B50 /* transGizmo.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 6640}}"; - sepNavSelRange = "{7647, 0}"; - sepNavVisRange = "{7329, 649}"; - }; - }; - 6B3317091045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - name = "DetourTileNavMesh.cpp: 95"; - rLen = 0; - rLoc = 2934; - rType = 0; - vrLen = 694; - vrLoc = 2529; - }; - 6B33170A1045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; - name = "Recast.h: 406"; - rLen = 0; - rLoc = 13980; - rType = 0; - vrLen = 1567; - vrLoc = 13196; - }; - 6B33170B1045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B33170C1045683900E98B50 /* AllGems.TOC */; - name = "AllGems.TOC: 243"; - rLen = 0; - rLoc = 10634; - rType = 0; - vrLen = 1227; - vrLoc = 7843; - }; - 6B33170C1045683900E98B50 /* AllGems.TOC */ = { - isa = PBXFileReference; - lastKnownFileType = text; - name = AllGems.TOC; - path = "/Users/memon/Downloads/GraphicsGems 2/AllGems.TOC"; - sourceTree = ""; - }; - 6B33170D1045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B33170E1045683900E98B50 /* solver.c */; - name = "solver.c: 40"; - rLen = 501; - rLoc = 989; - rType = 0; - vrLen = 679; - vrLoc = 1224; - }; - 6B33170E1045683900E98B50 /* solver.c */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - name = solver.c; - path = "/Users/memon/Downloads/GraphicsGems 2/gemsiv/vec_mat/ray/solver.c"; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 4192}}"; - sepNavSelRange = "{393, 0}"; - sepNavVisRange = "{0, 808}"; - }; - }; - 6B33170F1045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; - name = "main.cpp: 26"; - rLen = 0; - rLoc = 440; - rType = 0; - vrLen = 613; - vrLoc = 215; - }; - 6B3317101045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B3317071045682A00E98B50 /* transGizmo.cpp */; - name = "transGizmo.cpp: 1"; - rLen = 0; - rLoc = 9554; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; - 6B3317111045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B3317121045683900E98B50 /* inttor.c */; - name = "inttor.c: 1"; - rLen = 4116; - rLoc = 0; - rType = 0; - vrLen = 889; - vrLoc = 400; - }; - 6B3317121045683900E98B50 /* inttor.c */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - name = inttor.c; - path = "/Users/memon/Downloads/GraphicsGems 2/gemsii/intersect/inttor.c"; - sourceTree = ""; - }; - 6B3317131045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - name = "DetourTileNavMesh.cpp: 95"; - rLen = 0; - rLoc = 2934; - rType = 0; - vrLen = 694; - vrLoc = 2529; - }; - 6B3317141045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; - name = "Recast.h: 406"; - rLen = 0; - rLoc = 13980; - rType = 0; - vrLen = 1567; - vrLoc = 13196; - }; - 6B3317151045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; - name = "main.cpp: 27"; - rLen = 0; - rLoc = 440; - rType = 0; - vrLen = 606; - vrLoc = 215; - }; - 6B3317161045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B3317171045683900E98B50 /* AllGems.TOC */; - name = "AllGems.TOC: 243"; - rLen = 0; - rLoc = 10634; - rType = 0; - vrLen = 1227; - vrLoc = 7843; - }; - 6B3317171045683900E98B50 /* AllGems.TOC */ = { - isa = PBXFileReference; - lastKnownFileType = text; - name = AllGems.TOC; - path = "/Users/memon/Downloads/GraphicsGems 2/AllGems.TOC"; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 11008}}"; - sepNavSelRange = "{10634, 0}"; - sepNavVisRange = "{7843, 1227}"; - }; - }; - 6B3317181045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; - name = "main.cpp: 26"; - rLen = 0; - rLoc = 440; - rType = 0; - vrLen = 613; - vrLoc = 215; - }; - 6B3317191045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B3317071045682A00E98B50 /* transGizmo.cpp */; - name = "transGizmo.cpp: 1"; - rLen = 0; - rLoc = 9554; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; - 6B33171A1045683900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B33171B1045683900E98B50 /* inttor.c */; - name = "inttor.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; 6B33171B1045683900E98B50 /* inttor.c */ = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; @@ -2312,9 +672,9 @@ path = "/Users/memon/Downloads/GraphicsGems 2/gemsii/intersect/inttor.c"; sourceTree = ""; uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 2592}}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 2800}}"; sepNavSelRange = "{656, 0}"; - sepNavVisRange = "{534, 782}"; + sepNavVisRange = "{522, 817}"; }; }; 6B3317F01046805E00E98B50 /* PBXTextBookmark */ = { @@ -2329,9 +689,15 @@ }; 6B3317F11046805E00E98B50 /* Roots3And4.c */ = { isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = Roots3And4.c; path = "/Users/memon/Downloads/GraphicsGems 2/gems/Roots3And4.c"; sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 3616}}"; + sepNavSelRange = "{2252, 0}"; + sepNavVisRange = "{1828, 665}"; + }; }; 6B3317F21046805E00E98B50 /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -2355,29 +721,15 @@ }; 6B3317F41046805E00E98B50 /* Roots3And4.c */ = { isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = Roots3And4.c; path = /Users/memon/Downloads/GraphicsGems/gems/Roots3And4.c; sourceTree = ""; - }; - 6B3317F51046805E00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B33170E1045683900E98B50 /* solver.c */; - name = "solver.c: 16"; - rLen = 0; - rLoc = 393; - rType = 0; - vrLen = 808; - vrLoc = 0; - }; - 6B3317F61046805E00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; - name = "Recast.h: 340"; - rLen = 0; - rLoc = 11303; - rType = 0; - vrLen = 857; - vrLoc = 10885; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 3456}}"; + sepNavSelRange = "{994, 3794}"; + sepNavVisRange = "{0, 1240}"; + }; }; 6B3317F71046805E00E98B50 /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -2391,169 +743,134 @@ }; 6B3317F81046805E00E98B50 /* intsph.c */ = { isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; name = intsph.c; path = /Users/memon/Downloads/GraphicsGems/gemsii/intersect/intsph.c; sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 976}}"; + sepNavSelRange = "{1200, 0}"; + sepNavVisRange = "{863, 910}"; + }; }; - 6B3317F91046805E00E98B50 /* PBXTextBookmark */ = { + 6B33182C10469F7D00E98B50 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B3317071045682A00E98B50 /* transGizmo.cpp */; - name = "transGizmo.cpp: 344"; + fRef = 6B137C800F7FCBFE00459200 /* RecastLog.h */; + name = "RecastLog.h: 51"; rLen = 0; - rLoc = 7647; + rLoc = 1648; rType = 0; - vrLen = 649; - vrLoc = 7329; + vrLen = 727; + vrLoc = 1419; }; - 6B3317FA1046805E00E98B50 /* PBXTextBookmark */ = { + 6B33183110469F7D00E98B50 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 1129"; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 822"; rLen = 0; - rLoc = 27016; + rLoc = 23199; rType = 0; - vrLen = 1159; - vrLoc = 20799; - }; - 6B3317FB1046805E00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B3317071045682A00E98B50 /* transGizmo.cpp */; - name = "transGizmo.cpp: 344"; - rLen = 0; - rLoc = 7647; - rType = 0; - vrLen = 649; - vrLoc = 7329; - }; - 6B3317FC1046805E00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 1047"; - rLen = 0; - rLoc = 25049; - rType = 0; - vrLen = 682; - vrLoc = 24817; - }; - 6B3317FD1046806200E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 1047"; - rLen = 0; - rLoc = 25049; - rType = 0; - vrLen = 200; - vrLoc = 24919; - }; - 6B3317FE1046807A00E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 1101"; - rLen = 0; - rLoc = 26109; - rType = 0; - vrLen = 722; - vrLoc = 25693; - }; - 6B331808104680C900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 1125"; - rLen = 0; - rLoc = 26571; - rType = 0; - vrLen = 684; - vrLoc = 26110; - }; - 6B331809104680C900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; - name = "Recast.h: 340"; - rLen = 0; - rLoc = 11303; - rType = 0; - vrLen = 857; - vrLoc = 10885; - }; - 6B33180A104680C900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; - name = "RecastRegion.cpp: 1125"; - rLen = 0; - rLoc = 26571; - rType = 0; - vrLen = 684; - vrLoc = 26110; - }; - 6B33180B104680C900E98B50 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; - name = "Recast.h: 450"; - rLen = 0; - rLoc = 15950; - rType = 0; - vrLen = 1618; - vrLoc = 16579; - }; - 6B41875F10397C9F00FBF4A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 131"; - rLen = 0; - rLoc = 4694; - rType = 0; - vrLen = 1598; - vrLoc = 3224; - }; - 6B41878E1039854600FBF4A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; - name = "DetourCommon.cpp: 242"; - rLen = 0; - rLoc = 5987; - rType = 0; - vrLen = 943; - vrLoc = 5062; - }; - 6B4187C41039909100FBF4A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; - name = "RecastDebugDraw.cpp: 660"; - rLen = 69; - rLoc = 16203; - rType = 0; - vrLen = 789; - vrLoc = 15711; - }; - 6B418869103ACAC700FBF4A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; - name = "Sample_StatMeshTiled.h: 17"; - rLen = 0; - rLoc = 367; - rType = 0; - vrLen = 792; + vrLen = 1283; vrLoc = 0; }; - 6B458EA80FB4540500044EA9 /* PBXTextBookmark */ = { + 6B33183210469F7D00E98B50 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B137C810F7FCBFE00459200 /* RecastTimer.h */; - name = "RecastTimer.h: 20"; + fRef = 6B137C800F7FCBFE00459200 /* RecastLog.h */; + name = "RecastLog.h: 51"; rLen = 0; - rLoc = 1068; + rLoc = 1648; rType = 0; - vrLen = 1182; - vrLoc = 0; + vrLen = 727; + vrLoc = 1419; }; - 6B555D30100B143200247EA3 /* PBXTextBookmark */ = { + 6B47BE1E105A47F400A26F5B /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6BB85D3F0FCEAA6300758966 /* SDL_video.h */; - name = "SDL_video.h: 156"; - rLen = 0; - rLoc = 5302; + fRef = 6B47BE1F105A47F400A26F5B /* PODArray.h */; + name = "PODArray.h: 41"; + rLen = 174; + rLoc = 846; rType = 0; - vrLen = 1419; - vrLoc = 4445; + vrLen = 681; + vrLoc = 439; + }; + 6B47BE1F105A47F400A26F5B /* PODArray.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = PODArray.h; + path = "/Users/memon/Public/Drop Box/sx/ZenBoundEditor/dev/src/PODArray.h"; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 816}}"; + sepNavSelRange = "{846, 174}"; + sepNavVisRange = "{392, 728}"; + }; + }; + 6B47BE29105A47F400A26F5B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 1263"; + rLen = 0; + rLoc = 27387; + rType = 0; + vrLen = 980; + vrLoc = 29214; + }; + 6B4C5162104EAA9F00E88FB8 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 44"; + rLen = 0; + rLoc = 700; + rType = 0; + vrLen = 748; + vrLoc = 336; + }; + 6B4C5167104EAA9F00E88FB8 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 44"; + rLen = 0; + rLoc = 700; + rType = 0; + vrLen = 748; + vrLoc = 336; + }; + 6B4C5232104FC1F600E88FB8 /* Recast.cpp:275 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = 6B137C820F7FCC1100459200 /* Recast.cpp */; + functionName = "rcFilterNoiseArea(unsigned short flags, rcCompactHeightfield& chf)"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 275; + location = Recast; + modificationTime = 275820615.344829; + state = 1; + }; + 6B4C526C104FCA2400E88FB8 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 459"; + rLen = 0; + rLoc = 7227; + rType = 0; + vrLen = 0; + vrLoc = 7227; + }; + 6B4C52B0104FD54200E88FB8 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 429"; + rLen = 0; + rLoc = 13425; + rType = 0; + vrLen = 1009; + vrLoc = 12710; }; 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */ = { uiCtxt = { @@ -2564,250 +881,215 @@ }; 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 6928}}"; - sepNavSelRange = "{6419, 0}"; - sepNavVisRange = "{5320, 840}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 6736}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1448}"; }; }; - 6B555DC9100B236A00247EA3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; - name = "imguiRenderGL.h: 1"; - rLen = 0; - rLoc = 1101; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; 6B555DF6100B273500247EA3 /* stb_truetype.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 26976}}"; - sepNavSelRange = "{48, 12}"; - sepNavVisRange = "{0, 845}"; + sepNavIntBoundsRect = "{{0, 0}, {1216, 27456}}"; + sepNavSelRange = "{8102, 0}"; + sepNavVisRange = "{7326, 1107}"; }; }; - 6B555E01100B285300247EA3 /* PBXTextBookmark */ = { + 6B595C981056512C001FCC62 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B555E02100B285300247EA3 /* debugdraw.cpp */; - name = "debugdraw.cpp: 215"; + fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; + name = "RecastRasterization.cpp: 256"; rLen = 0; - rLoc = 4653; + rLoc = 6570; rType = 0; - vrLen = 731; - vrLoc = 4426; + vrLen = 1022; + vrLoc = 6179; }; - 6B555E02100B285300247EA3 /* debugdraw.cpp */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = debugdraw.cpp; - path = "/Users/memon/Public/Drop Box/debugdraw.cpp"; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 5600}}"; - sepNavSelRange = "{4653, 0}"; - sepNavVisRange = "{4426, 731}"; - }; - }; - 6B555E13100B285300247EA3 /* PBXTextBookmark */ = { + 6B595C991056512C001FCC62 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */; - name = "MeshLoaderObj.h: 31"; - rLen = 62; - rLoc = 1134; - rType = 0; - vrLen = 681; - vrLoc = 915; - }; - 6B555EE0100B39A600247EA3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; - name = "main.cpp: 226"; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 692"; rLen = 0; - rLoc = 4855; + rLoc = 19864; rType = 0; - vrLen = 693; - vrLoc = 4507; + vrLen = 1177; + vrLoc = 19476; }; - 6B555EF9100B42E600247EA3 /* PBXTextBookmark */ = { + 6B595C9A1056512C001FCC62 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; - name = "imguiRenderGL.cpp: 256"; + fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; + name = "DetourTileNavMesh.cpp: 123"; rLen = 0; - rLoc = 6419; + rLoc = 3541; rType = 0; - vrLen = 572; - vrLoc = 5401; + vrLen = 751; + vrLoc = 3290; }; - 6B555F0D100B473F00247EA3 /* PBXTextBookmark */ = { + 6B595C9C1056512C001FCC62 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; - name = "imguiRenderGL.h: 19"; + fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; + name = "RecastRasterization.cpp: 256"; rLen = 0; - rLoc = 919; + rLoc = 6570; rType = 0; - vrLen = 1101; - vrLoc = 0; - }; - 6B555F0E100B473F00247EA3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; - name = "imguiRenderGL.cpp: 19"; - rLen = 0; - rLoc = 919; - rType = 0; - vrLen = 1274; - vrLoc = 0; + vrLen = 1022; + vrLoc = 6179; }; 6B624169103434880002E346 /* RecastMeshDetail.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 15808}}"; - sepNavSelRange = "{24134, 0}"; - sepNavVisRange = "{23016, 833}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 15568}}"; + sepNavSelRange = "{3442, 0}"; + sepNavVisRange = "{4754, 761}"; }; }; - 6B6241E91034B2FA0002E346 /* PBXTextBookmark */ = { + 6B6FA3391070B90A009B0572 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B6241EA1034B2FA0002E346 /* macros.h */; - name = "macros.h: 21"; + fRef = 6BA821DE10664B0700AA331F /* RecastArea.cpp */; + name = "RecastArea.cpp: 68"; rLen = 0; - rLoc = 542; + rLoc = 2337; rType = 0; - vrLen = 721; - vrLoc = 226; + vrLen = 753; + vrLoc = 2110; }; - 6B6241EA1034B2FA0002E346 /* macros.h */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = macros.h; - path = /Users/memon/Downloads/Ccode2/dt/macros.h; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 672}}"; - sepNavSelRange = "{542, 0}"; - sepNavVisRange = "{225, 728}"; - }; - }; - 6B6241EB1034B2FA0002E346 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B6241EC1034B2FA0002E346 /* dt4.c */; - name = "dt4.c: 22"; - rLen = 0; - rLoc = 621; - rType = 0; - vrLen = 838; - vrLoc = 457; - }; - 6B6241EC1034B2FA0002E346 /* dt4.c */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - name = dt4.c; - path = /Users/memon/Downloads/Ccode2/dt/dt4.c; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 736}}"; - sepNavSelRange = "{621, 0}"; - sepNavVisRange = "{396, 899}"; - }; - }; - 6B74D052103DD64C00623975 /* PBXTextBookmark */ = { + 6B6FA33A1070B90A009B0572 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; - name = "RecastContour.cpp: 87"; + name = "RecastContour.cpp: 220"; rLen = 0; - rLoc = 3230; + rLoc = 5865; rType = 0; - vrLen = 926; - vrLoc = 2328; + vrLen = 575; + vrLoc = 5608; }; - 6B74D091103DDCC300623975 /* PBXTextBookmark */ = { + 6B6FA33B1070B90A009B0572 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; - name = "Sample_StatMeshTiled.h: 16"; + fRef = 6BA821DE10664B0700AA331F /* RecastArea.cpp */; + name = "RecastArea.cpp: 68"; rLen = 0; - rLoc = 342; + rLoc = 2337; rType = 0; - vrLen = 721; - vrLoc = 72; + vrLen = 753; + vrLoc = 2110; }; - 6B7707B90FBD66CF00D21BAE /* PBXTextBookmark */ = { + 6B6FA33C1070B90A009B0572 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B137C6D0F7FCBBB00459200 /* MeshLoaderObj.cpp */; - name = "MeshLoaderObj.cpp: 198"; - rLen = 380; - rLoc = 4298; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 220"; + rLen = 0; + rLoc = 5865; + rType = 0; + vrLen = 575; + vrLoc = 5608; + }; + 6B6FA3431070B93C009B0572 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 217"; + rLen = 0; + rLoc = 5834; + rType = 0; + vrLen = 575; + vrLoc = 5608; + }; + 6B6FA3441070B93F009B0572 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 216"; + rLen = 23; + rLoc = 5811; + rType = 0; + vrLen = 556; + vrLoc = 5608; + }; + 6B6FA3451070B941009B0572 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 216"; + rLen = 23; + rLoc = 5811; + rType = 0; + vrLen = 604; + vrLoc = 5579; + }; + 6B6FA34C1070B9AF009B0572 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 210"; + rLen = 0; + rLoc = 5737; + rType = 0; + vrLen = 604; + vrLoc = 5579; + }; + 6B6FA34D1070B9AF009B0572 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 426"; + rLen = 0; + rLoc = 10833; + rType = 0; + vrLen = 917; + vrLoc = 10530; + }; + 6B6FA3511070B9EE009B0572 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 630"; + rLen = 0; + rLoc = 15509; + rType = 0; + vrLen = 891; + vrLoc = 15177; + }; + 6B6FA35C1070BF26009B0572 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 559"; + rLen = 0; + rLoc = 12576; rType = 0; vrLen = 666; - vrLoc = 4033; + vrLoc = 12515; }; - 6B7707F00FBD90F100D21BAE /* PBXTextBookmark */ = { + 6B6FA35D1070BF26009B0572 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B7707F10FBD90F100D21BAE /* btBvhTriangleMeshShape.h */; - name = "btBvhTriangleMeshShape.h: 34"; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 569"; rLen = 0; - rLoc = 2061; + rLoc = 12751; rType = 0; - vrLen = 1134; - vrLoc = 2750; + vrLen = 666; + vrLoc = 12515; }; - 6B7707F10FBD90F100D21BAE /* btBvhTriangleMeshShape.h */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = btBvhTriangleMeshShape.h; - path = "/Users/memon/Downloads/bullet-2.74/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h"; - sourceTree = ""; - }; - 6B7707F90FBD90F100D21BAE /* PBXTextBookmark */ = { + 6B853D671066ACF5009B426A /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B7707FA0FBD90F100D21BAE /* btBvhTriangleMeshShape.h */; - name = "btBvhTriangleMeshShape.h: 34"; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 469"; rLen = 0; - rLoc = 2061; + rLoc = 16149; rType = 0; - vrLen = 1134; - vrLoc = 2750; + vrLen = 2004; + vrLoc = 15606; }; - 6B7707FA0FBD90F100D21BAE /* btBvhTriangleMeshShape.h */ = { + 6B853DD41066C751009B426A /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B853DD51066C751009B426A /* dt2.c */; + name = "dt2.c: 624"; + rLen = 0; + rLoc = 17522; + rType = 0; + vrLen = 1182; + vrLoc = 16901; + }; + 6B853DD51066C751009B426A /* dt2.c */ = { isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = btBvhTriangleMeshShape.h; - path = "/Users/memon/Downloads/bullet-2.74/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h"; + lastKnownFileType = sourcecode.c.c; + name = dt2.c; + path = /Users/memon/Downloads/Ccode2/dt/dt2.c; sourceTree = ""; uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1839, 1392}}"; - sepNavSelRange = "{2061, 0}"; - sepNavVisRange = "{2750, 1096}"; - }; - }; - 6B7708F70FBDA96300D21BAE /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C8A0F7FCC1100459200 /* RecastTimer.cpp */; - name = "RecastTimer.cpp: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 574; - vrLoc = 0; - }; - 6B7EBB69100721310066EF8C /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B7EBB6A100721310066EF8C /* demo.cpp */; - name = "demo.cpp: 2014"; - rLen = 508; - rLoc = 58125; - rType = 0; - vrLen = 537; - vrLoc = 58222; - }; - 6B7EBB6A100721310066EF8C /* demo.cpp */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = demo.cpp; - path = "/Users/memon/Code/recastnavigation/untitled folder/Source/demo.cpp"; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 32480}}"; - sepNavSelRange = "{58125, 508}"; - sepNavVisRange = "{58094, 703}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 18528}}"; + sepNavSelRange = "{17522, 0}"; + sepNavVisRange = "{16901, 1106}"; }; }; 6B8632970F78114600E2684A /* Recast */ = { @@ -2849,89 +1131,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 6B86333B0F7813A600E2684A /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B86333C0F7813A600E2684A /* SDL_events.h */; - name = "SDL_events.h: 238"; - rLen = 0; - rLoc = 8641; - rType = 0; - vrLen = 785; - vrLoc = 8262; - }; - 6B86333C0F7813A600E2684A /* SDL_events.h */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = SDL_events.h; - path = /Library/Frameworks/SDL.framework/Versions/A/Headers/SDL_events.h; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 5760}}"; - sepNavSelRange = "{8641, 0}"; - sepNavVisRange = "{8167, 912}"; - }; - }; - 6B8AE8DF10121C6000FF1D07 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; - name = "DetourCommon.h: 56"; - rLen = 0; - rLoc = 2070; - rType = 0; - vrLen = 895; - vrLoc = 1266; - }; - 6B8AE8FA10123B5700FF1D07 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B1185F61006896B0018F96F /* DetourNode.h */; - name = "DetourNode.h: 149"; - rLen = 0; - rLoc = 2978; - rType = 0; - vrLen = 482; - vrLoc = 2496; - }; - 6B8DB3900F9798DE007FA9E1 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */; - name = "DetourDebugDraw.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1243; - vrLoc = 0; - }; - 6B92CE69100E0577003DA304 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */; - name = "MeshLoaderObj.h: 42"; - rLen = 85; - rLoc = 1482; - rType = 0; - vrLen = 606; - vrLoc = 990; - }; - 6B92CE6A100E0577003DA304 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C6D0F7FCBBB00459200 /* MeshLoaderObj.cpp */; - name = "MeshLoaderObj.cpp: 26"; - rLen = 0; - rLoc = 1050; - rType = 0; - vrLen = 424; - vrLoc = 915; - }; - 6B92CE8A100E0739003DA304 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C810F7FCBFE00459200 /* RecastTimer.h */; - name = "RecastTimer.h: 19"; - rLen = 0; - rLoc = 963; - rType = 0; - vrLen = 984; - vrLoc = 202; - }; - 6B9301521032F08300F0C0DA /* Recast.cpp:273 */ = { + 6B9301521032F08300F0C0DA /* Recast.cpp:275 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -2943,31 +1143,12 @@ functionName = "buildPolySurface(const float* in, const int nin, const float tol, const rcCompactHeightfield& chf, rcPolySubdiv& psub)"; hitCount = 0; ignoreCount = 0; - lineNumber = 273; - modificationTime = 273052800.435309; - state = 0; + lineNumber = 275; + location = Recast; + modificationTime = 275820615.344659; + state = 1; }; - 6B93FDBB102FFCFE00F0C0DA /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; - name = "imgui.cpp: 332"; - rLen = 0; - rLoc = 8066; - rType = 0; - vrLen = 984; - vrLoc = 7444; - }; - 6B93FDF010300CBE00F0C0DA /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7F0F7FCBFE00459200 /* RecastDebugDraw.h */; - name = "RecastDebugDraw.h: 54"; - rLen = 1; - rLoc = 2344; - rType = 0; - vrLen = 1508; - vrLoc = 1289; - }; - 6B93FEFF1030443300F0C0DA /* Recast.cpp:273 */ = { + 6B93FEFF1030443300F0C0DA /* Recast.cpp:275 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -2979,201 +1160,11 @@ functionName = "removeVertex(unsigned short v, float* verts, int& nv, unsigned short* tris, int& nt)"; hitCount = 0; ignoreCount = 0; - lineNumber = 273; + lineNumber = 275; location = Recast; - modificationTime = 273052799.752636; + modificationTime = 275820615.344471; state = 2; }; - 6B95065010383C6900213080 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C800F7FCBFE00459200 /* RecastLog.h */; - name = "RecastLog.h: 70"; - rLen = 15; - rLoc = 2095; - rType = 0; - vrLen = 690; - vrLoc = 1527; - }; - 6B9506891038680900213080 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; - name = "Recast.cpp: 42"; - rLen = 0; - rLoc = 1380; - rType = 0; - vrLen = 631; - vrLoc = 1084; - }; - 6B95069A103869D900213080 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; - name = "Sample.h: 27"; - rLen = 22; - rLoc = 485; - rType = 0; - vrLen = 607; - vrLoc = 132; - }; - 6B9506F810388A4200213080 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; - name = "DetourCommon.h: 156"; - rLen = 5; - rLoc = 4235; - rType = 0; - vrLen = 1210; - vrLoc = 3484; - }; - 6B9507401038910D00213080 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; - name = "Sample_StatMesh.cpp: 144"; - rLen = 0; - rLoc = 2330; - rType = 0; - vrLen = 994; - vrLoc = 2526; - }; - 6B955A0610359EBB00FE9FE3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B955A0710359EBB00FE9FE3 /* DelaunayPoint.as */; - name = "DelaunayPoint.as: 5"; - rLen = 0; - rLoc = 60; - rType = 0; - vrLen = 425; - vrLoc = 0; - }; - 6B955A0710359EBB00FE9FE3 /* DelaunayPoint.as */ = { - isa = PBXFileReference; - lastKnownFileType = text; - name = DelaunayPoint.as; - path = /Users/memon/Downloads/net/nicoptere/delaunay/DelaunayPoint.as; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 520}}"; - sepNavSelRange = "{60, 0}"; - sepNavVisRange = "{0, 425}"; - }; - }; - 6B955A0810359EBB00FE9FE3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B955A0910359EBB00FE9FE3 /* DelaunayEdge.as */; - name = "DelaunayEdge.as: 12"; - rLen = 0; - rLoc = 416; - rType = 0; - vrLen = 793; - vrLoc = 0; - }; - 6B955A0910359EBB00FE9FE3 /* DelaunayEdge.as */ = { - isa = PBXFileReference; - lastKnownFileType = text; - name = DelaunayEdge.as; - path = /Users/memon/Downloads/net/nicoptere/delaunay/DelaunayEdge.as; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 704}}"; - sepNavSelRange = "{416, 0}"; - sepNavVisRange = "{0, 895}"; - }; - }; - 6B955A0A10359EBB00FE9FE3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B955A0B10359EBB00FE9FE3 /* DelaunayTriangle.as */; - name = "DelaunayTriangle.as: 72"; - rLen = 0; - rLoc = 1867; - rType = 0; - vrLen = 731; - vrLoc = 1307; - }; - 6B955A0B10359EBB00FE9FE3 /* DelaunayTriangle.as */ = { - isa = PBXFileReference; - lastKnownFileType = text; - name = DelaunayTriangle.as; - path = /Users/memon/Downloads/net/nicoptere/delaunay/DelaunayTriangle.as; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1344}}"; - sepNavSelRange = "{1867, 0}"; - sepNavVisRange = "{1298, 740}"; - }; - }; - 6B955A0C10359EBB00FE9FE3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B955A0D10359EBB00FE9FE3 /* Delaunay.as */; - name = "Delaunay.as: 305"; - rLen = 0; - rLoc = 7416; - rType = 0; - vrLen = 368; - vrLoc = 7092; - }; - 6B955A0D10359EBB00FE9FE3 /* Delaunay.as */ = { - isa = PBXFileReference; - lastKnownFileType = text; - name = Delaunay.as; - path = /Users/memon/Downloads/net/nicoptere/delaunay/Delaunay.as; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 5424}}"; - sepNavSelRange = "{7193, 0}"; - sepNavVisRange = "{7029, 431}"; - }; - }; - 6B995F9F100F336B00D7BF5A /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C8A0F7FCC1100459200 /* RecastTimer.cpp */; - name = "RecastTimer.cpp: 44"; - rLen = 0; - rLoc = 867; - rType = 0; - vrLen = 468; - vrLoc = 549; - }; - 6B995FA2100F336B00D7BF5A /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B995FA3100F336B00D7BF5A /* GeomUtility.cpp */; - name = "GeomUtility.cpp: 35"; - rLen = 0; - rLoc = 1073; - rType = 0; - vrLen = 1099; - vrLoc = 89; - }; - 6B995FA3100F336B00D7BF5A /* GeomUtility.cpp */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = GeomUtility.cpp; - path = /Users/memon/Desktop/Desktop/test/Source/GeomUtility.cpp; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {999, 8528}}"; - sepNavSelRange = "{1073, 0}"; - sepNavVisRange = "{89, 1099}"; - }; - }; - 6B995FDF100F387200D7BF5A /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B1185F41006895B0018F96F /* DetourNode.cpp */; - name = "DetourNode.cpp: 99"; - rLen = 0; - rLoc = 2573; - rType = 0; - vrLen = 564; - vrLoc = 2323; - }; - 6B9B7D9D0FF91AC600A9090F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BB788180FC04753003C24DB /* ChunkyTriMesh.h */; - name = "ChunkyTriMesh.h: 33"; - rLen = 0; - rLoc = 1205; - rType = 0; - vrLen = 835; - vrLoc = 837; - }; 6B9D0891102715D5009B1A6C /* RecastTexture.cpp */ = { isa = PBXFileReference; fileEncoding = 4; @@ -3195,10 +1186,10 @@ hitCount = 0; ignoreCount = 0; lineNumber = 301; - modificationTime = 273052799.752205; + modificationTime = 275820617.2561181; state = 0; }; - 6B9D09921028542A009B1A6C /* RecastDebugDraw.cpp:693 */ = { + 6B9D09921028542A009B1A6C /* RecastDebugDraw.cpp:698 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -3210,20 +1201,80 @@ functionName = "rcDebugDrawTextureSet(const rcTextureSet& tset)"; hitCount = 0; ignoreCount = 0; - lineNumber = 693; + lineNumber = 698; location = Recast; - modificationTime = 273052799.752414; + modificationTime = 275820615.344249; state = 2; }; - 6B9D0AF4102991F0009B1A6C /* PBXTextBookmark */ = { + 6BA821DE10664B0700AA331F /* RecastArea.cpp */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.cpp; + name = RecastArea.cpp; + path = /Users/memon/Code/recastnavigation/Recast/Source/RecastArea.cpp; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 19648}}"; + sepNavSelRange = "{2337, 0}"; + sepNavVisRange = "{2110, 753}"; + }; + }; + 6BA821FE106651F300AA331F /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; - name = "imgui.h: 84"; + name = "imgui.h: 85"; rLen = 0; - rLoc = 2368; + rLoc = 2387; rType = 0; - vrLen = 366; - vrLoc = 2175; + vrLen = 319; + vrLoc = 2222; + }; + 6BA82204106651F300AA331F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 158"; + rLen = 118; + rLoc = 4037; + rType = 0; + vrLen = 822; + vrLoc = 3698; + }; + 6BA82211106651F300AA331F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7F0F7FCBFE00459200 /* RecastDebugDraw.h */; + name = "RecastDebugDraw.h: 44"; + rLen = 0; + rLoc = 1783; + rType = 0; + vrLen = 1598; + vrLoc = 1199; + }; + 6BA82232106660E000AA331F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA821DE10664B0700AA331F /* RecastArea.cpp */; + name = "RecastArea.cpp: 38"; + rLen = 0; + rLoc = 1420; + rType = 0; + vrLen = 901; + vrLoc = 1110; + }; + 6BA8225E1066632D00AA331F /* RecastMeshDetail.cpp:519 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + functionName = "buildPolyDetail(const float* in, const int nin, unsigned short reg, const float sampleDist, const float sampleMaxError, const rcCompactHeightfield& chf, const rcHeightPatch& hp, float* verts, int& nverts, rcIntArray& tris, rcIntArray& edges, rcIntArray& idx, rcIntArray& samples)"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 519; + location = Recast; + modificationTime = 275820615.3450021; + state = 1; }; 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */ = { uiCtxt = { @@ -3239,67 +1290,278 @@ sepNavVisRange = "{0, 1206}"; }; }; - 6BB788290FC0593E003C24DB /* PBXTextBookmark */ = { + 6BC43053104BF2B10041BBF5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; - name = "ChunkyTriMesh.cpp: 9"; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; + name = "Sample_StatMeshTiled.h: 17"; rLen = 0; - rLoc = 1045; + rLoc = 367; rType = 0; - vrLen = 586; - vrLoc = 4511; + vrLen = 691; + vrLoc = 530; }; - 6BB7882A0FC0593E003C24DB /* PBXTextBookmark */ = { + 6BC43054104BF2B10041BBF5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6BB788180FC04753003C24DB /* ChunkyTriMesh.h */; - name = "ChunkyTriMesh.h: 1"; - rLen = 0; - rLoc = 919; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "Sample_StatMesh.cpp: 21"; + rLen = 1; + rLoc = 450; rType = 0; - vrLen = 611; + vrLen = 624; vrLoc = 0; }; - 6BB7882B0FC0593E003C24DB /* PBXTextBookmark */ = { + 6BC43055104BF2B10041BBF5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; - name = "imgui.h: 1"; - rLen = 918; + fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; + name = "Sample_StatMesh.h: 41"; + rLen = 9; + rLoc = 758; + rType = 0; + vrLen = 705; + vrLoc = 423; + }; + 6BC43059104BF2B10041BBF5 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 748"; + rLen = 0; + rLoc = 22130; + rType = 0; + vrLen = 1023; + vrLoc = 21361; + }; + 6BC4305A104BF2B10041BBF5 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; + name = "Sample_StatMeshTiled.h: 17"; + rLen = 0; + rLoc = 367; + rType = 0; + vrLen = 691; + vrLoc = 530; + }; + 6BC4305B104BF2B10041BBF5 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; + name = "Sample_StatMesh.h: 39"; + rLen = 0; + rLoc = 726; + rType = 0; + vrLen = 555; + vrLoc = 358; + }; + 6BC4305C104BF2B10041BBF5 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "Sample_StatMesh.cpp: 21"; + rLen = 1; + rLoc = 450; + rType = 0; + vrLen = 624; + vrLoc = 0; + }; + 6BC43060104BF2B10041BBF5 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; + name = "Sample_StatMeshSimple.h: 48"; + rLen = 0; + rLoc = 960; + rType = 0; + vrLen = 653; + vrLoc = 793; + }; + 6BC430CD104CFB6C0041BBF5 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185F61006896B0018F96F /* DetourNode.h */; + name = "DetourNode.h: 87"; + rLen = 860; + rLoc = 2094; + rType = 0; + vrLen = 480; + vrLoc = 2498; + }; + 6BC430D2104CFB6C0041BBF5 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 1"; + rLen = 0; rLoc = 0; rType = 0; - vrLen = 1368; + vrLen = 1158; vrLoc = 0; }; - 6BB85D3E0FCEAA6300758966 /* PBXTextBookmark */ = { + 6BC430D8104CFB6C0041BBF5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6BB85D3F0FCEAA6300758966 /* SDL_video.h */; - name = "SDL_video.h: 317"; - rLen = 14; - rLoc = 11971; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 717"; + rLen = 0; + rLoc = 17746; rType = 0; - vrLen = 1876; - vrLoc = 11817; + vrLen = 702; + vrLoc = 15996; }; - 6BB85D3F0FCEAA6300758966 /* SDL_video.h */ = { + 6BC43126104E846A0041BBF5 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 89"; + rLen = 0; + rLoc = 2439; + rType = 0; + vrLen = 432; + vrLoc = 2109; + }; + 6BC43139104E90970041BBF5 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C810F7FCBFE00459200 /* RecastTimer.h */; + name = "RecastTimer.h: 22"; + rLen = 0; + rLoc = 1000; + rType = 0; + vrLen = 1186; + vrLoc = 0; + }; + 6BC4313A104E90970041BBF5 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C8A0F7FCC1100459200 /* RecastTimer.cpp */; + name = "RecastTimer.cpp: 47"; + rLen = 0; + rLoc = 471; + rType = 0; + vrLen = 291; + vrLoc = 421; + }; + 6BCB773F105D706200C20CF6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BCB7740105D706200C20CF6 /* SDL_video.h */; + name = "SDL_video.h: 156"; + rLen = 0; + rLoc = 5302; + rType = 0; + vrLen = 954; + vrLoc = 0; + }; + 6BCB7740105D706200C20CF6 /* SDL_video.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = SDL_video.h; + path = /Library/Frameworks/SDL.framework/Versions/A/Headers/SDL_video.h; + sourceTree = ""; + }; + 6BCB7742105D706200C20CF6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BCB7743105D706200C20CF6 /* radix_ar_2001.c */; + name = "radix_ar_2001.c: 18"; + rLen = 0; + rLoc = 614; + rType = 0; + vrLen = 1019; + vrLoc = 143; + }; + 6BCB7743105D706200C20CF6 /* radix_ar_2001.c */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.c; + name = radix_ar_2001.c; + path = /Users/memon/Downloads/radix_ar_2001.c; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 1472}}"; + sepNavSelRange = "{614, 0}"; + sepNavVisRange = "{142, 1075}"; + }; + }; + 6BCB7744105D706200C20CF6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BCB7745105D706200C20CF6 /* stdlib.h */; + name = "stdlib.h: 296"; + rLen = 43; + rLoc = 9919; + rType = 0; + vrLen = 1191; + vrLoc = 9305; + }; + 6BCB7745105D706200C20CF6 /* stdlib.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = stdlib.h; + path = /Developer/SDKs/MacOSX10.5.sdk/usr/include/stdlib.h; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 4992}}"; + sepNavSelRange = "{9919, 43}"; + sepNavVisRange = "{9277, 1265}"; + }; + }; + 6BCB774D105D706200C20CF6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BCB774E105D706200C20CF6 /* SDL_video.h */; + name = "SDL_video.h: 156"; + rLen = 0; + rLoc = 5302; + rType = 0; + vrLen = 954; + vrLoc = 0; + }; + 6BCB774E105D706200C20CF6 /* SDL_video.h */ = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SDL_video.h; path = /Library/Frameworks/SDL.framework/Versions/A/Headers/SDL_video.h; sourceTree = ""; uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 14032}}"; - sepNavSelRange = "{11971, 14}"; - sepNavVisRange = "{11817, 1770}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 14400}}"; + sepNavSelRange = "{5302, 0}"; + sepNavVisRange = "{0, 1171}"; }; }; - 6BC745AF0FF527E50083A694 /* PBXTextBookmark */ = { + 6BCB7750105D706200C20CF6 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B137C850F7FCC1100459200 /* RecastFilter.cpp */; - name = "RecastFilter.cpp: 245"; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 204"; rLen = 0; - rLoc = 7174; + rLoc = 3442; rType = 0; - vrLen = 1272; - vrLoc = 5903; + vrLen = 990; + vrLoc = 4513; + }; + 6BCB778A105E224500C20CF6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 224"; + rLen = 0; + rLoc = 5406; + rType = 0; + vrLen = 466; + vrLoc = 5354; + }; + 6BCB77A1105E7EA400C20CF6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C810F7FCBFE00459200 /* RecastTimer.h */; + name = "RecastTimer.h: 21"; + rLen = 0; + rLoc = 980; + rType = 0; + vrLen = 1186; + vrLoc = 0; + }; + 6BCB77B7105E80FD00C20CF6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C8A0F7FCC1100459200 /* RecastTimer.cpp */; + name = "RecastTimer.cpp: 33"; + rLen = 0; + rLoc = 548; + rType = 0; + vrLen = 666; + vrLoc = 46; + }; + 6BCB77D1105E870D00C20CF6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 334"; + rLen = 0; + rLoc = 5944; + rType = 0; + vrLen = 754; + vrLoc = 8327; }; 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */ = { uiCtxt = { @@ -3310,9 +1572,9 @@ }; 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 3888}}"; - sepNavSelRange = "{4694, 0}"; - sepNavVisRange = "{3286, 1576}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 3872}}"; + sepNavSelRange = "{6281, 0}"; + sepNavVisRange = "{5136, 1796}"; }; }; 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */ = { @@ -3344,85 +1606,385 @@ sepNavWindowFrame = "{{15, 78}, {1011, 695}}"; }; }; - 6BF26BB51041520F0099C14A /* PBXTextBookmark */ = { + 6BF888A810679FAF00377388 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 315"; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 296"; rLen = 0; - rLoc = 6991; + rLoc = 10414; rType = 0; - vrLen = 613; - vrLoc = 7431; + vrLen = 821; + vrLoc = 10134; }; - 6BF26BC5104158E90099C14A /* PBXTextBookmark */ = { + 6BF888B81070B04F00377388 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; - name = "Sample_TileMesh.h: 41"; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 998"; rLen = 0; - rLoc = 1402; + rLoc = 25018; rType = 0; - vrLen = 573; - vrLoc = 1106; + vrLen = 840; + vrLoc = 24479; }; - 6BF26BC9104158E90099C14A /* PBXTextBookmark */ = { + 6BF888BB1070B04F00377388 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */; - name = "DetourTileNavMeshBuilder.h: 26"; - rLen = 0; - rLoc = 1272; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; + name = "Sample_StatMeshSimple.h: 1"; + rLen = 1446; + rLoc = 0; rType = 0; - vrLen = 1461; + vrLen = 765; + vrLoc = 409; + }; + 6BF888BD1070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 563"; + rLen = 0; + rLoc = 18654; + rType = 0; + vrLen = 1016; + vrLoc = 13545; + }; + 6BF888BE1070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7C0F7FCBE400459200 /* SDLMain.h */; + name = "SDLMain.h: 12"; + rLen = 0; + rLoc = 307; + rType = 0; + vrLen = 307; vrLoc = 0; }; - 6BF26BD4104158E90099C14A /* PBXTextBookmark */ = { + 6BF888C11070B04F00377388 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; - name = "Sample_StatMeshTiled.cpp: 579"; - rLen = 160; - rLoc = 15834; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 191"; + rLen = 0; + rLoc = 5118; rType = 0; - vrLen = 1178; - vrLoc = 15408; + vrLen = 986; + vrLoc = 6735; }; - 6BF26BD5104158E90099C14A /* PBXTextBookmark */ = { + 6BF888C21070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 998"; + rLen = 0; + rLoc = 25018; + rType = 0; + vrLen = 840; + vrLoc = 24479; + }; + 6BF888C31070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; + name = "RecastDebugDraw.cpp: 589"; + rLen = 0; + rLoc = 12855; + rType = 0; + vrLen = 876; + vrLoc = 13562; + }; + 6BF888C41070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA821DE10664B0700AA331F /* RecastArea.cpp */; + name = "RecastArea.cpp: 1087"; + rLen = 0; + rLoc = 25905; + rType = 0; + vrLen = 936; + vrLoc = 25475; + }; + 6BF888C51070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 438"; + rLen = 0; + rLoc = 13239; + rType = 0; + vrLen = 904; + vrLoc = 13014; + }; + 6BF888C81070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; + name = "Sample_StatMeshSimple.h: 1"; + rLen = 1446; + rLoc = 0; + rType = 0; + vrLen = 765; + vrLoc = 409; + }; + 6BF888CA1070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 1"; + rLen = 18654; + rLoc = 0; + rType = 0; + vrLen = 904; + vrLoc = 13014; + }; + 6BF888CE1070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 563"; + rLen = 0; + rLoc = 18654; + rType = 0; + vrLen = 1016; + vrLoc = 13545; + }; + 6BF888CF1070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7C0F7FCBE400459200 /* SDLMain.h */; + name = "SDLMain.h: 12"; + rLen = 0; + rLoc = 307; + rType = 0; + vrLen = 307; + vrLoc = 0; + }; + 6BF888D01070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 21"; + rLen = 0; + rLoc = 389; + rType = 0; + vrLen = 756; + vrLoc = 3871; + }; + 6BF888D21070B04F00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 18"; + rLen = 0; + rLoc = 326; + rType = 0; + vrLen = 548; + vrLoc = 19; + }; + 6BF888DE1070B1F800377388 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 842"; + name = "Sample_TileMesh.cpp: 755"; rLen = 0; - rLoc = 22466; + rLoc = 20632; rType = 0; - vrLen = 992; - vrLoc = 21891; + vrLen = 1125; + vrLoc = 19809; }; - 6BF26BD8104158E90099C14A /* PBXTextBookmark */ = { + 6BF888DF1070B1F800377388 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */; - name = "DetourStatNavMeshBuilder.h: 27"; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 220"; rLen = 0; - rLoc = 1328; + rLoc = 5865; rType = 0; - vrLen = 1416; - vrLoc = 0; + vrLen = 905; + vrLoc = 5608; }; - 6BF26C1110415C680099C14A /* PBXTextBookmark */ = { + 6BF888E21070B1F800377388 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */; - name = "DetourStatNavMeshBuilder.cpp: 341"; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 1362"; rLen = 0; - rLoc = 9192; + rLoc = 26237; rType = 0; - vrLen = 823; - vrLoc = 8433; + vrLen = 0; + vrLoc = 31114; }; - 6BF26C1210415C680099C14A /* PBXTextBookmark */ = { + 6BF888E31070B1F800377388 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - name = "DetourTileNavMesh.cpp: 576"; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 755"; rLen = 0; - rLoc = 13941; + rLoc = 20632; rType = 0; - vrLen = 773; - vrLoc = 13920; + vrLen = 1125; + vrLoc = 19809; + }; + 6BF888E41070B1F800377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 220"; + rLen = 0; + rLoc = 5865; + rType = 0; + vrLen = 905; + vrLoc = 5608; + }; + 6BF888E51070B1F800377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7F0F7FCBFE00459200 /* RecastDebugDraw.h */; + name = "RecastDebugDraw.h: 44"; + rLen = 0; + rLoc = 1783; + rType = 0; + vrLen = 1792; + vrLoc = 1005; + }; + 6BF888E71070B20700377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; + name = "RecastDebugDraw.cpp: 286"; + rLen = 0; + rLoc = 7320; + rType = 0; + vrLen = 936; + vrLoc = 6877; + }; + 6BF888E91070B20700377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; + name = "RecastDebugDraw.cpp: 286"; + rLen = 0; + rLoc = 7320; + rType = 0; + vrLen = 936; + vrLoc = 6877; + }; + 6BF888EE1070B30700377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 123"; + rLen = 0; + rLoc = 4602; + rType = 0; + vrLen = 1468; + vrLoc = 3484; + }; + 6BF888F21070B3A300377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 587"; + rLen = 0; + rLoc = 15234; + rType = 0; + vrLen = 870; + vrLoc = 14794; + }; + 6BF888F41070B3A300377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 587"; + rLen = 0; + rLoc = 15234; + rType = 0; + vrLen = 870; + vrLoc = 14794; + }; + 6BF888FC1070B6A400377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 1043"; + rLen = 1; + rLoc = 24953; + rType = 0; + vrLen = 921; + vrLoc = 24594; + }; + 6BF888FF1070B70B00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 96"; + rLen = 0; + rLoc = 3635; + rType = 0; + vrLen = 1138; + vrLoc = 3336; + }; + 6BF889001070B70B00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7F0F7FCBFE00459200 /* RecastDebugDraw.h */; + name = "RecastDebugDraw.h: 44"; + rLen = 0; + rLoc = 1783; + rType = 0; + vrLen = 1720; + vrLoc = 1077; + }; + 6BF889011070B70B00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 1042"; + rLen = 0; + rLoc = 24912; + rType = 0; + vrLen = 821; + vrLoc = 24522; + }; + 6BF889021070B70B00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 199"; + rLen = 55; + rLoc = 4061; + rType = 0; + vrLen = 585; + vrLoc = 3925; + }; + 6BF889031070B70B00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA821DE10664B0700AA331F /* RecastArea.cpp */; + name = "RecastArea.cpp: 71"; + rLen = 0; + rLoc = 2414; + rType = 0; + vrLen = 581; + vrLoc = 2149; + }; + 6BF889041070B70B00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 96"; + rLen = 0; + rLoc = 3635; + rType = 0; + vrLen = 1138; + vrLoc = 3336; + }; + 6BF889051070B70B00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7F0F7FCBFE00459200 /* RecastDebugDraw.h */; + name = "RecastDebugDraw.h: 44"; + rLen = 0; + rLoc = 1783; + rType = 0; + vrLen = 1720; + vrLoc = 1077; + }; + 6BF889061070B70B00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 1042"; + rLen = 0; + rLoc = 24912; + rType = 0; + vrLen = 821; + vrLoc = 24522; + }; + 6BF889071070B70B00377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 199"; + rLen = 55; + rLoc = 4061; + rType = 0; + vrLen = 585; + vrLoc = 3925; + }; + 6BF889091070B71100377388 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA821DE10664B0700AA331F /* RecastArea.cpp */; + name = "RecastArea.cpp: 69"; + rLen = 0; + rLoc = 2341; + rType = 0; + vrLen = 581; + vrLoc = 2149; }; 8D1107260486CEB800E47090 /* Recast */ = { activeExec = 0; diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 index b833ddc1..66a57157 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 @@ -269,6 +269,7 @@ 29B97314FDCFA39411CA2CEA 080E96DDFE201D6D7F000001 6B137C7D0F7FCBE800459200 + 6B555DF5100B25FC00247EA3 29B97315FDCFA39411CA2CEA 29B97317FDCFA39411CA2CEA 1C37FBAC04509CD000000102 @@ -277,14 +278,13 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 14 - 4 + 30 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {282, 628}} + {{0, 157}, {282, 660}} PBXTopSmartGroupGIDs @@ -294,14 +294,14 @@ GeometryConfiguration Frame - {{0, 0}, {299, 646}} + {{0, 0}, {299, 678}} GroupTreeTableConfiguration MainColumn 282 RubberWindowFrame - 0 91 1280 687 0 0 1280 778 + 0 59 1280 719 0 0 1280 778 Module PBXSmartGroupTreeModule @@ -319,7 +319,7 @@ PBXProjectModuleGUID 6B8632A30F78115100E2684A PBXProjectModuleLabel - Recast.h + main.cpp PBXSplitModuleInNavigatorKey Split0 @@ -327,26 +327,14 @@ PBXProjectModuleGUID 6B8632A40F78115100E2684A PBXProjectModuleLabel - Recast.h + main.cpp _historyCapacity 0 bookmark - 6B33180B104680C900E98B50 + 6B6FA35D1070BF26009B0572 history - 6B3317F01046805E00E98B50 - 6B3317F21046805E00E98B50 - 6B3317F31046805E00E98B50 - 6B3317F51046805E00E98B50 - 6B3317F71046805E00E98B50 - 6B3317F91046805E00E98B50 - 6B331808104680C900E98B50 - 6B331809104680C900E98B50 - - prevStack - - 6B3317FB1046805E00E98B50 - 6B33180A104680C900E98B50 + 6B6FA35C1070BF26009B0572 SplitCount @@ -360,18 +348,18 @@ GeometryConfiguration Frame - {{0, 0}, {976, 552}} + {{0, 0}, {976, 593}} RubberWindowFrame - 0 91 1280 687 0 0 1280 778 + 0 59 1280 719 0 0 1280 778 Module PBXNavigatorGroup Proportion - 552pt + 593pt Proportion - 89pt + 80pt Tabs @@ -385,9 +373,9 @@ GeometryConfiguration Frame - {{10, 27}, {976, 62}} + {{10, 27}, {976, 53}} RubberWindowFrame - 0 91 1280 687 0 0 1280 778 + 0 59 1280 719 0 0 1280 778 Module XCDetailModule @@ -403,7 +391,7 @@ GeometryConfiguration Frame - {{10, 27}, {976, -27}} + {{10, 27}, {769, 146}} Module PBXProjectFindModule @@ -441,7 +429,7 @@ GeometryConfiguration Frame - {{10, 27}, {976, 62}} + {{10, 27}, {976, 166}} Module PBXBuildResultsModule @@ -469,11 +457,11 @@ TableOfContents - 6B3317FF1046807A00E98B50 + 6B6FA33D1070B90A009B0572 1CA23ED40692098700951B8B - 6B3318001046807A00E98B50 + 6B6FA33E1070B90A009B0572 6B8632A30F78115100E2684A - 6B3318011046807A00E98B50 + 6B6FA33F1070B90A009B0572 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -522,12 +510,12 @@ GeometryConfiguration Frame - {{0, 0}, {1280, 438}} + {{0, 0}, {1280, 136}} Module PBXDebugCLIModule Proportion - 438pt + 136pt ContentConfiguration @@ -546,8 +534,8 @@ yes sizes - {{0, 0}, {623, 83}} - {{623, 0}, {657, 83}} + {{0, 0}, {630, 114}} + {{630, 0}, {650, 114}} VerticalSplitView @@ -562,8 +550,8 @@ yes sizes - {{0, 0}, {1280, 83}} - {{0, 83}, {1280, 120}} + {{0, 0}, {1280, 114}} + {{0, 114}, {1280, 423}} @@ -583,7 +571,7 @@ DebugSTDIOWindowFrame {{200, 200}, {500, 300}} Frame - {{0, 443}, {1280, 203}} + {{0, 141}, {1280, 537}} PBXDebugSessionStackFrameViewKey DebugVariablesTableConfiguration @@ -593,16 +581,16 @@ Value 85 Summary - 427 + 420 Frame - {{623, 0}, {657, 83}} + {{630, 0}, {650, 114}} Module PBXDebugSessionModule Proportion - 203pt + 537pt Name @@ -620,13 +608,13 @@ TableOfContents - 6B3318021046807A00E98B50 + 6B6FA3461070B941009B0572 1CCC7628064C1048000F2A68 1CCC7629064C1048000F2A68 - 6B3318031046807A00E98B50 - 6B3318041046807A00E98B50 - 6B3318051046807A00E98B50 - 6B3318061046807A00E98B50 + 6B6FA3471070B941009B0572 + 6B6FA3481070B941009B0572 + 6B6FA3491070B941009B0572 + 6B6FA34A1070B941009B0572 6B8632A30F78115100E2684A ToolbarConfiguration @@ -660,7 +648,7 @@ /Users/memon/Code/recastnavigation/RecastDemo/Build/Xcode/Recast.xcodeproj WindowString - 0 91 1280 687 0 0 1280 778 + 0 59 1280 719 0 0 1280 778 WindowToolsV3 diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj index c23010ba..9af2ebbe 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj @@ -31,7 +31,6 @@ 6B2AEC530FFB8958005BE9CC /* Sample_TileMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; }; 6B2AEC560FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; }; 6B2AEC5A0FFB8A7A005BE9CC /* DetourTileNavMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; }; - 6B3317081045682A00E98B50 /* transGizmo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B3317071045682A00E98B50 /* transGizmo.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 */; }; @@ -91,7 +90,6 @@ 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_StatMeshTiled.h; path = ../../Include/Sample_StatMeshTiled.h; sourceTree = SOURCE_ROOT; }; 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourTileNavMesh.h; path = ../../../Detour/Include/DetourTileNavMesh.h; sourceTree = SOURCE_ROOT; }; 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourTileNavMesh.cpp; path = ../../../Detour/Source/DetourTileNavMesh.cpp; sourceTree = SOURCE_ROOT; }; - 6B3317071045682A00E98B50 /* transGizmo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = transGizmo.cpp; path = ../../Source/transGizmo.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; }; @@ -132,7 +130,6 @@ 6B137C7D0F7FCBE800459200 /* Recast */, 6B555DF5100B25FC00247EA3 /* Samples */, 6B25B6180FFA62BE004F1BC4 /* main.cpp */, - 6B3317071045682A00E98B50 /* transGizmo.cpp */, 6B137C7A0F7FCBE400459200 /* imgui.h */, 6B137C6C0F7FCBBB00459200 /* imgui.cpp */, 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */, @@ -358,7 +355,6 @@ 6B1185FE10068B150018F96F /* DetourCommon.cpp in Sources */, 6B555DB1100B212E00247EA3 /* imguiRenderGL.cpp in Sources */, 6B62416A103434880002E346 /* RecastMeshDetail.cpp in Sources */, - 6B3317081045682A00E98B50 /* transGizmo.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -407,6 +403,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CONFIGURATION_BUILD_DIR = ../../Bin; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_MODEL_TUNING = G5; diff --git a/RecastDemo/Source/Sample_TileMesh.cpp b/RecastDemo/Source/Sample_TileMesh.cpp index 7f1f0390..cddf7f23 100644 --- a/RecastDemo/Source/Sample_TileMesh.cpp +++ b/RecastDemo/Source/Sample_TileMesh.cpp @@ -810,6 +810,23 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm v[0] -= (unsigned short)m_cfg.borderSize; v[2] -= (unsigned short)m_cfg.borderSize; } + + if (m_pmesh->nverts >= 0xffff) + { + // The vertex indices are ushorts, and cannot point to more than 0xffff vertices. + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "Too many vertices per tile %d (max: %d).", m_pmesh->nverts, 0xffff); + return false; + } + if (m_pmesh->npolys > DT_MAX_TILES) + { + // If you hit this error, you have too many polygons per tile. + // You can trade off tile count to poly count by adjusting DT_TILE_REF_TILE_BITS and DT_TILE_REF_POLY_BITS. + // The current setup is optimized for large number of tiles and small number of polys per tile. + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "Too many polygons per tile %d (max: %d).", m_pmesh->npolys, DT_MAX_TILES); + return false; + } if (!dtCreateNavMeshTileData(m_pmesh->verts, m_pmesh->nverts, m_pmesh->polys, m_pmesh->npolys, m_pmesh->nvp, diff --git a/RecastDemo/Source/imguiRenderGL.cpp b/RecastDemo/Source/imguiRenderGL.cpp index 7a8665e6..b11e6286 100644 --- a/RecastDemo/Source/imguiRenderGL.cpp +++ b/RecastDemo/Source/imguiRenderGL.cpp @@ -222,26 +222,29 @@ bool imguiRenderGLInit(const char* fontpath) } // Load font. - FILE* fp = 0; - unsigned char* ttfBuffer = 0; - unsigned char* bmap = 0; - bool res = false; - - fp = fopen(fontpath, "rb"); - if (!fp) goto error; + FILE* fp = fopen(fontpath, "rb"); + if (!fp) return false; fseek(fp, 0, SEEK_END); int size = ftell(fp); fseek(fp, 0, SEEK_SET); - ttfBuffer = (unsigned char*)malloc(size); - if (!ttfBuffer) goto error; + unsigned char* ttfBuffer = (unsigned char*)malloc(size); + if (!ttfBuffer) + { + fclose(fp); + return false; + } fread(ttfBuffer, 1, size, fp); fclose(fp); fp = 0; - bmap = (unsigned char*)malloc(512*512); - if (!bmap) goto error; + unsigned char* bmap = (unsigned char*)malloc(512*512); + if (!bmap) + { + free(ttfBuffer); + return false; + } stbtt_BakeFontBitmap(ttfBuffer,0, 15.0f, bmap,512,512, 32,96, g_cdata); @@ -252,17 +255,12 @@ bool imguiRenderGLInit(const char* fontpath) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - res = true; - -error: if (ttfBuffer) free(ttfBuffer); if (bmap) free(bmap); - if (fp) - fclose(fp); - return res; + return true; } void imguiRenderGLDestroy() diff --git a/RecastDemo/Source/main.cpp b/RecastDemo/Source/main.cpp index d4775c40..96e180ca 100644 --- a/RecastDemo/Source/main.cpp +++ b/RecastDemo/Source/main.cpp @@ -14,6 +14,7 @@ #include "Recast.h" #include "RecastDebugDraw.h" #include "MeshLoaderObj.h" + #include "Sample_StatMeshSimple.h" #include "Sample_StatMeshTiled.h" #include "Sample_TileMesh.h" @@ -267,7 +268,7 @@ int main(int argc, char *argv[]) int toolsScroll = 0; int debugScroll = 0; - char sampleName[64] = "Choose Builder..."; + char sampleName[64] = "Choose Sample..."; FileList meshFiles; char meshName[128] = "Choose Mesh..."; @@ -544,7 +545,7 @@ int main(int argc, char *argv[]) { showSample = false; showLevels = true; - scanDirectory("meshes", ".obj", meshFiles); + scanDirectory("Meshes", ".obj", meshFiles); } } if (mesh) @@ -568,7 +569,7 @@ int main(int argc, char *argv[]) showLog = true; logScroll = 0; } - printf("Build log:\n"); + printf("Build log %s:\n", meshName); for (int i = 0; i < log.getMessageCount(); ++i) printf("%s\n", log.getMessageText(i)); } @@ -593,7 +594,7 @@ int main(int argc, char *argv[]) } } - // Builder selection dialog. + // Sample selection dialog. if (showSample) { static int levelScroll = 0; @@ -649,7 +650,7 @@ int main(int argc, char *argv[]) mesh = 0; char path[256]; - strcpy(path, "meshes/"); + strcpy(path, "Meshes/"); strcat(path, meshName); mesh = new rcMeshLoaderObj;