From d71740036dfc0cfca91e327b0dc7a51134d10e52 Mon Sep 17 00:00:00 2001 From: Mikko Mononen Date: Mon, 13 Jul 2009 10:30:37 +0000 Subject: [PATCH] Demo: Changed demo "Builders" to "Samples". Detour: Prefixed static nav with 'dtStat', this includes polys and poly refs too. imgui: Made imgui code not to use id:s anymore, since there were way too many id clashes. imgui: Separated the rendering code into its' own file, changed prebaked font to use stb_truetype instead, removed glfont. imgui: Added 'disabled' property to widgets. Recast: exposed single triangle rasterization into the recast api. Demo: Changed the debug draw validation to be "soft", easier to demo now. --- Detour/Include/DetourDebugDraw.h | 4 +- Detour/Include/DetourStatNavMesh.h | 69 +- Detour/Source/DetourDebugDraw.cpp | 18 +- Detour/Source/DetourStatNavMeshBuilder.cpp | 22 +- Recast/Include/Recast.h | 8 + Recast/Source/RecastRasterization.cpp | 18 +- RecastDemo/Bin/DroidSans.ttf | Bin 0 -> 108796 bytes .../Bin/Recast.app/Contents/MacOS/Recast | Bin 310328 -> 463612 bytes RecastDemo/Bin/font.cfnt | Bin 90096 -> 0 bytes .../Xcode/Recast.xcodeproj/memon.pbxuser | 12816 ++++++---------- .../Recast.xcodeproj/memon.perspectivev3 | 400 +- .../Xcode/Recast.xcodeproj/project.pbxproj | 118 +- RecastDemo/Contrib/stb_truetype.h | 1689 ++ RecastDemo/Include/Builder.h | 50 - RecastDemo/Include/BuilderStatMesh.h | 70 - RecastDemo/Include/BuilderStatMeshSimple.h | 63 - RecastDemo/Include/BuilderStatMeshTiled.h | 91 - RecastDemo/Include/BuilderTiledMesh.h | 132 - RecastDemo/Include/glfont.h | 106 - RecastDemo/Include/imgui.h | 76 +- RecastDemo/Include/imguiRenderGL.h | 8 + RecastDemo/Source/Builder.cpp | 123 - RecastDemo/Source/BuilderStatMesh.cpp | 338 - RecastDemo/Source/BuilderStatMeshSimple.cpp | 508 - RecastDemo/Source/BuilderStatMeshTiled.cpp | 983 -- RecastDemo/Source/BuilderTiledMesh.cpp | 899 -- RecastDemo/Source/glfont.cpp | 285 - RecastDemo/Source/imgui.cpp | 506 +- RecastDemo/Source/imguiRenderGL.cpp | 410 + RecastDemo/Source/main.cpp | 371 +- 30 files changed, 7459 insertions(+), 12722 deletions(-) create mode 100755 RecastDemo/Bin/DroidSans.ttf delete mode 100644 RecastDemo/Bin/font.cfnt create mode 100644 RecastDemo/Contrib/stb_truetype.h delete mode 100644 RecastDemo/Include/Builder.h delete mode 100644 RecastDemo/Include/BuilderStatMesh.h delete mode 100644 RecastDemo/Include/BuilderStatMeshSimple.h delete mode 100644 RecastDemo/Include/BuilderStatMeshTiled.h delete mode 100644 RecastDemo/Include/BuilderTiledMesh.h delete mode 100644 RecastDemo/Include/glfont.h create mode 100644 RecastDemo/Include/imguiRenderGL.h delete mode 100644 RecastDemo/Source/Builder.cpp delete mode 100644 RecastDemo/Source/BuilderStatMesh.cpp delete mode 100644 RecastDemo/Source/BuilderStatMeshSimple.cpp delete mode 100644 RecastDemo/Source/BuilderStatMeshTiled.cpp delete mode 100644 RecastDemo/Source/BuilderTiledMesh.cpp delete mode 100644 RecastDemo/Source/glfont.cpp create mode 100644 RecastDemo/Source/imguiRenderGL.cpp diff --git a/Detour/Include/DetourDebugDraw.h b/Detour/Include/DetourDebugDraw.h index 81a851fa..66d591ff 100755 --- a/Detour/Include/DetourDebugDraw.h +++ b/Detour/Include/DetourDebugDraw.h @@ -20,9 +20,9 @@ #define DETOURDEBUGDRAW_H #include "DetourStatNavMesh.h" -#include "DetourTiledNavMesh.h" +#include "DetourTileNavMesh.h" -void dtDebugDrawStatNavMeshPoly(const dtStatNavMesh* mesh, dtPolyRef ref, const float* col); +void dtDebugDrawStatNavMeshPoly(const dtStatNavMesh* mesh, dtStatPolyRef ref, const float* col); void dtDebugDrawStatNavMeshBVTree(const dtStatNavMesh* mesh); void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh); diff --git a/Detour/Include/DetourStatNavMesh.h b/Detour/Include/DetourStatNavMesh.h index 830f506b..95a81c3e 100755 --- a/Detour/Include/DetourStatNavMesh.h +++ b/Detour/Include/DetourStatNavMesh.h @@ -20,25 +20,24 @@ #define DETOURSTATNAVMESH_H // Reference to navigation polygon. -typedef unsigned short dtPolyRef; +typedef unsigned short dtStatPolyRef; // Maximum number of vertices per navigation polygon. -static const int DT_VERTS_PER_POLYGON = 6; +static const int DT_STAT_VERTS_PER_POLYGON = 6; // Structure holding the navigation polygon data. -struct dtPoly +struct dtStatPoly { - unsigned short v[DT_VERTS_PER_POLYGON]; // Indices to vertices of the poly. - dtPolyRef n[DT_VERTS_PER_POLYGON]; // Refs to neighbours of the poly. - unsigned char nv; // Number of vertices. - unsigned char flags; // Flags (not used). - unsigned char pad[2]; + unsigned short v[DT_STAT_VERTS_PER_POLYGON]; // Indices to vertices of the poly. + dtStatPolyRef n[DT_STAT_VERTS_PER_POLYGON]; // Refs to neighbours of the poly. + unsigned char nv; // Number of vertices. + unsigned char flags; // Flags (not used). }; -const int DT_NAVMESH_MAGIC = 'NAVM'; -const int DT_NAVMESH_VERSION = 2; +const int DT_STAT_NAVMESH_MAGIC = 'NAVM'; +const int DT_STAT_NAVMESH_VERSION = 2; -struct dtBVNode +struct dtStatBVNode { unsigned short bmin[3], bmax[3]; int i; @@ -74,7 +73,7 @@ public: // center - (in) The center of the search box. // extents - (in) The extents of the search box. // Returns: Reference identifier for the polygon, or 0 if no polygons found. - dtPolyRef findNearestPoly(const float* center, const float* extents); + dtStatPolyRef findNearestPoly(const float* center, const float* extents); // Returns polygons which touch the query box. // Params: @@ -84,7 +83,7 @@ public: // maxPolys - (in) The max number of polygons the polys array can hold. // Returns: Number of polygons in search result array. int queryPolygons(const float* center, const float* extents, - dtPolyRef* polys, const int maxPolys); + dtStatPolyRef* polys, const int maxPolys); // Finds path from start polygon to end polygon. // If target polygon canno be reached through the navigation graph, @@ -95,8 +94,8 @@ public: // path - (out) array holding the search result. // maxPathSize - (in) The max number of polygons the path array can hold. // Returns: Number of polygons in search result array. - int findPath(dtPolyRef startRef, dtPolyRef endRef, - dtPolyRef* path, const int maxPathSize); + int findPath(dtStatPolyRef startRef, dtStatPolyRef endRef, + dtStatPolyRef* path, const int maxPathSize); // Finds a straight path from start to end locations within the corridor // described by the path polygons. @@ -110,7 +109,7 @@ public: // maxStraightPathSize - (in) The max number of points the straight path array can hold. // Returns: Number of points in the path. int findStraightPath(const float* startPos, const float* endPos, - const dtPolyRef* path, const int pathSize, + const dtStatPolyRef* path, const int pathSize, float* straightPath, const int maxStraightPathSize); // Finds intersection againts walls starting from start pos. @@ -118,11 +117,11 @@ public: // startRef - (in) ref to the polygon where the start lies. // startPos - (in) start position of the query. // endPos - (in) end position of the query. - // t - (out) hit parameter along the segment, valid only if hit. + // t - (out) hit parameter along the segment, 0 if no hit. // endRef - (out) ref to the last polygon which was processed. - // Returns: True if hit wall. - // TODO: Return the whole corridor!! - bool raycast(dtPolyRef startRef, const float* startPos, const float* endPos, float& t, dtPolyRef& endRef); + // Returns: Number of polygons in path or 0 if failed. + int raycast(dtStatPolyRef startRef, const float* startPos, const float* endPos, + float& t, dtStatPolyRef* path, const int pathSize); // Returns distance to nearest wall from the specified location. // Params: @@ -132,7 +131,7 @@ public: // hitPos - (out) location of the nearest hit. // hitNormal - (out) normal of the nearest hit. // Returns: Distance to nearest wall from the test location. - float findDistanceToWall(dtPolyRef centerRef, const float* centerPos, float maxRadius, + float findDistanceToWall(dtStatPolyRef centerRef, const float* centerPos, float maxRadius, float* hitPos, float* hitNormal); // Finds polygons found along the navigation graph which touch the specified circle. @@ -143,12 +142,10 @@ public: // resultRef - (out, opt) refs to the polygons touched by the circle. // resultParent - (out, opt) parent of each result polygon. // resultCost - (out, opt) search cost at each result polygon. - // resultDepth - (out, opt) search depth at each result polygon. // maxResult - (int) maximum capacity of search results. // Returns: Number of results. - int findPolysAround(dtPolyRef centerRef, const float* centerPos, float radius, - dtPolyRef* resultRef, dtPolyRef* resultParent, - float* resultCost, unsigned short* resultDepth, + int findPolysAround(dtStatPolyRef centerRef, const float* centerPos, float radius, + dtStatPolyRef* resultRef, dtStatPolyRef* resultParent, float* resultCost, const int maxResult); // Returns closest point on navigation polygon. @@ -157,45 +154,45 @@ public: // pos - (in) the point to check. // closest - (out) closest point. // Returns: true if closest point found. - bool closestPointToPoly(dtPolyRef ref, const float* pos, float* closest) const; + bool closestPointToPoly(dtStatPolyRef ref, const float* pos, float* closest) const; // Returns pointer to a polygon based on ref. - const dtPoly* getPolyByRef(dtPolyRef ref) const; + const dtStatPoly* getPolyByRef(dtStatPolyRef ref) const; // Returns number of navigation polygons. inline int getPolyCount() const { return m_header ? m_header->npolys : 0; } // Rerturns pointer to specified navigation polygon. - inline const dtPoly* getPoly(int i) const { return &m_polys[i]; } + inline const dtStatPoly* getPoly(int i) const { return &m_polys[i]; } // Returns number of vertices. inline int getVertexCount() const { return m_header ? m_header->nverts : 0; } // Returns pointer to specified vertex. inline const float* getVertex(int i) const { return &m_verts[i*3]; } - bool isInOpenList(dtPolyRef ref) const; + bool isInOpenList(dtStatPolyRef ref) const; int getMemUsed() const; inline const dtStatNavMeshHeader* getHeader() const { return m_header; } - inline const dtBVNode* getBvTreeNodes() const { return m_bvtree; } + inline const dtStatBVNode* getBvTreeNodes() const { return m_bvtree; } inline int getBvTreeNodeCount() const { return m_header->nnodes; } private: - float getCost(dtPolyRef prev, dtPolyRef from, dtPolyRef to) const; - float getHeuristic(dtPolyRef from, dtPolyRef to) const; + float getCost(dtStatPolyRef prev, dtStatPolyRef from, dtStatPolyRef to) const; + float getHeuristic(dtStatPolyRef from, dtStatPolyRef to) const; // Copies the locations of vertices of a polygon to an array. - int getPolyVerts(dtPolyRef ref, float* verts) const; + int getPolyVerts(dtStatPolyRef ref, float* verts) const; // Returns portal points between two polygons. - bool getPortalPoints(dtPolyRef from, dtPolyRef to, float* left, float* right) const; + bool getPortalPoints(dtStatPolyRef from, dtStatPolyRef to, float* left, float* right) const; unsigned char* m_data; int m_dataSize; dtStatNavMeshHeader* m_header; - dtPoly* m_polys; + dtStatPoly* m_polys; float* m_verts; - dtBVNode* m_bvtree; + dtStatBVNode* m_bvtree; class dtNodePool* m_nodePool; class dtNodeQueue* m_openList; diff --git a/Detour/Source/DetourDebugDraw.cpp b/Detour/Source/DetourDebugDraw.cpp index d7f932bc..41503da1 100755 --- a/Detour/Source/DetourDebugDraw.cpp +++ b/Detour/Source/DetourDebugDraw.cpp @@ -21,9 +21,9 @@ #include "SDL.h" #include "SDL_Opengl.h" -void dtDebugDrawStatNavMeshPoly(const dtStatNavMesh* mesh, dtPolyRef ref, const float* col) +void dtDebugDrawStatNavMeshPoly(const dtStatNavMesh* mesh, dtStatPolyRef ref, const float* col) { - const dtPoly* p = mesh->getPolyByRef(ref); + const dtStatPoly* p = mesh->getPolyByRef(ref); if (!p) return; glColor4f(col[0],col[1],col[2],0.25f); @@ -83,14 +83,14 @@ void dtDebugDrawStatNavMeshBVTree(const dtStatNavMesh* mesh) const float col[] = { 1,1,1,0.5f }; const dtStatNavMeshHeader* hdr = mesh->getHeader(); - const dtBVNode* nodes = mesh->getBvTreeNodes(); + const dtStatBVNode* nodes = mesh->getBvTreeNodes(); int nnodes = mesh->getBvTreeNodeCount(); glBegin(GL_LINES); for (int i = 0; i < nnodes; ++i) { - const dtBVNode* n = &nodes[i]; + const dtStatBVNode* n = &nodes[i]; if (n->i < 0) // Leaf indices are positive. continue; drawBoxWire(hdr->bmin[0] + n->bmin[0]*hdr->cs, @@ -108,7 +108,7 @@ void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh) glBegin(GL_TRIANGLES); for (int i = 0; i < mesh->getPolyCount(); ++i) { - const dtPoly* p = mesh->getPoly(i); + const dtStatPoly* p = mesh->getPoly(i); if (mesh->isInOpenList(i+1)) glColor4ub(255,196,0,64); @@ -136,7 +136,7 @@ void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh) glBegin(GL_LINES); for (int i = 0; i < mesh->getPolyCount(); ++i) { - const dtPoly* p = mesh->getPoly(i); + const dtStatPoly* p = mesh->getPoly(i); for (int j = 0, nj = (int)p->nv; j < nj; ++j) { if (p->n[j] == 0) continue; @@ -158,7 +158,7 @@ void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh) glBegin(GL_LINES); for (int i = 0; i < mesh->getPolyCount(); ++i) { - const dtPoly* p = mesh->getPoly(i); + const dtStatPoly* p = mesh->getPoly(i); for (int j = 0, nj = (int)p->nv; j < nj; ++j) { if (p->n[j] != 0) continue; @@ -191,10 +191,10 @@ void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh) static void drawTile(const dtTileHeader* header) { const float col[4] = {0,0,0,0.25f}; - glBegin(GL_LINES); +/* glBegin(GL_LINES); drawBoxWire(header->bmin[0],header->bmin[1],header->bmin[2], header->bmax[0],header->bmax[1],header->bmax[2], col); - glEnd(); + glEnd();*/ glBegin(GL_TRIANGLES); for (int i = 0; i < header->npolys; ++i) diff --git a/Detour/Source/DetourStatNavMeshBuilder.cpp b/Detour/Source/DetourStatNavMeshBuilder.cpp index 8faa6844..d13d02ac 100755 --- a/Detour/Source/DetourStatNavMeshBuilder.cpp +++ b/Detour/Source/DetourStatNavMeshBuilder.cpp @@ -102,12 +102,12 @@ inline int longestAxis(unsigned short x, unsigned short y, unsigned short z) return axis; } -void subdivide(BVItem* items, int nitems, int imin, int imax, int& curNode, dtBVNode* nodes) +static void subdivide(BVItem* items, int nitems, int imin, int imax, int& curNode, dtStatBVNode* nodes) { int inum = imax - imin; int icur = curNode; - dtBVNode& node = nodes[curNode++]; + dtStatBVNode& node = nodes[curNode++]; if (inum == 1) { @@ -163,7 +163,7 @@ void subdivide(BVItem* items, int nitems, int imin, int imax, int& curNode, dtBV static int createBVTree(const unsigned short* verts, const int nverts, const unsigned short* polys, const int npolys, const int nvp, float cs, float ch, - int nnodes, dtBVNode* nodes) + int nnodes, dtStatBVNode* nodes) { // Build tree BVItem* items = new BVItem[npolys]; @@ -211,7 +211,7 @@ bool dtCreateNavMeshData(const unsigned short* verts, const int nverts, const float* bmin, const float* bmax, float cs, float ch, unsigned char** outData, int* outDataSize) { - if (nvp != DT_VERTS_PER_POLYGON) + if (nvp != DT_STAT_VERTS_PER_POLYGON) return false; if (nverts >= 0xffff) return false; @@ -224,8 +224,8 @@ bool dtCreateNavMeshData(const unsigned short* verts, const int nverts, // Calculate data size const int headerSize = sizeof(dtStatNavMeshHeader); const int vertsSize = sizeof(float)*3*nverts; - const int polysSize = sizeof(dtPoly)*npolys; - const int nodesSize = sizeof(dtBVNode)*npolys*2; + const int polysSize = sizeof(dtStatPoly)*npolys; + const int nodesSize = sizeof(dtStatBVNode)*npolys*2; const int dataSize = headerSize + vertsSize + polysSize + nodesSize; unsigned char* data = new unsigned char[dataSize]; @@ -235,12 +235,12 @@ bool dtCreateNavMeshData(const unsigned short* verts, const int nverts, dtStatNavMeshHeader* header = (dtStatNavMeshHeader*)(data); float* navVerts = (float*)(data + headerSize); - dtPoly* navPolys = (dtPoly*)(data + headerSize + vertsSize); - dtBVNode* nodes = (dtBVNode*)(data + headerSize + vertsSize + polysSize); + dtStatPoly* navPolys = (dtStatPoly*)(data + headerSize + vertsSize); + dtStatBVNode* nodes = (dtStatBVNode*)(data + headerSize + vertsSize + polysSize); // Store header - header->magic = DT_NAVMESH_MAGIC; - header->version = DT_NAVMESH_VERSION; + header->magic = DT_STAT_NAVMESH_MAGIC; + header->version = DT_STAT_NAVMESH_VERSION; header->npolys = npolys; header->nverts = nverts; header->cs = cs; @@ -265,7 +265,7 @@ bool dtCreateNavMeshData(const unsigned short* verts, const int nverts, const unsigned short* src = polys; for (int i = 0; i < npolys; ++i) { - dtPoly* p = &navPolys[i]; + dtStatPoly* p = &navPolys[i]; p->nv = 0; for (int j = 0; j < nvp; ++j) { diff --git a/Recast/Include/Recast.h b/Recast/Include/Recast.h index 5d835d8e..13dce59d 100644 --- a/Recast/Include/Recast.h +++ b/Recast/Include/Recast.h @@ -291,6 +291,14 @@ void rcMarkWalkableTriangles(const float walkableSlopeAngle, const int* tris, int nt, unsigned char* flags); +// Rasterizes a triangle into heightfield spans. +// Params: +// v0,v1,v2 - (in) the vertices of the triangle. +// flags - (in) triangle flags (uses WALKABLE) +// solid - (in) heighfield where the triangle is rasterized +void rcRasterizeTriangle(const float* v0, const float* v1, const float* v2, + unsigned char flags, rcHeightfield& solid); + // Rasterizes the triangles into heightfield spans. // Params: // verts - (in) array of vertices diff --git a/Recast/Source/RecastRasterization.cpp b/Recast/Source/RecastRasterization.cpp index 1a79df2c..658b0e1f 100644 --- a/Recast/Source/RecastRasterization.cpp +++ b/Recast/Source/RecastRasterization.cpp @@ -268,6 +268,21 @@ static void rasterizeTri(const float* v0, const float* v1, const float* v2, } } +void rcRasterizeTriangle(const float* v0, const float* v1, const float* v2, + unsigned char flags, rcHeightfield& solid) +{ + rcTimeVal startTime = rcGetPerformanceTimer(); + + const float ics = 1.0f/solid.cs; + const float ich = 1.0f/solid.ch; + rasterizeTri(v0, v1, v2, flags, solid, solid.bmin, solid.bmax, solid.cs, ics, ich); + + rcTimeVal endTime = rcGetPerformanceTimer(); + + if (rcGetBuildTimes()) + rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime); +} + void rcRasterizeTriangles(const float* verts, int nv, const int* tris, const unsigned char* flags, int nt, rcHeightfield& solid) @@ -287,9 +302,6 @@ void rcRasterizeTriangles(const float* verts, int nv, } rcTimeVal endTime = rcGetPerformanceTimer(); - -// if (rcGetLog()) -// rcGetLog()->log(RC_LOG_PROGRESS, "Rasterize: %.3f ms", rcGetDeltaTimeUsec(startTime, endTime)/1000.0f); if (rcGetBuildTimes()) rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime); diff --git a/RecastDemo/Bin/DroidSans.ttf b/RecastDemo/Bin/DroidSans.ttf new file mode 100755 index 0000000000000000000000000000000000000000..15c274d82451c87d1f483b1289653156ffd76469 GIT binary patch literal 108796 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 a&BU5D4A-n#9fjkZ=dhU1uz1sa+y4SQIcQh_ literal 0 HcmV?d00001 diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast index b07b1eb8aef538a181f86240694b2296fa711f4e..5f376099d73b4682f52359e4304b0a3c8341a5eb 100755 GIT binary patch literal 463612 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 H4t?`~k82bi diff --git a/RecastDemo/Bin/font.cfnt b/RecastDemo/Bin/font.cfnt deleted file mode 100644 index 96a2047861d9727cbe8f0ce6feac446968874145..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90096 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 L;Ej@hL*@K`hNU;! diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser index 07d66be4..7d921617 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser @@ -16,10 +16,10 @@ 8D1107260486CEB800E47090 /* Recast */, ); breakpoints = ( - 6B0249B11003783F00CF7107 /* BuilderTiledMesh.cpp:836 */, - 6B0249ED10037C0A00CF7107 /* DetourTiledNavMesh.cpp:1 */, - 6B0249EF10037C0C00CF7107 /* DetourTiledNavMesh.cpp:1 */, - 6B024AC01004AB3900CF7107 /* DetourTiledNavMesh.cpp:1 */, + 6B0249B11003783F00CF7107 /* Sample_TileMesh.cpp:834 */, + 6B0249ED10037C0A00CF7107 /* DetourTileNavMesh.cpp:1 */, + 6B0249EF10037C0C00CF7107 /* DetourTileNavMesh.cpp:1 */, + 6B024AC01004AB3900CF7107 /* DetourTileNavMesh.cpp:1 */, ); codeSenseManager = 6B8632AA0F78115100E2684A /* Code sense */; executables = ( @@ -110,757 +110,58 @@ PBXFileDataSource_Target_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 268557324; - PBXWorkspaceStateSaveDate = 268557324; + PBXPerProjectTemplateStateSaveDate = 269161021; + PBXWorkspaceStateSaveDate = 269161021; }; perUserProjectItems = { - 6B02489F1001E4FE00CF7107 /* PBXTextBookmark */ = 6B02489F1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248A01001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248A01001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248A11001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248A11001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248A21001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248A21001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248A31001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248A31001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248A41001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248A41001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248A51001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248A51001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248A61001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248A61001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248A71001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248A71001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248A81001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248A81001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248A91001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248A91001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248AA1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248AA1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248AB1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248AB1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248AC1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248AC1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248AD1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248AD1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248AE1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248AE1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248AF1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248AF1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248B01001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248B01001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248B11001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248B11001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248B21001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248B21001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248B31001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248B31001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248B41001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248B41001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248B51001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248B51001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248B61001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248B61001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248B71001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248B71001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248B81001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248B81001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248B91001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248B91001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248BA1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248BA1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248BB1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248BB1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248BC1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248BC1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248BD1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248BD1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248BE1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248BE1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248BF1001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248BF1001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248C01001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248C01001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248C11001E4FE00CF7107 /* PBXTextBookmark */ = 6B0248C11001E4FE00CF7107 /* PBXTextBookmark */; - 6B0248C41001E53600CF7107 /* PBXTextBookmark */ = 6B0248C41001E53600CF7107 /* PBXTextBookmark */; - 6B0248CF1001E56D00CF7107 /* PBXTextBookmark */ = 6B0248CF1001E56D00CF7107 /* PBXTextBookmark */; - 6B0248D21001E64300CF7107 /* PBXTextBookmark */ = 6B0248D21001E64300CF7107 /* PBXTextBookmark */; - 6B0248D31001E64300CF7107 /* PBXTextBookmark */ = 6B0248D31001E64300CF7107 /* PBXTextBookmark */; - 6B0248D41001E64300CF7107 /* PBXTextBookmark */ = 6B0248D41001E64300CF7107 /* PBXTextBookmark */; - 6B0248D51001E64300CF7107 /* PBXTextBookmark */ = 6B0248D51001E64300CF7107 /* PBXTextBookmark */; - 6B0248D61001E64300CF7107 /* PBXTextBookmark */ = 6B0248D61001E64300CF7107 /* PBXTextBookmark */; - 6B0248D81001E70900CF7107 /* PBXTextBookmark */ = 6B0248D81001E70900CF7107 /* PBXTextBookmark */; - 6B0248D91001E70900CF7107 /* PBXTextBookmark */ = 6B0248D91001E70900CF7107 /* PBXTextBookmark */; - 6B0248DA1001E70900CF7107 /* PBXTextBookmark */ = 6B0248DA1001E70900CF7107 /* PBXTextBookmark */; - 6B0248DB1001E70900CF7107 /* PBXTextBookmark */ = 6B0248DB1001E70900CF7107 /* PBXTextBookmark */; - 6B0248DC1001E70900CF7107 /* PBXTextBookmark */ = 6B0248DC1001E70900CF7107 /* PBXTextBookmark */; - 6B0248DD1001E70900CF7107 /* PBXTextBookmark */ = 6B0248DD1001E70900CF7107 /* PBXTextBookmark */; - 6B0248DE1001E7F200CF7107 /* PBXTextBookmark */ = 6B0248DE1001E7F200CF7107 /* PBXTextBookmark */; - 6B0248DF1001E7F200CF7107 /* PBXTextBookmark */ = 6B0248DF1001E7F200CF7107 /* PBXTextBookmark */; - 6B0248E01001E7F200CF7107 /* PBXTextBookmark */ = 6B0248E01001E7F200CF7107 /* PBXTextBookmark */; - 6B0248E11001E7F200CF7107 /* PBXTextBookmark */ = 6B0248E11001E7F200CF7107 /* PBXTextBookmark */; - 6B0248E21001E7F200CF7107 /* PBXTextBookmark */ = 6B0248E21001E7F200CF7107 /* PBXTextBookmark */; - 6B0248E31001E7F200CF7107 /* PBXTextBookmark */ = 6B0248E31001E7F200CF7107 /* PBXTextBookmark */; - 6B0248E41001E7F200CF7107 /* PBXTextBookmark */ = 6B0248E41001E7F200CF7107 /* PBXTextBookmark */; - 6B0248E51001E7F200CF7107 /* PBXTextBookmark */ = 6B0248E51001E7F200CF7107 /* PBXTextBookmark */; - 6B0248E61001E7F200CF7107 /* PBXTextBookmark */ = 6B0248E61001E7F200CF7107 /* PBXTextBookmark */; - 6B0248E71001E7F200CF7107 /* PBXTextBookmark */ = 6B0248E71001E7F200CF7107 /* PBXTextBookmark */; - 6B0248EA1001E82000CF7107 /* PBXTextBookmark */ = 6B0248EA1001E82000CF7107 /* PBXTextBookmark */; - 6B0248EB1001E82000CF7107 /* PBXTextBookmark */ = 6B0248EB1001E82000CF7107 /* PBXTextBookmark */; - 6B0248EC1001E82000CF7107 /* PBXTextBookmark */ = 6B0248EC1001E82000CF7107 /* PBXTextBookmark */; - 6B0248ED1001E82000CF7107 /* PBXTextBookmark */ = 6B0248ED1001E82000CF7107 /* PBXTextBookmark */; - 6B0248EE1001E82000CF7107 /* PBXTextBookmark */ = 6B0248EE1001E82000CF7107 /* PBXTextBookmark */; - 6B0248EF1001E82000CF7107 /* PBXTextBookmark */ = 6B0248EF1001E82000CF7107 /* PBXTextBookmark */; - 6B0248F01001E82000CF7107 /* PBXTextBookmark */ = 6B0248F01001E82000CF7107 /* PBXTextBookmark */; - 6B0248F21001E97600CF7107 /* PBXTextBookmark */ = 6B0248F21001E97600CF7107 /* PBXTextBookmark */; - 6B0248F41001E9A400CF7107 /* PBXTextBookmark */ = 6B0248F41001E9A400CF7107 /* PBXTextBookmark */; - 6B0248F51001E9A400CF7107 /* PBXTextBookmark */ = 6B0248F51001E9A400CF7107 /* PBXTextBookmark */; - 6B0248F61001E9A400CF7107 /* PBXTextBookmark */ = 6B0248F61001E9A400CF7107 /* PBXTextBookmark */; - 6B0248F71001E9A400CF7107 /* PBXTextBookmark */ = 6B0248F71001E9A400CF7107 /* PBXTextBookmark */; - 6B0248F81001EABD00CF7107 /* PBXTextBookmark */ = 6B0248F81001EABD00CF7107 /* PBXTextBookmark */; - 6B0248F91001EABD00CF7107 /* PBXTextBookmark */ = 6B0248F91001EABD00CF7107 /* PBXTextBookmark */; - 6B0248FA1001EABD00CF7107 /* PBXTextBookmark */ = 6B0248FA1001EABD00CF7107 /* PBXTextBookmark */; - 6B0248FB1001EABD00CF7107 /* PBXTextBookmark */ = 6B0248FB1001EABD00CF7107 /* PBXTextBookmark */; - 6B0248FC1001EABD00CF7107 /* PBXTextBookmark */ = 6B0248FC1001EABD00CF7107 /* PBXTextBookmark */; - 6B0248FD1001EABD00CF7107 /* PBXTextBookmark */ = 6B0248FD1001EABD00CF7107 /* PBXTextBookmark */; - 6B0248FE1001EABD00CF7107 /* PBXTextBookmark */ = 6B0248FE1001EABD00CF7107 /* PBXTextBookmark */; - 6B0248FF1001EABD00CF7107 /* PBXTextBookmark */ = 6B0248FF1001EABD00CF7107 /* PBXTextBookmark */; - 6B0249001001EABD00CF7107 /* PBXTextBookmark */ = 6B0249001001EABD00CF7107 /* PBXTextBookmark */; - 6B0249011001EABD00CF7107 /* PBXTextBookmark */ = 6B0249011001EABD00CF7107 /* PBXTextBookmark */; - 6B0249021001EABD00CF7107 /* PBXTextBookmark */ = 6B0249021001EABD00CF7107 /* PBXTextBookmark */; - 6B0249031001EABD00CF7107 /* PBXTextBookmark */ = 6B0249031001EABD00CF7107 /* PBXTextBookmark */; - 6B0249041001EABD00CF7107 /* PBXTextBookmark */ = 6B0249041001EABD00CF7107 /* PBXTextBookmark */; - 6B0249051001EABD00CF7107 /* PBXTextBookmark */ = 6B0249051001EABD00CF7107 /* PBXTextBookmark */; - 6B0249061001EABD00CF7107 /* PBXTextBookmark */ = 6B0249061001EABD00CF7107 /* PBXTextBookmark */; - 6B0249071001EABD00CF7107 /* PBXTextBookmark */ = 6B0249071001EABD00CF7107 /* PBXTextBookmark */; - 6B0249081001EABD00CF7107 /* PBXTextBookmark */ = 6B0249081001EABD00CF7107 /* PBXTextBookmark */; - 6B02490D1001EB2900CF7107 /* PBXTextBookmark */ = 6B02490D1001EB2900CF7107 /* PBXTextBookmark */; - 6B02490E1001EB2900CF7107 /* PBXTextBookmark */ = 6B02490E1001EB2900CF7107 /* PBXTextBookmark */; - 6B02490F1001EB2900CF7107 /* PBXTextBookmark */ = 6B02490F1001EB2900CF7107 /* PBXTextBookmark */; - 6B0249101001EB2900CF7107 /* PBXTextBookmark */ = 6B0249101001EB2900CF7107 /* PBXTextBookmark */; - 6B0249111001EB2900CF7107 /* PBXTextBookmark */ = 6B0249111001EB2900CF7107 /* PBXTextBookmark */; - 6B0249121001EB2900CF7107 /* PBXTextBookmark */ = 6B0249121001EB2900CF7107 /* PBXTextBookmark */; - 6B0249131001EB2900CF7107 /* PBXTextBookmark */ = 6B0249131001EB2900CF7107 /* PBXTextBookmark */; - 6B0249171001EBBC00CF7107 /* PBXTextBookmark */ = 6B0249171001EBBC00CF7107 /* PBXTextBookmark */; - 6B0249181001EBBC00CF7107 /* PBXTextBookmark */ = 6B0249181001EBBC00CF7107 /* PBXTextBookmark */; - 6B0249191001EBBC00CF7107 /* PBXTextBookmark */ = 6B0249191001EBBC00CF7107 /* PBXTextBookmark */; - 6B02491A1001EBBC00CF7107 /* PBXTextBookmark */ = 6B02491A1001EBBC00CF7107 /* PBXTextBookmark */; - 6B0249201001ED7500CF7107 /* PBXTextBookmark */ = 6B0249201001ED7500CF7107 /* PBXTextBookmark */; - 6B0249211001ED7500CF7107 /* PBXTextBookmark */ = 6B0249211001ED7500CF7107 /* PBXTextBookmark */; - 6B0249221001ED9800CF7107 /* PBXTextBookmark */ = 6B0249221001ED9800CF7107 /* PBXTextBookmark */; - 6B0249241001EDB000CF7107 /* PBXTextBookmark */ = 6B0249241001EDB000CF7107 /* PBXTextBookmark */; - 6B0249261001EDCA00CF7107 /* PBXTextBookmark */ = 6B0249261001EDCA00CF7107 /* PBXTextBookmark */; - 6B0249281001EDD400CF7107 /* PBXTextBookmark */ = 6B0249281001EDD400CF7107 /* PBXTextBookmark */; - 6B02492A1001EDE800CF7107 /* PBXTextBookmark */ = 6B02492A1001EDE800CF7107 /* PBXTextBookmark */; - 6B02492B1001EE1C00CF7107 /* PBXTextBookmark */ = 6B02492B1001EE1C00CF7107 /* PBXTextBookmark */; - 6B02492C1001EE1C00CF7107 /* PBXTextBookmark */ = 6B02492C1001EE1C00CF7107 /* PBXTextBookmark */; - 6B02492D1001EEB800CF7107 /* PBXTextBookmark */ = 6B02492D1001EEB800CF7107 /* PBXTextBookmark */; - 6B02492E1001EEB800CF7107 /* PBXTextBookmark */ = 6B02492E1001EEB800CF7107 /* PBXTextBookmark */; - 6B02492F1001EEB800CF7107 /* PBXTextBookmark */ = 6B02492F1001EEB800CF7107 /* PBXTextBookmark */; - 6B0249301001EEB800CF7107 /* PBXTextBookmark */ = 6B0249301001EEB800CF7107 /* PBXTextBookmark */; - 6B0249341001EEC800CF7107 /* PBXTextBookmark */ = 6B0249341001EEC800CF7107 /* PBXTextBookmark */; - 6B0249351001EEC800CF7107 /* PBXTextBookmark */ = 6B0249351001EEC800CF7107 /* PBXTextBookmark */; - 6B0249371001EEFE00CF7107 /* PBXTextBookmark */ = 6B0249371001EEFE00CF7107 /* PBXTextBookmark */; - 6B0249391002118200CF7107 /* PBXTextBookmark */ = 6B0249391002118200CF7107 /* PBXTextBookmark */; - 6B02493A1002118200CF7107 /* PBXTextBookmark */ = 6B02493A1002118200CF7107 /* PBXTextBookmark */; - 6B02493B1002118200CF7107 /* PBXTextBookmark */ = 6B02493B1002118200CF7107 /* PBXTextBookmark */; - 6B02493C1002118200CF7107 /* PBXTextBookmark */ = 6B02493C1002118200CF7107 /* PBXTextBookmark */; - 6B02493D1002118200CF7107 /* PBXTextBookmark */ = 6B02493D1002118200CF7107 /* PBXTextBookmark */; - 6B02493E1002118200CF7107 /* PBXTextBookmark */ = 6B02493E1002118200CF7107 /* PBXTextBookmark */; - 6B02493F1002118200CF7107 /* PBXTextBookmark */ = 6B02493F1002118200CF7107 /* PBXTextBookmark */; - 6B0249401002118200CF7107 /* PBXTextBookmark */ = 6B0249401002118200CF7107 /* PBXTextBookmark */; - 6B0249411002118200CF7107 /* PBXTextBookmark */ = 6B0249411002118200CF7107 /* PBXTextBookmark */; - 6B0249421002118200CF7107 /* PBXTextBookmark */ = 6B0249421002118200CF7107 /* PBXTextBookmark */; - 6B0249431002118200CF7107 /* PBXTextBookmark */ = 6B0249431002118200CF7107 /* PBXTextBookmark */; - 6B0249441002118200CF7107 /* PBXTextBookmark */ = 6B0249441002118200CF7107 /* PBXTextBookmark */; - 6B0249451002118200CF7107 /* PBXTextBookmark */ = 6B0249451002118200CF7107 /* PBXTextBookmark */; - 6B0249461002118200CF7107 /* PBXTextBookmark */ = 6B0249461002118200CF7107 /* PBXTextBookmark */; - 6B0249471002118200CF7107 /* PBXTextBookmark */ = 6B0249471002118200CF7107 /* PBXTextBookmark */; - 6B0249481002118200CF7107 /* PBXTextBookmark */ = 6B0249481002118200CF7107 /* PBXTextBookmark */; - 6B0249491002118200CF7107 /* PBXTextBookmark */ = 6B0249491002118200CF7107 /* PBXTextBookmark */; - 6B02494A1002118200CF7107 /* PBXTextBookmark */ = 6B02494A1002118200CF7107 /* PBXTextBookmark */; - 6B02494B1003435800CF7107 /* PBXTextBookmark */ = 6B02494B1003435800CF7107 /* PBXTextBookmark */; - 6B02494C1003435800CF7107 /* PBXTextBookmark */ = 6B02494C1003435800CF7107 /* PBXTextBookmark */; - 6B02494D1003435800CF7107 /* PBXTextBookmark */ = 6B02494D1003435800CF7107 /* PBXTextBookmark */; - 6B02494E1003435800CF7107 /* PBXTextBookmark */ = 6B02494E1003435800CF7107 /* PBXTextBookmark */; - 6B02494F1003435800CF7107 /* PBXTextBookmark */ = 6B02494F1003435800CF7107 /* PBXTextBookmark */; - 6B0249501003435800CF7107 /* PBXTextBookmark */ = 6B0249501003435800CF7107 /* PBXTextBookmark */; - 6B0249511003435800CF7107 /* PBXTextBookmark */ = 6B0249511003435800CF7107 /* PBXTextBookmark */; - 6B0249521003435800CF7107 /* PBXTextBookmark */ = 6B0249521003435800CF7107 /* PBXTextBookmark */; - 6B0249531003435800CF7107 /* PBXTextBookmark */ = 6B0249531003435800CF7107 /* PBXTextBookmark */; - 6B0249541003435800CF7107 /* PBXTextBookmark */ = 6B0249541003435800CF7107 /* PBXTextBookmark */; - 6B0249551003435800CF7107 /* PBXTextBookmark */ = 6B0249551003435800CF7107 /* PBXTextBookmark */; - 6B0249561003435800CF7107 /* PBXTextBookmark */ = 6B0249561003435800CF7107 /* PBXTextBookmark */; - 6B0249571003435800CF7107 /* PBXTextBookmark */ = 6B0249571003435800CF7107 /* PBXTextBookmark */; - 6B0249581003435800CF7107 /* PBXTextBookmark */ = 6B0249581003435800CF7107 /* PBXTextBookmark */; - 6B0249591003435800CF7107 /* PBXTextBookmark */ = 6B0249591003435800CF7107 /* PBXTextBookmark */; - 6B02495A1003435800CF7107 /* PBXTextBookmark */ = 6B02495A1003435800CF7107 /* PBXTextBookmark */; - 6B02495B1003435800CF7107 /* PBXTextBookmark */ = 6B02495B1003435800CF7107 /* PBXTextBookmark */; - 6B02495C1003435800CF7107 /* PBXTextBookmark */ = 6B02495C1003435800CF7107 /* PBXTextBookmark */; - 6B0249611003715300CF7107 /* PBXTextBookmark */ = 6B0249611003715300CF7107 /* PBXTextBookmark */; - 6B0249621003715300CF7107 /* PBXTextBookmark */ = 6B0249621003715300CF7107 /* PBXTextBookmark */; - 6B0249631003715300CF7107 /* PBXTextBookmark */ = 6B0249631003715300CF7107 /* PBXTextBookmark */; - 6B0249641003715300CF7107 /* PBXTextBookmark */ = 6B0249641003715300CF7107 /* PBXTextBookmark */; - 6B0249651003715300CF7107 /* PBXTextBookmark */ = 6B0249651003715300CF7107 /* PBXTextBookmark */; - 6B0249661003715300CF7107 /* PBXTextBookmark */ = 6B0249661003715300CF7107 /* PBXTextBookmark */; - 6B0249671003715300CF7107 /* PBXTextBookmark */ = 6B0249671003715300CF7107 /* PBXTextBookmark */; - 6B0249681003715300CF7107 /* PBXTextBookmark */ = 6B0249681003715300CF7107 /* PBXTextBookmark */; - 6B0249691003715300CF7107 /* PBXTextBookmark */ = 6B0249691003715300CF7107 /* PBXTextBookmark */; - 6B02496A1003715300CF7107 /* PBXTextBookmark */ = 6B02496A1003715300CF7107 /* PBXTextBookmark */; - 6B02496B1003715300CF7107 /* PBXTextBookmark */ = 6B02496B1003715300CF7107 /* PBXTextBookmark */; - 6B02496C1003715300CF7107 /* PBXTextBookmark */ = 6B02496C1003715300CF7107 /* PBXTextBookmark */; - 6B02496D1003715300CF7107 /* PBXTextBookmark */ = 6B02496D1003715300CF7107 /* PBXTextBookmark */; - 6B02496E1003715300CF7107 /* PBXTextBookmark */ = 6B02496E1003715300CF7107 /* PBXTextBookmark */; - 6B02496F1003715300CF7107 /* PBXTextBookmark */ = 6B02496F1003715300CF7107 /* PBXTextBookmark */; - 6B0249701003715300CF7107 /* PBXTextBookmark */ = 6B0249701003715300CF7107 /* PBXTextBookmark */; - 6B0249711003715300CF7107 /* PBXTextBookmark */ = 6B0249711003715300CF7107 /* PBXTextBookmark */; - 6B0249721003715300CF7107 /* PBXTextBookmark */ = 6B0249721003715300CF7107 /* PBXTextBookmark */; - 6B0249731003715300CF7107 /* PBXTextBookmark */ = 6B0249731003715300CF7107 /* PBXTextBookmark */; - 6B0249741003715300CF7107 /* PBXTextBookmark */ = 6B0249741003715300CF7107 /* PBXTextBookmark */; - 6B02497A1003751300CF7107 /* PBXTextBookmark */ = 6B02497A1003751300CF7107 /* PBXTextBookmark */; - 6B02497B1003751300CF7107 /* PBXTextBookmark */ = 6B02497B1003751300CF7107 /* PBXTextBookmark */; - 6B02497C1003751300CF7107 /* PBXTextBookmark */ = 6B02497C1003751300CF7107 /* PBXTextBookmark */; - 6B02497D1003751300CF7107 /* PBXTextBookmark */ = 6B02497D1003751300CF7107 /* PBXTextBookmark */; - 6B02497E1003751300CF7107 /* PBXTextBookmark */ = 6B02497E1003751300CF7107 /* PBXTextBookmark */; - 6B02497F1003751300CF7107 /* PBXTextBookmark */ = 6B02497F1003751300CF7107 /* PBXTextBookmark */; - 6B0249801003751300CF7107 /* PBXTextBookmark */ = 6B0249801003751300CF7107 /* PBXTextBookmark */; - 6B0249811003751300CF7107 /* PBXTextBookmark */ = 6B0249811003751300CF7107 /* PBXTextBookmark */; - 6B0249821003751300CF7107 /* PBXTextBookmark */ = 6B0249821003751300CF7107 /* PBXTextBookmark */; - 6B0249831003751300CF7107 /* PBXTextBookmark */ = 6B0249831003751300CF7107 /* PBXTextBookmark */; - 6B0249841003751300CF7107 /* PBXTextBookmark */ = 6B0249841003751300CF7107 /* PBXTextBookmark */; - 6B0249851003751300CF7107 /* PBXTextBookmark */ = 6B0249851003751300CF7107 /* PBXTextBookmark */; - 6B0249861003751300CF7107 /* PBXTextBookmark */ = 6B0249861003751300CF7107 /* PBXTextBookmark */; - 6B0249871003751300CF7107 /* PBXTextBookmark */ = 6B0249871003751300CF7107 /* PBXTextBookmark */; - 6B0249881003751300CF7107 /* PBXTextBookmark */ = 6B0249881003751300CF7107 /* PBXTextBookmark */; - 6B0249891003751300CF7107 /* PBXTextBookmark */ = 6B0249891003751300CF7107 /* PBXTextBookmark */; - 6B02498A1003751300CF7107 /* PBXTextBookmark */ = 6B02498A1003751300CF7107 /* PBXTextBookmark */; - 6B02498B1003751300CF7107 /* PBXTextBookmark */ = 6B02498B1003751300CF7107 /* PBXTextBookmark */; - 6B02498C1003751300CF7107 /* PBXTextBookmark */ = 6B02498C1003751300CF7107 /* PBXTextBookmark */; - 6B02498D1003751300CF7107 /* PBXTextBookmark */ = 6B02498D1003751300CF7107 /* PBXTextBookmark */; - 6B02498E1003751300CF7107 /* PBXTextBookmark */ = 6B02498E1003751300CF7107 /* PBXTextBookmark */; - 6B02498F1003751300CF7107 /* PBXTextBookmark */ = 6B02498F1003751300CF7107 /* PBXTextBookmark */; - 6B0249901003751300CF7107 /* PBXTextBookmark */ = 6B0249901003751300CF7107 /* PBXTextBookmark */; - 6B0249911003751300CF7107 /* PBXTextBookmark */ = 6B0249911003751300CF7107 /* PBXTextBookmark */; - 6B024992100375AF00CF7107 /* PBXTextBookmark */ = 6B024992100375AF00CF7107 /* PBXTextBookmark */; - 6B024993100375AF00CF7107 /* PBXTextBookmark */ = 6B024993100375AF00CF7107 /* PBXTextBookmark */; - 6B024994100375AF00CF7107 /* PBXTextBookmark */ = 6B024994100375AF00CF7107 /* PBXTextBookmark */; - 6B024995100375AF00CF7107 /* PBXTextBookmark */ = 6B024995100375AF00CF7107 /* PBXTextBookmark */; - 6B024996100375AF00CF7107 /* PBXTextBookmark */ = 6B024996100375AF00CF7107 /* PBXTextBookmark */; - 6B024997100375AF00CF7107 /* PBXTextBookmark */ = 6B024997100375AF00CF7107 /* PBXTextBookmark */; - 6B024998100375AF00CF7107 /* PBXTextBookmark */ = 6B024998100375AF00CF7107 /* PBXTextBookmark */; - 6B0249991003762100CF7107 /* PBXTextBookmark */ = 6B0249991003762100CF7107 /* PBXTextBookmark */; - 6B02499A1003762100CF7107 /* PBXTextBookmark */ = 6B02499A1003762100CF7107 /* PBXTextBookmark */; - 6B02499B1003762100CF7107 /* PBXTextBookmark */ = 6B02499B1003762100CF7107 /* PBXTextBookmark */; - 6B02499C1003762100CF7107 /* PBXTextBookmark */ = 6B02499C1003762100CF7107 /* PBXTextBookmark */; - 6B02499D1003762100CF7107 /* PBXTextBookmark */ = 6B02499D1003762100CF7107 /* PBXTextBookmark */; - 6B02499E1003766D00CF7107 /* PBXTextBookmark */ = 6B02499E1003766D00CF7107 /* PBXTextBookmark */; - 6B02499F1003766D00CF7107 /* PBXTextBookmark */ = 6B02499F1003766D00CF7107 /* PBXTextBookmark */; - 6B0249A01003766D00CF7107 /* PBXTextBookmark */ = 6B0249A01003766D00CF7107 /* PBXTextBookmark */; - 6B0249A11003766D00CF7107 /* PBXTextBookmark */ = 6B0249A11003766D00CF7107 /* PBXTextBookmark */; - 6B0249A21003766D00CF7107 /* PBXTextBookmark */ = 6B0249A21003766D00CF7107 /* PBXTextBookmark */; - 6B0249A71003774A00CF7107 /* PBXTextBookmark */ = 6B0249A71003774A00CF7107 /* PBXTextBookmark */; - 6B0249A81003774A00CF7107 /* PBXTextBookmark */ = 6B0249A81003774A00CF7107 /* PBXTextBookmark */; - 6B0249A91003774A00CF7107 /* PBXTextBookmark */ = 6B0249A91003774A00CF7107 /* PBXTextBookmark */; - 6B0249AA1003774A00CF7107 /* PBXTextBookmark */ = 6B0249AA1003774A00CF7107 /* PBXTextBookmark */; - 6B0249AB1003774A00CF7107 /* PBXTextBookmark */ = 6B0249AB1003774A00CF7107 /* PBXTextBookmark */; - 6B0249AC1003774A00CF7107 /* PBXTextBookmark */ = 6B0249AC1003774A00CF7107 /* PBXTextBookmark */; - 6B0249AF100377E900CF7107 /* PBXTextBookmark */ = 6B0249AF100377E900CF7107 /* PBXTextBookmark */; - 6B0249B41003784E00CF7107 /* PBXTextBookmark */ = 6B0249B41003784E00CF7107 /* PBXTextBookmark */; - 6B0249B61003787000CF7107 /* PBXTextBookmark */ = 6B0249B61003787000CF7107 /* PBXTextBookmark */; - 6B0249B81003788300CF7107 /* PBXTextBookmark */ = 6B0249B81003788300CF7107 /* PBXTextBookmark */; - 6B0249B91003788300CF7107 /* PBXTextBookmark */ = 6B0249B91003788300CF7107 /* PBXTextBookmark */; - 6B0249BA1003788300CF7107 /* PBXTextBookmark */ = 6B0249BA1003788300CF7107 /* PBXTextBookmark */; - 6B0249BE1003793900CF7107 /* PBXTextBookmark */ = 6B0249BE1003793900CF7107 /* PBXTextBookmark */; - 6B0249BF1003793900CF7107 /* PBXTextBookmark */ = 6B0249BF1003793900CF7107 /* PBXTextBookmark */; - 6B0249C01003793900CF7107 /* PBXTextBookmark */ = 6B0249C01003793900CF7107 /* PBXTextBookmark */; - 6B0249C11003793900CF7107 /* PBXTextBookmark */ = 6B0249C11003793900CF7107 /* PBXTextBookmark */; - 6B0249C21003793900CF7107 /* PBXTextBookmark */ = 6B0249C21003793900CF7107 /* PBXTextBookmark */; - 6B0249C31003793900CF7107 /* PBXTextBookmark */ = 6B0249C31003793900CF7107 /* PBXTextBookmark */; - 6B0249C41003794C00CF7107 /* PBXTextBookmark */ = 6B0249C41003794C00CF7107 /* PBXTextBookmark */; - 6B0249C51003797300CF7107 /* PBXTextBookmark */ = 6B0249C51003797300CF7107 /* PBXTextBookmark */; - 6B0249C61003797300CF7107 /* PBXTextBookmark */ = 6B0249C61003797300CF7107 /* PBXTextBookmark */; - 6B0249CA100379D800CF7107 /* PBXTextBookmark */ = 6B0249CA100379D800CF7107 /* PBXTextBookmark */; - 6B0249CB100379D800CF7107 /* PBXTextBookmark */ = 6B0249CB100379D800CF7107 /* PBXTextBookmark */; - 6B0249CC100379D800CF7107 /* PBXTextBookmark */ = 6B0249CC100379D800CF7107 /* PBXTextBookmark */; - 6B0249CD100379D800CF7107 /* PBXTextBookmark */ = 6B0249CD100379D800CF7107 /* PBXTextBookmark */; - 6B0249CE100379D800CF7107 /* PBXTextBookmark */ = 6B0249CE100379D800CF7107 /* PBXTextBookmark */; - 6B0249CF10037A0C00CF7107 /* PBXTextBookmark */ = 6B0249CF10037A0C00CF7107 /* PBXTextBookmark */; - 6B0249D010037A1500CF7107 /* PBXTextBookmark */ = 6B0249D010037A1500CF7107 /* PBXTextBookmark */; - 6B0249D110037A2000CF7107 /* PBXTextBookmark */ = 6B0249D110037A2000CF7107 /* PBXTextBookmark */; - 6B0249D310037A3C00CF7107 /* PBXTextBookmark */ = 6B0249D310037A3C00CF7107 /* PBXTextBookmark */; - 6B0249D410037A5100CF7107 /* PBXTextBookmark */ = 6B0249D410037A5100CF7107 /* PBXTextBookmark */; - 6B0249D510037A7400CF7107 /* PBXTextBookmark */ = 6B0249D510037A7400CF7107 /* PBXTextBookmark */; - 6B0249D610037AFB00CF7107 /* PBXTextBookmark */ = 6B0249D610037AFB00CF7107 /* PBXTextBookmark */; - 6B0249D710037AFB00CF7107 /* PBXTextBookmark */ = 6B0249D710037AFB00CF7107 /* PBXTextBookmark */; - 6B0249D810037AFB00CF7107 /* PBXTextBookmark */ = 6B0249D810037AFB00CF7107 /* PBXTextBookmark */; - 6B0249D910037AFB00CF7107 /* PBXTextBookmark */ = 6B0249D910037AFB00CF7107 /* PBXTextBookmark */; - 6B0249DA10037AFB00CF7107 /* PBXTextBookmark */ = 6B0249DA10037AFB00CF7107 /* PBXTextBookmark */; - 6B0249DB10037AFB00CF7107 /* PBXTextBookmark */ = 6B0249DB10037AFB00CF7107 /* PBXTextBookmark */; - 6B0249DC10037AFB00CF7107 /* PBXTextBookmark */ = 6B0249DC10037AFB00CF7107 /* PBXTextBookmark */; - 6B0249DF10037B3C00CF7107 /* PBXTextBookmark */ = 6B0249DF10037B3C00CF7107 /* PBXTextBookmark */; - 6B0249E010037B3C00CF7107 /* PBXTextBookmark */ = 6B0249E010037B3C00CF7107 /* PBXTextBookmark */; - 6B0249E110037B3C00CF7107 /* PBXTextBookmark */ = 6B0249E110037B3C00CF7107 /* PBXTextBookmark */; - 6B0249E210037B3C00CF7107 /* PBXTextBookmark */ = 6B0249E210037B3C00CF7107 /* PBXTextBookmark */; - 6B0249E310037B5600CF7107 /* PBXTextBookmark */ = 6B0249E310037B5600CF7107 /* PBXTextBookmark */; - 6B0249E410037B5F00CF7107 /* PBXTextBookmark */ = 6B0249E410037B5F00CF7107 /* PBXTextBookmark */; - 6B0249E510037B7100CF7107 /* PBXTextBookmark */ = 6B0249E510037B7100CF7107 /* PBXTextBookmark */; - 6B0249E810037B7D00CF7107 /* PBXTextBookmark */ = 6B0249E810037B7D00CF7107 /* PBXTextBookmark */; - 6B0249F310037CFB00CF7107 /* PBXTextBookmark */ = 6B0249F310037CFB00CF7107 /* PBXTextBookmark */; - 6B0249F410037CFB00CF7107 /* PBXTextBookmark */ = 6B0249F410037CFB00CF7107 /* PBXTextBookmark */; - 6B0249F510037CFB00CF7107 /* PBXTextBookmark */ = 6B0249F510037CFB00CF7107 /* PBXTextBookmark */; - 6B0249F610037CFB00CF7107 /* PBXTextBookmark */ = 6B0249F610037CFB00CF7107 /* PBXTextBookmark */; - 6B0249F710037CFB00CF7107 /* PBXTextBookmark */ = 6B0249F710037CFB00CF7107 /* PBXTextBookmark */; - 6B0249F810037CFB00CF7107 /* PBXTextBookmark */ = 6B0249F810037CFB00CF7107 /* PBXTextBookmark */; - 6B0249F910037CFB00CF7107 /* PBXTextBookmark */ = 6B0249F910037CFB00CF7107 /* PBXTextBookmark */; - 6B0249FA10037CFB00CF7107 /* PBXTextBookmark */ = 6B0249FA10037CFB00CF7107 /* PBXTextBookmark */; - 6B0249FB10037CFB00CF7107 /* PBXTextBookmark */ = 6B0249FB10037CFB00CF7107 /* PBXTextBookmark */; - 6B0249FE10037DB300CF7107 /* PBXTextBookmark */ = 6B0249FE10037DB300CF7107 /* PBXTextBookmark */; - 6B0249FF10037DB300CF7107 /* PBXTextBookmark */ = 6B0249FF10037DB300CF7107 /* PBXTextBookmark */; - 6B024A0010037DB300CF7107 /* PBXTextBookmark */ = 6B024A0010037DB300CF7107 /* PBXTextBookmark */; - 6B024A0110037DB300CF7107 /* PBXTextBookmark */ = 6B024A0110037DB300CF7107 /* PBXTextBookmark */; - 6B024A0210037DB300CF7107 /* PBXTextBookmark */ = 6B024A0210037DB300CF7107 /* PBXTextBookmark */; - 6B024A0310037DB300CF7107 /* PBXTextBookmark */ = 6B024A0310037DB300CF7107 /* PBXTextBookmark */; - 6B024A0410037DB300CF7107 /* PBXTextBookmark */ = 6B024A0410037DB300CF7107 /* PBXTextBookmark */; - 6B024A0510037DB300CF7107 /* PBXTextBookmark */ = 6B024A0510037DB300CF7107 /* PBXTextBookmark */; - 6B024A0610037DB300CF7107 /* PBXTextBookmark */ = 6B024A0610037DB300CF7107 /* PBXTextBookmark */; - 6B024A0710037DB300CF7107 /* PBXTextBookmark */ = 6B024A0710037DB300CF7107 /* PBXTextBookmark */; - 6B024A0810037DB300CF7107 /* PBXTextBookmark */ = 6B024A0810037DB300CF7107 /* PBXTextBookmark */; - 6B024A0910037DB300CF7107 /* PBXTextBookmark */ = 6B024A0910037DB300CF7107 /* PBXTextBookmark */; - 6B024A0A10037DB300CF7107 /* PBXTextBookmark */ = 6B024A0A10037DB300CF7107 /* PBXTextBookmark */; - 6B024A0B10037DB300CF7107 /* PBXTextBookmark */ = 6B024A0B10037DB300CF7107 /* PBXTextBookmark */; - 6B024A0C10037DB300CF7107 /* PBXTextBookmark */ = 6B024A0C10037DB300CF7107 /* PBXTextBookmark */; - 6B024A0D10037DB300CF7107 /* PBXTextBookmark */ = 6B024A0D10037DB300CF7107 /* PBXTextBookmark */; - 6B024A0E10037DB300CF7107 /* PBXTextBookmark */ = 6B024A0E10037DB300CF7107 /* PBXTextBookmark */; - 6B024A0F10037DB300CF7107 /* PBXTextBookmark */ = 6B024A0F10037DB300CF7107 /* PBXTextBookmark */; - 6B024A1010037DB300CF7107 /* PBXTextBookmark */ = 6B024A1010037DB300CF7107 /* PBXTextBookmark */; - 6B024A1110037DB300CF7107 /* PBXTextBookmark */ = 6B024A1110037DB300CF7107 /* PBXTextBookmark */; - 6B024A1210037DB300CF7107 /* PBXTextBookmark */ = 6B024A1210037DB300CF7107 /* PBXTextBookmark */; - 6B024A1510037E0900CF7107 /* PBXTextBookmark */ = 6B024A1510037E0900CF7107 /* PBXTextBookmark */; - 6B024A1610037E0900CF7107 /* PBXTextBookmark */ = 6B024A1610037E0900CF7107 /* PBXTextBookmark */; - 6B024A1710037E0900CF7107 /* PBXTextBookmark */ = 6B024A1710037E0900CF7107 /* PBXTextBookmark */; - 6B024A1810037E0900CF7107 /* PBXTextBookmark */ = 6B024A1810037E0900CF7107 /* PBXTextBookmark */; - 6B024A1910037E3900CF7107 /* PBXTextBookmark */ = 6B024A1910037E3900CF7107 /* PBXTextBookmark */; - 6B024A1A10037E4100CF7107 /* PBXTextBookmark */ = 6B024A1A10037E4100CF7107 /* PBXTextBookmark */; - 6B024A1B10037E5000CF7107 /* PBXTextBookmark */ = 6B024A1B10037E5000CF7107 /* PBXTextBookmark */; - 6B024A1C10037E5000CF7107 /* PBXTextBookmark */ = 6B024A1C10037E5000CF7107 /* PBXTextBookmark */; - 6B024A1E10037E9B00CF7107 /* PBXTextBookmark */ = 6B024A1E10037E9B00CF7107 /* PBXTextBookmark */; - 6B024A1F10037E9B00CF7107 /* PBXTextBookmark */ = 6B024A1F10037E9B00CF7107 /* PBXTextBookmark */; - 6B024A2010037E9B00CF7107 /* PBXTextBookmark */ = 6B024A2010037E9B00CF7107 /* PBXTextBookmark */; - 6B024A2110037E9B00CF7107 /* PBXTextBookmark */ = 6B024A2110037E9B00CF7107 /* PBXTextBookmark */; - 6B024A2210037E9B00CF7107 /* PBXTextBookmark */ = 6B024A2210037E9B00CF7107 /* PBXTextBookmark */; - 6B024A2310037E9B00CF7107 /* PBXTextBookmark */ = 6B024A2310037E9B00CF7107 /* PBXTextBookmark */; - 6B024A2410037E9B00CF7107 /* PBXTextBookmark */ = 6B024A2410037E9B00CF7107 /* PBXTextBookmark */; - 6B024A2610037F3100CF7107 /* PBXTextBookmark */ = 6B024A2610037F3100CF7107 /* PBXTextBookmark */; - 6B024A2710037F3100CF7107 /* PBXTextBookmark */ = 6B024A2710037F3100CF7107 /* PBXTextBookmark */; - 6B024A2810037F3100CF7107 /* PBXTextBookmark */ = 6B024A2810037F3100CF7107 /* PBXTextBookmark */; - 6B024A2910037F3100CF7107 /* PBXTextBookmark */ = 6B024A2910037F3100CF7107 /* PBXTextBookmark */; - 6B024A2A10037F3100CF7107 /* PBXTextBookmark */ = 6B024A2A10037F3100CF7107 /* PBXTextBookmark */; - 6B024A2F10047FFD00CF7107 /* PBXTextBookmark */ = 6B024A2F10047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3010047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3010047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3110047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3110047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3210047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3210047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3310047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3310047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3410047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3410047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3510047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3510047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3610047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3610047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3710047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3710047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3810047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3810047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3910047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3910047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3A10047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3A10047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3B10047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3B10047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3C10047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3C10047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3D10047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3D10047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3E10047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3E10047FFD00CF7107 /* PBXTextBookmark */; - 6B024A3F10047FFD00CF7107 /* PBXTextBookmark */ = 6B024A3F10047FFD00CF7107 /* PBXTextBookmark */; - 6B024A4010047FFD00CF7107 /* PBXTextBookmark */ = 6B024A4010047FFD00CF7107 /* PBXTextBookmark */; - 6B024A4110047FFD00CF7107 /* PBXTextBookmark */ = 6B024A4110047FFD00CF7107 /* PBXTextBookmark */; - 6B024A4210047FFD00CF7107 /* PBXTextBookmark */ = 6B024A4210047FFD00CF7107 /* PBXTextBookmark */; - 6B024A451004806000CF7107 /* PBXTextBookmark */ = 6B024A451004806000CF7107 /* PBXTextBookmark */; - 6B024A461004806000CF7107 /* PBXTextBookmark */ = 6B024A461004806000CF7107 /* PBXTextBookmark */; - 6B024A471004806000CF7107 /* PBXTextBookmark */ = 6B024A471004806000CF7107 /* PBXTextBookmark */; - 6B024A481004806000CF7107 /* PBXTextBookmark */ = 6B024A481004806000CF7107 /* PBXTextBookmark */; - 6B024A491004806000CF7107 /* PBXTextBookmark */ = 6B024A491004806000CF7107 /* PBXTextBookmark */; - 6B024A4A1004806000CF7107 /* PBXTextBookmark */ = 6B024A4A1004806000CF7107 /* PBXTextBookmark */; - 6B024A4B1004806000CF7107 /* PBXTextBookmark */ = 6B024A4B1004806000CF7107 /* PBXTextBookmark */; - 6B024A4C1004806000CF7107 /* PBXTextBookmark */ = 6B024A4C1004806000CF7107 /* PBXTextBookmark */; - 6B024A4D1004806000CF7107 /* PBXTextBookmark */ = 6B024A4D1004806000CF7107 /* PBXTextBookmark */; - 6B024A4E1004806000CF7107 /* PBXTextBookmark */ = 6B024A4E1004806000CF7107 /* PBXTextBookmark */; - 6B024A4F1004806000CF7107 /* PBXTextBookmark */ = 6B024A4F1004806000CF7107 /* PBXTextBookmark */; - 6B024A501004806000CF7107 /* PBXTextBookmark */ = 6B024A501004806000CF7107 /* PBXTextBookmark */; - 6B024A52100480B800CF7107 /* PBXTextBookmark */ = 6B024A52100480B800CF7107 /* PBXTextBookmark */; - 6B024A53100480B800CF7107 /* PBXTextBookmark */ = 6B024A53100480B800CF7107 /* PBXTextBookmark */; - 6B024A54100480B800CF7107 /* PBXTextBookmark */ = 6B024A54100480B800CF7107 /* PBXTextBookmark */; - 6B024A55100480B800CF7107 /* PBXTextBookmark */ = 6B024A55100480B800CF7107 /* PBXTextBookmark */; - 6B024A581004810A00CF7107 /* PBXTextBookmark */ = 6B024A581004810A00CF7107 /* PBXTextBookmark */; - 6B024A5A1004820500CF7107 /* PBXTextBookmark */ = 6B024A5A1004820500CF7107 /* PBXTextBookmark */; - 6B024A5B1004844700CF7107 /* PBXTextBookmark */ = 6B024A5B1004844700CF7107 /* PBXTextBookmark */; - 6B024A5C1004844700CF7107 /* PBXTextBookmark */ = 6B024A5C1004844700CF7107 /* PBXTextBookmark */; - 6B024A5D1004844700CF7107 /* PBXTextBookmark */ = 6B024A5D1004844700CF7107 /* PBXTextBookmark */; - 6B024A5E1004844700CF7107 /* PBXTextBookmark */ = 6B024A5E1004844700CF7107 /* PBXTextBookmark */; - 6B024A5F1004844700CF7107 /* PBXTextBookmark */ = 6B024A5F1004844700CF7107 /* PBXTextBookmark */; - 6B024A63100484C600CF7107 /* PBXTextBookmark */ = 6B024A63100484C600CF7107 /* PBXTextBookmark */; - 6B024A64100484C600CF7107 /* PBXTextBookmark */ = 6B024A64100484C600CF7107 /* PBXTextBookmark */; - 6B024A651004926300CF7107 /* PBXTextBookmark */ = 6B024A651004926300CF7107 /* PBXTextBookmark */; - 6B024A661004926300CF7107 /* PBXTextBookmark */ = 6B024A661004926300CF7107 /* PBXTextBookmark */; - 6B024A671004926300CF7107 /* PBXTextBookmark */ = 6B024A671004926300CF7107 /* PBXTextBookmark */; - 6B024A681004926300CF7107 /* PBXTextBookmark */ = 6B024A681004926300CF7107 /* PBXTextBookmark */; - 6B024A691004926300CF7107 /* PBXTextBookmark */ = 6B024A691004926300CF7107 /* PBXTextBookmark */; - 6B024A6A1004926300CF7107 /* PBXTextBookmark */ = 6B024A6A1004926300CF7107 /* PBXTextBookmark */; - 6B024A6B1004926300CF7107 /* PBXTextBookmark */ = 6B024A6B1004926300CF7107 /* PBXTextBookmark */; - 6B024A6C1004926300CF7107 /* PBXTextBookmark */ = 6B024A6C1004926300CF7107 /* PBXTextBookmark */; - 6B024A6D1004926300CF7107 /* PBXTextBookmark */ = 6B024A6D1004926300CF7107 /* PBXTextBookmark */; - 6B024A6E1004926300CF7107 /* PBXTextBookmark */ = 6B024A6E1004926300CF7107 /* PBXTextBookmark */; - 6B024A6F1004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A6F1004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A701004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A701004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A711004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A711004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A721004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A721004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A731004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A731004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A741004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A741004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A751004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A751004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A761004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A761004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A771004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A771004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A781004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A781004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A791004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A791004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A7A1004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A7A1004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A7B1004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A7B1004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A7C1004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A7C1004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A7D1004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A7D1004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A7E1004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A7E1004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A7F1004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A7F1004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A801004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A801004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A811004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A811004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A821004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A821004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A831004A2FE00CF7107 /* PBXTextBookmark */ = 6B024A831004A2FE00CF7107 /* PBXTextBookmark */; - 6B024A841004A54C00CF7107 /* PBXTextBookmark */ = 6B024A841004A54C00CF7107 /* PBXTextBookmark */; - 6B024A851004A54C00CF7107 /* PBXTextBookmark */ = 6B024A851004A54C00CF7107 /* PBXTextBookmark */; - 6B024A861004A54C00CF7107 /* PBXTextBookmark */ = 6B024A861004A54C00CF7107 /* PBXTextBookmark */; - 6B024A871004A54C00CF7107 /* PBXTextBookmark */ = 6B024A871004A54C00CF7107 /* PBXTextBookmark */; - 6B024A881004A54C00CF7107 /* PBXTextBookmark */ = 6B024A881004A54C00CF7107 /* PBXTextBookmark */; - 6B024A891004A54C00CF7107 /* PBXTextBookmark */ = 6B024A891004A54C00CF7107 /* PBXTextBookmark */; - 6B024A8A1004A54C00CF7107 /* PBXTextBookmark */ = 6B024A8A1004A54C00CF7107 /* PBXTextBookmark */; - 6B024A8B1004A54C00CF7107 /* PBXTextBookmark */ = 6B024A8B1004A54C00CF7107 /* PBXTextBookmark */; - 6B024A8C1004A54C00CF7107 /* PBXTextBookmark */ = 6B024A8C1004A54C00CF7107 /* PBXTextBookmark */; - 6B024A8D1004A54C00CF7107 /* PBXTextBookmark */ = 6B024A8D1004A54C00CF7107 /* PBXTextBookmark */; - 6B024A8E1004A54C00CF7107 /* PBXTextBookmark */ = 6B024A8E1004A54C00CF7107 /* PBXTextBookmark */; - 6B024A8F1004A54C00CF7107 /* PBXTextBookmark */ = 6B024A8F1004A54C00CF7107 /* PBXTextBookmark */; - 6B024A901004A54C00CF7107 /* PBXTextBookmark */ = 6B024A901004A54C00CF7107 /* PBXTextBookmark */; - 6B024A911004A54C00CF7107 /* PBXTextBookmark */ = 6B024A911004A54C00CF7107 /* PBXTextBookmark */; - 6B024A921004A54C00CF7107 /* PBXTextBookmark */ = 6B024A921004A54C00CF7107 /* PBXTextBookmark */; - 6B024A931004A54C00CF7107 /* PBXTextBookmark */ = 6B024A931004A54C00CF7107 /* PBXTextBookmark */; - 6B024A941004A54C00CF7107 /* PBXTextBookmark */ = 6B024A941004A54C00CF7107 /* PBXTextBookmark */; - 6B024AA91004A83400CF7107 /* PBXTextBookmark */ = 6B024AA91004A83400CF7107 /* PBXTextBookmark */; - 6B024AAA1004A83400CF7107 /* PBXTextBookmark */ = 6B024AAA1004A83400CF7107 /* PBXTextBookmark */; - 6B024AAB1004A83400CF7107 /* PBXTextBookmark */ = 6B024AAB1004A83400CF7107 /* PBXTextBookmark */; - 6B024AAC1004A83400CF7107 /* PBXTextBookmark */ = 6B024AAC1004A83400CF7107 /* PBXTextBookmark */; - 6B024AAD1004A83400CF7107 /* PBXTextBookmark */ = 6B024AAD1004A83400CF7107 /* PBXTextBookmark */; - 6B024AAE1004A83400CF7107 /* PBXTextBookmark */ = 6B024AAE1004A83400CF7107 /* PBXTextBookmark */; - 6B024AAF1004A83400CF7107 /* PBXTextBookmark */ = 6B024AAF1004A83400CF7107 /* PBXTextBookmark */; - 6B024AB01004A83400CF7107 /* PBXTextBookmark */ = 6B024AB01004A83400CF7107 /* PBXTextBookmark */; - 6B024AB11004A83400CF7107 /* PBXTextBookmark */ = 6B024AB11004A83400CF7107 /* PBXTextBookmark */; - 6B024AB21004A83400CF7107 /* PBXTextBookmark */ = 6B024AB21004A83400CF7107 /* PBXTextBookmark */; - 6B024AB41004A8E200CF7107 /* PBXTextBookmark */ = 6B024AB41004A8E200CF7107 /* PBXTextBookmark */; - 6B024AB51004A8E200CF7107 /* PBXTextBookmark */ = 6B024AB51004A8E200CF7107 /* PBXTextBookmark */; - 6B024AB71004A95900CF7107 /* PBXTextBookmark */ = 6B024AB71004A95900CF7107 /* PBXTextBookmark */; - 6B024AB81004A95900CF7107 /* PBXTextBookmark */ = 6B024AB81004A95900CF7107 /* PBXTextBookmark */; - 6B024AB91004A95900CF7107 /* PBXTextBookmark */ = 6B024AB91004A95900CF7107 /* PBXTextBookmark */; - 6B024ABA1004A95900CF7107 /* PBXTextBookmark */ = 6B024ABA1004A95900CF7107 /* PBXTextBookmark */; - 6B024ABB1004A95900CF7107 /* PBXTextBookmark */ = 6B024ABB1004A95900CF7107 /* PBXTextBookmark */; - 6B024ABC1004A95900CF7107 /* PBXTextBookmark */ = 6B024ABC1004A95900CF7107 /* PBXTextBookmark */; - 6B024ABD1004AAC100CF7107 /* PBXTextBookmark */ = 6B024ABD1004AAC100CF7107 /* PBXTextBookmark */; - 6B024AC31004AB4100CF7107 /* PBXTextBookmark */ = 6B024AC31004AB4100CF7107 /* PBXTextBookmark */; - 6B024AC71004ABA100CF7107 /* PBXTextBookmark */ = 6B024AC71004ABA100CF7107 /* PBXTextBookmark */; - 6B024AC81004ABB300CF7107 /* PBXTextBookmark */ = 6B024AC81004ABB300CF7107 /* PBXTextBookmark */; - 6B024AC91004ABB600CF7107 /* PBXTextBookmark */ = 6B024AC91004ABB600CF7107 /* PBXTextBookmark */; - 6B024ACA1004ABD100CF7107 /* PBXTextBookmark */ = 6B024ACA1004ABD100CF7107 /* PBXTextBookmark */; - 6B024ACB1004ABD100CF7107 /* PBXTextBookmark */ = 6B024ACB1004ABD100CF7107 /* PBXTextBookmark */; - 6B024ACD1004AC8D00CF7107 /* PBXTextBookmark */ = 6B024ACD1004AC8D00CF7107 /* PBXTextBookmark */; - 6B024ACE1004AC8D00CF7107 /* PBXTextBookmark */ = 6B024ACE1004AC8D00CF7107 /* PBXTextBookmark */; - 6B024ACF1004AC8D00CF7107 /* PBXTextBookmark */ = 6B024ACF1004AC8D00CF7107 /* PBXTextBookmark */; - 6B024AD01004AC8D00CF7107 /* PBXTextBookmark */ = 6B024AD01004AC8D00CF7107 /* PBXTextBookmark */; - 6B024AD11004AC8D00CF7107 /* PBXTextBookmark */ = 6B024AD11004AC8D00CF7107 /* PBXTextBookmark */; - 6B024AD21004AC8D00CF7107 /* PBXTextBookmark */ = 6B024AD21004AC8D00CF7107 /* PBXTextBookmark */; - 6B024AD51004ACF300CF7107 /* PBXTextBookmark */ = 6B024AD51004ACF300CF7107 /* PBXTextBookmark */; - 6B024AD61004AD4C00CF7107 /* PBXTextBookmark */ = 6B024AD61004AD4C00CF7107 /* PBXTextBookmark */; - 6B024AD71004AD4C00CF7107 /* PBXTextBookmark */ = 6B024AD71004AD4C00CF7107 /* PBXTextBookmark */; - 6B024AD81004AD4C00CF7107 /* PBXTextBookmark */ = 6B024AD81004AD4C00CF7107 /* PBXTextBookmark */; - 6B024AD91004AD4C00CF7107 /* PBXTextBookmark */ = 6B024AD91004AD4C00CF7107 /* PBXTextBookmark */; - 6B024ADA1004AD4C00CF7107 /* PBXTextBookmark */ = 6B024ADA1004AD4C00CF7107 /* PBXTextBookmark */; - 6B024AE41004B12B00CF7107 /* PBXTextBookmark */ = 6B024AE41004B12B00CF7107 /* PBXTextBookmark */; - 6B024AE51004B12B00CF7107 /* PBXTextBookmark */ = 6B024AE51004B12B00CF7107 /* PBXTextBookmark */; - 6B024AE61004B12B00CF7107 /* PBXTextBookmark */ = 6B024AE61004B12B00CF7107 /* PBXTextBookmark */; - 6B024AE71004B12B00CF7107 /* PBXTextBookmark */ = 6B024AE71004B12B00CF7107 /* PBXTextBookmark */; - 6B024AE81004B12B00CF7107 /* PBXTextBookmark */ = 6B024AE81004B12B00CF7107 /* PBXTextBookmark */; - 6B024AE91004B12B00CF7107 /* PBXTextBookmark */ = 6B024AE91004B12B00CF7107 /* PBXTextBookmark */; - 6B024AEA1004B12B00CF7107 /* PBXTextBookmark */ = 6B024AEA1004B12B00CF7107 /* PBXTextBookmark */; - 6B024AEB1004B12B00CF7107 /* PBXTextBookmark */ = 6B024AEB1004B12B00CF7107 /* PBXTextBookmark */; - 6B024AEC1004B12B00CF7107 /* PBXTextBookmark */ = 6B024AEC1004B12B00CF7107 /* PBXTextBookmark */; - 6B024AED1004B12B00CF7107 /* PBXTextBookmark */ = 6B024AED1004B12B00CF7107 /* PBXTextBookmark */; - 6B024AEE1004B12B00CF7107 /* PBXTextBookmark */ = 6B024AEE1004B12B00CF7107 /* PBXTextBookmark */; - 6B024AEF1004B12B00CF7107 /* PBXTextBookmark */ = 6B024AEF1004B12B00CF7107 /* PBXTextBookmark */; - 6B024AF01004B12B00CF7107 /* PBXTextBookmark */ = 6B024AF01004B12B00CF7107 /* PBXTextBookmark */; - 6B024AF11004B12B00CF7107 /* PBXTextBookmark */ = 6B024AF11004B12B00CF7107 /* PBXTextBookmark */; - 6B024AF21004B12B00CF7107 /* PBXTextBookmark */ = 6B024AF21004B12B00CF7107 /* PBXTextBookmark */; - 6B024AF31004B12B00CF7107 /* PBXTextBookmark */ = 6B024AF31004B12B00CF7107 /* PBXTextBookmark */; - 6B024AF41004B12B00CF7107 /* PBXTextBookmark */ = 6B024AF41004B12B00CF7107 /* PBXTextBookmark */; - 6B024AF51004B12B00CF7107 /* PBXTextBookmark */ = 6B024AF51004B12B00CF7107 /* PBXTextBookmark */; - 6B024AF61004B12B00CF7107 /* PBXTextBookmark */ = 6B024AF61004B12B00CF7107 /* PBXTextBookmark */; - 6B024AF71004B12B00CF7107 /* PBXTextBookmark */ = 6B024AF71004B12B00CF7107 /* PBXTextBookmark */; - 6B024AF81004B12B00CF7107 /* PBXTextBookmark */ = 6B024AF81004B12B00CF7107 /* PBXTextBookmark */; - 6B024AF91004B12B00CF7107 /* PBXTextBookmark */ = 6B024AF91004B12B00CF7107 /* PBXTextBookmark */; - 6B024AFC1004C41E00CF7107 /* PBXTextBookmark */ = 6B024AFC1004C41E00CF7107 /* PBXTextBookmark */; - 6B024AFD1004C41E00CF7107 /* PBXTextBookmark */ = 6B024AFD1004C41E00CF7107 /* PBXTextBookmark */; - 6B024AFE1004C41E00CF7107 /* PBXTextBookmark */ = 6B024AFE1004C41E00CF7107 /* PBXTextBookmark */; - 6B024AFF1004C41E00CF7107 /* PBXTextBookmark */ = 6B024AFF1004C41E00CF7107 /* PBXTextBookmark */; - 6B024B001004C41E00CF7107 /* PBXTextBookmark */ = 6B024B001004C41E00CF7107 /* PBXTextBookmark */; - 6B024B011004C41E00CF7107 /* PBXTextBookmark */ = 6B024B011004C41E00CF7107 /* PBXTextBookmark */; - 6B024B021004C41E00CF7107 /* PBXTextBookmark */ = 6B024B021004C41E00CF7107 /* PBXTextBookmark */; - 6B024B031004C48100CF7107 /* PBXTextBookmark */ = 6B024B031004C48100CF7107 /* PBXTextBookmark */; - 6B024B081004C7E200CF7107 /* PBXTextBookmark */ = 6B024B081004C7E200CF7107 /* PBXTextBookmark */; - 6B024B091004C7E200CF7107 /* PBXTextBookmark */ = 6B024B091004C7E200CF7107 /* PBXTextBookmark */; - 6B024B0A1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B0A1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B0B1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B0B1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B0C1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B0C1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B0D1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B0D1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B0E1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B0E1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B0F1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B0F1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B101004C7E200CF7107 /* PBXTextBookmark */ = 6B024B101004C7E200CF7107 /* PBXTextBookmark */; - 6B024B111004C7E200CF7107 /* PBXTextBookmark */ = 6B024B111004C7E200CF7107 /* PBXTextBookmark */; - 6B024B121004C7E200CF7107 /* PBXTextBookmark */ = 6B024B121004C7E200CF7107 /* PBXTextBookmark */; - 6B024B131004C7E200CF7107 /* PBXTextBookmark */ = 6B024B131004C7E200CF7107 /* PBXTextBookmark */; - 6B024B141004C7E200CF7107 /* PBXTextBookmark */ = 6B024B141004C7E200CF7107 /* PBXTextBookmark */; - 6B024B151004C7E200CF7107 /* PBXTextBookmark */ = 6B024B151004C7E200CF7107 /* PBXTextBookmark */; - 6B024B161004C7E200CF7107 /* PBXTextBookmark */ = 6B024B161004C7E200CF7107 /* PBXTextBookmark */; - 6B024B171004C7E200CF7107 /* PBXTextBookmark */ = 6B024B171004C7E200CF7107 /* PBXTextBookmark */; - 6B024B181004C7E200CF7107 /* PBXTextBookmark */ = 6B024B181004C7E200CF7107 /* PBXTextBookmark */; - 6B024B191004C7E200CF7107 /* PBXTextBookmark */ = 6B024B191004C7E200CF7107 /* PBXTextBookmark */; - 6B024B1A1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B1A1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B1B1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B1B1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B1C1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B1C1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B1D1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B1D1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B1E1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B1E1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B1F1004C7E200CF7107 /* PBXTextBookmark */ = 6B024B1F1004C7E200CF7107 /* PBXTextBookmark */; - 6B024B201004C7E200CF7107 /* PBXTextBookmark */ = 6B024B201004C7E200CF7107 /* PBXTextBookmark */; - 6B024B251004CC4800CF7107 /* PBXTextBookmark */ = 6B024B251004CC4800CF7107 /* PBXTextBookmark */; - 6B024B261004CC4800CF7107 /* PBXTextBookmark */ = 6B024B261004CC4800CF7107 /* PBXTextBookmark */; - 6B024B271004CC4800CF7107 /* PBXTextBookmark */ = 6B024B271004CC4800CF7107 /* PBXTextBookmark */; - 6B024B281004CC4800CF7107 /* PBXTextBookmark */ = 6B024B281004CC4800CF7107 /* PBXTextBookmark */; - 6B024B291004CC4800CF7107 /* PBXTextBookmark */ = 6B024B291004CC4800CF7107 /* PBXTextBookmark */; - 6B024B2A1004CC4800CF7107 /* PBXTextBookmark */ = 6B024B2A1004CC4800CF7107 /* PBXTextBookmark */; - 6B024B2B1004CC4800CF7107 /* PBXTextBookmark */ = 6B024B2B1004CC4800CF7107 /* PBXTextBookmark */; - 6B024B2C1004CC4800CF7107 /* PBXTextBookmark */ = 6B024B2C1004CC4800CF7107 /* PBXTextBookmark */; - 6B024B2D1004CC4800CF7107 /* PBXTextBookmark */ = 6B024B2D1004CC4800CF7107 /* PBXTextBookmark */; - 6B024B301004CC8700CF7107 /* PBXTextBookmark */ = 6B024B301004CC8700CF7107 /* PBXTextBookmark */; - 6B024B311004CC8700CF7107 /* PBXTextBookmark */ = 6B024B311004CC8700CF7107 /* PBXTextBookmark */; - 6B024B321004CC8700CF7107 /* PBXTextBookmark */ = 6B024B321004CC8700CF7107 /* PBXTextBookmark */; - 6B024B331004CC8700CF7107 /* PBXTextBookmark */ = 6B024B331004CC8700CF7107 /* PBXTextBookmark */; - 6B024B341004CC8700CF7107 /* PBXTextBookmark */ = 6B024B341004CC8700CF7107 /* PBXTextBookmark */; - 6B024B351004CC8700CF7107 /* PBXTextBookmark */ = 6B024B351004CC8700CF7107 /* PBXTextBookmark */; - 6B024B381004CCCC00CF7107 /* PBXTextBookmark */ = 6B024B381004CCCC00CF7107 /* PBXTextBookmark */; - 6B024B391004CCCC00CF7107 /* PBXTextBookmark */ = 6B024B391004CCCC00CF7107 /* PBXTextBookmark */; - 6B024B3A1004CCCC00CF7107 /* PBXTextBookmark */ = 6B024B3A1004CCCC00CF7107 /* PBXTextBookmark */; - 6B024B3B1004CCCC00CF7107 /* PBXTextBookmark */ = 6B024B3B1004CCCC00CF7107 /* PBXTextBookmark */; - 6B024B3C1004CCCC00CF7107 /* PBXTextBookmark */ = 6B024B3C1004CCCC00CF7107 /* PBXTextBookmark */; - 6B024B3D1004CCCC00CF7107 /* PBXTextBookmark */ = 6B024B3D1004CCCC00CF7107 /* PBXTextBookmark */; - 6B024B3F1004CDDB00CF7107 /* PBXTextBookmark */ = 6B024B3F1004CDDB00CF7107 /* PBXTextBookmark */; - 6B024B481004D22F00CF7107 /* PBXTextBookmark */ = 6B024B481004D22F00CF7107 /* PBXTextBookmark */; - 6B024B491004D22F00CF7107 /* PBXTextBookmark */ = 6B024B491004D22F00CF7107 /* PBXTextBookmark */; - 6B024B4A1004D22F00CF7107 /* PBXTextBookmark */ = 6B024B4A1004D22F00CF7107 /* PBXTextBookmark */; - 6B024B4B1004D22F00CF7107 /* PBXTextBookmark */ = 6B024B4B1004D22F00CF7107 /* PBXTextBookmark */; - 6B024B4C1004D22F00CF7107 /* PBXTextBookmark */ = 6B024B4C1004D22F00CF7107 /* PBXTextBookmark */; - 6B024B4D1004D22F00CF7107 /* PBXTextBookmark */ = 6B024B4D1004D22F00CF7107 /* PBXTextBookmark */; - 6B024B4E1004D22F00CF7107 /* PBXTextBookmark */ = 6B024B4E1004D22F00CF7107 /* PBXTextBookmark */; - 6B024B4F1004D22F00CF7107 /* PBXTextBookmark */ = 6B024B4F1004D22F00CF7107 /* PBXTextBookmark */; - 6B024B501004D22F00CF7107 /* PBXTextBookmark */ = 6B024B501004D22F00CF7107 /* PBXTextBookmark */; - 6B024B511004D22F00CF7107 /* PBXTextBookmark */ = 6B024B511004D22F00CF7107 /* PBXTextBookmark */; - 6B024B521004D22F00CF7107 /* PBXTextBookmark */ = 6B024B521004D22F00CF7107 /* PBXTextBookmark */; - 6B024B531004D22F00CF7107 /* PBXTextBookmark */ = 6B024B531004D22F00CF7107 /* PBXTextBookmark */; - 6B024B561005D2CB00CF7107 /* PBXTextBookmark */ = 6B024B561005D2CB00CF7107 /* PBXTextBookmark */; - 6B024B571005D2CB00CF7107 /* PBXTextBookmark */ = 6B024B571005D2CB00CF7107 /* PBXTextBookmark */; - 6B024B581005D2CB00CF7107 /* PBXTextBookmark */ = 6B024B581005D2CB00CF7107 /* PBXTextBookmark */; - 6B024B591005D2CB00CF7107 /* PBXTextBookmark */ = 6B024B591005D2CB00CF7107 /* PBXTextBookmark */; - 6B024B5A1005D2CB00CF7107 /* PBXTextBookmark */ = 6B024B5A1005D2CB00CF7107 /* PBXTextBookmark */; - 6B024B5B1005D2CB00CF7107 /* PBXTextBookmark */ = 6B024B5B1005D2CB00CF7107 /* PBXTextBookmark */; - 6B024B5C1005D2CB00CF7107 /* PBXTextBookmark */ = 6B024B5C1005D2CB00CF7107 /* PBXTextBookmark */; - 6B024B5D1005D2CB00CF7107 /* PBXTextBookmark */ = 6B024B5D1005D2CB00CF7107 /* PBXTextBookmark */; - 6B024B5E1005D2CB00CF7107 /* PBXTextBookmark */ = 6B024B5E1005D2CB00CF7107 /* PBXTextBookmark */; - 6B024B5F1005D2CB00CF7107 /* PBXTextBookmark */ = 6B024B5F1005D2CB00CF7107 /* PBXTextBookmark */; - 6B024B601005D2CB00CF7107 /* PBXTextBookmark */ = 6B024B601005D2CB00CF7107 /* PBXTextBookmark */; - 6B024B661005D68E00CF7107 /* PBXTextBookmark */ = 6B024B661005D68E00CF7107 /* PBXTextBookmark */; - 6B024B671005D68E00CF7107 /* PBXTextBookmark */ = 6B024B671005D68E00CF7107 /* PBXTextBookmark */; - 6B024B681005D68E00CF7107 /* PBXTextBookmark */ = 6B024B681005D68E00CF7107 /* PBXTextBookmark */; - 6B024B691005D68E00CF7107 /* PBXTextBookmark */ = 6B024B691005D68E00CF7107 /* PBXTextBookmark */; - 6B024B6A1005D68E00CF7107 /* PBXTextBookmark */ = 6B024B6A1005D68E00CF7107 /* PBXTextBookmark */; - 6B024B6B1005D68E00CF7107 /* PBXTextBookmark */ = 6B024B6B1005D68E00CF7107 /* PBXTextBookmark */; - 6B024B6C1005D68E00CF7107 /* PBXTextBookmark */ = 6B024B6C1005D68E00CF7107 /* PBXTextBookmark */; - 6B024B6D1005D68E00CF7107 /* PBXTextBookmark */ = 6B024B6D1005D68E00CF7107 /* PBXTextBookmark */; - 6B024B6E1005D68E00CF7107 /* PBXTextBookmark */ = 6B024B6E1005D68E00CF7107 /* PBXTextBookmark */; - 6B024B6F1005D68E00CF7107 /* PBXTextBookmark */ = 6B024B6F1005D68E00CF7107 /* PBXTextBookmark */; - 6B024B701005D68E00CF7107 /* PBXTextBookmark */ = 6B024B701005D68E00CF7107 /* PBXTextBookmark */; - 6B024B711005D68E00CF7107 /* PBXTextBookmark */ = 6B024B711005D68E00CF7107 /* PBXTextBookmark */; - 6B024B721005D68E00CF7107 /* PBXTextBookmark */ = 6B024B721005D68E00CF7107 /* PBXTextBookmark */; - 6B024B731005D68E00CF7107 /* PBXTextBookmark */ = 6B024B731005D68E00CF7107 /* PBXTextBookmark */; - 6B024B741005D68E00CF7107 /* PBXTextBookmark */ = 6B024B741005D68E00CF7107 /* PBXTextBookmark */; - 6B024B751005D68E00CF7107 /* PBXTextBookmark */ = 6B024B751005D68E00CF7107 /* PBXTextBookmark */; - 6B024B761005D68E00CF7107 /* PBXTextBookmark */ = 6B024B761005D68E00CF7107 /* PBXTextBookmark */; - 6B024B781005D6EC00CF7107 /* PBXTextBookmark */ = 6B024B781005D6EC00CF7107 /* PBXTextBookmark */; - 6B024B791005D6EC00CF7107 /* PBXTextBookmark */ = 6B024B791005D6EC00CF7107 /* PBXTextBookmark */; - 6B024B7A1005D6EC00CF7107 /* PBXTextBookmark */ = 6B024B7A1005D6EC00CF7107 /* PBXTextBookmark */; - 6B024B7B1005D6EC00CF7107 /* PBXTextBookmark */ = 6B024B7B1005D6EC00CF7107 /* PBXTextBookmark */; - 6B024B7C1005D6EC00CF7107 /* PBXTextBookmark */ = 6B024B7C1005D6EC00CF7107 /* PBXTextBookmark */; - 6B024B7D1005D6EC00CF7107 /* PBXTextBookmark */ = 6B024B7D1005D6EC00CF7107 /* PBXTextBookmark */; - 6B024B801005D76000CF7107 /* PBXTextBookmark */ = 6B024B801005D76000CF7107 /* PBXTextBookmark */; - 6B024B811005D76000CF7107 /* PBXTextBookmark */ = 6B024B811005D76000CF7107 /* PBXTextBookmark */; - 6B024B821005D76000CF7107 /* PBXTextBookmark */ = 6B024B821005D76000CF7107 /* PBXTextBookmark */; - 6B024B831005D76000CF7107 /* PBXTextBookmark */ = 6B024B831005D76000CF7107 /* PBXTextBookmark */; - 6B024B841005D76000CF7107 /* PBXTextBookmark */ = 6B024B841005D76000CF7107 /* PBXTextBookmark */; - 6B024B851005D76000CF7107 /* PBXTextBookmark */ = 6B024B851005D76000CF7107 /* PBXTextBookmark */; - 6B024B861005D76000CF7107 /* PBXTextBookmark */ = 6B024B861005D76000CF7107 /* PBXTextBookmark */; - 6B024B8D1005D98C00CF7107 /* PBXTextBookmark */ = 6B024B8D1005D98C00CF7107 /* PBXTextBookmark */; - 6B024B8E1005D98C00CF7107 /* PBXTextBookmark */ = 6B024B8E1005D98C00CF7107 /* PBXTextBookmark */; - 6B024B8F1005D98C00CF7107 /* PBXTextBookmark */ = 6B024B8F1005D98C00CF7107 /* PBXTextBookmark */; - 6B024B901005D98C00CF7107 /* PBXTextBookmark */ = 6B024B901005D98C00CF7107 /* PBXTextBookmark */; - 6B024B911005D98C00CF7107 /* PBXTextBookmark */ = 6B024B911005D98C00CF7107 /* PBXTextBookmark */; - 6B024B921005D98C00CF7107 /* PBXTextBookmark */ = 6B024B921005D98C00CF7107 /* PBXTextBookmark */; - 6B024B931005D98C00CF7107 /* PBXTextBookmark */ = 6B024B931005D98C00CF7107 /* PBXTextBookmark */; - 6B024B941005D98C00CF7107 /* PBXTextBookmark */ = 6B024B941005D98C00CF7107 /* PBXTextBookmark */; - 6B024B951005D98C00CF7107 /* PBXTextBookmark */ = 6B024B951005D98C00CF7107 /* PBXTextBookmark */; - 6B024B961005D98C00CF7107 /* PBXTextBookmark */ = 6B024B961005D98C00CF7107 /* PBXTextBookmark */; - 6B024B971005D98C00CF7107 /* PBXTextBookmark */ = 6B024B971005D98C00CF7107 /* PBXTextBookmark */; - 6B024B981005D98C00CF7107 /* PBXTextBookmark */ = 6B024B981005D98C00CF7107 /* PBXTextBookmark */; - 6B024B991005D98C00CF7107 /* PBXTextBookmark */ = 6B024B991005D98C00CF7107 /* PBXTextBookmark */; - 6B024B9A1005D98C00CF7107 /* PBXTextBookmark */ = 6B024B9A1005D98C00CF7107 /* PBXTextBookmark */; - 6B024B9B1005D98C00CF7107 /* PBXTextBookmark */ = 6B024B9B1005D98C00CF7107 /* PBXTextBookmark */; - 6B024B9C1005D98C00CF7107 /* PBXTextBookmark */ = 6B024B9C1005D98C00CF7107 /* PBXTextBookmark */; - 6B024BA31005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BA31005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BA41005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BA41005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BA51005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BA51005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BA61005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BA61005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BA71005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BA71005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BA81005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BA81005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BA91005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BA91005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BAA1005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BAA1005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BAB1005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BAB1005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BAC1005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BAC1005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BAD1005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BAD1005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BAE1005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BAE1005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BAF1005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BAF1005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BB01005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BB01005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BB11005DC3A00CF7107 /* PBXTextBookmark */ = 6B024BB11005DC3A00CF7107 /* PBXTextBookmark */; - 6B024BB61005DF5700CF7107 /* PBXTextBookmark */ = 6B024BB61005DF5700CF7107 /* PBXTextBookmark */; - 6B024BB71005DF5700CF7107 /* PBXTextBookmark */ = 6B024BB71005DF5700CF7107 /* PBXTextBookmark */; - 6B024BB81005DF5700CF7107 /* PBXTextBookmark */ = 6B024BB81005DF5700CF7107 /* PBXTextBookmark */; - 6B024BB91005DF5700CF7107 /* PBXTextBookmark */ = 6B024BB91005DF5700CF7107 /* PBXTextBookmark */; - 6B024BBA1005DF5700CF7107 /* PBXTextBookmark */ = 6B024BBA1005DF5700CF7107 /* PBXTextBookmark */; - 6B024BBB1005DF5700CF7107 /* PBXTextBookmark */ = 6B024BBB1005DF5700CF7107 /* PBXTextBookmark */; - 6B024BBC1005DF5700CF7107 /* PBXTextBookmark */ = 6B024BBC1005DF5700CF7107 /* PBXTextBookmark */; - 6B024BBD1005DF5700CF7107 /* PBXTextBookmark */ = 6B024BBD1005DF5700CF7107 /* PBXTextBookmark */; - 6B024BBE1005DF5700CF7107 /* PBXTextBookmark */ = 6B024BBE1005DF5700CF7107 /* PBXTextBookmark */; - 6B024BBF1005DF5700CF7107 /* PBXTextBookmark */ = 6B024BBF1005DF5700CF7107 /* PBXTextBookmark */; - 6B024BC01005DF5700CF7107 /* PBXTextBookmark */ = 6B024BC01005DF5700CF7107 /* PBXTextBookmark */; - 6B024BC11005DF5700CF7107 /* PBXTextBookmark */ = 6B024BC11005DF5700CF7107 /* PBXTextBookmark */; - 6B024BC21005DF5700CF7107 /* PBXTextBookmark */ = 6B024BC21005DF5700CF7107 /* PBXTextBookmark */; - 6B024BC31005DF5700CF7107 /* PBXTextBookmark */ = 6B024BC31005DF5700CF7107 /* PBXTextBookmark */; - 6B024BC41005DF5700CF7107 /* PBXTextBookmark */ = 6B024BC41005DF5700CF7107 /* PBXTextBookmark */; - 6B024BC91005DFAB00CF7107 /* PBXTextBookmark */ = 6B024BC91005DFAB00CF7107 /* PBXTextBookmark */; - 6B024BCA1005DFAB00CF7107 /* PBXTextBookmark */ = 6B024BCA1005DFAB00CF7107 /* PBXTextBookmark */; - 6B024BCB1005DFAB00CF7107 /* PBXTextBookmark */ = 6B024BCB1005DFAB00CF7107 /* PBXTextBookmark */; - 6B024BCC1005DFAB00CF7107 /* PBXTextBookmark */ = 6B024BCC1005DFAB00CF7107 /* PBXTextBookmark */; - 6B024BCD1005DFAB00CF7107 /* PBXTextBookmark */ = 6B024BCD1005DFAB00CF7107 /* PBXTextBookmark */; - 6B024BCE1005DFAB00CF7107 /* PBXTextBookmark */ = 6B024BCE1005DFAB00CF7107 /* PBXTextBookmark */; - 6B024BCF1005DFAB00CF7107 /* PBXTextBookmark */ = 6B024BCF1005DFAB00CF7107 /* PBXTextBookmark */; - 6B024BD01005DFAB00CF7107 /* PBXTextBookmark */ = 6B024BD01005DFAB00CF7107 /* PBXTextBookmark */; - 6B024BD31006059C00CF7107 /* PBXTextBookmark */ = 6B024BD31006059C00CF7107 /* PBXTextBookmark */; - 6B024BD41006059C00CF7107 /* PBXTextBookmark */ = 6B024BD41006059C00CF7107 /* PBXTextBookmark */; - 6B024BD51006059C00CF7107 /* PBXTextBookmark */ = 6B024BD51006059C00CF7107 /* PBXTextBookmark */; - 6B024BD61006059C00CF7107 /* PBXTextBookmark */ = 6B024BD61006059C00CF7107 /* PBXTextBookmark */; - 6B024BD71006059C00CF7107 /* PBXTextBookmark */ = 6B024BD71006059C00CF7107 /* PBXTextBookmark */; - 6B024BD81006059C00CF7107 /* PBXTextBookmark */ = 6B024BD81006059C00CF7107 /* PBXTextBookmark */; - 6B024BD91006059C00CF7107 /* PBXTextBookmark */ = 6B024BD91006059C00CF7107 /* PBXTextBookmark */; - 6B024BDA1006059C00CF7107 /* PBXTextBookmark */ = 6B024BDA1006059C00CF7107 /* PBXTextBookmark */; - 6B024BDB1006059C00CF7107 /* PBXTextBookmark */ = 6B024BDB1006059C00CF7107 /* PBXTextBookmark */; - 6B024BDC1006059C00CF7107 /* PBXTextBookmark */ = 6B024BDC1006059C00CF7107 /* PBXTextBookmark */; - 6B024BDD1006059C00CF7107 /* PBXTextBookmark */ = 6B024BDD1006059C00CF7107 /* PBXTextBookmark */; - 6B024BDE1006059C00CF7107 /* PBXTextBookmark */ = 6B024BDE1006059C00CF7107 /* PBXTextBookmark */; - 6B024BDF1006059C00CF7107 /* PBXTextBookmark */ = 6B024BDF1006059C00CF7107 /* PBXTextBookmark */; - 6B024BE01006059C00CF7107 /* PBXTextBookmark */ = 6B024BE01006059C00CF7107 /* PBXTextBookmark */; - 6B024BE11006059C00CF7107 /* PBXTextBookmark */ = 6B024BE11006059C00CF7107 /* PBXTextBookmark */; - 6B024BE8100605CB00CF7107 /* PBXTextBookmark */ = 6B024BE8100605CB00CF7107 /* PBXTextBookmark */; - 6B024BEB1006064C00CF7107 /* PBXTextBookmark */ = 6B024BEB1006064C00CF7107 /* PBXTextBookmark */; - 6B024BEC1006064C00CF7107 /* PBXTextBookmark */ = 6B024BEC1006064C00CF7107 /* PBXTextBookmark */; - 6B024BED1006064C00CF7107 /* PBXTextBookmark */ = 6B024BED1006064C00CF7107 /* PBXTextBookmark */; - 6B024BEE1006064C00CF7107 /* PBXTextBookmark */ = 6B024BEE1006064C00CF7107 /* PBXTextBookmark */; - 6B024BEF1006064C00CF7107 /* PBXTextBookmark */ = 6B024BEF1006064C00CF7107 /* PBXTextBookmark */; - 6B024BF0100606CD00CF7107 /* PBXTextBookmark */ = 6B024BF0100606CD00CF7107 /* PBXTextBookmark */; - 6B024BF1100606CF00CF7107 /* PBXTextBookmark */ = 6B024BF1100606CF00CF7107 /* PBXTextBookmark */; - 6B024BF31006073700CF7107 /* PBXTextBookmark */ = 6B024BF31006073700CF7107 /* PBXTextBookmark */; - 6B024BF41006073700CF7107 /* PBXTextBookmark */ = 6B024BF41006073700CF7107 /* PBXTextBookmark */; - 6B024BF61006079300CF7107 /* PBXTextBookmark */ = 6B024BF61006079300CF7107 /* PBXTextBookmark */; - 6B024C001006098300CF7107 /* PBXTextBookmark */ = 6B024C001006098300CF7107 /* PBXTextBookmark */; - 6B024C011006098300CF7107 /* PBXTextBookmark */ = 6B024C011006098300CF7107 /* PBXTextBookmark */; - 6B024C021006098300CF7107 /* PBXBookmark */ = 6B024C021006098300CF7107 /* PBXBookmark */; - 6B024C031006098300CF7107 /* PBXTextBookmark */ = 6B024C031006098300CF7107 /* PBXTextBookmark */; - 6B024C041006098300CF7107 /* PBXTextBookmark */ = 6B024C041006098300CF7107 /* PBXTextBookmark */; - 6B024C051006098300CF7107 /* PlistBookmark */ = 6B024C051006098300CF7107 /* PlistBookmark */; + 6B0249051001EABD00CF7107 = 6B0249051001EABD00CF7107 /* PBXTextBookmark */; + 6B02497E1003751300CF7107 = 6B02497E1003751300CF7107 /* PBXTextBookmark */; + 6B02498D1003751300CF7107 = 6B02498D1003751300CF7107 /* PBXTextBookmark */; + 6B0249BE1003793900CF7107 = 6B0249BE1003793900CF7107 /* PBXTextBookmark */; + 6B024A721004A2FE00CF7107 = 6B024A721004A2FE00CF7107 /* PBXTextBookmark */; + 6B024B1B1004C7E200CF7107 = 6B024B1B1004C7E200CF7107 /* PBXTextBookmark */; + 6B024BBB1005DF5700CF7107 = 6B024BBB1005DF5700CF7107 /* PBXTextBookmark */; + 6B024BCF1005DFAB00CF7107 = 6B024BCF1005DFAB00CF7107 /* PBXTextBookmark */; + 6B024BD31006059C00CF7107 = 6B024BD31006059C00CF7107 /* PBXTextBookmark */; + 6B024C011006098300CF7107 = 6B024C011006098300CF7107 /* PBXTextBookmark */; + 6B024C041006098300CF7107 = 6B024C041006098300CF7107 /* PBXTextBookmark */; + 6B024C1110060C7600CF7107 = 6B024C1110060C7600CF7107 /* PlistBookmark */; + 6B024C1310060C7600CF7107 = 6B024C1310060C7600CF7107 /* PlistBookmark */; 6B092B1A0FFC98FF0088D3A5 = 6B092B1A0FFC98FF0088D3A5 /* PBXTextBookmark */; - 6B092B1C0FFC98FF0088D3A5 = 6B092B1C0FFC98FF0088D3A5 /* PBXTextBookmark */; - 6B092B1E0FFC98FF0088D3A5 = 6B092B1E0FFC98FF0088D3A5 /* PBXTextBookmark */; - 6B092B200FFC98FF0088D3A5 = 6B092B200FFC98FF0088D3A5 /* PBXTextBookmark */; - 6B092B220FFC98FF0088D3A5 = 6B092B220FFC98FF0088D3A5 /* PBXTextBookmark */; - 6B092B240FFC98FF0088D3A5 = 6B092B240FFC98FF0088D3A5 /* PBXTextBookmark */; - 6B092B260FFC98FF0088D3A5 = 6B092B260FFC98FF0088D3A5 /* PBXTextBookmark */; - 6B092B280FFC98FF0088D3A5 = 6B092B280FFC98FF0088D3A5 /* PBXTextBookmark */; 6B092B4F0FFCA0A20088D3A5 = 6B092B4F0FFCA0A20088D3A5 /* PBXTextBookmark */; 6B092B500FFCA0A20088D3A5 = 6B092B500FFCA0A20088D3A5 /* PBXTextBookmark */; 6B092B530FFCA0A20088D3A5 = 6B092B530FFCA0A20088D3A5 /* PBXTextBookmark */; - 6B092B6E0FFCA48E0088D3A5 = 6B092B6E0FFCA48E0088D3A5 /* PBXTextBookmark */; - 6B092B6F0FFCA48E0088D3A5 = 6B092B6F0FFCA48E0088D3A5 /* PBXTextBookmark */; - 6B092B730FFCA5BC0088D3A5 = 6B092B730FFCA5BC0088D3A5 /* PBXTextBookmark */; - 6B092B750FFCA5BC0088D3A5 = 6B092B750FFCA5BC0088D3A5 /* PBXTextBookmark */; - 6B092B760FFCA5BC0088D3A5 = 6B092B760FFCA5BC0088D3A5 /* PBXTextBookmark */; - 6B092B850FFCAA170088D3A5 = 6B092B850FFCAA170088D3A5 /* PBXTextBookmark */; - 6B092B870FFCAA170088D3A5 = 6B092B870FFCAA170088D3A5 /* PBXTextBookmark */; - 6B092B890FFCAA170088D3A5 = 6B092B890FFCAA170088D3A5 /* PBXTextBookmark */; - 6B092BAB0FFCEC1A0088D3A5 = 6B092BAB0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BAC0FFCEC1A0088D3A5 = 6B092BAC0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BAE0FFCEC1A0088D3A5 = 6B092BAE0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BB50FFCEC1A0088D3A5 = 6B092BB50FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BB70FFCEC1A0088D3A5 = 6B092BB70FFCEC1A0088D3A5 /* PBXTextBookmark */; 6B092BBC0FFCEC1A0088D3A5 = 6B092BBC0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BBD0FFCEC1A0088D3A5 = 6B092BBD0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BBE0FFCEC1A0088D3A5 = 6B092BBE0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BBF0FFCEC1A0088D3A5 = 6B092BBF0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BC00FFCEC1A0088D3A5 = 6B092BC00FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BC20FFCEC1A0088D3A5 = 6B092BC20FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BC50FFCEC1A0088D3A5 = 6B092BC50FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BC60FFCEC1A0088D3A5 = 6B092BC60FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BC70FFCEC1A0088D3A5 = 6B092BC70FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BC90FFCEC1A0088D3A5 = 6B092BC90FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BCB0FFCEC1A0088D3A5 = 6B092BCB0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BD00FFCEC1A0088D3A5 = 6B092BD00FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BD30FFCEC1A0088D3A5 = 6B092BD30FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BD70FFCEC1A0088D3A5 = 6B092BD70FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BD90FFCEC1A0088D3A5 = 6B092BD90FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BDB0FFCEC1A0088D3A5 = 6B092BDB0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BE30FFCEC1A0088D3A5 = 6B092BE30FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BE50FFCEC1A0088D3A5 = 6B092BE50FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BE60FFCEC1A0088D3A5 = 6B092BE60FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BE90FFCEC1A0088D3A5 = 6B092BE90FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BEB0FFCEC1A0088D3A5 = 6B092BEB0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BED0FFCEC1A0088D3A5 = 6B092BED0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BF00FFCEC1A0088D3A5 = 6B092BF00FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BF20FFCEC1A0088D3A5 = 6B092BF20FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BF40FFCEC1A0088D3A5 = 6B092BF40FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BF60FFCEC1A0088D3A5 = 6B092BF60FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BF80FFCEC1A0088D3A5 = 6B092BF80FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BFA0FFCEC1A0088D3A5 = 6B092BFA0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BFC0FFCEC1A0088D3A5 = 6B092BFC0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092BFE0FFCEC1A0088D3A5 = 6B092BFE0FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092C000FFCEC1A0088D3A5 = 6B092C000FFCEC1A0088D3A5 /* PBXTextBookmark */; - 6B092C0A0FFCF51D0088D3A5 = 6B092C0A0FFCF51D0088D3A5 /* PBXTextBookmark */; - 6B092C100FFCF5630088D3A5 = 6B092C100FFCF5630088D3A5 /* PBXTextBookmark */; - 6B092C130FFCF5630088D3A5 = 6B092C130FFCF5630088D3A5 /* PBXTextBookmark */; - 6B092C280FFCF7DD0088D3A5 = 6B092C280FFCF7DD0088D3A5 /* PBXTextBookmark */; - 6B092C2E0FFCF7DD0088D3A5 = 6B092C2E0FFCF7DD0088D3A5 /* PBXTextBookmark */; - 6B092C2F0FFCF7DD0088D3A5 = 6B092C2F0FFCF7DD0088D3A5 /* PBXTextBookmark */; - 6B092C310FFCF7DD0088D3A5 = 6B092C310FFCF7DD0088D3A5 /* PBXTextBookmark */; - 6B092C330FFCF7DD0088D3A5 = 6B092C330FFCF7DD0088D3A5 /* PBXTextBookmark */; - 6B092C4A0FFCFA2A0088D3A5 = 6B092C4A0FFCFA2A0088D3A5 /* PBXTextBookmark */; - 6B092C4F0FFCFA2A0088D3A5 = 6B092C4F0FFCFA2A0088D3A5 /* PBXTextBookmark */; - 6B092C500FFCFA2A0088D3A5 = 6B092C500FFCFA2A0088D3A5 /* PBXTextBookmark */; - 6B092C520FFCFA2A0088D3A5 = 6B092C520FFCFA2A0088D3A5 /* PBXTextBookmark */; 6B092C5F0FFCFF790088D3A5 = 6B092C5F0FFCFF790088D3A5 /* PBXTextBookmark */; - 6B092C610FFCFF790088D3A5 = 6B092C610FFCFF790088D3A5 /* PBXTextBookmark */; - 6B092C620FFCFF790088D3A5 = 6B092C620FFCFF790088D3A5 /* PBXTextBookmark */; - 6B092C6B0FFE32600088D3A5 = 6B092C6B0FFE32600088D3A5 /* PBXTextBookmark */; - 6B092C6D0FFE32600088D3A5 = 6B092C6D0FFE32600088D3A5 /* PBXTextBookmark */; - 6B092C730FFE36F70088D3A5 = 6B092C730FFE36F70088D3A5 /* PBXTextBookmark */; - 6B092C830FFE397F0088D3A5 = 6B092C830FFE397F0088D3A5 /* PBXTextBookmark */; - 6B092C850FFE397F0088D3A5 = 6B092C850FFE397F0088D3A5 /* PBXTextBookmark */; - 6B092C8D0FFE39DC0088D3A5 = 6B092C8D0FFE39DC0088D3A5 /* PBXTextBookmark */; - 6B092CA30FFE3D1B0088D3A5 = 6B092CA30FFE3D1B0088D3A5 /* PBXTextBookmark */; - 6B092CAD0FFE3D520088D3A5 = 6B092CAD0FFE3D520088D3A5 /* PBXTextBookmark */; - 6B092CB30FFE3F010088D3A5 = 6B092CB30FFE3F010088D3A5 /* PBXTextBookmark */; - 6B092CB50FFE3F010088D3A5 = 6B092CB50FFE3F010088D3A5 /* PBXTextBookmark */; - 6B092CB60FFE3F010088D3A5 = 6B092CB60FFE3F010088D3A5 /* PBXTextBookmark */; 6B092CC10FFE40160088D3A5 = 6B092CC10FFE40160088D3A5 /* PBXTextBookmark */; - 6B092CC20FFE40160088D3A5 = 6B092CC20FFE40160088D3A5 /* PBXTextBookmark */; - 6B092CC30FFE40160088D3A5 = 6B092CC30FFE40160088D3A5 /* PBXTextBookmark */; - 6B092CC40FFE40160088D3A5 = 6B092CC40FFE40160088D3A5 /* PBXTextBookmark */; - 6B092CC50FFE40160088D3A5 = 6B092CC50FFE40160088D3A5 /* PBXTextBookmark */; - 6B092CC60FFE40160088D3A5 = 6B092CC60FFE40160088D3A5 /* PBXTextBookmark */; - 6B092CC70FFE40160088D3A5 = 6B092CC70FFE40160088D3A5 /* PBXTextBookmark */; - 6B092CC80FFE40160088D3A5 = 6B092CC80FFE40160088D3A5 /* PBXTextBookmark */; - 6B092CCA0FFE8E380088D3A5 = 6B092CCA0FFE8E380088D3A5 /* PBXTextBookmark */; + 6B1186211006945C0018F96F = 6B1186211006945C0018F96F /* PBXBookmark */; + 6B1186221006945C0018F96F = 6B1186221006945C0018F96F /* PBXTextBookmark */; + 6B1186231006945C0018F96F = 6B1186231006945C0018F96F /* PBXTextBookmark */; + 6B1186241006945C0018F96F = 6B1186241006945C0018F96F /* PBXTextBookmark */; + 6B1186251006945C0018F96F = 6B1186251006945C0018F96F /* PBXTextBookmark */; + 6B11862D1006945C0018F96F = 6B11862D1006945C0018F96F /* PBXBookmark */; + 6B1186301006945C0018F96F = 6B1186301006945C0018F96F /* PBXTextBookmark */; + 6B1186311006945C0018F96F = 6B1186311006945C0018F96F /* PBXTextBookmark */; + 6B1186401006945C0018F96F = 6B1186401006945C0018F96F /* PBXTextBookmark */; + 6B1186411006945C0018F96F = 6B1186411006945C0018F96F /* PBXTextBookmark */; + 6B1186581006945C0018F96F = 6B1186581006945C0018F96F /* PBXTextBookmark */; + 6B1186591006945C0018F96F = 6B1186591006945C0018F96F /* PBXTextBookmark */; + 6B118672100694C40018F96F = 6B118672100694C40018F96F /* PBXTextBookmark */; + 6B1186A1100698B70018F96F = 6B1186A1100698B70018F96F /* PBXTextBookmark */; + 6B1186A4100698B70018F96F = 6B1186A4100698B70018F96F /* PBXTextBookmark */; + 6B1186A8100698B70018F96F = 6B1186A8100698B70018F96F /* PBXTextBookmark */; + 6B1186A9100698B70018F96F = 6B1186A9100698B70018F96F /* PBXTextBookmark */; + 6B1186AA100698B70018F96F = 6B1186AA100698B70018F96F /* PBXTextBookmark */; + 6B1186CC100699A00018F96F = 6B1186CC100699A00018F96F /* PBXTextBookmark */; + 6B1186CD100699A00018F96F = 6B1186CD100699A00018F96F /* PBXTextBookmark */; + 6B1186CE100699A00018F96F = 6B1186CE100699A00018F96F /* PBXTextBookmark */; + 6B1186CF100699A00018F96F = 6B1186CF100699A00018F96F /* PBXTextBookmark */; + 6B1186D0100699A00018F96F = 6B1186D0100699A00018F96F /* PBXTextBookmark */; + 6B1186D1100699A00018F96F = 6B1186D1100699A00018F96F /* PBXTextBookmark */; + 6B1186D2100699A00018F96F = 6B1186D2100699A00018F96F /* PBXTextBookmark */; + 6B1186D3100699A00018F96F = 6B1186D3100699A00018F96F /* PBXTextBookmark */; + 6B1186E610069E200018F96F = 6B1186E610069E200018F96F /* PBXTextBookmark */; 6B1E02680F924A8500CC0038 = 6B1E02680F924A8500CC0038 /* PBXTextBookmark */; - 6B1E02750F924A8500CC0038 = 6B1E02750F924A8500CC0038 /* PBXTextBookmark */; - 6B1E028F0F924D5A00CC0038 = 6B1E028F0F924D5A00CC0038 /* PBXTextBookmark */; 6B1E029B0F924D8B00CC0038 = 6B1E029B0F924D8B00CC0038 /* PBXTextBookmark */; 6B1E02FC0F92563500CC0038 = 6B1E02FC0F92563500CC0038 /* PBXTextBookmark */; 6B1E032E0F925D9100CC0038 = 6B1E032E0F925D9100CC0038 /* PBXTextBookmark */; @@ -873,43 +174,401 @@ 6B25B54F0FFA5899004F1BC4 = 6B25B54F0FFA5899004F1BC4 /* PBXTextBookmark */; 6B25B56D0FFA5899004F1BC4 = 6B25B56D0FFA5899004F1BC4 /* PBXTextBookmark */; 6B25B6250FFA63C8004F1BC4 = 6B25B6250FFA63C8004F1BC4 /* PBXTextBookmark */; - 6B2AEC5B0FFB8AB0005BE9CC = 6B2AEC5B0FFB8AB0005BE9CC /* PBXTextBookmark */; 6B2AEC5C0FFB8AB0005BE9CC = 6B2AEC5C0FFB8AB0005BE9CC /* PBXTextBookmark */; 6B2AEC610FFB8AB0005BE9CC = 6B2AEC610FFB8AB0005BE9CC /* PBXTextBookmark */; 6B2AEC620FFB8AB0005BE9CC = 6B2AEC620FFB8AB0005BE9CC /* PBXTextBookmark */; 6B2AEC670FFB8AB0005BE9CC = 6B2AEC670FFB8AB0005BE9CC /* PBXTextBookmark */; 6B2AEC6F0FFB8AB0005BE9CC = 6B2AEC6F0FFB8AB0005BE9CC /* PBXTextBookmark */; - 6B2AEC730FFB8AB0005BE9CC = 6B2AEC730FFB8AB0005BE9CC /* PBXTextBookmark */; 6B2AEC740FFB8AB0005BE9CC = 6B2AEC740FFB8AB0005BE9CC /* PBXTextBookmark */; 6B2AEC750FFB8AB0005BE9CC = 6B2AEC750FFB8AB0005BE9CC /* PBXTextBookmark */; - 6B2AEC770FFB8AB0005BE9CC = 6B2AEC770FFB8AB0005BE9CC /* PBXTextBookmark */; 6B2AEC970FFB8AB0005BE9CC = 6B2AEC970FFB8AB0005BE9CC /* PBXTextBookmark */; 6B2AECB50FFB8AB0005BE9CC = 6B2AECB50FFB8AB0005BE9CC /* PBXTextBookmark */; 6B2AECE10FFB8AB0005BE9CC = 6B2AECE10FFB8AB0005BE9CC /* PBXTextBookmark */; 6B2AECED0FFB8B41005BE9CC = 6B2AECED0FFB8B41005BE9CC /* PBXTextBookmark */; 6B2AECEE0FFB8B41005BE9CC = 6B2AECEE0FFB8B41005BE9CC /* PBXTextBookmark */; - 6B2AECEF0FFB8B41005BE9CC = 6B2AECEF0FFB8B41005BE9CC /* PBXTextBookmark */; - 6B2AECF00FFB8B41005BE9CC = 6B2AECF00FFB8B41005BE9CC /* PBXTextBookmark */; 6B2AECF80FFB9075005BE9CC = 6B2AECF80FFB9075005BE9CC /* PBXTextBookmark */; 6B2AECF90FFB9075005BE9CC = 6B2AECF90FFB9075005BE9CC /* PBXTextBookmark */; - 6B2AED0D0FFB94AC005BE9CC = 6B2AED0D0FFB94AC005BE9CC /* PBXTextBookmark */; 6B2AED8E0FFBA45B005BE9CC = 6B2AED8E0FFBA45B005BE9CC /* PBXTextBookmark */; 6B2AED930FFBA45B005BE9CC = 6B2AED930FFBA45B005BE9CC /* PBXTextBookmark */; 6B2AED940FFBA45B005BE9CC = 6B2AED940FFBA45B005BE9CC /* PBXTextBookmark */; - 6B2AED950FFBA45B005BE9CC = 6B2AED950FFBA45B005BE9CC /* PBXTextBookmark */; - 6B2AED9F0FFBA507005BE9CC = 6B2AED9F0FFBA507005BE9CC /* PBXTextBookmark */; - 6B2AEDA00FFBA507005BE9CC = 6B2AEDA00FFBA507005BE9CC /* PBXTextBookmark */; 6B458EA80FB4540500044EA9 = 6B458EA80FB4540500044EA9 /* PBXTextBookmark */; - 6B6BC6C70FE7A3A4009E3CB9 = 6B6BC6C70FE7A3A4009E3CB9 /* PBXTextBookmark */; - 6B6BC6CA0FE7A3A4009E3CB9 = 6B6BC6CA0FE7A3A4009E3CB9 /* PBXTextBookmark */; + 6B555D11100B125300247EA3 /* PBXTextBookmark */ = 6B555D11100B125300247EA3 /* PBXTextBookmark */; + 6B555D12100B125300247EA3 /* PBXTextBookmark */ = 6B555D12100B125300247EA3 /* PBXTextBookmark */; + 6B555D13100B125300247EA3 /* PBXTextBookmark */ = 6B555D13100B125300247EA3 /* PBXTextBookmark */; + 6B555D14100B125300247EA3 /* PBXTextBookmark */ = 6B555D14100B125300247EA3 /* PBXTextBookmark */; + 6B555D15100B125300247EA3 /* PBXTextBookmark */ = 6B555D15100B125300247EA3 /* PBXTextBookmark */; + 6B555D16100B125300247EA3 /* PBXTextBookmark */ = 6B555D16100B125300247EA3 /* PBXTextBookmark */; + 6B555D23100B136A00247EA3 /* PBXTextBookmark */ = 6B555D23100B136A00247EA3 /* PBXTextBookmark */; + 6B555D24100B136A00247EA3 /* PBXTextBookmark */ = 6B555D24100B136A00247EA3 /* PBXTextBookmark */; + 6B555D25100B136A00247EA3 /* PBXTextBookmark */ = 6B555D25100B136A00247EA3 /* PBXTextBookmark */; + 6B555D26100B136A00247EA3 /* PBXTextBookmark */ = 6B555D26100B136A00247EA3 /* PBXTextBookmark */; + 6B555D27100B136A00247EA3 /* PBXTextBookmark */ = 6B555D27100B136A00247EA3 /* PBXTextBookmark */; + 6B555D28100B136A00247EA3 /* PBXTextBookmark */ = 6B555D28100B136A00247EA3 /* PBXTextBookmark */; + 6B555D29100B136A00247EA3 /* PBXTextBookmark */ = 6B555D29100B136A00247EA3 /* PBXTextBookmark */; + 6B555D2A100B136A00247EA3 /* PBXTextBookmark */ = 6B555D2A100B136A00247EA3 /* PBXTextBookmark */; + 6B555D2F100B143200247EA3 /* PBXTextBookmark */ = 6B555D2F100B143200247EA3 /* PBXTextBookmark */; + 6B555D30100B143200247EA3 /* PBXTextBookmark */ = 6B555D30100B143200247EA3 /* PBXTextBookmark */; + 6B555D31100B143200247EA3 /* PBXTextBookmark */ = 6B555D31100B143200247EA3 /* PBXTextBookmark */; + 6B555D32100B143200247EA3 /* PBXTextBookmark */ = 6B555D32100B143200247EA3 /* PBXTextBookmark */; + 6B555D33100B143200247EA3 /* PBXTextBookmark */ = 6B555D33100B143200247EA3 /* PBXTextBookmark */; + 6B555D34100B143200247EA3 /* PBXTextBookmark */ = 6B555D34100B143200247EA3 /* PBXTextBookmark */; + 6B555D3E100B175F00247EA3 /* PBXTextBookmark */ = 6B555D3E100B175F00247EA3 /* PBXTextBookmark */; + 6B555D3F100B175F00247EA3 /* PBXTextBookmark */ = 6B555D3F100B175F00247EA3 /* PBXTextBookmark */; + 6B555D40100B175F00247EA3 /* PBXTextBookmark */ = 6B555D40100B175F00247EA3 /* PBXTextBookmark */; + 6B555D41100B175F00247EA3 /* PBXTextBookmark */ = 6B555D41100B175F00247EA3 /* PBXTextBookmark */; + 6B555D42100B175F00247EA3 /* PBXTextBookmark */ = 6B555D42100B175F00247EA3 /* PBXTextBookmark */; + 6B555D43100B175F00247EA3 /* PBXTextBookmark */ = 6B555D43100B175F00247EA3 /* PBXTextBookmark */; + 6B555D44100B175F00247EA3 /* PBXTextBookmark */ = 6B555D44100B175F00247EA3 /* PBXTextBookmark */; + 6B555D45100B175F00247EA3 /* PBXTextBookmark */ = 6B555D45100B175F00247EA3 /* PBXTextBookmark */; + 6B555D46100B175F00247EA3 /* PBXTextBookmark */ = 6B555D46100B175F00247EA3 /* PBXTextBookmark */; + 6B555D47100B175F00247EA3 /* PBXTextBookmark */ = 6B555D47100B175F00247EA3 /* PBXTextBookmark */; + 6B555D48100B175F00247EA3 /* PBXTextBookmark */ = 6B555D48100B175F00247EA3 /* PBXTextBookmark */; + 6B555D49100B175F00247EA3 /* PBXTextBookmark */ = 6B555D49100B175F00247EA3 /* PBXTextBookmark */; + 6B555D4A100B175F00247EA3 /* PBXTextBookmark */ = 6B555D4A100B175F00247EA3 /* PBXTextBookmark */; + 6B555D4B100B175F00247EA3 /* PBXTextBookmark */ = 6B555D4B100B175F00247EA3 /* PBXTextBookmark */; + 6B555D4C100B175F00247EA3 /* PBXTextBookmark */ = 6B555D4C100B175F00247EA3 /* PBXTextBookmark */; + 6B555D4D100B175F00247EA3 /* PBXTextBookmark */ = 6B555D4D100B175F00247EA3 /* PBXTextBookmark */; + 6B555D4E100B175F00247EA3 /* PBXTextBookmark */ = 6B555D4E100B175F00247EA3 /* PBXTextBookmark */; + 6B555D4F100B175F00247EA3 /* PBXTextBookmark */ = 6B555D4F100B175F00247EA3 /* PBXTextBookmark */; + 6B555D50100B175F00247EA3 /* PBXTextBookmark */ = 6B555D50100B175F00247EA3 /* PBXTextBookmark */; + 6B555D51100B175F00247EA3 /* PBXTextBookmark */ = 6B555D51100B175F00247EA3 /* PBXTextBookmark */; + 6B555D52100B175F00247EA3 /* PBXTextBookmark */ = 6B555D52100B175F00247EA3 /* PBXTextBookmark */; + 6B555D53100B175F00247EA3 /* PBXTextBookmark */ = 6B555D53100B175F00247EA3 /* PBXTextBookmark */; + 6B555D54100B175F00247EA3 /* PBXTextBookmark */ = 6B555D54100B175F00247EA3 /* PBXTextBookmark */; + 6B555D55100B175F00247EA3 /* PBXTextBookmark */ = 6B555D55100B175F00247EA3 /* PBXTextBookmark */; + 6B555D56100B175F00247EA3 /* PBXTextBookmark */ = 6B555D56100B175F00247EA3 /* PBXTextBookmark */; + 6B555D59100B17DB00247EA3 /* PBXTextBookmark */ = 6B555D59100B17DB00247EA3 /* PBXTextBookmark */; + 6B555D5A100B17DB00247EA3 /* PBXTextBookmark */ = 6B555D5A100B17DB00247EA3 /* PBXTextBookmark */; + 6B555D5B100B17DB00247EA3 /* PBXTextBookmark */ = 6B555D5B100B17DB00247EA3 /* PBXTextBookmark */; + 6B555D5C100B17DB00247EA3 /* PBXTextBookmark */ = 6B555D5C100B17DB00247EA3 /* PBXTextBookmark */; + 6B555D5D100B17DB00247EA3 /* PBXTextBookmark */ = 6B555D5D100B17DB00247EA3 /* PBXTextBookmark */; + 6B555D5E100B17DB00247EA3 /* PBXTextBookmark */ = 6B555D5E100B17DB00247EA3 /* PBXTextBookmark */; + 6B555D5F100B17DB00247EA3 /* PBXTextBookmark */ = 6B555D5F100B17DB00247EA3 /* PBXTextBookmark */; + 6B555D60100B17DB00247EA3 /* PBXTextBookmark */ = 6B555D60100B17DB00247EA3 /* PBXTextBookmark */; + 6B555D61100B17DB00247EA3 /* PBXTextBookmark */ = 6B555D61100B17DB00247EA3 /* PBXTextBookmark */; + 6B555D64100B185A00247EA3 /* PBXTextBookmark */ = 6B555D64100B185A00247EA3 /* PBXTextBookmark */; + 6B555D65100B185A00247EA3 /* PBXTextBookmark */ = 6B555D65100B185A00247EA3 /* PBXTextBookmark */; + 6B555D66100B185A00247EA3 /* PBXTextBookmark */ = 6B555D66100B185A00247EA3 /* PBXTextBookmark */; + 6B555D67100B185A00247EA3 /* PBXTextBookmark */ = 6B555D67100B185A00247EA3 /* PBXTextBookmark */; + 6B555D68100B185A00247EA3 /* PBXTextBookmark */ = 6B555D68100B185A00247EA3 /* PBXTextBookmark */; + 6B555D6A100B186400247EA3 /* PBXTextBookmark */ = 6B555D6A100B186400247EA3 /* PBXTextBookmark */; + 6B555D6C100B189600247EA3 /* PBXTextBookmark */ = 6B555D6C100B189600247EA3 /* PBXTextBookmark */; + 6B555D6E100B18EA00247EA3 /* PBXTextBookmark */ = 6B555D6E100B18EA00247EA3 /* PBXTextBookmark */; + 6B555D6F100B18EA00247EA3 /* PBXTextBookmark */ = 6B555D6F100B18EA00247EA3 /* PBXTextBookmark */; + 6B555D70100B18EA00247EA3 /* PBXTextBookmark */ = 6B555D70100B18EA00247EA3 /* PBXTextBookmark */; + 6B555D71100B18EA00247EA3 /* PBXTextBookmark */ = 6B555D71100B18EA00247EA3 /* PBXTextBookmark */; + 6B555D72100B18EA00247EA3 /* PBXTextBookmark */ = 6B555D72100B18EA00247EA3 /* PBXTextBookmark */; + 6B555D73100B18EA00247EA3 /* PBXTextBookmark */ = 6B555D73100B18EA00247EA3 /* PBXTextBookmark */; + 6B555D74100B18EA00247EA3 /* PBXTextBookmark */ = 6B555D74100B18EA00247EA3 /* PBXTextBookmark */; + 6B555D75100B18EA00247EA3 /* PBXTextBookmark */ = 6B555D75100B18EA00247EA3 /* PBXTextBookmark */; + 6B555D76100B18FC00247EA3 /* PBXTextBookmark */ = 6B555D76100B18FC00247EA3 /* PBXTextBookmark */; + 6B555D78100B192F00247EA3 /* PBXTextBookmark */ = 6B555D78100B192F00247EA3 /* PBXTextBookmark */; + 6B555D79100B192F00247EA3 /* PBXTextBookmark */ = 6B555D79100B192F00247EA3 /* PBXTextBookmark */; + 6B555D7A100B192F00247EA3 /* PBXTextBookmark */ = 6B555D7A100B192F00247EA3 /* PBXTextBookmark */; + 6B555D7B100B192F00247EA3 /* PBXTextBookmark */ = 6B555D7B100B192F00247EA3 /* PBXTextBookmark */; + 6B555D7E100B1A5200247EA3 /* PBXTextBookmark */ = 6B555D7E100B1A5200247EA3 /* PBXTextBookmark */; + 6B555D7F100B1A5200247EA3 /* PBXTextBookmark */ = 6B555D7F100B1A5200247EA3 /* PBXTextBookmark */; + 6B555D80100B1A5200247EA3 /* PBXTextBookmark */ = 6B555D80100B1A5200247EA3 /* PBXTextBookmark */; + 6B555D81100B1A5200247EA3 /* PBXTextBookmark */ = 6B555D81100B1A5200247EA3 /* PBXTextBookmark */; + 6B555D82100B1A5200247EA3 /* PBXTextBookmark */ = 6B555D82100B1A5200247EA3 /* PBXTextBookmark */; + 6B555D83100B1A5200247EA3 /* PBXTextBookmark */ = 6B555D83100B1A5200247EA3 /* PBXTextBookmark */; + 6B555D84100B1A5200247EA3 /* PBXTextBookmark */ = 6B555D84100B1A5200247EA3 /* PBXTextBookmark */; + 6B555D85100B1A5200247EA3 /* PBXTextBookmark */ = 6B555D85100B1A5200247EA3 /* PBXTextBookmark */; + 6B555D86100B1A5200247EA3 /* PBXTextBookmark */ = 6B555D86100B1A5200247EA3 /* PBXTextBookmark */; + 6B555D87100B1A5200247EA3 /* PBXTextBookmark */ = 6B555D87100B1A5200247EA3 /* PBXTextBookmark */; + 6B555D88100B1A5200247EA3 /* PBXTextBookmark */ = 6B555D88100B1A5200247EA3 /* PBXTextBookmark */; + 6B555D90100B1B6900247EA3 /* PBXTextBookmark */ = 6B555D90100B1B6900247EA3 /* PBXTextBookmark */; + 6B555D91100B1B6900247EA3 /* PBXTextBookmark */ = 6B555D91100B1B6900247EA3 /* PBXTextBookmark */; + 6B555D92100B1B6900247EA3 /* PBXTextBookmark */ = 6B555D92100B1B6900247EA3 /* PBXTextBookmark */; + 6B555D93100B1B6900247EA3 /* PBXTextBookmark */ = 6B555D93100B1B6900247EA3 /* PBXTextBookmark */; + 6B555D94100B1B6900247EA3 /* PBXTextBookmark */ = 6B555D94100B1B6900247EA3 /* PBXTextBookmark */; + 6B555D95100B1B6900247EA3 /* PBXTextBookmark */ = 6B555D95100B1B6900247EA3 /* PBXTextBookmark */; + 6B555D96100B1B6900247EA3 /* PBXTextBookmark */ = 6B555D96100B1B6900247EA3 /* PBXTextBookmark */; + 6B555D97100B1B6900247EA3 /* PBXTextBookmark */ = 6B555D97100B1B6900247EA3 /* PBXTextBookmark */; + 6B555D98100B1B6900247EA3 /* PBXTextBookmark */ = 6B555D98100B1B6900247EA3 /* PBXTextBookmark */; + 6B555D99100B1B6900247EA3 /* PBXTextBookmark */ = 6B555D99100B1B6900247EA3 /* PBXTextBookmark */; + 6B555D9A100B1C2400247EA3 /* PBXTextBookmark */ = 6B555D9A100B1C2400247EA3 /* PBXTextBookmark */; + 6B555D9B100B1C2400247EA3 /* PBXTextBookmark */ = 6B555D9B100B1C2400247EA3 /* PBXTextBookmark */; + 6B555D9C100B1C2400247EA3 /* PBXTextBookmark */ = 6B555D9C100B1C2400247EA3 /* PBXTextBookmark */; + 6B555D9D100B1C2400247EA3 /* PBXTextBookmark */ = 6B555D9D100B1C2400247EA3 /* PBXTextBookmark */; + 6B555D9E100B1C2400247EA3 /* PBXTextBookmark */ = 6B555D9E100B1C2400247EA3 /* PBXTextBookmark */; + 6B555D9F100B1C2400247EA3 /* PBXTextBookmark */ = 6B555D9F100B1C2400247EA3 /* PBXTextBookmark */; + 6B555DA0100B1C2400247EA3 /* PBXTextBookmark */ = 6B555DA0100B1C2400247EA3 /* PBXTextBookmark */; + 6B555DA1100B1C2400247EA3 /* PBXTextBookmark */ = 6B555DA1100B1C2400247EA3 /* PBXTextBookmark */; + 6B555DA2100B1C2400247EA3 /* PBXTextBookmark */ = 6B555DA2100B1C2400247EA3 /* PBXTextBookmark */; + 6B555DA8100B1E6500247EA3 /* PBXTextBookmark */ = 6B555DA8100B1E6500247EA3 /* PBXTextBookmark */; + 6B555DA9100B1E6500247EA3 /* PBXTextBookmark */ = 6B555DA9100B1E6500247EA3 /* PBXTextBookmark */; + 6B555DAA100B1E6500247EA3 /* PBXTextBookmark */ = 6B555DAA100B1E6500247EA3 /* PBXTextBookmark */; + 6B555DAB100B1E6500247EA3 /* PBXTextBookmark */ = 6B555DAB100B1E6500247EA3 /* PBXTextBookmark */; + 6B555DAC100B1E6500247EA3 /* PBXTextBookmark */ = 6B555DAC100B1E6500247EA3 /* PBXTextBookmark */; + 6B555DAD100B1E7900247EA3 /* PBXTextBookmark */ = 6B555DAD100B1E7900247EA3 /* PBXTextBookmark */; + 6B555DBD100B236A00247EA3 /* PBXTextBookmark */ = 6B555DBD100B236A00247EA3 /* PBXTextBookmark */; + 6B555DBE100B236A00247EA3 /* PBXTextBookmark */ = 6B555DBE100B236A00247EA3 /* PBXTextBookmark */; + 6B555DBF100B236A00247EA3 /* PBXTextBookmark */ = 6B555DBF100B236A00247EA3 /* PBXTextBookmark */; + 6B555DC0100B236A00247EA3 /* PBXTextBookmark */ = 6B555DC0100B236A00247EA3 /* PBXTextBookmark */; + 6B555DC1100B236A00247EA3 /* PBXTextBookmark */ = 6B555DC1100B236A00247EA3 /* PBXTextBookmark */; + 6B555DC2100B236A00247EA3 /* PBXTextBookmark */ = 6B555DC2100B236A00247EA3 /* PBXTextBookmark */; + 6B555DC3100B236A00247EA3 /* PBXTextBookmark */ = 6B555DC3100B236A00247EA3 /* PBXTextBookmark */; + 6B555DC4100B236A00247EA3 /* PBXTextBookmark */ = 6B555DC4100B236A00247EA3 /* PBXTextBookmark */; + 6B555DC5100B236A00247EA3 /* PBXTextBookmark */ = 6B555DC5100B236A00247EA3 /* PBXTextBookmark */; + 6B555DC6100B236A00247EA3 /* PBXTextBookmark */ = 6B555DC6100B236A00247EA3 /* PBXTextBookmark */; + 6B555DC7100B236A00247EA3 /* PBXTextBookmark */ = 6B555DC7100B236A00247EA3 /* PBXTextBookmark */; + 6B555DC8100B236A00247EA3 /* PBXTextBookmark */ = 6B555DC8100B236A00247EA3 /* PBXTextBookmark */; + 6B555DC9100B236A00247EA3 /* PBXTextBookmark */ = 6B555DC9100B236A00247EA3 /* PBXTextBookmark */; + 6B555DCA100B236A00247EA3 /* PBXTextBookmark */ = 6B555DCA100B236A00247EA3 /* PBXTextBookmark */; + 6B555DCB100B236A00247EA3 /* PBXTextBookmark */ = 6B555DCB100B236A00247EA3 /* PBXTextBookmark */; + 6B555DCC100B236A00247EA3 /* PBXTextBookmark */ = 6B555DCC100B236A00247EA3 /* PBXTextBookmark */; + 6B555DCD100B236A00247EA3 /* PBXTextBookmark */ = 6B555DCD100B236A00247EA3 /* PBXTextBookmark */; + 6B555DCE100B236A00247EA3 /* PBXTextBookmark */ = 6B555DCE100B236A00247EA3 /* PBXTextBookmark */; + 6B555DCF100B236A00247EA3 /* PBXTextBookmark */ = 6B555DCF100B236A00247EA3 /* PBXTextBookmark */; + 6B555DD0100B236A00247EA3 /* PBXTextBookmark */ = 6B555DD0100B236A00247EA3 /* PBXTextBookmark */; + 6B555DD1100B236A00247EA3 /* PBXTextBookmark */ = 6B555DD1100B236A00247EA3 /* PBXTextBookmark */; + 6B555DD2100B236A00247EA3 /* PBXTextBookmark */ = 6B555DD2100B236A00247EA3 /* PBXTextBookmark */; + 6B555DD3100B236A00247EA3 /* PBXTextBookmark */ = 6B555DD3100B236A00247EA3 /* PBXTextBookmark */; + 6B555DD4100B236A00247EA3 /* PBXTextBookmark */ = 6B555DD4100B236A00247EA3 /* PBXTextBookmark */; + 6B555DD5100B236A00247EA3 /* PBXTextBookmark */ = 6B555DD5100B236A00247EA3 /* PBXTextBookmark */; + 6B555DD6100B236A00247EA3 /* PBXTextBookmark */ = 6B555DD6100B236A00247EA3 /* PBXTextBookmark */; + 6B555DD7100B236A00247EA3 /* PBXTextBookmark */ = 6B555DD7100B236A00247EA3 /* PBXTextBookmark */; + 6B555DD8100B236A00247EA3 /* PBXTextBookmark */ = 6B555DD8100B236A00247EA3 /* PBXTextBookmark */; + 6B555DD9100B236A00247EA3 /* PBXTextBookmark */ = 6B555DD9100B236A00247EA3 /* PBXTextBookmark */; + 6B555DDA100B236A00247EA3 /* PBXTextBookmark */ = 6B555DDA100B236A00247EA3 /* PBXTextBookmark */; + 6B555DDB100B236A00247EA3 /* PBXTextBookmark */ = 6B555DDB100B236A00247EA3 /* PBXTextBookmark */; + 6B555DDC100B236A00247EA3 /* PBXTextBookmark */ = 6B555DDC100B236A00247EA3 /* PBXTextBookmark */; + 6B555DDD100B236A00247EA3 /* PBXTextBookmark */ = 6B555DDD100B236A00247EA3 /* PBXTextBookmark */; + 6B555DDE100B236A00247EA3 /* PBXTextBookmark */ = 6B555DDE100B236A00247EA3 /* PBXTextBookmark */; + 6B555DDF100B236A00247EA3 /* PBXTextBookmark */ = 6B555DDF100B236A00247EA3 /* PBXTextBookmark */; + 6B555DE0100B236A00247EA3 /* PBXTextBookmark */ = 6B555DE0100B236A00247EA3 /* PBXTextBookmark */; + 6B555DE1100B236A00247EA3 /* PBXTextBookmark */ = 6B555DE1100B236A00247EA3 /* PBXTextBookmark */; + 6B555DE2100B236A00247EA3 /* PBXTextBookmark */ = 6B555DE2100B236A00247EA3 /* PBXTextBookmark */; + 6B555DE3100B236A00247EA3 /* PBXTextBookmark */ = 6B555DE3100B236A00247EA3 /* PBXTextBookmark */; + 6B555DE4100B236A00247EA3 /* PBXTextBookmark */ = 6B555DE4100B236A00247EA3 /* PBXTextBookmark */; + 6B555DE5100B236A00247EA3 /* PBXTextBookmark */ = 6B555DE5100B236A00247EA3 /* PBXTextBookmark */; + 6B555DE6100B236A00247EA3 /* PBXTextBookmark */ = 6B555DE6100B236A00247EA3 /* PBXTextBookmark */; + 6B555DE7100B236A00247EA3 /* PBXTextBookmark */ = 6B555DE7100B236A00247EA3 /* PBXTextBookmark */; + 6B555DE8100B236A00247EA3 /* PBXTextBookmark */ = 6B555DE8100B236A00247EA3 /* PBXTextBookmark */; + 6B555DE9100B236A00247EA3 /* PBXTextBookmark */ = 6B555DE9100B236A00247EA3 /* PBXTextBookmark */; + 6B555DEA100B236A00247EA3 /* PBXTextBookmark */ = 6B555DEA100B236A00247EA3 /* PBXTextBookmark */; + 6B555DEB100B236A00247EA3 /* PBXTextBookmark */ = 6B555DEB100B236A00247EA3 /* PBXTextBookmark */; + 6B555DEC100B236A00247EA3 /* PBXTextBookmark */ = 6B555DEC100B236A00247EA3 /* PBXTextBookmark */; + 6B555DED100B236A00247EA3 /* PBXTextBookmark */ = 6B555DED100B236A00247EA3 /* PBXTextBookmark */; + 6B555DEE100B236A00247EA3 /* PBXTextBookmark */ = 6B555DEE100B236A00247EA3 /* PBXTextBookmark */; + 6B555DEF100B25B900247EA3 /* PBXTextBookmark */ = 6B555DEF100B25B900247EA3 /* PBXTextBookmark */; + 6B555DF0100B25B900247EA3 /* PBXTextBookmark */ = 6B555DF0100B25B900247EA3 /* PBXTextBookmark */; + 6B555DF1100B25B900247EA3 /* PBXTextBookmark */ = 6B555DF1100B25B900247EA3 /* PBXTextBookmark */; + 6B555DF2100B25B900247EA3 /* PBXTextBookmark */ = 6B555DF2100B25B900247EA3 /* PBXTextBookmark */; + 6B555DF3100B25B900247EA3 /* PBXTextBookmark */ = 6B555DF3100B25B900247EA3 /* PBXTextBookmark */; + 6B555DF7100B285300247EA3 /* PBXTextBookmark */ = 6B555DF7100B285300247EA3 /* PBXTextBookmark */; + 6B555DF8100B285300247EA3 /* PBXTextBookmark */ = 6B555DF8100B285300247EA3 /* PBXTextBookmark */; + 6B555DF9100B285300247EA3 /* PBXTextBookmark */ = 6B555DF9100B285300247EA3 /* PBXTextBookmark */; + 6B555DFA100B285300247EA3 /* PBXTextBookmark */ = 6B555DFA100B285300247EA3 /* PBXTextBookmark */; + 6B555DFB100B285300247EA3 /* PBXTextBookmark */ = 6B555DFB100B285300247EA3 /* PBXTextBookmark */; + 6B555DFC100B285300247EA3 /* PBXTextBookmark */ = 6B555DFC100B285300247EA3 /* PBXTextBookmark */; + 6B555DFD100B285300247EA3 /* PBXTextBookmark */ = 6B555DFD100B285300247EA3 /* PBXTextBookmark */; + 6B555DFE100B285300247EA3 /* PBXTextBookmark */ = 6B555DFE100B285300247EA3 /* PBXTextBookmark */; + 6B555DFF100B285300247EA3 /* PBXTextBookmark */ = 6B555DFF100B285300247EA3 /* PBXTextBookmark */; + 6B555E00100B285300247EA3 /* PBXTextBookmark */ = 6B555E00100B285300247EA3 /* PBXTextBookmark */; + 6B555E01100B285300247EA3 /* PBXTextBookmark */ = 6B555E01100B285300247EA3 /* PBXTextBookmark */; + 6B555E03100B285300247EA3 /* PBXTextBookmark */ = 6B555E03100B285300247EA3 /* PBXTextBookmark */; + 6B555E04100B285300247EA3 /* PBXTextBookmark */ = 6B555E04100B285300247EA3 /* PBXTextBookmark */; + 6B555E05100B285300247EA3 /* PBXTextBookmark */ = 6B555E05100B285300247EA3 /* PBXTextBookmark */; + 6B555E06100B285300247EA3 /* PBXTextBookmark */ = 6B555E06100B285300247EA3 /* PBXTextBookmark */; + 6B555E07100B285300247EA3 /* PBXTextBookmark */ = 6B555E07100B285300247EA3 /* PBXTextBookmark */; + 6B555E08100B285300247EA3 /* PBXTextBookmark */ = 6B555E08100B285300247EA3 /* PBXTextBookmark */; + 6B555E09100B285300247EA3 /* PBXTextBookmark */ = 6B555E09100B285300247EA3 /* PBXTextBookmark */; + 6B555E0A100B285300247EA3 /* PBXTextBookmark */ = 6B555E0A100B285300247EA3 /* PBXTextBookmark */; + 6B555E0B100B285300247EA3 /* PBXTextBookmark */ = 6B555E0B100B285300247EA3 /* PBXTextBookmark */; + 6B555E0C100B285300247EA3 /* PBXTextBookmark */ = 6B555E0C100B285300247EA3 /* PBXTextBookmark */; + 6B555E0D100B285300247EA3 /* PBXTextBookmark */ = 6B555E0D100B285300247EA3 /* PBXTextBookmark */; + 6B555E0E100B285300247EA3 /* PBXTextBookmark */ = 6B555E0E100B285300247EA3 /* PBXTextBookmark */; + 6B555E0F100B285300247EA3 /* PBXTextBookmark */ = 6B555E0F100B285300247EA3 /* PBXTextBookmark */; + 6B555E10100B285300247EA3 /* PBXTextBookmark */ = 6B555E10100B285300247EA3 /* PBXTextBookmark */; + 6B555E11100B285300247EA3 /* PBXTextBookmark */ = 6B555E11100B285300247EA3 /* PBXTextBookmark */; + 6B555E12100B285300247EA3 /* PBXTextBookmark */ = 6B555E12100B285300247EA3 /* PBXTextBookmark */; + 6B555E13100B285300247EA3 /* PBXTextBookmark */ = 6B555E13100B285300247EA3 /* PBXTextBookmark */; + 6B555E14100B285300247EA3 /* PBXTextBookmark */ = 6B555E14100B285300247EA3 /* PBXTextBookmark */; + 6B555E15100B285300247EA3 /* PBXTextBookmark */ = 6B555E15100B285300247EA3 /* PBXTextBookmark */; + 6B555E16100B285300247EA3 /* PBXTextBookmark */ = 6B555E16100B285300247EA3 /* PBXTextBookmark */; + 6B555E17100B285300247EA3 /* PBXTextBookmark */ = 6B555E17100B285300247EA3 /* PBXTextBookmark */; + 6B555E18100B285300247EA3 /* PBXTextBookmark */ = 6B555E18100B285300247EA3 /* PBXTextBookmark */; + 6B555E19100B285300247EA3 /* PBXTextBookmark */ = 6B555E19100B285300247EA3 /* PBXTextBookmark */; + 6B555E1A100B285300247EA3 /* PBXTextBookmark */ = 6B555E1A100B285300247EA3 /* PBXTextBookmark */; + 6B555E1B100B285300247EA3 /* PBXTextBookmark */ = 6B555E1B100B285300247EA3 /* PBXTextBookmark */; + 6B555E1C100B285300247EA3 /* PBXTextBookmark */ = 6B555E1C100B285300247EA3 /* PBXTextBookmark */; + 6B555E1D100B2D9800247EA3 /* PBXTextBookmark */ = 6B555E1D100B2D9800247EA3 /* PBXTextBookmark */; + 6B555E1E100B2D9800247EA3 /* PBXTextBookmark */ = 6B555E1E100B2D9800247EA3 /* PBXTextBookmark */; + 6B555E1F100B2D9800247EA3 /* PBXTextBookmark */ = 6B555E1F100B2D9800247EA3 /* PBXTextBookmark */; + 6B555E20100B2D9800247EA3 /* PBXTextBookmark */ = 6B555E20100B2D9800247EA3 /* PBXTextBookmark */; + 6B555E21100B2D9800247EA3 /* PBXTextBookmark */ = 6B555E21100B2D9800247EA3 /* PBXTextBookmark */; + 6B555E22100B2D9800247EA3 /* PBXTextBookmark */ = 6B555E22100B2D9800247EA3 /* PBXTextBookmark */; + 6B555E23100B2D9800247EA3 /* PBXTextBookmark */ = 6B555E23100B2D9800247EA3 /* PBXTextBookmark */; + 6B555E38100B311B00247EA3 /* PBXTextBookmark */ = 6B555E38100B311B00247EA3 /* PBXTextBookmark */; + 6B555E39100B311B00247EA3 /* PBXTextBookmark */ = 6B555E39100B311B00247EA3 /* PBXTextBookmark */; + 6B555E3A100B311B00247EA3 /* PBXTextBookmark */ = 6B555E3A100B311B00247EA3 /* PBXTextBookmark */; + 6B555E3B100B311B00247EA3 /* PBXTextBookmark */ = 6B555E3B100B311B00247EA3 /* PBXTextBookmark */; + 6B555E3C100B311B00247EA3 /* PBXTextBookmark */ = 6B555E3C100B311B00247EA3 /* PBXTextBookmark */; + 6B555E3D100B311B00247EA3 /* PBXTextBookmark */ = 6B555E3D100B311B00247EA3 /* PBXTextBookmark */; + 6B555E3E100B311B00247EA3 /* PBXTextBookmark */ = 6B555E3E100B311B00247EA3 /* PBXTextBookmark */; + 6B555E3F100B311B00247EA3 /* PBXTextBookmark */ = 6B555E3F100B311B00247EA3 /* PBXTextBookmark */; + 6B555E40100B311B00247EA3 /* PBXTextBookmark */ = 6B555E40100B311B00247EA3 /* PBXTextBookmark */; + 6B555E41100B311B00247EA3 /* PBXTextBookmark */ = 6B555E41100B311B00247EA3 /* PBXTextBookmark */; + 6B555E42100B311B00247EA3 /* PBXTextBookmark */ = 6B555E42100B311B00247EA3 /* PBXTextBookmark */; + 6B555E43100B311B00247EA3 /* PBXTextBookmark */ = 6B555E43100B311B00247EA3 /* PBXTextBookmark */; + 6B555E44100B311B00247EA3 /* PBXTextBookmark */ = 6B555E44100B311B00247EA3 /* PBXTextBookmark */; + 6B555E45100B311B00247EA3 /* PBXTextBookmark */ = 6B555E45100B311B00247EA3 /* PBXTextBookmark */; + 6B555E46100B311B00247EA3 /* PBXTextBookmark */ = 6B555E46100B311B00247EA3 /* PBXTextBookmark */; + 6B555E47100B311B00247EA3 /* PBXTextBookmark */ = 6B555E47100B311B00247EA3 /* PBXTextBookmark */; + 6B555E48100B311B00247EA3 /* PBXTextBookmark */ = 6B555E48100B311B00247EA3 /* PBXTextBookmark */; + 6B555E49100B311B00247EA3 /* PBXTextBookmark */ = 6B555E49100B311B00247EA3 /* PBXTextBookmark */; + 6B555E4A100B311B00247EA3 /* PBXTextBookmark */ = 6B555E4A100B311B00247EA3 /* PBXTextBookmark */; + 6B555E4B100B311B00247EA3 /* PBXTextBookmark */ = 6B555E4B100B311B00247EA3 /* PBXTextBookmark */; + 6B555E4C100B311B00247EA3 /* PBXTextBookmark */ = 6B555E4C100B311B00247EA3 /* PBXTextBookmark */; + 6B555E4D100B311B00247EA3 /* PBXTextBookmark */ = 6B555E4D100B311B00247EA3 /* PBXTextBookmark */; + 6B555E4E100B311B00247EA3 /* PBXTextBookmark */ = 6B555E4E100B311B00247EA3 /* PBXTextBookmark */; + 6B555E4F100B311B00247EA3 /* PBXTextBookmark */ = 6B555E4F100B311B00247EA3 /* PBXTextBookmark */; + 6B555E50100B311B00247EA3 /* PBXTextBookmark */ = 6B555E50100B311B00247EA3 /* PBXTextBookmark */; + 6B555E51100B311B00247EA3 /* PBXTextBookmark */ = 6B555E51100B311B00247EA3 /* PBXTextBookmark */; + 6B555E52100B311B00247EA3 /* PBXTextBookmark */ = 6B555E52100B311B00247EA3 /* PBXTextBookmark */; + 6B555E53100B311B00247EA3 /* PBXTextBookmark */ = 6B555E53100B311B00247EA3 /* PBXTextBookmark */; + 6B555E54100B311B00247EA3 /* PBXTextBookmark */ = 6B555E54100B311B00247EA3 /* PBXTextBookmark */; + 6B555E55100B311B00247EA3 /* PBXTextBookmark */ = 6B555E55100B311B00247EA3 /* PBXTextBookmark */; + 6B555E56100B311B00247EA3 /* PBXTextBookmark */ = 6B555E56100B311B00247EA3 /* PBXTextBookmark */; + 6B555E57100B311B00247EA3 /* PBXTextBookmark */ = 6B555E57100B311B00247EA3 /* PBXTextBookmark */; + 6B555E58100B311B00247EA3 /* PBXTextBookmark */ = 6B555E58100B311B00247EA3 /* PBXTextBookmark */; + 6B555E59100B314A00247EA3 /* PBXTextBookmark */ = 6B555E59100B314A00247EA3 /* PBXTextBookmark */; + 6B555E5E100B334900247EA3 /* PBXTextBookmark */ = 6B555E5E100B334900247EA3 /* PBXTextBookmark */; + 6B555E5F100B334900247EA3 /* PBXTextBookmark */ = 6B555E5F100B334900247EA3 /* PBXTextBookmark */; + 6B555E60100B334900247EA3 /* PBXTextBookmark */ = 6B555E60100B334900247EA3 /* PBXTextBookmark */; + 6B555E61100B334900247EA3 /* PBXTextBookmark */ = 6B555E61100B334900247EA3 /* PBXTextBookmark */; + 6B555E62100B334900247EA3 /* PBXTextBookmark */ = 6B555E62100B334900247EA3 /* PBXTextBookmark */; + 6B555E63100B334900247EA3 /* PBXTextBookmark */ = 6B555E63100B334900247EA3 /* PBXTextBookmark */; + 6B555E64100B334900247EA3 /* PBXTextBookmark */ = 6B555E64100B334900247EA3 /* PBXTextBookmark */; + 6B555E65100B334900247EA3 /* PBXTextBookmark */ = 6B555E65100B334900247EA3 /* PBXTextBookmark */; + 6B555E66100B334900247EA3 /* PBXTextBookmark */ = 6B555E66100B334900247EA3 /* PBXTextBookmark */; + 6B555E67100B334900247EA3 /* PBXTextBookmark */ = 6B555E67100B334900247EA3 /* PBXTextBookmark */; + 6B555E68100B334900247EA3 /* PBXTextBookmark */ = 6B555E68100B334900247EA3 /* PBXTextBookmark */; + 6B555E69100B334900247EA3 /* PBXTextBookmark */ = 6B555E69100B334900247EA3 /* PBXTextBookmark */; + 6B555E6A100B334900247EA3 /* PBXTextBookmark */ = 6B555E6A100B334900247EA3 /* PBXTextBookmark */; + 6B555E6B100B334900247EA3 /* PBXTextBookmark */ = 6B555E6B100B334900247EA3 /* PBXTextBookmark */; + 6B555E6C100B334900247EA3 /* PBXTextBookmark */ = 6B555E6C100B334900247EA3 /* PBXTextBookmark */; + 6B555E6D100B334900247EA3 /* PBXTextBookmark */ = 6B555E6D100B334900247EA3 /* PBXTextBookmark */; + 6B555E6E100B334900247EA3 /* PBXTextBookmark */ = 6B555E6E100B334900247EA3 /* PBXTextBookmark */; + 6B555E6F100B334900247EA3 /* PBXTextBookmark */ = 6B555E6F100B334900247EA3 /* PBXTextBookmark */; + 6B555E70100B334900247EA3 /* PBXTextBookmark */ = 6B555E70100B334900247EA3 /* PBXTextBookmark */; + 6B555E71100B334900247EA3 /* PBXTextBookmark */ = 6B555E71100B334900247EA3 /* PBXTextBookmark */; + 6B555E72100B334900247EA3 /* PBXTextBookmark */ = 6B555E72100B334900247EA3 /* PBXTextBookmark */; + 6B555E73100B334900247EA3 /* PBXTextBookmark */ = 6B555E73100B334900247EA3 /* PBXTextBookmark */; + 6B555E74100B334900247EA3 /* PBXTextBookmark */ = 6B555E74100B334900247EA3 /* PBXTextBookmark */; + 6B555E75100B334900247EA3 /* PBXTextBookmark */ = 6B555E75100B334900247EA3 /* PBXTextBookmark */; + 6B555E76100B334900247EA3 /* PBXTextBookmark */ = 6B555E76100B334900247EA3 /* PBXTextBookmark */; + 6B555E77100B334900247EA3 /* PBXTextBookmark */ = 6B555E77100B334900247EA3 /* PBXTextBookmark */; + 6B555E78100B350E00247EA3 /* PBXTextBookmark */ = 6B555E78100B350E00247EA3 /* PBXTextBookmark */; + 6B555E79100B350E00247EA3 /* PBXTextBookmark */ = 6B555E79100B350E00247EA3 /* PBXTextBookmark */; + 6B555E7A100B350E00247EA3 /* PBXTextBookmark */ = 6B555E7A100B350E00247EA3 /* PBXTextBookmark */; + 6B555E7B100B350E00247EA3 /* PBXTextBookmark */ = 6B555E7B100B350E00247EA3 /* PBXTextBookmark */; + 6B555E7C100B350E00247EA3 /* PBXTextBookmark */ = 6B555E7C100B350E00247EA3 /* PBXTextBookmark */; + 6B555E7D100B350E00247EA3 /* PBXTextBookmark */ = 6B555E7D100B350E00247EA3 /* PBXTextBookmark */; + 6B555E7E100B350E00247EA3 /* PBXTextBookmark */ = 6B555E7E100B350E00247EA3 /* PBXTextBookmark */; + 6B555E7F100B350E00247EA3 /* PBXTextBookmark */ = 6B555E7F100B350E00247EA3 /* PBXTextBookmark */; + 6B555E80100B350E00247EA3 /* PBXTextBookmark */ = 6B555E80100B350E00247EA3 /* PBXTextBookmark */; + 6B555E81100B350E00247EA3 /* PBXTextBookmark */ = 6B555E81100B350E00247EA3 /* PBXTextBookmark */; + 6B555E82100B350E00247EA3 /* PBXTextBookmark */ = 6B555E82100B350E00247EA3 /* PBXTextBookmark */; + 6B555E83100B350E00247EA3 /* PBXTextBookmark */ = 6B555E83100B350E00247EA3 /* PBXTextBookmark */; + 6B555E84100B350E00247EA3 /* PBXTextBookmark */ = 6B555E84100B350E00247EA3 /* PBXTextBookmark */; + 6B555E85100B350E00247EA3 /* PBXTextBookmark */ = 6B555E85100B350E00247EA3 /* PBXTextBookmark */; + 6B555E86100B350E00247EA3 /* PBXTextBookmark */ = 6B555E86100B350E00247EA3 /* PBXTextBookmark */; + 6B555E88100B357100247EA3 /* PBXTextBookmark */ = 6B555E88100B357100247EA3 /* PBXTextBookmark */; + 6B555E8A100B35E000247EA3 /* PBXTextBookmark */ = 6B555E8A100B35E000247EA3 /* PBXTextBookmark */; + 6B555E8B100B35E000247EA3 /* PBXTextBookmark */ = 6B555E8B100B35E000247EA3 /* PBXTextBookmark */; + 6B555E8C100B35E000247EA3 /* PBXTextBookmark */ = 6B555E8C100B35E000247EA3 /* PBXTextBookmark */; + 6B555E8D100B35E000247EA3 /* PBXTextBookmark */ = 6B555E8D100B35E000247EA3 /* PBXTextBookmark */; + 6B555E8E100B35F500247EA3 /* PBXTextBookmark */ = 6B555E8E100B35F500247EA3 /* PBXTextBookmark */; + 6B555E8F100B365F00247EA3 /* PBXTextBookmark */ = 6B555E8F100B365F00247EA3 /* PBXTextBookmark */; + 6B555E9D100B37AB00247EA3 /* PBXTextBookmark */ = 6B555E9D100B37AB00247EA3 /* PBXTextBookmark */; + 6B555E9E100B37AB00247EA3 /* PBXTextBookmark */ = 6B555E9E100B37AB00247EA3 /* PBXTextBookmark */; + 6B555E9F100B37AB00247EA3 /* PBXTextBookmark */ = 6B555E9F100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EA0100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EA0100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EA1100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EA1100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EA2100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EA2100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EA3100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EA3100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EA4100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EA4100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EA5100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EA5100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EA6100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EA6100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EA7100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EA7100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EA8100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EA8100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EA9100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EA9100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EAA100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EAA100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EAB100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EAB100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EAC100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EAC100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EAD100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EAD100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EAE100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EAE100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EAF100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EAF100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EB0100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EB0100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EB1100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EB1100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EB2100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EB2100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EB3100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EB3100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EB4100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EB4100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EB5100B37AB00247EA3 /* PBXTextBookmark */ = 6B555EB5100B37AB00247EA3 /* PBXTextBookmark */; + 6B555EB6100B37B000247EA3 /* PBXTextBookmark */ = 6B555EB6100B37B000247EA3 /* PBXTextBookmark */; + 6B555EB7100B37B300247EA3 /* PBXTextBookmark */ = 6B555EB7100B37B300247EA3 /* PBXTextBookmark */; + 6B555EBB100B37DB00247EA3 /* PBXTextBookmark */ = 6B555EBB100B37DB00247EA3 /* PBXTextBookmark */; + 6B555EBC100B37DB00247EA3 /* PBXTextBookmark */ = 6B555EBC100B37DB00247EA3 /* PBXTextBookmark */; + 6B555EBD100B37DB00247EA3 /* PBXTextBookmark */ = 6B555EBD100B37DB00247EA3 /* PBXTextBookmark */; + 6B555EBE100B37DB00247EA3 /* PBXTextBookmark */ = 6B555EBE100B37DB00247EA3 /* PBXTextBookmark */; + 6B555EC0100B37E200247EA3 /* PBXTextBookmark */ = 6B555EC0100B37E200247EA3 /* PBXTextBookmark */; + 6B555EC2100B380400247EA3 /* PBXTextBookmark */ = 6B555EC2100B380400247EA3 /* PBXTextBookmark */; + 6B555EC3100B380400247EA3 /* PBXTextBookmark */ = 6B555EC3100B380400247EA3 /* PBXTextBookmark */; + 6B555EC4100B380400247EA3 /* PBXTextBookmark */ = 6B555EC4100B380400247EA3 /* PBXTextBookmark */; + 6B555EC5100B380400247EA3 /* PBXTextBookmark */ = 6B555EC5100B380400247EA3 /* PBXTextBookmark */; + 6B555EC7100B381600247EA3 /* PBXTextBookmark */ = 6B555EC7100B381600247EA3 /* PBXTextBookmark */; + 6B555EC9100B382A00247EA3 /* PBXTextBookmark */ = 6B555EC9100B382A00247EA3 /* PBXTextBookmark */; + 6B555ECB100B383B00247EA3 /* PBXTextBookmark */ = 6B555ECB100B383B00247EA3 /* PBXTextBookmark */; + 6B555ECD100B387900247EA3 /* PBXTextBookmark */ = 6B555ECD100B387900247EA3 /* PBXTextBookmark */; + 6B555ECF100B389000247EA3 /* PBXTextBookmark */ = 6B555ECF100B389000247EA3 /* PBXTextBookmark */; + 6B555ED1100B38B800247EA3 /* PBXTextBookmark */ = 6B555ED1100B38B800247EA3 /* PBXTextBookmark */; + 6B555ED3100B38E200247EA3 /* PBXTextBookmark */ = 6B555ED3100B38E200247EA3 /* PBXTextBookmark */; + 6B555ED7100B396100247EA3 /* PBXTextBookmark */ = 6B555ED7100B396100247EA3 /* PBXTextBookmark */; + 6B555ED8100B396100247EA3 /* PBXTextBookmark */ = 6B555ED8100B396100247EA3 /* PBXTextBookmark */; + 6B555ED9100B396100247EA3 /* PBXTextBookmark */ = 6B555ED9100B396100247EA3 /* PBXTextBookmark */; + 6B555EDA100B396100247EA3 /* PBXTextBookmark */ = 6B555EDA100B396100247EA3 /* PBXTextBookmark */; + 6B555EDD100B39A600247EA3 /* PBXTextBookmark */ = 6B555EDD100B39A600247EA3 /* PBXTextBookmark */; + 6B555EDE100B39A600247EA3 /* PBXTextBookmark */ = 6B555EDE100B39A600247EA3 /* PBXTextBookmark */; + 6B555EDF100B39A600247EA3 /* PBXTextBookmark */ = 6B555EDF100B39A600247EA3 /* PBXTextBookmark */; + 6B555EE0100B39A600247EA3 /* PBXTextBookmark */ = 6B555EE0100B39A600247EA3 /* PBXTextBookmark */; + 6B555EE1100B39A600247EA3 /* PBXTextBookmark */ = 6B555EE1100B39A600247EA3 /* PBXTextBookmark */; + 6B555EE2100B39A600247EA3 /* PBXTextBookmark */ = 6B555EE2100B39A600247EA3 /* PBXTextBookmark */; + 6B555EE4100B3FA200247EA3 /* PBXTextBookmark */ = 6B555EE4100B3FA200247EA3 /* PBXTextBookmark */; + 6B555EE6100B40CB00247EA3 /* PBXTextBookmark */ = 6B555EE6100B40CB00247EA3 /* PBXTextBookmark */; + 6B555EE8100B40D200247EA3 /* PBXTextBookmark */ = 6B555EE8100B40D200247EA3 /* PBXTextBookmark */; + 6B555EEB100B40F300247EA3 /* PBXTextBookmark */ = 6B555EEB100B40F300247EA3 /* PBXTextBookmark */; + 6B555EED100B410B00247EA3 /* PBXTextBookmark */ = 6B555EED100B410B00247EA3 /* PBXTextBookmark */; + 6B555EEF100B412300247EA3 /* PBXTextBookmark */ = 6B555EEF100B412300247EA3 /* PBXTextBookmark */; + 6B555EF0100B413900247EA3 /* PBXTextBookmark */ = 6B555EF0100B413900247EA3 /* PBXTextBookmark */; + 6B555EF6100B42E600247EA3 /* PBXTextBookmark */ = 6B555EF6100B42E600247EA3 /* PBXTextBookmark */; + 6B555EF7100B42E600247EA3 /* PBXTextBookmark */ = 6B555EF7100B42E600247EA3 /* PBXTextBookmark */; + 6B555EF8100B42E600247EA3 /* PBXTextBookmark */ = 6B555EF8100B42E600247EA3 /* PBXTextBookmark */; + 6B555EF9100B42E600247EA3 /* PBXTextBookmark */ = 6B555EF9100B42E600247EA3 /* PBXTextBookmark */; + 6B555EFA100B42E600247EA3 /* PBXTextBookmark */ = 6B555EFA100B42E600247EA3 /* PBXTextBookmark */; + 6B555EFB100B42E600247EA3 /* PBXTextBookmark */ = 6B555EFB100B42E600247EA3 /* PBXTextBookmark */; + 6B555EFC100B42E600247EA3 /* PBXTextBookmark */ = 6B555EFC100B42E600247EA3 /* PBXTextBookmark */; + 6B555EFF100B430000247EA3 /* PBXTextBookmark */ = 6B555EFF100B430000247EA3 /* PBXTextBookmark */; + 6B555F02100B431000247EA3 /* PBXTextBookmark */ = 6B555F02100B431000247EA3 /* PBXTextBookmark */; 6B7707B90FBD66CF00D21BAE = 6B7707B90FBD66CF00D21BAE /* PBXTextBookmark */; 6B7707F00FBD90F100D21BAE = 6B7707F00FBD90F100D21BAE /* PBXTextBookmark */; 6B7707F70FBD90F100D21BAE = 6B7707F70FBD90F100D21BAE /* PBXTextBookmark */; 6B7707F90FBD90F100D21BAE = 6B7707F90FBD90F100D21BAE /* PBXTextBookmark */; 6B7708F70FBDA96300D21BAE = 6B7708F70FBDA96300D21BAE /* PBXTextBookmark */; + 6B7EBB69100721310066EF8C = 6B7EBB69100721310066EF8C /* PBXTextBookmark */; + 6B7EBB6D100721310066EF8C = 6B7EBB6D100721310066EF8C /* PBXTextBookmark */; + 6B7EBB76100721810066EF8C = 6B7EBB76100721810066EF8C /* PBXTextBookmark */; + 6B7EBB78100721810066EF8C = 6B7EBB78100721810066EF8C /* PBXTextBookmark */; 6B86333B0F7813A600E2684A = 6B86333B0F7813A600E2684A /* PBXTextBookmark */; 6B8A71F40FDAB52200A0A6FB = 6B8A71F40FDAB52200A0A6FB /* PBXTextBookmark */; 6B8DB3900F9798DE007FA9E1 = 6B8DB3900F9798DE007FA9E1 /* PBXTextBookmark */; + 6B8EF40C1007653C003F8851 = 6B8EF40C1007653C003F8851 /* PBXTextBookmark */; + 6B8EF40D1007653C003F8851 = 6B8EF40D1007653C003F8851 /* PBXTextBookmark */; + 6B8EF40E1007653C003F8851 = 6B8EF40E1007653C003F8851 /* PBXTextBookmark */; + 6B8EF41C10077256003F8851 = 6B8EF41C10077256003F8851 /* PBXTextBookmark */; + 6B9135E710072A4A002ACE50 = 6B9135E710072A4A002ACE50 /* PBXTextBookmark */; 6B995BDF0FE0D9B300D5C493 = 6B995BDF0FE0D9B300D5C493 /* PBXTextBookmark */; 6B9B7D9D0FF91AC600A9090F = 6B9B7D9D0FF91AC600A9090F /* PBXTextBookmark */; 6B9B7DA30FF91AC600A9090F = 6B9B7DA30FF91AC600A9090F /* PBXTextBookmark */; @@ -942,2179 +601,37 @@ sepNavWindowFrame = "{{38, 57}, {1011, 695}}"; }; }; - 6B02489F1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 501"; - rLen = 0; - rLoc = 23007; - rType = 0; - vrLen = 919; - vrLoc = 12495; - }; - 6B0248A01001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 59"; - rLen = 0; - rLoc = 2110; - rType = 0; - vrLen = 950; - vrLoc = 1635; - }; - 6B0248A11001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 306"; - rLen = 0; - rLoc = 8190; - rType = 0; - vrLen = 1225; - vrLoc = 6745; - }; - 6B0248A21001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 99"; - rLen = 17; - rLoc = 6132; - rType = 0; - vrLen = 798; - vrLoc = 2349; - }; - 6B0248A31001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 162"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 644; - vrLoc = 3517; - }; - 6B0248A41001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 501"; - rLen = 0; - rLoc = 23007; - rType = 0; - vrLen = 919; - vrLoc = 12495; - }; - 6B0248A51001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 210"; - rLen = 0; - rLoc = 21260; - rType = 0; - vrLen = 592; - vrLoc = 4447; - }; - 6B0248A61001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 93"; - rLen = 197; - rLoc = 5862; - rType = 0; - vrLen = 738; - vrLoc = 2187; - }; - 6B0248A71001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 200"; - rLen = 0; - rLoc = 21033; - rType = 0; - vrLen = 593; - vrLoc = 4445; - }; - 6B0248A81001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 59"; - rLen = 0; - rLoc = 2110; - rType = 0; - vrLen = 950; - vrLoc = 1635; - }; - 6B0248A91001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 121"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 834; - vrLoc = 2396; - }; - 6B0248AA1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 94"; - rLen = 39; - rLoc = 6083; - rType = 0; - vrLen = 743; - vrLoc = 2187; - }; - 6B0248AB1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 133"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 784; - vrLoc = 2487; - }; - 6B0248AC1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 93"; - rLen = 0; - rLoc = 5862; - rType = 0; - vrLen = 743; - vrLoc = 2187; - }; - 6B0248AD1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 133"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 722; - vrLoc = 2549; - }; - 6B0248AE1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 52"; - rLen = 0; - rLoc = 2223; - rType = 0; - vrLen = 912; - vrLoc = 1288; - }; - 6B0248AF1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 123"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 696; - vrLoc = 2549; - }; - 6B0248B01001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 51"; - rLen = 0; - rLoc = 2223; - rType = 0; - vrLen = 797; - vrLoc = 1463; - }; - 6B0248B11001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 134"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 816; - vrLoc = 2612; - }; - 6B0248B21001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 55"; - rLen = 0; - rLoc = 2223; - rType = 0; - vrLen = 825; - vrLoc = 1463; - }; - 6B0248B31001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 137"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 864; - vrLoc = 2675; - }; - 6B0248B41001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 53"; - rLen = 0; - rLoc = 2223; - rType = 0; - vrLen = 807; - vrLoc = 1481; - }; - 6B0248B51001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 131"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 927; - vrLoc = 2676; - }; - 6B0248B61001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 100"; - rLen = 0; - rLoc = 6175; - rType = 0; - vrLen = 770; - vrLoc = 2258; - }; - 6B0248B71001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 139"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 932; - vrLoc = 3329; - }; - 6B0248B81001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 306"; - rLen = 0; - rLoc = 8190; - rType = 0; - vrLen = 1225; - vrLoc = 6745; - }; - 6B0248B91001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 142"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 656; - vrLoc = 3201; - }; - 6B0248BA1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 76"; - rLen = 0; - rLoc = 2522; - rType = 0; - vrLen = 743; - vrLoc = 2285; - }; - 6B0248BB1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 142"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 656; - vrLoc = 3201; - }; - 6B0248BC1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 76"; - rLen = 12; - rLoc = 2501; - rType = 0; - vrLen = 514; - vrLoc = 2029; - }; - 6B0248BD1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 144"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 682; - vrLoc = 3201; - }; - 6B0248BE1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 76"; - rLen = 13; - rLoc = 2501; - rType = 0; - vrLen = 467; - vrLoc = 2029; - }; - 6B0248BF1001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 162"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 644; - vrLoc = 3517; - }; - 6B0248C01001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 99"; - rLen = 17; - rLoc = 6132; - rType = 0; - vrLen = 798; - vrLoc = 2349; - }; - 6B0248C11001E4FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 136"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 955; - vrLoc = 2802; - }; - 6B0248C41001E53600CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 136"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 963; - vrLoc = 2802; - }; - 6B0248CF1001E56D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 155"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 475; - vrLoc = 3414; - }; - 6B0248D21001E64300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 341"; - rLen = 0; - rLoc = 9457; - rType = 0; - vrLen = 1175; - vrLoc = 8272; - }; - 6B0248D31001E64300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 140"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 897; - vrLoc = 3201; - }; - 6B0248D41001E64300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 140"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 897; - vrLoc = 3201; - }; - 6B0248D51001E64300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 341"; - rLen = 0; - rLoc = 9457; - rType = 0; - vrLen = 1175; - vrLoc = 8272; - }; - 6B0248D61001E64300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 145"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 908; - vrLoc = 2985; - }; - 6B0248D81001E70900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 146"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 909; - vrLoc = 2985; - }; - 6B0248D91001E70900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 52"; - rLen = 0; - rLoc = 1882; - rType = 0; - vrLen = 950; - vrLoc = 1635; - }; - 6B0248DA1001E70900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 341"; - rLen = 0; - rLoc = 9457; - rType = 0; - vrLen = 1115; - vrLoc = 8332; - }; - 6B0248DB1001E70900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 146"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 909; - vrLoc = 2985; - }; - 6B0248DC1001E70900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 52"; - rLen = 0; - rLoc = 1882; - rType = 0; - vrLen = 950; - vrLoc = 1635; - }; - 6B0248DD1001E70900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 343"; - rLen = 0; - rLoc = 9457; - rType = 0; - vrLen = 1157; - vrLoc = 8095; - }; - 6B0248DE1001E7F200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 340"; - rLen = 0; - rLoc = 9401; - rType = 0; - vrLen = 674; - vrLoc = 5314; - }; - 6B0248DF1001E7F200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 52"; - rLen = 0; - rLoc = 1882; - rType = 0; - vrLen = 950; - vrLoc = 1635; - }; - 6B0248E01001E7F200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 70"; - rLen = 0; - rLoc = 2458; - rType = 0; - vrLen = 558; - vrLoc = 1933; - }; - 6B0248E11001E7F200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 136"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 912; - vrLoc = 2985; - }; - 6B0248E21001E7F200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 340"; - rLen = 0; - rLoc = 9401; - rType = 0; - vrLen = 674; - vrLoc = 5314; - }; - 6B0248E31001E7F200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 146"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 908; - vrLoc = 2985; - }; - 6B0248E41001E7F200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 52"; - rLen = 0; - rLoc = 1882; - rType = 0; - vrLen = 950; - vrLoc = 1635; - }; - 6B0248E51001E7F200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 136"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 912; - vrLoc = 2985; - }; - 6B0248E61001E7F200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 70"; - rLen = 0; - rLoc = 2458; - rType = 0; - vrLen = 558; - vrLoc = 1933; - }; - 6B0248E71001E7F200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 233"; - rLen = 0; - rLoc = 20645; - rType = 0; - vrLen = 698; - vrLoc = 5516; - }; - 6B0248EA1001E82000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 70"; - rLen = 0; - rLoc = 2443; - rType = 0; - vrLen = 546; - vrLoc = 1933; - }; - 6B0248EB1001E82000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 229"; - rLen = 0; - rLoc = 20645; - rType = 0; - vrLen = 682; - vrLoc = 5516; - }; - 6B0248EC1001E82000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 229"; - rLen = 0; - rLoc = 20645; - rType = 0; - vrLen = 682; - vrLoc = 5516; - }; - 6B0248ED1001E82000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 70"; - rLen = 0; - rLoc = 2458; - rType = 0; - vrLen = 539; - vrLoc = 1933; - }; - 6B0248EE1001E82000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 229"; - rLen = 0; - rLoc = 20645; - rType = 0; - vrLen = 682; - vrLoc = 5516; - }; - 6B0248EF1001E82000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 70"; - rLen = 0; - rLoc = 2443; - rType = 0; - vrLen = 546; - vrLoc = 1933; - }; - 6B0248F01001E82000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 229"; - rLen = 0; - rLoc = 20645; - rType = 0; - vrLen = 760; - vrLoc = 5452; - }; - 6B0248F21001E97600CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 149"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 878; - vrLoc = 3204; - }; - 6B0248F41001E9A400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 149"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 881; - vrLoc = 3204; - }; - 6B0248F51001E9A400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 340"; - rLen = 0; - rLoc = 9401; - rType = 0; - vrLen = 674; - vrLoc = 5314; - }; - 6B0248F61001E9A400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 149"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 881; - vrLoc = 3204; - }; - 6B0248F71001E9A400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 355"; - rLen = 0; - rLoc = 10025; - rType = 0; - vrLen = 915; - vrLoc = 8707; - }; - 6B0248F81001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 355"; - rLen = 0; - rLoc = 10025; - rType = 0; - vrLen = 917; - vrLoc = 8707; - }; - 6B0248F91001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 15"; - rLen = 530; - rLoc = 244; - rType = 0; - vrLen = 768; - vrLoc = 368; - }; - 6B0248FA1001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 61"; - rLen = 0; - rLoc = 1287; - rType = 0; - vrLen = 793; - vrLoc = 701; - }; - 6B0248FB1001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */; - name = "BuilderStatMeshTiled.cpp: 828"; - rLen = 0; - rLoc = 24413; - rType = 0; - vrLen = 2856; - vrLoc = 27512; - }; - 6B0248FC1001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 50"; - rLen = 20; - rLoc = 2164; - rType = 0; - vrLen = 628; - vrLoc = 673; - }; - 6B0248FD1001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 85"; - rLen = 12; - rLoc = 5078; - rType = 0; - vrLen = 942; - vrLoc = 1191; - }; - 6B0248FE1001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 355"; - rLen = 0; - rLoc = 10025; - rType = 0; - vrLen = 917; - vrLoc = 8707; - }; - 6B0248FF1001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 55"; - rLen = 0; - rLoc = 2994; - rType = 0; - vrLen = 910; - vrLoc = 608; - }; - 6B0249001001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 15"; - rLen = 530; - rLoc = 244; - rType = 0; - vrLen = 768; - vrLoc = 368; - }; - 6B0249011001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 48"; - rLen = 10; - rLoc = 2150; - rType = 0; - vrLen = 679; - vrLoc = 673; - }; - 6B0249021001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 35"; - rLen = 0; - rLoc = 1638; - rType = 0; - vrLen = 631; - vrLoc = 259; - }; - 6B0249031001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 41"; - rLen = 21; - rLoc = 1682; - rType = 0; - vrLen = 643; - vrLoc = 673; - }; - 6B0249041001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 35"; - rLen = 0; - rLoc = 1603; - rType = 0; - vrLen = 713; - vrLoc = 1154; - }; 6B0249051001EABD00CF7107 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; name = "BuilderStatMeshTiled.cpp: 828"; rLen = 0; - rLoc = 24413; - rType = 0; - vrLen = 2856; - vrLoc = 27512; - }; - 6B0249061001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 85"; - rLen = 12; - rLoc = 5078; - rType = 0; - vrLen = 942; - vrLoc = 1191; - }; - 6B0249071001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 50"; - rLen = 20; - rLoc = 2164; - rType = 0; - vrLen = 628; - vrLoc = 673; - }; - 6B0249081001EABD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 89"; - rLen = 0; - rLoc = 5078; - rType = 0; - vrLen = 898; - vrLoc = 1221; - }; - 6B02490D1001EB2900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 41"; - rLen = 21; - rLoc = 1682; - rType = 0; - vrLen = 576; - vrLoc = 536; - }; - 6B02490E1001EB2900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 223"; - rLen = 0; - rLoc = 14074; - rType = 0; - vrLen = 468; - vrLoc = 4792; - }; - 6B02490F1001EB2900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 73"; - rLen = 0; - rLoc = 2489; - rType = 0; - vrLen = 898; - vrLoc = 1221; - }; - 6B0249101001EB2900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 86"; - rLen = 15; - rLoc = 2922; - rType = 0; - vrLen = 884; - vrLoc = 1217; - }; - 6B0249111001EB2900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 223"; - rLen = 0; - rLoc = 14074; - rType = 0; - vrLen = 468; - vrLoc = 4792; - }; - 6B0249121001EB2900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 41"; - rLen = 21; - rLoc = 1682; - rType = 0; - vrLen = 576; - vrLoc = 536; - }; - 6B0249131001EB2900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 240"; - rLen = 0; - rLoc = 14396; - rType = 0; - vrLen = 484; - vrLoc = 4931; - }; - 6B0249171001EBBC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 227"; - rLen = 0; - rLoc = 14155; - rType = 0; - vrLen = 517; - vrLoc = 4931; - }; - 6B0249181001EBBC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: no match for 'operator==' in '*((+(((unsigned int)j) * 26u)) + p) == 65535'"; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - rLen = 1; - rLoc = 168; - rType = 1; - }; - 6B0249191001EBBC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 227"; - rLen = 0; - rLoc = 14155; - rType = 0; - vrLen = 517; - vrLoc = 4931; - }; - 6B02491A1001EBBC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 141"; - rLen = 0; - rLoc = 5141; - rType = 0; - vrLen = 903; - vrLoc = 4040; - }; - 6B0249201001ED7500CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: cannot convert 'dtTilePortal**' to 'dtTilePortal*' in initialization"; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - rLen = 0; - rLoc = 175; - rType = 1; - }; - 6B0249211001ED7500CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 176"; - rLen = 0; - rLoc = 5516; - rType = 0; - vrLen = 1263; - vrLoc = 4460; - }; - 6B0249221001ED9800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 176"; - rLen = 0; - rLoc = 5516; - rType = 0; - vrLen = 1368; - vrLoc = 4460; - }; - 6B0249241001EDB000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 176"; - rLen = 0; - rLoc = 5516; - rType = 0; - vrLen = 1263; - vrLoc = 4460; - }; - 6B0249261001EDCA00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 176"; - rLen = 0; - rLoc = 5516; - rType = 0; - vrLen = 1263; - vrLoc = 4460; - }; - 6B0249281001EDD400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 176"; - rLen = 0; - rLoc = 5516; - rType = 0; - vrLen = 1263; - vrLoc = 4460; - }; - 6B02492A1001EDE800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 176"; - rLen = 0; - rLoc = 5516; - rType = 0; - vrLen = 1263; - vrLoc = 4460; - }; - 6B02492B1001EE1C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 157"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 475; - vrLoc = 3488; - }; - 6B02492C1001EE1C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 187"; - rLen = 0; - rLoc = 5589; - rType = 0; - vrLen = 427; - vrLoc = 6000; - }; - 6B02492D1001EEB800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 187"; - rLen = 0; - rLoc = 5589; - rType = 0; - vrLen = 933; - vrLoc = 5494; - }; - 6B02492E1001EEB800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 355"; - rLen = 0; - rLoc = 10025; - rType = 0; - vrLen = 799; - vrLoc = 8825; - }; - 6B02492F1001EEB800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 187"; - rLen = 0; - rLoc = 5589; - rType = 0; - vrLen = 933; - vrLoc = 5494; - }; - 6B0249301001EEB800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 271"; - rLen = 0; - rLoc = 6770; - rType = 0; - vrLen = 682; - vrLoc = 6207; - }; - 6B0249341001EEC800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: 'poly' was not declared in this scope"; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - rLen = 0; - rLoc = 254; - rType = 1; - }; - 6B0249351001EEC800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 239"; - rLen = 0; - rLoc = 6179; - rType = 0; - vrLen = 673; - vrLoc = 5548; - }; - 6B0249371001EEFE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 267"; - rLen = 0; - rLoc = 6761; - rType = 0; - vrLen = 596; - vrLoc = 6007; - }; - 6B0249391002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 267"; - rLen = 0; - rLoc = 6810; - rType = 0; - vrLen = 659; - vrLoc = 6137; - }; - 6B02493A1002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 87"; - rLen = 0; - rLoc = 2850; - rType = 0; - vrLen = 463; - vrLoc = 1360; - }; - 6B02493B1002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 1289"; - rLen = 0; - rLoc = 29566; - rType = 0; - vrLen = 797; - vrLoc = 29170; - }; - 6B02493C1002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 111"; - rLen = 0; - rLoc = 4196; - rType = 0; - vrLen = 1148; - vrLoc = 2837; - }; - 6B02493D1002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 311"; - rLen = 0; - rLoc = 24734; - rType = 0; - vrLen = 707; - vrLoc = 6921; - }; - 6B02493E1002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 267"; - rLen = 0; - rLoc = 6810; - rType = 0; - vrLen = 659; - vrLoc = 6137; - }; - 6B02493F1002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 72"; - rLen = 329; - rLoc = 2105; - rType = 0; - vrLen = 1347; - vrLoc = 1785; - }; - 6B0249401002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 292"; - rLen = 15; - rLoc = 22502; - rType = 0; - vrLen = 604; - vrLoc = 6413; - }; - 6B0249411002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 79"; - rLen = 446; - rLoc = 2434; - rType = 0; - vrLen = 1347; - vrLoc = 1785; - }; - 6B0249421002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 299"; - rLen = 0; - rLoc = 24908; - rType = 0; - vrLen = 630; - vrLoc = 6520; - }; - 6B0249431002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 87"; - rLen = 0; - rLoc = 2850; - rType = 0; - vrLen = 1342; - vrLoc = 1785; - }; - 6B0249441002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 87"; - rLen = 0; - rLoc = 2850; - rType = 0; - vrLen = 463; - vrLoc = 1360; - }; - 6B0249451002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 1289"; - rLen = 0; - rLoc = 29566; - rType = 0; - vrLen = 797; - vrLoc = 29170; - }; - 6B0249461002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 301"; - rLen = 0; - rLoc = 24350; - rType = 0; - vrLen = 507; - vrLoc = 6694; - }; - 6B0249471002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 111"; - rLen = 0; - rLoc = 4196; - rType = 0; - vrLen = 1148; - vrLoc = 2837; - }; - 6B0249481002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 311"; - rLen = 0; - rLoc = 24734; - rType = 0; - vrLen = 707; - vrLoc = 6921; - }; - 6B0249491002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 111"; - rLen = 0; - rLoc = 4196; - rType = 0; - vrLen = 1148; - vrLoc = 2837; - }; - 6B02494A1002118200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 301"; - rLen = 0; rLoc = 23976; rType = 0; - vrLen = 748; - vrLoc = 6919; - }; - 6B02494B1003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 37"; - rLen = 0; - rLoc = 1482; - rType = 0; - vrLen = 809; - vrLoc = 837; - }; - 6B02494C1003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 639"; - rLen = 0; - rLoc = 13901; - rType = 0; - vrLen = 742; - vrLoc = 13499; - }; - 6B02494D1003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 31"; - rLen = 0; - rLoc = 1501; - rType = 0; - vrLen = 1090; - vrLoc = 2935; - }; - 6B02494E1003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 315"; - rLen = 0; - rLoc = 23267; - rType = 0; - vrLen = 777; - vrLoc = 7381; - }; - 6B02494F1003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 306"; - rLen = 0; - rLoc = 23654; - rType = 0; - vrLen = 608; - vrLoc = 6919; - }; - 6B0249501003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 111"; - rLen = 0; - rLoc = 4196; - rType = 0; - vrLen = 802; - vrLoc = 1483; - }; - 6B0249511003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 314"; - rLen = 13; - rLoc = 23509; - rType = 0; - vrLen = 694; - vrLoc = 7392; - }; - 6B0249521003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 114"; - rLen = 40; - rLoc = 5822; - rType = 0; - vrLen = 1140; - vrLoc = 2885; - }; - 6B0249531003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 309"; - rLen = 0; - rLoc = 23268; - rType = 0; - vrLen = 741; - vrLoc = 7381; - }; - 6B0249541003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 28"; - rLen = 0; - rLoc = 1398; - rType = 0; - vrLen = 1130; - vrLoc = 667; - }; - 6B0249551003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 313"; - rLen = 0; - rLoc = 23167; - rType = 0; - vrLen = 795; - vrLoc = 7381; - }; - 6B0249561003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 40"; - rLen = 0; - rLoc = 1924; - rType = 0; - vrLen = 985; - vrLoc = 948; - }; - 6B0249571003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 37"; - rLen = 0; - rLoc = 1482; - rType = 0; - vrLen = 809; - vrLoc = 837; - }; - 6B0249581003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 639"; - rLen = 0; - rLoc = 13901; - rType = 0; - vrLen = 742; - vrLoc = 13499; - }; - 6B0249591003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 31"; - rLen = 0; - rLoc = 1501; - rType = 0; - vrLen = 985; - vrLoc = 948; - }; - 6B02495A1003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 315"; - rLen = 0; - rLoc = 23267; - rType = 0; - vrLen = 777; - vrLoc = 7381; - }; - 6B02495B1003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 31"; - rLen = 0; - rLoc = 1501; - rType = 0; - vrLen = 1090; - vrLoc = 2935; - }; - 6B02495C1003435800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 316"; - rLen = 0; - rLoc = 23268; - rType = 0; - vrLen = 888; - vrLoc = 7381; - }; - 6B0249611003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 314"; - rLen = 0; - rLoc = 23270; - rType = 0; - vrLen = 1007; - vrLoc = 7272; - }; - 6B0249621003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 123"; - rLen = 0; - rLoc = 6300; - rType = 0; - vrLen = 1186; - vrLoc = 3148; - }; - 6B0249631003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 327"; - rLen = 0; - rLoc = 23547; - rType = 0; - vrLen = 888; - vrLoc = 7381; - }; - 6B0249641003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 31"; - rLen = 0; - rLoc = 1501; - rType = 0; - vrLen = 1349; - vrLoc = 0; - }; - 6B0249651003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 307"; - rLen = 0; - rLoc = 23112; - rType = 0; - vrLen = 799; - vrLoc = 7270; - }; - 6B0249661003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 36"; - rLen = 10; - rLoc = 1683; - rType = 0; - vrLen = 932; - vrLoc = 1185; - }; - 6B0249671003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 316"; - rLen = 0; - rLoc = 23270; - rType = 0; - vrLen = 715; - vrLoc = 7272; - }; - 6B0249681003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 30"; - rLen = 0; - rLoc = 1327; - rType = 0; - vrLen = 1177; - vrLoc = 784; - }; - 6B0249691003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 316"; - rLen = 0; - rLoc = 23270; - rType = 0; - vrLen = 715; - vrLoc = 7272; - }; - 6B02496A1003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 27"; - rLen = 0; - rLoc = 1205; - rType = 0; - vrLen = 1255; - vrLoc = 706; - }; - 6B02496B1003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 316"; - rLen = 0; - rLoc = 23270; - rType = 0; - vrLen = 782; - vrLoc = 7272; - }; - 6B02496C1003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 26"; - rLen = 21; - rLoc = 1113; - rType = 0; - vrLen = 1254; - vrLoc = 706; - }; - 6B02496D1003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 318"; - rLen = 0; - rLoc = 23270; - rType = 0; - vrLen = 830; - vrLoc = 7272; - }; - 6B02496E1003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 26"; - rLen = 21; - rLoc = 1113; - rType = 0; - vrLen = 1254; - vrLoc = 706; - }; - 6B02496F1003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 318"; - rLen = 0; - rLoc = 23270; - rType = 0; - vrLen = 862; - vrLoc = 7272; - }; - 6B0249701003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 35"; - rLen = 12; - rLoc = 1519; - rType = 0; - vrLen = 1187; - vrLoc = 1096; - }; - 6B0249711003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 325"; - rLen = 154; - rLoc = 23271; - rType = 0; - vrLen = 1075; - vrLoc = 7622; - }; - 6B0249721003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 123"; - rLen = 0; - rLoc = 6300; - rType = 0; - vrLen = 1186; - vrLoc = 3148; - }; - 6B0249731003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 314"; - rLen = 0; - rLoc = 23270; - rType = 0; - vrLen = 1007; - vrLoc = 7272; - }; - 6B0249741003715300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 115"; - rLen = 0; - rLoc = 5170; - rType = 0; - vrLen = 1280; - vrLoc = 3098; - }; - 6B02497A1003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 138"; - rLen = 0; - rLoc = 5810; - rType = 0; - vrLen = 1307; - vrLoc = 3777; - }; - 6B02497B1003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 37"; - rLen = 0; - rLoc = 1482; - rType = 0; - vrLen = 740; - vrLoc = 947; - }; - 6B02497C1003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 20"; - rLen = 0; - rLoc = 967; - rType = 0; - vrLen = 896; - vrLoc = 3286; - }; - 6B02497D1003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 422"; - rLen = 0; - rLoc = 22596; - rType = 0; - vrLen = 735; - vrLoc = 10293; + vrLen = 2856; + vrLoc = 27512; }; 6B02497E1003751300CF7107 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; name = "BuilderStatMeshTiled.h: 34"; rLen = 0; - rLoc = 707; + rLoc = 703; rType = 0; vrLen = 687; vrLoc = 77; }; - 6B02497F1003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 48"; - rLen = 0; - rLoc = 1811; - rType = 0; - vrLen = 541; - vrLoc = 536; - }; - 6B0249801003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 27"; - rLen = 205; - rLoc = 429; - rType = 0; - vrLen = 558; - vrLoc = 362; - }; - 6B0249811003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 42"; - rLen = 13; - rLoc = 1818; - rType = 0; - vrLen = 605; - vrLoc = 439; - }; - 6B0249821003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */; - name = "BuilderStatMeshTiled.cpp: 966"; - rLen = 0; - rLoc = 29411; - rType = 0; - vrLen = 3022; - vrLoc = 27329; - }; - 6B0249831003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 29"; - rLen = 69; - rLoc = 572; - rType = 0; - vrLen = 600; - vrLoc = 100; - }; - 6B0249841003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 20"; - rLen = 0; - rLoc = 967; - rType = 0; - vrLen = 896; - vrLoc = 3286; - }; - 6B0249851003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 422"; - rLen = 0; - rLoc = 22596; - rType = 0; - vrLen = 735; - vrLoc = 10293; - }; - 6B0249861003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */; - name = "BuilderStatMeshTiled.cpp: 966"; - rLen = 0; - rLoc = 29411; - rType = 0; - vrLen = 2840; - vrLoc = 27512; - }; - 6B0249871003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; - name = "BuilderStatMeshTiled.h: 34"; - rLen = 0; - rLoc = 707; - rType = 0; - vrLen = 687; - vrLoc = 77; - }; - 6B0249881003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 61"; - rLen = 0; - rLoc = 1288; - rType = 0; - vrLen = 686; - vrLoc = 808; - }; - 6B0249891003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 61"; - rLen = 0; - rLoc = 1288; - rType = 0; - vrLen = 686; - vrLoc = 808; - }; - 6B02498A1003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 48"; - rLen = 0; - rLoc = 1811; - rType = 0; - vrLen = 541; - vrLoc = 536; - }; - 6B02498B1003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 42"; - rLen = 0; - rLoc = 1817; - rType = 0; - vrLen = 586; - vrLoc = 439; - }; - 6B02498C1003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 29"; - rLen = 69; - rLoc = 572; - rType = 0; - vrLen = 577; - vrLoc = 124; - }; 6B02498D1003751300CF7107 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; + fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; name = "BuilderStatMesh.h: 27"; - rLen = 205; - rLoc = 429; + rLen = 221; + rLoc = 425; rType = 0; vrLen = 558; vrLoc = 362; }; - 6B02498E1003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 29"; - rLen = 69; - rLoc = 572; - rType = 0; - vrLen = 600; - vrLoc = 100; - }; - 6B02498F1003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 42"; - rLen = 13; - rLoc = 1818; - rType = 0; - vrLen = 605; - vrLoc = 439; - }; - 6B0249901003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */; - name = "BuilderStatMeshTiled.cpp: 966"; - rLen = 0; - rLoc = 29411; - rType = 0; - vrLen = 3022; - vrLoc = 27329; - }; - 6B0249911003751300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 100"; - rLen = 66; - rLoc = 1886; - rType = 0; - vrLen = 569; - vrLoc = 1494; - }; - 6B024992100375AF00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 35"; - rLen = 0; - rLoc = 634; - rType = 0; - vrLen = 558; - vrLoc = 362; - }; - 6B024993100375AF00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 99"; - rLen = 0; - rLoc = 1870; - rType = 0; - vrLen = 601; - vrLoc = 949; - }; - 6B024994100375AF00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 42"; - rLen = 13; - rLoc = 1818; - rType = 0; - vrLen = 605; - vrLoc = 439; - }; - 6B024995100375AF00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 99"; - rLen = 0; - rLoc = 1885; - rType = 0; - vrLen = 569; - vrLoc = 1512; - }; - 6B024996100375AF00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 35"; - rLen = 0; - rLoc = 634; - rType = 0; - vrLen = 558; - vrLoc = 362; - }; - 6B024997100375AF00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 99"; - rLen = 0; - rLoc = 1870; - rType = 0; - vrLen = 601; - vrLoc = 949; - }; - 6B024998100375AF00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 89"; - rLen = 0; - rLoc = 2750; - rType = 0; - vrLen = 816; - vrLoc = 1253; - }; - 6B0249991003762100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 208"; - rLen = 64; - rLoc = 4629; - rType = 0; - vrLen = 956; - vrLoc = 4216; - }; - 6B02499A1003762100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 89"; - rLen = 10; - rLoc = 2707; - rType = 0; - vrLen = 799; - vrLoc = 1255; - }; - 6B02499B1003762100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 89"; - rLen = 10; - rLoc = 2707; - rType = 0; - vrLen = 801; - vrLoc = 1253; - }; - 6B02499C1003762100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 208"; - rLen = 64; - rLoc = 4629; - rType = 0; - vrLen = 956; - vrLoc = 4216; - }; - 6B02499D1003762100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 198"; - rLen = 0; - rLoc = 8861; - rType = 0; - vrLen = 761; - vrLoc = 3643; - }; - 6B02499E1003766D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 198"; - rLen = 0; - rLoc = 8861; - rType = 0; - vrLen = 761; - vrLoc = 3643; - }; - 6B02499F1003766D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */; - name = "DetourDebugDraw.h: 30"; - rLen = 99; - rLoc = 1306; - rType = 0; - vrLen = 1433; - vrLoc = 0; - }; - 6B0249A01003766D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 198"; - rLen = 0; - rLoc = 8861; - rType = 0; - vrLen = 761; - vrLoc = 3643; - }; - 6B0249A11003766D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */; - name = "DetourDebugDraw.h: 30"; - rLen = 99; - rLoc = 1306; - rType = 0; - vrLen = 1433; - vrLoc = 0; - }; - 6B0249A21003766D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 411"; - rLen = 0; - rLoc = 10802; - rType = 0; - vrLen = 655; - vrLoc = 9819; - }; - 6B0249A71003774A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 395"; - rLen = 0; - rLoc = 10482; - rType = 0; - vrLen = 702; - vrLoc = 9819; - }; - 6B0249A81003774A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 146"; - rLen = 0; - rLoc = 5780; - rType = 0; - vrLen = 1098; - vrLoc = 4413; - }; - 6B0249A91003774A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: redeclaration of 'float col [4]'"; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - rLen = 0; - rLoc = 835; - rType = 1; - }; - 6B0249AA1003774A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 395"; - rLen = 0; - rLoc = 10482; - rType = 0; - vrLen = 702; - vrLoc = 9819; - }; - 6B0249AB1003774A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 146"; - rLen = 0; - rLoc = 5780; - rType = 0; - vrLen = 1098; - vrLoc = 4413; - }; - 6B0249AC1003774A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 200"; - rLen = 0; - rLoc = 8994; - rType = 0; - vrLen = 826; - vrLoc = 3701; - }; - 6B0249AF100377E900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 213"; - rLen = 0; - rLoc = 8143; - rType = 0; - vrLen = 849; - vrLoc = 4127; - }; - 6B0249B11003783F00CF7107 /* BuilderTiledMesh.cpp:836 */ = { + 6B0249B11003783F00CF7107 /* Sample_TileMesh.cpp:834 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -3122,62 +639,15 @@ continueAfterActions = 0; countType = 0; delayBeforeContinue = 0; - fileReference = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; + fileReference = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; functionName = "BuilderTiledMesh::toolRecalc()"; hitCount = 0; ignoreCount = 0; - lineNumber = 836; + lineNumber = 834; location = Recast; modificationTime = 268741438.169822; state = 1; }; - 6B0249B41003784E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 85"; - rLen = 6; - rLoc = 2657; - rType = 0; - vrLen = 723; - vrLoc = 1213; - }; - 6B0249B61003787000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; - rLen = 1; - rLoc = 31; - rType = 1; - }; - 6B0249B81003788300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 85"; - rLen = 6; - rLoc = 2657; - rType = 0; - vrLen = 723; - vrLoc = 1213; - }; - 6B0249B91003788300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 85"; - rLen = 6; - rLoc = 2657; - rType = 0; - vrLen = 723; - vrLoc = 1213; - }; - 6B0249BA1003788300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; - name = "ChunkyTriMesh.cpp: 32"; - rLen = 46; - rLoc = 1108; - rType = 0; - vrLen = 438; - vrLoc = 965; - }; 6B0249BE1003793900CF7107 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; @@ -3188,344 +658,7 @@ vrLen = 438; vrLoc = 965; }; - 6B0249BF1003793900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 87"; - rLen = 0; - rLoc = 2672; - rType = 0; - vrLen = 576; - vrLoc = 1320; - }; - 6B0249C01003793900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - rLen = 0; - rLoc = 0; - rType = 1; - }; - 6B0249C11003793900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; - name = "ChunkyTriMesh.cpp: 32"; - rLen = 46; - rLoc = 1108; - rType = 0; - vrLen = 438; - vrLoc = 965; - }; - 6B0249C21003793900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 87"; - rLen = 0; - rLoc = 2672; - rType = 0; - vrLen = 576; - vrLoc = 1320; - }; - 6B0249C31003793900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 505"; - rLen = 0; - rLoc = 24766; - rType = 0; - vrLen = 678; - vrLoc = 12063; - }; - 6B0249C41003794C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 497"; - rLen = 0; - rLoc = 24636; - rType = 0; - vrLen = 682; - vrLoc = 12063; - }; - 6B0249C51003797300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 187"; - rLen = 0; - rLoc = 5589; - rType = 0; - vrLen = 508; - vrLoc = 5903; - }; - 6B0249C61003797300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 281"; - rLen = 7; - rLoc = 19006; - rType = 0; - vrLen = 524; - vrLoc = 6952; - }; - 6B0249CA100379D800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 334"; - rLen = 0; - rLoc = 15388; - rType = 0; - vrLen = 498; - vrLoc = 7324; - }; - 6B0249CB100379D800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 281"; - rLen = 7; - rLoc = 19006; - rType = 0; - vrLen = 722; - vrLoc = 6846; - }; - 6B0249CC100379D800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 281"; - rLen = 7; - rLoc = 19006; - rType = 0; - vrLen = 722; - vrLoc = 6846; - }; - 6B0249CD100379D800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 334"; - rLen = 0; - rLoc = 15388; - rType = 0; - vrLen = 498; - vrLoc = 7324; - }; - 6B0249CE100379D800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 498"; - rLen = 0; - rLoc = 24623; - rType = 0; - vrLen = 761; - vrLoc = 11860; - }; - 6B0249CF10037A0C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 491"; - rLen = 0; - rLoc = 24277; - rType = 0; - vrLen = 761; - vrLoc = 11860; - }; - 6B0249D010037A1500CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 491"; - rLen = 0; - rLoc = 24277; - rType = 0; - vrLen = 727; - vrLoc = 11857; - }; - 6B0249D110037A2000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 491"; - rLen = 0; - rLoc = 24277; - rType = 0; - vrLen = 608; - vrLoc = 11860; - }; - 6B0249D310037A3C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 503"; - rLen = 0; - rLoc = 24693; - rType = 0; - vrLen = 747; - vrLoc = 12100; - }; - 6B0249D410037A5100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 502"; - rLen = 0; - rLoc = 24690; - rType = 0; - vrLen = 747; - vrLoc = 12100; - }; - 6B0249D510037A7400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 502"; - rLen = 0; - rLoc = 24690; - rType = 0; - vrLen = 575; - vrLoc = 12100; - }; - 6B0249D610037AFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 494"; - rLen = 0; - rLoc = 24383; - rType = 0; - vrLen = 803; - vrLoc = 12005; - }; - 6B0249D710037AFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 50"; - rLen = 13; - rLoc = 1870; - rType = 0; - vrLen = 382; - vrLoc = 651; - }; - 6B0249D810037AFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 222"; - rLen = 0; - rLoc = 8561; - rType = 0; - vrLen = 685; - vrLoc = 4570; - }; - 6B0249D910037AFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 494"; - rLen = 0; - rLoc = 24383; - rType = 0; - vrLen = 803; - vrLoc = 12005; - }; - 6B0249DA10037AFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 222"; - rLen = 0; - rLoc = 8561; - rType = 0; - vrLen = 685; - vrLoc = 4570; - }; - 6B0249DB10037AFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 50"; - rLen = 13; - rLoc = 1870; - rType = 0; - vrLen = 382; - vrLoc = 651; - }; - 6B0249DC10037AFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 222"; - rLen = 0; - rLoc = 8464; - rType = 0; - vrLen = 774; - vrLoc = 4586; - }; - 6B0249DF10037B3C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 222"; - rLen = 0; - rLoc = 8464; - rType = 0; - vrLen = 824; - vrLoc = 4586; - }; - 6B0249E010037B3C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 494"; - rLen = 0; - rLoc = 24383; - rType = 0; - vrLen = 837; - vrLoc = 12003; - }; - 6B0249E110037B3C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 222"; - rLen = 0; - rLoc = 8464; - rType = 0; - vrLen = 824; - vrLoc = 4586; - }; - 6B0249E210037B3C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 497"; - rLen = 0; - rLoc = 24384; - rType = 0; - vrLen = 691; - vrLoc = 11951; - }; - 6B0249E310037B5600CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 494"; - rLen = 0; - rLoc = 24347; - rType = 0; - vrLen = 691; - vrLoc = 11951; - }; - 6B0249E410037B5F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 494"; - rLen = 0; - rLoc = 24347; - rType = 0; - vrLen = 730; - vrLoc = 11873; - }; - 6B0249E510037B7100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 494"; - rLen = 0; - rLoc = 24347; - rType = 0; - vrLen = 507; - vrLoc = 12135; - }; - 6B0249E810037B7D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 511"; - rLen = 0; - rLoc = 24789; - rType = 0; - vrLen = 586; - vrLoc = 12278; - }; - 6B0249ED10037C0A00CF7107 /* DetourTiledNavMesh.cpp:1 */ = { + 6B0249ED10037C0A00CF7107 /* DetourTileNavMesh.cpp:1 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -3533,7 +666,7 @@ continueAfterActions = 0; countType = 0; delayBeforeContinue = 0; - fileReference = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; + fileReference = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; functionName = "dtTiledNavMesh::queryTilePolygons(dtTile* tile, const float* qmin, const float* qmax, dtTilePolyRef* polys, const int maxPolys)"; hitCount = 0; ignoreCount = 0; @@ -3542,7 +675,7 @@ modificationTime = 268741438.170399; state = 1; }; - 6B0249EF10037C0C00CF7107 /* DetourTiledNavMesh.cpp:1 */ = { + 6B0249EF10037C0C00CF7107 /* DetourTileNavMesh.cpp:1 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -3550,7 +683,7 @@ continueAfterActions = 0; countType = 0; delayBeforeContinue = 0; - fileReference = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; + fileReference = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; functionName = "dtTiledNavMesh::queryTilePolygons(dtTile* tile, const float* qmin, const float* qmax, dtTilePolyRef* polys, const int maxPolys)"; hitCount = 0; ignoreCount = 0; @@ -3559,1615 +692,17 @@ modificationTime = 268741438.170594; state = 1; }; - 6B0249F310037CFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 87"; - rLen = 0; - rLoc = 2672; - rType = 0; - vrLen = 529; - vrLoc = 1407; - }; - 6B0249F410037CFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 444"; - rLen = 0; - rLoc = 23092; - rType = 0; - vrLen = 475; - vrLoc = 10568; - }; - 6B0249F510037CFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - rLen = 0; - rLoc = 409; - rType = 1; - }; - 6B0249F610037CFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 503"; - rLen = 0; - rLoc = 24644; - rType = 0; - vrLen = 620; - vrLoc = 12244; - }; - 6B0249F710037CFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 87"; - rLen = 0; - rLoc = 2672; - rType = 0; - vrLen = 529; - vrLoc = 1407; - }; - 6B0249F810037CFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 430"; - rLen = 0; - rLoc = 22847; - rType = 0; - vrLen = 475; - vrLoc = 10568; - }; - 6B0249F910037CFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 393"; - rLen = 0; - rLoc = 10393; - rType = 0; - vrLen = 580; - vrLoc = 9884; - }; - 6B0249FA10037CFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 444"; - rLen = 0; - rLoc = 23092; - rType = 0; - vrLen = 475; - vrLoc = 10568; - }; - 6B0249FB10037CFB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 397"; - rLen = 0; - rLoc = 10542; - rType = 0; - vrLen = 534; - vrLoc = 9988; - }; - 6B0249FE10037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 399"; - rLen = 0; - rLoc = 10613; - rType = 0; - vrLen = 534; - vrLoc = 9988; - }; - 6B0249FF10037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 205"; - rLen = 0; - rLoc = 4585; - rType = 0; - vrLen = 580; - vrLoc = 4340; - }; - 6B024A0010037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 25"; - rLen = 37; - rLoc = 392; - rType = 0; - vrLen = 460; - vrLoc = 390; - }; - 6B024A0110037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 54"; - rLen = 0; - rLoc = 1926; - rType = 0; - vrLen = 409; - vrLoc = 651; - }; - 6B024A0210037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 97"; - rLen = 0; - rLoc = 2888; - rType = 0; - vrLen = 540; - vrLoc = 1645; - }; - 6B024A0310037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 124"; - rLen = 112; - rLoc = 4084; - rType = 0; - vrLen = 932; - vrLoc = 3779; - }; - 6B024A0410037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 399"; - rLen = 0; - rLoc = 10613; - rType = 0; - vrLen = 534; - vrLoc = 9988; - }; - 6B024A0510037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 29"; - rLen = 78; - rLoc = 473; - rType = 0; - vrLen = 460; - vrLoc = 390; - }; - 6B024A0610037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 205"; - rLen = 0; - rLoc = 4585; - rType = 0; - vrLen = 610; - vrLoc = 4340; - }; - 6B024A0710037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 29"; - rLen = 78; - rLoc = 473; - rType = 0; - vrLen = 460; - vrLoc = 390; - }; - 6B024A0810037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 205"; - rLen = 0; - rLoc = 4585; - rType = 0; - vrLen = 580; - vrLoc = 4340; - }; - 6B024A0910037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 84"; - rLen = 0; - rLoc = 2633; - rType = 0; - vrLen = 622; - vrLoc = 1391; - }; - 6B024A0A10037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 53"; - rLen = 8; - rLoc = 2002; - rType = 0; - vrLen = 416; - vrLoc = 629; - }; - 6B024A0B10037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 96"; - rLen = 0; - rLoc = 2888; - rType = 0; - vrLen = 574; - vrLoc = 1645; - }; - 6B024A0C10037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 52"; - rLen = 0; - rLoc = 1931; - rType = 0; - vrLen = 394; - vrLoc = 651; - }; - 6B024A0D10037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 25"; - rLen = 37; - rLoc = 392; - rType = 0; - vrLen = 460; - vrLoc = 390; - }; - 6B024A0E10037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 95"; - rLen = 0; - rLoc = 2867; - rType = 0; - vrLen = 571; - vrLoc = 1645; - }; - 6B024A0F10037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 54"; - rLen = 0; - rLoc = 1926; - rType = 0; - vrLen = 409; - vrLoc = 651; - }; - 6B024A1010037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 124"; - rLen = 112; - rLoc = 4084; - rType = 0; - vrLen = 932; - vrLoc = 3779; - }; - 6B024A1110037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 97"; - rLen = 0; - rLoc = 2888; - rType = 0; - vrLen = 540; - vrLoc = 1645; - }; - 6B024A1210037DB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 92"; - rLen = 0; - rLoc = 2929; - rType = 0; - vrLen = 619; - vrLoc = 2471; - }; - 6B024A1510037E0900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 92"; - rLen = 0; - rLoc = 2929; - rType = 0; - vrLen = 620; - vrLoc = 2471; - }; - 6B024A1610037E0900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 97"; - rLen = 0; - rLoc = 2888; - rType = 0; - vrLen = 540; - vrLoc = 1645; - }; - 6B024A1710037E0900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 92"; - rLen = 0; - rLoc = 2929; - rType = 0; - vrLen = 620; - vrLoc = 2471; - }; - 6B024A1810037E0900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 244"; - rLen = 0; - rLoc = 9472; - rType = 0; - vrLen = 597; - vrLoc = 5220; - }; - 6B024A1910037E3900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 244"; - rLen = 0; - rLoc = 9472; - rType = 0; - vrLen = 597; - vrLoc = 5220; - }; - 6B024A1A10037E4100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 244"; - rLen = 0; - rLoc = 9472; - rType = 0; - vrLen = 575; - vrLoc = 5405; - }; - 6B024A1B10037E5000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 494"; - rLen = 0; - rLoc = 24347; - rType = 0; - vrLen = 535; - vrLoc = 12003; - }; - 6B024A1C10037E5000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 241"; - rLen = 0; - rLoc = 9332; - rType = 0; - vrLen = 412; - vrLoc = 5405; - }; - 6B024A1E10037E9B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 235"; - rLen = 0; - rLoc = 8882; - rType = 0; - vrLen = 601; - vrLoc = 5322; - }; - 6B024A1F10037E9B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 54"; - rLen = 0; - rLoc = 1926; - rType = 0; - vrLen = 387; - vrLoc = 673; - }; - 6B024A2010037E9B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 93"; - rLen = 0; - rLoc = 3024; - rType = 0; - vrLen = 630; - vrLoc = 2540; - }; - 6B024A2110037E9B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 235"; - rLen = 0; - rLoc = 8882; - rType = 0; - vrLen = 601; - vrLoc = 5322; - }; - 6B024A2210037E9B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 54"; - rLen = 0; - rLoc = 1926; - rType = 0; - vrLen = 387; - vrLoc = 673; - }; - 6B024A2310037E9B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 93"; - rLen = 0; - rLoc = 3024; - rType = 0; - vrLen = 630; - vrLoc = 2540; - }; - 6B024A2410037E9B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 450"; - rLen = 0; - rLoc = 23229; - rType = 0; - vrLen = 633; - vrLoc = 10984; - }; - 6B024A2610037F3100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 753"; - rLen = 0; - rLoc = 16407; - rType = 0; - vrLen = 416; - vrLoc = 16206; - }; - 6B024A2710037F3100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 434"; - rLen = 18; - rLoc = 22910; - rType = 0; - vrLen = 638; - vrLoc = 10346; - }; - 6B024A2810037F3100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 434"; - rLen = 18; - rLoc = 22910; - rType = 0; - vrLen = 638; - vrLoc = 10346; - }; - 6B024A2910037F3100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 753"; - rLen = 0; - rLoc = 16407; - rType = 0; - vrLen = 416; - vrLoc = 16206; - }; - 6B024A2A10037F3100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 398"; - rLen = 0; - rLoc = 22053; - rType = 0; - vrLen = 633; - vrLoc = 9539; - }; - 6B024A2F10047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 195"; - rLen = 0; - rLoc = 5589; - rType = 0; - vrLen = 1048; - vrLoc = 5513; - }; - 6B024A3010047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 30"; - rLen = 21; - rLoc = 1344; - rType = 0; - vrLen = 1190; - vrLoc = 978; - }; - 6B024A3110047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: expected ',' or ';' before 'if'"; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - rLen = 0; - rLoc = 0; - rType = 1; - }; - 6B024A3210047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 56"; - rLen = 0; - rLoc = 2223; - rType = 0; - vrLen = 746; - vrLoc = 1778; - }; - 6B024A3310047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 155"; - rLen = 0; - rLoc = 6175; - rType = 0; - vrLen = 974; - vrLoc = 4607; - }; - 6B024A3410047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 84"; - rLen = 13; - rLoc = 2549; - rType = 0; - vrLen = 859; - vrLoc = 2469; - }; - 6B024A3510047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 84"; - rLen = 13; - rLoc = 2549; - rType = 0; - vrLen = 859; - vrLoc = 2469; - }; - 6B024A3610047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 84"; - rLen = 0; - rLoc = 2563; - rType = 0; - vrLen = 859; - vrLoc = 2469; - }; - 6B024A3710047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 58"; - rLen = 0; - rLoc = 2223; - rType = 0; - vrLen = 638; - vrLoc = 1961; - }; - 6B024A3810047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 258"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 870; - vrLoc = 5819; - }; - 6B024A3910047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 129"; - rLen = 81; - rLoc = 4284; - rType = 0; - vrLen = 1205; - vrLoc = 4069; - }; - 6B024A3A10047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 247"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 855; - vrLoc = 5850; - }; - 6B024A3B10047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 195"; - rLen = 0; - rLoc = 5589; - rType = 0; - vrLen = 1048; - vrLoc = 5513; - }; - 6B024A3C10047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 247"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 862; - vrLoc = 5850; - }; - 6B024A3D10047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 129"; - rLen = 0; - rLoc = 4284; - rType = 0; - vrLen = 1139; - vrLoc = 1167; - }; - 6B024A3E10047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 247"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 862; - vrLoc = 5850; - }; - 6B024A3F10047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 42"; - rLen = 0; - rLoc = 1793; - rType = 0; - vrLen = 1210; - vrLoc = 1096; - }; - 6B024A4010047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 264"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 540; - vrLoc = 6210; - }; - 6B024A4110047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 30"; - rLen = 21; - rLoc = 1344; - rType = 0; - vrLen = 1190; - vrLoc = 978; - }; - 6B024A4210047FFD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 282"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 868; - vrLoc = 6277; - }; - 6B024A451004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 282"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 868; - vrLoc = 6277; - }; - 6B024A461004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 393"; - rLen = 0; - rLoc = 10380; - rType = 0; - vrLen = 761; - vrLoc = 9760; - }; - 6B024A471004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 49"; - rLen = 13; - rLoc = 1839; - rType = 0; - vrLen = 650; - vrLoc = 651; - }; - 6B024A481004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 41"; - rLen = 25; - rLoc = 1714; - rType = 0; - vrLen = 1231; - vrLoc = 1050; - }; - 6B024A491004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 239"; - rLen = 0; - rLoc = 9033; - rType = 0; - vrLen = 983; - vrLoc = 5008; - }; - 6B024A4A1004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 282"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 868; - vrLoc = 6277; - }; - 6B024A4B1004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 393"; - rLen = 0; - rLoc = 10380; - rType = 0; - vrLen = 761; - vrLoc = 9760; - }; - 6B024A4C1004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 239"; - rLen = 0; - rLoc = 9054; - rType = 0; - vrLen = 1002; - vrLoc = 4961; - }; - 6B024A4D1004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 49"; - rLen = 13; - rLoc = 1839; - rType = 0; - vrLen = 650; - vrLoc = 651; - }; - 6B024A4E1004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 239"; - rLen = 0; - rLoc = 9033; - rType = 0; - vrLen = 983; - vrLoc = 5008; - }; - 6B024A4F1004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 41"; - rLen = 25; - rLoc = 1714; - rType = 0; - vrLen = 1231; - vrLoc = 1050; - }; - 6B024A501004806000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 242"; - rLen = 0; - rLoc = 9150; - rType = 0; - vrLen = 1102; - vrLoc = 5008; - }; - 6B024A52100480B800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 242"; - rLen = 0; - rLoc = 9150; - rType = 0; - vrLen = 1102; - vrLoc = 5008; - }; - 6B024A53100480B800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - rLen = 0; - rLoc = 0; - rType = 1; - }; - 6B024A54100480B800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 242"; - rLen = 0; - rLoc = 9150; - rType = 0; - vrLen = 1102; - vrLoc = 5008; - }; - 6B024A55100480B800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 255"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 755; - vrLoc = 5914; - }; - 6B024A581004810A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 273"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 753; - vrLoc = 6276; - }; - 6B024A5A1004820500CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 282"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 842; - vrLoc = 6276; - }; - 6B024A5B1004844700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 158"; - rLen = 0; - rLoc = 6175; - rType = 0; - vrLen = 1102; - vrLoc = 4534; - }; - 6B024A5C1004844700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 228"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 915; - vrLoc = 5316; - }; - 6B024A5D1004844700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 228"; - rLen = 0; - rLoc = 13826; - rType = 0; - vrLen = 915; - vrLoc = 5316; - }; - 6B024A5E1004844700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 158"; - rLen = 0; - rLoc = 6175; - rType = 0; - vrLen = 1102; - vrLoc = 4534; - }; - 6B024A5F1004844700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 312"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 846; - vrLoc = 7026; - }; - 6B024A63100484C600CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: expected `;' before ')' token"; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - rLen = 0; - rLoc = 0; - rType = 1; - }; - 6B024A64100484C600CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 310"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 794; - vrLoc = 7225; - }; - 6B024A651004926300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 280"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 861; - vrLoc = 6292; - }; - 6B024A661004926300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 83"; - rLen = 0; - rLoc = 2435; - rType = 0; - vrLen = 652; - vrLoc = 1859; - }; - 6B024A671004926300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 195"; - rLen = 0; - rLoc = 5589; - rType = 0; - vrLen = 1048; - vrLoc = 5513; - }; - 6B024A681004926300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 281"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 832; - vrLoc = 6290; - }; - 6B024A691004926300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 158"; - rLen = 0; - rLoc = 6175; - rType = 0; - vrLen = 1102; - vrLoc = 4534; - }; - 6B024A6A1004926300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 281"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 832; - vrLoc = 6290; - }; - 6B024A6B1004926300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 48"; - rLen = 0; - rLoc = 2222; - rType = 0; - vrLen = 897; - vrLoc = 1501; - }; - 6B024A6C1004926300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 280"; - rLen = 0; - rLoc = 14315; - rType = 0; - vrLen = 861; - vrLoc = 6292; - }; - 6B024A6D1004926300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 83"; - rLen = 0; - rLoc = 2435; - rType = 0; - vrLen = 652; - vrLoc = 1859; - }; - 6B024A6E1004926300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 106"; - rLen = 0; - rLoc = 3504; - rType = 0; - vrLen = 1116; - vrLoc = 2494; - }; - 6B024A6F1004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 124"; - rLen = 8; - rLoc = 4116; - rType = 0; - vrLen = 859; - vrLoc = 4056; - }; - 6B024A701004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 54"; - rLen = 0; - rLoc = 2084; - rType = 0; - vrLen = 1108; - vrLoc = 1050; - }; - 6B024A711004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 482"; - rLen = 0; - rLoc = 17276; - rType = 0; - vrLen = 902; - vrLoc = 11574; - }; 6B024A721004A2FE00CF7107 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; + fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */; name = "DetourTiledNavMeshBuilder.cpp: 192"; rLen = 0; - rLoc = 5443; + rLoc = 5270; rType = 0; - vrLen = 1225; + vrLen = 489; vrLoc = 5200; }; - 6B024A731004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 396"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 767; - vrLoc = 9584; - }; - 6B024A741004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 76"; - rLen = 0; - rLoc = 2327; - rType = 0; - vrLen = 569; - vrLoc = 2369; - }; - 6B024A751004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 397"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 840; - vrLoc = 9602; - }; - 6B024A761004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 76"; - rLen = 0; - rLoc = 2327; - rType = 0; - vrLen = 568; - vrLoc = 2369; - }; - 6B024A771004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 397"; - rLen = 0; - rLoc = 14330; - rType = 0; - vrLen = 840; - vrLoc = 9602; - }; - 6B024A781004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 182"; - rLen = 43; - rLoc = 6895; - rType = 0; - vrLen = 974; - vrLoc = 4894; - }; - 6B024A791004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 423"; - rLen = 0; - rLoc = 18349; - rType = 0; - vrLen = 795; - vrLoc = 10054; - }; - 6B024A7A1004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 43"; - rLen = 4; - rLoc = 1876; - rType = 0; - vrLen = 1138; - vrLoc = 1050; - }; - 6B024A7B1004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 429"; - rLen = 0; - rLoc = 18450; - rType = 0; - vrLen = 735; - vrLoc = 10145; - }; - 6B024A7C1004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 43"; - rLen = 4; - rLoc = 1876; - rType = 0; - vrLen = 1138; - vrLoc = 1050; - }; - 6B024A7D1004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 429"; - rLen = 0; - rLoc = 18450; - rType = 0; - vrLen = 768; - vrLoc = 10145; - }; - 6B024A7E1004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 53"; - rLen = 0; - rLoc = 2066; - rType = 0; - vrLen = 1133; - vrLoc = 1050; - }; - 6B024A7F1004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 429"; - rLen = 0; - rLoc = 18450; - rType = 0; - vrLen = 768; - vrLoc = 10145; - }; - 6B024A801004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 53"; - rLen = 0; - rLoc = 2066; - rType = 0; - vrLen = 1133; - vrLoc = 1050; - }; - 6B024A811004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 482"; - rLen = 0; - rLoc = 17276; - rType = 0; - vrLen = 902; - vrLoc = 11574; - }; - 6B024A821004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 54"; - rLen = 0; - rLoc = 2084; - rType = 0; - vrLen = 1108; - vrLoc = 1050; - }; - 6B024A831004A2FE00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 549"; - rLen = 0; - rLoc = 17604; - rType = 0; - vrLen = 838; - vrLoc = 13241; - }; - 6B024A841004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 168"; - rLen = 0; - rLoc = 6736; - rType = 0; - vrLen = 1069; - vrLoc = 4673; - }; - 6B024A851004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 432"; - rLen = 166; - rLoc = 14331; - rType = 0; - vrLen = 1036; - vrLoc = 10746; - }; - 6B024A861004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 535"; - rLen = 0; - rLoc = 17114; - rType = 0; - vrLen = 838; - vrLoc = 13241; - }; - 6B024A871004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 158"; - rLen = 0; - rLoc = 6175; - rType = 0; - vrLen = 905; - vrLoc = 4674; - }; - 6B024A881004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 535"; - rLen = 0; - rLoc = 17114; - rType = 0; - vrLen = 838; - vrLoc = 13241; - }; - 6B024A891004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 158"; - rLen = 0; - rLoc = 6175; - rType = 0; - vrLen = 906; - vrLoc = 4673; - }; - 6B024A8A1004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 651"; - rLen = 0; - rLoc = 20353; - rType = 0; - vrLen = 791; - vrLoc = 16080; - }; - 6B024A8B1004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 157"; - rLen = 0; - rLoc = 5949; - rType = 0; - vrLen = 910; - vrLoc = 4673; - }; - 6B024A8C1004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 471"; - rLen = 0; - rLoc = 15585; - rType = 0; - vrLen = 965; - vrLoc = 14647; - }; - 6B024A8D1004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 157"; - rLen = 0; - rLoc = 5915; - rType = 0; - vrLen = 938; - vrLoc = 4673; - }; - 6B024A8E1004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 577"; - rLen = 0; - rLoc = 18268; - rType = 0; - vrLen = 812; - vrLoc = 14054; - }; - 6B024A8F1004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 159"; - rLen = 0; - rLoc = 6057; - rType = 0; - vrLen = 938; - vrLoc = 4673; - }; - 6B024A901004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 503"; - rLen = 75; - rLoc = 16309; - rType = 0; - vrLen = 883; - vrLoc = 12418; - }; - 6B024A911004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 158"; - rLen = 0; - rLoc = 5950; - rType = 0; - vrLen = 974; - vrLoc = 4673; - }; - 6B024A921004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 432"; - rLen = 166; - rLoc = 14331; - rType = 0; - vrLen = 1036; - vrLoc = 10746; - }; - 6B024A931004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 168"; - rLen = 0; - rLoc = 6736; - rType = 0; - vrLen = 1069; - vrLoc = 4673; - }; - 6B024A941004A54C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 264"; - rLen = 0; - rLoc = 14257; - rType = 0; - vrLen = 712; - vrLoc = 6266; - }; - 6B024AA91004A83400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 168"; - rLen = 1; - rLoc = 5140; - rType = 0; - vrLen = 682; - vrLoc = 5005; - }; - 6B024AAA1004A83400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 328"; - rLen = 0; - rLoc = 15606; - rType = 0; - vrLen = 787; - vrLoc = 7774; - }; - 6B024AAB1004A83400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 327"; - rLen = 0; - rLoc = 14750; - rType = 0; - vrLen = 607; - vrLoc = 7412; - }; - 6B024AAC1004A83400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: expected initializer before '*' token"; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - rLen = 1; - rLoc = 317; - rType = 1; - }; - 6B024AAD1004A83400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 516"; - rLen = 0; - rLoc = 20526; - rType = 0; - vrLen = 549; - vrLoc = 12742; - }; - 6B024AAE1004A83400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 235"; - rLen = 0; - rLoc = 6121; - rType = 0; - vrLen = 622; - vrLoc = 4743; - }; - 6B024AAF1004A83400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 168"; - rLen = 1; - rLoc = 5140; - rType = 0; - vrLen = 682; - vrLoc = 5005; - }; - 6B024AB01004A83400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 328"; - rLen = 0; - rLoc = 15606; - rType = 0; - vrLen = 787; - vrLoc = 7774; - }; - 6B024AB11004A83400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 327"; - rLen = 0; - rLoc = 14750; - rType = 0; - vrLen = 607; - vrLoc = 7412; - }; - 6B024AB21004A83400CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 367"; - rLen = 0; - rLoc = 9766; - rType = 0; - vrLen = 770; - vrLoc = 9199; - }; - 6B024AB41004A8E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 375"; - rLen = 0; - rLoc = 10039; - rType = 0; - vrLen = 799; - vrLoc = 9199; - }; - 6B024AB51004A8E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 236"; - rLen = 0; - rLoc = 5861; - rType = 0; - vrLen = 533; - vrLoc = 5523; - }; - 6B024AB71004A95900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 236"; - rLen = 0; - rLoc = 5861; - rType = 0; - vrLen = 569; - vrLoc = 5523; - }; - 6B024AB81004A95900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 178"; - rLen = 0; - rLoc = 5471; - rType = 0; - vrLen = 681; - vrLoc = 5008; - }; - 6B024AB91004A95900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 328"; - rLen = 0; - rLoc = 15606; - rType = 0; - vrLen = 741; - vrLoc = 7820; - }; - 6B024ABA1004A95900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 236"; - rLen = 0; - rLoc = 5861; - rType = 0; - vrLen = 569; - vrLoc = 5523; - }; - 6B024ABB1004A95900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 178"; - rLen = 0; - rLoc = 5471; - rType = 0; - vrLen = 681; - vrLoc = 5008; - }; - 6B024ABC1004A95900CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 201"; - rLen = 0; - rLoc = 8322; - rType = 0; - vrLen = 727; - vrLoc = 4522; - }; - 6B024ABD1004AAC100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 573"; - rLen = 0; - rLoc = 21568; - rType = 0; - vrLen = 490; - vrLoc = 13015; - }; - 6B024AC01004AB3900CF7107 /* DetourTiledNavMesh.cpp:1 */ = { + 6B024AC01004AB3900CF7107 /* DetourTileNavMesh.cpp:1 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -5175,7 +710,7 @@ continueAfterActions = 0; countType = 0; delayBeforeContinue = 0; - fileReference = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; + fileReference = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; functionName = "dtTiledNavMesh::addTile(int x, int y, unsigned char* data, int dataSize)"; hitCount = 1; ignoreCount = 0; @@ -5184,677 +719,9 @@ modificationTime = 268741455.406971; state = 1; }; - 6B024AC31004AB4100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 562"; - rLen = 0; - rLoc = 21335; - rType = 0; - vrLen = 690; - vrLoc = 12459; - }; - 6B024AC71004ABA100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 454"; - rLen = 0; - rLoc = 18693; - rType = 0; - vrLen = 608; - vrLoc = 10324; - }; - 6B024AC81004ABB300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 425"; - rLen = 0; - rLoc = 18063; - rType = 0; - vrLen = 608; - vrLoc = 10324; - }; - 6B024AC91004ABB600CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 425"; - rLen = 0; - rLoc = 18063; - rType = 0; - vrLen = 572; - vrLoc = 10297; - }; - 6B024ACA1004ABD100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 249"; - rLen = 0; - rLoc = 9332; - rType = 0; - vrLen = 374; - vrLoc = 5740; - }; - 6B024ACB1004ABD100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 425"; - rLen = 0; - rLoc = 18063; - rType = 0; - vrLen = 356; - vrLoc = 10350; - }; - 6B024ACD1004AC8D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 178"; - rLen = 0; - rLoc = 5471; - rType = 0; - vrLen = 716; - vrLoc = 4973; - }; - 6B024ACE1004AC8D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 240"; - rLen = 0; - rLoc = 5905; - rType = 0; - vrLen = 693; - vrLoc = 5479; - }; - 6B024ACF1004AC8D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 395"; - rLen = 0; - rLoc = 17276; - rType = 0; - vrLen = 864; - vrLoc = 9585; - }; - 6B024AD01004AC8D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 178"; - rLen = 0; - rLoc = 5471; - rType = 0; - vrLen = 716; - vrLoc = 4973; - }; - 6B024AD11004AC8D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 240"; - rLen = 0; - rLoc = 5905; - rType = 0; - vrLen = 693; - vrLoc = 5479; - }; - 6B024AD21004AC8D00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 398"; - rLen = 0; - rLoc = 17449; - rType = 0; - vrLen = 816; - vrLoc = 9514; - }; - 6B024AD51004ACF300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 185"; - rLen = 0; - rLoc = 7917; - rType = 0; - vrLen = 965; - vrLoc = 4224; - }; - 6B024AD61004AD4C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 168"; - rLen = 0; - rLoc = 6736; - rType = 0; - vrLen = 1068; - vrLoc = 4674; - }; - 6B024AD71004AD4C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 445"; - rLen = 0; - rLoc = 19065; - rType = 0; - vrLen = 852; - vrLoc = 16217; - }; - 6B024AD81004AD4C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 445"; - rLen = 0; - rLoc = 19065; - rType = 0; - vrLen = 852; - vrLoc = 16217; - }; - 6B024AD91004AD4C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 168"; - rLen = 0; - rLoc = 6736; - rType = 0; - vrLen = 1068; - vrLoc = 4674; - }; - 6B024ADA1004AD4C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 684"; - rLen = 0; - rLoc = 24719; - rType = 0; - vrLen = 929; - vrLoc = 16140; - }; - 6B024AE41004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 202"; - rLen = 0; - rLoc = 7804; - rType = 0; - vrLen = 901; - vrLoc = 6937; - }; - 6B024AE51004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 609"; - rLen = 3457; - rLoc = 12999; - rType = 0; - vrLen = 720; - vrLoc = 16442; - }; - 6B024AE61004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 173"; - rLen = 12; - rLoc = 6535; - rType = 0; - vrLen = 1033; - vrLoc = 5118; - }; - 6B024AE71004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: 'dtNode' was not declared in this scope"; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - rLen = 0; - rLoc = 0; - rType = 1; - }; - 6B024AE81004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 180"; - rLen = 0; - rLoc = 6939; - rType = 0; - vrLen = 901; - vrLoc = 4992; - }; - 6B024AE91004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 560"; - rLen = 0; - rLoc = 12022; - rType = 0; - vrLen = 547; - vrLoc = 11594; - }; - 6B024AEA1004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 202"; - rLen = 0; - rLoc = 7804; - rType = 0; - vrLen = 901; - vrLoc = 6937; - }; - 6B024AEB1004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 491"; - rLen = 0; - rLoc = 13733; - rType = 0; - vrLen = 655; - vrLoc = 10068; - }; - 6B024AEC1004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 609"; - rLen = 3457; - rLoc = 12999; - rType = 0; - vrLen = 720; - vrLoc = 16442; - }; - 6B024AED1004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 942"; - rLen = 0; - rLoc = 24910; - rType = 0; - vrLen = 882; - vrLoc = 20764; - }; - 6B024AEE1004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 99"; - rLen = 14; - rLoc = 3090; - rType = 0; - vrLen = 1206; - vrLoc = 2971; - }; - 6B024AEF1004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 978"; - rLen = 0; - rLoc = 26551; - rType = 0; - vrLen = 659; - vrLoc = 22394; - }; - 6B024AF01004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 99"; - rLen = 14; - rLoc = 3090; - rType = 0; - vrLen = 919; - vrLoc = 5006; - }; - 6B024AF11004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 942"; - rLen = 94; - rLoc = 24910; - rType = 0; - vrLen = 733; - vrLoc = 21298; - }; - 6B024AF21004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 169"; - rLen = 0; - rLoc = 6527; - rType = 0; - vrLen = 978; - vrLoc = 4997; - }; - 6B024AF31004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 958"; - rLen = 79; - rLoc = 25669; - rType = 0; - vrLen = 830; - vrLoc = 21564; - }; - 6B024AF41004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 170"; - rLen = 0; - rLoc = 6592; - rType = 0; - vrLen = 996; - vrLoc = 4997; - }; - 6B024AF51004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 958"; - rLen = 79; - rLoc = 25669; - rType = 0; - vrLen = 829; - vrLoc = 21565; - }; - 6B024AF61004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 170"; - rLen = 0; - rLoc = 6592; - rType = 0; - vrLen = 996; - vrLoc = 4997; - }; - 6B024AF71004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 975"; - rLen = 127; - rLoc = 26396; - rType = 0; - vrLen = 691; - vrLoc = 22102; - }; - 6B024AF81004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 173"; - rLen = 12; - rLoc = 6535; - rType = 0; - vrLen = 1033; - vrLoc = 5118; - }; - 6B024AF91004B12B00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1001"; - rLen = 0; - rLoc = 26930; - rType = 0; - vrLen = 611; - vrLoc = 22798; - }; - 6B024AFC1004C41E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 999"; - rLen = 0; - rLoc = 26884; - rType = 0; - vrLen = 756; - vrLoc = 22746; - }; - 6B024AFD1004C41E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 111"; - rLen = 327; - rLoc = 2122; - rType = 0; - vrLen = 764; - vrLoc = 1733; - }; - 6B024AFE1004C41E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 323"; - rLen = 0; - rLoc = 14554; - rType = 0; - vrLen = 766; - vrLoc = 7330; - }; - 6B024AFF1004C41E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 999"; - rLen = 0; - rLoc = 26884; - rType = 0; - vrLen = 756; - vrLoc = 22746; - }; - 6B024B001004C41E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 323"; - rLen = 0; - rLoc = 14554; - rType = 0; - vrLen = 766; - vrLoc = 7330; - }; - 6B024B011004C41E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 111"; - rLen = 327; - rLoc = 2122; - rType = 0; - vrLen = 764; - vrLoc = 1733; - }; - 6B024B021004C41E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 260"; - rLen = 0; - rLoc = 9480; - rType = 0; - vrLen = 916; - vrLoc = 5437; - }; - 6B024B031004C48100CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 257"; - rLen = 0; - rLoc = 9369; - rType = 0; - vrLen = 954; - vrLoc = 5437; - }; - 6B024B081004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 32"; - rLen = 58; - rLoc = 551; - rType = 0; - vrLen = 657; - vrLoc = 283; - }; - 6B024B091004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 57"; - rLen = 15; - rLoc = 2053; - rType = 0; - vrLen = 650; - vrLoc = 651; - }; - 6B024B0A1004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 115"; - rLen = 113; - rLoc = 2276; - rType = 0; - vrLen = 764; - vrLoc = 1733; - }; - 6B024B0B1004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 106"; - rLen = 0; - rLoc = 4915; - rType = 0; - vrLen = 952; - vrLoc = 1442; - }; - 6B024B0C1004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 189"; - rLen = 134; - rLoc = 7474; - rType = 0; - vrLen = 1012; - vrLoc = 6826; - }; - 6B024B0D1004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 1323"; - rLen = 0; - rLoc = 30344; - rType = 0; - vrLen = 778; - vrLoc = 29713; - }; - 6B024B0E1004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 146"; - rLen = 30; - rLoc = 5453; - rType = 0; - vrLen = 1459; - vrLoc = 3572; - }; - 6B024B0F1004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1256"; - rLen = 0; - rLoc = 33070; - rType = 0; - vrLen = 850; - vrLoc = 28536; - }; - 6B024B101004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 255"; - rLen = 0; - rLoc = 9329; - rType = 0; - vrLen = 954; - vrLoc = 5437; - }; - 6B024B111004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 32"; - rLen = 58; - rLoc = 551; - rType = 0; - vrLen = 657; - vrLoc = 283; - }; - 6B024B121004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 256"; - rLen = 0; - rLoc = 9332; - rType = 0; - vrLen = 952; - vrLoc = 5439; - }; - 6B024B131004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 57"; - rLen = 15; - rLoc = 2053; - rType = 0; - vrLen = 650; - vrLoc = 651; - }; - 6B024B141004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 103"; - rLen = 0; - rLoc = 3096; - rType = 0; - vrLen = 878; - vrLoc = 1442; - }; - 6B024B151004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 115"; - rLen = 113; - rLoc = 2276; - rType = 0; - vrLen = 764; - vrLoc = 1733; - }; - 6B024B161004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 106"; - rLen = 0; - rLoc = 4915; - rType = 0; - vrLen = 952; - vrLoc = 1442; - }; - 6B024B171004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 202"; - rLen = 0; - rLoc = 7804; - rType = 0; - vrLen = 1012; - vrLoc = 6826; - }; - 6B024B181004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 786"; - rLen = 3118; - rLoc = 17030; - rType = 0; - vrLen = 647; - vrLoc = 19841; - }; - 6B024B191004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 189"; - rLen = 134; - rLoc = 7474; - rType = 0; - vrLen = 1012; - vrLoc = 6826; - }; - 6B024B1A1004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 119"; - rLen = 169; - rLoc = 3119; - rType = 0; - vrLen = 752; - vrLoc = 2716; - }; 6B024B1B1004C7E200CF7107 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; + fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */; name = "DetourTiledNavMesh.h: 137"; rLen = 0; rLoc = 4656; @@ -5862,1346 +729,26 @@ vrLen = 1459; vrLoc = 3572; }; - 6B024B1C1004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1250"; - rLen = 0; - rLoc = 33100; - rType = 0; - vrLen = 836; - vrLoc = 28536; - }; - 6B024B1D1004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 141"; - rLen = 215; - rLoc = 5229; - rType = 0; - vrLen = 1459; - vrLoc = 3572; - }; - 6B024B1E1004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1256"; - rLen = 0; - rLoc = 33070; - rType = 0; - vrLen = 850; - vrLoc = 28536; - }; - 6B024B1F1004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 146"; - rLen = 30; - rLoc = 5453; - rType = 0; - vrLen = 1459; - vrLoc = 3572; - }; - 6B024B201004C7E200CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1270"; - rLen = 0; - rLoc = 33332; - rType = 0; - vrLen = 1064; - vrLoc = 28622; - }; - 6B024B251004CC4800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 175"; - rLen = 0; - rLoc = 6391; - rType = 0; - vrLen = 1130; - vrLoc = 5412; - }; - 6B024B261004CC4800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 523"; - rLen = 16; - rLoc = 14469; - rType = 0; - vrLen = 1090; - vrLoc = 11291; - }; - 6B024B271004CC4800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1276"; - rLen = 0; - rLoc = 33991; - rType = 0; - vrLen = 1068; - vrLoc = 28929; - }; - 6B024B281004CC4800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 147"; - rLen = 0; - rLoc = 5485; - rType = 0; - vrLen = 515; - vrLoc = 2007; - }; - 6B024B291004CC4800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1293"; - rLen = 0; - rLoc = 33991; - rType = 0; - vrLen = 840; - vrLoc = 29299; - }; - 6B024B2A1004CC4800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 54"; - rLen = 0; - rLoc = 2084; - rType = 0; - vrLen = 899; - vrLoc = 1399; - }; - 6B024B2B1004CC4800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 523"; - rLen = 16; - rLoc = 14469; - rType = 0; - vrLen = 1090; - vrLoc = 11291; - }; - 6B024B2C1004CC4800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 175"; - rLen = 0; - rLoc = 6391; - rType = 0; - vrLen = 1130; - vrLoc = 5412; - }; - 6B024B2D1004CC4800CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1272"; - rLen = 0; - rLoc = 33265; - rType = 0; - vrLen = 880; - vrLoc = 29349; - }; - 6B024B301004CC8700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1272"; - rLen = 0; - rLoc = 33265; - rType = 0; - vrLen = 880; - vrLoc = 29349; - }; - 6B024B311004CC8700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 216"; - rLen = 504; - rLoc = 4891; - rType = 0; - vrLen = 1000; - vrLoc = 4442; - }; - 6B024B321004CC8700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 106"; - rLen = 0; - rLoc = 4915; - rType = 0; - vrLen = 952; - vrLoc = 1442; - }; - 6B024B331004CC8700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1272"; - rLen = 0; - rLoc = 33265; - rType = 0; - vrLen = 880; - vrLoc = 29349; - }; - 6B024B341004CC8700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 216"; - rLen = 504; - rLoc = 4891; - rType = 0; - vrLen = 1000; - vrLoc = 4442; - }; - 6B024B351004CC8700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 283"; - rLen = 0; - rLoc = 9964; - rType = 0; - vrLen = 860; - vrLoc = 6218; - }; - 6B024B381004CCCC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 283"; - rLen = 0; - rLoc = 9964; - rType = 0; - vrLen = 1200; - vrLoc = 6466; - }; - 6B024B391004CCCC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */; - name = "DetourStatNavMeshBuilder.cpp: 246"; - rLen = 0; - rLoc = 6451; - rType = 0; - vrLen = 779; - vrLoc = 6452; - }; - 6B024B3A1004CCCC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1272"; - rLen = 0; - rLoc = 33265; - rType = 0; - vrLen = 986; - vrLoc = 29242; - }; - 6B024B3B1004CCCC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 283"; - rLen = 0; - rLoc = 9964; - rType = 0; - vrLen = 1200; - vrLoc = 6466; - }; - 6B024B3C1004CCCC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */; - name = "DetourStatNavMeshBuilder.cpp: 246"; - rLen = 0; - rLoc = 6451; - rType = 0; - vrLen = 779; - vrLoc = 6452; - }; - 6B024B3D1004CCCC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1278"; - rLen = 0; - rLoc = 33560; - rType = 0; - vrLen = 988; - vrLoc = 29242; - }; - 6B024B3F1004CDDB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1160"; - rLen = 0; - rLoc = 30518; - rType = 0; - vrLen = 850; - vrLoc = 26335; - }; - 6B024B481004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 142"; - rLen = 256; - rLoc = 5229; - rType = 0; - vrLen = 1130; - vrLoc = 4426; - }; - 6B024B491004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 301"; - rLen = 327; - rLoc = 7416; - rType = 0; - vrLen = 585; - vrLoc = 7388; - }; - 6B024B4A1004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 86"; - rLen = 0; - rLoc = 4664; - rType = 0; - vrLen = 822; - vrLoc = 1643; - }; - 6B024B4B1004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 957"; - rLen = 0; - rLoc = 25186; - rType = 0; - vrLen = 879; - vrLoc = 21653; - }; - 6B024B4C1004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 140"; - rLen = 391; - rLoc = 5162; - rType = 0; - vrLen = 1130; - vrLoc = 4426; - }; - 6B024B4D1004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 961"; - rLen = 0; - rLoc = 25186; - rType = 0; - vrLen = 877; - vrLoc = 21653; - }; - 6B024B4E1004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 150"; - rLen = 17; - rLoc = 5510; - rType = 0; - vrLen = 1130; - vrLoc = 4426; - }; - 6B024B4F1004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 961"; - rLen = 0; - rLoc = 25186; - rType = 0; - vrLen = 877; - vrLoc = 21653; - }; - 6B024B501004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 142"; - rLen = 256; - rLoc = 5229; - rType = 0; - vrLen = 1130; - vrLoc = 4426; - }; - 6B024B511004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 86"; - rLen = 0; - rLoc = 4664; - rType = 0; - vrLen = 822; - vrLoc = 1643; - }; - 6B024B521004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 301"; - rLen = 327; - rLoc = 7416; - rType = 0; - vrLen = 585; - vrLoc = 7388; - }; - 6B024B531004D22F00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 989"; - rLen = 0; - rLoc = 25531; - rType = 0; - vrLen = 1043; - vrLoc = 22298; - }; - 6B024B561005D2CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 985"; - rLen = 0; - rLoc = 25401; - rType = 0; - vrLen = 1126; - vrLoc = 22298; - }; - 6B024B571005D2CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 125"; - rLen = 108; - rLoc = 4634; - rType = 0; - vrLen = 1756; - vrLoc = 3834; - }; - 6B024B581005D2CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 140"; - rLen = 7; - rLoc = 4664; - rType = 0; - vrLen = 1557; - vrLoc = 3493; - }; - 6B024B591005D2CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 301"; - rLen = 327; - rLoc = 7416; - rType = 0; - vrLen = 585; - vrLoc = 7388; - }; - 6B024B5A1005D2CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 985"; - rLen = 0; - rLoc = 25401; - rType = 0; - vrLen = 1126; - vrLoc = 22298; - }; - 6B024B5B1005D2CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 141"; - rLen = 0; - rLoc = 5226; - rType = 0; - vrLen = 1493; - vrLoc = 3493; - }; - 6B024B5C1005D2CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 125"; - rLen = 108; - rLoc = 4634; - rType = 0; - vrLen = 1810; - vrLoc = 3780; - }; - 6B024B5D1005D2CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 301"; - rLen = 327; - rLoc = 7416; - rType = 0; - vrLen = 585; - vrLoc = 7388; - }; - 6B024B5E1005D2CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 125"; - rLen = 108; - rLoc = 4634; - rType = 0; - vrLen = 1756; - vrLoc = 3834; - }; - 6B024B5F1005D2CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 140"; - rLen = 7; - rLoc = 4664; - rType = 0; - vrLen = 1557; - vrLoc = 3493; - }; - 6B024B601005D2CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 931"; - rLen = 1440; - rLoc = 20149; - rType = 0; - vrLen = 759; - vrLoc = 21264; - }; - 6B024B661005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 140"; - rLen = 0; - rLoc = 4754; - rType = 0; - vrLen = 1197; - vrLoc = 4543; - }; - 6B024B671005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 110"; - rLen = 175; - rLoc = 2943; - rType = 0; - vrLen = 631; - vrLoc = 2658; - }; - 6B024B681005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 106"; - rLen = 7; - rLoc = 4049; - rType = 0; - vrLen = 669; - vrLoc = 2139; - }; - 6B024B691005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 931"; - rLen = 1440; - rLoc = 20149; - rType = 0; - vrLen = 759; - vrLoc = 21264; - }; - 6B024B6A1005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1363"; - rLen = 0; - rLoc = 34293; - rType = 0; - vrLen = 757; - vrLoc = 31724; - }; - 6B024B6B1005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 33"; - rLen = 25; - rLoc = 1470; - rType = 0; - vrLen = 1148; - vrLoc = 1096; - }; - 6B024B6C1005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1382"; - rLen = 22; - rLoc = 34906; - rType = 0; - vrLen = 785; - vrLoc = 32204; - }; - 6B024B6D1005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 220"; - rLen = 1094; - rLoc = 5917; - rType = 0; - vrLen = 597; - vrLoc = 6941; - }; - 6B024B6E1005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1417"; - rLen = 0; - rLoc = 34636; - rType = 0; - vrLen = 820; - vrLoc = 32724; - }; - 6B024B6F1005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 33"; - rLen = 25; - rLoc = 1470; - rType = 0; - vrLen = 1128; - vrLoc = 1096; - }; - 6B024B701005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1412"; - rLen = 0; - rLoc = 34636; - rType = 0; - vrLen = 820; - vrLoc = 32724; - }; - 6B024B711005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 142"; - rLen = 0; - rLoc = 5162; - rType = 0; - vrLen = 1238; - vrLoc = 4543; - }; - 6B024B721005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1475"; - rLen = 0; - rLoc = 36014; - rType = 0; - vrLen = 865; - vrLoc = 33746; - }; - 6B024B731005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 140"; - rLen = 0; - rLoc = 4754; - rType = 0; - vrLen = 1197; - vrLoc = 4543; - }; - 6B024B741005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 106"; - rLen = 7; - rLoc = 4049; - rType = 0; - vrLen = 669; - vrLoc = 2139; - }; - 6B024B751005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 110"; - rLen = 175; - rLoc = 2943; - rType = 0; - vrLen = 631; - vrLoc = 2658; - }; - 6B024B761005D68E00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 89"; - rLen = 0; - rLoc = 2994; - rType = 0; - vrLen = 788; - vrLoc = 1607; - }; - 6B024B781005D6EC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 77"; - rLen = 0; - rLoc = 2798; - rType = 0; - vrLen = 825; - vrLoc = 1607; - }; - 6B024B791005D6EC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 96"; - rLen = 1862; - rLoc = 1842; - rType = 0; - vrLen = 971; - vrLoc = 3150; - }; - 6B024B7A1005D6EC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 283"; - rLen = 0; - rLoc = 9964; - rType = 0; - vrLen = 1141; - vrLoc = 6466; - }; - 6B024B7B1005D6EC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 77"; - rLen = 0; - rLoc = 2798; - rType = 0; - vrLen = 825; - vrLoc = 1607; - }; - 6B024B7C1005D6EC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 96"; - rLen = 1862; - rLoc = 1842; - rType = 0; - vrLen = 971; - vrLoc = 3150; - }; - 6B024B7D1005D6EC00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 167"; - rLen = 0; - rLoc = 4910; - rType = 0; - vrLen = 1005; - vrLoc = 3133; - }; - 6B024B801005D76000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 206"; - rLen = 2834; - rLoc = 4586; - rType = 0; - vrLen = 1125; - vrLoc = 7064; - }; - 6B024B811005D76000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 348"; - rLen = 0; - rLoc = 10146; - rType = 0; - vrLen = 1219; - vrLoc = 8128; - }; - 6B024B821005D76000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 342"; - rLen = 0; - rLoc = 9969; - rType = 0; - vrLen = 860; - vrLoc = 7698; - }; - 6B024B831005D76000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 192"; - rLen = 172; - rLoc = 4216; - rType = 0; - vrLen = 951; - vrLoc = 4185; - }; - 6B024B841005D76000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 348"; - rLen = 0; - rLoc = 10146; - rType = 0; - vrLen = 1219; - vrLoc = 8128; - }; - 6B024B851005D76000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 206"; - rLen = 2834; - rLoc = 4586; - rType = 0; - vrLen = 1125; - vrLoc = 7064; - }; - 6B024B861005D76000CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 418"; - rLen = 0; - rLoc = 12368; - rType = 0; - vrLen = 897; - vrLoc = 10718; - }; - 6B024B8D1005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 149"; - rLen = 0; - rLoc = 5880; - rType = 0; - vrLen = 1742; - vrLoc = 4634; - }; - 6B024B8E1005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 141"; - rLen = 0; - rLoc = 4744; - rType = 0; - vrLen = 1247; - vrLoc = 4198; - }; - 6B024B8F1005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1502"; - rLen = 0; - rLoc = 36259; - rType = 0; - vrLen = 521; - vrLoc = 34419; - }; - 6B024B901005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 141"; - rLen = 0; - rLoc = 4030; - rType = 0; - vrLen = 815; - vrLoc = 2648; - }; - 6B024B911005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 423"; - rLen = 0; - rLoc = 12540; - rType = 0; - vrLen = 899; - vrLoc = 10718; - }; - 6B024B921005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 149"; - rLen = 0; - rLoc = 5880; - rType = 0; - vrLen = 1742; - vrLoc = 4634; - }; - 6B024B931005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 140"; - rLen = 0; - rLoc = 4659; - rType = 0; - vrLen = 1222; - vrLoc = 4283; - }; - 6B024B941005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1406"; - rLen = 0; - rLoc = 34185; - rType = 0; - vrLen = 841; - vrLoc = 32404; - }; - 6B024B951005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 142"; - rLen = 0; - rLoc = 5025; - rType = 0; - vrLen = 1182; - vrLoc = 4283; - }; - 6B024B961005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1406"; - rLen = 0; - rLoc = 34146; - rType = 0; - vrLen = 786; - vrLoc = 32708; - }; - 6B024B971005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 141"; - rLen = 0; - rLoc = 4754; - rType = 0; - vrLen = 1261; - vrLoc = 4198; - }; - 6B024B981005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1500"; - rLen = 0; - rLoc = 36225; - rType = 0; - vrLen = 524; - vrLoc = 34423; - }; - 6B024B991005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 141"; - rLen = 0; - rLoc = 4030; - rType = 0; - vrLen = 757; - vrLoc = 2652; - }; - 6B024B9A1005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 141"; - rLen = 0; - rLoc = 4744; - rType = 0; - vrLen = 1247; - vrLoc = 4198; - }; - 6B024B9B1005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1502"; - rLen = 0; - rLoc = 36259; - rType = 0; - vrLen = 521; - vrLoc = 34419; - }; - 6B024B9C1005D98C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 134"; - rLen = 0; - rLoc = 3811; - rType = 0; - vrLen = 808; - vrLoc = 2693; - }; - 6B024BA31005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 149"; - rLen = 215; - rLoc = 5871; - rType = 0; - vrLen = 1572; - vrLoc = 5022; - }; - 6B024BA41005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 143"; - rLen = 15; - rLoc = 4802; - rType = 0; - vrLen = 1282; - vrLoc = 4198; - }; - 6B024BA51005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 350"; - rLen = 0; - rLoc = 8368; - rType = 0; - vrLen = 604; - vrLoc = 7996; - }; - 6B024BA61005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1626"; - rLen = 0; - rLoc = 39250; - rType = 0; - vrLen = 809; - vrLoc = 37665; - }; - 6B024BA71005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 54"; - rLen = 0; - rLoc = 1926; - rType = 0; - vrLen = 604; - vrLoc = 718; - }; - 6B024BA81005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 186"; - rLen = 0; - rLoc = 4140; - rType = 0; - vrLen = 765; - vrLoc = 4056; - }; - 6B024BA91005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 423"; - rLen = 13; - rLoc = 12455; - rType = 0; - vrLen = 938; - vrLoc = 10574; - }; - 6B024BAA1005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 149"; - rLen = 215; - rLoc = 5871; - rType = 0; - vrLen = 1572; - vrLoc = 5022; - }; - 6B024BAB1005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 143"; - rLen = 15; - rLoc = 4802; - rType = 0; - vrLen = 1282; - vrLoc = 4198; - }; - 6B024BAC1005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 1115"; - rLen = 2755; - rLoc = 24605; - rType = 0; - vrLen = 1431; - vrLoc = 27362; - }; - 6B024BAD1005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 280"; - rLen = 403; - rLoc = 7012; - rType = 0; - vrLen = 592; - vrLoc = 6901; - }; - 6B024BAE1005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1626"; - rLen = 0; - rLoc = 39250; - rType = 0; - vrLen = 809; - vrLoc = 37665; - }; - 6B024BAF1005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 54"; - rLen = 0; - rLoc = 1926; - rType = 0; - vrLen = 604; - vrLoc = 718; - }; - 6B024BB01005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 186"; - rLen = 0; - rLoc = 4140; - rType = 0; - vrLen = 765; - vrLoc = 4056; - }; - 6B024BB11005DC3A00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 215"; - rLen = 0; - rLoc = 6027; - rType = 0; - vrLen = 596; - vrLoc = 4689; - }; - 6B024BB61005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 210"; - rLen = 0; - rLoc = 5917; - rType = 0; - vrLen = 637; - vrLoc = 4689; - }; - 6B024BB71005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 151"; - rLen = 0; - rLoc = 5162; - rType = 0; - vrLen = 1270; - vrLoc = 4283; - }; - 6B024BB81005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 135"; - rLen = 18; - rLoc = 5140; - rType = 0; - vrLen = 1490; - vrLoc = 4934; - }; - 6B024BB91005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 1108"; - rLen = 110; - rLoc = 24492; - rType = 0; - vrLen = 815; - vrLoc = 23942; - }; - 6B024BBA1005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1766"; - rLen = 0; - rLoc = 43004; - rType = 0; - vrLen = 851; - vrLoc = 41154; - }; 6B024BBB1005DF5700CF7107 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "BuilderTiledMesh.cpp: 210"; rLen = 0; - rLoc = 5917; + rLoc = 1353; rType = 0; vrLen = 637; vrLoc = 4689; }; - 6B024BBC1005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 143"; - rLen = 0; - rLoc = 4797; - rType = 0; - vrLen = 1197; - vrLoc = 4283; - }; - 6B024BBD1005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 151"; - rLen = 0; - rLoc = 5162; - rType = 0; - vrLen = 1270; - vrLoc = 4283; - }; - 6B024BBE1005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1689"; - rLen = 0; - rLoc = 41936; - rType = 0; - vrLen = 1042; - vrLoc = 39354; - }; - 6B024BBF1005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 345"; - rLen = 0; - rLoc = 8263; - rType = 0; - vrLen = 601; - vrLoc = 7999; - }; - 6B024BC01005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 135"; - rLen = 18; - rLoc = 5140; - rType = 0; - vrLen = 1490; - vrLoc = 4934; - }; - 6B024BC11005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 1053"; - rLen = 0; - rLoc = 22924; - rType = 0; - vrLen = 922; - vrLoc = 22151; - }; - 6B024BC21005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1766"; - rLen = 0; - rLoc = 43004; - rType = 0; - vrLen = 711; - vrLoc = 41295; - }; - 6B024BC31005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 1108"; - rLen = 110; - rLoc = 24492; - rType = 0; - vrLen = 815; - vrLoc = 23942; - }; - 6B024BC41005DF5700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1770"; - rLen = 0; - rLoc = 43005; - rType = 0; - vrLen = 712; - vrLoc = 41378; - }; - 6B024BC91005DFAB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1764"; - rLen = 0; - rLoc = 42893; - rType = 0; - vrLen = 712; - vrLoc = 41378; - }; - 6B024BCA1005DFAB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 38"; - rLen = 68; - rLoc = 672; - rType = 0; - vrLen = 595; - vrLoc = 283; - }; - 6B024BCB1005DFAB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 61"; - rLen = 16; - rLoc = 2120; - rType = 0; - vrLen = 588; - vrLoc = 718; - }; - 6B024BCC1005DFAB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 155"; - rLen = 0; - rLoc = 4437; - rType = 0; - vrLen = 889; - vrLoc = 2975; - }; - 6B024BCD1005DFAB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 1764"; - rLen = 0; - rLoc = 42893; - rType = 0; - vrLen = 712; - vrLoc = 41378; - }; - 6B024BCE1005DFAB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 155"; - rLen = 0; - rLoc = 4437; - rType = 0; - vrLen = 889; - vrLoc = 2975; - }; 6B024BCF1005DFAB00CF7107 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; name = "BuilderTiledMesh.h: 61"; rLen = 16; - rLoc = 2120; + rLoc = 2114; rType = 0; vrLen = 588; vrLoc = 718; }; - 6B024BD01005DFAB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 156"; - rLen = 0; - rLoc = 4461; - rType = 0; - vrLen = 1000; - vrLoc = 2975; - }; 6B024BD31006059C00CF7107 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */; @@ -7212,266 +759,6 @@ vrLen = 1284; vrLoc = 0; }; - 6B024BD41006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 136"; - rLen = 0; - rLoc = 4493; - rType = 0; - vrLen = 1453; - vrLoc = 0; - }; - 6B024BD51006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 19"; - rLen = 0; - rLoc = 919; - rType = 0; - vrLen = 1444; - vrLoc = 0; - }; - 6B024BD61006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 19"; - rLen = 0; - rLoc = 919; - rType = 0; - vrLen = 1327; - vrLoc = 0; - }; - 6B024BD71006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 1"; - rLen = 0; - rLoc = 2; - rType = 0; - vrLen = 1523; - vrLoc = 0; - }; - 6B024BD81006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 19"; - rLen = 0; - rLoc = 919; - rType = 0; - vrLen = 1191; - vrLoc = 0; - }; - 6B024BD91006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 127"; - rLen = 0; - rLoc = 3649; - rType = 0; - vrLen = 781; - vrLoc = 2637; - }; - 6B024BDA1006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 127"; - rLen = 0; - rLoc = 3649; - rType = 0; - vrLen = 781; - vrLoc = 2637; - }; - 6B024BDB1006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */; - name = "DetourStatNavMeshBuilder.h: 1"; - rLen = 918; - rLoc = 0; - rType = 0; - vrLen = 1284; - vrLoc = 0; - }; - 6B024BDC1006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 136"; - rLen = 0; - rLoc = 4493; - rType = 0; - vrLen = 1453; - vrLoc = 0; - }; - 6B024BDD1006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 19"; - rLen = 0; - rLoc = 919; - rType = 0; - vrLen = 1444; - vrLoc = 0; - }; - 6B024BDE1006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 19"; - rLen = 0; - rLoc = 919; - rType = 0; - vrLen = 1327; - vrLoc = 0; - }; - 6B024BDF1006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 1"; - rLen = 0; - rLoc = 2; - rType = 0; - vrLen = 1523; - vrLoc = 0; - }; - 6B024BE01006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 19"; - rLen = 0; - rLoc = 919; - rType = 0; - vrLen = 1191; - vrLoc = 0; - }; - 6B024BE11006059C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 24"; - rLen = 0; - rLoc = 1042; - rType = 0; - vrLen = 967; - vrLoc = 391; - }; - 6B024BE8100605CB00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 21"; - rLen = 0; - rLoc = 981; - rType = 0; - vrLen = 967; - vrLoc = 391; - }; - 6B024BEB1006064C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 55"; - rLen = 14; - rLoc = 1623; - rType = 0; - vrLen = 591; - vrLoc = 1220; - }; - 6B024BEC1006064C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 491"; - rLen = 15; - rLoc = 13404; - rType = 0; - vrLen = 1029; - vrLoc = 12944; - }; - 6B024BED1006064C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 491"; - rLen = 15; - rLoc = 13404; - rType = 0; - vrLen = 1029; - vrLoc = 12944; - }; - 6B024BEE1006064C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 55"; - rLen = 14; - rLoc = 1623; - rType = 0; - vrLen = 591; - vrLoc = 1220; - }; - 6B024BEF1006064C00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 492"; - rLen = 0; - rLoc = 13451; - rType = 0; - vrLen = 1159; - vrLoc = 12627; - }; - 6B024BF0100606CD00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 492"; - rLen = 0; - rLoc = 13451; - rType = 0; - vrLen = 1159; - vrLoc = 12627; - }; - 6B024BF1100606CF00CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 492"; - rLen = 0; - rLoc = 13451; - rType = 0; - vrLen = 973; - vrLoc = 12931; - }; - 6B024BF31006073700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 792"; - rLen = 0; - rLoc = 18063; - rType = 0; - vrLen = 259; - vrLoc = 10642; - }; - 6B024BF41006073700CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 492"; - rLen = 0; - rLoc = 13451; - rType = 0; - vrLen = 717; - vrLoc = 13069; - }; - 6B024BF61006079300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 571"; - rLen = 1; - rLoc = 15046; - rType = 0; - vrLen = 636; - vrLoc = 14753; - }; - 6B024C001006098300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 575"; - rLen = 0; - rLoc = 15174; - rType = 0; - vrLen = 744; - vrLoc = 14753; - }; 6B024C011006098300CF7107 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 089C165DFE840E0CC02AAC07 /* English */; @@ -7482,20 +769,6 @@ vrLen = 45; vrLoc = 0; }; - 6B024C021006098300CF7107 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 8D1107310486CEB800E47090 /* Info.plist */; - }; - 6B024C031006098300CF7107 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 575"; - rLen = 0; - rLoc = 15174; - rType = 0; - vrLen = 744; - vrLoc = 14753; - }; 6B024C041006098300CF7107 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 089C165DFE840E0CC02AAC07 /* English */; @@ -7506,7 +779,18 @@ vrLen = 45; vrLoc = 0; }; - 6B024C051006098300CF7107 /* PlistBookmark */ = { + 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; @@ -7519,84 +803,14 @@ }; 6B092B1A0FFC98FF0088D3A5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; name = "BuilderStatMeshTiled.h: 44"; rLen = 117; - rLoc = 954; + rLoc = 950; rType = 0; vrLen = 580; vrLoc = 440; }; - 6B092B1C0FFC98FF0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; - name = "BuilderStatMeshTiled.h: 47"; - rLen = 0; - rLoc = 1102; - rType = 0; - vrLen = 733; - vrLoc = 707; - }; - 6B092B1E0FFC98FF0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; - name = "BuilderStatMeshTiled.h: 46"; - rLen = 0; - rLoc = 1102; - rType = 0; - vrLen = 659; - vrLoc = 707; - }; - 6B092B200FFC98FF0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; - name = "BuilderStatMeshTiled.h: 45"; - rLen = 25; - rLoc = 1002; - rType = 0; - vrLen = 675; - vrLoc = 707; - }; - 6B092B220FFC98FF0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; - name = "BuilderStatMeshTiled.h: 47"; - rLen = 0; - rLoc = 1071; - rType = 0; - vrLen = 682; - vrLoc = 707; - }; - 6B092B240FFC98FF0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; - name = "BuilderStatMeshTiled.h: 43"; - rLen = 16; - rLoc = 929; - rType = 0; - vrLen = 682; - vrLoc = 707; - }; - 6B092B260FFC98FF0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; - name = "BuilderStatMeshTiled.h: 47"; - rLen = 0; - rLoc = 1089; - rType = 0; - vrLen = 682; - vrLoc = 707; - }; - 6B092B280FFC98FF0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; - name = "BuilderStatMeshTiled.h: 43"; - rLen = 16; - rLoc = 929; - rType = 0; - vrLen = 682; - vrLoc = 707; - }; 6B092B4F0FFCA0A20088D3A5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; @@ -7634,167 +848,23 @@ vrLen = 749; vrLoc = 12474; }; - 6B092B6E0FFCA48E0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */; - name = "BuilderStatMeshTiled.cpp: 471"; - rLen = 0; - rLoc = 13057; - rType = 0; - vrLen = 975; - vrLoc = 12563; - }; - 6B092B6F0FFCA48E0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; - name = "BuilderStatMeshTiled.h: 43"; - rLen = 0; - rLoc = 911; - rType = 0; - vrLen = 656; - vrLoc = 77; - }; - 6B092B730FFCA5BC0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; - name = "BuilderStatMeshTiled.h: 34"; - rLen = 0; - rLoc = 707; - rType = 0; - vrLen = 636; - vrLoc = 623; - }; - 6B092B750FFCA5BC0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */; - name = "BuilderStatMeshTiled.cpp: 469"; - rLen = 0; - rLoc = 13057; - rType = 0; - vrLen = 1059; - vrLoc = 12563; - }; - 6B092B760FFCA5BC0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */; - name = "BuilderStatMeshTiled.h: 34"; - rLen = 0; - rLoc = 707; - rType = 0; - vrLen = 636; - vrLoc = 623; - }; - 6B092B850FFCAA170088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */; - name = "BuilderStatMeshTiled.cpp: 431"; - rLen = 0; - rLoc = 12097; - rType = 0; - vrLen = 567; - vrLoc = 11878; - }; - 6B092B870FFCAA170088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 37"; - rLen = 14; - rLoc = 1644; - rType = 0; - vrLen = 561; - vrLoc = 231; - }; - 6B092B890FFCAA170088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 37"; - rLen = 14; - rLoc = 1644; - rType = 0; - vrLen = 560; - vrLoc = 231; - }; - 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */ = { + 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 499}}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 448}}"; sepNavSelRange = "{919, 0}"; sepNavVisRange = "{0, 1327}"; }; }; - 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */ = { + 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 3056}}"; - sepNavSelRange = "{2, 0}"; - sepNavVisRange = "{0, 1523}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 2848}}"; + sepNavSelRange = "{975, 0}"; + sepNavVisRange = "{391, 1071}"; }; }; - 6B092BAB0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */; - name = "DetourStatNavMeshBuilder.h: 19"; - rLen = 365; - rLoc = 919; - rType = 0; - vrLen = 1284; - vrLoc = 0; - }; - 6B092BAC0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */; - name = "DetourStatNavMeshBuilder.cpp: 1"; - rLen = 7295; - rLoc = 0; - rType = 0; - vrLen = 853; - vrLoc = 6013; - }; - 6B092BAE0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */; - name = "DetourDebugDraw.h: 28"; - rLen = 0; - rLoc = 1248; - rType = 0; - vrLen = 1333; - vrLoc = 0; - }; - 6B092BB50FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092BB60FFCEC1A0088D3A5 /* ProximityGrid.cpp */; - name = "ProximityGrid.cpp: 15"; - rLen = 0; - rLoc = 296; - rType = 0; - vrLen = 583; - vrLoc = 0; - }; - 6B092BB60FFCEC1A0088D3A5 /* ProximityGrid.cpp */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = ProximityGrid.cpp; - path = /Users/memon/Desktop/test/Source/ProximityGrid.cpp; - sourceTree = ""; - }; - 6B092BB70FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092BB80FFCEC1A0088D3A5 /* ProximityGrid.h */; - name = "ProximityGrid.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 707; - vrLoc = 997; - }; - 6B092BB80FFCEC1A0088D3A5 /* ProximityGrid.h */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = ProximityGrid.h; - path = /Users/memon/Desktop/test/Source/ProximityGrid.h; - sourceTree = ""; - }; 6B092BBC0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; + fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */; name = "DetourTiledNavMeshBuilder.h: 1"; rLen = 0; rLoc = 1327; @@ -7802,440 +872,6 @@ vrLen = 0; vrLoc = 0; }; - 6B092BBD0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */; - name = "DetourStatNavMeshBuilder.h: 19"; - rLen = 365; - rLoc = 919; - rType = 0; - vrLen = 1284; - vrLoc = 0; - }; - 6B092BBE0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 5"; - rLen = 0; - rLoc = 1076; - rType = 0; - vrLen = 375; - vrLoc = 0; - }; - 6B092BBF0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */; - name = "DetourStatNavMeshBuilder.cpp: 1"; - rLen = 7295; - rLoc = 0; - rType = 0; - vrLen = 853; - vrLoc = 6013; - }; - 6B092BC00FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 3"; - rLen = 0; - rLoc = 991; - rType = 0; - vrLen = 375; - vrLoc = 0; - }; - 6B092BC20FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 9"; - rLen = 0; - rLoc = 1327; - rType = 0; - vrLen = 375; - vrLoc = 0; - }; - 6B092BC50FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 141"; - rLen = 0; - rLoc = 20079; - rType = 0; - vrLen = 683; - vrLoc = 2824; - }; - 6B092BC60FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 4"; - rLen = 297; - rLoc = 992; - rType = 0; - vrLen = 375; - vrLoc = 0; - }; - 6B092BC70FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 28"; - rLen = 0; - rLoc = 1472; - rType = 0; - vrLen = 560; - vrLoc = 231; - }; - 6B092BC90FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 42"; - rLen = 0; - rLoc = 2647; - rType = 0; - vrLen = 810; - vrLoc = 673; - }; - 6B092BCB0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 42"; - rLen = 0; - rLoc = 2647; - rType = 0; - vrLen = 832; - vrLoc = 651; - }; - 6B092BD00FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 165"; - rLen = 0; - rLoc = 20910; - rType = 0; - vrLen = 458; - vrLoc = 3470; - }; - 6B092BD30FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */; - name = "DetourDebugDraw.h: 28"; - rLen = 0; - rLoc = 1248; - rType = 0; - vrLen = 1333; - vrLoc = 0; - }; - 6B092BD70FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 92"; - rLen = 0; - rLoc = 13160; - rType = 0; - vrLen = 578; - vrLoc = 1643; - }; - 6B092BD90FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 91"; - rLen = 0; - rLoc = 13011; - rType = 0; - vrLen = 589; - vrLoc = 1899; - }; - 6B092BDB0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 191"; - rLen = 0; - rLoc = 21623; - rType = 0; - vrLen = 481; - vrLoc = 3720; - }; - 6B092BE30FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 35"; - rLen = 0; - rLoc = 1478; - rType = 0; - vrLen = 741; - vrLoc = 919; - }; - 6B092BE50FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; - name = "RecastContour.cpp: 788"; - rLen = 0; - rLoc = 19605; - rType = 0; - vrLen = 923; - vrLoc = 18970; - }; - 6B092BE60FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 9"; - rLen = 0; - rLoc = 1327; - rType = 0; - vrLen = 375; - vrLoc = 0; - }; - 6B092BE90FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 123"; - rLen = 0; - rLoc = 19806; - rType = 0; - vrLen = 683; - vrLoc = 2604; - }; - 6B092BEB0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092BEC0FFCEC1A0088D3A5 /* ProximityGrid.cpp */; - name = "ProximityGrid.cpp: 15"; - rLen = 0; - rLoc = 296; - rType = 0; - vrLen = 583; - vrLoc = 0; - }; - 6B092BEC0FFCEC1A0088D3A5 /* ProximityGrid.cpp */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = ProximityGrid.cpp; - path = /Users/memon/Desktop/test/Source/ProximityGrid.cpp; - sourceTree = ""; - }; - 6B092BED0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092BEE0FFCEC1A0088D3A5 /* ProximityGrid.h */; - name = "ProximityGrid.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 707; - vrLoc = 997; - }; - 6B092BEE0FFCEC1A0088D3A5 /* ProximityGrid.h */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = ProximityGrid.h; - path = /Users/memon/Desktop/test/Source/ProximityGrid.h; - sourceTree = ""; - }; - 6B092BF00FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 109"; - rLen = 0; - rLoc = 13650; - rType = 0; - vrLen = 522; - vrLoc = 2043; - }; - 6B092BF20FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 110"; - rLen = 0; - rLoc = 13525; - rType = 0; - vrLen = 538; - vrLoc = 2058; - }; - 6B092BF40FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 112"; - rLen = 0; - rLoc = 13542; - rType = 0; - vrLen = 699; - vrLoc = 2153; - }; - 6B092BF60FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 111"; - rLen = 0; - rLoc = 13525; - rType = 0; - vrLen = 705; - vrLoc = 2221; - }; - 6B092BF80FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 138"; - rLen = 0; - rLoc = 19806; - rType = 0; - vrLen = 683; - vrLoc = 2686; - }; - 6B092BFA0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 129"; - rLen = 1; - rLoc = 19174; - rType = 0; - vrLen = 693; - vrLoc = 2636; - }; - 6B092BFC0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 165"; - rLen = 0; - rLoc = 20899; - rType = 0; - vrLen = 679; - vrLoc = 3297; - }; - 6B092BFE0FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 106"; - rLen = 0; - rLoc = 13397; - rType = 0; - vrLen = 642; - vrLoc = 2299; - }; - 6B092C000FFCEC1A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 124"; - rLen = 0; - rLoc = 18937; - rType = 0; - vrLen = 541; - vrLoc = 2604; - }; - 6B092C0A0FFCF51D0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 158"; - rLen = 0; - rLoc = 20278; - rType = 0; - vrLen = 774; - vrLoc = 3169; - }; - 6B092C100FFCF5630088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 29"; - rLen = 0; - rLoc = 1208; - rType = 0; - vrLen = 685; - vrLoc = 975; - }; - 6B092C130FFCF5630088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; - name = "DetourStatNavMesh.h: 29"; - rLen = 0; - rLoc = 1208; - rType = 0; - vrLen = 685; - vrLoc = 975; - }; - 6B092C280FFCF7DD0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */; - name = "BuilderStatMeshTiled.cpp: 812"; - rLen = 20; - rLoc = 23844; - rType = 0; - vrLen = 886; - vrLoc = 23811; - }; - 6B092C2E0FFCF7DD0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; - name = "RecastContour.cpp: 770"; - rLen = 32; - rLoc = 19075; - rType = 0; - vrLen = 932; - vrLoc = 18952; - }; - 6B092C2F0FFCF7DD0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 7"; - rLen = 0; - rLoc = 1237; - rType = 0; - vrLen = 408; - vrLoc = 0; - }; - 6B092C310FFCF7DD0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */; - name = "BuilderStatMeshTiled.cpp: 812"; - rLen = 20; - rLoc = 23844; - rType = 0; - vrLen = 886; - vrLoc = 23811; - }; - 6B092C330FFCF7DD0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 7"; - rLen = 0; - rLoc = 1237; - rType = 0; - vrLen = 375; - vrLoc = 0; - }; - 6B092C4A0FFCFA2A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 42"; - rLen = 0; - rLoc = 2647; - rType = 0; - vrLen = 910; - vrLoc = 608; - }; - 6B092C4F0FFCFA2A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 6"; - rLen = 0; - rLoc = 1146; - rType = 0; - vrLen = 394; - vrLoc = 0; - }; - 6B092C500FFCFA2A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 42"; - rLen = 0; - rLoc = 2647; - rType = 0; - vrLen = 910; - vrLoc = 608; - }; - 6B092C520FFCFA2A0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 6"; - rLen = 0; - rLoc = 1146; - rType = 0; - vrLen = 394; - vrLoc = 0; - }; 6B092C5F0FFCFF790088D3A5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; @@ -8246,136 +882,6 @@ vrLen = 836; vrLoc = 13789; }; - 6B092C610FFCFF790088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 6"; - rLen = 0; - rLoc = 1236; - rType = 0; - vrLen = 389; - vrLoc = 0; - }; - 6B092C620FFCFF790088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 501"; - rLen = 0; - rLoc = 23034; - rType = 0; - vrLen = 898; - vrLoc = 12495; - }; - 6B092C6B0FFE32600088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 158"; - rLen = 0; - rLoc = 20263; - rType = 0; - vrLen = 917; - vrLoc = 3169; - }; - 6B092C6D0FFE32600088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 167"; - rLen = 0; - rLoc = 20649; - rType = 0; - vrLen = 1017; - vrLoc = 3399; - }; - 6B092C730FFE36F70088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; - name = "DetourTiledNavMesh.cpp: 11"; - rLen = 134; - rLoc = 1195; - rType = 0; - vrLen = 1071; - vrLoc = 0; - }; - 6B092C830FFE397F0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 60"; - rLen = 0; - rLoc = 2354; - rType = 0; - vrLen = 606; - vrLoc = 1565; - }; - 6B092C850FFE397F0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */; - name = "DetourTiledNavMesh.h: 60"; - rLen = 0; - rLoc = 2354; - rType = 0; - vrLen = 606; - vrLoc = 1565; - }; - 6B092C8D0FFE39DC0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 329"; - rLen = 0; - rLoc = 8245; - rType = 0; - vrLen = 838; - vrLoc = 8461; - }; - 6B092CA30FFE3D1B0088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 158"; - rLen = 0; - rLoc = 5384; - rType = 0; - vrLen = 1043; - vrLoc = 4037; - }; - 6B092CAD0FFE3D520088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 294"; - rLen = 0; - rLoc = 7523; - rType = 0; - vrLen = 893; - vrLoc = 6657; - }; - 6B092CB30FFE3F010088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 332"; - rLen = 60; - rLoc = 9701; - rType = 0; - vrLen = 838; - vrLoc = 8489; - }; - 6B092CB50FFE3F010088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 164"; - rLen = 0; - rLoc = 5516; - rType = 0; - vrLen = 1241; - vrLoc = 4571; - }; - 6B092CB60FFE3F010088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; - name = "DetourDebugDraw.cpp: 332"; - rLen = 60; - rLoc = 9701; - rType = 0; - vrLen = 838; - vrLoc = 8489; - }; 6B092CC10FFE40160088D3A5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; @@ -8386,87 +892,299 @@ vrLen = 972; vrLoc = 18966; }; - 6B092CC20FFE40160088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 39"; - rLen = 0; - rLoc = 1634; - rType = 0; - vrLen = 1006; - vrLoc = 937; + 6B1185F41006895B0018F96F /* DetourNode.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 1920}}"; + sepNavSelRange = "{1317, 0}"; + sepNavVisRange = "{1215, 451}"; + }; }; - 6B092CC30FFE40160088D3A5 /* PBXTextBookmark */ = { + 6B1185F61006896B0018F96F /* DetourNode.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 2064}}"; + sepNavSelRange = "{1489, 0}"; + sepNavVisRange = "{1214, 572}"; + }; + }; + 6B1185FC10068B040018F96F /* DetourCommon.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 1888}}"; + sepNavSelRange = "{3139, 0}"; + sepNavVisRange = "{2190, 997}"; + }; + }; + 6B1185FD10068B150018F96F /* DetourCommon.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 3280}}"; + sepNavSelRange = "{3981, 0}"; + sepNavVisRange = "{3612, 444}"; + }; + }; + 6B1186211006945C0018F96F /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 6B024C0C10060AC600CF7107 /* Icon.icns */; + }; + 6B1186221006945C0018F96F /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 9"; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 260"; rLen = 0; - rLoc = 1327; + rLoc = 6988; rType = 0; - vrLen = 408; + vrLen = 700; + vrLoc = 6884; + }; + 6B1186231006945C0018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; + name = "DetourCommon.h: 123"; + rLen = 0; + rLoc = 3139; + rType = 0; + vrLen = 997; + vrLoc = 2190; + }; + 6B1186241006945C0018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; + name = "DetourCommon.cpp: 182"; + rLen = 0; + rLoc = 3981; + rType = 0; + vrLen = 444; + vrLoc = 3612; + }; + 6B1186251006945C0018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185F41006895B0018F96F /* DetourNode.cpp */; + name = "DetourNode.cpp: 63"; + rLen = 0; + rLoc = 1317; + rType = 0; + vrLen = 451; + vrLoc = 1215; + }; + 6B11862D1006945C0018F96F /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 6B024C0C10060AC600CF7107 /* Icon.icns */; + }; + 6B1186301006945C0018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185F41006895B0018F96F /* DetourNode.cpp */; + name = "DetourNode.cpp: 1"; + rLen = 0; + rLoc = 2331; + rType = 0; + vrLen = 0; vrLoc = 0; }; - 6B092CC40FFE40160088D3A5 /* PBXTextBookmark */ = { + 6B1186311006945C0018F96F /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 501"; + fRef = 6B1185F61006896B0018F96F /* DetourNode.h */; + name = "DetourNode.h: 1"; rLen = 0; - rLoc = 23034; + rLoc = 2978; rType = 0; - vrLen = 898; - vrLoc = 12495; - }; - 6B092CC50FFE40160088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 149"; - rLen = 0; - rLoc = 5355; - rType = 0; - vrLen = 1090; - vrLoc = 4124; - }; - 6B092CC60FFE40160088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; - name = "RecastContour.cpp: 795"; - rLen = 13; - rLoc = 19849; - rType = 0; - vrLen = 972; - vrLoc = 18966; - }; - 6B092CC70FFE40160088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; - name = "DetourTiledNavMeshBuilder.cpp: 39"; - rLen = 0; - rLoc = 1634; - rType = 0; - vrLen = 1006; - vrLoc = 937; - }; - 6B092CC80FFE40160088D3A5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */; - name = "DetourTiledNavMeshBuilder.h: 9"; - rLen = 0; - rLoc = 1327; - rType = 0; - vrLen = 408; + vrLen = 0; vrLoc = 0; }; - 6B092CCA0FFE8E380088D3A5 /* PBXTextBookmark */ = { + 6B1186401006945C0018F96F /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; - name = "BuilderTiledMesh.cpp: 499"; + fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; + name = "DetourCommon.h: 1"; rLen = 0; - rLoc = 22931; + rLoc = 3187; rType = 0; - vrLen = 919; - vrLoc = 12495; + vrLen = 0; + vrLoc = 0; + }; + 6B1186411006945C0018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; + name = "DetourCommon.cpp: 1"; + rLen = 0; + rLoc = 4056; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 6B1186581006945C0018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; + name = "DetourStatNavMesh.h: 150"; + rLen = 0; + rLoc = 1037; + rType = 0; + vrLen = 1302; + vrLoc = 4974; + }; + 6B1186591006945C0018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; + name = "DetourTiledNavMesh.cpp: 1073"; + rLen = 0; + rLoc = 26775; + rType = 0; + vrLen = 526; + vrLoc = 26309; + }; + 6B118672100694C40018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; + name = "DetourStatNavMesh.cpp: 213"; + rLen = 0; + rLoc = 1835; + rType = 0; + vrLen = 407; + vrLoc = 5549; + }; + 6B1186A1100698B70018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185F61006896B0018F96F /* DetourNode.h */; + name = "DetourNode.h: 50"; + rLen = 0; + rLoc = 1489; + rType = 0; + vrLen = 572; + vrLoc = 1214; + }; + 6B1186A4100698B70018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; + name = "DetourStatNavMesh.cpp: 49"; + rLen = 0; + rLoc = 1481; + rType = 0; + vrLen = 758; + vrLoc = 1317; + }; + 6B1186A8100698B70018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; + name = "BuilderStatMesh.h: 30"; + rLen = 0; + rLoc = 519; + rType = 0; + vrLen = 528; + vrLoc = 366; + }; + 6B1186A9100698B70018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "BuilderStatMeshSimple.cpp: 283"; + rLen = 1; + rLoc = 8521; + rType = 0; + vrLen = 1096; + vrLoc = 8325; + }; + 6B1186AA100698B70018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "BuilderStatMeshTiled.cpp: 911"; + rLen = 0; + rLoc = 26037; + rType = 0; + vrLen = 772; + vrLoc = 26084; + }; + 6B1186CC100699A00018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "BuilderStatMesh.cpp: 240"; + rLen = 0; + rLoc = 434; + rType = 0; + vrLen = 861; + vrLoc = 5406; + }; + 6B1186CD100699A00018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */; + name = "DetourStatNavMesh.h: 176"; + rLen = 0; + rLoc = 7109; + rType = 0; + vrLen = 1247; + vrLoc = 59; + }; + 6B1186CE100699A00018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */; + name = "DetourTileNavMesh.h: 19"; + rLen = 0; + rLoc = 938; + rType = 0; + vrLen = 1075; + vrLoc = 784; + }; + 6B1186CF100699A00018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */; + name = "DetourStatNavMeshBuilder.cpp: 105"; + rLen = 0; + rLoc = 2729; + rType = 0; + vrLen = 987; + vrLoc = 5663; + }; + 6B1186D0100699A00018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; + name = "DetourTileNavMesh.cpp: 26"; + rLen = 0; + rLoc = 1076; + rType = 0; + vrLen = 1107; + vrLoc = 391; + }; + 6B1186D1100699A00018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */; + name = "DetourTileNavMeshBuilder.h: 19"; + rLen = 0; + rLoc = 919; + rType = 0; + vrLen = 1327; + vrLoc = 0; + }; + 6B1186D2100699A00018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */; + name = "DetourTileNavMeshBuilder.cpp: 21"; + rLen = 0; + rLoc = 975; + rType = 0; + vrLen = 1071; + vrLoc = 391; + }; + 6B1186D3100699A00018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "BuilderTileMesh.h: 95"; + rLen = 0; + rLoc = 2395; + rType = 0; + vrLen = 804; + vrLoc = 2136; + }; + 6B1186E610069E200018F96F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */; + name = "DetourDebugDraw.h: 13"; + rLen = 0; + rLoc = 705; + rType = 0; + vrLen = 1308; + vrLoc = 128; }; 6B137C6B0F7FCBBB00459200 /* glfont.cpp */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.cpp; + name = glfont.cpp; + path = /Users/memon/Code/recastnavigation/RecastDemo/Source/glfont.cpp; + sourceTree = ""; uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {760, 4544}}"; sepNavSelRange = "{4476, 0}"; @@ -8475,9 +1193,9 @@ }; 6B137C6C0F7FCBBB00459200 /* imgui.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1219, 14256}}"; - sepNavSelRange = "{16026, 0}"; - sepNavVisRange = "{15651, 583}"; + sepNavIntBoundsRect = "{{0, 0}, {1153, 9744}}"; + sepNavSelRange = "{3331, 0}"; + sepNavVisRange = "{3255, 834}"; }; }; 6B137C6D0F7FCBBB00459200 /* MeshLoaderObj.cpp */ = { @@ -8495,31 +1213,37 @@ }; }; 6B137C790F7FCBE400459200 /* glfont.h */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.h; + name = glfont.h; + path = /Users/memon/Code/recastnavigation/RecastDemo/Include/glfont.h; + sourceTree = ""; uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1520}}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1552}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 1087}"; + sepNavVisRange = "{0, 1023}"; }; }; 6B137C7A0F7FCBE400459200 /* imgui.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {969, 864}}"; - sepNavSelRange = "{1161, 0}"; - sepNavVisRange = "{837, 898}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1568}}"; + sepNavSelRange = "{2268, 0}"; + sepNavVisRange = "{2242, 299}"; }; }; 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {969, 800}}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 800}}"; sepNavSelRange = "{1134, 62}"; - sepNavVisRange = "{942, 654}"; + sepNavVisRange = "{915, 681}"; }; }; 6B137C7E0F7FCBFE00459200 /* Recast.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 6880}}"; - sepNavSelRange = "{6104, 0}"; - sepNavVisRange = "{5827, 539}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 6576}}"; + sepNavSelRange = "{8272, 0}"; + sepNavVisRange = "{7805, 1281}"; }; }; 6B137C7F0F7FCBFE00459200 /* RecastDebugDraw.h */ = { @@ -8546,9 +1270,9 @@ }; 6B137C820F7FCC1100459200 /* Recast.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {969, 4608}}"; - sepNavSelRange = "{7006, 0}"; - sepNavVisRange = "{6829, 755}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 4416}}"; + sepNavSelRange = "{6988, 0}"; + sepNavVisRange = "{6484, 804}"; }; }; 6B137C830F7FCC1100459200 /* RecastContour.cpp */ = { @@ -8588,9 +1312,9 @@ }; 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 4320}}"; - sepNavSelRange = "{1409, 0}"; - sepNavVisRange = "{391, 1222}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 4448}}"; + sepNavSelRange = "{7129, 0}"; + sepNavVisRange = "{6948, 872}"; }; }; 6B137C890F7FCC1100459200 /* RecastRegion.cpp */ = { @@ -8617,32 +1341,12 @@ vrLen = 929; vrLoc = 6318; }; - 6B1E02750F924A8500CC0038 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; - name = "RecastRasterization.cpp: 46"; - rLen = 0; - rLoc = 1659; - rType = 0; - vrLen = 834; - vrLoc = 1531; - }; - 6B1E028F0F924D5A00CC0038 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 1206"; - rLen = 0; - rLoc = 27679; - rType = 0; - vrLen = 689; - vrLoc = 26805; - }; 6B1E029B0F924D8B00CC0038 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */; name = "DetourStatNavMeshBuilder.cpp: 285"; rLen = 0; - rLoc = 7230; + rLoc = 7292; rType = 0; vrLen = 362; vrLoc = 6876; @@ -8689,7 +1393,7 @@ fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; name = "imgui.cpp: 537"; rLen = 0; - rLoc = 11993; + rLoc = 5692; rType = 0; vrLen = 508; vrLoc = 11934; @@ -8729,7 +1433,7 @@ fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; name = "imgui.cpp: 690"; rLen = 0; - rLoc = 16026; + rLoc = 7814; rType = 0; vrLen = 678; vrLoc = 15565; @@ -8739,7 +1443,7 @@ fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; name = "imgui.h: 29"; rLen = 0; - rLoc = 1161; + rLoc = 1029; rType = 0; vrLen = 898; vrLoc = 837; @@ -8754,53 +1458,53 @@ vrLen = 959; vrLoc = 44084; }; - 6B25B6100FFA62AD004F1BC4 /* Builder.h */ = { + 6B25B6100FFA62AD004F1BC4 /* Sample.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 816}}"; - sepNavSelRange = "{499, 579}"; - sepNavVisRange = "{337, 772}"; + sepNavSelRange = "{713, 0}"; + sepNavVisRange = "{428, 655}"; }; }; - 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */ = { + 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1216}}"; - sepNavSelRange = "{672, 68}"; - sepNavVisRange = "{283, 595}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1136}}"; + sepNavSelRange = "{1005, 0}"; + sepNavVisRange = "{813, 536}"; }; }; - 6B25B6120FFA62AD004F1BC4 /* BuilderStatMeshSimple.h */ = { + 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1088}}"; - sepNavSelRange = "{248, 55}"; - sepNavVisRange = "{234, 603}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1024}}"; + sepNavSelRange = "{1102, 0}"; + sepNavVisRange = "{793, 599}"; }; }; - 6B25B6140FFA62BE004F1BC4 /* Builder.cpp */ = { + 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 2176}}"; - sepNavSelRange = "{0, 2827}"; - sepNavVisRange = "{374, 683}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 2144}}"; + sepNavSelRange = "{773, 0}"; + sepNavVisRange = "{436, 670}"; }; }; - 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */ = { + 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 5232}}"; - sepNavSelRange = "{4140, 0}"; - sepNavVisRange = "{4056, 765}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 5296}}"; + sepNavSelRange = "{7810, 0}"; + sepNavVisRange = "{7475, 882}"; }; }; - 6B25B6160FFA62BE004F1BC4 /* BuilderStatMeshSimple.cpp */ = { + 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 8800}}"; - sepNavSelRange = "{7152, 0}"; - sepNavVisRange = "{6674, 951}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 8672}}"; + sepNavSelRange = "{7297, 0}"; + sepNavVisRange = "{7248, 659}"; }; }; 6B25B6180FFA62BE004F1BC4 /* main.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 11024}}"; - sepNavSelRange = "{384, 0}"; - sepNavVisRange = "{0, 539}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 11776}}"; + sepNavSelRange = "{11141, 0}"; + sepNavVisRange = "{10913, 580}"; }; }; 6B25B6250FFA63C8004F1BC4 /* PBXTextBookmark */ = { @@ -8813,59 +1517,49 @@ vrLen = 894; vrLoc = 0; }; - 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */ = { + 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 2080}}"; - sepNavSelRange = "{1623, 14}"; - sepNavVisRange = "{1220, 591}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1776}}"; + sepNavSelRange = "{2413, 0}"; + sepNavVisRange = "{2158, 761}"; sepNavWindowFrame = "{{15, 78}, {1011, 695}}"; }; }; - 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */ = { + 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1223, 13904}}"; - sepNavSelRange = "{13451, 0}"; - sepNavVisRange = "{13067, 717}"; + sepNavIntBoundsRect = "{{0, 0}, {1223, 14368}}"; + sepNavSelRange = "{13444, 0}"; + sepNavVisRange = "{12888, 879}"; }; }; - 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */ = { + 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1328, 15184}}"; - sepNavSelRange = "{29411, 0}"; - sepNavVisRange = "{27329, 3022}"; + sepNavIntBoundsRect = "{{0, 0}, {950, 16128}}"; + sepNavSelRange = "{12364, 0}"; + sepNavVisRange = "{12265, 866}"; }; }; - 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */ = { + 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1536}}"; - sepNavSelRange = "{707, 0}"; - sepNavVisRange = "{77, 687}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1472}}"; + sepNavSelRange = "{257, 0}"; + sepNavVisRange = "{0, 578}"; }; }; - 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */ = { + 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 3328}}"; - sepNavSelRange = "{4493, 0}"; - sepNavVisRange = "{0, 1453}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 3200}}"; + sepNavSelRange = "{938, 0}"; + sepNavVisRange = "{784, 1075}"; }; }; - 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */ = { + 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1219, 28944}}"; - sepNavSelRange = "{18063, 0}"; - sepNavVisRange = "{10642, 259}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 20896}}"; + sepNavSelRange = "{1076, 0}"; + sepNavVisRange = "{391, 1107}"; }; }; - 6B2AEC5B0FFB8AB0005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; - name = "ChunkyTriMesh.cpp: 124"; - rLen = 0; - rLoc = 3208; - rType = 0; - vrLen = 835; - vrLoc = 3059; - }; 6B2AEC5C0FFB8AB0005BE9CC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B9B7DB20FF91AC600A9090F /* demo.cpp */; @@ -8916,62 +1610,42 @@ vrLen = 1087; vrLoc = 0; }; - 6B2AEC730FFB8AB0005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; - name = "main.cpp: 12"; - rLen = 0; - rLoc = 169; - rType = 0; - vrLen = 599; - vrLoc = 0; - }; 6B2AEC740FFB8AB0005BE9CC /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B25B6100FFA62AD004F1BC4 /* Builder.h */; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; name = "Builder.h: 39"; - rLen = 95; - rLoc = 718; + rLen = 75; + rLoc = 713; rType = 0; vrLen = 732; vrLoc = 337; }; 6B2AEC750FFB8AB0005BE9CC /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B25B6140FFA62BE004F1BC4 /* Builder.cpp */; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; name = "Builder.cpp: 47"; rLen = 0; - rLoc = 750; + rLoc = 202; rType = 0; vrLen = 625; vrLoc = 372; }; - 6B2AEC770FFB8AB0005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 54"; - rLen = 85; - rLoc = 969; - rType = 0; - vrLen = 569; - vrLoc = 683; - }; 6B2AEC970FFB8AB0005BE9CC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; name = "DetourDebugDraw.cpp: 114"; rLen = 0; - rLoc = 3311; + rLoc = 3331; rType = 0; vrLen = 572; vrLoc = 3083; }; 6B2AECB50FFB8AB0005BE9CC /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; name = "BuilderStatMesh.cpp: 256"; rLen = 0; - rLoc = 7069; + rLoc = 434; rType = 0; vrLen = 948; vrLoc = 5713; @@ -9006,112 +1680,52 @@ vrLen = 539; vrLoc = 5827; }; - 6B2AECEF0FFB8B41005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; - name = "main.cpp: 21"; - rLen = 0; - rLoc = 384; - rType = 0; - vrLen = 539; - vrLoc = 0; - }; - 6B2AECF00FFB8B41005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */; - name = "BuilderStatMesh.h: 1"; - rLen = 1358; - rLoc = 0; - rType = 0; - vrLen = 512; - vrLoc = 160; - }; 6B2AECF80FFB9075005BE9CC /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B25B6100FFA62AD004F1BC4 /* Builder.h */; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; name = "Builder.h: 31"; - rLen = 579; - rLoc = 499; + rLen = 559; + rLoc = 494; rType = 0; vrLen = 772; vrLoc = 337; }; 6B2AECF90FFB9075005BE9CC /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B25B6140FFA62BE004F1BC4 /* Builder.cpp */; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; name = "Builder.cpp: 1"; - rLen = 2827; + rLen = 2679; rLoc = 0; rType = 0; vrLen = 683; vrLoc = 374; }; - 6B2AED0D0FFB94AC005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; - name = "DetourStatNavMesh.cpp: 589"; - rLen = 0; - rLoc = 12744; - rType = 0; - vrLen = 771; - vrLoc = 12161; - }; 6B2AED8E0FFBA45B005BE9CC /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B25B6120FFA62AD004F1BC4 /* BuilderStatMeshSimple.h */; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; name = "BuilderStatMeshSimple.h: 13"; rLen = 55; - rLoc = 248; + rLoc = 246; rType = 0; vrLen = 603; vrLoc = 234; }; 6B2AED930FFBA45B005BE9CC /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B25B6120FFA62AD004F1BC4 /* BuilderStatMeshSimple.h */; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; name = "BuilderStatMeshSimple.h: 22"; rLen = 0; - rLoc = 453; + rLoc = 451; rType = 0; vrLen = 603; vrLoc = 234; }; 6B2AED940FFBA45B005BE9CC /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B25B6160FFA62BE004F1BC4 /* BuilderStatMeshSimple.cpp */; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; name = "BuilderStatMeshSimple.cpp: 233"; rLen = 0; - rLoc = 7152; - rType = 0; - vrLen = 951; - vrLoc = 6674; - }; - 6B2AED950FFBA45B005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */; - name = "BuilderTiledMesh.h: 24"; - rLen = 0; - rLoc = 1451; - rType = 0; - vrLen = 537; - vrLoc = 233; - }; - 6B2AED9F0FFBA507005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; - name = "BuilderStatMesh.cpp: 301"; - rLen = 348; - rLoc = 7553; - rType = 0; - vrLen = 1030; - vrLoc = 7420; - }; - 6B2AEDA00FFBA507005BE9CC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6160FFA62BE004F1BC4 /* BuilderStatMeshSimple.cpp */; - name = "BuilderStatMeshSimple.cpp: 233"; - rLen = 0; - rLoc = 7152; + rLoc = 440; rType = 0; vrLen = 951; vrLoc = 6674; @@ -9126,25 +1740,3623 @@ vrLen = 1182; vrLoc = 0; }; - 6B6BC6C70FE7A3A4009E3CB9 /* PBXTextBookmark */ = { + 6B555D11100B125300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 207"; + rLen = 0; + rLoc = 4770; + rType = 0; + vrLen = 752; + vrLoc = 3907; + }; + 6B555D12100B125300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 303"; + rLen = 20; + rLoc = 8793; + rType = 0; + vrLen = 1369; + vrLoc = 7745; + }; + 6B555D13100B125300247EA3 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; - name = "RecastRasterization.cpp: 280"; + name = "RecastRasterization.cpp: 34"; rLen = 0; - rLoc = 7320; + rLoc = 1409; rType = 0; - vrLen = 1077; - vrLoc = 6771; + vrLen = 1021; + vrLoc = 591; }; - 6B6BC6CA0FE7A3A4009E3CB9 /* PBXTextBookmark */ = { + 6B555D14100B125300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 207"; + rLen = 0; + rLoc = 4770; + rType = 0; + vrLen = 752; + vrLoc = 3907; + }; + 6B555D15100B125300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 303"; + rLen = 20; + rLoc = 8793; + rType = 0; + vrLen = 1369; + vrLoc = 7745; + }; + 6B555D16100B125300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; + name = "RecastRasterization.cpp: 25"; + rLen = 0; + rLoc = 1050; + rType = 0; + vrLen = 1093; + vrLoc = 516; + }; + 6B555D23100B136A00247EA3 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; - name = "Recast.cpp: 264"; + name = "Recast.cpp: 260"; rLen = 0; - rLoc = 7006; + rLoc = 6988; + rType = 0; + vrLen = 804; + vrLoc = 6484; + }; + 6B555D24100B136A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; + name = "RecastRasterization.cpp: 274"; + rLen = 0; + rLoc = 7129; + rType = 0; + vrLen = 872; + vrLoc = 6948; + }; + 6B555D25100B136A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: expected initializer before 'void'"; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + rLen = 1; + rLoc = 310; + rType = 1; + }; + 6B555D26100B136A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; + name = "RecastRasterization.cpp: 274"; + rLen = 0; + rLoc = 7129; + rType = 0; + vrLen = 865; + vrLoc = 6948; + }; + 6B555D27100B136A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 300"; + rLen = 0; + rLoc = 8384; + rType = 0; + vrLen = 1230; + vrLoc = 7779; + }; + 6B555D28100B136A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 260"; + rLen = 0; + rLoc = 6988; + rType = 0; + vrLen = 804; + vrLoc = 6484; + }; + 6B555D29100B136A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; + name = "RecastRasterization.cpp: 274"; + rLen = 0; + rLoc = 7129; + rType = 0; + vrLen = 872; + vrLoc = 6948; + }; + 6B555D2A100B136A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 300"; + rLen = 0; + rLoc = 8427; + rType = 0; + vrLen = 1231; + vrLoc = 7779; + }; + 6B555D2F100B143200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 298"; + rLen = 0; + rLoc = 8272; + rType = 0; + vrLen = 1281; + vrLoc = 7805; + }; + 6B555D30100B143200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB85D3F0FCEAA6300758966 /* SDL_video.h */; + name = "SDL_video.h: 156"; + rLen = 0; + rLoc = 5302; + rType = 0; + vrLen = 1419; + vrLoc = 4445; + }; + 6B555D31100B143200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 209"; + rLen = 13; + rLoc = 4780; + rType = 0; + vrLen = 738; + vrLoc = 3907; + }; + 6B555D32100B143200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 298"; + rLen = 0; + rLoc = 8272; + rType = 0; + vrLen = 1281; + vrLoc = 7805; + }; + 6B555D33100B143200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB85D3F0FCEAA6300758966 /* SDL_video.h */; + name = "SDL_video.h: 156"; + rLen = 0; + rLoc = 5302; + rType = 0; + vrLen = 1419; + vrLoc = 4445; + }; + 6B555D34100B143200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 241"; + rLen = 0; + rLoc = 5653; + rType = 0; + vrLen = 648; + vrLoc = 4702; + }; + 6B555D3E100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 612"; + rLen = 0; + rLoc = 7339; + rType = 0; + vrLen = 822; + vrLoc = 13494; + }; + 6B555D3F100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 22"; + rLen = 0; + rLoc = 952; + rType = 0; + vrLen = 1085; + vrLoc = 56; + }; + 6B555D40100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 684"; + rLen = 0; + rLoc = 15926; + rType = 0; + vrLen = 410; + vrLoc = 15089; + }; + 6B555D41100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "BuilderStatMeshSimple.cpp: 134"; + rLen = 0; + rLoc = 440; + rType = 0; + vrLen = 418; + vrLoc = 4037; + }; + 6B555D42100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "BuilderStatMesh.cpp: 60"; + rLen = 0; + rLoc = 434; + rType = 0; + vrLen = 369; + vrLoc = 1059; + }; + 6B555D43100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "BuilderStatMeshTiled.cpp: 162"; + rLen = 0; + rLoc = 439; + rType = 0; + vrLen = 345; + vrLoc = 5020; + }; + 6B555D44100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "BuilderTileMesh.cpp: 213"; + rLen = 0; + rLoc = 1353; + rType = 0; + vrLen = 366; + vrLoc = 5252; + }; + 6B555D45100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + rLen = 0; + rLoc = 202; + rType = 0; + }; + 6B555D46100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 240"; + rLen = 0; + rLoc = 5631; + rType = 0; + vrLen = 688; + vrLoc = 4702; + }; + 6B555D47100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 30"; + rLen = 0; + rLoc = 1029; + rType = 0; + vrLen = 898; + vrLoc = 837; + }; + 6B555D48100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 451"; + rLen = 0; + rLoc = 4392; + rType = 0; + vrLen = 611; + vrLoc = 10194; + }; + 6B555D49100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 30"; + rLen = 0; + rLoc = 1029; + rType = 0; + vrLen = 898; + vrLoc = 837; + }; + 6B555D4A100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 451"; + rLen = 0; + rLoc = 4392; + rType = 0; + vrLen = 610; + vrLoc = 10194; + }; + 6B555D4B100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 30"; + rLen = 0; + rLoc = 1029; + rType = 0; + vrLen = 898; + vrLoc = 837; + }; + 6B555D4C100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 823"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 959; + vrLoc = 19335; + }; + 6B555D4D100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 51"; + rLen = 0; + rLoc = 2087; + rType = 0; + vrLen = 833; + vrLoc = 1060; + }; + 6B555D4E100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 612"; + rLen = 0; + rLoc = 7339; + rType = 0; + vrLen = 822; + vrLoc = 13494; + }; + 6B555D4F100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Builder.cpp: 81"; + rLen = 0; + rLoc = 202; + rType = 0; + vrLen = 525; + vrLoc = 1242; + }; + 6B555D50100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 22"; + rLen = 0; + rLoc = 952; + rType = 0; + vrLen = 1085; + vrLoc = 56; + }; + 6B555D51100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 684"; + rLen = 0; + rLoc = 15926; + rType = 0; + vrLen = 410; + vrLoc = 15089; + }; + 6B555D52100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "BuilderStatMeshSimple.cpp: 134"; + rLen = 0; + rLoc = 440; + rType = 0; + vrLen = 418; + vrLoc = 4037; + }; + 6B555D53100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "BuilderStatMesh.cpp: 60"; + rLen = 0; + rLoc = 434; + rType = 0; + vrLen = 369; + vrLoc = 1059; + }; + 6B555D54100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "BuilderStatMeshTiled.cpp: 162"; + rLen = 0; + rLoc = 439; + rType = 0; + vrLen = 345; + vrLoc = 5020; + }; + 6B555D55100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "BuilderTileMesh.cpp: 213"; + rLen = 0; + rLoc = 1353; + rType = 0; + vrLen = 366; + vrLoc = 5252; + }; + 6B555D56100B175F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Builder.cpp: 100"; + rLen = 0; + rLoc = 202; + rType = 0; + vrLen = 1040; + vrLoc = 1675; + }; + 6B555D59100B17DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Builder.cpp: 109"; + rLen = 0; + rLoc = 202; + rType = 0; + vrLen = 824; + vrLoc = 374; + }; + 6B555D5A100B17DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "BuilderStatMesh.cpp: 66"; + rLen = 0; + rLoc = 434; + rType = 0; + vrLen = 824; + vrLoc = 435; + }; + 6B555D5B100B17DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "BuilderStatMeshTiled.cpp: 170"; + rLen = 0; + rLoc = 439; + rType = 0; + vrLen = 2175; + vrLoc = 2989; + }; + 6B555D5C100B17DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 44"; + rLen = 0; + rLoc = 1729; + rType = 0; + vrLen = 1222; + vrLoc = 667; + }; + 6B555D5D100B17DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Builder.cpp: 109"; + rLen = 0; + rLoc = 202; + rType = 0; + vrLen = 824; + vrLoc = 374; + }; + 6B555D5E100B17DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "BuilderStatMesh.cpp: 66"; + rLen = 0; + rLoc = 434; + rType = 0; + vrLen = 824; + vrLoc = 435; + }; + 6B555D5F100B17DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "BuilderStatMeshTiled.cpp: 170"; + rLen = 0; + rLoc = 439; + rType = 0; + vrLen = 2175; + vrLoc = 2989; + }; + 6B555D60100B17DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 44"; + rLen = 0; + rLoc = 1729; + rType = 0; + vrLen = 1222; + vrLoc = 667; + }; + 6B555D61100B17DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 769"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 1208; + vrLoc = 17613; + }; + 6B555D64100B185A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 489"; + rLen = 0; + rLoc = 11786; + rType = 0; + vrLen = 890; + vrLoc = 10544; + }; + 6B555D65100B185A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 767"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 1209; + vrLoc = 17613; + }; + 6B555D66100B185A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 767"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 1209; + vrLoc = 17613; + }; + 6B555D67100B185A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 489"; + rLen = 0; + rLoc = 11786; + rType = 0; + vrLen = 890; + vrLoc = 10544; + }; + 6B555D68100B185A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 775"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 1136; + vrLoc = 17613; + }; + 6B555D6A100B186400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 779"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 1135; + vrLoc = 17613; + }; + 6B555D6C100B189600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 777"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 1204; + vrLoc = 17613; + }; + 6B555D6E100B18EA00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Builder.cpp: 109"; + rLen = 0; + rLoc = 202; + rType = 0; + vrLen = 824; + vrLoc = 374; + }; + 6B555D6F100B18EA00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 745"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 1119; + vrLoc = 17044; + }; + 6B555D70100B18EA00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 496"; + rLen = 0; + rLoc = 12023; + rType = 0; + vrLen = 896; + vrLoc = 10544; + }; + 6B555D71100B18EA00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 772"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 1227; + vrLoc = 17613; + }; + 6B555D72100B18EA00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 496"; + rLen = 0; + rLoc = 12023; + rType = 0; + vrLen = 896; + vrLoc = 10544; + }; + 6B555D73100B18EA00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Builder.cpp: 109"; + rLen = 0; + rLoc = 202; + rType = 0; + vrLen = 824; + vrLoc = 374; + }; + 6B555D74100B18EA00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 745"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 1119; + vrLoc = 17044; + }; + 6B555D75100B18EA00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 578"; + rLen = 0; + rLoc = 13659; + rType = 0; + vrLen = 945; + vrLoc = 12286; + }; + 6B555D76100B18FC00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 577"; + rLen = 0; + rLoc = 13659; + rType = 0; + vrLen = 1033; + vrLoc = 12393; + }; + 6B555D78100B192F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 577"; + rLen = 0; + rLoc = 13659; + rType = 0; + vrLen = 1033; + vrLoc = 12393; + }; + 6B555D79100B192F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 745"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 1119; + vrLoc = 17044; + }; + 6B555D7A100B192F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 577"; + rLen = 0; + rLoc = 13659; + rType = 0; + vrLen = 1033; + vrLoc = 12393; + }; + 6B555D7B100B192F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 732"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 1108; + vrLoc = 16418; + }; + 6B555D7E100B1A5200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 721"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 907; + vrLoc = 15516; + }; + 6B555D7F100B1A5200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 496"; + rLen = 0; + rLoc = 12023; + rType = 0; + vrLen = 836; + vrLoc = 10699; + }; + 6B555D80100B1A5200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Builder.cpp: 46"; + rLen = 0; + rLoc = 202; + rType = 0; + vrLen = 1040; + vrLoc = 1675; + }; + 6B555D81100B1A5200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "BuilderStatMeshSimple.cpp: 281"; + rLen = 0; + rLoc = 8522; + rType = 0; + vrLen = 1261; + vrLoc = 7709; + }; + 6B555D82100B1A5200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "BuilderStatMeshTiled.cpp: 117"; + rLen = 0; + rLoc = 439; + rType = 0; + vrLen = 2054; + vrLoc = 3222; + }; + 6B555D83100B1A5200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 721"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 907; + vrLoc = 15516; + }; + 6B555D84100B1A5200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 496"; + rLen = 0; + rLoc = 12023; + rType = 0; + vrLen = 836; + vrLoc = 10699; + }; + 6B555D85100B1A5200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Builder.cpp: 46"; + rLen = 0; + rLoc = 202; + rType = 0; + vrLen = 1040; + vrLoc = 1675; + }; + 6B555D86100B1A5200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "BuilderStatMeshTiled.cpp: 117"; + rLen = 0; + rLoc = 439; + rType = 0; + vrLen = 2054; + vrLoc = 3222; + }; + 6B555D87100B1A5200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "BuilderStatMeshSimple.cpp: 281"; + rLen = 0; + rLoc = 8522; + rType = 0; + vrLen = 1261; + vrLoc = 7709; + }; + 6B555D88100B1A5200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "BuilderStatMeshTiled.cpp: 540"; + rLen = 0; + rLoc = 14986; + rType = 0; + vrLen = 1340; + vrLoc = 14213; + }; + 6B555D90100B1B6900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "BuilderStatMeshTiled.cpp: 540"; + rLen = 0; + rLoc = 14986; + rType = 0; + vrLen = 1411; + vrLoc = 14213; + }; + 6B555D91100B1B6900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 28"; + rLen = 0; + rLoc = 1274; + rType = 0; + vrLen = 1335; + vrLoc = 516; + }; + 6B555D92100B1B6900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 388"; + rLen = 0; + rLoc = 8696; + rType = 0; + vrLen = 502; + vrLoc = 8005; + }; + 6B555D93100B1B6900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: 'struct GuiState' has no member named 'upPressed'"; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + rLen = 0; + rLoc = 327; + rType = 1; + }; + 6B555D94100B1B6900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "BuilderStatMeshTiled.cpp: 540"; + rLen = 0; + rLoc = 14986; + rType = 0; + vrLen = 1411; + vrLoc = 14213; + }; + 6B555D95100B1B6900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 497"; + rLen = 0; + rLoc = 12030; + rType = 0; + vrLen = 836; + vrLoc = 10699; + }; + 6B555D96100B1B6900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 28"; + rLen = 0; + rLoc = 1274; + rType = 0; + vrLen = 1335; + vrLoc = 516; + }; + 6B555D97100B1B6900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 691"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 844; + vrLoc = 15382; + }; + 6B555D98100B1B6900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 388"; + rLen = 0; + rLoc = 8696; + rType = 0; + vrLen = 502; + vrLoc = 8005; + }; + 6B555D99100B1B6900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 696"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 671; + vrLoc = 15562; + }; + 6B555D9A100B1C2400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 695"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 697; + vrLoc = 15562; + }; + 6B555D9B100B1C2400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 28"; + rLen = 0; + rLoc = 1274; + rType = 0; + vrLen = 799; + vrLoc = 784; + }; + 6B555D9C100B1C2400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C790F7FCBE400459200 /* glfont.h */; + name = "glfont.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1023; + vrLoc = 0; + }; + 6B555D9D100B1C2400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 192"; + rLen = 0; + rLoc = 3880; + rType = 0; + vrLen = 351; + vrLoc = 3743; + }; + 6B555D9E100B1C2400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 695"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 697; + vrLoc = 15562; + }; + 6B555D9F100B1C2400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 192"; + rLen = 0; + rLoc = 3880; + rType = 0; + vrLen = 351; + vrLoc = 3743; + }; + 6B555DA0100B1C2400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 28"; + rLen = 0; + rLoc = 1274; + rType = 0; + vrLen = 799; + vrLoc = 784; + }; + 6B555DA1100B1C2400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C790F7FCBE400459200 /* glfont.h */; + name = "glfont.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1023; + vrLoc = 0; + }; + 6B555DA2100B1C2400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 193"; + rLen = 0; + rLoc = 3901; + rType = 0; + vrLen = 351; + vrLoc = 3743; + }; + 6B555DA8100B1E6500247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "BuilderTileMesh.cpp: 40"; + rLen = 0; + rLoc = 1353; + rType = 0; + vrLen = 542; + vrLoc = 1019; + }; + 6B555DA9100B1E6500247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 200"; + rLen = 0; + rLoc = 4339; + rType = 0; + vrLen = 427; + vrLoc = 3799; + }; + 6B555DAA100B1E6500247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 200"; + rLen = 0; + rLoc = 4339; + rType = 0; + vrLen = 427; + vrLoc = 3799; + }; + 6B555DAB100B1E6500247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "BuilderTileMesh.cpp: 40"; + rLen = 0; + rLoc = 1353; + rType = 0; + vrLen = 542; + vrLoc = 1019; + }; + 6B555DAC100B1E6500247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 599"; + rLen = 0; + rLoc = 13504; + rType = 0; + vrLen = 744; + vrLoc = 13375; + }; + 6B555DAD100B1E7900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 605"; + rLen = 0; + rLoc = 13658; + rType = 0; + vrLen = 677; + vrLoc = 13260; + }; + 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 411}}"; + sepNavSelRange = "{182, 0}"; + sepNavVisRange = "{0, 182}"; + }; + }; + 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 6656}}"; + sepNavSelRange = "{5500, 0}"; + sepNavVisRange = "{5401, 572}"; + }; + }; + 6B555DBD100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 4"; + rLen = 13; + rLoc = 133; + rType = 0; + vrLen = 178; + vrLoc = 0; + }; + 6B555DBE100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 17"; + rLen = 0; + rLoc = 234; + rType = 0; + vrLen = 461; + vrLoc = 0; + }; + 6B555DBF100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 53"; + rLen = 0; + rLoc = 2200; + rType = 0; + vrLen = 794; + vrLoc = 1103; + }; + 6B555DC0100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 30"; + rLen = 0; + rLoc = 1194; rType = 0; vrLen = 755; - vrLoc = 6829; + vrLoc = 837; + }; + 6B555DC1100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 206"; + rLen = 0; + rLoc = 7511; + rType = 0; + vrLen = 496; + vrLoc = 4108; + }; + 6B555DC2100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 607"; + rLen = 0; + rLoc = 13681; + rType = 0; + vrLen = 1004; + vrLoc = 12933; + }; + 6B555DC3100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 32"; + rLen = 0; + rLoc = 1397; + rType = 0; + vrLen = 1442; + vrLoc = 391; + }; + 6B555DC4100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 695"; + rLen = 0; + rLoc = 7814; + rType = 0; + vrLen = 914; + vrLoc = 1898; + }; + 6B555DC5100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 32"; + rLen = 0; + rLoc = 1397; + rType = 0; + vrLen = 1442; + vrLoc = 391; + }; + 6B555DC6100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 30"; + rLen = 0; + rLoc = 1193; + rType = 0; + vrLen = 1172; + vrLoc = 591; + }; + 6B555DC7100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 75"; + rLen = 0; + rLoc = 2398; + rType = 0; + vrLen = 578; + vrLoc = 1656; + }; + 6B555DC8100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 26"; + rLen = 0; + rLoc = 1034; + rType = 0; + vrLen = 1516; + vrLoc = 0; + }; + 6B555DC9100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 1"; + rLen = 0; + rLoc = 182; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 6B555DCA100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 1"; + rLen = 0; + rLoc = 9225; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 6B555DCB100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 1"; + rLen = 0; + rLoc = 182; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 6B555DCC100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 63"; + rLen = 0; + rLoc = 2285; + rType = 0; + vrLen = 578; + vrLoc = 1656; + }; + 6B555DCD100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 23"; + rLen = 0; + rLoc = 1021; + rType = 0; + vrLen = 1509; + vrLoc = 0; + }; + 6B555DCE100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 1"; + rLen = 0; + rLoc = 37; + rType = 0; + vrLen = 41; + vrLoc = 0; + }; + 6B555DCF100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 59"; + rLen = 0; + rLoc = 1783; + rType = 0; + vrLen = 946; + vrLoc = 1509; + }; + 6B555DD0100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 4"; + rLen = 0; + rLoc = 676; + rType = 0; + vrLen = 1035; + vrLoc = 0; + }; + 6B555DD1100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 57"; + rLen = 0; + rLoc = 1783; + rType = 0; + vrLen = 977; + vrLoc = 1477; + }; + 6B555DD2100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 197"; + rLen = 0; + rLoc = 7484; + rType = 0; + vrLen = 834; + vrLoc = 3959; + }; + 6B555DD3100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 30"; + rLen = 0; + rLoc = 1366; + rType = 0; + vrLen = 1074; + vrLoc = 918; + }; + 6B555DD4100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 21"; + rLen = 0; + rLoc = 984; + rType = 0; + vrLen = 1509; + vrLoc = 0; + }; + 6B555DD5100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 45"; + rLen = 0; + rLoc = 2062; + rType = 0; + vrLen = 578; + vrLoc = 1561; + }; + 6B555DD6100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 1"; + rLen = 0; + rLoc = 128; + rType = 0; + vrLen = 95; + vrLoc = 0; + }; + 6B555DD7100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 46"; + rLen = 0; + rLoc = 2062; + rType = 0; + vrLen = 595; + vrLoc = 1561; + }; + 6B555DD8100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 21"; + rLen = 0; + rLoc = 984; + rType = 0; + vrLen = 932; + vrLoc = 1435; + }; + 6B555DD9100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 46"; + rLen = 0; + rLoc = 2062; + rType = 0; + vrLen = 1013; + vrLoc = 1002; + }; + 6B555DDA100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 280"; + rLen = 99; + rLoc = 6336; + rType = 0; + vrLen = 812; + vrLoc = 6111; + }; + 6B555DDB100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 4"; + rLen = 0; + rLoc = 128; + rType = 0; + vrLen = 178; + vrLoc = 0; + }; + 6B555DDC100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 198"; + rLen = 0; + rLoc = 7490; + rType = 0; + vrLen = 834; + vrLoc = 3959; + }; + 6B555DDD100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 4"; + rLen = 13; + rLoc = 133; + rType = 0; + vrLen = 178; + vrLoc = 0; + }; + 6B555DDE100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 25"; + rLen = 0; + rLoc = 1112; + rType = 0; + vrLen = 941; + vrLoc = 662; + }; + 6B555DDF100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 43"; + rLen = 0; + rLoc = 1871; + rType = 0; + vrLen = 1013; + vrLoc = 1002; + }; + 6B555DE0100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 29"; + rLen = 0; + rLoc = 1194; + rType = 0; + vrLen = 1283; + vrLoc = 391; + }; + 6B555DE1100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 207"; + rLen = 0; + rLoc = 7530; + rType = 0; + vrLen = 726; + vrLoc = 4157; + }; + 6B555DE2100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 69"; + rLen = 11; + rLoc = 2316; + rType = 0; + vrLen = 703; + vrLoc = 1488; + }; + 6B555DE3100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 207"; + rLen = 0; + rLoc = 7553; + rType = 0; + vrLen = 848; + vrLoc = 4176; + }; + 6B555DE4100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 66"; + rLen = 0; + rLoc = 2304; + rType = 0; + vrLen = 477; + vrLoc = 1736; + }; + 6B555DE5100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 207"; + rLen = 0; + rLoc = 7558; + rType = 0; + vrLen = 952; + vrLoc = 4277; + }; + 6B555DE6100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 46"; + rLen = 0; + rLoc = 2062; + rType = 0; + vrLen = 477; + vrLoc = 1736; + }; + 6B555DE7100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 206"; + rLen = 0; + rLoc = 7511; + rType = 0; + vrLen = 458; + vrLoc = 4108; + }; + 6B555DE8100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 82"; + rLen = 0; + rLoc = 2522; + rType = 0; + vrLen = 411; + vrLoc = 1631; + }; + 6B555DE9100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 738"; + rLen = 0; + rLoc = 16621; + rType = 0; + vrLen = 593; + vrLoc = 16112; + }; + 6B555DEA100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 18"; + rLen = 0; + rLoc = 918; + rType = 0; + vrLen = 987; + vrLoc = 391; + }; + 6B555DEB100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 17"; + rLen = 0; + rLoc = 234; + rType = 0; + vrLen = 461; + vrLoc = 0; + }; + 6B555DEC100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 53"; + rLen = 0; + rLoc = 2200; + rType = 0; + vrLen = 794; + vrLoc = 1103; + }; + 6B555DED100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 30"; + rLen = 0; + rLoc = 1194; + rType = 0; + vrLen = 755; + vrLoc = 837; + }; + 6B555DEE100B236A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 6"; + rLen = 0; + rLoc = 537; + rType = 0; + vrLen = 748; + vrLoc = 0; + }; + 6B555DEF100B25B900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 251"; + rLen = 0; + rLoc = 8834; + rType = 0; + vrLen = 791; + vrLoc = 5467; + }; + 6B555DF0100B25B900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 46"; + rLen = 0; + rLoc = 2087; + rType = 0; + vrLen = 891; + vrLoc = 1029; + }; + 6B555DF1100B25B900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 251"; + rLen = 0; + rLoc = 8834; + rType = 0; + vrLen = 791; + vrLoc = 5467; + }; + 6B555DF2100B25B900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 46"; + rLen = 0; + rLoc = 2087; + rType = 0; + vrLen = 891; + vrLoc = 1029; + }; + 6B555DF3100B25B900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 619"; + rLen = 0; + rLoc = 16374; + rType = 0; + vrLen = 887; + vrLoc = 15152; + }; + 6B555DF6100B273500247EA3 /* stb_truetype.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1160, 26944}}"; + sepNavSelRange = "{57012, 0}"; + sepNavVisRange = "{56611, 817}"; + }; + }; + 6B555DF7100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 326"; + rLen = 0; + rLoc = 7675; + rType = 0; + vrLen = 1029; + vrLoc = 7242; + }; + 6B555DF8100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 31"; + rLen = 559; + rLoc = 494; + rType = 0; + vrLen = 842; + vrLoc = 267; + }; + 6B555DF9100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 46"; + rLen = 0; + rLoc = 202; + rType = 0; + vrLen = 993; + vrLoc = 1675; + }; + 6B555DFA100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 95"; + rLen = 0; + rLoc = 2395; + rType = 0; + vrLen = 876; + vrLoc = 2068; + }; + 6B555DFB100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 40"; + rLen = 0; + rLoc = 1353; + rType = 0; + vrLen = 670; + vrLoc = 963; + }; + 6B555DFC100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; + name = "Sample_StatMeshTiled.h: 34"; + rLen = 0; + rLoc = 703; + rType = 0; + vrLen = 707; + vrLoc = 76; + }; + 6B555DFD100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 540"; + rLen = 0; + rLoc = 14986; + rType = 0; + vrLen = 1313; + vrLoc = 14311; + }; + 6B555DFE100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; + name = "Sample_StatMesh.h: 30"; + rLen = 0; + rLoc = 519; + rType = 0; + vrLen = 633; + vrLoc = 303; + }; + 6B555DFF100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "Sample_StatMesh.cpp: 66"; + rLen = 0; + rLoc = 434; + rType = 0; + vrLen = 701; + vrLoc = 558; + }; + 6B555E00100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; + name = "Sample_StatMeshSimple.h: 13"; + rLen = 55; + rLoc = 246; + rType = 0; + vrLen = 676; + vrLoc = 180; + }; + 6B555E01100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555E02100B285300247EA3 /* debugdraw.cpp */; + name = "debugdraw.cpp: 215"; + rLen = 0; + rLoc = 4653; + rType = 0; + vrLen = 731; + vrLoc = 4426; + }; + 6B555E02100B285300247EA3 /* debugdraw.cpp */ = { + isa = PBXFileReference; + name = debugdraw.cpp; + path = "/Users/memon/Public/Drop Box/debugdraw.cpp"; + sourceTree = ""; + }; + 6B555E03100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 278"; + rLen = 0; + rLoc = 8472; + rType = 0; + vrLen = 1186; + vrLoc = 7783; + }; + 6B555E04100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */; + name = "MeshLoaderObj.h: 31"; + rLen = 62; + rLoc = 1134; + rType = 0; + vrLen = 681; + vrLoc = 915; + }; + 6B555E05100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 739"; + rLen = 0; + rLoc = 16583; + rType = 0; + vrLen = 563; + vrLoc = 16368; + }; + 6B555E06100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 4"; + rLen = 0; + rLoc = 53; + rType = 0; + vrLen = 162; + vrLoc = 0; + }; + 6B555E07100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 210"; + rLen = 0; + rLoc = 5403; + rType = 0; + vrLen = 733; + vrLoc = 4418; + }; + 6B555E08100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 326"; + rLen = 0; + rLoc = 7675; + rType = 0; + vrLen = 1029; + vrLoc = 7242; + }; + 6B555E09100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 31"; + rLen = 559; + rLoc = 494; + rType = 0; + vrLen = 842; + vrLoc = 267; + }; + 6B555E0A100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 46"; + rLen = 0; + rLoc = 202; + rType = 0; + vrLen = 993; + vrLoc = 1675; + }; + 6B555E0B100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 95"; + rLen = 0; + rLoc = 2395; + rType = 0; + vrLen = 876; + vrLoc = 2068; + }; + 6B555E0C100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 40"; + rLen = 0; + rLoc = 1353; + rType = 0; + vrLen = 670; + vrLoc = 963; + }; + 6B555E0D100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; + name = "Sample_StatMeshTiled.h: 34"; + rLen = 0; + rLoc = 703; + rType = 0; + vrLen = 707; + vrLoc = 76; + }; + 6B555E0E100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 540"; + rLen = 0; + rLoc = 14986; + rType = 0; + vrLen = 1313; + vrLoc = 14311; + }; + 6B555E0F100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; + name = "Sample_StatMesh.h: 30"; + rLen = 0; + rLoc = 519; + rType = 0; + vrLen = 633; + vrLoc = 303; + }; + 6B555E10100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "Sample_StatMesh.cpp: 66"; + rLen = 0; + rLoc = 434; + rType = 0; + vrLen = 701; + vrLoc = 558; + }; + 6B555E11100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; + name = "Sample_StatMeshSimple.h: 13"; + rLen = 55; + rLoc = 246; + rType = 0; + vrLen = 676; + vrLoc = 180; + }; + 6B555E12100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 278"; + rLen = 0; + rLoc = 8472; + rType = 0; + vrLen = 1186; + vrLoc = 7783; + }; + 6B555E13100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */; + name = "MeshLoaderObj.h: 31"; + rLen = 62; + rLoc = 1134; + rType = 0; + vrLen = 681; + vrLoc = 915; + }; + 6B555E14100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 213"; + rLen = 0; + rLoc = 5501; + rType = 0; + vrLen = 723; + vrLoc = 4418; + }; + 6B555E15100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 4"; + rLen = 75; + rLoc = 53; + rType = 0; + vrLen = 233; + vrLoc = 0; + }; + 6B555E16100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 212"; + rLen = 0; + rLoc = 5501; + rType = 0; + vrLen = 733; + vrLoc = 4418; + }; + 6B555E17100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 25"; + rLen = 243; + rLoc = 441; + rType = 0; + vrLen = 660; + vrLoc = 76; + }; + 6B555E18100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 4"; + rLen = 0; + rLoc = 53; + rType = 0; + vrLen = 162; + vrLoc = 0; + }; + 6B555E19100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 739"; + rLen = 0; + rLoc = 16583; + rType = 0; + vrLen = 563; + vrLoc = 16368; + }; + 6B555E1A100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 210"; + rLen = 0; + rLoc = 5403; + rType = 0; + vrLen = 733; + vrLoc = 4418; + }; + 6B555E1B100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 4"; + rLen = 0; + rLoc = 53; + rType = 0; + vrLen = 162; + vrLoc = 0; + }; + 6B555E1C100B285300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 17"; + rLen = 0; + rLoc = 530; + rType = 0; + vrLen = 1021; + vrLoc = 0; + }; + 6B555E1D100B2D9800247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 4"; + rLen = 0; + rLoc = 57; + rType = 0; + vrLen = 182; + vrLoc = 0; + }; + 6B555E1E100B2D9800247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 206"; + rLen = 0; + rLoc = 4226; + rType = 0; + vrLen = 786; + vrLoc = 4508; + }; + 6B555E1F100B2D9800247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 206"; + rLen = 20; + rLoc = 4245; + rType = 0; + vrLen = 786; + vrLoc = 4508; + }; + 6B555E20100B2D9800247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 4"; + rLen = 0; + rLoc = 53; + rType = 0; + vrLen = 182; + vrLoc = 0; + }; + 6B555E21100B2D9800247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 206"; + rLen = 0; + rLoc = 4226; + rType = 0; + vrLen = 786; + vrLoc = 4508; + }; + 6B555E22100B2D9800247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 4"; + rLen = 0; + rLoc = 57; + rType = 0; + vrLen = 182; + vrLoc = 0; + }; + 6B555E23100B2D9800247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 218"; + rLen = 5; + rLoc = 4607; + rType = 0; + vrLen = 816; + vrLoc = 4732; + }; + 6B555E38100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 408"; + rLen = 0; + rLoc = 8838; + rType = 0; + vrLen = 431; + vrLoc = 6550; + }; + 6B555E39100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 21"; + rLen = 0; + rLoc = 332; + rType = 0; + vrLen = 245; + vrLoc = 193; + }; + 6B555E3A100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 50"; + rLen = 0; + rLoc = 1081; + rType = 0; + vrLen = 642; + vrLoc = 461; + }; + 6B555E3B100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 95"; + rLen = 0; + rLoc = 2402; + rType = 0; + vrLen = 754; + vrLoc = 1882; + }; + 6B555E3C100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 88"; + rLen = 0; + rLoc = 2215; + rType = 0; + vrLen = 628; + vrLoc = 2008; + }; + 6B555E3D100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; + name = "Sample_StatMeshTiled.h: 1"; + rLen = 0; + rLoc = 35; + rType = 0; + vrLen = 682; + vrLoc = 0; + }; + 6B555E3E100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; + name = "Sample_StatMesh.h: 8"; + rLen = 0; + rLoc = 157; + rType = 0; + vrLen = 548; + vrLoc = 0; + }; + 6B555E3F100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "Sample_StatMesh.cpp: 32"; + rLen = 0; + rLoc = 641; + rType = 0; + vrLen = 572; + vrLoc = 426; + }; + 6B555E40100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; + name = "Sample_StatMeshSimple.h: 49"; + rLen = 0; + rLoc = 944; + rType = 0; + vrLen = 766; + vrLoc = 606; + }; + 6B555E41100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 252"; + rLen = 0; + rLoc = 7679; + rType = 0; + vrLen = 687; + vrLoc = 7246; + }; + 6B555E42100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 35"; + rLen = 0; + rLoc = 732; + rType = 0; + vrLen = 468; + vrLoc = 439; + }; + 6B555E43100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: type '' argument given to 'delete', expected pointer"; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + rLen = 1; + rLoc = 743; + rType = 1; + }; + 6B555E44100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 408"; + rLen = 0; + rLoc = 8838; + rType = 0; + vrLen = 431; + vrLoc = 6550; + }; + 6B555E45100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 20"; + rLen = 0; + rLoc = 210; + rType = 0; + vrLen = 163; + vrLoc = 200; + }; + 6B555E46100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 50"; + rLen = 0; + rLoc = 1081; + rType = 0; + vrLen = 631; + vrLoc = 472; + }; + 6B555E47100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 21"; + rLen = 0; + rLoc = 332; + rType = 0; + vrLen = 245; + vrLoc = 193; + }; + 6B555E48100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 50"; + rLen = 0; + rLoc = 1081; + rType = 0; + vrLen = 642; + vrLoc = 461; + }; + 6B555E49100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 95"; + rLen = 0; + rLoc = 2402; + rType = 0; + vrLen = 754; + vrLoc = 1882; + }; + 6B555E4A100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 88"; + rLen = 0; + rLoc = 2215; + rType = 0; + vrLen = 628; + vrLoc = 2008; + }; + 6B555E4B100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; + name = "Sample_StatMeshTiled.h: 77"; + rLen = 0; + rLoc = 1598; + rType = 0; + vrLen = 792; + vrLoc = 1197; + }; + 6B555E4C100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 35"; + rLen = 0; + rLoc = 754; + rType = 0; + vrLen = 484; + vrLoc = 486; + }; + 6B555E4D100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; + name = "Sample_StatMesh.h: 1"; + rLen = 0; + rLoc = 30; + rType = 0; + vrLen = 548; + vrLoc = 0; + }; + 6B555E4E100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; + name = "Sample_StatMeshTiled.h: 1"; + rLen = 0; + rLoc = 35; + rType = 0; + vrLen = 682; + vrLoc = 0; + }; + 6B555E4F100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; + name = "Sample_StatMesh.h: 8"; + rLen = 0; + rLoc = 157; + rType = 0; + vrLen = 548; + vrLoc = 0; + }; + 6B555E50100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "Sample_StatMesh.cpp: 32"; + rLen = 0; + rLoc = 641; + rType = 0; + vrLen = 572; + vrLoc = 426; + }; + 6B555E51100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; + name = "Sample_StatMeshSimple.h: 63"; + rLen = 0; + rLoc = 1391; + rType = 0; + vrLen = 700; + vrLoc = 711; + }; + 6B555E52100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 9"; + rLen = 0; + rLoc = 182; + rType = 0; + vrLen = 557; + vrLoc = 0; + }; + 6B555E53100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; + name = "Sample_StatMeshSimple.h: 4"; + rLen = 0; + rLoc = 92; + rType = 0; + vrLen = 617; + vrLoc = 37; + }; + 6B555E54100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 18"; + rLen = 1; + rLoc = 403; + rType = 0; + vrLen = 617; + vrLoc = 0; + }; + 6B555E55100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; + name = "Sample_StatMeshSimple.h: 49"; + rLen = 0; + rLoc = 944; + rType = 0; + vrLen = 766; + vrLoc = 606; + }; + 6B555E56100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 252"; + rLen = 0; + rLoc = 7679; + rType = 0; + vrLen = 687; + vrLoc = 7246; + }; + 6B555E57100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 35"; + rLen = 0; + rLoc = 732; + rType = 0; + vrLen = 468; + vrLoc = 439; + }; + 6B555E58100B311B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 238"; + rLen = 0; + rLoc = 5112; + rType = 0; + vrLen = 533; + vrLoc = 4683; + }; + 6B555E59100B314A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 238"; + rLen = 0; + rLoc = 5081; + rType = 0; + vrLen = 541; + vrLoc = 4683; + }; + 6B555E5E100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 494"; + rLen = 0; + rLoc = 11158; + rType = 0; + vrLen = 514; + vrLoc = 10887; + }; + 6B555E5F100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 39"; + rLen = 0; + rLoc = 713; + rType = 0; + vrLen = 655; + vrLoc = 428; + }; + 6B555E60100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 47"; + rLen = 0; + rLoc = 773; + rType = 0; + vrLen = 670; + vrLoc = 436; + }; + 6B555E61100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 105"; + rLen = 0; + rLoc = 2670; + rType = 0; + vrLen = 703; + vrLoc = 2253; + }; + 6B555E62100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 492"; + rLen = 0; + rLoc = 13358; + rType = 0; + vrLen = 921; + vrLoc = 12886; + }; + 6B555E63100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 58"; + rLen = 0; + rLoc = 1978; + rType = 0; + vrLen = 723; + vrLoc = 1519; + }; + 6B555E64100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 7"; + rLen = 0; + rLoc = 154; + rType = 0; + vrLen = 182; + vrLoc = 0; + }; + 6B555E65100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 616"; + rLen = 0; + rLoc = 16262; + rType = 0; + vrLen = 408; + vrLoc = 15810; + }; + 6B555E66100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 494"; + rLen = 0; + rLoc = 11158; + rType = 0; + vrLen = 514; + vrLoc = 10887; + }; + 6B555E67100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 39"; + rLen = 0; + rLoc = 713; + rType = 0; + vrLen = 655; + vrLoc = 428; + }; + 6B555E68100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 47"; + rLen = 0; + rLoc = 773; + rType = 0; + vrLen = 670; + vrLoc = 436; + }; + 6B555E69100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 105"; + rLen = 0; + rLoc = 2670; + rType = 0; + vrLen = 703; + vrLoc = 2253; + }; + 6B555E6A100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 492"; + rLen = 0; + rLoc = 13358; + rType = 0; + vrLen = 921; + vrLoc = 12886; + }; + 6B555E6B100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 46"; + rLen = 0; + rLoc = 2061; + rType = 0; + vrLen = 881; + vrLoc = 1033; + }; + 6B555E6C100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 30"; + rLen = 0; + rLoc = 1194; + rType = 0; + vrLen = 718; + vrLoc = 984; + }; + 6B555E6D100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 57"; + rLen = 0; + rLoc = 2061; + rType = 0; + vrLen = 837; + vrLoc = 1340; + }; + 6B555E6E100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 617"; + rLen = 0; + rLoc = 16329; + rType = 0; + vrLen = 447; + vrLoc = 15811; + }; + 6B555E6F100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 57"; + rLen = 0; + rLoc = 2061; + rType = 0; + vrLen = 856; + vrLoc = 1340; + }; + 6B555E70100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 616"; + rLen = 0; + rLoc = 16246; + rType = 0; + vrLen = 408; + vrLoc = 15810; + }; + 6B555E71100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 58"; + rLen = 0; + rLoc = 2061; + rType = 0; + vrLen = 856; + vrLoc = 1340; + }; + 6B555E72100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 616"; + rLen = 0; + rLoc = 16262; + rType = 0; + vrLen = 407; + vrLoc = 15811; + }; + 6B555E73100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 57"; + rLen = 0; + rLoc = 2061; + rType = 0; + vrLen = 774; + vrLoc = 1340; + }; + 6B555E74100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 8"; + rLen = 0; + rLoc = 154; + rType = 0; + vrLen = 265; + vrLoc = 0; + }; + 6B555E75100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 58"; + rLen = 0; + rLoc = 1978; + rType = 0; + vrLen = 723; + vrLoc = 1519; + }; + 6B555E76100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 7"; + rLen = 0; + rLoc = 154; + rType = 0; + vrLen = 182; + vrLoc = 0; + }; + 6B555E77100B334900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 31"; + rLen = 0; + rLoc = 1238; + rType = 0; + vrLen = 738; + vrLoc = 1022; + }; + 6B555E78100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 42"; + rLen = 0; + rLoc = 1558; + rType = 0; + vrLen = 738; + vrLoc = 1022; + }; + 6B555E79100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 95"; + rLen = 0; + rLoc = 2413; + rType = 0; + vrLen = 761; + vrLoc = 2158; + }; + 6B555E7A100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; + name = "Sample_StatMeshTiled.h: 83"; + rLen = 0; + rLoc = 1748; + rType = 0; + vrLen = 574; + vrLoc = 1463; + }; + 6B555E7B100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; + name = "Sample_StatMesh.h: 55"; + rLen = 0; + rLoc = 1005; + rType = 0; + vrLen = 536; + vrLoc = 813; + }; + 6B555E7C100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; + name = "Sample_StatMeshSimple.h: 55"; + rLen = 0; + rLoc = 1102; + rType = 0; + vrLen = 599; + vrLoc = 793; + }; + 6B555E7D100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 243"; + rLen = 0; + rLoc = 7358; + rType = 0; + vrLen = 679; + vrLoc = 7248; + }; + 6B555E7E100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "Sample_StatMesh.cpp: 32"; + rLen = 0; + rLoc = 641; + rType = 0; + vrLen = 430; + vrLoc = 426; + }; + 6B555E7F100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 42"; + rLen = 0; + rLoc = 1558; + rType = 0; + vrLen = 738; + vrLoc = 1022; + }; + 6B555E80100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 95"; + rLen = 0; + rLoc = 2413; + rType = 0; + vrLen = 761; + vrLoc = 2158; + }; + 6B555E81100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; + name = "Sample_StatMeshTiled.h: 83"; + rLen = 0; + rLoc = 1748; + rType = 0; + vrLen = 574; + vrLoc = 1463; + }; + 6B555E82100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */; + name = "Sample_StatMesh.h: 55"; + rLen = 0; + rLoc = 1005; + rType = 0; + vrLen = 536; + vrLoc = 813; + }; + 6B555E83100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 252"; + rLen = 0; + rLoc = 7679; + rType = 0; + vrLen = 685; + vrLoc = 7248; + }; + 6B555E84100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */; + name = "Sample_StatMeshSimple.h: 55"; + rLen = 0; + rLoc = 1102; + rType = 0; + vrLen = 599; + vrLoc = 793; + }; + 6B555E85100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 243"; + rLen = 0; + rLoc = 7358; + rType = 0; + vrLen = 679; + vrLoc = 7248; + }; + 6B555E86100B350E00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "Sample_StatMesh.cpp: 309"; + rLen = 0; + rLoc = 7775; + rType = 0; + vrLen = 884; + vrLoc = 7475; + }; + 6B555E88100B357100247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "Sample_StatMesh.cpp: 313"; + rLen = 0; + rLoc = 7981; + rType = 0; + vrLen = 767; + vrLoc = 7475; + }; + 6B555E8A100B35E000247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "Sample_StatMesh.cpp: 308"; + rLen = 0; + rLoc = 7810; + rType = 0; + vrLen = 882; + vrLoc = 7475; + }; + 6B555E8B100B35E000247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 35"; + rLen = 0; + rLoc = 732; + rType = 0; + vrLen = 486; + vrLoc = 438; + }; + 6B555E8C100B35E000247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; + name = "Sample_StatMesh.cpp: 308"; + rLen = 0; + rLoc = 7810; + rType = 0; + vrLen = 882; + vrLoc = 7475; + }; + 6B555E8D100B35E000247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 457"; + rLen = 0; + rLoc = 12365; + rType = 0; + vrLen = 710; + vrLoc = 12161; + }; + 6B555E8E100B35F500247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 461"; + rLen = 0; + rLoc = 12490; + rType = 0; + vrLen = 708; + vrLoc = 12161; + }; + 6B555E8F100B365F00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 400"; + rLen = 0; + rLoc = 11232; + rType = 0; + vrLen = 727; + vrLoc = 10851; + }; + 6B555E9D100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; + name = "Sample_StatMeshTiled.h: 11"; + rLen = 0; + rLoc = 257; + rType = 0; + vrLen = 578; + vrLoc = 0; + }; + 6B555E9E100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 456"; + rLen = 0; + rLoc = 12364; + rType = 0; + vrLen = 866; + vrLoc = 12265; + }; + 6B555E9F100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 493"; + rLen = 0; + rLoc = 13444; + rType = 0; + vrLen = 879; + vrLoc = 12888; + }; + 6B555EA0100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 703"; + rLen = 0; + rLoc = 16035; + rType = 0; + vrLen = 717; + vrLoc = 15440; + }; + 6B555EA1100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 76"; + rLen = 0; + rLoc = 2268; + rType = 0; + vrLen = 299; + vrLoc = 2242; + }; + 6B555EA2100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 113"; + rLen = 0; + rLoc = 3331; + rType = 0; + vrLen = 834; + vrLoc = 3255; + }; + 6B555EA3100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 241"; + rLen = 0; + rLoc = 7297; + rType = 0; + vrLen = 659; + vrLoc = 7248; + }; + 6B555EA4100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 8"; + rLen = 0; + rLoc = 182; + rType = 0; + vrLen = 182; + vrLoc = 0; + }; + 6B555EA5100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 404"; + rLen = 0; + rLoc = 8950; + rType = 0; + vrLen = 692; + vrLoc = 8832; + }; + 6B555EA6100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 478"; + rLen = 0; + rLoc = 13147; + rType = 0; + vrLen = 884; + vrLoc = 12849; + }; + 6B555EA7100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */; + name = "Sample_StatMeshTiled.h: 11"; + rLen = 0; + rLoc = 257; + rType = 0; + vrLen = 578; + vrLoc = 0; + }; + 6B555EA8100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 35"; + rLen = 102; + rLoc = 1119; + rType = 0; + vrLen = 590; + vrLoc = 952; + }; + 6B555EA9100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 399"; + rLen = 86; + rLoc = 11123; + rType = 0; + vrLen = 781; + vrLoc = 10694; + }; + 6B555EAA100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 35"; + rLen = 0; + rLoc = 1219; + rType = 0; + vrLen = 571; + vrLoc = 952; + }; + 6B555EAB100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */; + name = "Sample_StatMeshTiled.cpp: 456"; + rLen = 0; + rLoc = 12364; + rType = 0; + vrLen = 866; + vrLoc = 12265; + }; + 6B555EAC100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 493"; + rLen = 0; + rLoc = 13444; + rType = 0; + vrLen = 879; + vrLoc = 12888; + }; + 6B555EAD100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 703"; + rLen = 0; + rLoc = 16035; + rType = 0; + vrLen = 717; + vrLoc = 15440; + }; + 6B555EAE100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 305"; + rLen = 0; + rLoc = 6408; + rType = 0; + vrLen = 693; + vrLoc = 6520; + }; + 6B555EAF100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 618"; + rLen = 0; + rLoc = 16330; + rType = 0; + vrLen = 407; + vrLoc = 15961; + }; + 6B555EB0100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 404"; + rLen = 0; + rLoc = 8950; + rType = 0; + vrLen = 692; + vrLoc = 8832; + }; + 6B555EB1100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 76"; + rLen = 0; + rLoc = 2268; + rType = 0; + vrLen = 299; + vrLoc = 2242; + }; + 6B555EB2100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; + name = "imgui.cpp: 113"; + rLen = 0; + rLoc = 3331; + rType = 0; + vrLen = 834; + vrLoc = 3255; + }; + 6B555EB3100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; + name = "Sample_StatMeshSimple.cpp: 241"; + rLen = 0; + rLoc = 7297; + rType = 0; + vrLen = 659; + vrLoc = 7248; + }; + 6B555EB4100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 8"; + rLen = 0; + rLoc = 182; + rType = 0; + vrLen = 182; + vrLoc = 0; + }; + 6B555EB5100B37AB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 355"; + rLen = 0; + rLoc = 7507; + rType = 0; + vrLen = 477; + vrLoc = 7775; + }; + 6B555EB6100B37B000247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 357"; + rLen = 0; + rLoc = 7546; + rType = 0; + vrLen = 595; + vrLoc = 7775; + }; + 6B555EB7100B37B300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 352"; + rLen = 0; + rLoc = 7482; + rType = 0; + vrLen = 297; + vrLoc = 7775; + }; + 6B555EBB100B37DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 351"; + rLen = 0; + rLoc = 7480; + rType = 0; + vrLen = 532; + vrLoc = 7702; + }; + 6B555EBC100B37DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 703"; + rLen = 0; + rLoc = 16035; + rType = 0; + vrLen = 716; + vrLoc = 15440; + }; + 6B555EBD100B37DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 351"; + rLen = 0; + rLoc = 7480; + rType = 0; + vrLen = 532; + vrLoc = 7702; + }; + 6B555EBE100B37DB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 226"; + rLen = 0; + rLoc = 4850; + rType = 0; + vrLen = 693; + vrLoc = 4491; + }; + 6B555EC0100B37E200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 226"; + rLen = 0; + rLoc = 4851; + rType = 0; + vrLen = 693; + vrLoc = 4491; + }; + 6B555EC2100B380400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 226"; + rLen = 0; + rLoc = 4853; + rType = 0; + vrLen = 709; + vrLoc = 4491; + }; + 6B555EC3100B380400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 351"; + rLen = 0; + rLoc = 7480; + rType = 0; + vrLen = 509; + vrLoc = 7702; + }; + 6B555EC4100B380400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 226"; + rLen = 0; + rLoc = 4853; + rType = 0; + vrLen = 709; + vrLoc = 4491; + }; + 6B555EC5100B380400247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 323"; + rLen = 0; + rLoc = 6895; + rType = 0; + vrLen = 608; + vrLoc = 7006; + }; + 6B555EC7100B381600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 346"; + rLen = 0; + rLoc = 7424; + rType = 0; + vrLen = 574; + vrLoc = 7188; + }; + 6B555EC9100B382A00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 236"; + rLen = 0; + rLoc = 4916; + rType = 0; + vrLen = 631; + vrLoc = 5038; + }; + 6B555ECB100B383B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 236"; + rLen = 0; + rLoc = 4916; + rType = 0; + vrLen = 631; + vrLoc = 5038; + }; + 6B555ECD100B387900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 275"; + rLen = 0; + rLoc = 5781; + rType = 0; + vrLen = 710; + vrLoc = 5732; + }; + 6B555ECF100B389000247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 273"; + rLen = 0; + rLoc = 5778; + rType = 0; + vrLen = 700; + vrLoc = 5732; + }; + 6B555ED1100B38B800247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 283"; + rLen = 0; + rLoc = 5931; + rType = 0; + vrLen = 732; + vrLoc = 5732; + }; + 6B555ED3100B38E200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 282"; + rLen = 0; + rLoc = 5889; + rType = 0; + vrLen = 685; + vrLoc = 5764; + }; + 6B555ED7100B396100247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DF6100B273500247EA3 /* stb_truetype.h */; + name = "stb_truetype.h: 1498"; + rLen = 0; + rLoc = 56455; + rType = 0; + vrLen = 1018; + vrLoc = 55838; + }; + 6B555ED8100B396100247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 236"; + rLen = 20; + rLoc = 4880; + rType = 0; + vrLen = 664; + vrLoc = 5006; + }; + 6B555ED9100B396100247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DF6100B273500247EA3 /* stb_truetype.h */; + name = "stb_truetype.h: 1498"; + rLen = 0; + rLoc = 56455; + rType = 0; + vrLen = 1018; + vrLoc = 55838; + }; + 6B555EDA100B396100247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 284"; + rLen = 0; + rLoc = 5959; + rType = 0; + vrLen = 784; + vrLoc = 5781; + }; + 6B555EDD100B39A600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 226"; + rLen = 0; + rLoc = 4853; + rType = 0; + vrLen = 693; + vrLoc = 4507; + }; + 6B555EDE100B39A600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DF6100B273500247EA3 /* stb_truetype.h */; + name = "stb_truetype.h: 1513"; + rLen = 0; + rLoc = 57012; + rType = 0; + vrLen = 817; + vrLoc = 56611; + }; + 6B555EDF100B39A600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 274"; + rLen = 0; + rLoc = 5781; + rType = 0; + vrLen = 739; + vrLoc = 5781; + }; + 6B555EE0100B39A600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 226"; + rLen = 0; + rLoc = 4853; + rType = 0; + vrLen = 693; + vrLoc = 4507; + }; + 6B555EE1100B39A600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DF6100B273500247EA3 /* stb_truetype.h */; + name = "stb_truetype.h: 1513"; + rLen = 0; + rLoc = 57012; + rType = 0; + vrLen = 817; + vrLoc = 56611; + }; + 6B555EE2100B39A600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 280"; + rLen = 0; + rLoc = 5903; + rType = 0; + vrLen = 703; + vrLoc = 5781; + }; + 6B555EE4100B3FA200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 280"; + rLen = 0; + rLoc = 5889; + rType = 0; + vrLen = 579; + vrLoc = 5732; + }; + 6B555EE6100B40CB00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 237"; + rLen = 0; + rLoc = 4952; + rType = 0; + vrLen = 682; + vrLoc = 4904; + }; + 6B555EE8100B40D200247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 237"; + rLen = 0; + rLoc = 4952; + rType = 0; + vrLen = 682; + vrLoc = 4904; + }; + 6B555EEB100B40F300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 195"; + rLen = 0; + rLoc = 4221; + rType = 0; + vrLen = 445; + vrLoc = 4063; + }; + 6B555EED100B410B00247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 227"; + rLen = 0; + rLoc = 4916; + rType = 0; + vrLen = 681; + vrLoc = 4534; + }; + 6B555EEF100B412300247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 263"; + rLen = 0; + rLoc = 5778; + rType = 0; + vrLen = 558; + vrLoc = 5401; + }; + 6B555EF0100B413900247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 262"; + rLen = 0; + rLoc = 5732; + rType = 0; + vrLen = 572; + vrLoc = 5401; + }; + 6B555EF6100B42E600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 256"; + rLen = 0; + rLoc = 5500; + rType = 0; + vrLen = 572; + vrLoc = 5401; + }; + 6B555EF7100B42E600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; + name = "DetourStatNavMesh.cpp: 680"; + rLen = 0; + rLoc = 16689; + rType = 0; + vrLen = 615; + vrLoc = 16618; + }; + 6B555EF8100B42E600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 226"; + rLen = 0; + rLoc = 4853; + rType = 0; + vrLen = 693; + vrLoc = 4507; + }; + 6B555EF9100B42E600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 256"; + rLen = 0; + rLoc = 5500; + rType = 0; + vrLen = 572; + vrLoc = 5401; + }; + 6B555EFA100B42E600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; + name = "imguiRenderGL.cpp: 256"; + rLen = 0; + rLoc = 5500; + rType = 0; + vrLen = 572; + vrLoc = 5401; + }; + 6B555EFB100B42E600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; + name = "DetourStatNavMesh.cpp: 680"; + rLen = 0; + rLoc = 16689; + rType = 0; + vrLen = 615; + vrLoc = 16618; + }; + 6B555EFC100B42E600247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 498"; + rLen = 0; + rLoc = 11239; + rType = 0; + vrLen = 604; + vrLoc = 10892; + }; + 6B555EFF100B430000247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 498"; + rLen = 0; + rLoc = 11270; + rType = 0; + vrLen = 580; + vrLoc = 10913; + }; + 6B555F02100B431000247EA3 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 494"; + rLen = 0; + rLoc = 11141; + rType = 0; + vrLen = 580; + vrLoc = 10913; }; 6B7707B90FBD66CF00D21BAE /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -9210,6 +5422,66 @@ vrLen = 574; vrLoc = 0; }; + 6B7EBB6210071F810066EF8C /* stb_image.c */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.c; + name = stb_image.c; + path = /Users/memon/Code/recastnavigation/RecastDemo/Source/stb_image.c; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 62688}}"; + sepNavSelRange = "{120291, 0}"; + sepNavVisRange = "{120041, 613}"; + }; + }; + 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 = ""; + }; + 6B7EBB6D100721310066EF8C /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 823"; + rLen = 0; + rLoc = 16580; + rType = 0; + vrLen = 511; + vrLoc = 18651; + }; + 6B7EBB76100721810066EF8C /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B7EBB6210071F810066EF8C /* stb_image.c */; + name = "stb_image.c: 3605"; + rLen = 0; + rLoc = 120291; + rType = 0; + vrLen = 487; + vrLoc = 120053; + }; + 6B7EBB78100721810066EF8C /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B7EBB6210071F810066EF8C /* stb_image.c */; + name = "stb_image.c: 3605"; + rLen = 0; + rLoc = 120291; + rType = 0; + vrLen = 487; + vrLoc = 120053; + }; 6B8632970F78114600E2684A /* Recast */ = { isa = PBXExecutable; activeArgIndices = ( @@ -9286,6 +5558,56 @@ vrLen = 1243; vrLoc = 0; }; + 6B8EF40C1007653C003F8851 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; + name = "DetourDebugDraw.cpp: 190"; + rLen = 0; + rLoc = 4846; + rType = 0; + vrLen = 690; + vrLoc = 4634; + }; + 6B8EF40D1007653C003F8851 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 206"; + rLen = 0; + rLoc = 4726; + rType = 0; + vrLen = 752; + vrLoc = 3907; + }; + 6B8EF40E1007653C003F8851 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; + name = "DetourDebugDraw.cpp: 190"; + rLen = 0; + rLoc = 4846; + rType = 0; + vrLen = 690; + vrLoc = 4634; + }; + 6B8EF41C10077256003F8851 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 207"; + rLen = 0; + rLoc = 4770; + rType = 0; + vrLen = 752; + vrLoc = 3907; + }; + 6B9135E710072A4A002ACE50 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "BuilderTileMesh.cpp: 259"; + rLen = 0; + rLoc = 1353; + rType = 0; + vrLen = 973; + vrLoc = 10082; + }; 6B995BDF0FE0D9B300D5C493 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; @@ -9430,6 +5752,11 @@ name = SDL_video.h; path = /Library/Frameworks/SDL.framework/Versions/A/Headers/SDL_video.h; sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 14368}}"; + sepNavSelRange = "{5302, 0}"; + sepNavVisRange = "{4445, 1419}"; + }; }; 6BB87E0B0F9DE8A300E33F12 /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -9514,15 +5841,15 @@ 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 512}}"; - sepNavSelRange = "{1306, 99}"; - sepNavVisRange = "{0, 1433}"; + sepNavSelRange = "{705, 0}"; + sepNavVisRange = "{128, 1308}"; }; }; 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 2864}}"; - sepNavSelRange = "{5140, 18}"; - sepNavVisRange = "{4934, 1490}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 3216}}"; + sepNavSelRange = "{7109, 0}"; + sepNavVisRange = "{59, 1247}"; }; }; 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */ = { @@ -9534,23 +5861,24 @@ }; 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 6928}}"; - sepNavSelRange = "{5905, 0}"; - sepNavVisRange = "{5479, 693}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 6864}}"; + sepNavSelRange = "{4846, 0}"; + sepNavVisRange = "{4634, 690}"; }; }; 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1013, 20512}}"; - sepNavSelRange = "{24492, 110}"; - sepNavVisRange = "{23942, 815}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 12768}}"; + sepNavSelRange = "{16689, 0}"; + sepNavVisRange = "{16618, 615}"; }; }; 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 4608}}"; - sepNavSelRange = "{6451, 0}"; - sepNavVisRange = "{6452, 779}"; + sepNavSelRange = "{2729, 0}"; + sepNavVisRange = "{5663, 987}"; + sepNavWindowFrame = "{{15, 78}, {1011, 695}}"; }; }; 8D1107260486CEB800E47090 /* Recast */ = { diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 index c2f89442..22eae597 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 @@ -268,8 +268,7 @@ 29B97314FDCFA39411CA2CEA 080E96DDFE201D6D7F000001 - 6BDD9E030F91110C00904EEF - 6B137C7D0F7FCBE800459200 + 6B555DF5100B25FC00247EA3 29B97315FDCFA39411CA2CEA 29B97317FDCFA39411CA2CEA 1C37FBAC04509CD000000102 @@ -278,13 +277,13 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 52 - 50 + 16 + 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 492}, {282, 660}} + {{0, 0}, {282, 628}} PBXTopSmartGroupGIDs @@ -294,14 +293,14 @@ GeometryConfiguration Frame - {{0, 0}, {299, 678}} + {{0, 0}, {299, 646}} GroupTreeTableConfiguration MainColumn 282 RubberWindowFrame - 0 59 1280 719 0 0 1280 778 + 0 91 1280 687 0 0 1280 778 Module PBXSmartGroupTreeModule @@ -312,12 +311,14 @@ Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID 6B8632A30F78115100E2684A PBXProjectModuleLabel - Info.plist + main.cpp PBXSplitModuleInNavigatorKey Split0 @@ -325,65 +326,73 @@ PBXProjectModuleGUID 6B8632A40F78115100E2684A PBXProjectModuleLabel - Info.plist + main.cpp _historyCapacity 0 bookmark - 6B024C051006098300CF7107 + 6B555F02100B431000247EA3 history 6BB87E0B0F9DE8A300E33F12 6B7707F00FBD90F100D21BAE 6BB7876B0FC03EAD003C24DB - 6BB85D3A0FCEAA6300758966 6B8A71F40FDAB52200A0A6FB 6B995BDF0FE0D9B300D5C493 - 6B6BC6CA0FE7A3A4009E3CB9 6BC745A70FF527E50083A694 6BC745A80FF527E50083A694 6B9B7D9D0FF91AC600A9090F - 6B25B3A60FFA124D004F1BC4 6B25B43E0FFA1786004F1BC4 6B25B44B0FFA1968004F1BC4 - 6B25B4710FFA1FE0004F1BC4 - 6B25B54F0FFA5899004F1BC4 6B2AEC5C0FFB8AB0005BE9CC 6B2AEC610FFB8AB0005BE9CC 6B2AEC620FFB8AB0005BE9CC 6B2AEC670FFB8AB0005BE9CC - 6B2AEC6F0FFB8AB0005BE9CC 6B2AECED0FFB8B41005BE9CC - 6B2AECEE0FFB8B41005BE9CC - 6B2AECEF0FFB8B41005BE9CC - 6B2AECF80FFB9075005BE9CC - 6B2AECF90FFB9075005BE9CC - 6B2AED8E0FFBA45B005BE9CC - 6B2AEDA00FFBA507005BE9CC 6B092B4F0FFCA0A20088D3A5 6B092B500FFCA0A20088D3A5 - 6B092BB50FFCEC1A0088D3A5 - 6B092BB70FFCEC1A0088D3A5 6B092C5F0FFCFF790088D3A5 6B092CC10FFE40160088D3A5 - 6B02497E1003751300CF7107 - 6B0249821003751300CF7107 - 6B02499F1003766D00CF7107 6B0249BE1003793900CF7107 - 6B024ACE1004AC8D00CF7107 - 6B024B391004CCCC00CF7107 - 6B024BA81005DC3A00CF7107 - 6B024BB81005DF5700CF7107 - 6B024BB91005DF5700CF7107 - 6B024BCA1005DFAB00CF7107 6B024BD31006059C00CF7107 - 6B024BD41006059C00CF7107 - 6B024BD51006059C00CF7107 - 6B024BD61006059C00CF7107 - 6B024BD71006059C00CF7107 - 6B024BEB1006064C00CF7107 - 6B024C001006098300CF7107 6B024C011006098300CF7107 - 6B024C021006098300CF7107 + 6B024C1110060C7600CF7107 + 6B1186211006945C0018F96F + 6B1186231006945C0018F96F + 6B1186241006945C0018F96F + 6B1186251006945C0018F96F + 6B1186A1100698B70018F96F + 6B1186CD100699A00018F96F + 6B1186CE100699A00018F96F + 6B1186CF100699A00018F96F + 6B1186D0100699A00018F96F + 6B1186D1100699A00018F96F + 6B1186D2100699A00018F96F + 6B1186E610069E200018F96F + 6B7EBB69100721310066EF8C + 6B8EF40C1007653C003F8851 + 6B555D23100B136A00247EA3 + 6B555D24100B136A00247EA3 + 6B555D2F100B143200247EA3 + 6B555D30100B143200247EA3 + 6B555E01100B285300247EA3 + 6B555E04100B285300247EA3 + 6B555E5F100B334900247EA3 + 6B555E60100B334900247EA3 + 6B555E79100B350E00247EA3 + 6B555E7B100B350E00247EA3 + 6B555E7C100B350E00247EA3 + 6B555E8A100B35E000247EA3 + 6B555E9D100B37AB00247EA3 + 6B555E9E100B37AB00247EA3 + 6B555E9F100B37AB00247EA3 + 6B555EA1100B37AB00247EA3 + 6B555EA2100B37AB00247EA3 + 6B555EA3100B37AB00247EA3 + 6B555EA4100B37AB00247EA3 + 6B555EDE100B39A600247EA3 + 6B555EF6100B42E600247EA3 + 6B555EF7100B42E600247EA3 + 6B555EF8100B42E600247EA3 prevStack @@ -395,7 +404,6 @@ 6BB87E0E0F9DE8A300E33F12 6B458EA80FB4540500044EA9 6B7707B90FBD66CF00D21BAE - 6B7707F70FBD90F100D21BAE 6B7707F90FBD90F100D21BAE 6B7708F70FBDA96300D21BAE 6BB787C30FC03EAD003C24DB @@ -414,119 +422,174 @@ 6B25B4080FFA13E9004F1BC4 6B25B56D0FFA5899004F1BC4 6B25B6250FFA63C8004F1BC4 - 6B2AEC730FFB8AB0005BE9CC 6B2AEC740FFB8AB0005BE9CC 6B2AEC750FFB8AB0005BE9CC 6B2AECB50FFB8AB0005BE9CC - 6B2AECE10FFB8AB0005BE9CC 6B2AED930FFBA45B005BE9CC - 6B2AED940FFBA45B005BE9CC 6B092B1A0FFC98FF0088D3A5 6B092B530FFCA0A20088D3A5 6B092BBC0FFCEC1A0088D3A5 - 6B092BEB0FFCEC1A0088D3A5 - 6B092BED0FFCEC1A0088D3A5 6B2AEC970FFB8AB0005BE9CC - 6B0248B81001E4FE00CF7107 - 6B0248D51001E64300CF7107 - 6B0248E21001E7F200CF7107 - 6B0248FE1001EABD00CF7107 6B0249051001EABD00CF7107 - 6B02493E1002118200CF7107 - 6B0249841003751300CF7107 - 6B0249861003751300CF7107 - 6B0249871003751300CF7107 - 6B0249881003751300CF7107 - 6B0249891003751300CF7107 - 6B02498C1003751300CF7107 6B02498D1003751300CF7107 - 6B02498E1003751300CF7107 - 6B0249901003751300CF7107 - 6B024995100375AF00CF7107 - 6B024996100375AF00CF7107 - 6B024997100375AF00CF7107 - 6B02499C1003762100CF7107 - 6B0249A11003766D00CF7107 - 6B0249AA1003774A00CF7107 - 6B0249C11003793900CF7107 - 6B0249F910037CFB00CF7107 - 6B024A0410037DB300CF7107 - 6B024A0510037DB300CF7107 - 6B024A0610037DB300CF7107 - 6B024A0710037DB300CF7107 - 6B024A0810037DB300CF7107 - 6B024A0D10037DB300CF7107 - 6B024A2910037F3100CF7107 - 6B024A4B1004806000CF7107 6B024A721004A2FE00CF7107 - 6B024AAE1004A83400CF7107 - 6B024AAF1004A83400CF7107 - 6B024ABA1004A95900CF7107 - 6B024ABB1004A95900CF7107 - 6B024AD01004AC8D00CF7107 - 6B024AE91004B12B00CF7107 - 6B024AEC1004B12B00CF7107 - 6B024B011004C41E00CF7107 - 6B024B111004C7E200CF7107 - 6B024B151004C7E200CF7107 - 6B024B181004C7E200CF7107 - 6B024B1A1004C7E200CF7107 6B024B1B1004C7E200CF7107 - 6B024B1D1004C7E200CF7107 - 6B024B1F1004C7E200CF7107 - 6B024B281004CC4800CF7107 - 6B024B2A1004CC4800CF7107 - 6B024B2C1004CC4800CF7107 - 6B024B341004CC8700CF7107 - 6B024B3C1004CCCC00CF7107 - 6B024B4C1004D22F00CF7107 - 6B024B4E1004D22F00CF7107 - 6B024B501004D22F00CF7107 - 6B024B521004D22F00CF7107 - 6B024B5B1005D2CB00CF7107 - 6B024B5D1005D2CB00CF7107 - 6B024B5F1005D2CB00CF7107 - 6B024B691005D68E00CF7107 - 6B024B6B1005D68E00CF7107 - 6B024B6D1005D68E00CF7107 - 6B024B6F1005D68E00CF7107 - 6B024B711005D68E00CF7107 - 6B024B731005D68E00CF7107 - 6B024B751005D68E00CF7107 - 6B024B7C1005D6EC00CF7107 - 6B024B831005D76000CF7107 - 6B024B851005D76000CF7107 - 6B024B931005D98C00CF7107 - 6B024B951005D98C00CF7107 - 6B024B971005D98C00CF7107 - 6B024B9A1005D98C00CF7107 - 6B024BAB1005DC3A00CF7107 - 6B024BAC1005DC3A00CF7107 - 6B024BAD1005DC3A00CF7107 - 6B024BAE1005DC3A00CF7107 6B024BBB1005DF5700CF7107 - 6B024BBC1005DF5700CF7107 - 6B024BBD1005DF5700CF7107 - 6B024BBE1005DF5700CF7107 - 6B024BBF1005DF5700CF7107 - 6B024BC01005DF5700CF7107 - 6B024BC11005DF5700CF7107 - 6B024BC21005DF5700CF7107 - 6B024BC31005DF5700CF7107 - 6B024BCD1005DFAB00CF7107 - 6B024BCE1005DFAB00CF7107 6B024BCF1005DFAB00CF7107 - 6B024BDA1006059C00CF7107 - 6B024BDB1006059C00CF7107 - 6B024BDC1006059C00CF7107 - 6B024BDD1006059C00CF7107 - 6B024BDE1006059C00CF7107 - 6B024BDF1006059C00CF7107 - 6B024BE01006059C00CF7107 - 6B024BED1006064C00CF7107 - 6B024BEE1006064C00CF7107 - 6B024C031006098300CF7107 6B024C041006098300CF7107 + 6B024C1310060C7600CF7107 + 6B11862D1006945C0018F96F + 6B1186301006945C0018F96F + 6B1186311006945C0018F96F + 6B1186401006945C0018F96F + 6B1186411006945C0018F96F + 6B1186581006945C0018F96F + 6B1186591006945C0018F96F + 6B118672100694C40018F96F + 6B555D15100B125300247EA3 + 6B555D26100B136A00247EA3 + 6B555D27100B136A00247EA3 + 6B555D28100B136A00247EA3 + 6B555D29100B136A00247EA3 + 6B555D32100B143200247EA3 + 6B555D47100B175F00247EA3 + 6B555D48100B175F00247EA3 + 6B555D49100B175F00247EA3 + 6B555D4A100B175F00247EA3 + 6B555D4B100B175F00247EA3 + 6B555D4C100B175F00247EA3 + 6B555D4D100B175F00247EA3 + 6B555D4E100B175F00247EA3 + 6B555D4F100B175F00247EA3 + 6B555D50100B175F00247EA3 + 6B555D53100B175F00247EA3 + 6B555D54100B175F00247EA3 + 6B555D55100B175F00247EA3 + 6B555D5D100B17DB00247EA3 + 6B555D5E100B17DB00247EA3 + 6B555D5F100B17DB00247EA3 + 6B555D60100B17DB00247EA3 + 6B555D66100B185A00247EA3 + 6B555D71100B18EA00247EA3 + 6B555D73100B18EA00247EA3 + 6B555D74100B18EA00247EA3 + 6B555D83100B1A5200247EA3 + 6B555D85100B1A5200247EA3 + 6B555D86100B1A5200247EA3 + 6B555D94100B1B6900247EA3 + 6B555D96100B1B6900247EA3 + 6B555D97100B1B6900247EA3 + 6B555D9E100B1C2400247EA3 + 6B555DA0100B1C2400247EA3 + 6B555DAB100B1E6500247EA3 + 6B555DC3100B236A00247EA3 + 6B555DC4100B236A00247EA3 + 6B555DC5100B236A00247EA3 + 6B555DC6100B236A00247EA3 + 6B555DC7100B236A00247EA3 + 6B555DC8100B236A00247EA3 + 6B555DC9100B236A00247EA3 + 6B555DCB100B236A00247EA3 + 6B555DCC100B236A00247EA3 + 6B555DCD100B236A00247EA3 + 6B555DCF100B236A00247EA3 + 6B555DD1100B236A00247EA3 + 6B555DD3100B236A00247EA3 + 6B555DD4100B236A00247EA3 + 6B555DD5100B236A00247EA3 + 6B555DD6100B236A00247EA3 + 6B555DD7100B236A00247EA3 + 6B555DD8100B236A00247EA3 + 6B555DD9100B236A00247EA3 + 6B555DDA100B236A00247EA3 + 6B555DDB100B236A00247EA3 + 6B555DDD100B236A00247EA3 + 6B555DDF100B236A00247EA3 + 6B555DE0100B236A00247EA3 + 6B555DE2100B236A00247EA3 + 6B555DE4100B236A00247EA3 + 6B555DE6100B236A00247EA3 + 6B555DE8100B236A00247EA3 + 6B555DEA100B236A00247EA3 + 6B555DEC100B236A00247EA3 + 6B555DED100B236A00247EA3 + 6B555DF2100B25B900247EA3 + 6B555E08100B285300247EA3 + 6B555E09100B285300247EA3 + 6B555E0A100B285300247EA3 + 6B555E0B100B285300247EA3 + 6B555E0C100B285300247EA3 + 6B555E0D100B285300247EA3 + 6B555E0E100B285300247EA3 + 6B555E0F100B285300247EA3 + 6B555E10100B285300247EA3 + 6B555E11100B285300247EA3 + 6B555E12100B285300247EA3 + 6B555E13100B285300247EA3 + 6B555E15100B285300247EA3 + 6B555E18100B285300247EA3 + 6B555E1B100B285300247EA3 + 6B555E20100B2D9800247EA3 + 6B555E22100B2D9800247EA3 + 6B555E45100B311B00247EA3 + 6B555E46100B311B00247EA3 + 6B555E47100B311B00247EA3 + 6B555E48100B311B00247EA3 + 6B555E49100B311B00247EA3 + 6B555E4A100B311B00247EA3 + 6B555E4B100B311B00247EA3 + 6B555E4C100B311B00247EA3 + 6B555E4D100B311B00247EA3 + 6B555E4E100B311B00247EA3 + 6B555E4F100B311B00247EA3 + 6B555E50100B311B00247EA3 + 6B555E51100B311B00247EA3 + 6B555E52100B311B00247EA3 + 6B555E53100B311B00247EA3 + 6B555E54100B311B00247EA3 + 6B555E55100B311B00247EA3 + 6B555E56100B311B00247EA3 + 6B555E57100B311B00247EA3 + 6B555E67100B334900247EA3 + 6B555E68100B334900247EA3 + 6B555E69100B334900247EA3 + 6B555E6A100B334900247EA3 + 6B555E6B100B334900247EA3 + 6B555E6C100B334900247EA3 + 6B555E6D100B334900247EA3 + 6B555E6E100B334900247EA3 + 6B555E6F100B334900247EA3 + 6B555E70100B334900247EA3 + 6B555E71100B334900247EA3 + 6B555E72100B334900247EA3 + 6B555E73100B334900247EA3 + 6B555E74100B334900247EA3 + 6B555E75100B334900247EA3 + 6B555E76100B334900247EA3 + 6B555E7F100B350E00247EA3 + 6B555E80100B350E00247EA3 + 6B555E81100B350E00247EA3 + 6B555E82100B350E00247EA3 + 6B555E83100B350E00247EA3 + 6B555E84100B350E00247EA3 + 6B555E85100B350E00247EA3 + 6B555E8C100B35E000247EA3 + 6B555EA6100B37AB00247EA3 + 6B555EA7100B37AB00247EA3 + 6B555EA8100B37AB00247EA3 + 6B555EA9100B37AB00247EA3 + 6B555EAA100B37AB00247EA3 + 6B555EAB100B37AB00247EA3 + 6B555EAC100B37AB00247EA3 + 6B555EAF100B37AB00247EA3 + 6B555EB1100B37AB00247EA3 + 6B555EB2100B37AB00247EA3 + 6B555EB3100B37AB00247EA3 + 6B555EB4100B37AB00247EA3 + 6B555EE0100B39A600247EA3 + 6B555EF9100B42E600247EA3 + 6B555EFA100B42E600247EA3 + 6B555EFB100B42E600247EA3 SplitCount @@ -540,18 +603,18 @@ GeometryConfiguration Frame - {{0, 0}, {976, 531}} + {{0, 0}, {976, 443}} RubberWindowFrame - 0 59 1280 719 0 0 1280 778 + 0 91 1280 687 0 0 1280 778 Module PBXNavigatorGroup Proportion - 531pt + 443pt Proportion - 142pt + 198pt Tabs @@ -565,7 +628,7 @@ GeometryConfiguration Frame - {{10, 27}, {976, 83}} + {{10, 27}, {976, -27}} Module XCDetailModule @@ -581,7 +644,7 @@ GeometryConfiguration Frame - {{10, 27}, {976, 99}} + {{10, 27}, {976, 244}} Module PBXProjectFindModule @@ -605,8 +668,6 @@ PBXCVSModule - BecomeActive - ContentConfiguration PBXProjectModuleGUID @@ -621,9 +682,9 @@ GeometryConfiguration Frame - {{10, 27}, {976, 115}} + {{10, 27}, {976, 171}} RubberWindowFrame - 0 59 1280 719 0 0 1280 778 + 0 91 1280 687 0 0 1280 778 Module PBXBuildResultsModule @@ -651,11 +712,11 @@ TableOfContents - 6B0248C51001E53600CF7107 + 6B555D17100B125300247EA3 1CA23ED40692098700951B8B - 6B0248C61001E53600CF7107 + 6B555D18100B125300247EA3 6B8632A30F78115100E2684A - 6B0248C71001E53600CF7107 + 6B555D19100B125300247EA3 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -704,12 +765,12 @@ GeometryConfiguration Frame - {{0, 0}, {1280, 254}} + {{0, 0}, {1280, 242}} Module PBXDebugCLIModule Proportion - 254pt + 242pt ContentConfiguration @@ -728,8 +789,8 @@ yes sizes - {{0, 0}, {637, 115}} - {{637, 0}, {643, 115}} + {{0, 0}, {637, 110}} + {{637, 0}, {643, 110}} VerticalSplitView @@ -744,8 +805,8 @@ yes sizes - {{0, 0}, {1280, 115}} - {{0, 115}, {1280, 304}} + {{0, 0}, {1280, 110}} + {{0, 110}, {1280, 289}} @@ -765,7 +826,7 @@ DebugSTDIOWindowFrame {{200, 200}, {500, 300}} Frame - {{0, 259}, {1280, 419}} + {{0, 247}, {1280, 399}} PBXDebugSessionStackFrameViewKey DebugVariablesTableConfiguration @@ -778,13 +839,13 @@ 413 Frame - {{637, 0}, {643, 115}} + {{637, 0}, {643, 110}} Module PBXDebugSessionModule Proportion - 419pt + 399pt Name @@ -802,14 +863,14 @@ TableOfContents - 6B0248C81001E53600CF7107 + 6B555D1A100B125300247EA3 1CCC7628064C1048000F2A68 1CCC7629064C1048000F2A68 - 6B0248C91001E53600CF7107 - 6B0248CA1001E53600CF7107 - 6B0248CB1001E53600CF7107 - 6B0248CC1001E53600CF7107 - 6B8632A30F78115100E2684A + 6B555D1B100B125300247EA3 + 6B555D1C100B125300247EA3 + 6B555D1D100B125300247EA3 + 6B555D1E100B125300247EA3 + 6B555D1F100B125300247EA3 ToolbarConfiguration xcode.toolbar.config.debugV3 @@ -839,13 +900,10 @@ 5 WindowOrderList - 6B024C061006098300CF7107 - 6B0248CD1001E53600CF7107 - 6B0248CE1001E53600CF7107 /Users/memon/Code/recastnavigation/RecastDemo/Build/Xcode/Recast.xcodeproj WindowString - 0 59 1280 719 0 0 1280 778 + 0 91 1280 687 0 0 1280 778 WindowToolsV3 diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj index dc711a2d..317f22df 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj @@ -9,8 +9,9 @@ /* Begin PBXBuildFile section */ 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; 6B024C0D10060AC600CF7107 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 6B024C0C10060AC600CF7107 /* Icon.icns */; }; - 6B092B940FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */; }; - 6B137C700F7FCBBB00459200 /* glfont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B137C6B0F7FCBBB00459200 /* glfont.cpp */; }; + 6B092B940FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */; }; + 6B1185F51006895B0018F96F /* DetourNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B1185F41006895B0018F96F /* DetourNode.cpp */; }; + 6B1185FE10068B150018F96F /* DetourCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; }; 6B137C710F7FCBBB00459200 /* imgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; }; 6B137C720F7FCBBB00459200 /* MeshLoaderObj.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B137C6D0F7FCBBB00459200 /* MeshLoaderObj.cpp */; }; 6B137C730F7FCBBB00459200 /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B137C6E0F7FCBBB00459200 /* SDLMain.m */; }; @@ -23,13 +24,14 @@ 6B137C910F7FCC1100459200 /* RecastRasterization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; }; 6B137C920F7FCC1100459200 /* RecastRegion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; }; 6B137C930F7FCC1100459200 /* RecastTimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B137C8A0F7FCC1100459200 /* RecastTimer.cpp */; }; - 6B25B6190FFA62BE004F1BC4 /* Builder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B25B6140FFA62BE004F1BC4 /* Builder.cpp */; }; - 6B25B61A0FFA62BE004F1BC4 /* BuilderStatMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */; }; - 6B25B61B0FFA62BE004F1BC4 /* BuilderStatMeshSimple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B25B6160FFA62BE004F1BC4 /* BuilderStatMeshSimple.cpp */; }; + 6B25B6190FFA62BE004F1BC4 /* Sample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; }; + 6B25B61A0FFA62BE004F1BC4 /* Sample_StatMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */; }; + 6B25B61B0FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; }; 6B25B61D0FFA62BE004F1BC4 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; }; - 6B2AEC530FFB8958005BE9CC /* BuilderTiledMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */; }; - 6B2AEC560FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */; }; - 6B2AEC5A0FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */; }; + 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 */; }; + 6B555DB1100B212E00247EA3 /* imguiRenderGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; }; 6B8632DA0F78122C00E2684A /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B8632D90F78122C00E2684A /* SDL.framework */; }; 6B8632DC0F78123E00E2684A /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B8632DB0F78123E00E2684A /* OpenGL.framework */; }; 6BB788170FC0472B003C24DB /* ChunkyTriMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; }; @@ -49,13 +51,15 @@ 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* Recast_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Recast_Prefix.pch; sourceTree = ""; }; 6B024C0C10060AC600CF7107 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = ""; }; - 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourTiledNavMeshBuilder.h; path = ../../../Detour/Include/DetourTiledNavMeshBuilder.h; sourceTree = SOURCE_ROOT; }; - 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourTiledNavMeshBuilder.cpp; path = ../../../Detour/Source/DetourTiledNavMeshBuilder.cpp; sourceTree = SOURCE_ROOT; }; - 6B137C6B0F7FCBBB00459200 /* glfont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glfont.cpp; path = ../../Source/glfont.cpp; sourceTree = SOURCE_ROOT; }; + 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourTileNavMeshBuilder.h; path = ../../../Detour/Include/DetourTileNavMeshBuilder.h; sourceTree = SOURCE_ROOT; }; + 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourTileNavMeshBuilder.cpp; path = ../../../Detour/Source/DetourTileNavMeshBuilder.cpp; sourceTree = SOURCE_ROOT; }; + 6B1185F41006895B0018F96F /* DetourNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourNode.cpp; path = ../../../Detour/Source/DetourNode.cpp; sourceTree = SOURCE_ROOT; }; + 6B1185F61006896B0018F96F /* DetourNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourNode.h; path = ../../../Detour/Include/DetourNode.h; sourceTree = SOURCE_ROOT; }; + 6B1185FC10068B040018F96F /* DetourCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourCommon.h; path = ../../../Detour/Include/DetourCommon.h; sourceTree = SOURCE_ROOT; }; + 6B1185FD10068B150018F96F /* DetourCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourCommon.cpp; path = ../../../Detour/Source/DetourCommon.cpp; sourceTree = SOURCE_ROOT; }; 6B137C6C0F7FCBBB00459200 /* imgui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imgui.cpp; path = ../../Source/imgui.cpp; sourceTree = SOURCE_ROOT; }; 6B137C6D0F7FCBBB00459200 /* MeshLoaderObj.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MeshLoaderObj.cpp; path = ../../Source/MeshLoaderObj.cpp; sourceTree = SOURCE_ROOT; }; 6B137C6E0F7FCBBB00459200 /* SDLMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMain.m; path = ../../Source/SDLMain.m; sourceTree = SOURCE_ROOT; }; - 6B137C790F7FCBE400459200 /* glfont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glfont.h; path = ../../Include/glfont.h; sourceTree = SOURCE_ROOT; }; 6B137C7A0F7FCBE400459200 /* imgui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imgui.h; path = ../../Include/imgui.h; sourceTree = SOURCE_ROOT; }; 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MeshLoaderObj.h; path = ../../Include/MeshLoaderObj.h; sourceTree = SOURCE_ROOT; }; 6B137C7C0F7FCBE400459200 /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMain.h; path = ../../Include/SDLMain.h; sourceTree = SOURCE_ROOT; }; @@ -72,19 +76,22 @@ 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RecastRasterization.cpp; path = ../../../Recast/Source/RecastRasterization.cpp; sourceTree = SOURCE_ROOT; }; 6B137C890F7FCC1100459200 /* RecastRegion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RecastRegion.cpp; path = ../../../Recast/Source/RecastRegion.cpp; sourceTree = SOURCE_ROOT; }; 6B137C8A0F7FCC1100459200 /* RecastTimer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RecastTimer.cpp; path = ../../../Recast/Source/RecastTimer.cpp; sourceTree = SOURCE_ROOT; }; - 6B25B6100FFA62AD004F1BC4 /* Builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Builder.h; path = ../../Include/Builder.h; sourceTree = SOURCE_ROOT; }; - 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BuilderStatMesh.h; path = ../../Include/BuilderStatMesh.h; sourceTree = SOURCE_ROOT; }; - 6B25B6120FFA62AD004F1BC4 /* BuilderStatMeshSimple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BuilderStatMeshSimple.h; path = ../../Include/BuilderStatMeshSimple.h; sourceTree = SOURCE_ROOT; }; - 6B25B6140FFA62BE004F1BC4 /* Builder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Builder.cpp; path = ../../Source/Builder.cpp; sourceTree = SOURCE_ROOT; }; - 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BuilderStatMesh.cpp; path = ../../Source/BuilderStatMesh.cpp; sourceTree = SOURCE_ROOT; }; - 6B25B6160FFA62BE004F1BC4 /* BuilderStatMeshSimple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BuilderStatMeshSimple.cpp; path = ../../Source/BuilderStatMeshSimple.cpp; sourceTree = SOURCE_ROOT; }; + 6B25B6100FFA62AD004F1BC4 /* Sample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample.h; path = ../../Include/Sample.h; sourceTree = SOURCE_ROOT; }; + 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_StatMesh.h; path = ../../Include/Sample_StatMesh.h; sourceTree = SOURCE_ROOT; }; + 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_StatMeshSimple.h; path = ../../Include/Sample_StatMeshSimple.h; sourceTree = SOURCE_ROOT; }; + 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample.cpp; path = ../../Source/Sample.cpp; sourceTree = SOURCE_ROOT; }; + 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_StatMesh.cpp; path = ../../Source/Sample_StatMesh.cpp; sourceTree = SOURCE_ROOT; }; + 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_StatMeshSimple.cpp; path = ../../Source/Sample_StatMeshSimple.cpp; sourceTree = SOURCE_ROOT; }; 6B25B6180FFA62BE004F1BC4 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = ../../Source/main.cpp; sourceTree = SOURCE_ROOT; }; - 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BuilderTiledMesh.h; path = ../../Include/BuilderTiledMesh.h; sourceTree = SOURCE_ROOT; }; - 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BuilderTiledMesh.cpp; path = ../../Source/BuilderTiledMesh.cpp; sourceTree = SOURCE_ROOT; }; - 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BuilderStatMeshTiled.cpp; path = ../../Source/BuilderStatMeshTiled.cpp; sourceTree = SOURCE_ROOT; }; - 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BuilderStatMeshTiled.h; path = ../../Include/BuilderStatMeshTiled.h; sourceTree = SOURCE_ROOT; }; - 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourTiledNavMesh.h; path = ../../../Detour/Include/DetourTiledNavMesh.h; sourceTree = SOURCE_ROOT; }; - 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourTiledNavMesh.cpp; path = ../../../Detour/Source/DetourTiledNavMesh.cpp; sourceTree = SOURCE_ROOT; }; + 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_TileMesh.h; path = ../../Include/Sample_TileMesh.h; sourceTree = SOURCE_ROOT; }; + 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_TileMesh.cpp; path = ../../Source/Sample_TileMesh.cpp; sourceTree = SOURCE_ROOT; }; + 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_StatMeshTiled.cpp; path = ../../Source/Sample_StatMeshTiled.cpp; sourceTree = SOURCE_ROOT; }; + 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; }; + 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; }; 6B8632D90F78122C00E2684A /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = Library/Frameworks/SDL.framework; sourceTree = SDKROOT; }; 6B8632DB0F78123E00E2684A /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ChunkyTriMesh.cpp; path = ../../Source/ChunkyTriMesh.cpp; sourceTree = SOURCE_ROOT; }; @@ -116,23 +123,15 @@ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( + 6B555DF6100B273500247EA3 /* stb_truetype.h */, 6BDD9E030F91110C00904EEF /* Detour */, 6B137C7D0F7FCBE800459200 /* Recast */, - 6B25B6100FFA62AD004F1BC4 /* Builder.h */, - 6B25B6140FFA62BE004F1BC4 /* Builder.cpp */, - 6B2AEC510FFB8946005BE9CC /* BuilderTiledMesh.h */, - 6B2AEC520FFB8958005BE9CC /* BuilderTiledMesh.cpp */, - 6B2AEC570FFB89F4005BE9CC /* BuilderStatMeshTiled.h */, - 6B2AEC550FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp */, - 6B25B6110FFA62AD004F1BC4 /* BuilderStatMesh.h */, - 6B25B6150FFA62BE004F1BC4 /* BuilderStatMesh.cpp */, - 6B25B6120FFA62AD004F1BC4 /* BuilderStatMeshSimple.h */, - 6B25B6160FFA62BE004F1BC4 /* BuilderStatMeshSimple.cpp */, + 6B555DF5100B25FC00247EA3 /* Samples */, 6B25B6180FFA62BE004F1BC4 /* main.cpp */, - 6B137C790F7FCBE400459200 /* glfont.h */, - 6B137C6B0F7FCBBB00459200 /* glfont.cpp */, 6B137C7A0F7FCBE400459200 /* imgui.h */, 6B137C6C0F7FCBBB00459200 /* imgui.cpp */, + 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */, + 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */, 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */, 6B137C6D0F7FCBBB00459200 /* MeshLoaderObj.cpp */, 6BB788180FC04753003C24DB /* ChunkyTriMesh.h */, @@ -231,6 +230,23 @@ name = Recast; sourceTree = ""; }; + 6B555DF5100B25FC00247EA3 /* Samples */ = { + isa = PBXGroup; + children = ( + 6B25B6100FFA62AD004F1BC4 /* Sample.h */, + 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */, + 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */, + 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */, + 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */, + 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */, + 6B25B6110FFA62AD004F1BC4 /* Sample_StatMesh.h */, + 6B25B6150FFA62BE004F1BC4 /* Sample_StatMesh.cpp */, + 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */, + 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */, + ); + name = Samples; + sourceTree = ""; + }; 6BDD9E030F91110C00904EEF /* Detour */ = { isa = PBXGroup; children = ( @@ -240,10 +256,14 @@ 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */, 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */, 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */, - 6B2AEC580FFB8A68005BE9CC /* DetourTiledNavMesh.h */, - 6B2AEC590FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp */, - 6B092B920FFCC2AC0088D3A5 /* DetourTiledNavMeshBuilder.h */, - 6B092B930FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp */, + 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */, + 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */, + 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */, + 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */, + 6B1185F61006896B0018F96F /* DetourNode.h */, + 6B1185F41006895B0018F96F /* DetourNode.cpp */, + 6B1185FC10068B040018F96F /* DetourCommon.h */, + 6B1185FD10068B150018F96F /* DetourCommon.cpp */, ); name = Detour; sourceTree = ""; @@ -304,7 +324,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6B137C700F7FCBBB00459200 /* glfont.cpp in Sources */, 6B137C710F7FCBBB00459200 /* imgui.cpp in Sources */, 6B137C720F7FCBBB00459200 /* MeshLoaderObj.cpp in Sources */, 6B137C730F7FCBBB00459200 /* SDLMain.m in Sources */, @@ -321,14 +340,17 @@ 6BDD9E0B0F91113800904EEF /* DetourStatNavMesh.cpp in Sources */, 6BDD9E0C0F91113800904EEF /* DetourStatNavMeshBuilder.cpp in Sources */, 6BB788170FC0472B003C24DB /* ChunkyTriMesh.cpp in Sources */, - 6B25B6190FFA62BE004F1BC4 /* Builder.cpp in Sources */, - 6B25B61A0FFA62BE004F1BC4 /* BuilderStatMesh.cpp in Sources */, - 6B25B61B0FFA62BE004F1BC4 /* BuilderStatMeshSimple.cpp in Sources */, + 6B25B6190FFA62BE004F1BC4 /* Sample.cpp in Sources */, + 6B25B61A0FFA62BE004F1BC4 /* Sample_StatMesh.cpp in Sources */, + 6B25B61B0FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp in Sources */, 6B25B61D0FFA62BE004F1BC4 /* main.cpp in Sources */, - 6B2AEC530FFB8958005BE9CC /* BuilderTiledMesh.cpp in Sources */, - 6B2AEC560FFB89E7005BE9CC /* BuilderStatMeshTiled.cpp in Sources */, - 6B2AEC5A0FFB8A7A005BE9CC /* DetourTiledNavMesh.cpp in Sources */, - 6B092B940FFCC2BD0088D3A5 /* DetourTiledNavMeshBuilder.cpp in Sources */, + 6B2AEC530FFB8958005BE9CC /* Sample_TileMesh.cpp in Sources */, + 6B2AEC560FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp in Sources */, + 6B2AEC5A0FFB8A7A005BE9CC /* DetourTileNavMesh.cpp in Sources */, + 6B092B940FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp in Sources */, + 6B1185F51006895B0018F96F /* DetourNode.cpp in Sources */, + 6B1185FE10068B150018F96F /* DetourCommon.cpp in Sources */, + 6B555DB1100B212E00247EA3 /* imguiRenderGL.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/RecastDemo/Contrib/stb_truetype.h b/RecastDemo/Contrib/stb_truetype.h new file mode 100644 index 00000000..c9bee15c --- /dev/null +++ b/RecastDemo/Contrib/stb_truetype.h @@ -0,0 +1,1689 @@ +// stb_truetype.h - v0.2 - public domain - 2009 Sean Barrett / RAD Game Tools +// +// This library processes TrueType files: +// parse files +// extract glyph metrics +// extract glyph shapes +// render glyphs to one-channel bitmaps with antialiasing (box filter) +// +// Todo: +// crashproof on bad data +// hinting +// subpixel positioning when rendering bitmap +// cleartype-style AA +// +// VERSIONS +// +// 0.2 (2009-03-11) Fix unsigned/signed char warnings +// 0.1 (2009-03-09) First public release +// +// USAGE +// +// Include this file in whatever places neeed to refer to it. In ONE C/C++ +// file, write: +// #define STB_TRUETYPE_IMPLEMENTATION +// before the #include of this file. This expands out the actual +// implementation into that C/C++ file. +// +// Look at the header-file sections below for the API, but here's a quick skim: +// +// Simple 3D API (don't ship this, but it's fine for tools and quick start, +// and you can cut and paste from it to move to more advanced) +// stbtt_BakeFontBitmap() -- bake a font to a bitmap for use as texture +// stbtt_GetBakedQuad() -- compute quad to draw for a given char +// +// "Load" a font file from a memory buffer (you have to keep the buffer loaded) +// stbtt_InitFont() +// stbtt_GetFontOffsetForIndex() -- use for TTC font collections +// +// Render a unicode codepoint to a bitmap +// stbtt_GetCodepointBitmap() -- allocates and returns a bitmap +// stbtt_MakeCodepointBitmap() -- renders into bitmap you provide +// stbtt_GetCodepointBitmapBox() -- how big the bitmap must be +// +// Character advance/positioning +// stbtt_GetCodepointHMetrics() +// stbtt_GetFontVMetrics() +// +// NOTES +// +// The system uses the raw data found in the .ttf file without changing it +// and without building auxiliary data structures. This is a bit inefficient +// on little-endian systems (the data is big-endian), but assuming you're +// caching the bitmaps or glyph shapes this shouldn't be a big deal. +// +// It appears to be very hard to programmatically determine what font a +// given file is in a general way. I provide an API for this, but I don't +// recommend it. +// +// +// SOURCE STATISTICS (based on v.1, 1700 LOC) +// +// Documentation & header file 350 LOC \___ 500 LOC documentation +// Sample code 140 LOC / +// Truetype parsing 480 LOC ---- 500 LOC TrueType +// Software rasterization 240 LOC \ +// Curve tesselation 120 LOC \__ 500 LOC Bitmap creation +// Bitmap management 70 LOC / +// Baked bitmap interface 70 LOC / +// Font name matching & access 150 LOC ---- 150 +// C runtime library abstraction 60 LOC ---- 60 + + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +//// +//// SAMPLE PROGRAMS +//// +// +// Incomplete text-in-3d-api example, which draws quads properly aligned to be lossless +// +#if 0 +#define STB_TRUETYPE_IMPLEMENTATION // force following include to generate implementation +#include "stb_truetype.h" + +char ttf_buffer[1<<20]; +unsigned char temp_bitmap[512*512]; + +stbtt_chardata cdata[96]; // ASCII 32..126 is 95 glyphs +GLstbtt_uint ftex; + +void my_stbtt_initfont(void) +{ + fread(ttf_buffer, 1, 1<<20, fopen("c:/windows/fonts/times.ttf", "rb")); + stbtt_BakeFontBitmap(data,0, 32.0, temp_bitmap,512,512, 32,96, cdata); // no guarantee this fits! + // can free ttf_buffer at this point + glGenTextures(1, &ftex); + glBindTexture(GL_TEXTURE_2D, ftex); + glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 512,512, 0, GL_ALPHA, GL_UNSIGNED_BYTE, temp_bitmap); + // can free temp_bitmap at this point + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); +} + +void my_stbtt_print(float x, float y, char *text) +{ + // assume orthographic projection with units = screen pixels, origin at top left + glBindTexture(GL_TEXTURE_2D, ftex); + glBegin(GL_QUADS); + while (*text) { + if (*text >= 32 && *text < 128) { + stbtt_aligned_quad q; + stbtt_GetBakedQuad(cdata, 512,512, *text-32, &x,&y,&q,1);//1=opengl,0=old d3d + glTexCoord2f(q.s0,q.t1); glVertex2f(q.x0,q.y0); + glTexCoord2f(q.s1,q.t1); glVertex2f(q.x1,q.y0); + glTexCoord2f(q.s1,q.t0); glVertex2f(q.x1,q.y1); + glTexCoord2f(q.s0,q.t0); glVertex2f(q.x0,q.y1); + } + ++text; + } + glEnd(); +} +#endif +// +// +////////////////////////////////////////////////////////////////////////////// +// +// Complete program (this compiles): get a single bitmap, print as ASCII art +// +#if 0 +#include +#define STB_TRUETYPE_IMPLEMENTATION // force following include to generate implementation +#include "stb_truetype.h" + +char ttf_buffer[1<<20]; + +int main(int arg, char **argv) +{ + stbtt_fontinfo font; + unsigned char *bitmap; + int w,h,i,j; + + fread(ttf_buffer, 1, 1000000, fopen("c:/windows/fonts/arialbd.ttf", "rb")); + + stbtt_InitFont(&font, ttf_buffer, 0); + bitmap = stbtt_GetCodepointBitmap(&font, 0,stbtt_ScaleForPixelHeight(&font, 20), 'a', &w, &h, 0,0); + + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) + putchar(" .:ioVM@"[bitmap[j*w+i]>>5]); + putchar('\n'); + } + return 0; +} +#endif +// +// Output: +// +// .ii. +// @@@@@@. +// V@Mio@@o +// :i. V@V +// :oM@@M +// :@@@MM@M +// @@o o@M +// :@@. M@M +// @@@o@@@@ +// :M@@V:@@. +// +////////////////////////////////////////////////////////////////////////////// +// +// Complete program: print "Hello World!" banner, with bugs +// +#if 0 +int main(int arg, char **argv) +{ + unsigned char screen[20][79]; + int i,j, pos=0; + float scale; + char *text = "Heljo World!"; + + fread(buffer, 1, 1000000, fopen("c:/windows/fonts/arialbd.ttf", "rb")); + stbtt_InitFont(&font, buffer, 0); + + scale = stbtt_ScaleForPixelHeight(&font, 16); + memset(screen, 0, sizeof(screen)); + + while (*text) { + int advance,lsb,x0,y0,x1,y1, newpos, baseline=13; + stbtt_GetCodepointHMetrics(&font, *text, &advance, &lsb); + stbtt_GetCodepointBitmapBox(&font, *text, scale,scale, &x0,&y0,&x1,&y1); + newpos = pos + (int) (lsb * scale) + x0; + stbtt_MakeCodepointBitmap(&font, &screen[baseline + y0][newpos], x1-x0,y1-y0, 79, scale,scale, *text); + // note that this stomps the old data, so where character boxes overlap (e.g. 'lj') it's wrong + // because this API is really for baking character bitmaps into textures + pos += (int) (advance * scale); + ++text; + } + + for (j=0; j < 20; ++j) { + for (i=0; i < 79; ++i) + putchar(" .:ioVM@"[screen[j][i]>>5]); + putchar('\n'); + } + + return 0; +} +#endif + + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +//// +//// INTEGRATION WITH RUNTIME LIBRARIES +//// + +#ifdef STB_TRUETYPE_IMPLEMENTATION + // #define your own (u)stbtt_int8/16/32 before including to override this + #ifndef stbtt_uint8 + typedef unsigned char stbtt_uint8; + typedef signed char stbtt_int8; + typedef unsigned short stbtt_uint16; + typedef signed short stbtt_int16; + typedef unsigned int stbtt_uint32; + typedef signed int stbtt_int32; + #endif + + typedef char stbtt__check_size32[sizeof(stbtt_int32)==4 ? 1 : -1]; + typedef char stbtt__check_size16[sizeof(stbtt_int16)==2 ? 1 : -1]; + + // #define your own STBTT_sort() to override this to avoid qsort + #ifndef STBTT_sort + #include + #define STBTT_sort(data,num_items,item_size,compare_func) qsort(data,num_items,item_size,compare_func) + #endif + + // #define your own STBTT_ifloor/STBTT_iceil() to avoid math.h + #ifndef STBTT_ifloor + #include + #define STBTT_ifloor(x) ((int) floor(x)) + #define STBTT_iceil(x) ((int) ceil(x)) + #endif + + // #define your own functions "STBTT_malloc" / "STBTT_free" to avoid malloc.h + #ifndef STBTT_malloc + #include + #define STBTT_malloc(x) malloc(x) + #define STBTT_free(x) free(x) + #endif + + #ifndef STBTT_assert + #include + #define STBTT_assert(x) assert(x) + #endif + + #ifndef STBTT_strlen + #include + #define STBTT_strlen(x) strlen(x) + #endif + + #ifndef STBTT_memcpy + #include + #define STBTT_memcpy memcpy + #define STBTT_memset memset + #endif +#endif + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +//// +//// INTERFACE +//// +//// + +#ifndef __STB_INCLUDE_STB_TRUETYPE_H__ +#define __STB_INCLUDE_STB_TRUETYPE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// TEXTURE BAKING API +// +// If you use this API, you only have to call two functions ever. +// + +typedef struct +{ + unsigned short x0,y0,x1,y1; // coordinates of bbox in bitmap + float xoff,yoff,xadvance; +} stbtt_bakedchar; + +extern int stbtt_BakeFontBitmap(const unsigned char *data, int offset, // font location (use offset=0 for plain .ttf) + float pixel_height, // height of font in pixels + unsigned char *pixels, int pw, int ph, // bitmap to be filled in + int first_char, int num_chars, // characters to bake + stbtt_bakedchar *chardata); // you allocate this, it's num_chars long +// if return is positive, the first unused row of the bitmap +// if return is negative, returns the negative of the number of characters that fit +// if return is 0, no characters fit and no rows were used +// This uses a very crappy packing. + +typedef struct +{ + float x0,y0,s0,t0; // top-left + float x1,y1,s1,t1; // bottom-right +} stbtt_aligned_quad; + +extern void stbtt_GetBakedQuad(stbtt_bakedchar *chardata, int pw, int ph, // same data as above + int char_index, // character to display + float *xpos, float *ypos, // pointers to current position in screen pixel space + stbtt_aligned_quad *q, // output: quad to draw + int opengl_fillrule); // true if opengl fill rule; false if DX9 or earlier +// Call GetBakedQuad with char_index = 'character - first_char', and it +// creates the quad you need to draw and advances the current position. +// It's inefficient; you might want to c&p it and optimize it. + + +////////////////////////////////////////////////////////////////////////////// +// +// FONT LOADING +// +// + +extern int stbtt_GetFontOffsetForIndex(const unsigned char *data, int index); +// Each .ttf file may have more than one font. Each has a sequential index +// number starting from 0. Call this function to get the font offset for a +// given index; it returns -1 if the index is out of range. A regular .ttf +// file will only define one font and it always be at offset 0, so it will +// return '0' for index 0, and -1 for all other indices. You can just skip +// this step if you know it's that kind of font. + + +// The following structure is defined publically so you can declare one on +// the stack or as a global or etc. +typedef struct +{ + unsigned char *data; // pointer to .ttf file + int fontstart; // offset of start of font + + int numGlyphs; // number of glyphs, needed for range checking + + int loca,head,glyf,hhea,hmtx; // table locations as offset from start of .ttf + int index_map; // a cmap mapping for our chosen character encoding + int indexToLocFormat; // format needed to map from glyph index to glyph +} stbtt_fontinfo; + +extern int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data, int offset); +// Given an offset into the file that defines a font, this function builds +// the necessary cached info for the rest of the system. You must allocate +// the stbtt_fontinfo yourself, and stbtt_InitFont will fill it out. You don't +// need to do anything special to free it, because the contents are a pure +// cache with no additional data structures. Returns 0 on failure. + + +////////////////////////////////////////////////////////////////////////////// +// +// CHARACTER TO GLYPH-INDEX CONVERSIOn + +int stbtt_FindGlyphIndex(const stbtt_fontinfo *info, int unicode_codepoint); +// If you're going to perform multiple operations on the same character +// and you want a speed-up, call this function with the character you're +// going to process, then use glyph-based functions instead of the +// codepoint-based functions. + + +////////////////////////////////////////////////////////////////////////////// +// +// CHARACTER PROPERTIES +// + +extern float stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, float pixels); +// computes a scale factor to produce a font whose "height" is 'pixels' tall. +// Height is measured as the distance from the highest ascender to the lowest +// descender; in other words, it's equivalent to calling stbtt_GetFontVMetrics +// and computing: +// scale = pixels / (ascent - descent) +// so if you prefer to measure height by the ascent only, use a similar calculation. + +extern void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, int *descent, int *lineGap); +// ascent is the coordinate above the baseline the font extends; descent +// is the coordinate below the baseline the font extends (i.e. it is typically negative) +// lineGap is the spacing between one row's descent and the next row's ascent... +// so you should advance the vertical position by "*ascent - *descent + *lineGap" +// these are expressed in unscaled coordinates + +extern void stbtt_GetCodepointHMetrics(const stbtt_fontinfo *info, int codepoint, int *advanceWidth, int *leftSideBearing); +// leftSideBearing is the offset from the current horizontal position to the left edge of the character +// advanceWidth is the offset from the current horizontal position to the next horizontal position +// these are expressed in unscaled coordinates + +extern int stbtt_GetCodepointKernAdvance(const stbtt_fontinfo *info, int ch1, int ch2); +// an additional amount to add to the 'advance' value between ch1 and ch2 +// @TODO; for now always returns 0! + +extern int stbtt_GetCodepointBox(const stbtt_fontinfo *info, int codepoint, int *x0, int *y0, int *x1, int *y1); +// Gets the bounding box of the visible part of the glyph, in unscaled coordinates + +extern void stbtt_GetGlyphHMetrics(const stbtt_fontinfo *info, int glyph_index, int *advanceWidth, int *leftSideBearing); +extern int stbtt_GetGlyphKernAdvance(const stbtt_fontinfo *info, int glyph1, int glyph2); +extern int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1); +// as above, but takes one or more glyph indices for greater efficiency + + +////////////////////////////////////////////////////////////////////////////// +// +// GLYPH SHAPES (you probably don't need these, but they have to go before +// the bitmaps for C declaration-order reasons) +// + +#ifndef STBTT_vmove // you can predefine these to use different values (but why?) + enum { + STBTT_vmove=1, + STBTT_vline, + STBTT_vcurve + }; +#endif + +#ifndef stbtt_vertex // you can predefine this to use different values + // (we share this with other code at RAD) + #define stbtt_vertex_type short // can't use stbtt_int16 because that's not visible in the header file + typedef struct + { + stbtt_vertex_type x,y,cx,cy; + unsigned char type,padding; + } stbtt_vertex; +#endif + +extern int stbtt_GetCodepointShape(const stbtt_fontinfo *info, int unicode_codepoint, stbtt_vertex **vertices); +extern int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **vertices); +// returns # of vertices and fills *vertices with the pointer to them +// these are expressed in "unscaled" coordinates + +extern void stbtt_FreeShape(stbtt_vertex *vertices); +// frees the data allocated above + +////////////////////////////////////////////////////////////////////////////// +// +// BITMAP RENDERING +// + +extern void stbtt_FreeBitmap(unsigned char *bitmap); +// frees the bitmap allocated below + +extern unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int codepoint, int *width, int *height, int *xoff, int *yoff); +// allocates a large-enough single-channel 8bpp bitmap and renders the +// specified character/glyph at the specified scale into it, with +// antialiasing. 0 is no coverage (transparent), 255 is fully covered (opaque). +// *width & *height are filled out with the width & height of the bitmap, +// which is stored left-to-right, top-to-bottom. +// +// xoff/yoff are the offset it pixel space from the glyph origin to the top-left of the bitmap + +extern void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int codepoint); +// the same as above, but you pass in storage for the bitmap in the form +// of 'output', with row spacing of 'out_stride' bytes. the bitmap is +// clipped to out_w/out_h bytes. call the next function to get the +// height and width and positioning info + +extern void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1); +// get the bbox of the bitmap centered around the glyph origin; so the +// bitmap width is ix1-ix0, height is iy1-iy0, and location to place +// the bitmap top left is (leftSideBearing*scale,iy0). +// (Note that the bitmap uses y-increases-down, but the shape uses +// y-increases-up, so CodepointBitmapBox and CodepointBox are inverted.) + +extern unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int glyph, int *width, int *height, int *xoff, int *yoff); +extern void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1); +extern void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int glyph); + +//extern void stbtt_get_true_bbox(stbtt_vertex *vertices, int num_verts, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1); + +// @TODO: don't expose this structure +typedef struct +{ + int w,h,stride; + unsigned char *pixels; +} stbtt__bitmap; + +extern void stbtt_Rasterize(stbtt__bitmap *result, float flatness_in_pixels, stbtt_vertex *vertices, int num_verts, float scale_x, float scale_y, int x_off, int y_off, int invert); + +////////////////////////////////////////////////////////////////////////////// +// +// Finding the right font... +// +// You should really just solve this offline, keep your own tables +// of what font is what, and don't try to get it out of the .ttf file. +// That's because getting it out of the .ttf file is really hard, because +// the names in the file can appear in many possible encodings, in many +// possible languages, and e.g. if you need a case-insensitive comparison, +// the details of that depend on the encoding & language in a complex way +// (actually underspecified in truetype, but also gigantic). +// +// But you can use the provided functions in two possible ways: +// stbtt_FindMatchingFont() will use *case-sensitive* comparisons on +// unicode-encoded names to try to find the font you want; +// you can run this before calling stbtt_InitFont() +// +// stbtt_GetFontNameString() lets you get any of the various strings +// from the file yourself and do your own comparisons on them. +// You have to have called stbtt_InitFont() first. + + +extern int stbtt_FindMatchingFont(const unsigned char *fontdata, const char *name, int flags); +// returns the offset (not index) of the font that matches, or -1 if none +// if you use STBTT_MACSTYLE_DONTCARE, use a font name like "Arial Bold". +// if you use any other flag, use a font name like "Arial"; this checks +// the 'macStyle' header field; i don't know if fonts set this consistently +#define STBTT_MACSTYLE_DONTCARE 0 +#define STBTT_MACSTYLE_BOLD 1 +#define STBTT_MACSTYLE_ITALIC 2 +#define STBTT_MACSTYLE_UNDERSCORE 4 +#define STBTT_MACSTYLE_NONE 8 // <= not same as 0, this makes us check the bitfield is 0 + +extern int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len1, const char *s2, int len2); +// returns 1/0 whether the first string interpreted as utf8 is identical to +// the second string interpreted as big-endian utf16... useful for strings from next func + +extern char *stbtt_GetFontNameString(const stbtt_fontinfo *font, int *length, int platformID, int encodingID, int languageID, int nameID); +// returns the string (which may be big-endian double byte, e.g. for unicode) +// and puts the length in bytes in *length. +// +// some of the values for the IDs are below; for more see the truetype spec: +// http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6name.html +// http://www.microsoft.com/typography/otspec/name.htm + +enum { // platformID + STBTT_PLATFORM_ID_UNICODE =0, + STBTT_PLATFORM_ID_MAC =1, + STBTT_PLATFORM_ID_ISO =2, + STBTT_PLATFORM_ID_MICROSOFT =3 +}; + +enum { // encodingID for STBTT_PLATFORM_ID_UNICODE + STBTT_UNICODE_EID_UNICODE_1_0 =0, + STBTT_UNICODE_EID_UNICODE_1_1 =1, + STBTT_UNICODE_EID_ISO_10646 =2, + STBTT_UNICODE_EID_UNICODE_2_0_BMP=3, + STBTT_UNICODE_EID_UNICODE_2_0_FULL=4, +}; + +enum { // encodingID for STBTT_PLATFORM_ID_MICROSOFT + STBTT_MS_EID_SYMBOL =0, + STBTT_MS_EID_UNICODE_BMP =1, + STBTT_MS_EID_SHIFTJIS =2, + STBTT_MS_EID_UNICODE_FULL =10, +}; + +enum { // encodingID for STBTT_PLATFORM_ID_MAC; same as Script Manager codes + STBTT_MAC_EID_ROMAN =0, STBTT_MAC_EID_ARABIC =4, + STBTT_MAC_EID_JAPANESE =1, STBTT_MAC_EID_HEBREW =5, + STBTT_MAC_EID_CHINESE_TRAD =2, STBTT_MAC_EID_GREEK =6, + STBTT_MAC_EID_KOREAN =3, STBTT_MAC_EID_RUSSIAN =7, +}; + +enum { // languageID for STBTT_PLATFORM_ID_MICROSOFT; same as LCID... + // problematic because there are e.g. 16 english LCIDs and 16 arabic LCIDs + STBTT_MS_LANG_ENGLISH =0x0409, STBTT_MS_LANG_ITALIAN =0x0410, + STBTT_MS_LANG_CHINESE =0x0804, STBTT_MS_LANG_JAPANESE =0x0411, + STBTT_MS_LANG_DUTCH =0x0413, STBTT_MS_LANG_KOREAN =0x0412, + STBTT_MS_LANG_FRENCH =0x040c, STBTT_MS_LANG_RUSSIAN =0x0419, + STBTT_MS_LANG_GERMAN =0x0407, STBTT_MS_LANG_SPANISH =0x0409, + STBTT_MS_LANG_HEBREW =0x040d, STBTT_MS_LANG_SWEDISH =0x041D, +}; + +enum { // languageID for STBTT_PLATFORM_ID_MAC + STBTT_MAC_LANG_ENGLISH =0 , STBTT_MAC_LANG_JAPANESE =11, + STBTT_MAC_LANG_ARABIC =12, STBTT_MAC_LANG_KOREAN =23, + STBTT_MAC_LANG_DUTCH =4 , STBTT_MAC_LANG_RUSSIAN =32, + STBTT_MAC_LANG_FRENCH =1 , STBTT_MAC_LANG_SPANISH =6 , + STBTT_MAC_LANG_GERMAN =2 , STBTT_MAC_LANG_SWEDISH =5 , + STBTT_MAC_LANG_HEBREW =10, STBTT_MAC_LANG_CHINESE_SIMPLIFIED =33, + STBTT_MAC_LANG_ITALIAN =3 , STBTT_MAC_LANG_CHINESE_TRAD =19, +}; + +#ifdef __cplusplus +} +#endif + + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +//// +//// IMPLEMENTATION +//// +//// + +#ifdef STB_TRUETYPE_IMPLEMENTATION + +////////////////////////////////////////////////////////////////////////// +// +// accessors to parse data from file +// + +// on platforms that don't allow misaligned reads, if we want to allow +// truetype fonts that aren't padded to alignment, define ALLOW_UNALIGNED_TRUETYPE + +#define ttBYTE(p) (* (stbtt_uint8 *) (p)) +#define ttCHAR(p) (* (stbtt_int8 *) (p)) +#define ttFixed(p) ttLONG(p) + +#if defined(STB_TRUETYPE_BIGENDIAN) && !defined(ALLOW_UNALIGNED_TRUETYPE) + + #define ttUSHORT(p) (* (stbtt_uint16 *) (p)) + #define ttSHORT(p) (* (stbtt_int16 *) (p)) + #define ttULONG(p) (* (stbtt_uint32 *) (p)) + #define ttLONG(p) (* (stbtt_int32 *) (p)) + +#else + + stbtt_uint16 ttUSHORT(const stbtt_uint8 *p) { return p[0]*256 + p[1]; } + stbtt_int16 ttSHORT(const stbtt_uint8 *p) { return p[0]*256 + p[1]; } + stbtt_uint32 ttULONG(const stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; } + stbtt_int32 ttLONG(const stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; } + +#endif + +#define stbtt_tag4(p,c0,c1,c2,c3) ((p)[0] == (c0) && (p)[1] == (c1) && (p)[2] == (c2) && (p)[3] == (c3)) +#define stbtt_tag(p,str) stbtt_tag4(p,str[0],str[1],str[2],str[3]) + +static int stbtt__isfont(const stbtt_uint8 *font) +{ + // check the version number + if (stbtt_tag(font, "1")) return 1; // TrueType 1 + if (stbtt_tag(font, "typ1")) return 1; // TrueType with type 1 font -- we don't support this! + if (stbtt_tag(font, "OTTO")) return 1; // OpenType with CFF + if (stbtt_tag4(font, 0,1,0,0)) return 1; // OpenType 1.0 + return 0; +} + +// @OPTIMIZE: binary search +static stbtt_uint32 stbtt__find_table(stbtt_uint8 *data, stbtt_uint32 fontstart, char *tag) +{ + stbtt_int32 num_tables = ttUSHORT(data+fontstart+4); + stbtt_uint32 tabledir = fontstart + 12; + stbtt_int32 i; + for (i=0; i < num_tables; ++i) { + stbtt_uint32 loc = tabledir + 16*i; + if (stbtt_tag(data+loc+0, tag)) + return ttULONG(data+loc+8); + } + return 0; +} + +int stbtt_GetFontOffsetForIndex(const unsigned char *font_collection, int index) +{ + // if it's just a font, there's only one valid index + if (stbtt__isfont(font_collection)) + return index == 0 ? 0 : -1; + + // check if it's a TTC + if (stbtt_tag(font_collection, "ttcf")) { + // version 1? + if (ttULONG(font_collection+4) == 0x00010000 || ttULONG(font_collection+4) == 0x00020000) { + stbtt_int32 n = ttLONG(font_collection+8); + if (index >= n) + return -1; + return ttULONG(font_collection+12+index*14); + } + } + return -1; +} + +int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data2, int fontstart) +{ + stbtt_uint8 *data = (stbtt_uint8 *) data2; + stbtt_uint32 cmap, t; + stbtt_int32 i,numTables; + + info->data = data; + info->fontstart = fontstart; + + cmap = stbtt__find_table(data, fontstart, "cmap"); + info->loca = stbtt__find_table(data, fontstart, "loca"); + info->head = stbtt__find_table(data, fontstart, "head"); + info->glyf = stbtt__find_table(data, fontstart, "glyf"); + info->hhea = stbtt__find_table(data, fontstart, "hhea"); + info->hmtx = stbtt__find_table(data, fontstart, "hmtx"); + if (!cmap || !info->loca || !info->head || !info->glyf || !info->hhea || !info->hmtx) + return 0; + + t = stbtt__find_table(data, fontstart, "maxp"); + if (t) + info->numGlyphs = ttUSHORT(data+t+4); + else + info->numGlyphs = 0xffff; + + // find a cmap encoding table we understand *now* to avoid searching + // later. (todo: could make this installable) + // the same regardless of glyph. + numTables = ttUSHORT(data + cmap + 2); + info->index_map = 0; + for (i=0; i < numTables; ++i) { + stbtt_uint32 encoding_record = cmap + 4 + 8 * i; + // find an encoding we understand: + if (ttUSHORT(data+encoding_record) == 3 && ttUSHORT(data+encoding_record+2) == 1) { + // MS/Unicode + info->index_map = cmap + ttULONG(data+encoding_record+4); + break; + } + } + if (info->index_map == 0) + return 0; + + info->indexToLocFormat = ttUSHORT(data+info->head + 50); + return 1; +} + +int stbtt_FindGlyphIndex(const stbtt_fontinfo *info, int unicode_codepoint) +{ + stbtt_uint8 *data = info->data; + stbtt_uint32 index_map = info->index_map; + + stbtt_uint16 format = ttUSHORT(data + index_map + 0); + if (format == 0) { // apple byte encoding + stbtt_int32 bytes = ttUSHORT(data + index_map + 2); + if (unicode_codepoint < bytes-6) + return ttBYTE(data + index_map + 6 + unicode_codepoint); + return 0; + } else if (format == 6) { + stbtt_uint32 first = ttUSHORT(data + index_map + 6); + stbtt_uint32 count = ttUSHORT(data + index_map + 8); + if ((stbtt_uint32) unicode_codepoint >= first && (stbtt_uint32) unicode_codepoint < first+count) + return ttUSHORT(data + index_map + 10 + (unicode_codepoint - first)*2); + return 0; + } else if (format == 2) { + STBTT_assert(0); // @TODO: high-byte mapping for japanese/chinese/korean + return 0; + } else if (format == 4) { // standard mapping for windows fonts: binary search collection of ranges + stbtt_uint16 segcount = ttUSHORT(data+index_map+6) >> 1; + stbtt_uint16 searchRange = ttUSHORT(data+index_map+8) >> 1; + stbtt_uint16 entrySelector = ttUSHORT(data+index_map+10); + stbtt_uint16 rangeShift = ttUSHORT(data+index_map+12) >> 1; + stbtt_uint16 item, offset, start, end; + + // do a binary search of the segments + stbtt_uint32 endCount = index_map + 14; + stbtt_uint32 search = endCount; + + if (unicode_codepoint > 0xffff) + return 0; + + // they lie from endCount .. endCount + segCount + // but searchRange is the nearest power of two, so... + if (unicode_codepoint >= ttUSHORT(data + search + rangeShift*2)) + search += rangeShift*2; + + // now decrement to bias correctly to find smallest + search -= 2; + while (entrySelector) { + stbtt_uint16 start, end; + searchRange >>= 1; + start = ttUSHORT(data + search + 2 + segcount*2 + 2); + end = ttUSHORT(data + search + 2); + start = ttUSHORT(data + search + searchRange*2 + segcount*2 + 2); + end = ttUSHORT(data + search + searchRange*2); + if (unicode_codepoint > end) + search += searchRange*2; + --entrySelector; + } + search += 2; + + item = (search - endCount) >> 1; + + STBTT_assert(unicode_codepoint <= ttUSHORT(data + endCount + 2*item)); + start = ttUSHORT(data + index_map + 14 + segcount*2 + 2 + 2*item); + end = ttUSHORT(data + index_map + 14 + 2 + 2*item); + if (unicode_codepoint < start) + return 0; + + offset = ttUSHORT(data + index_map + 14 + segcount*6 + 2 + 2*item); + if (offset == 0) + return unicode_codepoint + ttSHORT(data + index_map + 14 + segcount*4 + 2 + 2*item); + + return ttUSHORT(data + offset + (unicode_codepoint-start)*2 + index_map + 14 + segcount*6 + 2 + 2*item); + } + // @TODO + STBTT_assert(0); + return 0; +} + +int stbtt_GetCodepointShape(const stbtt_fontinfo *info, int unicode_codepoint, stbtt_vertex **vertices) +{ + return stbtt_GetGlyphShape(info, stbtt_FindGlyphIndex(info, unicode_codepoint), vertices); +} + +static void stbtt_setvertex(stbtt_vertex *v, stbtt_uint8 type, stbtt_int16 x, stbtt_int16 y, stbtt_int16 cx, stbtt_int16 cy) +{ + v->type = type; + v->x = x; + v->y = y; + v->cx = cx; + v->cy = cy; +} + +static int stbtt__GetGlyfOffset(const stbtt_fontinfo *info, int glyph_index) +{ + int g1,g2; + + if (glyph_index >= info->numGlyphs) return -1; // glyph index out of range + if (info->indexToLocFormat >= 2) return -1; // unknown index->glyph map format + + if (info->indexToLocFormat == 0) { + g1 = info->glyf + ttUSHORT(info->data + info->loca + glyph_index * 2) * 2; + g2 = info->glyf + ttUSHORT(info->data + info->loca + glyph_index * 2 + 2) * 2; + } else { + g1 = info->glyf + ttULONG (info->data + info->loca + glyph_index * 4); + g2 = info->glyf + ttULONG (info->data + info->loca + glyph_index * 4 + 4); + } + + return g1==g2 ? -1 : g1; // if length is 0, return -1 +} + +int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1) +{ + int g = stbtt__GetGlyfOffset(info, glyph_index); + if (g < 0) return 0; + + if (x0) *x0 = ttSHORT(info->data + g + 2); + if (y0) *y0 = ttSHORT(info->data + g + 4); + if (x1) *x1 = ttSHORT(info->data + g + 6); + if (y1) *y1 = ttSHORT(info->data + g + 8); + return 1; +} + +int stbtt_GetCodepointBox(const stbtt_fontinfo *info, int codepoint, int *x0, int *y0, int *x1, int *y1) +{ + return stbtt_GetGlyphBox(info, stbtt_FindGlyphIndex(info,codepoint), x0,y0,x1,y1); +} + +int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices) +{ + stbtt_int16 numberOfContours; + stbtt_uint8 *endPtsOfContours; + stbtt_uint8 *data = info->data; + stbtt_vertex *vertices; + int num_vertices; + int g = stbtt__GetGlyfOffset(info, glyph_index); + + *pvertices = NULL; + + if (g < 0) return 0; + + numberOfContours = ttSHORT(data + g); + + if (numberOfContours > 0) { + stbtt_uint8 flags,flagcount; + stbtt_int32 ins, i,j=0,m,n, next_move, was_off=0, off; + stbtt_int16 x,y,cx,cy,sx,sy; + stbtt_uint8 *points; + endPtsOfContours = (data + g + 10); + ins = ttUSHORT(data + g + 10 + numberOfContours * 2); + points = data + g + 10 + numberOfContours * 2 + 2 + ins; + + n = 1+ttUSHORT(endPtsOfContours + numberOfContours*2-2); + + m = n + numberOfContours; // a loose bound on how many vertices we might need + vertices = (stbtt_vertex *) STBTT_malloc(m * sizeof(vertices[0])); + if (vertices == 0) + return 0; + + next_move = 0; + flagcount=0; + + // in first pass, we load uninterpreted data into the allocated array + // above, shifted to the end of the array so we won't overwrite it when + // we create our final data starting from the front + + off = m - n; // starting offset for uninterpreted data, regardless of how m ends up being calculated + + // first load flags + + for (i=0; i < n; ++i) { + if (flagcount == 0) { + flags = *points++; + if (flags & 8) + flagcount = *points++; + } else + --flagcount; + vertices[off+i].type = flags; + } + + // now load x coordinates + x=0; + for (i=0; i < n; ++i) { + flags = vertices[off+i].type; + if (flags & 2) { + stbtt_int16 dx = *points++; + x += (flags & 16) ? dx : -dx; // ??? + } else { + if (!(flags & 16)) { + x += (stbtt_int16) (points[0]*256 + points[1]); + points += 2; + } + } + vertices[off+i].x = x; + } + + // now load y coordinates + y=0; + for (i=0; i < n; ++i) { + flags = vertices[off+i].type; + if (flags & 4) { + stbtt_int16 dy = *points++; + y += (flags & 32) ? dy : -dy; // ??? + } else { + if (!(flags & 32)) { + y += (stbtt_int16) (points[0]*256 + points[1]); + points += 2; + } + } + vertices[off+i].y = y; + } + + // now convert them to our format + num_vertices=0; + sx = sy = cx = cy = 0; + for (i=0; i < n; ++i) { + flags = vertices[off+i].type; + x = (stbtt_int16) vertices[off+i].x; + y = (stbtt_int16) vertices[off+i].y; + if (next_move == i) { + // when we get to the end, we have to close the shape explicitly + if (i != 0) { + if (was_off) + stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve,sx,sy,cx,cy); + else + stbtt_setvertex(&vertices[num_vertices++], STBTT_vline,sx,sy,0,0); + } + + // now start the new one + stbtt_setvertex(&vertices[num_vertices++], STBTT_vmove,x,y,0,0); + next_move = 1 + ttUSHORT(endPtsOfContours+j*2); + ++j; + was_off = 0; + sx = x; + sy = y; + } else { + if (!(flags & 1)) { // if it's a curve + if (was_off) // two off-curve control points in a row means interpolate an on-curve midpoint + stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve, (cx+x)>>1, (cy+y)>>1, cx, cy); + cx = x; + cy = y; + was_off = 1; + } else { + if (was_off) + stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve, x,y, cx, cy); + else + stbtt_setvertex(&vertices[num_vertices++], STBTT_vline, x,y,0,0); + was_off = 0; + } + } + } + if (i != 0) { + if (was_off) + stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve,sx,sy,cx,cy); + else + stbtt_setvertex(&vertices[num_vertices++], STBTT_vline,sx,sy,0,0); + } + } else if (numberOfContours < 0) { + // @TODO handle compound contours + STBTT_assert(0); + } + + *pvertices = vertices; + return num_vertices; +} + +void stbtt_GetGlyphHMetrics(const stbtt_fontinfo *info, int glyph_index, int *advanceWidth, int *leftSideBearing) +{ + stbtt_uint16 numOfLongHorMetrics = ttUSHORT(info->data+info->hhea + 34); + if (glyph_index < numOfLongHorMetrics) { + if (advanceWidth) *advanceWidth = ttSHORT(info->data + info->hmtx + 4*glyph_index); + if (leftSideBearing) *leftSideBearing = ttSHORT(info->data + info->hmtx + 4*glyph_index + 2); + } else { + if (advanceWidth) *advanceWidth = ttSHORT(info->data + info->hmtx + 4*(numOfLongHorMetrics-1)); + if (leftSideBearing) *leftSideBearing = ttSHORT(info->data + info->hmtx + 4*numOfLongHorMetrics + 2*(glyph_index - numOfLongHorMetrics)); + } +} + +int stbtt_GetGlyphKernAdvance(const stbtt_fontinfo *info, int glyph1, int glyph2) +{ + return 0; +} + +int stbtt_GetCodepointKernAdvance(const stbtt_fontinfo *info, int ch1, int ch2) +{ + return 0; +} + +void stbtt_GetCodepointHMetrics(const stbtt_fontinfo *info, int codepoint, int *advanceWidth, int *leftSideBearing) +{ + stbtt_GetGlyphHMetrics(info, stbtt_FindGlyphIndex(info,codepoint), advanceWidth, leftSideBearing); +} + +void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, int *descent, int *lineGap) +{ + if (ascent ) *ascent = ttSHORT(info->data+info->hhea + 4); + if (descent) *descent = ttSHORT(info->data+info->hhea + 6); + if (lineGap) *lineGap = ttSHORT(info->data+info->hhea + 8); +} + +float stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, float height) +{ + int fheight = ttSHORT(info->data + info->hhea + 4) - ttSHORT(info->data + info->hhea + 6); + return (float) height / fheight; +} + +void stbtt_FreeShape(stbtt_vertex *v) +{ + STBTT_free(v); +} + +////////////////////////////////////////////////////////////////////////////// +// +// antialiasing software rasterizer +// + +void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1) +{ + int x0,y0,x1,y1; + if (!stbtt_GetGlyphBox(font, glyph, &x0,&y0,&x1,&y1)) + x0=y0=x1=y1=0; // e.g. space character + // now move to integral bboxes (treating pixels as little squares, what pixels get touched)? + if (ix0) *ix0 = STBTT_ifloor(x0 * scale_x); + if (iy0) *iy0 = -STBTT_iceil (y1 * scale_y); + if (ix1) *ix1 = STBTT_iceil (x1 * scale_x); + if (iy1) *iy1 = -STBTT_ifloor(y0 * scale_y); +} + +void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1) +{ + stbtt_GetGlyphBitmapBox(font, stbtt_FindGlyphIndex(font,codepoint), scale_x, scale_y, ix0,iy0,ix1,iy1); +} + +typedef struct stbtt__edge { + float x0,y0, x1,y1; +} stbtt__edge; + +typedef struct stbtt__active_edge +{ + int x,dx; + float ey; + struct stbtt__active_edge *next; + int valid; +} stbtt__active_edge; + +#define FIXSHIFT 10 +#define FIX (1 << FIXSHIFT) +#define FIXMASK (FIX-1) + +static stbtt__active_edge *new_active(stbtt__edge *e, int off_x, float start_point) +{ + stbtt__active_edge *z = (stbtt__active_edge *) STBTT_malloc(sizeof(*z)); // @TODO: make a pool of these!!! + float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); + STBTT_assert(e->y0 <= start_point); + if (!z) return z; + // round dx down to avoid going too far + if (dxdy < 0) + z->dx = -STBTT_ifloor(FIX * -dxdy); + else + z->dx = STBTT_ifloor(FIX * dxdy); + z->x = STBTT_ifloor(FIX * (e->x0 + dxdy * (start_point - e->y0))); + z->x -= off_x * FIX; + z->ey = e->y1; + z->next = 0; + z->valid = 1; + return z; +} + +// note: this routine clips fills that extend off the edges... ideally this +// wouldn't happen, but it could happen if the truetype glyph bounding boxes +// are wrong, or if the user supplies a too-small bitmap +static void stbtt__fill_active_edges(unsigned char *scanline, int len, stbtt__active_edge *e, int max_weight) +{ + // @TODO: convert this from xor fill to non-zero winding + while (e) { + int x0,x1,i,j; + + x0 = e->x; e = e->next; + if (!e) + return; // unbalanced number of edges + + x1 = e->x; e = e->next; + STBTT_assert(x1 >= x0); + + i = x0 >> FIXSHIFT; + j = x1 >> FIXSHIFT; + + if (i < len && j >= 0) { + if (i == j) { + // x0,x1 are the same pixel, so compute combined coverage + scanline[i] += (x1 - x0) * max_weight >> FIXSHIFT; + } else { + if (i >= 0) // add antialiasing for x0 + scanline[i] += ((FIX - (x0 & FIXMASK)) * max_weight) >> FIXSHIFT; + else + i = -1; // clip + + if (j < len) // add antialiasing for x1 + scanline[j] += ((x1 & FIXMASK) * max_weight) >> FIXSHIFT; + else + j = len; // clip + + for (++i; i < j; ++i) // fill pixels between x0 and x1 + scanline[i] += max_weight; + } + } + + if (!e) + return; + } +} + +static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, int n, int vsubsample, int off_x, int off_y) +{ + stbtt__active_edge *active = NULL; + int y,j=0; + int max_weight = (255 / vsubsample); // weight per vertical scanline + int s; // vertical subsample index + unsigned char scanline_data[512], *scanline; + + if (result->w > 512) + scanline = (unsigned char *) STBTT_malloc(result->w); + else + scanline = scanline_data; + + y = off_y * vsubsample; + e[n].y0 = (off_y + result->h) * (float) vsubsample + 1; + + while (j < result->h) { + STBTT_memset(scanline, 0, result->w); + for (s=0; s < vsubsample; ++s) { + // find center of pixel for this scanline + float scan_y = y + 0.5f; + stbtt__active_edge **step = &active; + + // update all active edges; + // remove all active edges that terminate before the center of this scanline + while (*step) { + stbtt__active_edge * z = *step; + if (z->ey <= scan_y) { + *step = z->next; // delete from list + STBTT_assert(z->valid); + z->valid = 0; + STBTT_free(z); + } else { + z->x += z->dx; // advance to position for current scanline + step = &((*step)->next); // advance through list + } + } + + // resort the list if needed + for(;;) { + int changed=0; + step = &active; + while (*step && (*step)->next) { + if ((*step)->x > (*step)->next->x) { + stbtt__active_edge *t = *step; + stbtt__active_edge *q = t->next; + + t->next = q->next; + q->next = t; + *step = q; + changed = 1; + } + step = &(*step)->next; + } + if (!changed) break; + } + + // insert all edges that start before the center of this scanline -- omit ones that also end on this scanline + while (e->y0 <= scan_y) { + if (e->y1 > scan_y) { + stbtt__active_edge *z = new_active(e, off_x, scan_y); + // find insertion point + if (active == NULL) + active = z; + else if (z->x < active->x) { + // insert at front + z->next = active; + active = z; + } else { + // find thing to insert AFTER + stbtt__active_edge *p = active; + while (p->next && p->next->x < z->x) + p = p->next; + // at this point, p->next->x is NOT < z->x + z->next = p->next; + p->next = z; + } + } + ++e; + } + + // now process all active edges in XOR fashion + if (active) + stbtt__fill_active_edges(scanline, result->w, active, max_weight); + + ++y; + } + STBTT_memcpy(result->pixels + j * result->stride, scanline, result->w); + ++j; + } + + while (active) { + stbtt__active_edge *z = active; + active = active->next; + STBTT_free(z); + } + + if (scanline != scanline_data) + STBTT_free(scanline); +} + +static int stbtt__edge_compare(const void *p, const void *q) +{ + stbtt__edge *a = (stbtt__edge *) p; + stbtt__edge *b = (stbtt__edge *) q; + + if (a->y0 < b->y0) return -1; + if (a->y0 > b->y0) return 1; + return 0; +} + +typedef struct +{ + float x,y; +} stbtt__point; + +static void stbtt__rasterize(stbtt__bitmap *result, stbtt__point *pts, int *wcount, int windings, float scale_x, float scale_y, int off_x, int off_y, int invert) +{ + float y_scale_inv = invert ? -scale_y : scale_y; + stbtt__edge *e; + int n,i,j,k,m; + int vsubsample = result->h < 8 ? 15 : 5; + // vsubsample should divide 255 evenly; otherwise we won't reach full opacity + + // now we have to blow out the windings into explicit edge lists + n = 0; + for (i=0; i < windings; ++i) + n += wcount[i]; + + e = (stbtt__edge *) STBTT_malloc(sizeof(*e) * (n+1)); // add an extra one as a sentinel + if (e == 0) return; + n = 0; + + m=0; + for (i=0; i < windings; ++i) { + stbtt__point *p = pts + m; + m += wcount[i]; + j = wcount[i]-1; + for (k=0; k < wcount[i]; j=k++) { + int a=k,b=j; + // skip the edge if horizontal + if (p[j].y == p[k].y) + continue; + // add edge from j to k to the list + if (invert ? p[j].y > p[k].y : p[j].y < p[k].y) + a=j,b=k; + e[n].x0 = p[a].x * scale_x; + e[n].y0 = p[a].y * y_scale_inv * vsubsample; + e[n].x1 = p[b].x * scale_x; + e[n].y1 = p[b].y * y_scale_inv * vsubsample; + ++n; + } + } + + // now sort the edges by their highest point (should snap to integer, and then by x) + STBTT_sort(e, n, sizeof(e[0]), stbtt__edge_compare); + + // now, traverse the scanlines and find the intersections on each scanline, use xor winding rule + stbtt__rasterize_sorted_edges(result, e, n, vsubsample, off_x, off_y); + + STBTT_free(e); +} + +static void stbtt__add_point(stbtt__point *points, int n, float x, float y) +{ + if (!points) return; // during first pass, it's unallocated + points[n].x = x; + points[n].y = y; +} + +// tesselate until threshhold p is happy... @TODO warped to compensate for non-linear stretching +static int stbtt__tesselate_curve(stbtt__point *points, int *num_points, float x0, float y0, float x1, float y1, float x2, float y2, float objspace_flatness_squared, int n) +{ + // midpoint + float mx = (x0 + 2*x1 + x2)/4; + float my = (y0 + 2*y1 + y2)/4; + // versus directly drawn line + float dx = (x0+x2)/2 - mx; + float dy = (y0+y2)/2 - my; + if (n > 16) // 65536 segments on one curve better be enough! + return 1; + if (dx*dx+dy*dy > objspace_flatness_squared) { // half-pixel error allowed... need to be smaller if AA + stbtt__tesselate_curve(points, num_points, x0,y0, (x0+x1)/2.0f,(y0+y1)/2.0f, mx,my, objspace_flatness_squared,n+1); + stbtt__tesselate_curve(points, num_points, mx,my, (x1+x2)/2.0f,(y1+y2)/2.0f, x2,y2, objspace_flatness_squared,n+1); + } else { + stbtt__add_point(points, *num_points,x2,y2); + *num_points = *num_points+1; + } + return 1; +} + +// returns number of contours +stbtt__point *stbtt_FlattenCurves(stbtt_vertex *vertices, int num_verts, float objspace_flatness, int **contour_lengths, int *num_contours) +{ + stbtt__point *points=0; + int num_points=0; + + float objspace_flatness_squared = objspace_flatness * objspace_flatness; + int i,n=0,start=0, pass; + + // count how many "moves" there are to get the contour count + for (i=0; i < num_verts; ++i) + if (vertices[i].type == STBTT_vmove) + ++n; + + *num_contours = n; + if (n == 0) return 0; + + *contour_lengths = (int *) STBTT_malloc(sizeof(**contour_lengths) * n); + + if (*contour_lengths == 0) { + *num_contours = 0; + return 0; + } + + // make two passes through the points so we don't need to realloc + for (pass=0; pass < 2; ++pass) { + float x,y; + if (pass == 1) { + points = (stbtt__point *) STBTT_malloc(num_points * sizeof(points[0])); + if (points == NULL) goto error; + } + num_points = 0; + n= -1; + for (i=0; i < num_verts; ++i) { + switch (vertices[i].type) { + case STBTT_vmove: + // start the next contour + if (n >= 0) + (*contour_lengths)[n] = num_points - start; + ++n; + start = num_points; + + x = vertices[i].x, y = vertices[i].y; + stbtt__add_point(points, num_points++, x,y); + break; + case STBTT_vline: + x = vertices[i].x, y = vertices[i].y; + stbtt__add_point(points, num_points++, x, y); + break; + case STBTT_vcurve: + stbtt__tesselate_curve(points, &num_points, x,y, + vertices[i].cx, vertices[i].cy, + vertices[i].x, vertices[i].y, + objspace_flatness_squared, 0); + x = vertices[i].x, y = vertices[i].y; + break; + } + } + (*contour_lengths)[n] = num_points - start; + } + + return points; +error: + STBTT_free(points); + STBTT_free(*contour_lengths); + *contour_lengths = 0; + *num_contours = 0; + return NULL; +} + +void stbtt_Rasterize(stbtt__bitmap *result, float flatness_in_pixels, stbtt_vertex *vertices, int num_verts, float scale_x, float scale_y, int x_off, int y_off, int invert) +{ + float scale = scale_x > scale_y ? scale_y : scale_x; + int winding_count, *winding_lengths; + stbtt__point *windings = stbtt_FlattenCurves(vertices, num_verts, flatness_in_pixels / scale, &winding_lengths, &winding_count); + if (windings) { + stbtt__rasterize(result, windings, winding_lengths, winding_count, scale_x, scale_y, x_off, y_off, invert); + STBTT_free(winding_lengths); + STBTT_free(windings); + } +} + +void stbtt_FreeBitmap(unsigned char *bitmap) +{ + STBTT_free(bitmap); +} + +unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int glyph, int *width, int *height, int *xoff, int *yoff) +{ + int ix0,iy0,ix1,iy1; + stbtt__bitmap gbm; + stbtt_vertex *vertices; + int num_verts = stbtt_GetGlyphShape(info, glyph, &vertices); + + if (scale_x == 0) scale_x = scale_y; + if (scale_y == 0) { + if (scale_x == 0) return NULL; + scale_y = scale_x; + } + + stbtt_GetGlyphBitmapBox(info, glyph, scale_x, scale_y, &ix0,&iy0,&ix1,&iy1); + + // now we get the size + gbm.w = (ix1 - ix0); + gbm.h = (iy1 - iy0); + gbm.pixels = NULL; // in case we error + + if (width ) *width = gbm.w; + if (height) *height = gbm.h; + if (xoff ) *xoff = ix0; + if (yoff ) *yoff = iy0; + + if (gbm.w && gbm.h) { + gbm.pixels = (unsigned char *) STBTT_malloc(gbm.w * gbm.h); + if (gbm.pixels) { + gbm.stride = gbm.w; + + stbtt_Rasterize(&gbm, 0.35f, vertices, num_verts, scale_x, scale_y, ix0, iy0, 1); + } + } + STBTT_free(vertices); + return gbm.pixels; +} + +void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int glyph) +{ + int ix0,iy0; + stbtt_vertex *vertices; + int num_verts = stbtt_GetGlyphShape(info, glyph, &vertices); + stbtt__bitmap gbm; + + stbtt_GetGlyphBitmapBox(info, glyph, scale_x, scale_y, &ix0,&iy0,0,0); + gbm.pixels = output; + gbm.w = out_w; + gbm.h = out_h; + gbm.stride = out_stride; + + if (gbm.w && gbm.h) + stbtt_Rasterize(&gbm, 0.35f, vertices, num_verts, scale_x, scale_y, ix0,iy0, 1); + + STBTT_free(vertices); +} + +unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int codepoint, int *width, int *height, int *xoff, int *yoff) +{ + return stbtt_GetGlyphBitmap(info, scale_x, scale_y, stbtt_FindGlyphIndex(info,codepoint), width,height,xoff,yoff); +} + +void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int codepoint) +{ + stbtt_MakeGlyphBitmap(info, output, out_w, out_h, out_stride, scale_x, scale_y, stbtt_FindGlyphIndex(info,codepoint)); +} + +////////////////////////////////////////////////////////////////////////////// +// +// bitmap baking +// +// This is SUPER-SHITTY packing to keep source code small + +extern int stbtt_BakeFontBitmap(const unsigned char *data, int offset, // font location (use offset=0 for plain .ttf) + float pixel_height, // height of font in pixels + unsigned char *pixels, int pw, int ph, // bitmap to be filled in + int first_char, int num_chars, // characters to bake + stbtt_bakedchar *chardata) +{ + float scale; + int x,y,bottom_y, i; + stbtt_fontinfo f; + stbtt_InitFont(&f, data, offset); + STBTT_memset(pixels, 0, pw*ph); // background of 0 around pixels + x=y=1; + bottom_y = 1; + + scale = stbtt_ScaleForPixelHeight(&f, pixel_height); + + for (i=0; i < num_chars; ++i) { + int advance, lsb, x0,y0,x1,y1,gw,gh; + int g = stbtt_FindGlyphIndex(&f, first_char + i); + stbtt_GetGlyphHMetrics(&f, g, &advance, &lsb); + stbtt_GetGlyphBitmapBox(&f, g, scale,scale, &x0,&y0,&x1,&y1); + gw = x1-x0; + gh = y1-y0; + if (x + gw + 1 >= pw) + y = bottom_y, x = 1; // advance to next row + if (y + gh + 1 >= ph) // check if it fits vertically AFTER potentially moving to next row + return -i; + STBTT_assert(x+gw < pw); + STBTT_assert(y+gh < ph); + stbtt_MakeGlyphBitmap(&f, pixels+x+y*pw, gw,gh,pw, scale,scale, g); + chardata[i].x0 = x; + chardata[i].y0 = y; + chardata[i].x1 = x + gw; + chardata[i].y1 = y + gh; + chardata[i].xadvance = scale * advance; + chardata[i].xoff = (float) x0; + chardata[i].yoff = (float) y0; + x = x + gw + 2; + if (y+gh+2 > bottom_y) + bottom_y = y+gh+2; + } + return bottom_y; +} + +void stbtt_GetBakedQuad(stbtt_bakedchar *chardata, int pw, int ph, int char_index, float *xpos, float *ypos, stbtt_aligned_quad *q, int opengl_fillrule) +{ + float d3d_bias = opengl_fillrule ? 0 : -0.5f; + stbtt_bakedchar *b = chardata + char_index; + int round_x = STBTT_ifloor((*xpos + b->xoff) + 0.5); + int round_y = STBTT_ifloor((*ypos + b->yoff) + 0.5); + + q->x0 = round_x - 0.5f + d3d_bias; + q->y0 = round_y - 0.5f + d3d_bias; + q->x1 = round_x + b->x1 - b->x0 + 0.5f + d3d_bias; + q->y1 = round_y + b->y1 - b->y0 + 0.5f + d3d_bias; + + q->s0 = (b->x0 - 0.5f) / pw; + q->t0 = (b->y0 - 0.5f) / pw; + q->s1 = (b->x1 + 0.5f) / ph; + q->t1 = (b->y1 + 0.5f) / ph; + + *xpos += b->xadvance; +} + +////////////////////////////////////////////////////////////////////////////// +// +// font name matching -- recommended not to use this +// + +// check if a utf8 string contains a prefix which is the utf16 string; if so return length of matching utf8 string +static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(stbtt_uint8 *s1, stbtt_int32 len1, stbtt_uint8 *s2, stbtt_int32 len2) +{ + stbtt_int32 i=0; + + // convert utf16 to utf8 and compare the results while converting + while (len2) { + stbtt_uint16 ch = s2[0]*256 + s2[1]; + if (ch < 0x80) { + if (i >= len1) return -1; + if (s1[i++] != ch) return -1; + } else if (ch < 0x800) { + if (i+1 >= len1) return -1; + if (s1[i++] != 0xc0 + (ch >> 6)) return -1; + if (s1[i++] != 0x80 + (ch & 0x3f)) return -1; + } else if (ch >= 0xd800 && ch < 0xdc00) { + stbtt_uint32 c; + stbtt_uint16 ch2 = s2[2]*256 + s2[3]; + if (i+3 >= len1) return -1; + c = ((ch - 0xd800) << 10) + (ch2 - 0xdc00) + 0x10000; + if (s1[i++] != 0xf0 + (c >> 18)) return -1; + if (s1[i++] != 0x80 + ((c >> 12) & 0x3f)) return -1; + if (s1[i++] != 0x80 + ((c >> 6) & 0x3f)) return -1; + if (s1[i++] != 0x80 + ((c ) & 0x3f)) return -1; + s2 += 2; // plus another 2 below + len2 -= 2; + } else if (ch >= 0xdc00 && ch < 0xe000) { + return -1; + } else { + if (i+2 >= len1) return -1; + if (s1[i++] != 0xe0 + (ch >> 12)) return -1; + if (s1[i++] != 0x80 + ((ch >> 6) & 0x3f)) return -1; + if (s1[i++] != 0x80 + ((ch ) & 0x3f)) return -1; + } + s2 += 2; + len2 -= 2; + } + return i; +} + +int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len1, const char *s2, int len2) +{ + return len1 == stbtt__CompareUTF8toUTF16_bigendian_prefix((stbtt_uint8*) s1, len1, (stbtt_uint8*) s2, len2); +} + +// returns results in whatever encoding you request... but note that 2-byte encodings +// will be BIG-ENDIAN... use stbtt_CompareUTF8toUTF16_bigendian() to compare +char *stbtt_GetFontNameString(const stbtt_fontinfo *font, int *length, int platformID, int encodingID, int languageID, int nameID) +{ + stbtt_int32 i,count,stringOffset; + stbtt_uint8 *fc = font->data; + stbtt_uint32 offset = font->fontstart; + stbtt_uint32 nm = stbtt__find_table(fc, offset, "name"); + if (!nm) return NULL; + + count = ttUSHORT(fc+nm+2); + stringOffset = nm + ttUSHORT(fc+nm+4); + for (i=0; i < count; ++i) { + stbtt_uint32 loc = nm + 6 + 12 * i; + if (platformID == ttUSHORT(fc+loc+0) && encodingID == ttUSHORT(fc+loc+2) + && languageID == ttUSHORT(fc+loc+4) && nameID == ttUSHORT(fc+loc+6)) { + *length = ttUSHORT(fc+loc+8); + return (char *) (fc+stringOffset+ttUSHORT(fc+loc+10)); + } + } + return NULL; +} + +static int stbtt__matchpair(stbtt_uint8 *fc, stbtt_uint32 nm, stbtt_uint8 *name, stbtt_int32 nlen, stbtt_int32 target_id, stbtt_int32 next_id) +{ + stbtt_int32 i; + stbtt_int32 count = ttUSHORT(fc+nm+2); + stbtt_int32 stringOffset = nm + ttUSHORT(fc+nm+4); + + for (i=0; i < count; ++i) { + stbtt_uint32 loc = nm + 6 + 12 * i; + stbtt_int32 id = ttUSHORT(fc+loc+6); + if (id == target_id) { + // find the encoding + stbtt_int32 platform = ttUSHORT(fc+loc+0), encoding = ttUSHORT(fc+loc+2), language = ttUSHORT(fc+loc+4); + + // is this a Unicode encoding? + if (platform == 0 || (platform == 3 && encoding == 1) || (platform == 3 && encoding == 10)) { + stbtt_int32 slen = ttUSHORT(fc+loc+8), off = ttUSHORT(fc+loc+10); + + // check if there's a prefix match + stbtt_int32 matchlen = stbtt__CompareUTF8toUTF16_bigendian_prefix(name, nlen, fc+stringOffset+off,slen); + if (matchlen >= 0) { + // check for target_id+1 immediately following, with same encoding & language + if (i+1 < count && ttUSHORT(fc+loc+12+6) == next_id && ttUSHORT(fc+loc+12) == platform && ttUSHORT(fc+loc+12+2) == encoding && ttUSHORT(fc+loc+12+4) == language) { + stbtt_int32 slen = ttUSHORT(fc+loc+12+8), off = ttUSHORT(fc+loc+12+10); + if (slen == 0) { + if (matchlen == nlen) + return 1; + } else if (matchlen < nlen && name[matchlen] == ' ') { + ++matchlen; + if (stbtt_CompareUTF8toUTF16_bigendian((char*) (name+matchlen), nlen-matchlen, (char*)(fc+stringOffset+off),slen)) + return 1; + } + } else { + // if nothing immediately following + if (matchlen == nlen) + return 1; + } + } + } + + // @TODO handle other encodings + } + } + return 0; +} + +static int stbtt__matches(stbtt_uint8 *fc, stbtt_uint32 offset, stbtt_uint8 *name, stbtt_int32 flags) +{ + stbtt_int32 nlen = STBTT_strlen((char *) name); + stbtt_uint32 nm,hd; + if (!stbtt__isfont(fc+offset)) return 0; + + // check italics/bold/underline flags in macStyle... + if (flags) { + hd = stbtt__find_table(fc, offset, "head"); + if ((ttUSHORT(fc+hd+44) & 7) != (flags & 7)) return 0; + } + + nm = stbtt__find_table(fc, offset, "name"); + if (!nm) return 0; + + if (flags) { + // if we checked the macStyle flags, then just check the family and ignore the subfamily + if (stbtt__matchpair(fc, nm, name, nlen, 16, -1)) return 1; + if (stbtt__matchpair(fc, nm, name, nlen, 1, -1)) return 1; + if (stbtt__matchpair(fc, nm, name, nlen, 3, -1)) return 1; + } else { + if (stbtt__matchpair(fc, nm, name, nlen, 16, 17)) return 1; + if (stbtt__matchpair(fc, nm, name, nlen, 1, 2)) return 1; + if (stbtt__matchpair(fc, nm, name, nlen, 3, -1)) return 1; + } + + return 0; +} + +int stbtt_FindMatchingFont(const unsigned char *font_collection, const char *name_utf8, stbtt_int32 flags) +{ + stbtt_int32 i; + for (i=0;;++i) { + stbtt_int32 off = stbtt_GetFontOffsetForIndex(font_collection, i); + if (off < 0) return off; + if (stbtt__matches((stbtt_uint8 *) font_collection, off, (stbtt_uint8*) name_utf8, flags)) + return off; + } +} + +#endif // STB_TRUETYPE_IMPLEMENTATION + +#endif // __STB_INCLUDE_STB_TRUETYPE_H__ diff --git a/RecastDemo/Include/Builder.h b/RecastDemo/Include/Builder.h deleted file mode 100644 index 92bfa5b4..00000000 --- a/RecastDemo/Include/Builder.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef RECASTBUILDER_H -#define RECASTBUILDER_H - - -class Builder -{ -protected: - const float* m_verts; - int m_nverts; - const int* m_tris; - const float* m_trinorms; - int m_ntris; - float m_bmin[3], m_bmax[3]; - - float m_cellSize; - float m_cellHeight; - float m_agentHeight; - float m_agentRadius; - float m_agentMaxClimb; - float m_agentMaxSlope; - float m_regionMinSize; - float m_regionMergeSize; - float m_edgeMaxLen; - float m_edgeMaxError; - float m_vertsPerPoly; - -public: - Builder(); - virtual ~Builder(); - - virtual void handleSettings(); - virtual void handleTools(); - virtual void handleDebugMode(); - - virtual void setToolStartPos(const float* p); - virtual void setToolEndPos(const float* p); - - virtual void handleRender(); - virtual void handleRenderOverlay(class GLFont* font, double* proj, double* model, int* view); - virtual void handleMeshChanged(const float* verts, int nverts, - const int* tris, const float* trinorms, int ntris, - const float* bmin, const float* bmax); - virtual bool handleBuild(); - - void resetCommonSettings(); - void handleCommonSettings(); -}; - - -#endif // RECASTBUILDER_H diff --git a/RecastDemo/Include/BuilderStatMesh.h b/RecastDemo/Include/BuilderStatMesh.h deleted file mode 100644 index 7a743aa0..00000000 --- a/RecastDemo/Include/BuilderStatMesh.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef RECASTBUILDERSTATMESH_H -#define RECASTBUILDERSTATMESH_H - -#include "Builder.h" -#include "DetourStatNavMesh.h" -#include "Recast.h" -#include "RecastLog.h" - -class BuilderStatMesh : public Builder -{ -protected: - - dtStatNavMesh* m_navMesh; - - enum ToolMode - { - TOOLMODE_PATHFIND, - TOOLMODE_RAYCAST, - TOOLMODE_DISTANCE_TO_WALL, - TOOLMODE_FIND_POLYS_AROUND, - }; - - ToolMode m_toolMode; - - static const int MAX_POLYS = 256; - - dtPolyRef m_startRef; - dtPolyRef m_endRef; - dtPolyRef m_polys[MAX_POLYS]; - dtPolyRef m_parent[MAX_POLYS]; - int m_npolys; - float m_straightPath[MAX_POLYS*3]; - int m_nstraightPath; - float m_polyPickExt[3]; - - float m_spos[3]; - float m_epos[3]; - float m_hitPos[3]; - float m_hitNormal[3]; - float m_distanceToWall; - bool m_sposSet; - bool m_eposSet; - - enum ToolRenderFlags - { - NAVMESH_POLYS = 0x01, - NAVMESH_BVTREE = 0x02, - NAVMESH_TOOLS = 0x04, - }; - - void toolCleanup(); - void toolReset(); - void toolRecalc(); - void toolRender(int flags); - void toolRenderOverlay(class GLFont* font, double* proj, double* model, int* view); - - void drawAgent(const float* pos, float r, float h, float c, const float* col); - - -public: - BuilderStatMesh(); - virtual ~BuilderStatMesh(); - - virtual void handleTools(); - virtual void setToolStartPos(const float* p); - virtual void setToolEndPos(const float* p); -}; - - -#endif // RECASTBUILDERSTATMESH_H diff --git a/RecastDemo/Include/BuilderStatMeshSimple.h b/RecastDemo/Include/BuilderStatMeshSimple.h deleted file mode 100644 index 689b1b73..00000000 --- a/RecastDemo/Include/BuilderStatMeshSimple.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef RECASTBUILDERSTATMESHSIMPLE_H -#define RECASTBUILDERSTATMESHSIMPLE_H - -#include "BuilderStatMesh.h" -#include "DetourStatNavMesh.h" -#include "Recast.h" -#include "RecastLog.h" - -class BuilderStatMeshSimple : public BuilderStatMesh -{ -protected: - - bool m_keepInterResults; - rcBuildTimes m_buildTimes; - - unsigned char* m_triflags; - rcHeightfield* m_solid; - rcCompactHeightfield* m_chf; - rcContourSet* m_cset; - rcPolyMesh* m_polyMesh; - rcConfig m_cfg; - - enum DrawMode - { - DRAWMODE_NAVMESH, - DRAWMODE_NAVMESH_TRANS, - DRAWMODE_NAVMESH_BVTREE, - DRAWMODE_NAVMESH_INVIS, - DRAWMODE_MESH, - DRAWMODE_VOXELS, - DRAWMODE_VOXELS_WALKABLE, - DRAWMODE_COMPACT, - DRAWMODE_COMPACT_DISTANCE, - DRAWMODE_COMPACT_REGIONS, - DRAWMODE_REGION_CONNECTIONS, - DRAWMODE_RAW_CONTOURS, - DRAWMODE_BOTH_CONTOURS, - DRAWMODE_CONTOURS, - DRAWMODE_POLYMESH, - MAX_DRAWMODE - }; - - DrawMode m_drawMode; - - void cleanup(); - -public: - BuilderStatMeshSimple(); - virtual ~BuilderStatMeshSimple(); - - virtual void handleSettings(); - virtual void handleDebugMode(); - - virtual void handleRender(); - virtual void handleRenderOverlay(class GLFont* font, double* proj, double* model, int* view); - virtual void handleMeshChanged(const float* verts, int nverts, - const int* tris, const float* trinorms, int ntris, - const float* bmin, const float* bmax); - virtual bool handleBuild(); -}; - - -#endif // RECASTBUILDERSTATMESHSIMPLE_H diff --git a/RecastDemo/Include/BuilderStatMeshTiled.h b/RecastDemo/Include/BuilderStatMeshTiled.h deleted file mode 100644 index b4bd0406..00000000 --- a/RecastDemo/Include/BuilderStatMeshTiled.h +++ /dev/null @@ -1,91 +0,0 @@ -#ifndef RECASTBUILDERSTATMESHTILING_H -#define RECASTBUILDERSTATMESHTILING_H - -#include "BuilderStatMesh.h" -#include "DetourStatNavMesh.h" -#include "Recast.h" -#include "RecastLog.h" -#include "ChunkyTriMesh.h" - -class BuilderStatMeshTiled : public BuilderStatMesh -{ -protected: - - struct Tile - { - inline Tile() : chf(0), cset(0), solid(0), buildTime(0) {} - inline ~Tile() { delete chf; delete cset; delete solid; } - rcCompactHeightfield* chf; - rcHeightfield* solid; - rcContourSet* cset; - int buildTime; - }; - - struct TileSet - { - inline TileSet() : width(0), height(0), tiles(0) {} - inline ~TileSet() { delete [] tiles; } - int width, height; - float bmin[3], bmax[3]; - float cs, ch; - Tile* tiles; - }; - - bool m_measurePerTileTimings; - bool m_keepInterResults; - float m_tileSize; - rcBuildTimes m_buildTimes; - - rcChunkyTriMesh* m_chunkyMesh; - rcPolyMesh* m_polyMesh; - rcConfig m_cfg; - TileSet* m_tileSet; - - static const int MAX_STAT_BUCKETS = 1000; - int m_statPolysPerTile[MAX_STAT_BUCKETS]; - int m_statPolysPerTileSamples; - int m_statTimePerTile[MAX_STAT_BUCKETS]; - int m_statTimePerTileSamples; - - - enum DrawMode - { - DRAWMODE_NAVMESH, - DRAWMODE_NAVMESH_TRANS, - DRAWMODE_NAVMESH_BVTREE, - DRAWMODE_NAVMESH_INVIS, - DRAWMODE_MESH, - DRAWMODE_VOXELS, - DRAWMODE_VOXELS_WALKABLE, - DRAWMODE_COMPACT, - DRAWMODE_COMPACT_DISTANCE, - DRAWMODE_COMPACT_REGIONS, - DRAWMODE_REGION_CONNECTIONS, - DRAWMODE_RAW_CONTOURS, - DRAWMODE_BOTH_CONTOURS, - DRAWMODE_CONTOURS, - DRAWMODE_POLYMESH, - MAX_DRAWMODE - }; - - DrawMode m_drawMode; - - void cleanup(); - -public: - BuilderStatMeshTiled(); - virtual ~BuilderStatMeshTiled(); - - virtual void handleSettings(); - virtual void handleDebugMode(); - - virtual void handleRender(); - virtual void handleRenderOverlay(class GLFont* font, double* proj, double* model, int* view); - virtual void handleMeshChanged(const float* verts, int nverts, - const int* tris, const float* trinorms, int ntris, - const float* bmin, const float* bmax); - virtual bool handleBuild(); -}; - - -#endif // RECASTBUILDERSTATMESHTILING_H diff --git a/RecastDemo/Include/BuilderTiledMesh.h b/RecastDemo/Include/BuilderTiledMesh.h deleted file mode 100644 index caa49ec8..00000000 --- a/RecastDemo/Include/BuilderTiledMesh.h +++ /dev/null @@ -1,132 +0,0 @@ -// -// Copyright (c) 2009 Mikko Mononen memon@inside.org -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. -// - -#ifndef RECASTBUILDERTILEDMESH_H -#define RECASTBUILDERTILEDMESH_H - -#include "Builder.h" -#include "DetourTiledNavMesh.h" -#include "Recast.h" -#include "RecastLog.h" -#include "ChunkyTriMesh.h" - -class BuilderTiledMesh : public Builder -{ -protected: - - bool m_keepInterResults; - rcBuildTimes m_buildTimes; - - dtTiledNavMesh* m_navMesh; - rcChunkyTriMesh* m_chunkyMesh; - unsigned char* m_triflags; - rcHeightfield* m_solid; - rcCompactHeightfield* m_chf; - rcContourSet* m_cset; - rcPolyMesh* m_polyMesh; - rcConfig m_cfg; - - float m_tileSize; - - float m_spos[3]; - float m_epos[3]; - bool m_sposSet; - bool m_eposSet; - - float m_tileCol[4]; - float m_tileBmin[3]; - float m_tileBmax[3]; - float m_tileBuildTime; - float m_tileMemUsage; - int m_tileTriCount; - - enum ToolMode - { - TOOLMODE_CREATE_TILES, - TOOLMODE_PATHFIND, - TOOLMODE_RAYCAST, - TOOLMODE_DISTANCE_TO_WALL, - TOOLMODE_FIND_POLYS_AROUND, - }; - - dtTilePolyRef m_startRef; - dtTilePolyRef m_endRef; - float m_polyPickExt[3]; - - static const int MAX_POLYS = 256; - - dtTilePolyRef m_polys[MAX_POLYS]; - dtTilePolyRef m_parent[MAX_POLYS]; - int m_npolys; - float m_straightPath[MAX_POLYS*3]; - int m_nstraightPath; - float m_hitPos[3]; - float m_hitNormal[3]; - float m_distanceToWall; - - ToolMode m_toolMode; - - void toolRecalc(); - -/* static const int MAX_POLYS = 256; - - dtPolyRef m_startRef; - dtPolyRef m_endRef; - dtPolyRef m_polys[MAX_POLYS]; - dtPolyRef m_parent[MAX_POLYS]; - int m_npolys; - float m_straightPath[MAX_POLYS*3]; - int m_nstraightPath; - float m_polyPickExt[3]; - - float m_spos[3]; - float m_epos[3]; - float m_hitPos[3]; - float m_hitNormal[3]; - float m_distanceToWall; - bool m_sposSet; - bool m_eposSet;*/ - - void buildTile(const float* pos); - void removeTile(const float* pos); - - unsigned char* buildTileMesh(const float* bmin, const float* bmax, int& dataSize); - - void cleanup(); - -public: - BuilderTiledMesh(); - virtual ~BuilderTiledMesh(); - - virtual void handleSettings(); - virtual void handleTools(); - virtual void handleDebugMode(); - - virtual void setToolStartPos(const float* p); - virtual void setToolEndPos(const float* p); - - virtual void handleRender(); - virtual void handleRenderOverlay(class GLFont* font, double* proj, double* model, int* view); - virtual void handleMeshChanged(const float* verts, int nverts, - const int* tris, const float* trinorms, int ntris, - const float* bmin, const float* bmax); - virtual bool handleBuild(); -}; - - -#endif // RECASTBUILDERTILEDMESH_H diff --git a/RecastDemo/Include/glfont.h b/RecastDemo/Include/glfont.h deleted file mode 100644 index 4d7a4e97..00000000 --- a/RecastDemo/Include/glfont.h +++ /dev/null @@ -1,106 +0,0 @@ -// -// Copyright (c) 2009 Mikko Mononen memon@inside.org -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. -// - -#ifndef GLFONT_H -#define GLFONT_H - -class GLFont -{ -public: - GLFont(int renderVerts = 4096); - ~GLFont(); - - bool create(const char* fileName); - - int getFontSize() const; - int getDescender() const; - int getAscender() const; - float getLineHeight() const; - - float getTextLength(const char* text, float size = -1, float tracking = 0); - void drawText(float x, float y, const char* text, - unsigned int col, float size = -1, float tracking = 0); - - void render(); - - void debugDraw(); - - static unsigned int RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a = 255); - -private: - bool createFontFromFontData(unsigned char* fd); - - struct KerningPair - { - inline KerningPair() {} - inline KerningPair(unsigned char c_, float dx_) : dx(dx_), c(c_) {} - inline void Set(unsigned char c_, float dx_) { dx = dx_; c = c_; } - float dx; - unsigned char c, pad[3]; - }; - - struct CachedGlyph - { - inline CachedGlyph() : w(0), h(0), ox(0), oy(0), tx(0), ty(0), adv(0.0f), nkern(0), kern(0) {} - int w, h; - int ox, oy; - int tx, ty; - float adv; - int nkern; - union - { - KerningPair* kern; - int kernOffset; - }; - }; - - struct FontData - { - unsigned int endian; - unsigned int version; - unsigned int dataSize; - unsigned int kernOffset; - unsigned int textureOffset; - int fontSize; - unsigned int texWidth; - unsigned int texHeight; - int numMipmaps; - int ascender; - int descender; - int lineHeight; - int charMin; - int charCount; - CachedGlyph glyphs[1]; - }; - - FontData* m_fd; - unsigned int m_texId; - - struct RenderVertex - { - inline void set(float x_, float y_, float u_, float v_, unsigned int c) { x=x_; y=y_; u=u_; v=v_; col=c; } - float x, y, u, v; - unsigned int col; - }; - RenderVertex* m_verts; - int m_nverts; - const int m_maxVerts; -}; - - -#endif // GLFONT_H diff --git a/RecastDemo/Include/imgui.h b/RecastDemo/Include/imgui.h index 685faf16..ff4660dd 100644 --- a/RecastDemo/Include/imgui.h +++ b/RecastDemo/Include/imgui.h @@ -19,35 +19,79 @@ #ifndef IMGUI_H #define IMGUI_H -#define GENID ((__LINE__ ^ (int)__FILE__) << 16) -#define GENID1(x) ((__LINE__ ^ (int)__FILE__) << 16 | (x)) - enum imguiMouseButton { IMGUI_MBUT_LEFT = 0x01, IMGUI_MBUT_RIGHT = 0x02, - IMGUI_MBUT_UP = 0x04, - IMGUI_MBUT_DOWN = 0x08, }; -void imguiBeginFrame(int mx, int my, unsigned char mbut); -void imguiEndFrame(); -void imguiRender(void (*drawText)(int x, int y, int dir, const char* text, unsigned int col)); +enum imguiTextAlign +{ + IMGUI_ALIGN_LEFT, + IMGUI_ALIGN_CENTER, + IMGUI_ALIGN_RIGHT, +}; -bool imguiBeginScrollArea(unsigned int id, const char* name, int x, int y, int w, int h, int* scroll); +inline unsigned int imguiRGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a=255) +{ + return (r) | (g << 8) | (b << 16) | (a << 24); +} + +void imguiBeginFrame(int mx, int my, unsigned char mbut, int scroll); +void imguiEndFrame(); + +bool imguiBeginScrollArea(const char* name, int x, int y, int w, int h, int* scroll); void imguiEndScrollArea(); void imguiIndent(); void imguiUnindent(); void imguiSeparator(); -bool imguiButton(unsigned int id, const char* text); -bool imguiItem(unsigned int id, const char* text); -bool imguiCheck(unsigned int id, const char* text, bool checked); -bool imguiCollapse(unsigned int id, const char* text, bool checked); -void imguiLabel(unsigned int id, const char* text); -void imguiValue(unsigned int id, const char* text); -bool imguiSlider(unsigned int id, const char* text, float* val, float vmin, float vmax, float vinc); +bool imguiButton(const char* text, bool enabled = true); +bool imguiItem(const char* text, bool enabled = true); +bool imguiCheck(const char* text, bool checked, bool enabled = true); +bool imguiCollapse(const char* text, bool checked, bool enabled = true); +void imguiLabel(const char* text); +void imguiValue(const char* text); +bool imguiSlider(const char* text, float* val, float vmin, float vmax, float vinc, bool enabled = true); + +void imguiDrawText(int x, int y, int align, const char* text, unsigned int color); + +// Pull render interface. +enum imguiGfxCmdType +{ + IMGUI_GFXCMD_RECT, + IMGUI_GFXCMD_TRIANGLE, + IMGUI_GFXCMD_TEXT, + IMGUI_GFXCMD_SCISSOR, +}; + +struct imguiGfxRect +{ + short x,y,w,h,r; +}; + +struct imguiGfxText +{ + short x,y,align; + const char* text; +}; + +struct imguiGfxCmd +{ + char type; + char flags; + char pad[2]; + unsigned int col; + union + { + imguiGfxRect rect; + imguiGfxText text; + }; +}; + +const imguiGfxCmd* imguiGetRenderQueue(); +int imguiGetRenderQueueSize(); #endif // IMGUI_H diff --git a/RecastDemo/Include/imguiRenderGL.h b/RecastDemo/Include/imguiRenderGL.h new file mode 100644 index 00000000..53a37282 --- /dev/null +++ b/RecastDemo/Include/imguiRenderGL.h @@ -0,0 +1,8 @@ +#ifndef IMGUI_RENDER_GL_H +#define IMGUI_RENDER_GL_H + +bool imguiRenderGLInit(const char* fontpath); +void imguiRenderGLDestroy(); +void imguiRenderGLDraw(); + +#endif // IMGUI_RENDER_GL_H \ No newline at end of file diff --git a/RecastDemo/Source/Builder.cpp b/RecastDemo/Source/Builder.cpp deleted file mode 100644 index 9941641c..00000000 --- a/RecastDemo/Source/Builder.cpp +++ /dev/null @@ -1,123 +0,0 @@ -#define _USE_MATH_DEFINES -#include -#include -#include "Builder.h" -#include "Recast.h" -#include "RecastDebugDraw.h" -#include "imgui.h" - -#ifdef WIN32 -# define snprintf _snprintf -#endif - - -Builder::Builder() : - m_verts(0), m_nverts(0), m_tris(0), m_trinorms(0), m_ntris(0) -{ - resetCommonSettings(); -} - -Builder::~Builder() -{ -} - -void Builder::handleSettings() -{ -} - -void Builder::handleTools() -{ -} - -void Builder::handleDebugMode() -{ -} - -void Builder::handleRender() -{ - if (!m_verts || !m_tris || !m_trinorms) - return; - // Draw mesh - rcDebugDrawMesh(m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0); - // Draw bounds - float col[4] = {1,1,1,0.5f}; - rcDebugDrawBoxWire(m_bmin[0],m_bmin[1],m_bmin[2], m_bmax[0],m_bmax[1],m_bmax[2], col); -} - -void Builder::handleRenderOverlay(class GLFont* font, double* proj, double* model, int* view) -{ -} - -void Builder::handleMeshChanged(const float* verts, int nverts, - const int* tris, const float* trinorms, int ntris, - const float* bmin, const float* bmax) -{ - m_verts = verts; - m_nverts = nverts; - m_tris = tris; - m_trinorms = trinorms; - m_ntris = ntris; - vcopy(m_bmin, bmin); - vcopy(m_bmax, bmax); -} - -void Builder::resetCommonSettings() -{ - m_cellSize = 0.3f; - m_cellHeight = 0.2f; - m_agentHeight = 2.0f; - m_agentRadius = 0.6f; - m_agentMaxClimb = 0.9f; - m_agentMaxSlope = 45.0f; - m_regionMinSize = 50; - m_regionMergeSize = 20; - m_edgeMaxLen = 12.0f; - m_edgeMaxError = 1.3f; - m_vertsPerPoly = 6.0f; -} - -void Builder::handleCommonSettings() -{ - imguiLabel(GENID, "Rasterization"); - imguiSlider(GENID, "Cell Size", &m_cellSize, 0.1f, 1.0f, 0.01f); - imguiSlider(GENID, "Cell Height", &m_cellHeight, 0.1f, 1.0f, 0.01f); - - int gw = 0, gh = 0; - rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh); - char text[64]; - snprintf(text, 64, "Voxels %d x %d", gw, gh); - imguiValue(GENID, text); - - imguiSeparator(); - imguiLabel(GENID, "Agent"); - imguiSlider(GENID, "Height", &m_agentHeight, 0.1f, 5.0f, 0.1f); - imguiSlider(GENID, "Radius", &m_agentRadius, 0.0f, 5.0f, 0.1f); - imguiSlider(GENID, "Max Climb", &m_agentMaxClimb, 0.1f, 5.0f, 0.1f); - imguiSlider(GENID, "Max Slope", &m_agentMaxSlope, 0.0f, 90.0f, 1.0f); - - imguiSeparator(); - imguiLabel(GENID, "Region"); - imguiSlider(GENID, "Min Region Size", &m_regionMinSize, 0.0f, 150.0f, 1.0f); - imguiSlider(GENID, "Merged Region Size", &m_regionMergeSize, 0.0f, 150.0f, 1.0f); - - imguiSeparator(); - imguiLabel(GENID, "Polygonization"); - imguiSlider(GENID, "Max Edge Length", &m_edgeMaxLen, 0.0f, 50.0f, 1.0f); - imguiSlider(GENID, "Max Edge Error", &m_edgeMaxError, 0.1f, 3.0f, 0.1f); - imguiSlider(GENID, "Verts Per Poly", &m_vertsPerPoly, 3.0f, 12.0f, 1.0f); - - imguiSeparator(); -} - -void Builder::setToolStartPos(const float* p) -{ -} - -void Builder::setToolEndPos(const float* p) -{ -} - -bool Builder::handleBuild() -{ - return true; -} diff --git a/RecastDemo/Source/BuilderStatMesh.cpp b/RecastDemo/Source/BuilderStatMesh.cpp deleted file mode 100644 index 63cedc64..00000000 --- a/RecastDemo/Source/BuilderStatMesh.cpp +++ /dev/null @@ -1,338 +0,0 @@ -#define _USE_MATH_DEFINES -#include -#include -#include -#include "SDL.h" -#include "SDL_Opengl.h" -#include "glfont.h" -#include "imgui.h" -#include "Builder.h" -#include "BuilderStatMesh.h" -#include "Recast.h" -#include "RecastTimer.h" -#include "RecastDebugDraw.h" -#include "DetourStatNavMesh.h" -#include "DetourStatNavMeshBuilder.h" -#include "DetourDebugDraw.h" - -#ifdef WIN32 -# define snprintf _snprintf -#endif - -BuilderStatMesh::BuilderStatMesh() : - m_navMesh(0), - m_toolMode(TOOLMODE_PATHFIND), - m_sposSet(false), - m_eposSet(false) -{ - toolReset(); - m_polyPickExt[0] = 2; - m_polyPickExt[1] = 4; - m_polyPickExt[2] = 2; -} - -BuilderStatMesh::~BuilderStatMesh() -{ - toolCleanup(); -} - -void BuilderStatMesh::handleTools() -{ - if (imguiCheck(GENID, "Pathfind", m_toolMode == TOOLMODE_PATHFIND)) - { - m_toolMode = TOOLMODE_PATHFIND; - toolRecalc(); - } - if (imguiCheck(GENID, "Distance to Wall", m_toolMode == TOOLMODE_DISTANCE_TO_WALL)) - { - m_toolMode = TOOLMODE_DISTANCE_TO_WALL; - toolRecalc(); - } - if (imguiCheck(GENID, "Raycast", m_toolMode == TOOLMODE_RAYCAST)) - { - m_toolMode = TOOLMODE_RAYCAST; - toolRecalc(); - } - if (imguiCheck(GENID, "Find Polys Around", m_toolMode == TOOLMODE_FIND_POLYS_AROUND)) - { - m_toolMode = TOOLMODE_FIND_POLYS_AROUND; - toolRecalc(); - } -} - -void BuilderStatMesh::setToolStartPos(const float* p) -{ - m_sposSet = true; - vcopy(m_spos, p); - toolRecalc(); -} - -void BuilderStatMesh::setToolEndPos(const float* p) -{ - m_eposSet = true; - vcopy(m_epos, p); - toolRecalc(); -} - -void BuilderStatMesh::toolCleanup() -{ - delete m_navMesh; - m_navMesh = 0; -} - -void BuilderStatMesh::toolReset() -{ - m_startRef = 0; - m_endRef = 0; - m_npolys = 0; - m_nstraightPath = 0; - memset(m_hitPos, 0, sizeof(m_hitPos)); - memset(m_hitNormal, 0, sizeof(m_hitNormal)); - m_distanceToWall = 0; -} - -void BuilderStatMesh::toolRecalc() -{ - if (!m_navMesh) - return; - - if (m_sposSet) - m_startRef = m_navMesh->findNearestPoly(m_spos, m_polyPickExt); - else - m_startRef = 0; - - if (m_eposSet) - m_endRef = m_navMesh->findNearestPoly(m_epos, m_polyPickExt); - else - m_endRef = 0; - - if (m_toolMode == TOOLMODE_PATHFIND) - { - if (m_sposSet && m_eposSet && m_startRef && m_endRef) - { - m_npolys = m_navMesh->findPath(m_startRef, m_endRef, m_polys, MAX_POLYS); - if (m_npolys) - m_nstraightPath = m_navMesh->findStraightPath(m_spos, m_epos, m_polys, m_npolys, m_straightPath, MAX_POLYS); - } - else - { - m_npolys = 0; - m_nstraightPath = 0; - } - } - else if (m_toolMode == TOOLMODE_RAYCAST) - { - m_nstraightPath = 0; - if (m_sposSet && m_eposSet && m_startRef) - { - float t = 0; - m_npolys = 0; - m_nstraightPath = 2; - m_straightPath[0] = m_spos[0]; - m_straightPath[1] = m_spos[1]; - m_straightPath[2] = m_spos[2]; - if (m_navMesh->raycast(m_startRef, m_spos, m_epos, t, m_polys[0])) - { - m_npolys = 1; - m_straightPath[3] = m_spos[0] + (m_epos[0] - m_spos[0]) * t; - m_straightPath[4] = m_spos[1] + (m_epos[1] - m_spos[1]) * t; - m_straightPath[5] = m_spos[2] + (m_epos[2] - m_spos[2]) * t; - } - else - { - m_straightPath[3] = m_epos[0]; - m_straightPath[4] = m_epos[1]; - m_straightPath[5] = m_epos[2]; - } - } - } - else if (m_toolMode == TOOLMODE_DISTANCE_TO_WALL) - { - m_distanceToWall = 0; - if (m_sposSet && m_startRef) - m_distanceToWall = m_navMesh->findDistanceToWall(m_startRef, m_spos, 100.0f, m_hitPos, m_hitNormal); - } - else if (m_toolMode == TOOLMODE_FIND_POLYS_AROUND) - { - if (m_sposSet && m_startRef && m_eposSet) - { - const float dx = m_epos[0] - m_spos[0]; - const float dz = m_epos[2] - m_spos[2]; - float dist = sqrtf(dx*dx + dz*dz); - m_npolys = m_navMesh->findPolysAround(m_startRef, m_spos, dist, m_polys, m_parent, 0, 0, MAX_POLYS); - } - } -} - -static void getPolyCenter(dtStatNavMesh* navMesh, dtPolyRef ref, float* center) -{ - const dtPoly* p = navMesh->getPolyByRef(ref); - if (!p) return; - center[0] = 0; - center[1] = 0; - center[2] = 0; - for (int i = 0; i < (int)p->nv; ++i) - { - const float* v = navMesh->getVertex(p->v[i]); - center[0] += v[0]; - center[1] += v[1]; - center[2] += v[2]; - } - const float s = 1.0f / p->nv; - center[0] *= s; - center[1] *= s; - center[2] *= s; -} - -void BuilderStatMesh::toolRender(int flags) -{ - if (!m_navMesh) - return; - - static const float startCol[4] = { 0.5f, 0.1f, 0.0f, 0.75f }; - static const float endCol[4] = { 0.2f, 0.4f, 0.0f, 0.75f }; - static const float pathCol[4] = {0,0,0,0.25f}; - - glDepthMask(GL_FALSE); - - if (flags & NAVMESH_POLYS) - dtDebugDrawStatNavMesh(m_navMesh); - - if (flags & NAVMESH_BVTREE) - dtDebugDrawStatNavMeshBVTree(m_navMesh); - - if (flags & NAVMESH_TOOLS) - { - if (m_toolMode == TOOLMODE_PATHFIND) - { - dtDebugDrawStatNavMeshPoly(m_navMesh, m_startRef, startCol); - dtDebugDrawStatNavMeshPoly(m_navMesh, m_endRef, endCol); - - if (m_npolys) - { - for (int i = 1; i < m_npolys-1; ++i) - dtDebugDrawStatNavMeshPoly(m_navMesh, m_polys[i], pathCol); - } - if (m_nstraightPath) - { - glColor4ub(128,16,0,220); - glLineWidth(3.0f); - glBegin(GL_LINE_STRIP); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glLineWidth(1.0f); - glPointSize(4.0f); - glBegin(GL_POINTS); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glPointSize(1.0f); - } - } - else if (m_toolMode == TOOLMODE_RAYCAST) - { - dtDebugDrawStatNavMeshPoly(m_navMesh, m_startRef, startCol); - - if (m_nstraightPath) - { - dtDebugDrawStatNavMeshPoly(m_navMesh, m_polys[0], pathCol); - - glColor4ub(128,16,0,220); - glLineWidth(3.0f); - glBegin(GL_LINE_STRIP); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glLineWidth(1.0f); - glPointSize(4.0f); - glBegin(GL_POINTS); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glPointSize(1.0f); - } - } - else if (m_toolMode == TOOLMODE_DISTANCE_TO_WALL) - { - dtDebugDrawStatNavMeshPoly(m_navMesh, m_startRef, startCol); - const float col[4] = {1,1,1,0.5f}; - rcDebugDrawCylinderWire(m_spos[0]-m_distanceToWall, m_spos[1]+0.02f, m_spos[2]-m_distanceToWall, - m_spos[0]+m_distanceToWall, m_spos[1]+m_agentHeight, m_spos[2]+m_distanceToWall, col); - glLineWidth(3.0f); - glColor4fv(col); - glBegin(GL_LINES); - glVertex3f(m_hitPos[0], m_hitPos[1] + 0.02f, m_hitPos[2]); - glVertex3f(m_hitPos[0], m_hitPos[1] + m_agentHeight, m_hitPos[2]); - glEnd(); - glLineWidth(1.0f); - } - else if (m_toolMode == TOOLMODE_FIND_POLYS_AROUND) - { - glLineWidth(2.0f); - for (int i = 0; i < m_npolys; ++i) - { - dtDebugDrawStatNavMeshPoly(m_navMesh, m_polys[i], pathCol); - if (m_parent[i]) - { - float p0[3], p1[3]; - getPolyCenter(m_navMesh, m_polys[i], p0); - getPolyCenter(m_navMesh, m_parent[i], p1); - glColor4ub(0,0,0,128); - rcDrawArc(p0, p1); - } - } - glLineWidth(1.0f); - - const float dx = m_epos[0] - m_spos[0]; - const float dz = m_epos[2] - m_spos[2]; - float dist = sqrtf(dx*dx + dz*dz); - const float col[4] = {1,1,1,0.5f}; - rcDebugDrawCylinderWire(m_spos[0]-dist, m_spos[1]+0.02f, m_spos[2]-dist, - m_spos[0]+dist, m_spos[1]+m_agentHeight, m_spos[2]+dist, col); - } - } - - glDepthMask(GL_TRUE); -} - -void BuilderStatMesh::toolRenderOverlay(class GLFont* font, double* proj, double* model, int* view) -{ - GLdouble x, y, z; - - // Draw start and end point labels - if (m_sposSet && gluProject((GLdouble)m_spos[0], (GLdouble)m_spos[1], (GLdouble)m_spos[2], - model, proj, view, &x, &y, &z)) - { - const float len = font->getTextLength("Start"); - font->drawText((float)x - len/2, (float)y-font->getLineHeight(), "Start", GLFont::RGBA(0,0,0,220)); - } - if (m_eposSet && gluProject((GLdouble)m_epos[0], (GLdouble)m_epos[1], (GLdouble)m_epos[2], - model, proj, view, &x, &y, &z)) - { - const float len = font->getTextLength("End"); - font->drawText((float)x-len/2, (float)y-font->getLineHeight(), "End", GLFont::RGBA(0,0,0,220)); - } -} - -void BuilderStatMesh::drawAgent(const float* pos, float r, float h, float c, const float* col) -{ - glDepthMask(GL_FALSE); - - // Agent dimensions. - glLineWidth(2.0f); - rcDebugDrawCylinderWire(pos[0]-r, pos[1]+0.02f, pos[2]-r, pos[0]+r, pos[1]+h, pos[2]+r, col); - glLineWidth(1.0f); - - glColor4ub(0,0,0,196); - glBegin(GL_LINES); - glVertex3f(pos[0], pos[1]-c, pos[2]); - glVertex3f(pos[0], pos[1]+c, pos[2]); - glVertex3f(pos[0]-r/2, pos[1]+0.02f, pos[2]); - glVertex3f(pos[0]+r/2, pos[1]+0.02f, pos[2]); - glVertex3f(pos[0], pos[1]+0.02f, pos[2]-r/2); - glVertex3f(pos[0], pos[1]+0.02f, pos[2]+r/2); - glEnd(); - - glDepthMask(GL_TRUE); -} diff --git a/RecastDemo/Source/BuilderStatMeshSimple.cpp b/RecastDemo/Source/BuilderStatMeshSimple.cpp deleted file mode 100644 index a221fdbf..00000000 --- a/RecastDemo/Source/BuilderStatMeshSimple.cpp +++ /dev/null @@ -1,508 +0,0 @@ -#define _USE_MATH_DEFINES -#include -#include -#include -#include "SDL.h" -#include "SDL_Opengl.h" -#include "imgui.h" -#include "glfont.h" -#include "Builder.h" -#include "BuilderStatMeshSimple.h" -#include "Recast.h" -#include "RecastTimer.h" -#include "RecastDebugDraw.h" -#include "DetourStatNavMesh.h" -#include "DetourStatNavMeshBuilder.h" -#include "DetourDebugDraw.h" - -#ifdef WIN32 -# define snprintf _snprintf -#endif - -BuilderStatMeshSimple::BuilderStatMeshSimple() : - m_keepInterResults(false), - m_triflags(0), - m_solid(0), - m_chf(0), - m_cset(0), - m_polyMesh(0), - m_drawMode(DRAWMODE_NAVMESH) -{ -} - -BuilderStatMeshSimple::~BuilderStatMeshSimple() -{ - cleanup(); -} - -void BuilderStatMeshSimple::cleanup() -{ - delete [] m_triflags; - m_triflags = 0; - delete m_solid; - m_solid = 0; - delete m_chf; - m_chf = 0; - delete m_cset; - m_cset = 0; - delete m_polyMesh; - m_polyMesh = 0; - toolCleanup(); -} - -void BuilderStatMeshSimple::handleSettings() -{ - Builder::handleCommonSettings(); - - if (imguiCheck(GENID, "Keep Itermediate Results", m_keepInterResults)) - m_keepInterResults = !m_keepInterResults; - - imguiSeparator(); -} - -void BuilderStatMeshSimple::handleDebugMode() -{ - // Check which modes are valid. - bool valid[MAX_DRAWMODE]; - for (int i = 0; i < MAX_DRAWMODE; ++i) - valid[i] = false; - - if (m_verts && m_tris) - { - valid[DRAWMODE_NAVMESH] = m_navMesh != 0; - valid[DRAWMODE_NAVMESH_TRANS] = m_navMesh != 0; - valid[DRAWMODE_NAVMESH_BVTREE] = m_navMesh != 0; - valid[DRAWMODE_NAVMESH_INVIS] = m_navMesh != 0; - valid[DRAWMODE_MESH] = true; - valid[DRAWMODE_VOXELS] = m_solid != 0; - valid[DRAWMODE_VOXELS_WALKABLE] = m_solid != 0; - valid[DRAWMODE_COMPACT] = m_chf != 0; - valid[DRAWMODE_COMPACT_DISTANCE] = m_chf != 0; - valid[DRAWMODE_COMPACT_REGIONS] = m_chf != 0; - valid[DRAWMODE_REGION_CONNECTIONS] = m_cset != 0; - valid[DRAWMODE_RAW_CONTOURS] = m_cset != 0; - valid[DRAWMODE_BOTH_CONTOURS] = m_cset != 0; - valid[DRAWMODE_CONTOURS] = m_cset != 0; - valid[DRAWMODE_POLYMESH] = m_polyMesh != 0; - } - - if (!valid[m_drawMode]) - m_drawMode = DRAWMODE_MESH; - - int unavail = 0; - for (int i = 0; i < MAX_DRAWMODE; ++i) - if (!valid[i]) unavail++; - - if (unavail == MAX_DRAWMODE) - return; - - imguiLabel(GENID, "Draw"); - if (valid[DRAWMODE_MESH] && imguiCheck(GENID, "Input Mesh", m_drawMode == DRAWMODE_MESH)) - m_drawMode = DRAWMODE_MESH; - if (valid[DRAWMODE_NAVMESH] && imguiCheck(GENID, "Navmesh", m_drawMode == DRAWMODE_NAVMESH)) - m_drawMode = DRAWMODE_NAVMESH; - if (valid[DRAWMODE_NAVMESH_INVIS] && imguiCheck(GENID, "Navmesh Invis", m_drawMode == DRAWMODE_NAVMESH_INVIS)) - m_drawMode = DRAWMODE_NAVMESH_INVIS; - if (valid[DRAWMODE_NAVMESH_TRANS] && imguiCheck(GENID, "Navmesh Trans", m_drawMode == DRAWMODE_NAVMESH_TRANS)) - m_drawMode = DRAWMODE_NAVMESH_TRANS; - if (valid[DRAWMODE_NAVMESH_BVTREE] && imguiCheck(GENID, "Navmesh BVTree", m_drawMode == DRAWMODE_NAVMESH_BVTREE)) - m_drawMode = DRAWMODE_NAVMESH_BVTREE; - if (valid[DRAWMODE_VOXELS] && imguiCheck(GENID, "Voxels", m_drawMode == DRAWMODE_VOXELS)) - m_drawMode = DRAWMODE_VOXELS; - if (valid[DRAWMODE_VOXELS_WALKABLE] && imguiCheck(GENID, "Walkable Voxels", m_drawMode == DRAWMODE_VOXELS_WALKABLE)) - m_drawMode = DRAWMODE_VOXELS_WALKABLE; - if (valid[DRAWMODE_COMPACT] && imguiCheck(GENID, "Compact", m_drawMode == DRAWMODE_COMPACT)) - m_drawMode = DRAWMODE_COMPACT; - if (valid[DRAWMODE_COMPACT_DISTANCE] && imguiCheck(GENID, "Compact Distance", m_drawMode == DRAWMODE_COMPACT_DISTANCE)) - m_drawMode = DRAWMODE_COMPACT_DISTANCE; - if (valid[DRAWMODE_COMPACT_REGIONS] && imguiCheck(GENID, "Compact Regions", m_drawMode == DRAWMODE_COMPACT_REGIONS)) - m_drawMode = DRAWMODE_COMPACT_REGIONS; - if (valid[DRAWMODE_REGION_CONNECTIONS] && imguiCheck(GENID, "Region Connections", m_drawMode == DRAWMODE_REGION_CONNECTIONS)) - m_drawMode = DRAWMODE_REGION_CONNECTIONS; - if (valid[DRAWMODE_RAW_CONTOURS] && imguiCheck(GENID, "Raw Contours", m_drawMode == DRAWMODE_RAW_CONTOURS)) - m_drawMode = DRAWMODE_RAW_CONTOURS; - if (valid[DRAWMODE_BOTH_CONTOURS] && imguiCheck(GENID, "Both Contours", m_drawMode == DRAWMODE_BOTH_CONTOURS)) - m_drawMode = DRAWMODE_BOTH_CONTOURS; - if (valid[DRAWMODE_CONTOURS] && imguiCheck(GENID, "Contours", m_drawMode == DRAWMODE_CONTOURS)) - m_drawMode = DRAWMODE_CONTOURS; - if (valid[DRAWMODE_POLYMESH] && imguiCheck(GENID, "Poly Mesh", m_drawMode == DRAWMODE_POLYMESH)) - m_drawMode = DRAWMODE_POLYMESH; - - if (unavail) - { - imguiValue(GENID, "Tick 'Keep Itermediate Results'"); - imguiValue(GENID, "to see more debug mode options."); - } -} - -void BuilderStatMeshSimple::handleRender() -{ - if (!m_verts || !m_tris || !m_trinorms) - return; - - float col[4]; - - glEnable(GL_FOG); - glDepthMask(GL_TRUE); - - if (m_drawMode == DRAWMODE_MESH) - { - // Draw mesh - rcDebugDrawMeshSlope(m_verts, m_nverts, m_tris, m_trinorms, m_ntris, m_agentMaxSlope); - } - else if (m_drawMode != DRAWMODE_NAVMESH_TRANS) - { - // Draw mesh - rcDebugDrawMesh(m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0); - } - - glDisable(GL_FOG); - glDepthMask(GL_FALSE); - - // Draw bounds - col[0] = 1; col[1] = 1; col[2] = 1; col[3] = 0.5f; - rcDebugDrawBoxWire(m_bmin[0],m_bmin[1],m_bmin[2], m_bmax[0],m_bmax[1],m_bmax[2], col); - - if (m_navMesh && - (m_drawMode == DRAWMODE_NAVMESH || - m_drawMode == DRAWMODE_NAVMESH_TRANS || - m_drawMode == DRAWMODE_NAVMESH_BVTREE || - m_drawMode == DRAWMODE_NAVMESH_INVIS)) - { - int flags = NAVMESH_TOOLS; - if (m_drawMode != DRAWMODE_NAVMESH_INVIS) - flags |= NAVMESH_POLYS; - if (m_drawMode == DRAWMODE_NAVMESH_BVTREE) - flags |= NAVMESH_BVTREE; - toolRender(flags); - } - - glDepthMask(GL_TRUE); - - if (m_chf && m_drawMode == DRAWMODE_COMPACT) - rcDebugDrawCompactHeightfieldSolid(*m_chf); - - if (m_chf && m_drawMode == DRAWMODE_COMPACT_DISTANCE) - rcDebugDrawCompactHeightfieldDistance(*m_chf); - if (m_chf && m_drawMode == DRAWMODE_COMPACT_REGIONS) - rcDebugDrawCompactHeightfieldRegions(*m_chf); - if (m_solid && m_drawMode == DRAWMODE_VOXELS) - { - glEnable(GL_FOG); - rcDebugDrawHeightfieldSolid(*m_solid); - glDisable(GL_FOG); - } - if (m_solid && m_drawMode == DRAWMODE_VOXELS_WALKABLE) - { - glEnable(GL_FOG); - rcDebugDrawHeightfieldWalkable(*m_solid); - glDisable(GL_FOG); - } - if (m_cset && m_drawMode == DRAWMODE_RAW_CONTOURS) - { - glDepthMask(GL_FALSE); - rcDebugDrawRawContours(*m_cset, m_cfg.bmin, m_cfg.cs, m_cfg.ch); - glDepthMask(GL_TRUE); - } - if (m_cset && m_drawMode == DRAWMODE_BOTH_CONTOURS) - { - glDepthMask(GL_FALSE); - rcDebugDrawRawContours(*m_cset, m_cfg.bmin, m_cfg.cs, m_cfg.ch, 0.5f); - rcDebugDrawContours(*m_cset, m_cfg.bmin, m_cfg.cs, m_cfg.ch); - glDepthMask(GL_TRUE); - } - if (m_cset && m_drawMode == DRAWMODE_CONTOURS) - { - glDepthMask(GL_FALSE); - rcDebugDrawContours(*m_cset, m_cfg.bmin, m_cfg.cs, m_cfg.ch); - glDepthMask(GL_TRUE); - } - if (m_chf && m_cset && m_drawMode == DRAWMODE_REGION_CONNECTIONS) - { - rcDebugDrawCompactHeightfieldRegions(*m_chf); - - glDepthMask(GL_FALSE); - rcDebugDrawRegionConnections(*m_cset, m_cfg.bmin, m_cfg.cs, m_cfg.ch); - glDepthMask(GL_TRUE); - } - if (m_polyMesh && m_drawMode == DRAWMODE_POLYMESH) - { - glDepthMask(GL_FALSE); - rcDebugDrawPolyMesh(*m_polyMesh); - glDepthMask(GL_TRUE); - } - - static const float startCol[4] = { 0.5f, 0.1f, 0.0f, 0.75f }; - static const float endCol[4] = { 0.2f, 0.4f, 0.0f, 0.75f }; - if (m_sposSet) - drawAgent(m_spos, m_agentRadius, m_agentHeight, m_agentMaxClimb, startCol); - if (m_eposSet) - drawAgent(m_epos, m_agentRadius, m_agentHeight, m_agentMaxClimb, endCol); - -} - -void BuilderStatMeshSimple::handleRenderOverlay(class GLFont* font, double* proj, double* model, int* view) -{ - toolRenderOverlay(font, proj, model, view); -} - -void BuilderStatMeshSimple::handleMeshChanged(const float* verts, int nverts, - const int* tris, const float* trinorms, int ntris, - const float* bmin, const float* bmax) -{ - Builder::handleMeshChanged(verts, nverts, tris, trinorms, ntris, bmin, bmax); - toolCleanup(); - toolReset(); -} - -bool BuilderStatMeshSimple::handleBuild() -{ - if (!m_verts || ! m_tris) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Input mesh is not specified."); - return false; - } - - cleanup(); - toolCleanup(); - - // Init build configuration from GUI - memset(&m_cfg, 0, sizeof(m_cfg)); - m_cfg.cs = m_cellSize; - m_cfg.ch = m_cellHeight; - m_cfg.walkableSlopeAngle = m_agentMaxSlope; - m_cfg.walkableHeight = (int)ceilf(m_agentHeight / m_cfg.ch); - m_cfg.walkableClimb = (int)ceilf(m_agentMaxClimb / m_cfg.ch); - m_cfg.walkableRadius = (int)ceilf(m_agentRadius / m_cfg.cs); - m_cfg.maxEdgeLen = (int)(m_edgeMaxLen / m_cellSize); - m_cfg.maxSimplificationError = m_edgeMaxError; - m_cfg.minRegionSize = (int)rcSqr(m_regionMinSize); - m_cfg.mergeRegionSize = (int)rcSqr(m_regionMergeSize); - m_cfg.maxVertsPerPoly = (int)m_vertsPerPoly; - - if (m_cfg.maxVertsPerPoly == DT_VERTS_PER_POLYGON) - m_drawMode = DRAWMODE_NAVMESH; - else - m_drawMode = DRAWMODE_POLYMESH; - - // Set the area where the navigation will be build. - // Here the bounds of the input mesh are used, but the - // area could be specified by an user defined box, etc. - vcopy(m_cfg.bmin, m_bmin); - vcopy(m_cfg.bmax, m_bmax); - rcCalcGridSize(m_cfg.bmin, m_cfg.bmax, m_cfg.cs, &m_cfg.width, &m_cfg.height); - - // Reset build times gathering. - memset(&m_buildTimes, 0, sizeof(m_buildTimes)); - rcSetBuildTimes(&m_buildTimes); - - // Start the build process. - rcTimeVal totStartTime = rcGetPerformanceTimer(); - - if (rcGetLog()) - { - rcGetLog()->log(RC_LOG_PROGRESS, "Building navigation:"); - rcGetLog()->log(RC_LOG_PROGRESS, " - %d x %d cells", m_cfg.width, m_cfg.height); - rcGetLog()->log(RC_LOG_PROGRESS, " - %.1fK verts, %.1fK tris", m_nverts/1000.0f, m_ntris/1000.0f); - } - - // Allocate voxel heighfield where we rasterize our input data to. - m_solid = new rcHeightfield; - if (!m_solid) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'solid'."); - return false; - } - if (!rcCreateHeightfield(*m_solid, m_cfg.width, m_cfg.height, m_cfg.bmin, m_cfg.bmax, m_cfg.cs, m_cfg.ch)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not create solid heightfield."); - return false; - } - - // Allocate array that can hold triangle flags. - // If you have multiple meshes you need to process, allocate - // and array which can hold the max number of triangles you need to process. - m_triflags = new unsigned char[m_ntris]; - if (!m_triflags) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'triangleFlags' (%d).", m_ntris); - return false; - } - - - // Find triangles which are walkable based on their slope and rasterize them. - // If your input data is multiple meshes, you can transform them here, calculate - // the flags for each of the meshes and rasterize them. - memset(m_triflags, 0, m_ntris*sizeof(unsigned char)); - rcMarkWalkableTriangles(m_cfg.walkableSlopeAngle, m_verts, m_nverts, m_tris, m_ntris, m_triflags); - rcRasterizeTriangles(m_verts, m_nverts, m_tris, m_triflags, m_ntris, *m_solid); - - if (!m_keepInterResults) - { - delete [] m_triflags; - m_triflags = 0; - } - - // Once all geoemtry is rasterized, we do initial pass of filtering to - // remove unwanted overhangs caused by the conservative rasterization - // as well as filter spans where the character cannot possibly stand. - rcFilterLedgeSpans(m_cfg.walkableHeight, m_cfg.walkableClimb, *m_solid); - rcFilterWalkableLowHeightSpans(m_cfg.walkableHeight, *m_solid); - - // Compact the heightfield so that it is faster to handle from now on. - // This will result more cache coherent data as well as the neighbours - // between walkable cells will be calculated. - m_chf = new rcCompactHeightfield; - if (!m_chf) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'chf'."); - return false; - } - if (!rcBuildCompactHeightfield(m_cfg.walkableHeight, m_cfg.walkableClimb, RC_WALKABLE, *m_solid, *m_chf)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not build compact data."); - return false; - } - - if (!m_keepInterResults) - { - delete m_solid; - m_solid = 0; - } - - // Prepare for region partitioning, by calculating distance field along the walkable surface. - if (!rcBuildDistanceField(*m_chf)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not build distance field."); - return false; - } - - // Partition the walkable surface into simple regions without holes. - if (!rcBuildRegions(*m_chf, m_cfg.walkableRadius, m_cfg.borderSize, m_cfg.minRegionSize, m_cfg.mergeRegionSize)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not build regions."); - } - - // Create contours. - m_cset = new rcContourSet; - if (!m_cset) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'cset'."); - return false; - } - if (!rcBuildContours(*m_chf, m_cfg.maxSimplificationError, m_cfg.maxEdgeLen, *m_cset)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not create contours."); - return false; - } - - if (!m_keepInterResults) - { - delete m_chf; - m_chf = 0; - } - - // Build polygon navmesh from the contours. - m_polyMesh = new rcPolyMesh; - if (!m_polyMesh) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'polyMesh'."); - return false; - } - if (!rcBuildPolyMesh(*m_cset, m_cfg.bmin, m_cfg.bmax, m_cfg.cs, m_cfg.ch, m_cfg.maxVertsPerPoly, *m_polyMesh)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not triangulate contours."); - return false; - } - - if (!m_keepInterResults) - { - delete m_cset; - m_cset = 0; - } - - if (m_cfg.maxVertsPerPoly == DT_VERTS_PER_POLYGON) - { - unsigned char* navData = 0; - int navDataSize = 0; - if (!dtCreateNavMeshData(m_polyMesh->verts, m_polyMesh->nverts, - m_polyMesh->polys, m_polyMesh->npolys, m_polyMesh->nvp, - m_cfg.bmin, m_cfg.bmax, m_cfg.cs, m_cfg.ch, &navData, &navDataSize)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "Could not build Detour navmesh."); - return false; - } - - m_navMesh = new dtStatNavMesh; - if (!m_navMesh) - { - delete [] navData; - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "Could not create Detour navmesh"); - return false; - } - - if (!m_navMesh->init(navData, navDataSize, true)) - { - delete [] navData; - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "Could not init Detour navmesh"); - return false; - } - } - - rcTimeVal totEndTime = rcGetPerformanceTimer(); - - // Show performance stats. - if (rcGetLog()) - { - const float pc = 100.0f / rcGetDeltaTimeUsec(totStartTime, totEndTime); - - rcGetLog()->log(RC_LOG_PROGRESS, "Rasterize: %.1fms (%.1f%%)", m_buildTimes.rasterizeTriangles/1000.0f, m_buildTimes.rasterizeTriangles*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Compact: %.1fms (%.1f%%)", m_buildTimes.buildCompact/1000.0f, m_buildTimes.buildCompact*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Filter Border: %.1fms (%.1f%%)", m_buildTimes.filterBorder/1000.0f, m_buildTimes.filterBorder*pc); - rcGetLog()->log(RC_LOG_PROGRESS, "Filter Walkable: %.1fms (%.1f%%)", m_buildTimes.filterWalkable/1000.0f, m_buildTimes.filterWalkable*pc); - rcGetLog()->log(RC_LOG_PROGRESS, "Filter Reachable: %.1fms (%.1f%%)", m_buildTimes.filterMarkReachable/1000.0f, m_buildTimes.filterMarkReachable*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Distancefield: %.1fms (%.1f%%)", m_buildTimes.buildDistanceField/1000.0f, m_buildTimes.buildDistanceField*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - distance: %.1fms (%.1f%%)", m_buildTimes.buildDistanceFieldDist/1000.0f, m_buildTimes.buildDistanceFieldDist*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - blur: %.1fms (%.1f%%)", m_buildTimes.buildDistanceFieldBlur/1000.0f, m_buildTimes.buildDistanceFieldBlur*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Regions: %.1fms (%.1f%%)", m_buildTimes.buildRegions/1000.0f, m_buildTimes.buildRegions*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - watershed: %.1fms (%.1f%%)", m_buildTimes.buildRegionsReg/1000.0f, m_buildTimes.buildRegionsReg*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - expand: %.1fms (%.1f%%)", m_buildTimes.buildRegionsExp/1000.0f, m_buildTimes.buildRegionsExp*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - find catchment basins: %.1fms (%.1f%%)", m_buildTimes.buildRegionsFlood/1000.0f, m_buildTimes.buildRegionsFlood*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - filter: %.1fms (%.1f%%)", m_buildTimes.buildRegionsFilter/1000.0f, m_buildTimes.buildRegionsFilter*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Contours: %.1fms (%.1f%%)", m_buildTimes.buildContours/1000.0f, m_buildTimes.buildContours*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - trace: %.1fms (%.1f%%)", m_buildTimes.buildContoursTrace/1000.0f, m_buildTimes.buildContoursTrace*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - simplify: %.1fms (%.1f%%)", m_buildTimes.buildContoursSimplify/1000.0f, m_buildTimes.buildContoursSimplify*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Fixup contours: %.1fms (%.1f%%)", m_buildTimes.fixupContours/1000.0f, m_buildTimes.fixupContours*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Polymesh: %.1fms (%.1f%%)", m_buildTimes.buildPolymesh/1000.0f, m_buildTimes.buildPolymesh*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Polymesh: Verts:%d Polys:%d", m_polyMesh->nverts, m_polyMesh->npolys); - - rcGetLog()->log(RC_LOG_PROGRESS, "TOTAL: %.1fms", rcGetDeltaTimeUsec(totStartTime, totEndTime)/1000.0f); - } - - toolRecalc(); - - return true; -} diff --git a/RecastDemo/Source/BuilderStatMeshTiled.cpp b/RecastDemo/Source/BuilderStatMeshTiled.cpp deleted file mode 100644 index 8dec8309..00000000 --- a/RecastDemo/Source/BuilderStatMeshTiled.cpp +++ /dev/null @@ -1,983 +0,0 @@ -#define _USE_MATH_DEFINES -#include -#include -#include -#include "SDL.h" -#include "SDL_Opengl.h" -#include "imgui.h" -#include "glfont.h" -#include "Builder.h" -#include "BuilderStatMeshTiled.h" -#include "Recast.h" -#include "RecastTimer.h" -#include "RecastDebugDraw.h" -#include "DetourStatNavMesh.h" -#include "DetourStatNavMeshBuilder.h" -#include "DetourDebugDraw.h" - -#ifdef WIN32 -# define snprintf _snprintf -#endif - -BuilderStatMeshTiled::BuilderStatMeshTiled() : - m_keepInterResults(false), - m_measurePerTileTimings(false), - m_tileSize(64), - m_chunkyMesh(0), - m_tileSet(0), - m_polyMesh(0), - m_drawMode(DRAWMODE_NAVMESH), - m_statTimePerTileSamples(0), - m_statPolysPerTileSamples(0) -{ -} - -BuilderStatMeshTiled::~BuilderStatMeshTiled() -{ - cleanup(); -} - -void BuilderStatMeshTiled::cleanup() -{ - delete m_chunkyMesh; - m_chunkyMesh = 0; - delete m_tileSet; - m_tileSet = 0; - delete m_polyMesh; - m_polyMesh = 0; - toolCleanup(); - m_statTimePerTileSamples = 0; - m_statPolysPerTileSamples = 0; -} - -void BuilderStatMeshTiled::handleSettings() -{ - Builder::handleCommonSettings(); - - imguiLabel(GENID, "Tiling"); - imguiSlider(GENID, "TileSize", &m_tileSize, 16.0f, 1024.0f, 16.0f); - - char text[64]; - int gw = 0, gh = 0; - rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh); - const int ts = (int)m_tileSize; - const int tw = (gw + ts-1) / ts; - const int th = (gh + ts-1) / ts; - snprintf(text, 64, "Tiles %d x %d", tw, th); - imguiValue(GENID, text); - - imguiSeparator(); - if (imguiCheck(GENID, "Keep Itermediate Results", m_keepInterResults)) - m_keepInterResults = !m_keepInterResults; - if (imguiCheck(GENID, "Measure Per Tile Timings", m_measurePerTileTimings)) - m_measurePerTileTimings = !m_measurePerTileTimings; - - imguiSeparator(); -} - -void BuilderStatMeshTiled::handleDebugMode() -{ - // Check which modes are valid. - bool valid[MAX_DRAWMODE]; - for (int i = 0; i < MAX_DRAWMODE; ++i) - valid[i] = false; - - bool hasChf = false; - bool hasSolid = false; - bool hasCset = false; - if (m_tileSet) - { - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].solid) hasSolid = true; - if (m_tileSet->tiles[i].chf) hasChf = true; - if (m_tileSet->tiles[i].cset) hasCset = true; - } - } - - if (m_verts && m_tris) - { - valid[DRAWMODE_NAVMESH] = m_navMesh != 0; - valid[DRAWMODE_NAVMESH_TRANS] = m_navMesh != 0; - valid[DRAWMODE_NAVMESH_BVTREE] = m_navMesh != 0; - valid[DRAWMODE_NAVMESH_INVIS] = m_navMesh != 0; - valid[DRAWMODE_MESH] = true; - valid[DRAWMODE_VOXELS] = hasSolid; - valid[DRAWMODE_VOXELS_WALKABLE] = hasSolid; - valid[DRAWMODE_COMPACT] = hasChf; - valid[DRAWMODE_COMPACT_DISTANCE] = hasChf; - valid[DRAWMODE_COMPACT_REGIONS] = hasChf; - valid[DRAWMODE_REGION_CONNECTIONS] = hasCset; - valid[DRAWMODE_RAW_CONTOURS] = hasCset; - valid[DRAWMODE_BOTH_CONTOURS] = hasCset; - valid[DRAWMODE_CONTOURS] = hasCset; - valid[DRAWMODE_POLYMESH] = m_polyMesh != 0; - } - - if (!valid[m_drawMode]) - m_drawMode = DRAWMODE_MESH; - - int unavail = 0; - for (int i = 0; i < MAX_DRAWMODE; ++i) - if (!valid[i]) unavail++; - - if (unavail == MAX_DRAWMODE) - return; - - imguiLabel(GENID, "Draw"); - if (valid[DRAWMODE_MESH] && imguiCheck(GENID, "Input Mesh", m_drawMode == DRAWMODE_MESH)) - m_drawMode = DRAWMODE_MESH; - if (valid[DRAWMODE_NAVMESH] && imguiCheck(GENID, "Navmesh", m_drawMode == DRAWMODE_NAVMESH)) - m_drawMode = DRAWMODE_NAVMESH; - if (valid[DRAWMODE_NAVMESH_INVIS] && imguiCheck(GENID, "Navmesh Invis", m_drawMode == DRAWMODE_NAVMESH_INVIS)) - m_drawMode = DRAWMODE_NAVMESH_INVIS; - if (valid[DRAWMODE_NAVMESH_TRANS] && imguiCheck(GENID, "Navmesh Trans", m_drawMode == DRAWMODE_NAVMESH_TRANS)) - m_drawMode = DRAWMODE_NAVMESH_TRANS; - if (valid[DRAWMODE_NAVMESH_BVTREE] && imguiCheck(GENID, "Navmesh BVTree", m_drawMode == DRAWMODE_NAVMESH_BVTREE)) - m_drawMode = DRAWMODE_NAVMESH_BVTREE; - if (valid[DRAWMODE_VOXELS] && imguiCheck(GENID, "Voxels", m_drawMode == DRAWMODE_VOXELS)) - m_drawMode = DRAWMODE_VOXELS; - if (valid[DRAWMODE_VOXELS_WALKABLE] && imguiCheck(GENID, "Walkable Voxels", m_drawMode == DRAWMODE_VOXELS_WALKABLE)) - m_drawMode = DRAWMODE_VOXELS_WALKABLE; - if (valid[DRAWMODE_COMPACT] && imguiCheck(GENID, "Compact", m_drawMode == DRAWMODE_COMPACT)) - m_drawMode = DRAWMODE_COMPACT; - if (valid[DRAWMODE_COMPACT_DISTANCE] && imguiCheck(GENID, "Compact Distance", m_drawMode == DRAWMODE_COMPACT_DISTANCE)) - m_drawMode = DRAWMODE_COMPACT_DISTANCE; - if (valid[DRAWMODE_COMPACT_REGIONS] && imguiCheck(GENID, "Compact Regions", m_drawMode == DRAWMODE_COMPACT_REGIONS)) - m_drawMode = DRAWMODE_COMPACT_REGIONS; - if (valid[DRAWMODE_REGION_CONNECTIONS] && imguiCheck(GENID, "Region Connections", m_drawMode == DRAWMODE_REGION_CONNECTIONS)) - m_drawMode = DRAWMODE_REGION_CONNECTIONS; - if (valid[DRAWMODE_RAW_CONTOURS] && imguiCheck(GENID, "Raw Contours", m_drawMode == DRAWMODE_RAW_CONTOURS)) - m_drawMode = DRAWMODE_RAW_CONTOURS; - if (valid[DRAWMODE_BOTH_CONTOURS] && imguiCheck(GENID, "Both Contours", m_drawMode == DRAWMODE_BOTH_CONTOURS)) - m_drawMode = DRAWMODE_BOTH_CONTOURS; - if (valid[DRAWMODE_CONTOURS] && imguiCheck(GENID, "Contours", m_drawMode == DRAWMODE_CONTOURS)) - m_drawMode = DRAWMODE_CONTOURS; - if (valid[DRAWMODE_POLYMESH] && imguiCheck(GENID, "Poly Mesh", m_drawMode == DRAWMODE_POLYMESH)) - m_drawMode = DRAWMODE_POLYMESH; - - if (unavail) - { - imguiValue(GENID, "Tick 'Keep Itermediate Results'"); - imguiValue(GENID, "to see more debug mode options."); - } -} - -void BuilderStatMeshTiled::handleRender() -{ - if (!m_verts || !m_tris || !m_trinorms) - return; - - float col[4]; - - glEnable(GL_FOG); - glDepthMask(GL_TRUE); - - if (m_drawMode == DRAWMODE_MESH) - { - // Draw mesh - rcDebugDrawMeshSlope(m_verts, m_nverts, m_tris, m_trinorms, m_ntris, m_agentMaxSlope); - } - else if (m_drawMode != DRAWMODE_NAVMESH_TRANS) - { - // Draw mesh - rcDebugDrawMesh(m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0); - } - - glDisable(GL_FOG); - glDepthMask(GL_FALSE); - - // Draw bounds - col[0] = 1; col[1] = 1; col[2] = 1; col[3] = 0.5f; - rcDebugDrawBoxWire(m_bmin[0],m_bmin[1],m_bmin[2], m_bmax[0],m_bmax[1],m_bmax[2], col); - - // Tiling grid. - const int ts = (int)m_tileSize; - int gw = 0, gh = 0; - rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh); - int tw = (gw + ts-1) / ts; - int th = (gh + ts-1) / ts; - const float s = ts*m_cellSize; - glBegin(GL_LINES); - glColor4ub(0,0,0,64); - for (int y = 0; y < th; ++y) - { - for (int x = 0; x < tw; ++x) - { - float fx, fy, fz; - fx = m_bmin[0] + x*s; - fy = m_bmin[1]; - fz = m_bmin[2] + y*s; - - glVertex3f(fx,fy,fz); - glVertex3f(fx+s,fy,fz); - glVertex3f(fx,fy,fz); - glVertex3f(fx,fy,fz+s); - - if (x+1 >= tw) - { - glVertex3f(fx+s,fy,fz); - glVertex3f(fx+s,fy,fz+s); - } - if (y+1 >= th) - { - glVertex3f(fx,fy,fz+s); - glVertex3f(fx+s,fy,fz+s); - } - } - } - glEnd(); - - - if (m_navMesh && - (m_drawMode == DRAWMODE_NAVMESH || - m_drawMode == DRAWMODE_NAVMESH_TRANS || - m_drawMode == DRAWMODE_NAVMESH_BVTREE || - m_drawMode == DRAWMODE_NAVMESH_INVIS)) - { - int flags = NAVMESH_TOOLS; - if (m_drawMode != DRAWMODE_NAVMESH_INVIS) - flags |= NAVMESH_POLYS; - if (m_drawMode == DRAWMODE_NAVMESH_BVTREE) - flags |= NAVMESH_BVTREE; - toolRender(flags); - } - - glDepthMask(GL_TRUE); - - if (m_tileSet) - { - if (m_drawMode == DRAWMODE_COMPACT) - { - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].chf) - rcDebugDrawCompactHeightfieldSolid(*m_tileSet->tiles[i].chf); - } - } - - if (m_drawMode == DRAWMODE_COMPACT_DISTANCE) - { - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].chf) - rcDebugDrawCompactHeightfieldDistance(*m_tileSet->tiles[i].chf); - } - } - if (m_drawMode == DRAWMODE_COMPACT_REGIONS) - { - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].chf) - rcDebugDrawCompactHeightfieldRegions(*m_tileSet->tiles[i].chf); - } - } - - if (m_drawMode == DRAWMODE_VOXELS) - { - glEnable(GL_FOG); - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].solid) - rcDebugDrawHeightfieldSolid(*m_tileSet->tiles[i].solid); - } - glDisable(GL_FOG); - } - if (m_drawMode == DRAWMODE_VOXELS_WALKABLE) - { - glEnable(GL_FOG); - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].solid) - rcDebugDrawHeightfieldWalkable(*m_tileSet->tiles[i].solid); - } - glDisable(GL_FOG); - } - if (m_drawMode == DRAWMODE_RAW_CONTOURS) - { - glDepthMask(GL_FALSE); - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].cset) - rcDebugDrawRawContours(*m_tileSet->tiles[i].cset, m_cfg.bmin, m_cfg.cs, m_cfg.ch); - } - glDepthMask(GL_TRUE); - } - if (m_drawMode == DRAWMODE_BOTH_CONTOURS) - { - glDepthMask(GL_FALSE); - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].cset) - { - rcDebugDrawRawContours(*m_tileSet->tiles[i].cset, m_cfg.bmin, m_cfg.cs, m_cfg.ch, 0.5f); - rcDebugDrawContours(*m_tileSet->tiles[i].cset, m_cfg.bmin, m_cfg.cs, m_cfg.ch); - } - } - glDepthMask(GL_TRUE); - } - if (m_drawMode == DRAWMODE_CONTOURS) - { - glDepthMask(GL_FALSE); - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].cset) - rcDebugDrawContours(*m_tileSet->tiles[i].cset, m_cfg.bmin, m_cfg.cs, m_cfg.ch); - } - glDepthMask(GL_TRUE); - } - if (m_drawMode == DRAWMODE_REGION_CONNECTIONS) - { - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].chf) - rcDebugDrawCompactHeightfieldRegions(*m_tileSet->tiles[i].chf); - } - - glDepthMask(GL_FALSE); - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].cset) - rcDebugDrawRegionConnections(*m_tileSet->tiles[i].cset, m_cfg.bmin, m_cfg.cs, m_cfg.ch); - } - glDepthMask(GL_TRUE); - } - if (m_polyMesh && m_drawMode == DRAWMODE_POLYMESH) - { - glDepthMask(GL_FALSE); - rcDebugDrawPolyMesh(*m_polyMesh); - glDepthMask(GL_TRUE); - } - } - - static const float startCol[4] = { 0.5f, 0.1f, 0.0f, 0.75f }; - static const float endCol[4] = { 0.2f, 0.4f, 0.0f, 0.75f }; - if (m_sposSet) - drawAgent(m_spos, m_agentRadius, m_agentHeight, m_agentMaxClimb, startCol); - if (m_eposSet) - drawAgent(m_epos, m_agentRadius, m_agentHeight, m_agentMaxClimb, endCol); - -} - -static float nicenum(float x, int round) -{ - float expv = floorf(log10f(x)); - float f = x / powf(10.0f, expv); - float nf; - if (round) - { - if (f < 1.5f) nf = 1.0f; - else if (f < 3.0f) nf = 2.0f; - else if (f < 7.0f) nf = 5.0f; - else nf = 10.0f; - } - else - { - if (f <= 1.0f) nf = 1.0f; - else if (f <= 2.0f) nf = 2.0f; - else if (f <= 5.0f) nf = 5.0f; - else nf = 10.0f; - } - return nf*powf(10.0f, expv); -} - -static void drawLabels(int x, int y, int w, int h, - int nticks, float vmin, float vmax, const char* unit, GLFont* font) -{ - char str[8], temp[32]; - - float range = nicenum(vmax-vmin, 0); - float d = nicenum(range/(float)(nticks-1), 1); - float graphmin = floorf(vmin/d)*d; - float graphmax = ceilf(vmax/d)*d; - int nfrac = (int)-floorf(log10f(d)); - if (nfrac < 0) nfrac = 0; - snprintf(str, 6, "%%.%df %%s", nfrac); - - for (float v = graphmin; v < graphmax+d/2; v += d) - { - float lx = x + (v-vmin)/(vmax-vmin)*w; - if (lx < 0 || lx > w) continue; - snprintf(temp, 20, str, v, unit); - font->drawText(lx+2, (float)y+2, temp, GLFont::RGBA(255,255,255)); - glColor4ub(0,0,0,64); - glBegin(GL_LINES); - glVertex2f(lx,(float)y); - glVertex2f(lx,(float)(y+h)); - glEnd(); - } -} - -static void drawGraph(const char* name, int x, int y, int w, int h, float sd, - const int* samples, int n, int nsamples, const char* unit, GLFont* font) -{ - char text[64]; - int first, last, maxval; - first = 0; - last = n-1; - while (first < n && samples[first] == 0) - first++; - while (last >= 0 && samples[last] == 0) - last--; - if (first == last) - return; - maxval = 1; - for (int i = first; i <= last; ++i) - { - if (samples[i] > maxval) - maxval = samples[i]; - } - const float sx = (float)w / (float)(last-first); - const float sy = (float)h / (float)maxval; - - glBegin(GL_QUADS); - glColor4ub(32,32,32,64); - glVertex2i(x,y); - glVertex2i(x+w,y); - glVertex2i(x+w,y+h); - glVertex2i(x,y+h); - glEnd(); - - glColor4ub(255,255,255,64); - glBegin(GL_LINES); - for (int i = 0; i <= 4; ++i) - { - int yy = y+i*h/4; - glVertex2i(x,yy); - glVertex2i(x+w,yy); - } - glEnd(); - - glColor4ub(0,196,255,255); - glBegin(GL_LINE_STRIP); - for (int i = first; i <= last; ++i) - { - float fx = x + (i-first)*sx; - float fy = y + samples[i]*sy; - glVertex2f(fx,fy); - } - glEnd(); - - snprintf(text,64,"%d", maxval); - font->drawText((float)x+w-20+2,(float)y+h-2-font->getLineHeight(),text,GLFont::RGBA(0,0,0)); - - font->drawText((float)x+2,(float)y+h-2-font->getLineHeight(),name,GLFont::RGBA(255,255,255)); - - drawLabels(x, y, w, h, 10, first*sd, last*sd, unit, font); -} - -void BuilderStatMeshTiled::handleRenderOverlay(class GLFont* font, double* proj, double* model, int* view) -{ - toolRenderOverlay(font, proj, model, view); - - if (m_measurePerTileTimings) - { - if (m_statTimePerTileSamples) - drawGraph("Build Time/Tile", 10, 10, 500, 100, 1.0f, m_statTimePerTile, MAX_STAT_BUCKETS, m_statTimePerTileSamples, "ms", font); - - if (m_statPolysPerTileSamples) - drawGraph("Polygons/Tile", 10, 120, 500, 100, 1.0f, m_statPolysPerTile, MAX_STAT_BUCKETS, m_statPolysPerTileSamples, "", font); - - int validTiles = 0; - if (m_tileSet) - { - for (int i = 0; i < m_tileSet->width*m_tileSet->height; ++i) - { - if (m_tileSet->tiles[i].buildTime > 0) - validTiles++; - } - } - char text[64]; - snprintf(text,64,"Tiles %d\n", validTiles); - font->drawText(10, 240, text, GLFont::RGBA(255,255,255)); - } -} - -void BuilderStatMeshTiled::handleMeshChanged(const float* verts, int nverts, - const int* tris, const float* trinorms, int ntris, - const float* bmin, const float* bmax) -{ - Builder::handleMeshChanged(verts, nverts, tris, trinorms, ntris, bmin, bmax); - toolCleanup(); - toolReset(); - m_statTimePerTileSamples = 0; - m_statPolysPerTileSamples = 0; -} - -bool BuilderStatMeshTiled::handleBuild() -{ - if (!m_verts || ! m_tris) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Input mesh is not specified."); - return false; - } - - if (m_measurePerTileTimings) - { - memset(m_statPolysPerTile, 0, sizeof(m_statPolysPerTile)); - memset(m_statTimePerTile, 0, sizeof(m_statTimePerTile)); - m_statPolysPerTileSamples = 0; - m_statTimePerTileSamples = 0; - } - - cleanup(); - toolCleanup(); - toolReset(); - - // Init build configuration from GUI - memset(&m_cfg, 0, sizeof(m_cfg)); - m_cfg.cs = m_cellSize; - m_cfg.ch = m_cellHeight; - m_cfg.walkableSlopeAngle = m_agentMaxSlope; - m_cfg.walkableHeight = (int)ceilf(m_agentHeight / m_cfg.ch); - m_cfg.walkableClimb = (int)ceilf(m_agentMaxClimb / m_cfg.ch); - m_cfg.walkableRadius = (int)ceilf(m_agentRadius / m_cfg.cs); - m_cfg.maxEdgeLen = (int)(m_edgeMaxLen / m_cellSize); - m_cfg.maxSimplificationError = m_edgeMaxError; - m_cfg.minRegionSize = (int)rcSqr(m_regionMinSize); - m_cfg.mergeRegionSize = (int)rcSqr(m_regionMergeSize); - m_cfg.maxVertsPerPoly = (int)m_vertsPerPoly; - m_cfg.tileSize = (int)m_tileSize; - m_cfg.borderSize = m_cfg.walkableRadius*2 + 2; // Reserve enough padding. - - if (m_cfg.maxVertsPerPoly == DT_VERTS_PER_POLYGON) - m_drawMode = DRAWMODE_NAVMESH; - else - m_drawMode = DRAWMODE_POLYMESH; - - // Set the area where the navigation will be build. - // Here the bounds of the input mesh are used, but the - // area could be specified by an user defined box, etc. - vcopy(m_cfg.bmin, m_bmin); - vcopy(m_cfg.bmax, m_bmax); - rcCalcGridSize(m_cfg.bmin, m_cfg.bmax, m_cfg.cs, &m_cfg.width, &m_cfg.height); - - // Reset build times gathering. - memset(&m_buildTimes, 0, sizeof(m_buildTimes)); - rcSetBuildTimes(&m_buildTimes); - - // Start the build process. - rcTimeVal totStartTime = rcGetPerformanceTimer(); - - // Calculate the number of tiles in the output and initialize tiles. - m_tileSet = new TileSet; - if (!m_tileSet) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'tileSet'."); - return false; - } - vcopy(m_tileSet->bmin, m_cfg.bmin); - vcopy(m_tileSet->bmax, m_cfg.bmax); - m_tileSet->cs = m_cfg.cs; - m_tileSet->ch = m_cfg.ch; - m_tileSet->width = (m_cfg.width + m_cfg.tileSize-1) / m_cfg.tileSize; - m_tileSet->height = (m_cfg.height + m_cfg.tileSize-1) / m_cfg.tileSize; - m_tileSet->tiles = new Tile[m_tileSet->height * m_tileSet->width]; - if (!m_tileSet->tiles) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'tileSet->tiles' (%d).", m_tileSet->height * m_tileSet->width); - return false; - } - - // Build chunky trimesh for local polygon queries. - rcTimeVal chunkyStartTime = rcGetPerformanceTimer(); - m_chunkyMesh = new rcChunkyTriMesh; - if (!m_chunkyMesh) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'm_chunkyMesh'."); - return false; - } - if (!rcCreateChunkyTriMesh(m_verts, m_tris, m_ntris, 256, m_chunkyMesh)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not build chunky mesh."); - return false; - } - rcTimeVal chunkyEndTime = rcGetPerformanceTimer(); - - if (rcGetLog()) - { - rcGetLog()->log(RC_LOG_PROGRESS, "Building navigation:"); - rcGetLog()->log(RC_LOG_PROGRESS, " - %d x %d cells", m_cfg.width, m_cfg.height); - rcGetLog()->log(RC_LOG_PROGRESS, " - %d x %d tiles", m_tileSet->width, m_tileSet->height); - rcGetLog()->log(RC_LOG_PROGRESS, " - %.1f verts, %.1f tris", m_nverts/1000.0f, m_ntris/1000.0f); - } - - // Initialize per tile config. - rcConfig tileCfg; - memcpy(&tileCfg, &m_cfg, sizeof(rcConfig)); - tileCfg.width = m_cfg.tileSize + m_cfg.borderSize*2; - tileCfg.height = m_cfg.tileSize + m_cfg.borderSize*2; - - // Allocate array that can hold triangle flags for all geom chunks. - unsigned char* triangleFlags = new unsigned char[m_chunkyMesh->maxTrisPerChunk]; - if (!triangleFlags) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'triangleFlags' (%d).", m_chunkyMesh->maxTrisPerChunk); - return false; - } - - rcHeightfield* solid = 0; - rcCompactHeightfield* chf = 0; - rcContourSet* cset = 0; - - for (int y = 0; y < m_tileSet->height; ++y) - { - for (int x = 0; x < m_tileSet->width; ++x) - { - rcTimeVal startTime = rcGetPerformanceTimer(); - - Tile& tile = m_tileSet->tiles[x + y*m_tileSet->width]; - - // Calculate the per tile bounding box. - tileCfg.bmin[0] = m_cfg.bmin[0] + (x*m_cfg.tileSize - m_cfg.borderSize)*m_cfg.cs; - tileCfg.bmin[2] = m_cfg.bmin[2] + (y*m_cfg.tileSize - m_cfg.borderSize)*m_cfg.cs; - tileCfg.bmax[0] = m_cfg.bmin[0] + ((x+1)*m_cfg.tileSize + m_cfg.borderSize)*m_cfg.cs; - tileCfg.bmax[2] = m_cfg.bmin[2] + ((y+1)*m_cfg.tileSize + m_cfg.borderSize)*m_cfg.cs; - - delete solid; - delete chf; - solid = 0; - chf = 0; - - float tbmin[2], tbmax[2]; - tbmin[0] = tileCfg.bmin[0]; - tbmin[1] = tileCfg.bmin[2]; - tbmax[0] = tileCfg.bmax[0]; - tbmax[1] = tileCfg.bmax[2]; - int cid[256];// TODO: Make grow when returning too many items. - const int ncid = rcGetChunksInRect(m_chunkyMesh, tbmin, tbmax, cid, 256); - if (!ncid) - continue; - - solid = new rcHeightfield; - if (!solid) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Out of memory 'solid'.", x, y); - continue; - } - if (!rcCreateHeightfield(*solid, tileCfg.width, tileCfg.height, tileCfg.bmin, tileCfg.bmax, tileCfg.cs, tileCfg.ch)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not create solid heightfield.", x, y); - continue; - } - - for (int i = 0; i < ncid; ++i) - { - const rcChunkyTriMeshNode& node = m_chunkyMesh->nodes[cid[i]]; - const int* tris = &m_chunkyMesh->tris[node.i*3]; - const int ntris = node.n; - - memset(triangleFlags, 0, ntris*sizeof(unsigned char)); - rcMarkWalkableTriangles(tileCfg.walkableSlopeAngle, - m_verts, m_nverts, tris, ntris, triangleFlags); - - rcRasterizeTriangles(m_verts, m_nverts, tris, triangleFlags, ntris, *solid); - } - - rcFilterLedgeSpans(tileCfg.walkableHeight, tileCfg.walkableClimb, *solid); - - rcFilterWalkableLowHeightSpans(tileCfg.walkableHeight, *solid); - - chf = new rcCompactHeightfield; - if (!chf) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Out of memory 'chf'.", x, y); - continue; - } - if (!rcBuildCompactHeightfield(tileCfg.walkableHeight, tileCfg.walkableClimb, - RC_WALKABLE, *solid, *chf)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build compact data.", x, y); - continue; - } - - if (!rcBuildDistanceField(*chf)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build distance fields.", x, y); - continue; - } - - if (!rcBuildRegions(*chf, tileCfg.walkableRadius, tileCfg.borderSize, tileCfg.minRegionSize, tileCfg.mergeRegionSize)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build regions.", x, y); - continue; - } - - cset = new rcContourSet; - if (!cset) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Out of memory 'cset'.", x, y); - continue; - } - if (!rcBuildContours(*chf, tileCfg.maxSimplificationError, tileCfg.maxEdgeLen, *cset)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not create contours.", x, y); - continue; - } - - if (m_keepInterResults) - { - tile.solid = solid; - solid = 0; - tile.chf = chf; - chf = 0; - } - - if (!cset->nconts) - { - delete cset; - cset = 0; - continue; - } - - tile.cset = cset; - // Offset the vertices in the cset. - rcTranslateContours(tile.cset, x*tileCfg.tileSize - tileCfg.borderSize, 0, y*tileCfg.tileSize - tileCfg.borderSize); - - rcTimeVal endTime = rcGetPerformanceTimer(); - tile.buildTime += rcGetDeltaTimeUsec(startTime, endTime); - } - } - - delete [] triangleFlags; - delete solid; - delete chf; - - - // Some extra code to measure some per tile statistics, - // such as build time and how many polygons there are per tile. - if (m_measurePerTileTimings) - { - for (int y = 0; y < m_tileSet->height; ++y) - { - for (int x = 0; x < m_tileSet->width; ++x) - { - Tile& tile = m_tileSet->tiles[x + y*m_tileSet->width]; - - if (!tile.cset) - continue; - - rcTimeVal startTime = rcGetPerformanceTimer(); - rcPolyMesh* polyMesh = new rcPolyMesh; - if (!polyMesh) - continue; - if (rcBuildPolyMesh(*tile.cset, m_cfg.bmin, m_cfg.bmax, - m_cfg.cs, m_cfg.ch, m_cfg.maxVertsPerPoly, *polyMesh)) - { - int bucket = polyMesh->npolys; - if (bucket < 0) bucket = 0; - if (bucket >= MAX_STAT_BUCKETS) bucket = MAX_STAT_BUCKETS-1; - m_statPolysPerTile[bucket]++; - m_statPolysPerTileSamples++; - } - delete polyMesh; - - rcTimeVal endTime = rcGetPerformanceTimer(); - int time = tile.buildTime += rcGetDeltaTimeUsec(startTime, endTime); - - int bucket = (time+500)/1000; - if (bucket < 0) bucket = 0; - if (bucket >= MAX_STAT_BUCKETS) bucket = MAX_STAT_BUCKETS-1; - m_statTimePerTile[bucket]++; - m_statTimePerTileSamples++; - } - } - } - - // Make sure that the vertices along the tile edges match, - // so that they can be later properly stitched together. - for (int y = 0; y < m_tileSet->height; ++y) - { - for (int x = 0; x < m_tileSet->width; ++x) - { - rcTimeVal startTime = rcGetPerformanceTimer(); - if ((x+1) < m_tileSet->width) - { - if (!rcFixupAdjacentContours(m_tileSet->tiles[x + y*m_tileSet->width].cset, - m_tileSet->tiles[x+1 + y*m_tileSet->width].cset, - m_cfg.walkableClimb, (x+1)*m_cfg.tileSize, -1)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not fixup x+1.", x, y); - return false; - } - } - - if ((y+1) < m_tileSet->height) - { - if (!rcFixupAdjacentContours(m_tileSet->tiles[x + y*m_tileSet->width].cset, - m_tileSet->tiles[x + (y+1)*m_tileSet->width].cset, - m_cfg.walkableClimb, -1, (y+1)*m_cfg.tileSize)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not fixup y+1.", x, y); - return false; - } - } - rcTimeVal endTime = rcGetPerformanceTimer(); - m_tileSet->tiles[x+y*m_tileSet->width].buildTime += rcGetDeltaTimeUsec(startTime, endTime); - } - } - - - // Combine contours. - rcContourSet combSet; - - combSet.nconts = 0; - for (int y = 0; y < m_tileSet->height; ++y) - { - for (int x = 0; x < m_tileSet->width; ++x) - { - Tile& tile = m_tileSet->tiles[x + y*m_tileSet->width]; - if (!tile.cset) continue; - combSet.nconts += tile.cset->nconts; - } - } - combSet.conts = new rcContour[combSet.nconts]; - if (!combSet.conts) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'combSet.conts' (%d).", combSet.nconts); - return false; - } - int n = 0; - for (int y = 0; y < m_tileSet->height; ++y) - { - for (int x = 0; x < m_tileSet->width; ++x) - { - Tile& tile = m_tileSet->tiles[x + y*m_tileSet->width]; - if (!tile.cset) continue; - for (int i = 0; i < tile.cset->nconts; ++i) - { - combSet.conts[n].verts = tile.cset->conts[i].verts; - combSet.conts[n].nverts = tile.cset->conts[i].nverts; - combSet.conts[n].reg = tile.cset->conts[i].reg; - n++; - } - } - } - - m_polyMesh = new rcPolyMesh; - if (!m_polyMesh) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'polyMesh'."); - return false; - } - - bool polyRes = rcBuildPolyMesh(combSet, m_cfg.bmin, m_cfg.bmax, m_cfg.cs, m_cfg.ch, m_cfg.maxVertsPerPoly, *m_polyMesh); - - // Remove vertex binding to avoid double deletion. - for (int i = 0; i < combSet.nconts; ++i) - { - combSet.conts[i].verts = 0; - combSet.conts[i].nverts = 0; - } - - if (!polyRes) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not triangulate contours."); - return false; - } - - if (!m_keepInterResults) - { - for (int y = 0; y < m_tileSet->height; ++y) - { - for (int x = 0; x < m_tileSet->width; ++x) - { - Tile& tile = m_tileSet->tiles[x + y*m_tileSet->width]; - delete tile.cset; - tile.cset = 0; - } - } - } - - if (m_cfg.maxVertsPerPoly == DT_VERTS_PER_POLYGON) - { - unsigned char* navData = 0; - int navDataSize = 0; - if (!dtCreateNavMeshData(m_polyMesh->verts, m_polyMesh->nverts, - m_polyMesh->polys, m_polyMesh->npolys, m_polyMesh->nvp, - m_cfg.bmin, m_cfg.bmax, m_cfg.cs, m_cfg.ch, &navData, &navDataSize)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "Could not build Detour navmesh."); - return false; - } - - m_navMesh = new dtStatNavMesh; - if (!m_navMesh) - { - delete [] navData; - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "Could not create Detour navmesh"); - return false; - } - - if (!m_navMesh->init(navData, navDataSize, true)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "Could not init Detour navmesh"); - return false; - } - } - - rcTimeVal totEndTime = rcGetPerformanceTimer(); - - if (rcGetLog()) - { - const float pc = 100.0f / rcGetDeltaTimeUsec(totStartTime, totEndTime); - - rcGetLog()->log(RC_LOG_PROGRESS, "Chunky Mesh: %.1fms (%.1f%%)", rcGetDeltaTimeUsec(chunkyStartTime, chunkyEndTime)/1000.0f, rcGetDeltaTimeUsec(chunkyStartTime, chunkyEndTime)*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Rasterize: %.1fms (%.1f%%)", m_buildTimes.rasterizeTriangles/1000.0f, m_buildTimes.rasterizeTriangles*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Compact: %.1fms (%.1f%%)", m_buildTimes.buildCompact/1000.0f, m_buildTimes.buildCompact*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Filter Border: %.1fms (%.1f%%)", m_buildTimes.filterBorder/1000.0f, m_buildTimes.filterBorder*pc); - rcGetLog()->log(RC_LOG_PROGRESS, "Filter Walkable: %.1fms (%.1f%%)", m_buildTimes.filterWalkable/1000.0f, m_buildTimes.filterWalkable*pc); - rcGetLog()->log(RC_LOG_PROGRESS, "Filter Reachable: %.1fms (%.1f%%)", m_buildTimes.filterMarkReachable/1000.0f, m_buildTimes.filterMarkReachable*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Distancefield: %.1fms (%.1f%%)", m_buildTimes.buildDistanceField/1000.0f, m_buildTimes.buildDistanceField*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - distance: %.1fms (%.1f%%)", m_buildTimes.buildDistanceFieldDist/1000.0f, m_buildTimes.buildDistanceFieldDist*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - blur: %.1fms (%.1f%%)", m_buildTimes.buildDistanceFieldBlur/1000.0f, m_buildTimes.buildDistanceFieldBlur*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Regions: %.1fms (%.1f%%)", m_buildTimes.buildRegions/1000.0f, m_buildTimes.buildRegions*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - watershed: %.1fms (%.1f%%)", m_buildTimes.buildRegionsReg/1000.0f, m_buildTimes.buildRegionsReg*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - expand: %.1fms (%.1f%%)", m_buildTimes.buildRegionsExp/1000.0f, m_buildTimes.buildRegionsExp*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - find catchment basins: %.1fms (%.1f%%)", m_buildTimes.buildRegionsFlood/1000.0f, m_buildTimes.buildRegionsFlood*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - filter: %.1fms (%.1f%%)", m_buildTimes.buildRegionsFilter/1000.0f, m_buildTimes.buildRegionsFilter*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Contours: %.1fms (%.1f%%)", m_buildTimes.buildContours/1000.0f, m_buildTimes.buildContours*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - trace: %.1fms (%.1f%%)", m_buildTimes.buildContoursTrace/1000.0f, m_buildTimes.buildContoursTrace*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - simplify: %.1fms (%.1f%%)", m_buildTimes.buildContoursSimplify/1000.0f, m_buildTimes.buildContoursSimplify*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Fixup contours: %.1fms (%.1f%%)", m_buildTimes.fixupContours/1000.0f, m_buildTimes.fixupContours*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Polymesh: %.1fms (%.1f%%)", m_buildTimes.buildPolymesh/1000.0f, m_buildTimes.buildPolymesh*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Polymesh: Verts:%d Polys:%d", m_polyMesh->nverts, m_polyMesh->npolys); - - rcGetLog()->log(RC_LOG_PROGRESS, "TOTAL: %.1fms", rcGetDeltaTimeUsec(totStartTime, totEndTime)/1000.0f); - } - - toolRecalc(); - - return true; -} diff --git a/RecastDemo/Source/BuilderTiledMesh.cpp b/RecastDemo/Source/BuilderTiledMesh.cpp deleted file mode 100644 index f5018c9f..00000000 --- a/RecastDemo/Source/BuilderTiledMesh.cpp +++ /dev/null @@ -1,899 +0,0 @@ -// -// Copyright (c) 2009 Mikko Mononen memon@inside.org -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. -// - -#define _USE_MATH_DEFINES -#include -#include -#include -#include "SDL.h" -#include "SDL_Opengl.h" -#include "imgui.h" -#include "glfont.h" -#include "Builder.h" -#include "BuilderTiledMesh.h" -#include "Recast.h" -#include "RecastTimer.h" -#include "RecastDebugDraw.h" -#include "DetourTiledNavMesh.h" -#include "DetourTiledNavMeshBuilder.h" -#include "DetourDebugDraw.h" - -#ifdef WIN32 -# define snprintf _snprintf -#endif - - -BuilderTiledMesh::BuilderTiledMesh() : - m_tileSize(32), - m_navMesh(0), - m_chunkyMesh(0), - m_keepInterResults(true), - m_tileBuildTime(0), - m_tileMemUsage(0), - m_triflags(0), - m_solid(0), - m_chf(0), - m_cset(0), - m_polyMesh(0), - m_tileTriCount(0), - m_toolMode(TOOLMODE_CREATE_TILES), - m_startRef(0), - m_endRef(0), - m_npolys(0), - m_nstraightPath(0) -{ - resetCommonSettings(); - memset(m_tileBmin, 0, sizeof(m_tileBmin)); - memset(m_tileBmax, 0, sizeof(m_tileBmax)); - m_polyPickExt[0] = 2; - m_polyPickExt[1] = 4; - m_polyPickExt[2] = 2; -} - -BuilderTiledMesh::~BuilderTiledMesh() -{ - cleanup(); - delete m_navMesh; - delete m_chunkyMesh; -} - -void BuilderTiledMesh::cleanup() -{ - delete [] m_triflags; - m_triflags = 0; - delete m_solid; - m_solid = 0; - delete m_chf; - m_chf = 0; - delete m_cset; - m_cset = 0; - delete m_polyMesh; - m_polyMesh = 0; -} - -void BuilderTiledMesh::handleSettings() -{ - Builder::handleCommonSettings(); - - imguiLabel(GENID, "Tiling"); - imguiSlider(GENID, "TileSize", &m_tileSize, 16.0f, 1024.0f, 16.0f); - - char text[64]; - int gw = 0, gh = 0; - rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh); - const int ts = (int)m_tileSize; - const int tw = (gw + ts-1) / ts; - const int th = (gh + ts-1) / ts; - snprintf(text, 64, "Tiles %d x %d", tw, th); - imguiValue(GENID, text); -} - -void BuilderTiledMesh::toolRecalc() -{ - m_startRef = 0; - if (m_sposSet) - m_startRef = m_navMesh->findNearestPoly(m_spos, m_polyPickExt); - - m_endRef = 0; - if (m_eposSet) - m_endRef = m_navMesh->findNearestPoly(m_epos, m_polyPickExt); - -// if (m_eposSet) -// m_npolys = m_navMesh->queryPolygons(m_epos, m_polyPickExt, m_polys, MAX_POLYS); - -/* if (m_startRef && m_endRef) - { - m_npolys = m_navMesh->findPath(m_startRef, m_endRef, m_polys, MAX_POLYS); - if (m_npolys) - m_nstraightPath = m_navMesh->findStraightPath(m_spos, m_epos, m_polys, m_npolys, m_straightPath, MAX_POLYS); - } - else - { - m_npolys = 0; - m_nstraightPath = 0; - } -*/ - - if (m_toolMode == TOOLMODE_PATHFIND) - { - if (m_sposSet && m_eposSet && m_startRef && m_endRef) - { - m_npolys = m_navMesh->findPath(m_startRef, m_endRef, m_polys, MAX_POLYS); - if (m_npolys) - m_nstraightPath = m_navMesh->findStraightPath(m_spos, m_epos, m_polys, m_npolys, m_straightPath, MAX_POLYS); - } - else - { - m_npolys = 0; - m_nstraightPath = 0; - } - } - else if (m_toolMode == TOOLMODE_RAYCAST) - { - m_nstraightPath = 0; - if (m_sposSet && m_eposSet && m_startRef) - { - float t = 0; - m_npolys = 0; - m_nstraightPath = 2; - m_straightPath[0] = m_spos[0]; - m_straightPath[1] = m_spos[1]; - m_straightPath[2] = m_spos[2]; - m_npolys = m_navMesh->raycast(m_startRef, m_spos, m_epos, t, m_polys, MAX_POLYS); - if (m_npolys && t < 1) - { - m_straightPath[3] = m_spos[0] + (m_epos[0] - m_spos[0]) * t; - m_straightPath[4] = m_spos[1] + (m_epos[1] - m_spos[1]) * t; - m_straightPath[5] = m_spos[2] + (m_epos[2] - m_spos[2]) * t; - } - else - { - m_straightPath[3] = m_epos[0]; - m_straightPath[4] = m_epos[1]; - m_straightPath[5] = m_epos[2]; - } - } - } - else if (m_toolMode == TOOLMODE_DISTANCE_TO_WALL) - { - m_distanceToWall = 0; - if (m_sposSet && m_startRef) - m_distanceToWall = m_navMesh->findDistanceToWall(m_startRef, m_spos, 100.0f, m_hitPos, m_hitNormal); - } - else if (m_toolMode == TOOLMODE_FIND_POLYS_AROUND) - { - if (m_sposSet && m_startRef && m_eposSet) - { - const float dx = m_epos[0] - m_spos[0]; - const float dz = m_epos[2] - m_spos[2]; - float dist = sqrtf(dx*dx + dz*dz); - m_npolys = m_navMesh->findPolysAround(m_startRef, m_spos, dist, m_polys, m_parent, 0, 0, MAX_POLYS); - } - } - -} - -void BuilderTiledMesh::handleTools() -{ - if (imguiCheck(GENID, "Create Tiles", m_toolMode == TOOLMODE_CREATE_TILES)) - { - m_toolMode = TOOLMODE_CREATE_TILES; - toolRecalc(); - } - if (imguiCheck(GENID, "Pathfind", m_toolMode == TOOLMODE_PATHFIND)) - { - m_toolMode = TOOLMODE_PATHFIND; - toolRecalc(); - } - if (imguiCheck(GENID, "Distance to Wall", m_toolMode == TOOLMODE_DISTANCE_TO_WALL)) - { - m_toolMode = TOOLMODE_DISTANCE_TO_WALL; - toolRecalc(); - } - if (imguiCheck(GENID, "Raycast", m_toolMode == TOOLMODE_RAYCAST)) - { - m_toolMode = TOOLMODE_RAYCAST; - toolRecalc(); - } - if (imguiCheck(GENID, "Find Polys Around", m_toolMode == TOOLMODE_FIND_POLYS_AROUND)) - { - m_toolMode = TOOLMODE_FIND_POLYS_AROUND; - toolRecalc(); - } -} - -void BuilderTiledMesh::handleDebugMode() -{ -} - -static void getPolyCenter(dtTiledNavMesh* navMesh, dtTilePolyRef ref, float* center) -{ - const dtTilePoly* p = navMesh->getPolyByRef(ref); - if (!p) return; - const float* verts = navMesh->getPolyVertsByRef(ref); - center[0] = 0; - center[1] = 0; - center[2] = 0; - for (int i = 0; i < (int)p->nv; ++i) - { - const float* v = &verts[p->v[i]*3]; - center[0] += v[0]; - center[1] += v[1]; - center[2] += v[2]; - } - const float s = 1.0f / p->nv; - center[0] *= s; - center[1] *= s; - center[2] *= s; -} - -void BuilderTiledMesh::handleRender() -{ - if (!m_verts || !m_tris || !m_trinorms) - return; - - // Draw mesh - rcDebugDrawMesh(m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0); - - glDepthMask(GL_FALSE); - - // Draw bounds - float col[4] = {1,1,1,0.5f}; - rcDebugDrawBoxWire(m_bmin[0],m_bmin[1],m_bmin[2], m_bmax[0],m_bmax[1],m_bmax[2], col); - - // Tiling grid. - const int ts = (int)m_tileSize; - int gw = 0, gh = 0; - rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh); - int tw = (gw + ts-1) / ts; - int th = (gh + ts-1) / ts; - const float s = ts*m_cellSize; - glBegin(GL_LINES); - glColor4ub(0,0,0,64); - for (int y = 0; y < th; ++y) - { - for (int x = 0; x < tw; ++x) - { - float fx, fy, fz; - fx = m_bmin[0] + x*s; - fy = m_bmin[1]; - fz = m_bmin[2] + y*s; - - glVertex3f(fx,fy,fz); - glVertex3f(fx+s,fy,fz); - glVertex3f(fx,fy,fz); - glVertex3f(fx,fy,fz+s); - - if (x+1 >= tw) - { - glVertex3f(fx+s,fy,fz); - glVertex3f(fx+s,fy,fz+s); - } - if (y+1 >= th) - { - glVertex3f(fx,fy,fz+s); - glVertex3f(fx+s,fy,fz+s); - } - } - } - glEnd(); - - // Draw active tile - rcDebugDrawBoxWire(m_tileBmin[0],m_tileBmin[1],m_tileBmin[2], m_tileBmax[0],m_tileBmax[1],m_tileBmax[2], m_tileCol); - -/* if (m_eposSet) - { - col[0] = 1; col[1] = 1; col[2] = 1; col[3] = 1; - const float s = 0.2f; - rcDebugDrawBoxWire(m_epos[0]-s,m_epos[1]-s,m_epos[2]-s, m_epos[0]+s,m_epos[1]+s,m_epos[2]+s, col); - }*/ - -/* if (m_polyMesh) - rcDebugDrawPolyMesh(*m_polyMesh);*/ - - if (m_navMesh) - dtDebugDrawTiledNavMesh(m_navMesh); - - if (m_sposSet) - { - const float s = 0.5f; - glColor4ub(128,0,0,255); - glBegin(GL_LINES); - glVertex3f(m_spos[0]-s,m_spos[1],m_spos[2]); - glVertex3f(m_spos[0]+s,m_spos[1],m_spos[2]); - glVertex3f(m_spos[0],m_spos[1]-s,m_spos[2]); - glVertex3f(m_spos[0],m_spos[1]+s,m_spos[2]); - glVertex3f(m_spos[0],m_spos[1],m_spos[2]-s); - glVertex3f(m_spos[0],m_spos[1],m_spos[2]+s); - glEnd(); - } - if (m_eposSet) - { - const float s = 0.5f; - glColor4ub(0,128,0,255); - glBegin(GL_LINES); - glVertex3f(m_epos[0]-s,m_epos[1],m_epos[2]); - glVertex3f(m_epos[0]+s,m_epos[1],m_epos[2]); - glVertex3f(m_epos[0],m_epos[1]-s,m_epos[2]); - glVertex3f(m_epos[0],m_epos[1]+s,m_epos[2]); - glVertex3f(m_epos[0],m_epos[1],m_epos[2]-s); - glVertex3f(m_epos[0],m_epos[1],m_epos[2]+s); - glEnd(); - col[0] = 0; col[1] = 1; col[2] = 0; col[3] = 1; - rcDebugDrawBoxWire(m_epos[0]-m_polyPickExt[0],m_epos[1]-m_polyPickExt[1],m_epos[2]-m_polyPickExt[2], - m_epos[0]+m_polyPickExt[0],m_epos[1]+m_polyPickExt[1],m_epos[2]+m_polyPickExt[2], col); - } - -/* if (m_startRef && m_navMesh) - { - col[0] = 1; col[1] = 0; col[2] = 0; col[3] = 1; - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_startRef, col); - } - if (m_endRef && m_navMesh) - { - col[0] = 0; col[1] = 1; col[2] = 0; col[3] = 1; - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_endRef, col); - dtTilePolyRef nei[DT_TILE_VERTS_PER_POLYGON*2]; - int nn = m_navMesh->getPolyNeighbours(m_endRef, nei, DT_TILE_VERTS_PER_POLYGON*2); - if (nn) - { - col[0] = 0; col[1] = 0; col[2] = 1; col[3] = 1; - for (int i = 0; i < nn; ++i) - dtDebugDrawTiledNavMeshPoly(m_navMesh, nei[i], col); - } - } - - if (m_npolys && m_navMesh) - { - col[0] = 0; col[1] = 0; col[2] = 0; col[3] = 1; - for (int i = 0; i < m_npolys; ++i) - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_polys[i], col); - } - if (m_nstraightPath && m_navMesh) - { - glColor4ub(128,16,0,220); - glLineWidth(3.0f); - glBegin(GL_LINE_STRIP); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glLineWidth(1.0f); - glPointSize(4.0f); - glBegin(GL_POINTS); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glPointSize(1.0f); - }*/ - - - static const float startCol[4] = { 0.5f, 0.1f, 0.0f, 0.75f }; - static const float endCol[4] = { 0.2f, 0.4f, 0.0f, 0.75f }; - static const float pathCol[4] = {0,0,0,0.25f}; - - if (m_toolMode == TOOLMODE_PATHFIND) - { - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_startRef, startCol); - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_endRef, endCol); - - if (m_npolys) - { - for (int i = 1; i < m_npolys-1; ++i) - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_polys[i], pathCol); - } - if (m_nstraightPath) - { - glColor4ub(128,16,0,220); - glLineWidth(3.0f); - glBegin(GL_LINE_STRIP); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glLineWidth(1.0f); - glPointSize(4.0f); - glBegin(GL_POINTS); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glPointSize(1.0f); - } - } - else if (m_toolMode == TOOLMODE_RAYCAST) - { - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_startRef, startCol); - - if (m_nstraightPath) - { - for (int i = 1; i < m_npolys; ++i) - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_polys[i], pathCol); - - glColor4ub(128,16,0,220); - glLineWidth(3.0f); - glBegin(GL_LINE_STRIP); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glLineWidth(1.0f); - glPointSize(4.0f); - glBegin(GL_POINTS); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glPointSize(1.0f); - } - } - else if (m_toolMode == TOOLMODE_DISTANCE_TO_WALL) - { - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_startRef, startCol); - const float col[4] = {1,1,1,0.5f}; - rcDebugDrawCylinderWire(m_spos[0]-m_distanceToWall, m_spos[1]+0.02f, m_spos[2]-m_distanceToWall, - m_spos[0]+m_distanceToWall, m_spos[1]+m_agentHeight, m_spos[2]+m_distanceToWall, col); - glLineWidth(3.0f); - glColor4fv(col); - glBegin(GL_LINES); - glVertex3f(m_hitPos[0], m_hitPos[1] + 0.02f, m_hitPos[2]); - glVertex3f(m_hitPos[0], m_hitPos[1] + m_agentHeight, m_hitPos[2]); - glEnd(); - glLineWidth(1.0f); - } - else if (m_toolMode == TOOLMODE_FIND_POLYS_AROUND) - { - glLineWidth(2.0f); - for (int i = 0; i < m_npolys; ++i) - { - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_polys[i], pathCol); - if (m_parent[i]) - { - float p0[3], p1[3]; - getPolyCenter(m_navMesh, m_polys[i], p0); - getPolyCenter(m_navMesh, m_parent[i], p1); - glColor4ub(0,0,0,128); - rcDrawArc(p0, p1); - } - } - glLineWidth(1.0f); - - const float dx = m_epos[0] - m_spos[0]; - const float dz = m_epos[2] - m_spos[2]; - float dist = sqrtf(dx*dx + dz*dz); - const float col[4] = {1,1,1,0.5f}; - rcDebugDrawCylinderWire(m_spos[0]-dist, m_spos[1]+0.02f, m_spos[2]-dist, - m_spos[0]+dist, m_spos[1]+m_agentHeight, m_spos[2]+dist, col); - } - - glDepthMask(GL_TRUE); - -} - -void BuilderTiledMesh::handleRenderOverlay(class GLFont* font, double* proj, double* model, int* view) -{ - GLdouble x, y, z; - - // Draw start and end point labels - if (m_tileBuildTime > 0.0f && gluProject((GLdouble)(m_tileBmin[0]+m_tileBmax[0])/2, (GLdouble)(m_tileBmin[1]+m_tileBmax[1])/2, (GLdouble)(m_tileBmin[2]+m_tileBmax[2])/2, - model, proj, view, &x, &y, &z)) - { - char text[32]; - snprintf(text,32,"%.3fms / %dTris / %.1fkB", m_tileBuildTime, m_tileTriCount, m_tileMemUsage); - const float len = font->getTextLength(text); - font->drawText((float)x - len/2, (float)y-font->getLineHeight(), text, GLFont::RGBA(0,0,0,220)); - } -} - -void BuilderTiledMesh::handleMeshChanged(const float* verts, int nverts, - const int* tris, const float* trinorms, int ntris, - const float* bmin, const float* bmax) -{ - m_verts = verts; - m_nverts = nverts; - m_tris = tris; - m_trinorms = trinorms; - m_ntris = ntris; - vcopy(m_bmin, bmin); - vcopy(m_bmax, bmax); - - delete m_chunkyMesh; - m_chunkyMesh = 0; - delete m_navMesh; - m_navMesh = 0; - cleanup(); -} - -void BuilderTiledMesh::setToolStartPos(const float* p) -{ - m_sposSet = true; - vcopy(m_spos, p); - - if (m_toolMode == TOOLMODE_CREATE_TILES) - removeTile(m_spos); - else - toolRecalc(); -} - -void BuilderTiledMesh::setToolEndPos(const float* p) -{ - if (!m_navMesh) - return; - - m_eposSet = true; - vcopy(m_epos, p); - - if (m_toolMode == TOOLMODE_CREATE_TILES) - buildTile(m_epos); - else - toolRecalc(); -} - -bool BuilderTiledMesh::handleBuild() -{ - if (!m_verts || !m_tris) - { - printf("No verts or tris\n"); - return false; - } - - delete m_navMesh; - m_navMesh = new dtTiledNavMesh; - if (!m_navMesh) - { - printf("Could not allocate navmehs\n"); - return false; - } - if (!m_navMesh->init(m_bmin, m_tileSize*m_cellSize, m_agentMaxClimb*m_cellHeight)) - { - printf("Could not init navmesh\n"); - return false; - } - - // Build chunky mesh. - delete m_chunkyMesh; - m_chunkyMesh = new rcChunkyTriMesh; - if (!m_chunkyMesh) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'm_chunkyMesh'."); - return false; - } - if (!rcCreateChunkyTriMesh(m_verts, m_tris, m_ntris, 256, m_chunkyMesh)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not build chunky mesh."); - return false; - } - - return true; -} - -void BuilderTiledMesh::buildTile(const float* pos) -{ - if (!m_navMesh) - return; - - const float ts = m_tileSize*m_cellSize; - const int tx = (int)floorf((pos[0]-m_bmin[0]) / ts); - const int ty = (int)floorf((pos[2]-m_bmin[2]) / ts); - if (tx < 0 || ty < 0) - return; - - m_tileBmin[0] = m_bmin[0] + tx*ts; - m_tileBmin[1] = m_bmin[1]; - m_tileBmin[2] = m_bmin[2] + ty*ts; - - m_tileBmax[0] = m_bmin[0] + (tx+1)*ts; - m_tileBmax[1] = m_bmax[1]; - m_tileBmax[2] = m_bmin[2] + (ty+1)*ts; - - m_tileCol[0] = 0.2f; m_tileCol[1] = 1; m_tileCol[2] = 0; m_tileCol[3] = 1; - - int dataSize = 0; - unsigned char* data = buildTileMesh(m_tileBmin, m_tileBmax, dataSize); - - if (data) - m_navMesh->addTile(tx,ty,data,dataSize); -} - -void BuilderTiledMesh::removeTile(const float* pos) -{ - if (!m_navMesh) - return; - - const float ts = m_tileSize*m_cellSize; - const int tx = (int)floorf((pos[0]-m_bmin[0]) / ts); - const int ty = (int)floorf((pos[2]-m_bmin[2]) / ts); - - m_tileBmin[0] = m_bmin[0] + tx*ts; - m_tileBmin[1] = m_bmin[1]; - m_tileBmin[2] = m_bmin[2] + ty*ts; - - m_tileBmax[0] = m_bmin[0] + (tx+1)*ts; - m_tileBmax[1] = m_bmax[1]; - m_tileBmax[2] = m_bmin[2] + (ty+1)*ts; - - m_tileCol[0] = 1; m_tileCol[1] = 0; m_tileCol[2] = 0; m_tileCol[3] = 1; - - m_navMesh->removeTile(tx,ty); -} - -unsigned char* BuilderTiledMesh::buildTileMesh(const float* bmin, const float* bmax, int& dataSize) -{ - if (!m_verts || ! m_tris) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Input mesh is not specified."); - return 0; - } - - cleanup(); - - // Init build configuration from GUI - memset(&m_cfg, 0, sizeof(m_cfg)); - m_cfg.cs = m_cellSize; - m_cfg.ch = m_cellHeight; - m_cfg.walkableSlopeAngle = m_agentMaxSlope; - m_cfg.walkableHeight = (int)ceilf(m_agentHeight / m_cfg.ch); - m_cfg.walkableClimb = (int)ceilf(m_agentMaxClimb / m_cfg.ch); - m_cfg.walkableRadius = (int)ceilf(m_agentRadius / m_cfg.cs); - m_cfg.maxEdgeLen = (int)(m_edgeMaxLen / m_cellSize); - m_cfg.maxSimplificationError = m_edgeMaxError; - m_cfg.minRegionSize = (int)rcSqr(m_regionMinSize); - m_cfg.mergeRegionSize = (int)rcSqr(m_regionMergeSize); - m_cfg.maxVertsPerPoly = (int)m_vertsPerPoly; - m_cfg.tileSize = (int)m_tileSize; - m_cfg.borderSize = m_cfg.walkableRadius*2 + 2; // Reserve enough padding. - m_cfg.width = m_cfg.tileSize + m_cfg.borderSize*2; - m_cfg.height = m_cfg.tileSize + m_cfg.borderSize*2; - -/* if (m_cfg.maxVertsPerPoly == DT_VERTS_PER_POLYGON) - m_drawMode = DRAWMODE_NAVMESH; - else - m_drawMode = DRAWMODE_POLYMESH;*/ - - vcopy(m_cfg.bmin, bmin); - vcopy(m_cfg.bmax, bmax); - m_cfg.bmin[0] -= m_cfg.borderSize*m_cfg.cs; - m_cfg.bmin[2] -= m_cfg.borderSize*m_cfg.cs; - m_cfg.bmax[0] += m_cfg.borderSize*m_cfg.cs; - m_cfg.bmax[2] += m_cfg.borderSize*m_cfg.cs; - - // Reset build times gathering. - memset(&m_buildTimes, 0, sizeof(m_buildTimes)); - rcSetBuildTimes(&m_buildTimes); - - // Start the build process. - rcTimeVal totStartTime = rcGetPerformanceTimer(); - - if (rcGetLog()) - { - rcGetLog()->log(RC_LOG_PROGRESS, "Building navigation:"); - rcGetLog()->log(RC_LOG_PROGRESS, " - %d x %d cells", m_cfg.width, m_cfg.height); - rcGetLog()->log(RC_LOG_PROGRESS, " - %.1fK verts, %.1fK tris", m_nverts/1000.0f, m_ntris/1000.0f); - } - - // Allocate voxel heighfield where we rasterize our input data to. - m_solid = new rcHeightfield; - if (!m_solid) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'solid'."); - return 0; - } - if (!rcCreateHeightfield(*m_solid, m_cfg.width, m_cfg.height, m_cfg.bmin, m_cfg.bmax, m_cfg.cs, m_cfg.ch)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not create solid heightfield."); - return 0; - } - - // Allocate array that can hold triangle flags. - // If you have multiple meshes you need to process, allocate - // and array which can hold the max number of triangles you need to process. - m_triflags = new unsigned char[m_chunkyMesh->maxTrisPerChunk]; - if (!m_triflags) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'triangleFlags' (%d).", m_chunkyMesh->maxTrisPerChunk); - return 0; - } - - - float tbmin[2], tbmax[2]; - tbmin[0] = m_cfg.bmin[0]; - tbmin[1] = m_cfg.bmin[2]; - tbmax[0] = m_cfg.bmax[0]; - tbmax[1] = m_cfg.bmax[2]; - int cid[256];// TODO: Make grow when returning too many items. - const int ncid = rcGetChunksInRect(m_chunkyMesh, tbmin, tbmax, cid, 256); - if (!ncid) - return 0; - - m_tileTriCount = 0; - - for (int i = 0; i < ncid; ++i) - { - const rcChunkyTriMeshNode& node = m_chunkyMesh->nodes[cid[i]]; - const int* tris = &m_chunkyMesh->tris[node.i*3]; - const int ntris = node.n; - - m_tileTriCount += ntris; - - memset(m_triflags, 0, ntris*sizeof(unsigned char)); - rcMarkWalkableTriangles(m_cfg.walkableSlopeAngle, - m_verts, m_nverts, tris, ntris, m_triflags); - - rcRasterizeTriangles(m_verts, m_nverts, tris, m_triflags, ntris, *m_solid); - } - - if (!m_keepInterResults) - { - delete [] m_triflags; - m_triflags = 0; - } - - // Once all geoemtry is rasterized, we do initial pass of filtering to - // remove unwanted overhangs caused by the conservative rasterization - // as well as filter spans where the character cannot possibly stand. - rcFilterLedgeSpans(m_cfg.walkableHeight, m_cfg.walkableClimb, *m_solid); - rcFilterWalkableLowHeightSpans(m_cfg.walkableHeight, *m_solid); - - // Compact the heightfield so that it is faster to handle from now on. - // This will result more cache coherent data as well as the neighbours - // between walkable cells will be calculated. - m_chf = new rcCompactHeightfield; - if (!m_chf) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'chf'."); - return 0; - } - if (!rcBuildCompactHeightfield(m_cfg.walkableHeight, m_cfg.walkableClimb, RC_WALKABLE, *m_solid, *m_chf)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not build compact data."); - return 0; - } - - if (!m_keepInterResults) - { - delete m_solid; - m_solid = 0; - } - - // Prepare for region partitioning, by calculating distance field along the walkable surface. - if (!rcBuildDistanceField(*m_chf)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not build distance field."); - return 0; - } - - // Partition the walkable surface into simple regions without holes. - if (!rcBuildRegions(*m_chf, m_cfg.walkableRadius, m_cfg.borderSize, m_cfg.minRegionSize, m_cfg.mergeRegionSize)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not build regions."); - return 0; - } - - // Create contours. - m_cset = new rcContourSet; - if (!m_cset) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'cset'."); - return 0; - } - if (!rcBuildContours(*m_chf, m_cfg.maxSimplificationError, m_cfg.maxEdgeLen, *m_cset)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not create contours."); - return 0; - } - - if (!m_keepInterResults) - { - delete m_chf; - m_chf = 0; - } - - // Build polygon navmesh from the contours. - m_polyMesh = new rcPolyMesh; - if (!m_polyMesh) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'polyMesh'."); - return 0; - } - if (!rcBuildPolyMesh(*m_cset, m_cfg.bmin, m_cfg.bmax, m_cfg.cs, m_cfg.ch, m_cfg.maxVertsPerPoly, *m_polyMesh)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not triangulate contours."); - return 0; - } - - if (!m_keepInterResults) - { - delete m_cset; - m_cset = 0; - } - - unsigned char* navData = 0; - int navDataSize = 0; - if (m_cfg.maxVertsPerPoly == DT_TILE_VERTS_PER_POLYGON) - { - // Remove padding from the polymesh data. - for (int i = 0; i < m_polyMesh->nverts; ++i) - { - unsigned short* v = &m_polyMesh->verts[i*3]; - v[0] -= (unsigned short)m_cfg.borderSize; - v[2] -= (unsigned short)m_cfg.borderSize; - } - - if (!dtCreateNavMeshTileData(m_polyMesh->verts, m_polyMesh->nverts, - m_polyMesh->polys, m_polyMesh->npolys, m_polyMesh->nvp, - bmin, bmax, m_cfg.cs, m_cfg.ch, m_cfg.tileSize, m_cfg.walkableClimb, &navData, &navDataSize)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "Could not build Detour navmesh."); - return 0; - } - } - m_tileMemUsage = navDataSize/1024.0f; - - rcTimeVal totEndTime = rcGetPerformanceTimer(); - - // Show performance stats. - if (rcGetLog()) - { - const float pc = 100.0f / rcGetDeltaTimeUsec(totStartTime, totEndTime); - - rcGetLog()->log(RC_LOG_PROGRESS, "Rasterize: %.1fms (%.1f%%)", m_buildTimes.rasterizeTriangles/1000.0f, m_buildTimes.rasterizeTriangles*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Compact: %.1fms (%.1f%%)", m_buildTimes.buildCompact/1000.0f, m_buildTimes.buildCompact*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Filter Border: %.1fms (%.1f%%)", m_buildTimes.filterBorder/1000.0f, m_buildTimes.filterBorder*pc); - rcGetLog()->log(RC_LOG_PROGRESS, "Filter Walkable: %.1fms (%.1f%%)", m_buildTimes.filterWalkable/1000.0f, m_buildTimes.filterWalkable*pc); - rcGetLog()->log(RC_LOG_PROGRESS, "Filter Reachable: %.1fms (%.1f%%)", m_buildTimes.filterMarkReachable/1000.0f, m_buildTimes.filterMarkReachable*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Distancefield: %.1fms (%.1f%%)", m_buildTimes.buildDistanceField/1000.0f, m_buildTimes.buildDistanceField*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - distance: %.1fms (%.1f%%)", m_buildTimes.buildDistanceFieldDist/1000.0f, m_buildTimes.buildDistanceFieldDist*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - blur: %.1fms (%.1f%%)", m_buildTimes.buildDistanceFieldBlur/1000.0f, m_buildTimes.buildDistanceFieldBlur*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Regions: %.1fms (%.1f%%)", m_buildTimes.buildRegions/1000.0f, m_buildTimes.buildRegions*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - watershed: %.1fms (%.1f%%)", m_buildTimes.buildRegionsReg/1000.0f, m_buildTimes.buildRegionsReg*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - expand: %.1fms (%.1f%%)", m_buildTimes.buildRegionsExp/1000.0f, m_buildTimes.buildRegionsExp*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - find catchment basins: %.1fms (%.1f%%)", m_buildTimes.buildRegionsFlood/1000.0f, m_buildTimes.buildRegionsFlood*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - filter: %.1fms (%.1f%%)", m_buildTimes.buildRegionsFilter/1000.0f, m_buildTimes.buildRegionsFilter*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Contours: %.1fms (%.1f%%)", m_buildTimes.buildContours/1000.0f, m_buildTimes.buildContours*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - trace: %.1fms (%.1f%%)", m_buildTimes.buildContoursTrace/1000.0f, m_buildTimes.buildContoursTrace*pc); - rcGetLog()->log(RC_LOG_PROGRESS, " - simplify: %.1fms (%.1f%%)", m_buildTimes.buildContoursSimplify/1000.0f, m_buildTimes.buildContoursSimplify*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Fixup contours: %.1fms (%.1f%%)", m_buildTimes.fixupContours/1000.0f, m_buildTimes.fixupContours*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Build Polymesh: %.1fms (%.1f%%)", m_buildTimes.buildPolymesh/1000.0f, m_buildTimes.buildPolymesh*pc); - - rcGetLog()->log(RC_LOG_PROGRESS, "Polymesh: Verts:%d Polys:%d", m_polyMesh->nverts, m_polyMesh->npolys); - - rcGetLog()->log(RC_LOG_PROGRESS, "TOTAL: %.1fms", rcGetDeltaTimeUsec(totStartTime, totEndTime)/1000.0f); - } - - m_tileBuildTime = rcGetDeltaTimeUsec(totStartTime, totEndTime)/1000.0f; - - dataSize = navDataSize; - return navData; -} diff --git a/RecastDemo/Source/glfont.cpp b/RecastDemo/Source/glfont.cpp deleted file mode 100644 index cd99e42b..00000000 --- a/RecastDemo/Source/glfont.cpp +++ /dev/null @@ -1,285 +0,0 @@ -// -// Copyright (c) 2009 Mikko Mononen memon@inside.org -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. -// - -#include "GlFont.h" -#include -#define _USE_MATH_DEFINES -#include -#include -#include - -GLFont::GLFont(int renderVerts) : - m_fd(0), - m_texId(0), - m_verts(0), - m_nverts(0), - m_maxVerts(renderVerts) -{ -} - -GLFont::~GLFont() -{ - if (m_texId) - glDeleteTextures(1, (GLuint*)&m_texId); - unsigned char* data = (unsigned char*)m_fd; - if (data) - free(data); - if (m_verts) - free(m_verts); -} - -bool GLFont::create(const char* fileName) -{ - unsigned char* data = 0; - - FILE* fp = fopen(fileName, "rb"); - if (!fp) - return false; - - // Read cache file - fseek(fp, 0, SEEK_END); - unsigned n = ftell(fp); - fseek(fp, 0, SEEK_SET); - data = (unsigned char*)malloc(n); - fread(data, n, 1, fp); - fclose(fp); - - if (!m_verts) - m_verts = (RenderVertex*)malloc(m_maxVerts*sizeof(RenderVertex)); - - return createFontFromFontData(data); -} - -bool GLFont::createFontFromFontData(unsigned char* data) -{ - if (!data) - { - printf("GLFont::createFontFromFontData: No input data!\n"); - return false; - } - - m_fd = (FontData*)data; - - // Patch kern pointers. - for (int i = 0; i < m_fd->charCount; ++i) - m_fd->glyphs[i].kern = (KerningPair*)((int)m_fd->glyphs[i].kernOffset + data); - - unsigned char* texData = data + m_fd->textureOffset; - - // Create textures - glEnable(GL_TEXTURE_2D); - glGenTextures(1, (GLuint*)&m_texId); - glBindTexture(GL_TEXTURE_2D, m_texId); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, m_fd->texWidth, m_fd->texHeight, 0, - GL_ALPHA, GL_UNSIGNED_BYTE, texData); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - - return true; -} - -int GLFont::getFontSize() const -{ - return m_fd ? m_fd->fontSize : 0; -} - -int GLFont::getDescender() const -{ - return m_fd ? m_fd->descender : 0; -} - -int GLFont::getAscender() const -{ - return m_fd ? m_fd->ascender : 0; -} - -float GLFont::getLineHeight() const -{ - return m_fd ? m_fd->lineHeight : 0.0f; -} - -float GLFont::getTextLength(const char* text, float size, float tracking) -{ - if (!m_texId) return 0.0f; - if (!m_fd) return 0.0f; - - float scale = size < 0 ? 1 : size / (float)m_fd->fontSize; - float track = scale * m_fd->ascender * tracking / 1000.0f; - - const unsigned char* src = (const unsigned char*)text; - - int prevc = -1; - float len = 0.0f; - float tx = 0.0f; - - for (; *src; ++src) - { - int c = (int)*src - m_fd->charMin; - if (c < 0 || c >= m_fd->charCount) - { - prevc = c; - continue; - } - - CachedGlyph& cg = m_fd->glyphs[c]; - if (prevc > 0 && prevc < m_fd->charCount) - { - CachedGlyph& prevcg = m_fd->glyphs[prevc]; - if (prevcg.nkern != 0) - { - for (int i = 0; i < prevcg.nkern; ++i) - { - if (prevcg.kern[i].c == c) - { - tx += prevcg.kern[i].dx * scale; - break; - } - } - } - } - - len = tx + (cg.ox + cg.w) * scale; - - tx += cg.adv * scale + track; - prevc = c; - } - - return len; -} - -void GLFont::drawText(float tx, float ty, const char* text, - unsigned int col, float size, float tracking) -{ - if (!m_fd) return; - if (!m_texId) return; - if (!m_verts) return; - - float scale = size < 0 ? 1 : size / (float)m_fd->fontSize; - float track = scale * m_fd->ascender * tracking / 1000.0f; - float su = 1.0f / m_fd->texWidth; - float sv = 1.0f / m_fd->texHeight; - - const unsigned char* src = (const unsigned char*)text; - - RenderVertex* v = &m_verts[m_nverts]; - - int prevc = -1; - - for (; *src; ++src) - { - int c = (int)*src - m_fd->charMin; - if (c == '\n') - { - ty -= getLineHeight(); - prevc = -1; - continue; - } - if (c < 0 || c >= m_fd->charCount) - { - prevc = c; - continue; - } - - CachedGlyph& cg = m_fd->glyphs[c]; - if (prevc > 0 && prevc < m_fd->charCount) - { - CachedGlyph& prevcg = m_fd->glyphs[prevc]; - if (prevcg.nkern != 0) - { - for (int i = 0; i < prevcg.nkern; ++i) - { - if (prevcg.kern[i].c == c) - { - tx += prevcg.kern[i].dx * scale; - break; - } - } - } - } - - float x0 = floorf(tx + (cg.ox - 1) * scale + 0.5f); - float y0 = floorf(ty + (cg.oy - 1) * scale + 0.5f); - float x1 = floorf(x0 + (cg.w + 2) * scale + 0.5f); - float y1 = floorf(y0 + (cg.h + 2) * scale + 0.5f); - - float u0 = (cg.tx - 1) * su; - float v0 = (cg.ty - 1) * sv; - float u1 = (cg.tx + cg.w + 1) * su; - float v1 = (cg.ty + cg.h + 1) * sv; - - if (m_nverts+6 > m_maxVerts) break; - - v->set(x0, y0, u0, v0, col); v++; - v->set(x1, y0, u1, v0, col); v++; - v->set(x1, y1, u1, v1, col); v++; - - v->set(x0, y0, u0, v0, col); v++; - v->set(x1, y1, u1, v1, col); v++; - v->set(x0, y1, u0, v1, col); v++; - - m_nverts += 6; - - tx += cg.adv * scale + track; - prevc = c; - } - - render(); -} - -void GLFont::render() -{ - if (!m_fd) return; - if (!m_texId) return; - if (!m_verts) return; - - // Render - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, m_texId); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glDisableClientState(GL_NORMAL_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - glVertexPointer(2, GL_FLOAT, sizeof(RenderVertex), &m_verts[0].x); - glTexCoordPointer(2, GL_FLOAT, sizeof(RenderVertex), &m_verts[0].u); - glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(RenderVertex), &m_verts[0].col); - - glDrawArrays(GL_TRIANGLES, 0, m_nverts); - m_nverts = 0; - - glDisableClientState(GL_COLOR_ARRAY); - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - glDisable(GL_TEXTURE_2D); -} - -unsigned int GLFont::RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ - return (a<<24) | (b<<16) | (g<<8) | r; -/*#ifdef WIN32 - return (a<<24) | (b<<16) | (g<<8) | r; -#else - return (r<<24) | (g<<16) | (b<<8) | a; -#endif*/ -} diff --git a/RecastDemo/Source/imgui.cpp b/RecastDemo/Source/imgui.cpp index b31f251b..c5445a42 100644 --- a/RecastDemo/Source/imgui.cpp +++ b/RecastDemo/Source/imgui.cpp @@ -16,58 +16,22 @@ // 3. This notice may not be removed or altered from any source distribution. // +#include #include #define _USE_MATH_DEFINES #include #include "imgui.h" -#include "SDL.h" -#include "SDL_opengl.h" #ifdef WIN32 # define snprintf _snprintf #endif ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -enum GfxCmdType -{ - GFXCMD_RECT, - GFXCMD_TRIANGLE, - GFXCMD_TEXT, - GFXCMD_SCISSOR, -}; -struct GfxRect -{ - short x,y,w,h,r; -}; -struct GfxText -{ - short x,y,dir; - const char* text; -}; - -struct GfxCmd -{ - char type; - char flags; - char pad[2]; - unsigned int col; - union - { - GfxRect rect; - GfxText text; - }; -}; - -unsigned int RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a) -{ - return (r) | (g << 8) | (b << 16) | (a << 24); -} - -static const unsigned TEXT_POOL_SIZE = 4096; +static const unsigned TEXT_POOL_SIZE = 8000; static char g_textPool[TEXT_POOL_SIZE]; static unsigned g_textPoolSize = 0; -const char* allocText(const char* text) +static const char* allocText(const char* text) { unsigned len = strlen(text)+1; if (g_textPoolSize + len >= TEXT_POOL_SIZE) @@ -79,282 +43,21 @@ const char* allocText(const char* text) } static const unsigned GFXCMD_QUEUE_SIZE = 1024; -static GfxCmd g_gfxCmdQueue[GFXCMD_QUEUE_SIZE]; +static imguiGfxCmd g_gfxCmdQueue[GFXCMD_QUEUE_SIZE]; static unsigned g_gfxCmdQueueSize = 0; -void resetGfxCmdQueue() +static void resetGfxCmdQueue() { g_gfxCmdQueueSize = 0; g_textPoolSize = 0; } - -static const unsigned TEMP_COORD_COUNT = 100; -static float g_tempCoords[TEMP_COORD_COUNT*2]; -static float g_tempNormals[TEMP_COORD_COUNT*2]; - -static void drawPolygon(const float* coords, unsigned numCoords, float r, unsigned int col) -{ - if (numCoords > TEMP_COORD_COUNT) numCoords = TEMP_COORD_COUNT; - - for (unsigned i = 0, j = numCoords-1; i < numCoords; j=i++) - { - const float* v0 = &coords[j*2]; - const float* v1 = &coords[i*2]; - float dx = v1[0] - v0[0]; - float dy = v1[1] - v0[1]; - float d = sqrtf(dx*dx+dy*dy); - if (d > 0) - { - d = 1.0f/d; - dx *= d; - dy *= d; - } - g_tempNormals[j*2+0] = dy; - g_tempNormals[j*2+1] = -dx; - } - - for (unsigned i = 0, j = numCoords-1; i < numCoords; j=i++) - { - float dlx0 = g_tempNormals[j*2+0]; - float dly0 = g_tempNormals[j*2+1]; - float dlx1 = g_tempNormals[i*2+0]; - float dly1 = g_tempNormals[i*2+1]; - float dmx = (dlx0 + dlx1) * 0.5f; - float dmy = (dly0 + dly1) * 0.5f; - float dmr2 = dmx*dmx + dmy*dmy; - if (dmr2 > 0.000001f) - { - float scale = 1.0f / dmr2; - if (scale > 10.0f) scale = 10.0f; - dmx *= scale; - dmy *= scale; - } - g_tempCoords[i*2+0] = coords[i*2+0]+dmx*r; - g_tempCoords[i*2+1] = coords[i*2+1]+dmy*r; - } - - unsigned int colTrans = RGBA(col&0xff, (col>>8)&0xff, (col>>16)&0xff, 0); - - glBegin(GL_TRIANGLES); - - glColor4ubv((GLubyte*)&col); - - for (unsigned i = 0, j = numCoords-1; i < numCoords; j=i++) - { - glVertex2fv(&coords[i*2]); - glVertex2fv(&coords[j*2]); - glColor4ubv((GLubyte*)&colTrans); - glVertex2fv(&g_tempCoords[j*2]); - - glVertex2fv(&g_tempCoords[j*2]); - glVertex2fv(&g_tempCoords[i*2]); - - glColor4ubv((GLubyte*)&col); - glVertex2fv(&coords[i*2]); - } - - glColor4ubv((GLubyte*)&col); - for (unsigned i = 2; i < numCoords; ++i) - { - glVertex2fv(&coords[0]); - glVertex2fv(&coords[(i-1)*2]); - glVertex2fv(&coords[i*2]); - } - - glEnd(); -} - -static const int CIRCLE_VERTS = 8*4; -static float g_circleVerts[CIRCLE_VERTS*2]; -static bool g_circleVertsInitialized = false; - -const float* getCircleVerts() -{ - if (!g_circleVertsInitialized) - { - g_circleVertsInitialized = true; - for (unsigned i = 0; i < CIRCLE_VERTS; ++i) - { - float a = (float)i/(float)CIRCLE_VERTS * (float)M_PI*2; - g_circleVerts[i*2+0] = cosf(a); - g_circleVerts[i*2+1] = sinf(a); - } - } - return g_circleVerts; -} - -static void drawRect(float x, float y, float w, float h, float fth, unsigned int col) -{ - float verts[4*2] = - { - x, y, - x+w, y, - x+w, y+h, - x, y+h, - }; - drawPolygon(verts, 4, fth, col); -} - -static void drawEllipse(float x, float y, float w, float h, float fth, unsigned int col) -{ - float verts[CIRCLE_VERTS*2]; - const float* cverts = getCircleVerts(); - float* v = verts; - - for (unsigned i = 0; i < CIRCLE_VERTS; ++i) - { - *v++ = x + cverts[i*2]*w; - *v++ = y + cverts[i*2+1]*h; - } - - drawPolygon(verts, CIRCLE_VERTS, fth, col); -} - -static void drawRoundedRect(float x, float y, float w, float h, float r, float fth, unsigned int col) -{ - const unsigned n = CIRCLE_VERTS/4; - float verts[(n+1)*4*2]; - const float* cverts = getCircleVerts(); - float* v = verts; - - for (unsigned i = 0; i <= n; ++i) - { - *v++ = x+w-r + cverts[i*2]*r; - *v++ = y+h-r + cverts[i*2+1]*r; - } - - for (unsigned i = n; i <= n*2; ++i) - { - *v++ = x+r + cverts[i*2]*r; - *v++ = y+h-r + cverts[i*2+1]*r; - } - - for (unsigned i = n*2; i <= n*3; ++i) - { - *v++ = x+r + cverts[i*2]*r; - *v++ = y+r + cverts[i*2+1]*r; - } - - for (unsigned i = n*3; i < n*4; ++i) - { - *v++ = x+w-r + cverts[i*2]*r; - *v++ = y+r + cverts[i*2+1]*r; - } - *v++ = x+w-r + cverts[0]*r; - *v++ = y+r + cverts[1]*r; - - drawPolygon(verts, (n+1)*4, fth, col); -} - -static void drawLine(float x0, float y0, float x1, float y1, float r, float fth, unsigned int col) -{ - float dx = x1-x0; - float dy = y1-y0; - float d = sqrtf(dx*dx+dy*dy); - if (d > 0.0001f) - { - d = 1.0f/d; - dx *= d; - dy *= d; - } - float t = dx; - dx = dy; - dy = -t; - float verts[4*2]; - r -= fth; - r *= 0.5f; - if (r < 0.01f) r = 0.01f; - dx *= r; - dy *= r; - - verts[0] = x0-dx; - verts[1] = y0-dy; - - verts[2] = x0+dx; - verts[3] = y0+dy; - - verts[4] = x1+dx; - verts[5] = y1+dy; - - verts[6] = x1-dx; - verts[7] = y1-dy; - - drawPolygon(verts, 4, fth, col); -} - - -void renderGfxCmdQueue(void (*drawText)(int x, int y, int dir, const char* text, unsigned int col)) -{ - glDisable(GL_SCISSOR_TEST); - for (unsigned i = 0; i < g_gfxCmdQueueSize; ++i) - { - const GfxCmd& cmd = g_gfxCmdQueue[i]; - if (cmd.type == GFXCMD_RECT) - { - if (cmd.rect.r == 0) - { - drawRect((float)cmd.rect.x+0.5f, (float)cmd.rect.y+0.5f, - (float)cmd.rect.w-1, (float)cmd.rect.h-1, - 1.0f, cmd.col); - } - else - { - drawRoundedRect((float)cmd.rect.x+0.5f, (float)cmd.rect.y+0.5f, - (float)cmd.rect.w-1, (float)cmd.rect.h-1, - (float)cmd.rect.r, 1.0f, cmd.col); - } - } - else if (cmd.type == GFXCMD_TRIANGLE) - { - glColor4ub(cmd.col&0xff, (cmd.col>>8)&0xff, (cmd.col>>16)&0xff, (cmd.col>>24)&0xff); - if (cmd.flags == 1) - { - const float verts[3*2] = - { - (float)cmd.rect.x+0.5f, (float)cmd.rect.y+0.5f, - (float)cmd.rect.x+0.5f+(float)cmd.rect.w-1, (float)cmd.rect.y+0.5f+(float)cmd.rect.h/2-0.5f, - (float)cmd.rect.x+0.5f, (float)cmd.rect.y+0.5f+(float)cmd.rect.h-1, - }; - drawPolygon(verts, 3, 1.0f, cmd.col); - } - if (cmd.flags == 2) - { - const float verts[3*2] = - { - (float)cmd.rect.x+0.5f, (float)cmd.rect.y+(float)cmd.rect.h-1, - (float)cmd.rect.x+0.5f+(float)cmd.rect.w/2-0.5f, (float)cmd.rect.y+0.5f, - (float)cmd.rect.x+0.5f+(float)cmd.rect.w-1, (float)cmd.rect.y+0.5f+(float)cmd.rect.h-1, - }; - drawPolygon(verts, 3, 1.0f, cmd.col); - } - } - else if (cmd.type == GFXCMD_TEXT) - { - drawText(cmd.text.x, cmd.text.y, cmd.text.dir, cmd.text.text, cmd.col); - } - else if (cmd.type == GFXCMD_SCISSOR) - { - if (cmd.flags) - { - glEnable(GL_SCISSOR_TEST); - glScissor(cmd.rect.x, cmd.rect.y, cmd.rect.w, cmd.rect.h); - } - else - { - glDisable(GL_SCISSOR_TEST); - } - } - } - glDisable(GL_SCISSOR_TEST); -} - -void addGfxCmdScissor(int x, int y, int w, int h) +static void addGfxCmdScissor(int x, int y, int w, int h) { if (g_gfxCmdQueueSize >= GFXCMD_QUEUE_SIZE) return; - GfxCmd& cmd = g_gfxCmdQueue[g_gfxCmdQueueSize++]; - cmd.type = GFXCMD_SCISSOR; + imguiGfxCmd& cmd = g_gfxCmdQueue[g_gfxCmdQueueSize++]; + cmd.type = IMGUI_GFXCMD_SCISSOR; cmd.flags = x < 0 ? 0 : 1; // on/off flag. cmd.col = 0; cmd.rect.x = (short)x; @@ -363,12 +66,12 @@ void addGfxCmdScissor(int x, int y, int w, int h) cmd.rect.h = (short)h; } -void addGfxCmdRect(int x, int y, int w, int h, unsigned int color) +static void addGfxCmdRect(int x, int y, int w, int h, unsigned int color) { if (g_gfxCmdQueueSize >= GFXCMD_QUEUE_SIZE) return; - GfxCmd& cmd = g_gfxCmdQueue[g_gfxCmdQueueSize++]; - cmd.type = GFXCMD_RECT; + imguiGfxCmd& cmd = g_gfxCmdQueue[g_gfxCmdQueueSize++]; + cmd.type = IMGUI_GFXCMD_RECT; cmd.flags = 0; cmd.col = color; cmd.rect.x = (short)x; @@ -378,12 +81,12 @@ void addGfxCmdRect(int x, int y, int w, int h, unsigned int color) cmd.rect.r = 0; } -void addGfxCmdRoundedRect(int x, int y, int w, int h, int r, unsigned int color) +static void addGfxCmdRoundedRect(int x, int y, int w, int h, int r, unsigned int color) { if (g_gfxCmdQueueSize >= GFXCMD_QUEUE_SIZE) return; - GfxCmd& cmd = g_gfxCmdQueue[g_gfxCmdQueueSize++]; - cmd.type = GFXCMD_RECT; + imguiGfxCmd& cmd = g_gfxCmdQueue[g_gfxCmdQueueSize++]; + cmd.type = IMGUI_GFXCMD_RECT; cmd.flags = 0; cmd.col = color; cmd.rect.x = (short)x; @@ -393,12 +96,12 @@ void addGfxCmdRoundedRect(int x, int y, int w, int h, int r, unsigned int color) cmd.rect.r = (short)r; } -void addGfxCmdTriangle(int x, int y, int w, int h, int flags, unsigned int color) +static void addGfxCmdTriangle(int x, int y, int w, int h, int flags, unsigned int color) { if (g_gfxCmdQueueSize >= GFXCMD_QUEUE_SIZE) return; - GfxCmd& cmd = g_gfxCmdQueue[g_gfxCmdQueueSize++]; - cmd.type = GFXCMD_TRIANGLE; + imguiGfxCmd& cmd = g_gfxCmdQueue[g_gfxCmdQueueSize++]; + cmd.type = IMGUI_GFXCMD_TRIANGLE; cmd.flags = (char)flags; cmd.col = color; cmd.rect.x = (short)x; @@ -407,17 +110,17 @@ void addGfxCmdTriangle(int x, int y, int w, int h, int flags, unsigned int color cmd.rect.h = (short)h; } -void addGfxCmdText(int x, int y, int dir, const char* text, unsigned int color) +static void addGfxCmdText(int x, int y, int align, const char* text, unsigned int color) { if (g_gfxCmdQueueSize >= GFXCMD_QUEUE_SIZE) return; - GfxCmd& cmd = g_gfxCmdQueue[g_gfxCmdQueueSize++]; - cmd.type = GFXCMD_TEXT; + imguiGfxCmd& cmd = g_gfxCmdQueue[g_gfxCmdQueueSize++]; + cmd.type = IMGUI_GFXCMD_TEXT; cmd.flags = 0; cmd.col = color; cmd.text.x = (short)x; cmd.text.y = (short)y; - cmd.text.dir = (short)dir; + cmd.text.align = (short)align; cmd.text.text = allocText(text); } @@ -425,19 +128,19 @@ void addGfxCmdText(int x, int y, int dir, const char* text, unsigned int color) struct GuiState { GuiState() : - leftPressed(false), leftReleased(false), left(false), mx(-1), my(-1), - upPressed(false), downPressed(false), up(false), down(false), + leftPressed(false), leftReleased(false), left(false), mx(-1), my(-1), scroll(0), isHot(false), isActive(false), wentActive(false), dragX(0), dragY(0), dragOrig(0), widgetX(0), widgetY(0), widgetW(100), - active(0), hot(0), hotToBe(0) + active(0), hot(0), hotToBe(0), + areaId(0), widgetId(0) { } - bool left, up, down; - bool upPressed, downPressed; + bool left; bool leftPressed, leftReleased; int mx,my; + int scroll; unsigned int active; unsigned int hot; unsigned int hotToBe; @@ -447,6 +150,9 @@ struct GuiState int dragX, dragY; float dragOrig; int widgetX, widgetY, widgetW; + + unsigned int areaId; + unsigned int widgetId; }; static GuiState g_state; @@ -471,34 +177,33 @@ inline bool inRect(int x, int y, int w, int h) return g_state.mx >= x && g_state.mx <= x+w && g_state.my >= y && g_state.my <= y+h; } -void clearInput() +inline void clearInput() { g_state.leftPressed = false; g_state.leftReleased = false; - g_state.upPressed = false; - g_state.downPressed = false; + g_state.scroll = 0; } -void clearActive(void) +inline void clearActive() { g_state.active = 0; // mark all UI for this frame as processed clearInput(); } -void setActive(unsigned int id) +inline void setActive(unsigned int id) { g_state.active = id; g_state.wentActive = true; } -void setHot(unsigned int id) +inline void setHot(unsigned int id) { g_state.hotToBe = id; } -bool buttonLogic(unsigned int id, bool over) +static bool buttonLogic(unsigned int id, bool over) { bool res = false; // process down @@ -530,11 +235,9 @@ bool buttonLogic(unsigned int id, bool over) return res; } -static void updateInput(int mx, int my, unsigned char mbut) +static void updateInput(int mx, int my, unsigned char mbut, int scroll) { bool left = (mbut & IMGUI_MBUT_LEFT) != 0; - bool up = (mbut & IMGUI_MBUT_UP) != 0; - bool down = (mbut & IMGUI_MBUT_DOWN) != 0; g_state.mx = mx; g_state.my = my; @@ -542,15 +245,12 @@ static void updateInput(int mx, int my, unsigned char mbut) g_state.leftReleased = g_state.left && !left; g_state.left = left; - g_state.upPressed = !g_state.up && up; - g_state.downPressed = !g_state.down && down; - g_state.up = up; - g_state.down = down; + g_state.scroll = scroll; } -void imguiBeginFrame(int mx, int my, unsigned char mbut) +void imguiBeginFrame(int mx, int my, unsigned char mbut, int scroll) { - updateInput(mx,my,mbut); + updateInput(mx,my,mbut,scroll); g_state.hot = g_state.hotToBe; g_state.hotToBe = 0; @@ -563,6 +263,9 @@ void imguiBeginFrame(int mx, int my, unsigned char mbut) g_state.widgetY = 0; g_state.widgetW = 0; + g_state.areaId = 1; + g_state.widgetId = 1; + resetGfxCmdQueue(); } @@ -571,9 +274,14 @@ void imguiEndFrame() clearInput(); } -void imguiRender(void (*drawText)(int x, int y, int dir, const char* text, unsigned int col)) +const imguiGfxCmd* imguiGetRenderQueue() { - renderGfxCmdQueue(drawText); + return g_gfxCmdQueue; +} + +int imguiGetRenderQueueSize() +{ + return g_gfxCmdQueueSize; } @@ -598,9 +306,11 @@ static int g_focusBottom = 0; static unsigned int g_scrollId = 0; static bool g_insideScrollArea = false; -bool imguiBeginScrollArea(unsigned int id, const char* name, int x, int y, int w, int h, int* scroll) +bool imguiBeginScrollArea(const char* name, int x, int y, int w, int h, int* scroll) { - g_scrollId = id; + g_state.areaId++; + g_state.widgetId = 0; + g_scrollId = (g_state.areaId<<16) | g_state.widgetId; g_state.widgetX = x + SCROLL_AREA_PADDING; g_state.widgetY = y+h-AREA_HEADER + (*scroll); @@ -615,9 +325,9 @@ bool imguiBeginScrollArea(unsigned int id, const char* name, int x, int y, int w g_focusTop = y-AREA_HEADER; g_focusBottom = y-AREA_HEADER+h; - addGfxCmdRoundedRect(x, y, w, h, 6, RGBA(0,0,0,192)); + addGfxCmdRoundedRect(x, y, w, h, 6, imguiRGBA(0,0,0,192)); - addGfxCmdText(x+AREA_HEADER/2, y+h-AREA_HEADER/2-TEXT_HEIGHT/2, 1, name, RGBA(255,255,255,128)); + addGfxCmdText(x+AREA_HEADER/2, y+h-AREA_HEADER/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, name, imguiRGBA(255,255,255,128)); addGfxCmdScissor(x+SCROLL_AREA_PADDING, y+SCROLL_AREA_PADDING, w-SCROLL_AREA_PADDING*4, h-AREA_HEADER-SCROLL_AREA_PADDING); @@ -677,24 +387,20 @@ void imguiEndScrollArea() } // BG - addGfxCmdRoundedRect(x, y, w, h, w/2-1, RGBA(0,0,0,196)); + addGfxCmdRoundedRect(x, y, w, h, w/2-1, imguiRGBA(0,0,0,196)); // Bar if (isActive(hid)) - addGfxCmdRoundedRect(hx, hy, hw, hh, w/2-1, RGBA(255,196,0,196)); + addGfxCmdRoundedRect(hx, hy, hw, hh, w/2-1, imguiRGBA(255,196,0,196)); else - addGfxCmdRoundedRect(hx, hy, hw, hh, w/2-1, isHot(hid) ? RGBA(255,196,0,96) : RGBA(255,255,255,64)); + addGfxCmdRoundedRect(hx, hy, hw, hh, w/2-1, isHot(hid) ? imguiRGBA(255,196,0,96) : imguiRGBA(255,255,255,64)); // Handle mouse scrolling. if (g_insideScrollArea) // && !anyActive()) { - if (g_state.upPressed) + if (g_state.scroll) { - *g_scrollVal -= 20; + *g_scrollVal += 20*g_state.scroll; if (*g_scrollVal < 0) *g_scrollVal = 0; - } - else if (g_state.downPressed) - { - *g_scrollVal += 20; if (*g_scrollVal > (sh - h)) *g_scrollVal = (sh - h); } } @@ -702,65 +408,92 @@ void imguiEndScrollArea() } } -bool imguiButton(unsigned int id, const char* text) +bool imguiButton(const char* text, bool enabled) { + g_state.widgetId++; + unsigned int id = (g_state.areaId<<16) | g_state.widgetId; + int x = g_state.widgetX; int y = g_state.widgetY - BUTTON_HEIGHT; int w = g_state.widgetW; int h = BUTTON_HEIGHT; g_state.widgetY -= BUTTON_HEIGHT + DEFAULT_SPACING; - bool over = inRect(x, y, w, h); + bool over = enabled && inRect(x, y, w, h); bool res = buttonLogic(id, over); - addGfxCmdRoundedRect(x, y, w, h, BUTTON_HEIGHT/2-1, RGBA(128,128,128, isActive(id)?196:96)); - addGfxCmdText(x+BUTTON_HEIGHT/2, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, 1, text, isHot(id) ? RGBA(255,196,0,255) : RGBA(255,255,255,200)); + addGfxCmdRoundedRect(x, y, w, h, BUTTON_HEIGHT/2-1, imguiRGBA(128,128,128, isActive(id)?196:96)); + if (enabled) + addGfxCmdText(x+BUTTON_HEIGHT/2, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, text, isHot(id) ? imguiRGBA(255,196,0,255) : imguiRGBA(255,255,255,200)); + else + addGfxCmdText(x+BUTTON_HEIGHT/2, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, text, imguiRGBA(128,128,128,200)); return res; } -bool imguiItem(unsigned int id, const char* text) +bool imguiItem(const char* text, bool enabled) { + g_state.widgetId++; + unsigned int id = (g_state.areaId<<16) | g_state.widgetId; + int x = g_state.widgetX; int y = g_state.widgetY - BUTTON_HEIGHT; int w = g_state.widgetW; int h = BUTTON_HEIGHT; g_state.widgetY -= BUTTON_HEIGHT + DEFAULT_SPACING; - bool over = inRect(x, y, w, h); + bool over = enabled && inRect(x, y, w, h); bool res = buttonLogic(id, over); if (isHot(id)) - addGfxCmdRoundedRect(x, y, w, h, 2, RGBA(255,196,0,isActive(id)?196:96)); - addGfxCmdText(x+BUTTON_HEIGHT/2, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, 1, text, RGBA(255,255,255,200)); + addGfxCmdRoundedRect(x, y, w, h, 2, imguiRGBA(255,196,0,isActive(id)?196:96)); + + if (enabled) + addGfxCmdText(x+BUTTON_HEIGHT/2, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, text, imguiRGBA(255,255,255,200)); + else + addGfxCmdText(x+BUTTON_HEIGHT/2, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, text, imguiRGBA(128,128,128,200)); return res; } -bool imguiCheck(unsigned int id, const char* text, bool checked) +bool imguiCheck(const char* text, bool checked, bool enabled) { + g_state.widgetId++; + unsigned int id = (g_state.areaId<<16) | g_state.widgetId; + int x = g_state.widgetX; int y = g_state.widgetY - BUTTON_HEIGHT; int w = g_state.widgetW; int h = BUTTON_HEIGHT; g_state.widgetY -= BUTTON_HEIGHT + DEFAULT_SPACING; - bool over = inRect(x, y, w, h); + bool over = enabled && inRect(x, y, w, h); bool res = buttonLogic(id, over); const int cx = x+BUTTON_HEIGHT/2-CHECK_SIZE/2; const int cy = y+BUTTON_HEIGHT/2-CHECK_SIZE/2; - addGfxCmdRoundedRect(cx-3, cy-3, CHECK_SIZE+6, CHECK_SIZE+6, 4, RGBA(128,128,128, isActive(id)?196:96)); + addGfxCmdRoundedRect(cx-3, cy-3, CHECK_SIZE+6, CHECK_SIZE+6, 4, imguiRGBA(128,128,128, isActive(id)?196:96)); if (checked) - addGfxCmdRoundedRect(cx, cy, CHECK_SIZE, CHECK_SIZE, CHECK_SIZE/2-1, RGBA(255,255,255,isActive(id)?255:200)); + { + if (enabled) + addGfxCmdRoundedRect(cx, cy, CHECK_SIZE, CHECK_SIZE, CHECK_SIZE/2-1, imguiRGBA(255,255,255,isActive(id)?255:200)); + else + addGfxCmdRoundedRect(cx, cy, CHECK_SIZE, CHECK_SIZE, CHECK_SIZE/2-1, imguiRGBA(128,128,128,200)); + } - addGfxCmdText(x+BUTTON_HEIGHT, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, 1, text, isHot(id) ? RGBA(255,196,0,255) : RGBA(255,255,255,200)); + if (enabled) + addGfxCmdText(x+BUTTON_HEIGHT, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, text, isHot(id) ? imguiRGBA(255,196,0,255) : imguiRGBA(255,255,255,200)); + else + addGfxCmdText(x+BUTTON_HEIGHT, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, text, imguiRGBA(128,128,128,200)); return res; } -bool imguiCollapse(unsigned int id, const char* text, bool checked) +bool imguiCollapse(const char* text, bool checked, bool enabled) { + g_state.widgetId++; + unsigned int id = (g_state.areaId<<16) | g_state.widgetId; + int x = g_state.widgetX; int y = g_state.widgetY - BUTTON_HEIGHT; int w = g_state.widgetW; @@ -774,42 +507,45 @@ bool imguiCollapse(unsigned int id, const char* text, bool checked) bool res = buttonLogic(id, over); if (checked) - addGfxCmdTriangle(cx, cy, CHECK_SIZE, CHECK_SIZE, 1, RGBA(255,255,255,isActive(id)?255:200)); + addGfxCmdTriangle(cx, cy, CHECK_SIZE, CHECK_SIZE, 1, imguiRGBA(255,255,255,isActive(id)?255:200)); else - addGfxCmdTriangle(cx, cy, CHECK_SIZE, CHECK_SIZE, 2, RGBA(255,255,255,isActive(id)?255:200)); + addGfxCmdTriangle(cx, cy, CHECK_SIZE, CHECK_SIZE, 2, imguiRGBA(255,255,255,isActive(id)?255:200)); - addGfxCmdText(x+BUTTON_HEIGHT, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, 1, text, isHot(id) ? RGBA(255,196,0,255) : RGBA(255,255,255,200)); + addGfxCmdText(x+BUTTON_HEIGHT, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, text, isHot(id) ? imguiRGBA(255,196,0,255) : imguiRGBA(255,255,255,200)); return res; } -void imguiLabel(unsigned int /*id*/, const char* text) +void imguiLabel(const char* text) { int x = g_state.widgetX; int y = g_state.widgetY - BUTTON_HEIGHT; g_state.widgetY -= BUTTON_HEIGHT; - addGfxCmdText(x, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, 1, text, RGBA(255,255,255,255)); + addGfxCmdText(x, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, text, imguiRGBA(255,255,255,255)); } -void imguiValue(unsigned int /*id*/, const char* text) +void imguiValue(const char* text) { const int x = g_state.widgetX; const int y = g_state.widgetY - BUTTON_HEIGHT; const int w = g_state.widgetW; g_state.widgetY -= BUTTON_HEIGHT; - addGfxCmdText(x+w-BUTTON_HEIGHT/2, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, -1, text, RGBA(255,255,255,200)); + addGfxCmdText(x+w-BUTTON_HEIGHT/2, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_RIGHT, text, imguiRGBA(255,255,255,200)); } -bool imguiSlider(unsigned int id, const char* text, float* val, float vmin, float vmax, float vinc) +bool imguiSlider(const char* text, float* val, float vmin, float vmax, float vinc, bool enabled) { + g_state.widgetId++; + unsigned int id = (g_state.areaId<<16) | g_state.widgetId; + int x = g_state.widgetX; int y = g_state.widgetY - BUTTON_HEIGHT; int w = g_state.widgetW; int h = SLIDER_HEIGHT; g_state.widgetY -= SLIDER_HEIGHT + DEFAULT_SPACING; - addGfxCmdRoundedRect(x, y, w, h, 4, RGBA(0,0,0,128)); + addGfxCmdRoundedRect(x, y, w, h, 4, imguiRGBA(0,0,0,128)); const int range = w - SLIDER_MARKER_WIDTH; @@ -842,18 +578,19 @@ bool imguiSlider(unsigned int id, const char* text, float* val, float vmin, floa } if (isActive(id)) - addGfxCmdRoundedRect(x+m, y, SLIDER_MARKER_WIDTH, SLIDER_HEIGHT, 4, RGBA(255,255,255,255)); + addGfxCmdRoundedRect(x+m, y, SLIDER_MARKER_WIDTH, SLIDER_HEIGHT, 4, imguiRGBA(255,255,255,255)); else - addGfxCmdRoundedRect(x+m, y, SLIDER_MARKER_WIDTH, SLIDER_HEIGHT, 4, isHot(id) ? RGBA(255,196,0,128) : RGBA(255,255,255,64)); + addGfxCmdRoundedRect(x+m, y, SLIDER_MARKER_WIDTH, SLIDER_HEIGHT, 4, isHot(id) ? imguiRGBA(255,196,0,128) : imguiRGBA(255,255,255,64)); + // TODO: fix this, take a look at 'nicenum'. int digits = (int)(ceilf(log10f(vinc))); char fmt[16]; snprintf(fmt, 16, "%%.%df", digits >= 0 ? 0 : -digits); char msg[128]; snprintf(msg, 128, fmt, *val); - addGfxCmdText(x+SLIDER_HEIGHT/2, y+SLIDER_HEIGHT/2-TEXT_HEIGHT/2, 1, text, isHot(id) ? RGBA(255,196,0,255) : RGBA(255,255,255,200)); - addGfxCmdText(x+w-SLIDER_HEIGHT/2, y+SLIDER_HEIGHT/2-TEXT_HEIGHT/2, -1, msg, isHot(id) ? RGBA(255,196,0,255) : RGBA(255,255,255,200)); + addGfxCmdText(x+SLIDER_HEIGHT/2, y+SLIDER_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, text, isHot(id) ? imguiRGBA(255,196,0,255) : imguiRGBA(255,255,255,200)); + addGfxCmdText(x+w-SLIDER_HEIGHT/2, y+SLIDER_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_RIGHT, msg, isHot(id) ? imguiRGBA(255,196,0,255) : imguiRGBA(255,255,255,200)); return res || valChanged; } @@ -874,4 +611,9 @@ void imguiUnindent() void imguiSeparator() { g_state.widgetY -= DEFAULT_SPACING*3; -} \ No newline at end of file +} + +void imguiDrawText(int x, int y, int align, const char* text, unsigned int color) +{ + addGfxCmdText(x, y, align, text, color); +} diff --git a/RecastDemo/Source/imguiRenderGL.cpp b/RecastDemo/Source/imguiRenderGL.cpp new file mode 100644 index 00000000..b1325eff --- /dev/null +++ b/RecastDemo/Source/imguiRenderGL.cpp @@ -0,0 +1,410 @@ +#include +#include "imgui.h" +#include "SDL.h" +#include "SDL_opengl.h" +#define STBTT_malloc(x) malloc(x) +#define STBTT_free(x) free(x) +#define STB_TRUETYPE_IMPLEMENTATION +#include "stb_truetype.h" + +static const unsigned TEMP_COORD_COUNT = 100; +static float g_tempCoords[TEMP_COORD_COUNT*2]; +static float g_tempNormals[TEMP_COORD_COUNT*2]; + +static const int CIRCLE_VERTS = 8*4; +static float g_circleVerts[CIRCLE_VERTS*2]; + +static stbtt_bakedchar g_cdata[96]; // ASCII 32..126 is 95 glyphs +static GLuint g_ftex = 0; + +inline unsigned int RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a) +{ + return (r) | (g << 8) | (b << 16) | (a << 24); +} + +static void drawPolygon(const float* coords, unsigned numCoords, float r, unsigned int col) +{ + if (numCoords > TEMP_COORD_COUNT) numCoords = TEMP_COORD_COUNT; + + for (unsigned i = 0, j = numCoords-1; i < numCoords; j=i++) + { + const float* v0 = &coords[j*2]; + const float* v1 = &coords[i*2]; + float dx = v1[0] - v0[0]; + float dy = v1[1] - v0[1]; + float d = sqrtf(dx*dx+dy*dy); + if (d > 0) + { + d = 1.0f/d; + dx *= d; + dy *= d; + } + g_tempNormals[j*2+0] = dy; + g_tempNormals[j*2+1] = -dx; + } + + for (unsigned i = 0, j = numCoords-1; i < numCoords; j=i++) + { + float dlx0 = g_tempNormals[j*2+0]; + float dly0 = g_tempNormals[j*2+1]; + float dlx1 = g_tempNormals[i*2+0]; + float dly1 = g_tempNormals[i*2+1]; + float dmx = (dlx0 + dlx1) * 0.5f; + float dmy = (dly0 + dly1) * 0.5f; + float dmr2 = dmx*dmx + dmy*dmy; + if (dmr2 > 0.000001f) + { + float scale = 1.0f / dmr2; + if (scale > 10.0f) scale = 10.0f; + dmx *= scale; + dmy *= scale; + } + g_tempCoords[i*2+0] = coords[i*2+0]+dmx*r; + g_tempCoords[i*2+1] = coords[i*2+1]+dmy*r; + } + + unsigned int colTrans = RGBA(col&0xff, (col>>8)&0xff, (col>>16)&0xff, 0); + + glBegin(GL_TRIANGLES); + + glColor4ubv((GLubyte*)&col); + + for (unsigned i = 0, j = numCoords-1; i < numCoords; j=i++) + { + glVertex2fv(&coords[i*2]); + glVertex2fv(&coords[j*2]); + glColor4ubv((GLubyte*)&colTrans); + glVertex2fv(&g_tempCoords[j*2]); + + glVertex2fv(&g_tempCoords[j*2]); + glVertex2fv(&g_tempCoords[i*2]); + + glColor4ubv((GLubyte*)&col); + glVertex2fv(&coords[i*2]); + } + + glColor4ubv((GLubyte*)&col); + for (unsigned i = 2; i < numCoords; ++i) + { + glVertex2fv(&coords[0]); + glVertex2fv(&coords[(i-1)*2]); + glVertex2fv(&coords[i*2]); + } + + glEnd(); +} + +static void drawRect(float x, float y, float w, float h, float fth, unsigned int col) +{ + float verts[4*2] = + { + x, y, + x+w, y, + x+w, y+h, + x, y+h, + }; + drawPolygon(verts, 4, fth, col); +} + +static void drawEllipse(float x, float y, float w, float h, float fth, unsigned int col) +{ + float verts[CIRCLE_VERTS*2]; + const float* cverts = g_circleVerts; + float* v = verts; + + for (unsigned i = 0; i < CIRCLE_VERTS; ++i) + { + *v++ = x + cverts[i*2]*w; + *v++ = y + cverts[i*2+1]*h; + } + + drawPolygon(verts, CIRCLE_VERTS, fth, col); +} + +static void drawRoundedRect(float x, float y, float w, float h, float r, float fth, unsigned int col) +{ + const unsigned n = CIRCLE_VERTS/4; + float verts[(n+1)*4*2]; + const float* cverts = g_circleVerts; + float* v = verts; + + for (unsigned i = 0; i <= n; ++i) + { + *v++ = x+w-r + cverts[i*2]*r; + *v++ = y+h-r + cverts[i*2+1]*r; + } + + for (unsigned i = n; i <= n*2; ++i) + { + *v++ = x+r + cverts[i*2]*r; + *v++ = y+h-r + cverts[i*2+1]*r; + } + + for (unsigned i = n*2; i <= n*3; ++i) + { + *v++ = x+r + cverts[i*2]*r; + *v++ = y+r + cverts[i*2+1]*r; + } + + for (unsigned i = n*3; i < n*4; ++i) + { + *v++ = x+w-r + cverts[i*2]*r; + *v++ = y+r + cverts[i*2+1]*r; + } + *v++ = x+w-r + cverts[0]*r; + *v++ = y+r + cverts[1]*r; + + drawPolygon(verts, (n+1)*4, fth, col); +} + +static void drawLine(float x0, float y0, float x1, float y1, float r, float fth, unsigned int col) +{ + float dx = x1-x0; + float dy = y1-y0; + float d = sqrtf(dx*dx+dy*dy); + if (d > 0.0001f) + { + d = 1.0f/d; + dx *= d; + dy *= d; + } + float t = dx; + dx = dy; + dy = -t; + float verts[4*2]; + r -= fth; + r *= 0.5f; + if (r < 0.01f) r = 0.01f; + dx *= r; + dy *= r; + + verts[0] = x0-dx; + verts[1] = y0-dy; + + verts[2] = x0+dx; + verts[3] = y0+dy; + + verts[4] = x1+dx; + verts[5] = y1+dy; + + verts[6] = x1-dx; + verts[7] = y1-dy; + + drawPolygon(verts, 4, fth, col); +} + +bool imguiRenderGLInit(const char* fontpath) +{ + for (unsigned i = 0; i < CIRCLE_VERTS; ++i) + { + float a = (float)i/(float)CIRCLE_VERTS * (float)M_PI*2; + g_circleVerts[i*2+0] = cosf(a); + g_circleVerts[i*2+1] = sinf(a); + } + + // Load font. + FILE* fp = 0; + unsigned char* ttfBuffer = 0; + unsigned char* bmap = 0; + bool res = false; + + fp = fopen(fontpath, "rb"); + if (!fp) goto error; + fseek(fp, 0, SEEK_END); + int size = ftell(fp); + fseek(fp, 0, SEEK_SET); + + ttfBuffer = (unsigned char*)malloc(size); + if (!ttfBuffer) goto error; + + fread(ttfBuffer, 1, size, fp); + fclose(fp); + fp = 0; + + bmap = (unsigned char*)malloc(512*512); + if (!bmap) goto error; + + stbtt_BakeFontBitmap(ttfBuffer,0, 15.0f, bmap,512,512, 32,96, g_cdata); + + // can free ttf_buffer at this point + glGenTextures(1, &g_ftex); + glBindTexture(GL_TEXTURE_2D, g_ftex); + glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 512,512, 0, GL_ALPHA, GL_UNSIGNED_BYTE, bmap); + 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; +} + +void imguiRenderGLDestroy() +{ + if (g_ftex) + { + glDeleteTextures(1, &g_ftex); + g_ftex = 0; + } +} + +static void getBakedQuad(stbtt_bakedchar *chardata, int pw, int ph, int char_index, + float *xpos, float *ypos, stbtt_aligned_quad *q) +{ + stbtt_bakedchar *b = chardata + char_index; + int round_x = STBTT_ifloor(*xpos + b->xoff); + int round_y = STBTT_ifloor(*ypos - b->yoff); + + q->x0 = round_x; + q->y0 = round_y; + q->x1 = round_x + b->x1 - b->x0; + q->y1 = round_y - b->y1 + b->y0; + + q->s0 = b->x0 / (float)pw; + q->t0 = b->y0 / (float)pw; + q->s1 = b->x1 / (float)ph; + q->t1 = b->y1 / (float)ph; + + *xpos += b->xadvance; +} + +static float getTextLength(stbtt_bakedchar *chardata, const char* text) +{ + float xpos = 0; + float len = 0; + while (*text) + { + int c = (unsigned char)*text; + if (c >= 32 && c < 128) + { + stbtt_bakedchar *b = chardata + c-32; + int round_x = STBTT_ifloor((xpos + b->xoff) + 0.5); + len = round_x + b->x1 - b->x0 + 0.5f; + xpos += b->xadvance; + } + ++text; + } + return len; +} + +static void drawText(float x, float y, const char *text, int align, unsigned int col) +{ + if (!g_ftex) return; + + if (align == IMGUI_ALIGN_CENTER) + x -= getTextLength(g_cdata, text)/2; + else if (align == IMGUI_ALIGN_RIGHT) + x -= getTextLength(g_cdata, text); + + glColor4ub(col&0xff, (col>>8)&0xff, (col>>16)&0xff, (col>>24)&0xff); + + glEnable(GL_TEXTURE_2D); + + // assume orthographic projection with units = screen pixels, origin at top left + glBindTexture(GL_TEXTURE_2D, g_ftex); + + glBegin(GL_TRIANGLES); + + while (*text) + { + int c = (unsigned char)*text; + if (c >= 32 && c < 128) + { + stbtt_aligned_quad q; + getBakedQuad(g_cdata, 512,512, c-32, &x,&y,&q); + + glTexCoord2f(q.s0, q.t0); + glVertex2f(q.x0, q.y0); + glTexCoord2f(q.s1, q.t1); + glVertex2f(q.x1, q.y1); + glTexCoord2f(q.s1, q.t0); + glVertex2f(q.x1, q.y0); + + glTexCoord2f(q.s0, q.t0); + glVertex2f(q.x0, q.y0); + glTexCoord2f(q.s0, q.t1); + glVertex2f(q.x0, q.y1); + glTexCoord2f(q.s1, q.t1); + glVertex2f(q.x1, q.y1); + } + ++text; + } + + glEnd(); + glDisable(GL_TEXTURE_2D); +} + + +void imguiRenderGLDraw() +{ + const imguiGfxCmd* q = imguiGetRenderQueue(); + int nq = imguiGetRenderQueueSize(); + + glDisable(GL_SCISSOR_TEST); + for (unsigned i = 0; i < nq; ++i) + { + const imguiGfxCmd& cmd = q[i]; + if (cmd.type == IMGUI_GFXCMD_RECT) + { + if (cmd.rect.r == 0) + { + drawRect((float)cmd.rect.x+0.5f, (float)cmd.rect.y+0.5f, + (float)cmd.rect.w-1, (float)cmd.rect.h-1, + 1.0f, cmd.col); + } + else + { + drawRoundedRect((float)cmd.rect.x+0.5f, (float)cmd.rect.y+0.5f, + (float)cmd.rect.w-1, (float)cmd.rect.h-1, + (float)cmd.rect.r, 1.0f, cmd.col); + } + } + else if (cmd.type == IMGUI_GFXCMD_TRIANGLE) + { + if (cmd.flags == 1) + { + const float verts[3*2] = + { + (float)cmd.rect.x+0.5f, (float)cmd.rect.y+0.5f, + (float)cmd.rect.x+0.5f+(float)cmd.rect.w-1, (float)cmd.rect.y+0.5f+(float)cmd.rect.h/2-0.5f, + (float)cmd.rect.x+0.5f, (float)cmd.rect.y+0.5f+(float)cmd.rect.h-1, + }; + drawPolygon(verts, 3, 1.0f, cmd.col); + } + if (cmd.flags == 2) + { + const float verts[3*2] = + { + (float)cmd.rect.x+0.5f, (float)cmd.rect.y+(float)cmd.rect.h-1, + (float)cmd.rect.x+0.5f+(float)cmd.rect.w/2-0.5f, (float)cmd.rect.y+0.5f, + (float)cmd.rect.x+0.5f+(float)cmd.rect.w-1, (float)cmd.rect.y+0.5f+(float)cmd.rect.h-1, + }; + drawPolygon(verts, 3, 1.0f, cmd.col); + } + } + else if (cmd.type == IMGUI_GFXCMD_TEXT) + { + drawText(cmd.text.x, cmd.text.y, cmd.text.text, cmd.text.align, cmd.col); + } + else if (cmd.type == IMGUI_GFXCMD_SCISSOR) + { + if (cmd.flags) + { + glEnable(GL_SCISSOR_TEST); + glScissor(cmd.rect.x, cmd.rect.y, cmd.rect.w, cmd.rect.h); + } + else + { + glDisable(GL_SCISSOR_TEST); + } + } + } + glDisable(GL_SCISSOR_TEST); +} diff --git a/RecastDemo/Source/main.cpp b/RecastDemo/Source/main.cpp index 16b097ab..d7ee13cc 100644 --- a/RecastDemo/Source/main.cpp +++ b/RecastDemo/Source/main.cpp @@ -9,30 +9,27 @@ #include "SDL.h" #include "SDL_Opengl.h" - -#include "GLFont.h" #include "imgui.h" +#include "imguiRenderGL.h" #include "Recast.h" #include "RecastDebugDraw.h" #include "MeshLoaderObj.h" -#include "BuilderStatMeshSimple.h" -#include "BuilderStatMeshTiled.h" -#include "BuilderTiledMesh.h" +#include "Sample_StatMeshSimple.h" +#include "Sample_StatMeshTiled.h" +#include "Sample_TileMesh.h" #ifdef WIN32 # define snprintf _snprintf #endif -GLFont g_font; - +/*GLFont g_font; void drawText(int x, int y, int dir, const char* text, unsigned int col) { if (dir < 0) g_font.drawText((float)x - g_font.getTextLength(text), (float)y, text, col); else g_font.drawText((float)x, (float)y, text, col); -} - +}*/ struct FileList { @@ -187,6 +184,26 @@ static bool raycast(rcMeshLoaderObj& mesh, float* src, float* dst, float& tmin) return hit; } + +struct SampleItem +{ + Sample* (*create)(); + const char* name; +}; + +Sample* createStatSimple() { return new Sample_StatMeshSimple(); } +Sample* createStatTiled() { return new Sample_StatMeshTiled(); } +Sample* createTile() { return new Sample_TileMesh(); } + +static SampleItem g_samples[] = +{ +{ createStatSimple, "Static Mesh (Simple)" }, +{ createStatTiled, "Static Mesh (Tiled)" }, +{ createTile, "Tile Mesh" }, +}; +static const int g_nsamples = sizeof(g_samples)/sizeof(SampleItem); + + int main(int argc, char *argv[]) { // Init SDL @@ -204,8 +221,10 @@ int main(int argc, char *argv[]) SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); - int width = 1200; - int height = 700; + const SDL_VideoInfo* vi = SDL_GetVideoInfo(); + + int width = vi->current_w - 20; + int height = vi->current_h - 50; SDL_Surface* screen = SDL_SetVideoMode(width, height, 0, SDL_OPENGL); if (!screen) { @@ -215,12 +234,19 @@ int main(int argc, char *argv[]) SDL_WM_SetCaption("Recast Demo", 0); - if(!g_font.create("font.cfnt")) + if (!imguiRenderGLInit("DroidSans.ttf")) + { + printf("Could not init GUI renderer.\n"); + SDL_Quit(); + return -1; + } + +/* if(!g_font.create("font.cfnt")) { printf("Could not load font.\n"); SDL_Quit(); return -1; - } + }*/ float t = 0.0f; Uint32 lastTime = SDL_GetTicks(); @@ -234,18 +260,19 @@ int main(int argc, char *argv[]) bool rotate = false; float rays[3], raye[3]; bool mouseOverMenu = false; + bool showMenu = true; bool showLog = false; bool showDebugMode = true; bool showTools = true; bool showLevels = false; - bool showBuilder = false; + bool showSample = false; int propScroll = 0; int logScroll = 0; int toolsScroll = 0; int debugScroll = 0; - char builderName[64] = "Choose Builder..."; + char sampleName[64] = "Choose Builder..."; FileList meshFiles; char meshName[128] = "Choose Mesh..."; @@ -253,7 +280,11 @@ int main(int argc, char *argv[]) rcMeshLoaderObj* mesh = 0; float meshBMin[3], meshBMax[3]; - Builder* builder = 0; + float mpos[3]; + bool mposSet = false; + + + Sample* sample = 0; rcLog log; log.clear(); @@ -275,7 +306,7 @@ int main(int argc, char *argv[]) while(!done) { // Handle input events. - unsigned char mbut = 0; + int mscroll = 0; SDL_Event event; while(SDL_PollEvent(&event)) { @@ -305,28 +336,46 @@ int main(int argc, char *argv[]) else if (event.button.button == SDL_BUTTON_LEFT) { // Hit test mesh. - if (mesh && builder) + if (mesh && sample) { // Hit test mesh. float t; if (raycast(*mesh, rays, raye, t)) { - float pos[3]; - pos[0] = rays[0] + (raye[0] - rays[0])*t; - pos[1] = rays[1] + (raye[1] - rays[1])*t; - pos[2] = rays[2] + (raye[2] - rays[2])*t; - if (SDL_GetModState() & KMOD_SHIFT) - builder->setToolStartPos(pos); + if (SDL_GetModState() & KMOD_CTRL) + { + mposSet = true; + mpos[0] = rays[0] + (raye[0] - rays[0])*t; + mpos[1] = rays[1] + (raye[1] - rays[1])*t; + mpos[2] = rays[2] + (raye[2] - rays[2])*t; + } else - builder->setToolEndPos(pos); + { + float pos[3]; + pos[0] = rays[0] + (raye[0] - rays[0])*t; + pos[1] = rays[1] + (raye[1] - rays[1])*t; + pos[2] = rays[2] + (raye[2] - rays[2])*t; + + if (SDL_GetModState() & KMOD_SHIFT) + sample->setToolStartPos(pos); + else + sample->setToolEndPos(pos); + } + } + else + { + if (SDL_GetModState() & KMOD_CTRL) + { + mposSet = false; + } } } } } if (event.button.button == SDL_BUTTON_WHEELUP) - mbut |= IMGUI_MBUT_UP; + mscroll--; if (event.button.button == SDL_BUTTON_WHEELDOWN) - mbut |= IMGUI_MBUT_DOWN; + mscroll++; break; case SDL_MOUSEBUTTONUP: @@ -358,6 +407,7 @@ int main(int argc, char *argv[]) } } + unsigned char mbut = 0; if (SDL_GetMouseState(0,0) & SDL_BUTTON_LMASK) mbut |= IMGUI_MBUT_LEFT; if (SDL_GetMouseState(0,0) & SDL_BUTTON_RMASK) @@ -368,6 +418,7 @@ int main(int argc, char *argv[]) lastTime = time; t += dt; + // Update and render glViewport(0, 0, width, height); @@ -425,8 +476,8 @@ int main(int argc, char *argv[]) glEnable(GL_FOG); - if (builder) - builder->handleRender(); + if (sample) + sample->handleRender(); glDisable(GL_FOG); @@ -438,138 +489,139 @@ int main(int argc, char *argv[]) glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - if (builder) - { - builder->handleRenderOverlay(&g_font, (double*)proj, (double*)model, (int*)view); - glDisable(GL_TEXTURE_2D); - } + imguiBeginFrame(mx,my,mbut,mscroll); - imguiBeginFrame(mx,my,mbut); + if (sample) + { + sample->handleRenderOverlay((double*)proj, (double*)model, (int*)view); + } + + // Help text. + if (showMenu) + { + const char msg[] = "W/S/A/D: Move RMB: Rotate LMB: Place Start LMB+SHIFT: Place End"; + imguiDrawText(width/2, height-20, IMGUI_ALIGN_CENTER, msg, imguiRGBA(255,255,255,128)); + } mouseOverMenu = false; - - int propDiv = showDebugMode ? (int)(height*0.6f) : height; - - if (imguiBeginScrollArea(GENID, "Properties", - width-250-10, 10+height-propDiv, 250, propDiv-20, &propScroll)) - mouseOverMenu = true; - if (imguiCheck(GENID, "Show Log", showLog)) - showLog = !showLog; - if (imguiCheck(GENID, "Show Tools", showTools)) - showTools = !showTools; - if (imguiCheck(GENID, "Show Debug Mode", showDebugMode)) - showDebugMode = !showDebugMode; + if (showMenu) + { + int propDiv = showDebugMode ? (int)(height*0.6f) : height; + + if (imguiBeginScrollArea("Properties", + width-250-10, 10+height-propDiv, 250, propDiv-20, &propScroll)) + mouseOverMenu = true; + + if (imguiCheck("Show Log", showLog)) + showLog = !showLog; + if (imguiCheck("Show Tools", showTools)) + showTools = !showTools; + if (imguiCheck("Show Debug Mode", showDebugMode)) + showDebugMode = !showDebugMode; - imguiSeparator(); - imguiLabel(GENID, "Builder"); - if (imguiButton(GENID, builderName)) - { - if (showBuilder) - { - showBuilder = false; - } - else - { - showBuilder = true; - showLevels = false; - } - } - - if (builder) - { imguiSeparator(); - imguiLabel(GENID, "Input Mesh"); - if (imguiButton(GENID, meshName)) + imguiLabel("Sample"); + if (imguiButton(sampleName)) { - if (showLevels) + if (showSample) { - showLevels = false; + showSample = false; } else { - showBuilder = false; - showLevels = true; - scanDirectory("meshes", ".obj", meshFiles); + showSample = true; + showLevels = false; } } - if (mesh) + + if (sample) { - char text[64]; - snprintf(text, 64, "Verts: %.1fk Tris: %.1fk", mesh->getVertCount()/1000.0f, mesh->getTriCount()/1000.0f); - imguiValue(GENID, text); - } - imguiSeparator(); - } - - if (mesh && builder) - { - builder->handleSettings(); - - if (imguiButton(GENID, "Build")) - { - log.clear(); - if (!builder->handleBuild()) + imguiSeparator(); + imguiLabel("Input Mesh"); + if (imguiButton(meshName)) { - showLog = true; - logScroll = 0; + if (showLevels) + { + showLevels = false; + } + else + { + showSample = false; + showLevels = true; + scanDirectory("meshes", ".obj", meshFiles); + } } + if (mesh) + { + char text[64]; + snprintf(text, 64, "Verts: %.1fk Tris: %.1fk", mesh->getVertCount()/1000.0f, mesh->getTriCount()/1000.0f); + imguiValue(text); + } + imguiSeparator(); + } + + if (mesh && sample) + { + sample->handleSettings(); + + if (imguiButton("Build")) + { + log.clear(); + if (!sample->handleBuild()) + { + showLog = true; + logScroll = 0; + } + } + + imguiSeparator(); } - imguiSeparator(); - } - - - imguiEndScrollArea(); - - if (showDebugMode) - { - if (imguiBeginScrollArea(GENID, "Debug Mode", - width-250-10, 10, - 250, height-propDiv-10, &debugScroll)) - mouseOverMenu = true; - - if (builder) - builder->handleDebugMode(); - + imguiEndScrollArea(); + + if (showDebugMode) + { + if (imguiBeginScrollArea("Debug Mode", + width-250-10, 10, + 250, height-propDiv-10, &debugScroll)) + mouseOverMenu = true; + + if (sample) + sample->handleDebugMode(); + + imguiEndScrollArea(); + } } // Builder selection dialog. - if (showBuilder) + if (showSample) { static int levelScroll = 0; - if (imguiBeginScrollArea(GENID, "Choose Level", width-10-250-10-200, height-10-250, 200, 250, &levelScroll)) + if (imguiBeginScrollArea("Choose Level", width-10-250-10-200, height-10-250, 200, 250, &levelScroll)) mouseOverMenu = true; - Builder* newBuilder = 0; - if (imguiItem(GENID, "Simple Static Mesh")) + Sample* newSample = 0; + for (int i = 0; i < g_nsamples; ++i) { - newBuilder = new BuilderStatMeshSimple(); - if (newBuilder) strcpy(builderName, "Simple Static Mesh"); - } - if (imguiItem(GENID, "Tiled Static Mesh")) - { - newBuilder = new BuilderStatMeshTiled(); - if (newBuilder) strcpy(builderName, "Tiled Static Mesh"); - } - if (imguiItem(GENID, "Tiled Mesh")) - { - newBuilder = new BuilderTiledMesh(); - if (newBuilder) strcpy(builderName, "Tiled Mesh"); - } - - if (newBuilder) - { - delete builder; - builder = newBuilder; - if (mesh && builder) + if (imguiItem(g_samples[i].name)) { - builder->handleMeshChanged(mesh->getVerts(), mesh->getVertCount(), - mesh->getTris(), mesh->getNormals(), mesh->getTriCount(), - meshBMin, meshBMax); + newSample = g_samples[i].create(); + if (newSample) strcpy(sampleName, g_samples[i].name); } - showBuilder = false; + } + if (newSample) + { + delete sample; + sample = newSample; + if (mesh && sample) + { + sample->handleMeshChanged(mesh->getVerts(), mesh->getVertCount(), + mesh->getTris(), mesh->getNormals(), mesh->getTriCount(), + meshBMin, meshBMax); + } + showSample = false; } imguiEndScrollArea(); @@ -579,13 +631,13 @@ int main(int argc, char *argv[]) if (showLevels) { static int levelScroll = 0; - if (imguiBeginScrollArea(GENID, "Choose Level", width-10-250-10-200, height-10-250, 200, 250, &levelScroll)) + if (imguiBeginScrollArea("Choose Level", width-10-250-10-200, height-10-250, 200, 250, &levelScroll)) mouseOverMenu = true; int levelToLoad = -1; for (int i = 0; i < meshFiles.size; ++i) { - if (imguiItem(GENID1(i), meshFiles.files[i])) + if (imguiItem(meshFiles.files[i])) levelToLoad = i; } @@ -612,11 +664,11 @@ int main(int argc, char *argv[]) if (mesh) rcCalcBounds(mesh->getVerts(), mesh->getVertCount(), meshBMin, meshBMax); - if (builder) + if (sample) { - builder->handleMeshChanged(mesh->getVerts(), mesh->getVertCount(), - mesh->getTris(), mesh->getNormals(), mesh->getTriCount(), - meshBMin, meshBMax); + sample->handleMeshChanged(mesh->getVerts(), mesh->getVertCount(), + mesh->getTris(), mesh->getNormals(), mesh->getTriCount(), + meshBMin, meshBMax); } // Reset camera and fog to match the mesh bounds. @@ -638,43 +690,58 @@ int main(int argc, char *argv[]) } // Log - if (showLog) + if (showLog && showMenu) { - if (imguiBeginScrollArea(GENID, "Log", 10, 10, width - 300, 200, &logScroll)) + if (imguiBeginScrollArea("Log", 10, 10, width - 300, 200, &logScroll)) mouseOverMenu = true; for (int i = 0; i < log.getMessageCount(); ++i) - imguiLabel(GENID1(i), log.getMessageText(i)); + imguiLabel(log.getMessageText(i)); imguiEndScrollArea(); } // Tools - if (showTools && mesh && builder) + if (showTools && showMenu && mesh && sample) { - if (imguiBeginScrollArea(GENID, "Tools", 10, height - 10 - 200, 150, 200, &toolsScroll)) + if (imguiBeginScrollArea("Tools", 10, height - 10 - 200, 150, 200, &toolsScroll)) mouseOverMenu = true; - builder->handleTools(); + sample->handleTools(); imguiEndScrollArea(); } - // Help text. - const char msg[] = "W/S/A/D: Move RMB: Rotate LMB: Place Start LMB+SHIFT: Place End"; - const float len = g_font.getTextLength(msg); - g_font.drawText(width/2-len/2, (float)height-20.0f, msg, GLFont::RGBA(255,255,255,128)); - - glDisable(GL_TEXTURE_2D); + // Marker + if (mposSet && gluProject((GLdouble)mpos[0], (GLdouble)mpos[1], (GLdouble)mpos[2], + model, proj, view, &x, &y, &z)) + { + // Draw marker circle + glLineWidth(5.0f); + glColor4ub(240,220,0,196); + glBegin(GL_LINE_LOOP); + const float r = 25.0f; + for (int i = 0; i < 20; ++i) + { + const float a = (float)i / 20.0f * M_PI*2; + const float fx = (float)x + cosf(a)*r; + const float fy = (float)y + sinf(a)*r; + glVertex2f(fx,fy); + } + glEnd(); + glLineWidth(1.0f); + } imguiEndFrame(); - imguiRender(&drawText); + imguiRenderGLDraw(); glEnable(GL_DEPTH_TEST); SDL_GL_SwapBuffers(); } + imguiRenderGLDestroy(); + SDL_Quit(); - delete builder; + delete sample; delete mesh; return 0;