From e4239a3bdfc66e0019e2605aacca02711ebdb27d Mon Sep 17 00:00:00 2001 From: Mikko Mononen Date: Fri, 4 Dec 2009 07:27:53 +0000 Subject: [PATCH] Removed stat and tile navmeshes. Fixed examples. --- Detour/Include/DetourDebugDraw.h | 10 +- Detour/Include/DetourStatNavMesh.h | 237 --- Detour/Include/DetourStatNavMeshBuilder.h | 29 - Detour/Include/DetourTileNavMesh.h | 315 ---- Detour/Include/DetourTileNavMeshBuilder.h | 29 - Detour/Source/DetourDebugDraw.cpp | 565 ++----- Detour/Source/DetourNavMesh.cpp | 17 +- Detour/Source/DetourStatNavMesh.cpp | 953 ----------- Detour/Source/DetourStatNavMeshBuilder.cpp | 347 ---- Detour/Source/DetourTileNavMesh.cpp | 1428 ----------------- Detour/Source/DetourTileNavMeshBuilder.cpp | 215 --- RecastDemo/Bin/Recast.app/Contents/Info.plist | 2 + .../Bin/Recast.app/Contents/MacOS/Recast | Bin 642700 -> 530796 bytes .../Resources/English.lproj/MainMenu.nib | Bin 26602 -> 28213 bytes .../Xcode/Recast.xcodeproj/memon.pbxuser | 1208 +++++++------- .../Xcode/Recast.xcodeproj/project.pbxproj | 30 - RecastDemo/Include/Sample_DynMesh.h | 114 -- RecastDemo/Include/Sample_SoloMeshSimple.h | 2 +- RecastDemo/Include/Sample_SoloMeshTiled.h | 2 +- RecastDemo/Include/Sample_TileMesh.h | 29 +- RecastDemo/Source/Sample_DynMesh.cpp | 931 ----------- RecastDemo/Source/Sample_SoloMesh.cpp | 6 +- RecastDemo/Source/Sample_SoloMeshSimple.cpp | 2 +- RecastDemo/Source/Sample_SoloMeshTiled.cpp | 2 +- RecastDemo/Source/Sample_TileMesh.cpp | 212 ++- RecastDemo/Source/main.cpp | 9 +- 26 files changed, 978 insertions(+), 5716 deletions(-) delete mode 100755 Detour/Include/DetourStatNavMesh.h delete mode 100755 Detour/Include/DetourStatNavMeshBuilder.h delete mode 100644 Detour/Include/DetourTileNavMesh.h delete mode 100644 Detour/Include/DetourTileNavMeshBuilder.h delete mode 100755 Detour/Source/DetourStatNavMesh.cpp delete mode 100755 Detour/Source/DetourStatNavMeshBuilder.cpp delete mode 100644 Detour/Source/DetourTileNavMesh.cpp delete mode 100644 Detour/Source/DetourTileNavMeshBuilder.cpp delete mode 100644 RecastDemo/Include/Sample_DynMesh.h delete mode 100644 RecastDemo/Source/Sample_DynMesh.cpp diff --git a/Detour/Include/DetourDebugDraw.h b/Detour/Include/DetourDebugDraw.h index c20594ce..5f53ed45 100755 --- a/Detour/Include/DetourDebugDraw.h +++ b/Detour/Include/DetourDebugDraw.h @@ -19,18 +19,10 @@ #ifndef DETOURDEBUGDRAW_H #define DETOURDEBUGDRAW_H -#include "DetourStatNavMesh.h" -#include "DetourTileNavMesh.h" #include "DetourNavMesh.h" -void dtDebugDrawStatNavMeshPoly(const dtStatNavMesh* mesh, dtStatPolyRef ref, const float* col); -void dtDebugDrawStatNavMeshBVTree(const dtStatNavMesh* mesh); -void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh, bool drawClosedList = false); - -void dtDebugDrawTiledNavMesh(const dtTiledNavMesh* mesh); -void dtDebugDrawTiledNavMeshPoly(const dtTiledNavMesh* mesh, dtTilePolyRef ref, const float* col); - void dtDebugDrawNavMesh(const dtNavMesh* mesh, bool drawClosedList = false); +void dtDebugDrawNavMeshBVTree(const dtNavMesh* mesh); void dtDebugDrawNavMeshPoly(const dtNavMesh* mesh, dtPolyRef ref, const float* col); #endif // DETOURDEBUGDRAW_H \ No newline at end of file diff --git a/Detour/Include/DetourStatNavMesh.h b/Detour/Include/DetourStatNavMesh.h deleted file mode 100755 index 65e69f4b..00000000 --- a/Detour/Include/DetourStatNavMesh.h +++ /dev/null @@ -1,237 +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 DETOURSTATNAVMESH_H -#define DETOURSTATNAVMESH_H - -// Reference to navigation polygon. -typedef unsigned short dtStatPolyRef; - -// Maximum number of vertices per navigation polygon. -static const int DT_STAT_VERTS_PER_POLYGON = 6; - -// Structure holding the navigation polygon data. -struct dtStatPoly -{ - 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). -}; - -struct dtStatPolyDetail -{ - unsigned short vbase; // Offset to detail vertex array. - unsigned short nverts; // Number of vertices in the detail mesh. - unsigned short tbase; // Offset to detail triangle array. - unsigned short ntris; // Number of triangles. -}; - -const int DT_STAT_NAVMESH_MAGIC = 'NAVM'; -const int DT_STAT_NAVMESH_VERSION = 3; - -struct dtStatBVNode -{ - unsigned short bmin[3], bmax[3]; - int i; -}; - -struct dtStatNavMeshHeader -{ - int magic; - int version; - int npolys; - int nverts; - int nnodes; - int ndmeshes; - int ndverts; - int ndtris; - float cs; - float bmin[3], bmax[3]; - dtStatPoly* polys; - float* verts; - dtStatBVNode* bvtree; - dtStatPolyDetail* dmeshes; - float* dverts; - unsigned char* dtris; -}; - -class dtStatNavMesh -{ -public: - - dtStatNavMesh(); - ~dtStatNavMesh(); - - // Initializes the navmesh with data. - // Params: - // data - (in) Pointer to navmesh data. - // dataSize - (in) size of the navmesh data. - // ownsData - (in) Flag indicating if the navmesh should own and delete the data. - bool init(unsigned char* data, int dataSize, bool ownsData); - - // Finds the nearest navigation polygon around the center location. - // Params: - // 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. - dtStatPolyRef findNearestPoly(const float* center, const float* extents); - - // Returns polygons which touch the query box. - // Params: - // center - (in) the center of the search box. - // extents - (in) the extents of the search box. - // polys - (out) array holding the search result. - // 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, - dtStatPolyRef* polys, const int maxPolys); - - // Finds path from start polygon to end polygon. - // If target polygon canno be reached through the navigation graph, - // the last node on the array is nearest node to the end polygon. - // Params: - // startRef - (in) ref to path start polygon. - // endRef - (in) ref to path end polygon. - // 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(dtStatPolyRef startRef, dtStatPolyRef endRef, - const float* startPos, const float* endPos, - dtStatPolyRef* path, const int maxPathSize); - - // Finds a straight path from start to end locations within the corridor - // described by the path polygons. - // Start and end locations will be clamped on the corridor. - // Params: - // startPos - (in) Path start location. - // endPos - (in) Path end location. - // path - (in) Array of connected polygons describing the corridor. - // pathSize - (in) Number of polygons in path array. - // straightPath - (out) Points describing the straight path. - // 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 dtStatPolyRef* path, const int pathSize, - float* straightPath, const int maxStraightPathSize); - - // Finds intersection againts walls starting from start pos. - // Params: - // 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, 0 if no hit. - // endRef - (out) ref to the last polygon which was processed. - // 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: - // centerRef - (in) ref to the polygon where the center lies. - // centerPos - (in) center if the query circle. - // maxRadius - (in) max search radius. - // 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(dtStatPolyRef centerRef, const float* centerPos, float maxRadius, - float* hitPos, float* hitNormal); - - // Finds polygons found along the navigation graph which touch the specified circle. - // Params: - // centerRef - (in) ref to the polygon where the center lies. - // centerPos - (in) center if the query circle - // radius - (in) radius of the query circle - // 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. - // maxResult - (int) maximum capacity of search results. - // Returns: Number of results. - int findPolysAround(dtStatPolyRef centerRef, const float* centerPos, float radius, - dtStatPolyRef* resultRef, dtStatPolyRef* resultParent, float* resultCost, - const int maxResult); - - // Returns closest point on navigation polygon. - // Params: - // ref - (in) ref to the polygon. - // pos - (in) the point to check. - // closest - (out) closest point. - // Returns: true if closest point found. - bool closestPointToPoly(dtStatPolyRef ref, const float* pos, float* closest) const; - - // Returns height of the polygon at specified location. - // Params: - // ref - (in) ref to the polygon. - // pos - (in) the point where to locate the height. - // height - (out) height at the location. - // Returns: true if oer polygon. - bool getPolyHeight(dtStatPolyRef ref, const float* pos, float* height) const; - - int moveAlongPath(const float* startPos, const float* endPos, float* resultPos, - const dtStatPolyRef* path, const int pathSize); - - // Returns pointer to a polygon based on ref. - const dtStatPoly* getPolyByRef(dtStatPolyRef ref) const; - // Returns polygon index based on ref, or -1 if failed. - int getPolyIndexByRef(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 dtStatPoly* getPoly(int i) const { return &m_header->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_header->verts[i*3]; } - // Returns number of navigation polygons details. - inline int getPolyDetailCount() const { return m_header ? m_header->ndmeshes : 0; } - // Rerturns pointer to specified navigation polygon detail. - const dtStatPolyDetail* getPolyDetail(int i) const { return &m_header->dmeshes[i]; } - // Returns pointer to specified vertex. - inline const float* getDetailVertex(int i) const { return &m_header->dverts[i*3]; } - // Returns pointer to specified vertex. - inline const unsigned char* getDetailTri(int i) const { return &m_header->dtris[i*4]; } - - bool isInClosedList(dtStatPolyRef ref) const; - - int getMemUsed() const; - - inline unsigned char* getData() const { return m_data; } - inline int getDataSize() const { return m_dataSize; } - inline const dtStatNavMeshHeader* getHeader() const { return m_header; } - inline const dtStatBVNode* getBvTreeNodes() const { return m_header ? m_header->bvtree : 0; } - inline int getBvTreeNodeCount() const { return m_header ? m_header->nnodes : 0; } - -private: - - // Copies the locations of vertices of a polygon to an array. - int getPolyVerts(dtStatPolyRef ref, float* verts) const; - // Returns portal points between two polygons. - bool getPortalPoints(dtStatPolyRef from, dtStatPolyRef to, float* left, float* right) const; - // Returns edge mid point between two polygons. - bool getEdgeMidPoint(dtStatPolyRef from, dtStatPolyRef to, float* mid) const; - - unsigned char* m_data; - int m_dataSize; - - dtStatNavMeshHeader* m_header; - - class dtNodePool* m_nodePool; - class dtNodeQueue* m_openList; -}; - -#endif // DETOURSTATNAVMESH_H diff --git a/Detour/Include/DetourStatNavMeshBuilder.h b/Detour/Include/DetourStatNavMeshBuilder.h deleted file mode 100755 index 3b8f7519..00000000 --- a/Detour/Include/DetourStatNavMeshBuilder.h +++ /dev/null @@ -1,29 +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 DETOURSTATNAVMESHBUILDER_H -#define DETOURSTATNAVMESHBUILDER_H - -bool dtCreateNavMeshData(const unsigned short* verts, const int nverts, - const unsigned short* polys, const int npolys, const int nvp, - const float* bmin, const float* bmax, float cs, float ch, - const unsigned short* dmeshes, const float* dverts, const int ndverts, - const unsigned char* dtris, const int ndtris, - unsigned char** outData, int* outDataSize); - -#endif // DETOURSTATNAVMESHBUILDER_H \ No newline at end of file diff --git a/Detour/Include/DetourTileNavMesh.h b/Detour/Include/DetourTileNavMesh.h deleted file mode 100644 index d615b174..00000000 --- a/Detour/Include/DetourTileNavMesh.h +++ /dev/null @@ -1,315 +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 DETOURTILENAVMESH_H -#define DETOURTILENAVMESH_H - -// Reference to navigation polygon. -typedef unsigned int dtTilePolyRef; - -// The bits used in the poly ref. -static const int DT_TILE_REF_SALT_BITS = 12; -static const int DT_TILE_REF_TILE_BITS = 12; -static const int DT_TILE_REF_POLY_BITS = 8; -static const int DT_TILE_REF_SALT_MASK = (1<> (DT_TILE_REF_POLY_BITS+DT_TILE_REF_TILE_BITS)) & DT_TILE_REF_SALT_MASK; - it = ((ref >> DT_TILE_REF_POLY_BITS) & DT_TILE_REF_TILE_MASK) - 1; - ip = ref & DT_TILE_REF_POLY_MASK; -} - -static const int DT_TILE_LOOKUP_SIZE = DT_MAX_TILES/4; - -class dtTiledNavMesh -{ -public: - dtTiledNavMesh(); - ~dtTiledNavMesh(); - - // Initializes the nav mesh. - // Params: - // orig - (in) origin of the nav mesh tile space. - // tileSiz - (in) size of a tile. - // portalheight - (in) height of the portal region between tiles. - // Returns: True if succeed, else false. - bool init(const float* orig, float tileSize, float portalHeight); - - // Adds new tile into the navmesh. - // The add will fail if the data is in wrong format, - // there is not enough tiles left, or if there is a tile already at the location. - // Params: - // x,y - (in) Location of the new tile. - // data - (in) Data of the new tile mesh. - // dataSize - (in) Data size of the new tile mesh. - // ownsData - (in) Flag indicating if the navmesh should own and delete the data. - // Returns: True if tile was added, else false. - bool addTileAt(int x, int y, unsigned char* data, int dataSize, bool ownsData); - - // Removes tile at specified location. - // Params: - // x,y - (in) Location of the tile to remove. - // data - (out) Data associated with deleted tile. - // dataSize - (out) Size of the data associated with deleted tile. - // Returns: True if remove suceed, else false. - bool removeTileAt(int x, int y, unsigned char** data, int* dataSize); - - // Returns pointer to tile at specified location. - // Params: - // x,y - (in) Location of the tile to get. - // Returns: pointer to tile if tile exists or 0 tile does not exists. - dtTile* getTileAt(int x, int y); - - // Returns pointer to tile in the tile array. - // Params: - // i - (in) Index to the tile to retrieve, must be in range [0,DT_MAX_TILES[ - // Returns: Pointer to specified tile. - dtTile* getTile(int i); - const dtTile* getTile(int i) const; - - // Finds the nearest navigation polygon around the center location. - // Params: - // 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. - dtTilePolyRef findNearestPoly(const float* center, const float* extents); - - // Returns polygons which touch the query box. - // Params: - // center - (in) the center of the search box. - // extents - (in) the extents of the search box. - // polys - (out) array holding the search result. - // 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, - dtTilePolyRef* polys, const int maxPolys); - - // Finds path from start polygon to end polygon. - // If target polygon canno be reached through the navigation graph, - // the last node on the array is nearest node to the end polygon. - // Params: - // startRef - (in) ref to path start polygon. - // endRef - (in) ref to path end polygon. - // 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(dtTilePolyRef startRef, dtTilePolyRef endRef, - const float* startPos, const float* endPos, - dtTilePolyRef* path, const int maxPathSize); - - // Finds a straight path from start to end locations within the corridor - // described by the path polygons. - // Start and end locations will be clamped on the corridor. - // Params: - // startPos - (in) Path start location. - // endPos - (in) Path end location. - // path - (in) Array of connected polygons describing the corridor. - // pathSize - (in) Number of polygons in path array. - // straightPath - (out) Points describing the straight path. - // 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 dtTilePolyRef* path, const int pathSize, - float* straightPath, const int maxStraightPathSize); - - // Finds intersection againts walls starting from start pos. - // Params: - // 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, 0 if no hit. - // endRef - (out) ref to the last polygon which was processed. - // Returns: Number of polygons in path or 0 if failed. - int raycast(dtTilePolyRef startRef, const float* startPos, const float* endPos, - float& t, dtTilePolyRef* path, const int pathSize); - - // Returns distance to nearest wall from the specified location. - // Params: - // centerRef - (in) ref to the polygon where the center lies. - // centerPos - (in) center if the query circle. - // maxRadius - (in) max search radius. - // 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(dtTilePolyRef centerRef, const float* centerPos, float maxRadius, - float* hitPos, float* hitNormal); - - // Finds polygons found along the navigation graph which touch the specified circle. - // Params: - // centerRef - (in) ref to the polygon where the center lies. - // centerPos - (in) center if the query circle - // radius - (in) radius of the query circle - // 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. - // maxResult - (int) maximum capacity of search results. - // Returns: Number of results. - int findPolysAround(dtTilePolyRef centerRef, const float* centerPos, float radius, - dtTilePolyRef* resultRef, dtTilePolyRef* resultParent, float* resultCost, - const int maxResult); - - // Returns closest point on navigation polygon. - // Params: - // ref - (in) ref to the polygon. - // pos - (in) the point to check. - // closest - (out) closest point. - // Returns: true if closest point found. - bool closestPointToPoly(dtTilePolyRef ref, const float* pos, float* closest) const; - - // Returns height of the polygon at specified location. - // Params: - // ref - (in) ref to the polygon. - // pos - (in) the point where to locate the height. - // height - (out) height at the location. - // Returns: true if over polygon. - bool getPolyHeight(dtTilePolyRef ref, const float* pos, float* height) const; - - // Returns pointer to a polygon based on ref. - const dtTilePoly* getPolyByRef(dtTilePolyRef ref) const; - - // Returns pointer to a polygon vertices based on ref. - const float* getPolyVertsByRef(dtTilePolyRef ref) const; - - // Returns pointer to a polygon link based on ref. - const dtTileLink* getPolyLinksByRef(dtTilePolyRef ref) const; - -private: - - // Returns base id for the tile. - dtTilePolyRef getTileId(dtTile* tile); - // Returns neighbour tile based on side. - dtTile* getNeighbourTileAt(int x, int y, int side); - // Returns all polygons in neighbour tile based on portal defined by the segment. - int findConnectingPolys(const float* va, const float* vb, - dtTile* tile, int side, - dtTilePolyRef* con, float* conarea, int maxcon); - // Builds internal polygons links for a tile. - void buildIntLinks(dtTile* tile); - // Builds external polygon links for a tile. - void buildExtLinks(dtTile* tile, dtTile* target, int side); - // Removes external links at specified side. - void removeExtLinks(dtTile* tile, int side); - // Queries polygons within a tile. - int queryTilePolygons(dtTile* tile, const float* qmin, const float* qmax, - dtTilePolyRef* polys, const int maxPolys); - - float getCost(dtTilePolyRef prev, dtTilePolyRef from, dtTilePolyRef to) const; - float getFirstCost(const float* pos, dtTilePolyRef from, dtTilePolyRef to) const; - float getLastCost(dtTilePolyRef from, dtTilePolyRef to, const float* pos) const; - float getHeuristic(const float* from, const float* to) const; - - // Returns portal points between two polygons. - bool getPortalPoints(dtTilePolyRef from, dtTilePolyRef to, float* left, float* right) const; - // Returns edge mid point between two polygons. - bool getEdgeMidPoint(dtTilePolyRef from, dtTilePolyRef to, float* mid) const; - - float m_orig[3]; - float m_tileSize; - float m_portalHeight; - - dtTile* m_posLookup[DT_TILE_LOOKUP_SIZE]; - dtTile* m_nextFree; - dtTile m_tiles[DT_MAX_TILES]; - - dtTileLink* m_tmpLinks; - int m_ntmpLinks; - - class dtNodePool* m_nodePool; - class dtNodeQueue* m_openList; -}; - -#endif // DETOURTILENAVMESH_H diff --git a/Detour/Include/DetourTileNavMeshBuilder.h b/Detour/Include/DetourTileNavMeshBuilder.h deleted file mode 100644 index 643dec1e..00000000 --- a/Detour/Include/DetourTileNavMeshBuilder.h +++ /dev/null @@ -1,29 +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 DETOURTILEDNAVMESHBUILDER_H -#define DETOURTILEDNAVMESHBUILDER_H - -bool dtCreateNavMeshTileData(const unsigned short* verts, const int nverts, - const unsigned short* polys, const int npolys, const int nvp, - const unsigned short* dmeshes, const float* dverts, const int ndverts, - const unsigned char* dtris, const int ndtris, - const float* bmin, const float* bmax, float cs, float ch, int tileSize, int walkableClimb, - unsigned char** outData, int* outDataSize); - -#endif // DETOURTILEDNAVMESHBUILDER_H \ No newline at end of file diff --git a/Detour/Source/DetourDebugDraw.cpp b/Detour/Source/DetourDebugDraw.cpp index e15e3eb7..12db3174 100755 --- a/Detour/Source/DetourDebugDraw.cpp +++ b/Detour/Source/DetourDebugDraw.cpp @@ -17,57 +17,10 @@ // #include "DetourDebugDraw.h" -#include "DetourStatNavMesh.h" -#include "DetourTileNavMesh.h" #include "DetourNavMesh.h" #include "SDL.h" #include "SDL_opengl.h" -void dtDebugDrawStatNavMeshPoly(const dtStatNavMesh* mesh, dtStatPolyRef ref, const float* col) -{ - int idx = mesh->getPolyIndexByRef(ref); - if (idx == -1) return; - - glColor4f(col[0],col[1],col[2],0.25f); - - if (mesh->getPolyDetailCount()) - { - const dtStatPoly* p = mesh->getPoly(idx); - const dtStatPolyDetail* pd = mesh->getPolyDetail(idx); - glBegin(GL_TRIANGLES); - for (int j = 0; j < pd->ntris; ++j) - { - const unsigned char* t = mesh->getDetailTri(pd->tbase+j); - for (int k = 0; k < 3; ++k) - { - if (t[k] < p->nv) - glVertex3fv(mesh->getVertex(p->v[t[k]])); - else - glVertex3fv(mesh->getDetailVertex(pd->vbase+(t[k]-p->nv))); - } - } - glEnd(); - } - else - { - const dtStatPoly* p = mesh->getPoly(idx); - glBegin(GL_TRIANGLES); - unsigned short vi[3]; - for (int j = 2; j < (int)p->nv; ++j) - { - vi[0] = p->v[0]; - vi[1] = p->v[j-1]; - vi[2] = p->v[j]; - for (int k = 0; k < 3; ++k) - { - const float* v = mesh->getVertex(vi[k]); - glVertex3f(v[0], v[1]+0.2f, v[2]); - } - } - glEnd(); - } -} - static void drawBoxWire(float minx, float miny, float minz, float maxx, float maxy, float maxz, const float* col) { glColor4fv(col); @@ -103,32 +56,6 @@ static void drawBoxWire(float minx, float miny, float minz, float maxx, float ma glVertex3f(minx, maxy, maxz); } -void dtDebugDrawStatNavMeshBVTree(const dtStatNavMesh* mesh) -{ - const float col[] = { 1,1,1,0.5f }; - const dtStatNavMeshHeader* hdr = mesh->getHeader(); - - const dtStatBVNode* nodes = mesh->getBvTreeNodes(); - int nnodes = mesh->getBvTreeNodeCount(); - - glBegin(GL_LINES); - - for (int i = 0; i < nnodes; ++i) - { - const dtStatBVNode* n = &nodes[i]; - if (n->i < 0) // Leaf indices are positive. - continue; - drawBoxWire(hdr->bmin[0] + n->bmin[0]*hdr->cs, - hdr->bmin[1] + n->bmin[1]*hdr->cs, - hdr->bmin[2] + n->bmin[2]*hdr->cs, - hdr->bmin[0] + n->bmax[0]*hdr->cs, - hdr->bmin[1] + n->bmax[1]*hdr->cs, - hdr->bmin[2] + n->bmax[2]*hdr->cs, col); - } - glEnd(); -} - - static float distancePtLine2d(const float* pt, const float* p, const float* q) { float pqx = q[0] - p[0]; @@ -143,363 +70,6 @@ static float distancePtLine2d(const float* pt, const float* p, const float* q) return dx*dx + dz*dz; } -static void drawStatMeshPolyBoundaries(const dtStatNavMesh* mesh, bool inner) -{ - static const float thr = 0.01f*0.01f; - - glBegin(GL_LINES); - for (int i = 0; i < mesh->getPolyCount(); ++i) - { - const dtStatPoly* p = mesh->getPoly(i); - const dtStatPolyDetail* pd = mesh->getPolyDetail(i); - - for (int j = 0, nj = (int)p->nv; j < nj; ++j) - { - if (inner) - { - // Skip non-connected edges. - if (p->n[j] == 0) continue; - } - else - { - // Skip connected edges. - if (p->n[j] != 0) continue; - } - - const float* v0 = mesh->getVertex(p->v[j]); - const float* v1 = mesh->getVertex(p->v[(j+1) % nj]); - - // Draw detail mesh edges which align with the actual poly edge. - // This is really slow. - for (int k = 0; k < pd->ntris; ++k) - { - const unsigned char* t = mesh->getDetailTri(pd->tbase+k); - const float* tv[3]; - for (int m = 0; m < 3; ++m) - { - if (t[m] < p->nv) - tv[m] = mesh->getVertex(p->v[t[m]]); - else - tv[m] = mesh->getDetailVertex(pd->vbase+(t[m]-p->nv)); - } - for (int m = 0, n = 2; m < 3; n=m++) - { - if (((t[3] >> (n*2)) & 0x3) == 0) continue; // Skip inner edges. - if (distancePtLine2d(tv[n],v0,v1) < thr && - distancePtLine2d(tv[m],v0,v1) < thr) - { - glVertex3fv(tv[n]); - glVertex3fv(tv[m]); - } - } - } - } - } - glEnd(); -} - -void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh, bool drawClosedList) -{ - glBegin(GL_TRIANGLES); - for (int i = 0; i < mesh->getPolyDetailCount(); ++i) - { - const dtStatPoly* p = mesh->getPoly(i); - const dtStatPolyDetail* pd = mesh->getPolyDetail(i); - - if (drawClosedList && mesh->isInClosedList(i+1)) - glColor4ub(255,196,0,64); - else - glColor4ub(0,196,255,64); - - for (int j = 0; j < pd->ntris; ++j) - { - const unsigned char* t = mesh->getDetailTri(pd->tbase+j); - for (int k = 0; k < 3; ++k) - { - if (t[k] < p->nv) - glVertex3fv(mesh->getVertex(p->v[t[k]])); - else - glVertex3fv(mesh->getDetailVertex(pd->vbase+(t[k]-p->nv))); - } - } - } - glEnd(); - - // Draw inter poly boundaries - glColor4ub(0,48,64,32); - glLineWidth(1.5f); - drawStatMeshPolyBoundaries(mesh, true); - - // Draw outer poly boundaries - glLineWidth(2.5f); - glColor4ub(0,48,64,220); - drawStatMeshPolyBoundaries(mesh, false); - - glLineWidth(1.0f); - - glPointSize(3.0f); - glColor4ub(0,0,0,196); - glBegin(GL_POINTS); - for (int i = 0; i < mesh->getVertexCount(); ++i) - { - const float* v = mesh->getVertex(i); - glVertex3f(v[0], v[1], v[2]); - } - glEnd(); - glPointSize(1.0f); -} - - -static void drawTilePolyBoundaries(const dtTileHeader* header, bool inner) -{ - static const float thr = 0.01f*0.01f; - - glBegin(GL_LINES); - for (int i = 0; i < header->npolys; ++i) - { - const dtTilePoly* p = &header->polys[i]; - const dtTilePolyDetail* pd = &header->dmeshes[i]; - - for (int j = 0, nj = (int)p->nv; j < nj; ++j) - { - if (inner) - { - if (p->n[j] == 0) continue; - if (p->n[j] & 0x8000) - { - bool con = false; - for (int k = 0; k < p->nlinks; ++k) - { - if (header->links[p->links+k].e == j) - { - con = true; - break; - } - } - if (con) - glColor4ub(255,255,255,128); - else - glColor4ub(0,0,0,128); - } - else - glColor4ub(0,48,64,32); - } - else - { - if (p->n[j] != 0) continue; - } - - const float* v0 = &header->verts[p->v[j]*3]; - const float* v1 = &header->verts[p->v[(j+1)%nj]*3]; - - // Draw detail mesh edges which align with the actual poly edge. - // This is really slow. - for (int k = 0; k < pd->ntris; ++k) - { - const unsigned char* t = &header->dtris[(pd->tbase+k)*4]; - const float* tv[3]; - for (int m = 0; m < 3; ++m) - { - if (t[m] < p->nv) - tv[m] = &header->verts[p->v[t[m]]*3]; - else - tv[m] = &header->dverts[(pd->vbase+(t[m]-p->nv))*3]; - } - for (int m = 0, n = 2; m < 3; n=m++) - { - if (((t[3] >> (n*2)) & 0x3) == 0) continue; // Skip inner detail edges. - if (distancePtLine2d(tv[n],v0,v1) < thr && - distancePtLine2d(tv[m],v0,v1) < thr) - { - glVertex3fv(tv[n]); - glVertex3fv(tv[m]); - } - } - } - } - } - glEnd(); -} - -static void drawTile(const dtTileHeader* header) -{ - glBegin(GL_TRIANGLES); - for (int i = 0; i < header->npolys; ++i) - { - const dtTilePoly* p = &header->polys[i]; - const dtTilePolyDetail* pd = &header->dmeshes[i]; - - glColor4ub(0,196,255,64); - - for (int j = 0; j < pd->ntris; ++j) - { - const unsigned char* t = &header->dtris[(pd->tbase+j)*4]; - for (int k = 0; k < 3; ++k) - { - if (t[k] < p->nv) - glVertex3fv(&header->verts[p->v[t[k]]*3]); - else - glVertex3fv(&header->dverts[(pd->vbase+t[k]-p->nv)*3]); - } - } - } - glEnd(); - - // Draw inter poly boundaries - glColor4ub(0,48,64,32); - glLineWidth(1.5f); - - drawTilePolyBoundaries(header, true); - - // Draw outer poly boundaries - glLineWidth(2.5f); - glColor4ub(0,48,64,220); - - drawTilePolyBoundaries(header, false); - - glLineWidth(1.0f); - - glPointSize(3.0f); - glColor4ub(0,0,0,196); - glBegin(GL_POINTS); - for (int i = 0; i < header->nverts; ++i) - { - const float* v = &header->verts[i*3]; - glVertex3f(v[0], v[1], v[2]); - } - glEnd(); - glPointSize(1.0f); - - // Draw portals -/* glBegin(GL_LINES); - - for (int i = 0; i < header->nportals[0]; ++i) - { - const dtTilePortal* p = &header->portals[0][i]; - if (p->ncon) - glColor4ub(255,255,255,192); - else - glColor4ub(255,0,0,64); - glVertex3f(header->bmax[0]-0.1f, p->bmin[1], p->bmin[0]); - glVertex3f(header->bmax[0]-0.1f, p->bmax[1], p->bmin[0]); - - glVertex3f(header->bmax[0]-0.1f, p->bmax[1], p->bmin[0]); - glVertex3f(header->bmax[0]-0.1f, p->bmax[1], p->bmax[0]); - - glVertex3f(header->bmax[0]-0.1f, p->bmax[1], p->bmax[0]); - glVertex3f(header->bmax[0]-0.1f, p->bmin[1], p->bmax[0]); - - glVertex3f(header->bmax[0]-0.1f, p->bmin[1], p->bmax[0]); - glVertex3f(header->bmax[0]-0.1f, p->bmin[1], p->bmin[0]); - } - for (int i = 0; i < header->nportals[1]; ++i) - { - const dtTilePortal* p = &header->portals[1][i]; - if (p->ncon) - glColor4ub(255,255,255,192); - else - glColor4ub(255,0,0,64); - glVertex3f(p->bmin[0], p->bmin[1], header->bmax[2]-0.1f); - glVertex3f(p->bmin[0], p->bmax[1], header->bmax[2]-0.1f); - - glVertex3f(p->bmin[0], p->bmax[1], header->bmax[2]-0.1f); - glVertex3f(p->bmax[0], p->bmax[1], header->bmax[2]-0.1f); - - glVertex3f(p->bmax[0], p->bmax[1], header->bmax[2]-0.1f); - glVertex3f(p->bmax[0], p->bmin[1], header->bmax[2]-0.1f); - - glVertex3f(p->bmax[0], p->bmin[1], header->bmax[2]-0.1f); - glVertex3f(p->bmin[0], p->bmin[1], header->bmax[2]-0.1f); - } - for (int i = 0; i < header->nportals[2]; ++i) - { - const dtTilePortal* p = &header->portals[2][i]; - if (p->ncon) - glColor4ub(255,255,255,192); - else - glColor4ub(255,0,0,64); - glVertex3f(header->bmin[0]+0.1f, p->bmin[1], p->bmin[0]); - glVertex3f(header->bmin[0]+0.1f, p->bmax[1], p->bmin[0]); - - glVertex3f(header->bmin[0]+0.1f, p->bmax[1], p->bmin[0]); - glVertex3f(header->bmin[0]+0.1f, p->bmax[1], p->bmax[0]); - - glVertex3f(header->bmin[0]+0.1f, p->bmax[1], p->bmax[0]); - glVertex3f(header->bmin[0]+0.1f, p->bmin[1], p->bmax[0]); - - glVertex3f(header->bmin[0]+0.1f, p->bmin[1], p->bmax[0]); - glVertex3f(header->bmin[0]+0.1f, p->bmin[1], p->bmin[0]); - } - for (int i = 0; i < header->nportals[3]; ++i) - { - const dtTilePortal* p = &header->portals[3][i]; - if (p->ncon) - glColor4ub(255,255,255,192); - else - glColor4ub(255,0,0,64); - glVertex3f(p->bmin[0], p->bmin[1], header->bmin[2]+0.1f); - glVertex3f(p->bmin[0], p->bmax[1], header->bmin[2]+0.1f); - - glVertex3f(p->bmin[0], p->bmax[1], header->bmin[2]+0.1f); - glVertex3f(p->bmax[0], p->bmax[1], header->bmin[2]+0.1f); - - glVertex3f(p->bmax[0], p->bmax[1], header->bmin[2]+0.1f); - glVertex3f(p->bmax[0], p->bmin[1], header->bmin[2]+0.1f); - - glVertex3f(p->bmax[0], p->bmin[1], header->bmin[2]+0.1f); - glVertex3f(p->bmin[0], p->bmin[1], header->bmin[2]+0.1f); - } - glEnd();*/ -} - -void dtDebugDrawTiledNavMesh(const dtTiledNavMesh* mesh) -{ - if (!mesh) return; - - for (int i = 0; i < DT_MAX_TILES; ++i) - { - const dtTile* tile = mesh->getTile(i); - if (!tile->header) continue; - - drawTile(tile->header); - } -} - -void dtDebugDrawTiledNavMeshPoly(const dtTiledNavMesh* mesh, dtTilePolyRef ref, const float* col) -{ - unsigned int salt, it, ip; - dtDecodeTileId(ref, salt, it, ip); - if (it >= DT_MAX_TILES) return; - const dtTile* tile = mesh->getTile(it); - if (tile->salt != salt || tile->header == 0) return; - const dtTileHeader* header = tile->header; - - if (ip >= (unsigned int)header->npolys) return; - - glColor4f(col[0],col[1],col[2],0.25f); - - const dtTilePoly* p = &header->polys[ip]; - const dtTilePolyDetail* pd = &header->dmeshes[ip]; - - glBegin(GL_TRIANGLES); - for (int i = 0; i < pd->ntris; ++i) - { - const unsigned char* t = &header->dtris[(pd->tbase+i)*4]; - for (int j = 0; j < 3; ++j) - { - if (t[j] < p->nv) - glVertex3fv(&header->verts[p->v[t[j]]*3]); - else - glVertex3fv(&header->dverts[(pd->vbase+t[j]-p->nv)*3]); - } - } - glEnd(); -} - - - - - static void drawPolyBoundaries(const dtMeshHeader* header, bool inner) { static const float thr = 0.01f*0.01f; @@ -626,26 +196,6 @@ static void drawMeshTile(const dtNavMesh* mesh, const dtMeshTile* tile, bool dra glEnd(); glPointSize(1.0f); -/* - // Draw BV nodes. - const float col[] = { 1,1,1,0.5f }; - const float cs = 1.0f / header->bvquant; - glBegin(GL_LINES); - for (int i = 0; i < header->nbvtree; ++i) - { - const dtBVNode* n = &header->bvtree[i]; - if (n->i < 0) // Leaf indices are positive. - continue; - drawBoxWire(header->bmin[0] + n->bmin[0]*cs, - header->bmin[1] + n->bmin[1]*cs, - header->bmin[2] + n->bmin[2]*cs, - header->bmin[0] + n->bmax[0]*cs, - header->bmin[1] + n->bmax[1]*cs, - header->bmin[2] + n->bmax[2]*cs, col); - } - glEnd(); -*/ - // Draw portals /* glBegin(GL_LINES); @@ -741,6 +291,121 @@ void dtDebugDrawNavMesh(const dtNavMesh* mesh, bool drawClosedList) } +static void drawMeshTileBVTree(const dtNavMesh* mesh, const dtMeshTile* tile) +{ + const dtMeshHeader* header = tile->header; + + // Draw BV nodes. + const float col[] = { 1,1,1,0.5f }; + const float cs = 1.0f / header->bvquant; + glBegin(GL_LINES); + for (int i = 0; i < header->nbvtree; ++i) + { + const dtBVNode* n = &header->bvtree[i]; + if (n->i < 0) // Leaf indices are positive. + continue; + drawBoxWire(header->bmin[0] + n->bmin[0]*cs, + header->bmin[1] + n->bmin[1]*cs, + header->bmin[2] + n->bmin[2]*cs, + header->bmin[0] + n->bmax[0]*cs, + header->bmin[1] + n->bmax[1]*cs, + header->bmin[2] + n->bmax[2]*cs, col); + } + glEnd(); + + // Draw portals + /* glBegin(GL_LINES); + + for (int i = 0; i < header->nportals[0]; ++i) + { + const dtTilePortal* p = &header->portals[0][i]; + if (p->ncon) + glColor4ub(255,255,255,192); + else + glColor4ub(255,0,0,64); + glVertex3f(header->bmax[0]-0.1f, p->bmin[1], p->bmin[0]); + glVertex3f(header->bmax[0]-0.1f, p->bmax[1], p->bmin[0]); + + glVertex3f(header->bmax[0]-0.1f, p->bmax[1], p->bmin[0]); + glVertex3f(header->bmax[0]-0.1f, p->bmax[1], p->bmax[0]); + + glVertex3f(header->bmax[0]-0.1f, p->bmax[1], p->bmax[0]); + glVertex3f(header->bmax[0]-0.1f, p->bmin[1], p->bmax[0]); + + glVertex3f(header->bmax[0]-0.1f, p->bmin[1], p->bmax[0]); + glVertex3f(header->bmax[0]-0.1f, p->bmin[1], p->bmin[0]); + } + for (int i = 0; i < header->nportals[1]; ++i) + { + const dtTilePortal* p = &header->portals[1][i]; + if (p->ncon) + glColor4ub(255,255,255,192); + else + glColor4ub(255,0,0,64); + glVertex3f(p->bmin[0], p->bmin[1], header->bmax[2]-0.1f); + glVertex3f(p->bmin[0], p->bmax[1], header->bmax[2]-0.1f); + + glVertex3f(p->bmin[0], p->bmax[1], header->bmax[2]-0.1f); + glVertex3f(p->bmax[0], p->bmax[1], header->bmax[2]-0.1f); + + glVertex3f(p->bmax[0], p->bmax[1], header->bmax[2]-0.1f); + glVertex3f(p->bmax[0], p->bmin[1], header->bmax[2]-0.1f); + + glVertex3f(p->bmax[0], p->bmin[1], header->bmax[2]-0.1f); + glVertex3f(p->bmin[0], p->bmin[1], header->bmax[2]-0.1f); + } + for (int i = 0; i < header->nportals[2]; ++i) + { + const dtTilePortal* p = &header->portals[2][i]; + if (p->ncon) + glColor4ub(255,255,255,192); + else + glColor4ub(255,0,0,64); + glVertex3f(header->bmin[0]+0.1f, p->bmin[1], p->bmin[0]); + glVertex3f(header->bmin[0]+0.1f, p->bmax[1], p->bmin[0]); + + glVertex3f(header->bmin[0]+0.1f, p->bmax[1], p->bmin[0]); + glVertex3f(header->bmin[0]+0.1f, p->bmax[1], p->bmax[0]); + + glVertex3f(header->bmin[0]+0.1f, p->bmax[1], p->bmax[0]); + glVertex3f(header->bmin[0]+0.1f, p->bmin[1], p->bmax[0]); + + glVertex3f(header->bmin[0]+0.1f, p->bmin[1], p->bmax[0]); + glVertex3f(header->bmin[0]+0.1f, p->bmin[1], p->bmin[0]); + } + for (int i = 0; i < header->nportals[3]; ++i) + { + const dtTilePortal* p = &header->portals[3][i]; + if (p->ncon) + glColor4ub(255,255,255,192); + else + glColor4ub(255,0,0,64); + glVertex3f(p->bmin[0], p->bmin[1], header->bmin[2]+0.1f); + glVertex3f(p->bmin[0], p->bmax[1], header->bmin[2]+0.1f); + + glVertex3f(p->bmin[0], p->bmax[1], header->bmin[2]+0.1f); + glVertex3f(p->bmax[0], p->bmax[1], header->bmin[2]+0.1f); + + glVertex3f(p->bmax[0], p->bmax[1], header->bmin[2]+0.1f); + glVertex3f(p->bmax[0], p->bmin[1], header->bmin[2]+0.1f); + + glVertex3f(p->bmax[0], p->bmin[1], header->bmin[2]+0.1f); + glVertex3f(p->bmin[0], p->bmin[1], header->bmin[2]+0.1f); + } + glEnd();*/ +} + +void dtDebugDrawNavMeshBVTree(const dtNavMesh* mesh) +{ + if (!mesh) return; + + for (int i = 0; i < mesh->getMaxTiles(); ++i) + { + const dtMeshTile* tile = mesh->getTile(i); + if (!tile->header) continue; + drawMeshTileBVTree(mesh, tile); + } +} void dtDebugDrawNavMeshPoly(const dtNavMesh* mesh, dtPolyRef ref, const float* col) { diff --git a/Detour/Source/DetourNavMesh.cpp b/Detour/Source/DetourNavMesh.cpp index 005ce815..c83012bf 100644 --- a/Detour/Source/DetourNavMesh.cpp +++ b/Detour/Source/DetourNavMesh.cpp @@ -76,19 +76,30 @@ inline int computeTileHash(int x, int y, const int mask) return (int)(n & mask); } + + ////////////////////////////////////////////////////////////////////////////////////////// dtNavMesh::dtNavMesh() : m_tileWidth(0), m_tileHeight(0), m_portalHeight(0), + m_maxTiles(0), + m_tileLutSize(0), + m_tileLutMask(0), + m_posLookup(0), m_nextFree(0), + m_tiles(0), m_tmpLinks(0), m_ntmpLinks(0), + m_saltBits(0), + m_tileBits(0), + m_polyBits(0), m_nodePool(0), - m_openList(0), - m_posLookup(0), - m_tiles(0) + m_openList(0) { + m_orig[0] = 0; + m_orig[1] = 0; + m_orig[2] = 0; } dtNavMesh::~dtNavMesh() diff --git a/Detour/Source/DetourStatNavMesh.cpp b/Detour/Source/DetourStatNavMesh.cpp deleted file mode 100755 index c1651899..00000000 --- a/Detour/Source/DetourStatNavMesh.cpp +++ /dev/null @@ -1,953 +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 -#include -#include -#include -#include "DetourStatNavMesh.h" -#include "DetourNode.h" -#include "DetourCommon.h" - - -////////////////////////////////////////////////////////////////////////////////////////// -dtStatNavMesh::dtStatNavMesh() : - m_data(0), - m_dataSize(0), - m_header(0), - m_nodePool(0), - m_openList(0) -{ -} - -dtStatNavMesh::~dtStatNavMesh() -{ - delete m_nodePool; - delete m_openList; - if (m_data) - delete [] m_data; -} - -bool dtStatNavMesh::init(unsigned char* data, int dataSize, bool ownsData) -{ - dtStatNavMeshHeader* header = (dtStatNavMeshHeader*)data; - - if (header->magic != DT_STAT_NAVMESH_MAGIC) - return false; - if (header->version != DT_STAT_NAVMESH_VERSION) - return false; - - const int headerSize = align4(sizeof(dtStatNavMeshHeader)); - const int vertsSize = align4(sizeof(float)*3*header->nverts); - const int polysSize = align4(sizeof(dtStatPoly)*header->npolys); - const int nodesSize = align4(sizeof(dtStatBVNode)*header->npolys*2); - const int detailMeshesSize = align4(sizeof(dtStatPolyDetail)*header->ndmeshes); - const int detailVertsSize = align4(sizeof(float)*3*header->ndverts); - const int detailTrisSize = align4(sizeof(unsigned char)*4*header->ndtris); - - - unsigned char* d = data + headerSize; - header->verts = (float*)d; d += vertsSize; - header->polys = (dtStatPoly*)d; d += polysSize; - header->bvtree = (dtStatBVNode*)d; d += nodesSize; - header->dmeshes = (dtStatPolyDetail*)d; d += detailMeshesSize; - header->dverts = (float*)d; d += detailVertsSize; - header->dtris = (unsigned char*)d; d += detailTrisSize; - - m_nodePool = new dtNodePool(2048, 256); - if (!m_nodePool) - return false; - - m_openList = new dtNodeQueue(2048); - if (!m_openList) - return false; - - if (ownsData) - { - m_data = data; - m_dataSize = dataSize; - } - - m_header = header; - - return true; -} - -const dtStatPoly* dtStatNavMesh::getPolyByRef(dtStatPolyRef ref) const -{ - if (!m_header || ref == 0 || (int)ref > m_header->npolys) return 0; - return &m_header->polys[ref-1]; -} - -int dtStatNavMesh::getPolyIndexByRef(dtStatPolyRef ref) const -{ - if (!m_header || ref == 0 || (int)ref > m_header->npolys) return -1; - return (int)ref-1; -} - -int dtStatNavMesh::findPath(dtStatPolyRef startRef, dtStatPolyRef endRef, - const float* startPos, const float* endPos, - dtStatPolyRef* path, const int maxPathSize) -{ - if (!m_header) return 0; - - if (!startRef || !endRef) - return 0; - - if (!maxPathSize) - return 0; - - if (startRef == endRef) - { - path[0] = startRef; - return 1; - } - - m_nodePool->clear(); - m_openList->clear(); - - static const float H_SCALE = 1.1f; // Heuristic scale. - - dtNode* startNode = m_nodePool->getNode(startRef); - startNode->pidx = 0; - startNode->cost = 0; - startNode->total = vdist(startPos, endPos) * H_SCALE; - startNode->id = startRef; - startNode->flags = DT_NODE_OPEN; - m_openList->push(startNode); - - dtNode* lastBestNode = startNode; - float lastBestNodeCost = startNode->total; - while (!m_openList->empty()) - { - dtNode* bestNode = m_openList->pop(); - - if (bestNode->id == endRef) - { - lastBestNode = bestNode; - break; - } - - const dtStatPoly* poly = getPoly(bestNode->id-1); - for (int i = 0; i < (int)poly->nv; ++i) - { - dtStatPolyRef neighbour = poly->n[i]; - if (neighbour) - { - // Skip parent node. - if (bestNode->pidx && m_nodePool->getNodeAtIdx(bestNode->pidx)->id == neighbour) - continue; - - dtNode* parent = bestNode; - dtNode newNode; - newNode.pidx = m_nodePool->getNodeIdx(parent); - newNode.id = neighbour; - - // Calculate cost. - float p0[3], p1[3]; - if (!parent->pidx) - vcopy(p0, startPos); - else - getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); - getEdgeMidPoint(parent->id, newNode.id, p1); - newNode.cost = parent->cost + vdist(p0,p1); - // Special case for last node. - if (newNode.id == endRef) - newNode.cost += vdist(p1, endPos); - - // Heuristic - const float h = vdist(p1,endPos)*H_SCALE; - newNode.total = newNode.cost + h; - - dtNode* actualNode = m_nodePool->getNode(newNode.id); - if (!actualNode) - continue; - - if (!((actualNode->flags & DT_NODE_OPEN) && newNode.total > actualNode->total) && - !((actualNode->flags & DT_NODE_CLOSED) && newNode.total > actualNode->total)) - { - actualNode->flags &= ~DT_NODE_CLOSED; - actualNode->pidx = newNode.pidx; - actualNode->cost = newNode.cost; - actualNode->total = newNode.total; - - if (h < lastBestNodeCost) - { - lastBestNodeCost = h; - lastBestNode = actualNode; - } - - if (actualNode->flags & DT_NODE_OPEN) - { - m_openList->modify(actualNode); - } - else - { - actualNode->flags |= DT_NODE_OPEN; - m_openList->push(actualNode); - } - } - } - } - bestNode->flags |= DT_NODE_CLOSED; - } - - // Reverse the path. - dtNode* prev = 0; - dtNode* node = lastBestNode; - do - { - dtNode* next = m_nodePool->getNodeAtIdx(node->pidx); - node->pidx = m_nodePool->getNodeIdx(prev); - prev = node; - node = next; - } - while (node); - - // Store path - node = prev; - int n = 0; - do - { - path[n++] = node->id; - node = m_nodePool->getNodeAtIdx(node->pidx); - } - while (node && n < maxPathSize); - - return n; -} - -bool dtStatNavMesh::closestPointToPoly(dtStatPolyRef ref, const float* pos, float* closest) const -{ - int idx = getPolyIndexByRef(ref); - if (idx == -1) - return false; - - float closestDistSqr = FLT_MAX; - const dtStatPoly* p = getPoly(idx); - const dtStatPolyDetail* pd = getPolyDetail(idx); - - for (int j = 0; j < pd->ntris; ++j) - { - const unsigned char* t = getDetailTri(pd->tbase+j); - const float* v[3]; - for (int k = 0; k < 3; ++k) - { - if (t[k] < p->nv) - v[k] = getVertex(p->v[t[k]]); - else - v[k] = getDetailVertex(pd->vbase+(t[k]-p->nv)); - } - float pt[3]; - closestPtPointTriangle(pt, pos, v[0], v[1], v[2]); - float d = vdistSqr(pos, pt); - if (d < closestDistSqr) - { - vcopy(closest, pt); - closestDistSqr = d; - } - } - - return true; -} - -bool dtStatNavMesh::getPolyHeight(dtStatPolyRef ref, const float* pos, float* height) const -{ - int idx = getPolyIndexByRef(ref); - if (idx == -1) - return false; - - const dtStatPoly* p = getPoly(idx); - const dtStatPolyDetail* pd = getPolyDetail(idx); - - for (int i = 0; i < pd->ntris; ++i) - { - const unsigned char* t = getDetailTri(pd->tbase+i); - const float* v[3]; - for (int j = 0; j < 3; ++j) - { - if (t[j] < p->nv) - v[j] = getVertex(p->v[t[j]]); - else - v[j] = getDetailVertex(pd->vbase+(t[j]-p->nv)); - } - float h; - if (closestHeightPointTriangle(pos, v[0], v[1], v[2], h)) - { - if (height) - *height = h; - return true; - } - } - - return false; -} - -int dtStatNavMesh::findStraightPath(const float* startPos, const float* endPos, - const dtStatPolyRef* path, const int pathSize, - float* straightPath, const int maxStraightPathSize) -{ - if (!m_header) return 0; - - if (!maxStraightPathSize) - return 0; - - if (!path[0]) - return 0; - - int straightPathSize = 0; - - float closestStartPos[3]; - if (!closestPointToPoly(path[0], startPos, closestStartPos)) - return 0; - - // Add start point. - vcopy(&straightPath[straightPathSize*3], closestStartPos); - straightPathSize++; - if (straightPathSize >= maxStraightPathSize) - return straightPathSize; - - float closestEndPos[3]; - if (!closestPointToPoly(path[pathSize-1], endPos, closestEndPos)) - return 0; - - float portalApex[3], portalLeft[3], portalRight[3]; - - if (pathSize > 1) - { - vcopy(portalApex, closestStartPos); - vcopy(portalLeft, portalApex); - vcopy(portalRight, portalApex); - int apexIndex = 0; - int leftIndex = 0; - int rightIndex = 0; - - for (int i = 0; i < pathSize; ++i) - { - float left[3], right[3]; - if (i < pathSize-1) - { - // Next portal. - getPortalPoints(path[i], path[i+1], left, right); - } - else - { - // End of the path. - vcopy(left, closestEndPos); - vcopy(right, closestEndPos); - } - - // Right vertex. - if (vequal(portalApex, portalRight)) - { - vcopy(portalRight, right); - rightIndex = i; - } - else - { - if (triArea2D(portalApex, portalRight, right) <= 0.0f) - { - if (triArea2D(portalApex, portalLeft, right) > 0.0f) - { - vcopy(portalRight, right); - rightIndex = i; - } - else - { - vcopy(portalApex, portalLeft); - apexIndex = leftIndex; - - if (!vequal(&straightPath[(straightPathSize-1)*3], portalApex)) - { - vcopy(&straightPath[straightPathSize*3], portalApex); - straightPathSize++; - if (straightPathSize >= maxStraightPathSize) - return straightPathSize; - } - - vcopy(portalLeft, portalApex); - vcopy(portalRight, portalApex); - leftIndex = apexIndex; - rightIndex = apexIndex; - - // Restart - i = apexIndex; - - continue; - } - } - } - - // Left vertex. - if (vequal(portalApex, portalLeft)) - { - vcopy(portalLeft, left); - leftIndex = i; - } - else - { - if (triArea2D(portalApex, portalLeft, left) >= 0.0f) - { - if (triArea2D(portalApex, portalRight, left) < 0.0f) - { - vcopy(portalLeft, left); - leftIndex = i; - } - else - { - vcopy(portalApex, portalRight); - apexIndex = rightIndex; - - if (!vequal(&straightPath[(straightPathSize-1)*3], portalApex)) - { - vcopy(&straightPath[straightPathSize*3], portalApex); - straightPathSize++; - if (straightPathSize >= maxStraightPathSize) - return straightPathSize; - } - - vcopy(portalLeft, portalApex); - vcopy(portalRight, portalApex); - leftIndex = apexIndex; - rightIndex = apexIndex; - - // Restart - i = apexIndex; - - continue; - } - } - } - } - } - - // Add end point. - vcopy(&straightPath[straightPathSize*3], closestEndPos); - straightPathSize++; - - return straightPathSize; -} - -static bool pointInPoly(int nvert, const float* verts, const float* p) -{ - - int i, j, c = 0; - for (i = 0, j = nvert-1; i < nvert; j = i++) - { - const float* vi = &verts[i*3]; - const float* vj = &verts[j*3]; - if (((vi[2] > p[2]) != (vj[2] > p[2])) && - (p[0] < (vj[0]-vi[0]) * (p[2]-vi[2]) / (vj[2]-vi[2]) + vi[0]) ) - c = !c; - } - return c != 0; -} - -int dtStatNavMesh::moveAlongPath(const float* startPos, const float* endPos, float* resultPos, - const dtStatPolyRef* path, const int pathSize) -{ - static const float SLOP = 0.01f; - float verts[DT_STAT_VERTS_PER_POLYGON*3]; - int n = 0, prevn = 0; - - vcopy(resultPos, startPos); - - while (n < pathSize) - { - // Cast ray against current polygon. - int nv = getPolyVerts(path[n], verts); - if (nv < 3) - { - return prevn; - } - - if (pointInPoly(nv, verts, endPos)) - { - vcopy(resultPos, endPos); - return n; - } - - float tmin, tmax; - int segMin, segMax; - if (!intersectSegmentPoly2D(startPos, endPos, verts, nv, tmin, tmax, segMin, segMax)) - { - // Could not a polygon - return prevn; - } - - resultPos[0] = startPos[0] + (endPos[0] - startPos[0])*tmax; - resultPos[1] = startPos[1] + (endPos[1] - startPos[1])*tmax; - resultPos[2] = startPos[2] + (endPos[2] - startPos[2])*tmax; - - // Check if the hitpos is on the exit segment. - float p0[3], p1[3]; - if (!getPortalPoints(path[n], path[n+1], p0, p1)) - return 0; - float segt; - float distToPortalSqr = distancePtSegSqr2D(resultPos, p0, p1, segt); - if (distToPortalSqr > SLOP*SLOP) - { - // Hit wall, return pos so far. - return n; - } - - prevn = n; - n++; - } - - return n; - -/* // Check the neighbour of this polygon. - const dtStatPoly* poly = getPolyByRef(curRef); - dtStatPolyRef nextRef = poly->n[segMax]; - if (!nextRef)*/ - - -} - -int dtStatNavMesh::getPolyVerts(dtStatPolyRef ref, float* verts) const -{ - if (!m_header) return 0; - const dtStatPoly* poly = getPolyByRef(ref); - if (!poly) return 0; - float* v = verts; - for (int i = 0; i < (int)poly->nv; ++i) - { - const float* cv = &m_header->verts[poly->v[i]*3]; - *v++ = cv[0]; - *v++ = cv[1]; - *v++ = cv[2]; - } - return (int)poly->nv; -} - -int dtStatNavMesh::raycast(dtStatPolyRef centerRef, const float* startPos, const float* endPos, - float& t, dtStatPolyRef* path, const int pathSize) -{ - if (!m_header) return 0; - if (!centerRef) return 0; - - dtStatPolyRef prevRef = centerRef; - dtStatPolyRef curRef = centerRef; - t = 0; - - float verts[DT_STAT_VERTS_PER_POLYGON*3]; - int n = 0; - - while (curRef) - { - // Cast ray against current polygon. - int nv = getPolyVerts(curRef, verts); - if (nv < 3) - { - // Hit bad polygon, report hit. - return n; - } - - float tmin, tmax; - int segMin, segMax; - if (!intersectSegmentPoly2D(startPos, endPos, verts, nv, tmin, tmax, segMin, segMax)) - { - // Could not a polygon, keep the old t and report hit. - return n; - } - // Keep track of furthest t so far. - if (tmax > t) - t = tmax; - - if (n < pathSize) - path[n++] = curRef; - - // Check the neighbour of this polygon. - const dtStatPoly* poly = getPolyByRef(curRef); - dtStatPolyRef nextRef = poly->n[segMax]; - if (!nextRef) - { - // No neighbour, we hit a wall. - return n; - } - - // No hit, advance to neighbour polygon. - prevRef = curRef; - curRef = nextRef; - } - - return n; -} - - -float dtStatNavMesh::findDistanceToWall(dtStatPolyRef centerRef, const float* centerPos, float maxRadius, - float* hitPos, float* hitNormal) -{ - if (!m_header) return 0; - if (!centerRef) return 0; - - m_nodePool->clear(); - m_openList->clear(); - - dtNode* startNode = m_nodePool->getNode(centerRef); - startNode->pidx = 0; - startNode->cost = 0; - startNode->total = 0; - startNode->id = centerRef; - startNode->flags = DT_NODE_OPEN; - m_openList->push(startNode); - - float radiusSqr = sqr(maxRadius); - - hitNormal[0] = 1; - hitNormal[1] = 0; - hitNormal[2] = 0; - - while (!m_openList->empty()) - { - dtNode* bestNode = m_openList->pop(); - const dtStatPoly* poly = getPoly(bestNode->id-1); - - // Hit test walls. - for (int i = 0, j = (int)poly->nv-1; i < (int)poly->nv; j = i++) - { - // Skip non-solid edges. - if (poly->n[j]) continue; - - // Calc distance to the edge. - const float* vj = getVertex(poly->v[j]); - const float* vi = getVertex(poly->v[i]); - float tseg; - float distSqr = distancePtSegSqr2D(centerPos, vj, vi, tseg); - - // Edge is too far, skip. - if (distSqr > radiusSqr) - continue; - - // Hit wall, update radius. - radiusSqr = distSqr; - // Calculate hit pos. - hitPos[0] = vj[0] + (vi[0] - vj[0])*tseg; - hitPos[1] = vj[1] + (vi[1] - vj[1])*tseg; - hitPos[2] = vj[2] + (vi[2] - vj[2])*tseg; - } - - // Check to see if teh circle expands to one of the neighbours and expand. - for (int i = 0, j = (int)poly->nv-1; i < (int)poly->nv; j = i++) - { - // Skip solid edges. - if (!poly->n[j]) continue; - - // Expand to neighbour if not visited yet. - dtStatPolyRef neighbour = poly->n[j]; - - // Skip parent node. - if (bestNode->pidx && m_nodePool->getNodeAtIdx(bestNode->pidx)->id == neighbour) - continue; - - // Calc distance to the edge. - const float* vj = getVertex(poly->v[j]); - const float* vi = getVertex(poly->v[i]); - float tseg; - float distSqr = distancePtSegSqr2D(centerPos, vj, vi, tseg); - - // Edge is too far, skip. - if (distSqr > radiusSqr) - continue; - - dtNode* parent = bestNode; - dtNode newNode; - newNode.pidx = m_nodePool->getNodeIdx(parent); - newNode.id = neighbour; - - // Cost - float p0[3], p1[3]; - if (!parent->pidx) - vcopy(p0, centerPos); - else - getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); - getEdgeMidPoint(parent->id, newNode.id, p1); - newNode.total = parent->total + vdist(p0,p1); - - dtNode* actualNode = m_nodePool->getNode(newNode.id); - if (!actualNode) - continue; - - if (!((actualNode->flags & DT_NODE_OPEN) && newNode.total > actualNode->total) && - !((actualNode->flags & DT_NODE_CLOSED) && newNode.total > actualNode->total)) - { - actualNode->flags &= ~DT_NODE_CLOSED; - actualNode->pidx = newNode.pidx; - actualNode->total = newNode.total; - - if (actualNode->flags & DT_NODE_OPEN) - { - m_openList->modify(actualNode); - } - else - { - actualNode->flags |= DT_NODE_OPEN; - m_openList->push(actualNode); - } - } - } - bestNode->flags |= DT_NODE_CLOSED; - } - - // Calc hit normal. - vsub(hitNormal, centerPos, hitPos); - vnormalize(hitNormal); - - return sqrtf(radiusSqr); -} - -int dtStatNavMesh::findPolysAround(dtStatPolyRef centerRef, const float* centerPos, float radius, - dtStatPolyRef* resultRef, dtStatPolyRef* resultParent, float* resultCost, - const int maxResult) -{ - if (!m_header) return 0; - if (!centerRef) return 0; - - m_nodePool->clear(); - m_openList->clear(); - - dtNode* startNode = m_nodePool->getNode(centerRef); - startNode->pidx = 0; - startNode->cost = 0; - startNode->total = 0; - startNode->id = centerRef; - startNode->flags = DT_NODE_OPEN; - m_openList->push(startNode); - - int n = 0; - if (n < maxResult) - { - if (resultRef) - resultRef[n] = startNode->id; - if (resultParent) - resultParent[n] = 0; - if (resultCost) - resultCost[n] = 0; - ++n; - } - - const float radiusSqr = sqr(radius); - - while (!m_openList->empty()) - { - dtNode* bestNode = m_openList->pop(); - const dtStatPoly* poly = getPoly(bestNode->id-1); - for (unsigned i = 0, j = (int)poly->nv-1; i < (int)poly->nv; j=i++) - { - dtStatPolyRef neighbour = poly->n[j]; - - if (neighbour) - { - // Skip parent node. - if (bestNode->pidx && m_nodePool->getNodeAtIdx(bestNode->pidx)->id == neighbour) - continue; - - // Calc distance to the edge. - const float* vj = getVertex(poly->v[j]); - const float* vi = getVertex(poly->v[i]); - float tseg; - float distSqr = distancePtSegSqr2D(centerPos, vj, vi, tseg); - - // If the circle is not touching the next polygon, skip it. - if (distSqr > radiusSqr) - continue; - - dtNode* parent = bestNode; - dtNode newNode; - newNode.pidx = m_nodePool->getNodeIdx(parent); - newNode.id = neighbour; - - // Cost - float p0[3], p1[3]; - if (!parent->pidx) - vcopy(p0, centerPos); - else - getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); - getEdgeMidPoint(parent->id, newNode.id, p1); - newNode.total = parent->total + vdist(p0,p1); - - dtNode* actualNode = m_nodePool->getNode(newNode.id); - if (!actualNode) - continue; - - if (!((actualNode->flags & DT_NODE_OPEN) && newNode.total > actualNode->total) && - !((actualNode->flags & DT_NODE_CLOSED) && newNode.total > actualNode->total)) - { - actualNode->flags &= ~DT_NODE_CLOSED; - actualNode->pidx = newNode.pidx; - actualNode->total = newNode.total; - - if (actualNode->flags & DT_NODE_OPEN) - { - m_openList->modify(actualNode); - } - else - { - if (n < maxResult) - { - if (resultRef) - resultRef[n] = actualNode->id; - if (resultParent) - resultParent[n] = m_nodePool->getNodeAtIdx(actualNode->pidx)->id; - if (resultCost) - resultCost[n] = actualNode->total; - ++n; - } - actualNode->flags |= DT_NODE_OPEN; - m_openList->push(actualNode); - } - } - } - } - bestNode->flags |= DT_NODE_CLOSED; - - } - - return n; -} - -// Returns polygons which are withing certain radius from the query location. -int dtStatNavMesh::queryPolygons(const float* center, const float* extents, - dtStatPolyRef* polys, const int maxIds) -{ - if (!m_header) return 0; - - const dtStatBVNode* node = &m_header->bvtree[0]; - const dtStatBVNode* end = &m_header->bvtree[m_header->nnodes]; - - // Calculate quantized box - const float ics = 1.0f / m_header->cs; - unsigned short bmin[3], bmax[3]; - // Clamp query box to world box. - float minx = clamp(center[0] - extents[0], m_header->bmin[0], m_header->bmax[0]) - m_header->bmin[0]; - float miny = clamp(center[1] - extents[1], m_header->bmin[1], m_header->bmax[1]) - m_header->bmin[1]; - float minz = clamp(center[2] - extents[2], m_header->bmin[2], m_header->bmax[2]) - m_header->bmin[2]; - float maxx = clamp(center[0] + extents[0], m_header->bmin[0], m_header->bmax[0]) - m_header->bmin[0]; - float maxy = clamp(center[1] + extents[1], m_header->bmin[1], m_header->bmax[1]) - m_header->bmin[1]; - float maxz = clamp(center[2] + extents[2], m_header->bmin[2], m_header->bmax[2]) - m_header->bmin[2]; - // Quantize - bmin[0] = (unsigned short)(ics * minx) & 0xfffe; - bmin[1] = (unsigned short)(ics * miny) & 0xfffe; - bmin[2] = (unsigned short)(ics * minz) & 0xfffe; - bmax[0] = (unsigned short)(ics * maxx + 1) | 1; - bmax[1] = (unsigned short)(ics * maxy + 1) | 1; - bmax[2] = (unsigned short)(ics * maxz + 1) | 1; - - // Traverse tree - int n = 0; - while (node < end) - { - bool overlap = checkOverlapBox(bmin, bmax, node->bmin, node->bmax); - bool isLeafNode = node->i >= 0; - - if (isLeafNode && overlap) - { - if (n < maxIds) - { - polys[n] = (dtStatPolyRef)node->i; - n++; - } - } - - if (overlap || isLeafNode) - node++; - else - { - const int escapeIndex = -node->i; - node += escapeIndex; - } - } - - return n; -} - -dtStatPolyRef dtStatNavMesh::findNearestPoly(const float* center, const float* extents) -{ - if (!m_header) return 0; - - // Get nearby polygons from proximity grid. - dtStatPolyRef polys[128]; - int npolys = queryPolygons(center, extents, polys, 128); - - // Find nearest polygon amongst the nearby polygons. - dtStatPolyRef nearest = 0; - float nearestDistanceSqr = FLT_MAX; - for (int i = 0; i < npolys; ++i) - { - dtStatPolyRef ref = polys[i]; - float closest[3]; - if (!closestPointToPoly(ref, center, closest)) - continue; - float d = vdistSqr(center, closest); - if (d < nearestDistanceSqr) - { - nearestDistanceSqr = d; - nearest = ref; - } - } - - return nearest; -} - -bool dtStatNavMesh::getPortalPoints(dtStatPolyRef from, dtStatPolyRef to, float* left, float* right) const -{ - const dtStatPoly* fromPoly = getPolyByRef(from); - if (!fromPoly) - return false; - - // Find common edge between the polygons and returns the segment end points. - for (unsigned i = 0, j = (int)fromPoly->nv - 1; i < (int)fromPoly->nv; j = i++) - { - unsigned short neighbour = fromPoly->n[j]; - if (neighbour == to) - { - vcopy(left, getVertex(fromPoly->v[j])); - vcopy(right, getVertex(fromPoly->v[i])); - return true; - } - } - - return false; -} - -bool dtStatNavMesh::getEdgeMidPoint(dtStatPolyRef from, dtStatPolyRef to, float* mid) const -{ - float left[3], right[3]; - if (!getPortalPoints(from, to, left,right)) return false; - mid[0] = (left[0]+right[0])*0.5f; - mid[1] = (left[1]+right[1])*0.5f; - mid[2] = (left[2]+right[2])*0.5f; - return true; -} - -bool dtStatNavMesh::isInClosedList(dtStatPolyRef ref) const -{ - if (!m_nodePool) return false; - const dtNode* node = m_nodePool->findNode(ref); - return node && node->flags & DT_NODE_CLOSED; -} - -int dtStatNavMesh::getMemUsed() const -{ - if (!m_nodePool || ! m_openList) - return 0; - return sizeof(*this) + m_dataSize + - m_nodePool->getMemUsed() + - m_openList->getMemUsed(); -} diff --git a/Detour/Source/DetourStatNavMeshBuilder.cpp b/Detour/Source/DetourStatNavMeshBuilder.cpp deleted file mode 100755 index ea889441..00000000 --- a/Detour/Source/DetourStatNavMeshBuilder.cpp +++ /dev/null @@ -1,347 +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 -#include -#include -#include "DetourCommon.h" -#include "DetourStatNavMesh.h" - -struct BVItem -{ - unsigned short bmin[3]; - unsigned short bmax[3]; - int i; -}; - -static int compareItemX(const void* va, const void* vb) -{ - const BVItem* a = (const BVItem*)va; - const BVItem* b = (const BVItem*)vb; - if (a->bmin[0] < b->bmin[0]) - return -1; - if (a->bmin[0] > b->bmin[0]) - return 1; - return 0; -} - -static int compareItemY(const void* va, const void* vb) -{ - const BVItem* a = (const BVItem*)va; - const BVItem* b = (const BVItem*)vb; - if (a->bmin[1] < b->bmin[1]) - return -1; - if (a->bmin[1] > b->bmin[1]) - return 1; - return 0; -} - -static int compareItemZ(const void* va, const void* vb) -{ - const BVItem* a = (const BVItem*)va; - const BVItem* b = (const BVItem*)vb; - if (a->bmin[2] < b->bmin[2]) - return -1; - if (a->bmin[2] > b->bmin[2]) - return 1; - return 0; -} - -static void calcExtends(BVItem* items, int nitems, int imin, int imax, - unsigned short* bmin, unsigned short* bmax) -{ - bmin[0] = items[imin].bmin[0]; - bmin[1] = items[imin].bmin[1]; - bmin[2] = items[imin].bmin[2]; - - bmax[0] = items[imin].bmax[0]; - bmax[1] = items[imin].bmax[1]; - bmax[2] = items[imin].bmax[2]; - - for (int i = imin+1; i < imax; ++i) - { - const BVItem& it = items[i]; - if (it.bmin[0] < bmin[0]) bmin[0] = it.bmin[0]; - if (it.bmin[1] < bmin[1]) bmin[1] = it.bmin[1]; - if (it.bmin[2] < bmin[2]) bmin[2] = it.bmin[2]; - - if (it.bmax[0] > bmax[0]) bmax[0] = it.bmax[0]; - if (it.bmax[1] > bmax[1]) bmax[1] = it.bmax[1]; - if (it.bmax[2] > bmax[2]) bmax[2] = it.bmax[2]; - } -} - -inline int longestAxis(unsigned short x, unsigned short y, unsigned short z) -{ - int axis = 0; - unsigned short maxVal = x; - if (y > maxVal) - { - axis = 1; - maxVal = y; - } - if (z > maxVal) - { - axis = 2; - maxVal = z; - } - return axis; -} - -static void subdivide(BVItem* items, int nitems, int imin, int imax, int& curNode, dtStatBVNode* nodes) -{ - int inum = imax - imin; - int icur = curNode; - - dtStatBVNode& node = nodes[curNode++]; - - if (inum == 1) - { - // Leaf - node.bmin[0] = items[imin].bmin[0]; - node.bmin[1] = items[imin].bmin[1]; - node.bmin[2] = items[imin].bmin[2]; - - node.bmax[0] = items[imin].bmax[0]; - node.bmax[1] = items[imin].bmax[1]; - node.bmax[2] = items[imin].bmax[2]; - - node.i = items[imin].i; - } - else - { - // Split - calcExtends(items, nitems, imin, imax, node.bmin, node.bmax); - - int axis = longestAxis(node.bmax[0] - node.bmin[0], - node.bmax[1] - node.bmin[1], - node.bmax[2] - node.bmin[2]); - - if (axis == 0) - { - // Sort along x-axis - qsort(items+imin, inum, sizeof(BVItem), compareItemX); - } - else if (axis == 1) - { - // Sort along y-axis - qsort(items+imin, inum, sizeof(BVItem), compareItemY); - } - else - { - // Sort along z-axis - qsort(items+imin, inum, sizeof(BVItem), compareItemZ); - } - - int isplit = imin+inum/2; - - // Left - subdivide(items, nitems, imin, isplit, curNode, nodes); - // Right - subdivide(items, nitems, isplit, imax, curNode, nodes); - - int iescape = curNode - icur; - // Negative index means escape. - node.i = -iescape; - } -} - -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, dtStatBVNode* nodes) -{ - // Build tree - BVItem* items = new BVItem[npolys]; - for (int i = 0; i < npolys; i++) - { - BVItem& it = items[i]; - it.i = i+1; - // Calc polygon bounds. - const unsigned short* p = &polys[i*nvp*2]; - it.bmin[0] = it.bmax[0] = verts[p[0]*3+0]; - it.bmin[1] = it.bmax[1] = verts[p[0]*3+1]; - it.bmin[2] = it.bmax[2] = verts[p[0]*3+2]; - - for (int j = 1; j < nvp; ++j) - { - if (p[j] == 0xffff) break; - unsigned short x = verts[p[j]*3+0]; - unsigned short y = verts[p[j]*3+1]; - unsigned short z = verts[p[j]*3+2]; - - if (x < it.bmin[0]) it.bmin[0] = x; - if (y < it.bmin[1]) it.bmin[1] = y; - if (z < it.bmin[2]) it.bmin[2] = z; - - if (x > it.bmax[0]) it.bmax[0] = x; - if (y > it.bmax[1]) it.bmax[1] = y; - if (z > it.bmax[2]) it.bmax[2] = z; - } - // Remap y - it.bmin[1] = (unsigned short)floorf((float)it.bmin[1]*ch/cs); - it.bmax[1] = (unsigned short)ceilf((float)it.bmax[1]*ch/cs); - } - - int curNode = 0; - subdivide(items, npolys, 0, npolys, curNode, nodes); - - delete [] items; - - return curNode; -} - - -bool dtCreateNavMeshData(const unsigned short* verts, const int nverts, - const unsigned short* polys, const int npolys, const int nvp, - const float* bmin, const float* bmax, float cs, float ch, - const unsigned short* dmeshes, const float* dverts, const int ndverts, - const unsigned char* dtris, const int ndtris, - unsigned char** outData, int* outDataSize) -{ - if (nvp > DT_STAT_VERTS_PER_POLYGON) - return false; - if (nverts >= 0xffff) - return false; - - if (!nverts) - return false; - if (!npolys) - return false; - if (!dmeshes || !dverts || ! dtris) - return false; - - // Find unique detail vertices. - int uniqueDetailVerts = 0; - if (dmeshes) - { - for (int i = 0; i < npolys; ++i) - { - const unsigned short* p = &polys[i*nvp*2]; - int ndv = dmeshes[i*4+1]; - int nv = 0; - for (int j = 0; j < nvp; ++j) - { - if (p[j] == 0xffff) break; - nv++; - } - ndv -= nv; - uniqueDetailVerts += ndv; - } - } - - // Calculate data size - const int headerSize = align4(sizeof(dtStatNavMeshHeader)); - const int vertsSize = align4(sizeof(float)*3*nverts); - const int polysSize = align4(sizeof(dtStatPoly)*npolys); - const int nodesSize = align4(sizeof(dtStatBVNode)*npolys*2); - const int detailMeshesSize = align4(sizeof(dtStatPolyDetail)*npolys); - const int detailVertsSize = align4(sizeof(float)*3*uniqueDetailVerts); - const int detailTrisSize = align4(sizeof(unsigned char)*4*ndtris); - - const int dataSize = headerSize + vertsSize + polysSize + nodesSize + - detailMeshesSize + detailVertsSize + detailTrisSize; - unsigned char* data = new unsigned char[dataSize]; - if (!data) - return false; - memset(data, 0, dataSize); - - unsigned char* d = data; - dtStatNavMeshHeader* header = (dtStatNavMeshHeader*)d; d += headerSize; - float* navVerts = (float*)d; d += vertsSize; - dtStatPoly* navPolys = (dtStatPoly*)d; d += polysSize; - dtStatBVNode* navNodes = (dtStatBVNode*)d; d += nodesSize; - dtStatPolyDetail* navDMeshes = (dtStatPolyDetail*)d; d += detailMeshesSize; - float* navDVerts = (float*)d; d += detailVertsSize; - unsigned char* navDTris = (unsigned char*)d; d += detailTrisSize; - - // Store header - header->magic = DT_STAT_NAVMESH_MAGIC; - header->version = DT_STAT_NAVMESH_VERSION; - header->npolys = npolys; - header->nverts = nverts; - header->cs = cs; - header->bmin[0] = bmin[0]; - header->bmin[1] = bmin[1]; - header->bmin[2] = bmin[2]; - header->bmax[0] = bmax[0]; - header->bmax[1] = bmax[1]; - header->bmax[2] = bmax[2]; - header->ndmeshes = dmeshes ? npolys : 0; - header->ndverts = dmeshes ? uniqueDetailVerts : 0; - header->ndtris = dmeshes ? ndtris : 0; - - // Store vertices - for (int i = 0; i < nverts; ++i) - { - const unsigned short* iv = &verts[i*3]; - float* v = &navVerts[i*3]; - v[0] = bmin[0] + iv[0] * cs; - v[1] = bmin[1] + iv[1] * ch; - v[2] = bmin[2] + iv[2] * cs; - } - - // Store polygons - const unsigned short* src = polys; - for (int i = 0; i < npolys; ++i) - { - dtStatPoly* p = &navPolys[i]; - p->nv = 0; - for (int j = 0; j < nvp; ++j) - { - if (src[j] == 0xffff) break; - p->v[j] = src[j]; - p->n[j] = src[nvp+j]+1; - p->nv++; - } - src += nvp*2; - } - - header->nnodes = createBVTree(verts, nverts, polys, npolys, nvp, - cs, ch, npolys*2, navNodes); - - - // Store detail meshes and vertices. - // The nav polygon vertices are stored as the first vertices on each mesh. - // We compress the mesh data by skipping them and using the navmesh coordinates. - unsigned short vbase = 0; - for (int i = 0; i < npolys; ++i) - { - dtStatPolyDetail& dtl = navDMeshes[i]; - const int vb = dmeshes[i*4+0]; - const int ndv = dmeshes[i*4+1]; - const int nv = navPolys[i].nv; - dtl.vbase = vbase; - dtl.nverts = ndv-nv; - dtl.tbase = dmeshes[i*4+2]; - dtl.ntris = dmeshes[i*4+3]; - // Copy vertices except the first 'nv' verts which are equal to nav poly verts. - if (ndv-nv > 0) - { - memcpy(&navDVerts[vbase*3], &dverts[(vb+nv)*3], sizeof(float)*3*(ndv-nv)); - vbase += ndv-nv; - } - } - // Store triangles. - memcpy(navDTris, dtris, sizeof(unsigned char)*4*ndtris); - - *outData = data; - *outDataSize = dataSize; - - return true; -} diff --git a/Detour/Source/DetourTileNavMesh.cpp b/Detour/Source/DetourTileNavMesh.cpp deleted file mode 100644 index 4e4ff8fc..00000000 --- a/Detour/Source/DetourTileNavMesh.cpp +++ /dev/null @@ -1,1428 +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 -#include -#include -#include -#include "DetourTileNavMesh.h" -#include "DetourNode.h" -#include "DetourCommon.h" - - -inline int opposite(int side) { return (side+2) & 0x3; } - -inline bool overlapBoxes(const float* amin, const float* amax, - const float* bmin, const float* bmax) -{ - bool overlap = true; - overlap = (amin[0] > bmax[0] || amax[0] < bmin[0]) ? false : overlap; - overlap = (amin[1] > bmax[1] || amax[1] < bmin[1]) ? false : overlap; - overlap = (amin[2] > bmax[2] || amax[2] < bmin[2]) ? false : overlap; - return overlap; -} - -inline bool overlapRects(const float* amin, const float* amax, - const float* bmin, const float* bmax) -{ - bool overlap = true; - overlap = (amin[0] > bmax[0] || amax[0] < bmin[0]) ? false : overlap; - overlap = (amin[1] > bmax[1] || amax[1] < bmin[1]) ? false : overlap; - return overlap; -} - -static void calcRect(const float* va, const float* vb, - float* bmin, float* bmax, - int side, float padx, float pady) -{ - if ((side&1) == 0) - { - bmin[0] = min(va[2],vb[2]) + padx; - bmin[1] = min(va[1],vb[1]) - pady; - bmax[0] = max(va[2],vb[2]) - padx; - bmax[1] = max(va[1],vb[1]) + pady; - } - else - { - bmin[0] = min(va[0],vb[0]) + padx; - bmin[1] = min(va[1],vb[1]) - pady; - bmax[0] = max(va[0],vb[0]) - padx; - bmax[1] = max(va[1],vb[1]) + pady; - } -} - -inline int computeTileHash(int x, int y) -{ - const unsigned int h1 = 0x8da6b343; // Large multiplicative constants; - const unsigned int h2 = 0xd8163841; // here arbitrarily chosen primes - unsigned int n = h1 * x + h2 * y; - return (int)(n & (DT_TILE_LOOKUP_SIZE-1)); -} - -////////////////////////////////////////////////////////////////////////////////////////// -dtTiledNavMesh::dtTiledNavMesh() : - m_tileSize(0), - m_portalHeight(0), - m_nextFree(0), - m_tmpLinks(0), - m_ntmpLinks(0), - m_nodePool(0), - m_openList(0) -{ -} - -dtTiledNavMesh::~dtTiledNavMesh() -{ - for (int i = 0; i < DT_MAX_TILES; ++i) - { - if (m_tiles[i].data && m_tiles[i].ownsData) - { - delete [] m_tiles[i].data; - m_tiles[i].data = 0; - m_tiles[i].dataSize = 0; - } - } - delete [] m_tmpLinks; - delete m_nodePool; - delete m_openList; -} - -bool dtTiledNavMesh::init(const float* orig, float tileSize, float portalHeight) -{ - vcopy(m_orig, orig); - m_tileSize = tileSize; - m_portalHeight = portalHeight; - - // Init tiles - memset(m_tiles, 0, sizeof(dtTile)*DT_MAX_TILES); - memset(m_posLookup, 0, sizeof(dtTile*)*DT_TILE_LOOKUP_SIZE); - m_nextFree = 0; - for (int i = DT_MAX_TILES-1; i >= 0; --i) - { - m_tiles[i].next = m_nextFree; - m_nextFree = &m_tiles[i]; - } - - if (!m_nodePool) - { - m_nodePool = new dtNodePool(2048, 256); - if (!m_nodePool) - return false; - } - - if (!m_openList) - { - m_openList = new dtNodeQueue(2048); - if (!m_openList) - return false; - } - - return true; -} - -////////////////////////////////////////////////////////////////////////////////////////// -int dtTiledNavMesh::findConnectingPolys(const float* va, const float* vb, - dtTile* tile, int side, - dtTilePolyRef* con, float* conarea, int maxcon) -{ - if (!tile) return 0; - dtTileHeader* h = tile->header; - - float amin[2], amax[2]; - calcRect(va,vb, amin,amax, side, 0.01f, m_portalHeight); - - // Remove links pointing to 'side' and compact the links array. - float bmin[2], bmax[2]; - unsigned short m = 0x8000 | (unsigned short)side; - int n = 0; - - dtTilePolyRef base = getTileId(tile); - - for (int i = 0; i < h->npolys; ++i) - { - dtTilePoly* poly = &h->polys[i]; - for (int j = 0; j < poly->nv; ++j) - { - // Skip edges which do not point to the right side. - if (poly->n[j] != m) continue; - // Check if the segments touch. - const float* vc = &h->verts[poly->v[j]*3]; - const float* vd = &h->verts[poly->v[(j+1) % (int)poly->nv]*3]; - calcRect(vc,vd, bmin,bmax, side, 0.01f, m_portalHeight); - if (!overlapRects(amin,amax, bmin,bmax)) continue; - // Add return value. - if (n < maxcon) - { - conarea[n*2+0] = max(amin[0], bmin[0]); - conarea[n*2+1] = min(amax[0], bmax[0]); - con[n] = base | (unsigned int)i; - n++; - } - break; - } - } - return n; -} - -void dtTiledNavMesh::removeExtLinks(dtTile* tile, int side) -{ - if (!tile) return; - dtTileHeader* h = tile->header; - - // Remove links pointing to 'side' and compact the links array. - dtTileLink* pool = m_tmpLinks; - int nlinks = 0; - for (int i = 0; i < h->npolys; ++i) - { - dtTilePoly* poly = &h->polys[i]; - int plinks = nlinks; - int nplinks = 0; - for (int j = 0; j < poly->nlinks; ++j) - { - dtTileLink* link = &h->links[poly->links+j]; - if ((int)link->side != side) - { - if (nlinks < h->maxlinks) - { - dtTileLink* dst = &pool[nlinks++]; - memcpy(dst, link, sizeof(dtTileLink)); - nplinks++; - } - } - } - poly->links = plinks; - poly->nlinks = nplinks; - } - h->nlinks = nlinks; - if (h->nlinks) - memcpy(h->links, m_tmpLinks, sizeof(dtTileLink)*nlinks); -} - -void dtTiledNavMesh::buildExtLinks(dtTile* tile, dtTile* target, int side) -{ - if (!tile) return; - dtTileHeader* h = tile->header; - - // Remove links pointing to 'side' and compact the links array. - dtTileLink* pool = m_tmpLinks; - int nlinks = 0; - for (int i = 0; i < h->npolys; ++i) - { - dtTilePoly* poly = &h->polys[i]; - int plinks = nlinks; - int nplinks = 0; - // Copy internal and other external links. - for (int j = 0; j < poly->nlinks; ++j) - { - dtTileLink* link = &h->links[poly->links+j]; - if ((int)link->side != side) - { - if (nlinks < h->maxlinks) - { - dtTileLink* dst = &pool[nlinks++]; - memcpy(dst, link, sizeof(dtTileLink)); - nplinks++; - } - } - } - // Create new links. - unsigned short m = 0x8000 | (unsigned short)side; - for (int j = 0; j < poly->nv; ++j) - { - // Skip edges which do not point to the right side. - if (poly->n[j] != m) continue; - - // Create new links - const float* va = &h->verts[poly->v[j]*3]; - const float* vb = &h->verts[poly->v[(j+1)%(int)poly->nv]*3]; - dtTilePolyRef nei[4]; - float neia[4*2]; - int nnei = findConnectingPolys(va,vb, target, opposite(side), nei,neia,4); - for (int k = 0; k < nnei; ++k) - { - if (nlinks < h->maxlinks) - { - dtTileLink* link = &pool[nlinks++]; - link->ref = nei[k]; - link->p = (unsigned short)i; - link->e = (unsigned char)j; - link->side = (unsigned char)side; - - // Compress portal limits to a byte value. - if (side == 0 || side == 2) - { - const float lmin = min(va[2], vb[2]); - const float lmax = max(va[2], vb[2]); - link->bmin = (unsigned char)(clamp((neia[k*2+0]-lmin)/(lmax-lmin), 0.0f, 1.0f)*255.0f); - link->bmax = (unsigned char)(clamp((neia[k*2+1]-lmin)/(lmax-lmin), 0.0f, 1.0f)*255.0f); - } - else - { - const float lmin = min(va[0], vb[0]); - const float lmax = max(va[0], vb[0]); - link->bmin = (unsigned char)(clamp((neia[k*2+0]-lmin)/(lmax-lmin), 0.0f, 1.0f)*255.0f); - link->bmax = (unsigned char)(clamp((neia[k*2+1]-lmin)/(lmax-lmin), 0.0f, 1.0f)*255.0f); - } - nplinks++; - } - } - } - - poly->links = plinks; - poly->nlinks = nplinks; - } - h->nlinks = nlinks; - if (h->nlinks) - memcpy(h->links, m_tmpLinks, sizeof(dtTileLink)*nlinks); -} - -void dtTiledNavMesh::buildIntLinks(dtTile* tile) -{ - if (!tile) return; - dtTileHeader* h = tile->header; - - dtTilePolyRef base = getTileId(tile); - dtTileLink* pool = h->links; - int nlinks = 0; - for (int i = 0; i < h->npolys; ++i) - { - dtTilePoly* poly = &h->polys[i]; - poly->links = nlinks; - poly->nlinks = 0; - for (int j = 0; j < poly->nv; ++j) - { - // Skip hard and non-internal edges. - if (poly->n[j] == 0 || (poly->n[j] & 0x8000)) continue; - - if (nlinks < h->maxlinks) - { - dtTileLink* link = &pool[nlinks++]; - link->ref = base | (unsigned int)(poly->n[j]-1); - link->p = (unsigned short)i; - link->e = (unsigned char)j; - link->side = 0xff; - link->bmin = link->bmax = 0; - poly->nlinks++; - } - } - } - h->nlinks = nlinks; -} - -bool dtTiledNavMesh::addTileAt(int x, int y, unsigned char* data, int dataSize, bool ownsData) -{ - if (getTileAt(x,y)) - return false; - // Make sure there is enough space for new tile. - if (!m_nextFree) - return false; - // Make sure the data is in right format. - dtTileHeader* header = (dtTileHeader*)data; - if (header->magic != DT_TILE_NAVMESH_MAGIC) - return false; - if (header->version != DT_TILE_NAVMESH_VERSION) - return false; - - // Make sure the tmp link array is large enough. - if (header->maxlinks > m_ntmpLinks) - { - m_ntmpLinks = header->maxlinks; - delete [] m_tmpLinks; - m_tmpLinks = 0; - m_tmpLinks = new dtTileLink[m_ntmpLinks]; - } - if (!m_tmpLinks) - return false; - - // Allocate a tile. - dtTile* tile = m_nextFree; - m_nextFree = tile->next; - tile->next = 0; - - // Insert tile into the position lut. - int h = computeTileHash(x,y); - tile->next = m_posLookup[h]; - m_posLookup[h] = tile; - - // Patch header pointers. - const int headerSize = align4(sizeof(dtTileHeader)); - const int vertsSize = align4(sizeof(float)*3*header->nverts); - const int polysSize = align4(sizeof(dtTilePoly)*header->npolys); - const int linksSize = align4(sizeof(dtTileLink)*(header->maxlinks)); - const int detailMeshesSize = align4(sizeof(dtTilePolyDetail)*header->ndmeshes); - const int detailVertsSize = align4(sizeof(float)*3*header->ndverts); - const int detailTrisSize = align4(sizeof(unsigned char)*4*header->ndtris); - - unsigned char* d = data + headerSize; - header->verts = (float*)d; d += vertsSize; - header->polys = (dtTilePoly*)d; d += polysSize; - header->links = (dtTileLink*)d; d += linksSize; - header->dmeshes = (dtTilePolyDetail*)d; d += detailMeshesSize; - header->dverts = (float*)d; d += detailVertsSize; - header->dtris = (unsigned char*)d; d += detailTrisSize; - - // Init tile. - tile->header = header; - tile->x = x; - tile->y = y; - tile->data = data; - tile->dataSize = dataSize; - tile->ownsData = ownsData; - - buildIntLinks(tile); - - // Create connections connections. - for (int i = 0; i < 4; ++i) - { - dtTile* nei = getNeighbourTileAt(x,y,i); - if (nei) - { - buildExtLinks(tile, nei, i); - buildExtLinks(nei, tile, opposite(i)); - } - } - - return true; -} - -dtTile* dtTiledNavMesh::getTileAt(int x, int y) -{ - // Find tile based on hash. - int h = computeTileHash(x,y); - dtTile* tile = m_posLookup[h]; - while (tile) - { - if (tile->x == x && tile->y == y) - return tile; - tile = tile->next; - } - return 0; -} - -dtTile* dtTiledNavMesh::getTile(int i) -{ - return &m_tiles[i]; -} - -const dtTile* dtTiledNavMesh::getTile(int i) const -{ - return &m_tiles[i]; -} - -dtTile* dtTiledNavMesh::getNeighbourTileAt(int x, int y, int side) -{ - switch (side) - { - case 0: x++; break; - case 1: y++; break; - case 2: x--; break; - case 3: y--; break; - }; - return getTileAt(x,y); -} - -bool dtTiledNavMesh::removeTileAt(int x, int y, unsigned char** data, int* dataSize) -{ - // Remove tile from hash lookup. - int h = computeTileHash(x,y); - dtTile* prev = 0; - dtTile* tile = m_posLookup[h]; - while (tile) - { - if (tile->x == x && tile->y == y) - { - if (prev) - prev->next = tile->next; - else - m_posLookup[h] = tile->next; - break; - } - prev = tile; - tile = tile->next; - } - if (!tile) - return false; - - // Remove connections to neighbour tiles. - for (int i = 0; i < 4; ++i) - { - dtTile* nei = getNeighbourTileAt(x,y,i); - if (!nei) continue; - removeExtLinks(nei, opposite(i)); - } - - - // Reset tile. - if (tile->ownsData) - { - // Owns data - delete [] tile->data; - tile->data = 0; - tile->dataSize = 0; - if (data) *data = 0; - if (dataSize) *dataSize = 0; - } - else - { - if (data) *data = tile->data; - if (dataSize) *dataSize = tile->dataSize; - } - tile->header = 0; - tile->x = tile->y = 0; - tile->salt++; - - // Add to free list. - tile->next = m_nextFree; - m_nextFree = tile; - - return true; -} - - - -bool dtTiledNavMesh::closestPointToPoly(dtTilePolyRef ref, const float* pos, float* closest) const -{ - unsigned int salt, it, ip; - dtDecodeTileId(ref, salt, it, ip); - if (it >= DT_MAX_TILES) return false; - if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return false; - const dtTileHeader* header = m_tiles[it].header; - - if (ip >= (unsigned int)header->npolys) return false; - const dtTilePoly* poly = &header->polys[ip]; - - float closestDistSqr = FLT_MAX; - const dtTilePolyDetail* pd = &header->dmeshes[ip]; - - for (int j = 0; j < pd->ntris; ++j) - { - const unsigned char* t = &header->dtris[(pd->tbase+j)*4]; - const float* v[3]; - for (int k = 0; k < 3; ++k) - { - if (t[k] < poly->nv) - v[k] = &header->verts[poly->v[t[k]]*3]; - else - v[k] = &header->dverts[(pd->vbase+(t[k]-poly->nv))*3]; - } - float pt[3]; - closestPtPointTriangle(pt, pos, v[0], v[1], v[2]); - float d = vdistSqr(pos, pt); - if (d < closestDistSqr) - { - vcopy(closest, pt); - closestDistSqr = d; - } - } - - return true; -} - -bool dtTiledNavMesh::getPolyHeight(dtTilePolyRef ref, const float* pos, float* height) const -{ - unsigned int salt, it, ip; - dtDecodeTileId(ref, salt, it, ip); - if (it >= DT_MAX_TILES) return false; - if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return false; - const dtTileHeader* header = m_tiles[it].header; - - if (ip >= (unsigned int)header->npolys) return false; - const dtTilePoly* poly = &header->polys[ip]; - - const dtTilePolyDetail* pd = &header->dmeshes[ip]; - for (int j = 0; j < pd->ntris; ++j) - { - const unsigned char* t = &header->dtris[(pd->tbase+j)*4]; - const float* v[3]; - for (int k = 0; k < 3; ++k) - { - if (t[k] < poly->nv) - v[k] = &header->verts[poly->v[t[k]]*3]; - else - v[k] = &header->dverts[(pd->vbase+(t[k]-poly->nv))*3]; - } - float h; - if (closestHeightPointTriangle(pos, v[0], v[1], v[2], h)) - { - if (height) - *height = h; - return true; - } - } - - return false; -} - - -dtTilePolyRef dtTiledNavMesh::findNearestPoly(const float* center, const float* extents) -{ - // Get nearby polygons from proximity grid. - dtTilePolyRef polys[128]; - int npolys = queryPolygons(center, extents, polys, 128); - - // Find nearest polygon amongst the nearby polygons. - dtTilePolyRef nearest = 0; - float nearestDistanceSqr = FLT_MAX; - for (int i = 0; i < npolys; ++i) - { - dtTilePolyRef ref = polys[i]; - float closest[3]; - if (!closestPointToPoly(ref, center, closest)) - continue; - float d = vdistSqr(center, closest); - if (d < nearestDistanceSqr) - { - nearestDistanceSqr = d; - nearest = ref; - } - } - - return nearest; -} - -dtTilePolyRef dtTiledNavMesh::getTileId(dtTile* tile) -{ - if (!tile) return 0; - const unsigned int it = tile - m_tiles; - return dtEncodeTileId(tile->salt, it, 0); -} - -int dtTiledNavMesh::queryTilePolygons(dtTile* tile, - const float* qmin, const float* qmax, - dtTilePolyRef* polys, const int maxPolys) -{ - float bmin[3], bmax[3]; - const dtTileHeader* header = tile->header; - int n = 0; - dtTilePolyRef base = getTileId(tile); - for (int i = 0; i < header->npolys; ++i) - { - // Calc polygon bounds. - dtTilePoly* p = &header->polys[i]; - const float* v = &header->verts[p->v[0]*3]; - vcopy(bmin, v); - vcopy(bmax, v); - for (int j = 1; j < p->nv; ++j) - { - v = &header->verts[p->v[j]*3]; - vmin(bmin, v); - vmax(bmax, v); - } - if (overlapBoxes(qmin,qmax, bmin,bmax)) - { - if (n < maxPolys) - polys[n++] = base | (dtTilePolyRef)i; - } - } - return n; -} - -int dtTiledNavMesh::queryPolygons(const float* center, const float* extents, - dtTilePolyRef* polys, const int maxPolys) -{ - float bmin[3], bmax[3]; - bmin[0] = center[0] - extents[0]; - bmin[1] = center[1] - extents[1]; - bmin[2] = center[2] - extents[2]; - - bmax[0] = center[0] + extents[0]; - bmax[1] = center[1] + extents[1]; - bmax[2] = center[2] + extents[2]; - - // Find tiles the query touches. - const int minx = (int)floorf((bmin[0]-m_orig[0]) / m_tileSize); - const int maxx = (int)ceilf((bmax[0]-m_orig[0]) / m_tileSize); - - const int miny = (int)floorf((bmin[2]-m_orig[2]) / m_tileSize); - const int maxy = (int)ceilf((bmax[2]-m_orig[2]) / m_tileSize); - - int n = 0; - for (int y = miny; y < maxy; ++y) - { - for (int x = minx; x < maxx; ++x) - { - dtTile* tile = getTileAt(x,y); - if (!tile) continue; - n += queryTilePolygons(tile, bmin, bmax, polys+n, maxPolys-n); - if (n >= maxPolys) return n; - } - } - - return n; -} - -int dtTiledNavMesh::findPath(dtTilePolyRef startRef, dtTilePolyRef endRef, - const float* startPos, const float* endPos, - dtTilePolyRef* path, const int maxPathSize) -{ - if (!startRef || !endRef) - return 0; - - if (!maxPathSize) - return 0; - - if (!getPolyByRef(startRef) || !getPolyByRef(endRef)) - return 0; - - if (startRef == endRef) - { - path[0] = startRef; - return 1; - } - - if (!m_nodePool || !m_openList) - return 0; - - m_nodePool->clear(); - m_openList->clear(); - - static const float H_SCALE = 1.1f; // Heuristic scale. - - dtNode* startNode = m_nodePool->getNode(startRef); - startNode->pidx = 0; - startNode->cost = 0; - startNode->total = vdist(startPos, endPos) * H_SCALE; - startNode->id = startRef; - startNode->flags = DT_NODE_OPEN; - m_openList->push(startNode); - - dtNode* lastBestNode = startNode; - float lastBestNodeCost = startNode->total; - while (!m_openList->empty()) - { - dtNode* bestNode = m_openList->pop(); - - if (bestNode->id == endRef) - { - lastBestNode = bestNode; - break; - } - - // Get poly and tile. - unsigned int salt, it, ip; - dtDecodeTileId(bestNode->id, salt, it, ip); - // The API input has been cheked already, skip checking internal data. - const dtTileHeader* header = m_tiles[it].header; - const dtTilePoly* poly = &header->polys[ip]; - - for (int i = 0; i < poly->nlinks; ++i) - { - dtTilePolyRef neighbour = header->links[poly->links+i].ref; - if (neighbour) - { - // Skip parent node. - if (bestNode->pidx && m_nodePool->getNodeAtIdx(bestNode->pidx)->id == neighbour) - continue; - - dtNode* parent = bestNode; - dtNode newNode; - newNode.pidx = m_nodePool->getNodeIdx(parent); - newNode.id = neighbour; - - // Calculate cost. - float p0[3], p1[3]; - if (!parent->pidx) - vcopy(p0, startPos); - else - getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); - getEdgeMidPoint(parent->id, newNode.id, p1); - newNode.cost = parent->cost + vdist(p0,p1); - // Special case for last node. - if (newNode.id == endRef) - newNode.cost += vdist(p1, endPos); - - // Heuristic - const float h = vdist(p1,endPos)*H_SCALE; - newNode.total = newNode.cost + h; - - dtNode* actualNode = m_nodePool->getNode(newNode.id); - if (!actualNode) - continue; - - if (!((actualNode->flags & DT_NODE_OPEN) && newNode.total > actualNode->total) && - !((actualNode->flags & DT_NODE_CLOSED) && newNode.total > actualNode->total)) - { - actualNode->flags &= ~DT_NODE_CLOSED; - actualNode->pidx = newNode.pidx; - actualNode->cost = newNode.cost; - actualNode->total = newNode.total; - - if (h < lastBestNodeCost) - { - lastBestNodeCost = h; - lastBestNode = actualNode; - } - - if (actualNode->flags & DT_NODE_OPEN) - { - m_openList->modify(actualNode); - } - else - { - actualNode->flags |= DT_NODE_OPEN; - m_openList->push(actualNode); - } - } - } - } - bestNode->flags |= DT_NODE_CLOSED; - } - - // Reverse the path. - dtNode* prev = 0; - dtNode* node = lastBestNode; - do - { - dtNode* next = m_nodePool->getNodeAtIdx(node->pidx); - node->pidx = m_nodePool->getNodeIdx(prev); - prev = node; - node = next; - } - while (node); - - // Store path - node = prev; - int n = 0; - do - { - path[n++] = node->id; - node = m_nodePool->getNodeAtIdx(node->pidx); - } - while (node && n < maxPathSize); - - return n; -} - -int dtTiledNavMesh::findStraightPath(const float* startPos, const float* endPos, - const dtTilePolyRef* path, const int pathSize, - float* straightPath, const int maxStraightPathSize) -{ - if (!maxStraightPathSize) - return 0; - - if (!path[0]) - return 0; - - int straightPathSize = 0; - - float closestStartPos[3]; - if (!closestPointToPoly(path[0], startPos, closestStartPos)) - return 0; - - // Add start point. - vcopy(&straightPath[straightPathSize*3], closestStartPos); - straightPathSize++; - if (straightPathSize >= maxStraightPathSize) - return straightPathSize; - - float closestEndPos[3]; - if (!closestPointToPoly(path[pathSize-1], endPos, closestEndPos)) - return 0; - - float portalApex[3], portalLeft[3], portalRight[3]; - - if (pathSize > 1) - { - vcopy(portalApex, closestStartPos); - vcopy(portalLeft, portalApex); - vcopy(portalRight, portalApex); - int apexIndex = 0; - int leftIndex = 0; - int rightIndex = 0; - - for (int i = 0; i < pathSize; ++i) - { - float left[3], right[3]; - if (i < pathSize-1) - { - // Next portal. - if (!getPortalPoints(path[i], path[i+1], left, right)) - { - if (!closestPointToPoly(path[i], endPos, closestEndPos)) - return 0; - vcopy(&straightPath[straightPathSize*3], closestEndPos); - straightPathSize++; - return straightPathSize; - } - } - else - { - // End of the path. - vcopy(left, closestEndPos); - vcopy(right, closestEndPos); - } - - // Right vertex. - if (vequal(portalApex, portalRight)) - { - vcopy(portalRight, right); - rightIndex = i; - } - else - { - if (triArea2D(portalApex, portalRight, right) <= 0.0f) - { - if (triArea2D(portalApex, portalLeft, right) > 0.0f) - { - vcopy(portalRight, right); - rightIndex = i; - } - else - { - vcopy(portalApex, portalLeft); - apexIndex = leftIndex; - - if (!vequal(&straightPath[(straightPathSize-1)*3], portalApex)) - { - vcopy(&straightPath[straightPathSize*3], portalApex); - straightPathSize++; - if (straightPathSize >= maxStraightPathSize) - return straightPathSize; - } - - vcopy(portalLeft, portalApex); - vcopy(portalRight, portalApex); - leftIndex = apexIndex; - rightIndex = apexIndex; - - // Restart - i = apexIndex; - - continue; - } - } - } - - // Left vertex. - if (vequal(portalApex, portalLeft)) - { - vcopy(portalLeft, left); - leftIndex = i; - } - else - { - if (triArea2D(portalApex, portalLeft, left) >= 0.0f) - { - if (triArea2D(portalApex, portalRight, left) < 0.0f) - { - vcopy(portalLeft, left); - leftIndex = i; - } - else - { - vcopy(portalApex, portalRight); - apexIndex = rightIndex; - - if (!vequal(&straightPath[(straightPathSize-1)*3], portalApex)) - { - vcopy(&straightPath[straightPathSize*3], portalApex); - straightPathSize++; - if (straightPathSize >= maxStraightPathSize) - return straightPathSize; - } - - vcopy(portalLeft, portalApex); - vcopy(portalRight, portalApex); - leftIndex = apexIndex; - rightIndex = apexIndex; - - // Restart - i = apexIndex; - - continue; - } - } - } - } - } - - // Add end point. - vcopy(&straightPath[straightPathSize*3], closestEndPos); - straightPathSize++; - - return straightPathSize; -} - -// Returns portal points between two polygons. -bool dtTiledNavMesh::getPortalPoints(dtTilePolyRef from, dtTilePolyRef to, float* left, float* right) const -{ - unsigned int salt, it, ip; - dtDecodeTileId(from, salt, it, ip); - if (it >= DT_MAX_TILES) return false; - if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return false; - if (ip >= (unsigned int)m_tiles[it].header->npolys) return false; - const dtTileHeader* fromHeader = m_tiles[it].header; - const dtTilePoly* fromPoly = &fromHeader->polys[ip]; - - for (int i = 0; i < fromPoly->nlinks; ++i) - { - const dtTileLink* link = &fromHeader->links[fromPoly->links+i]; - if (link->ref == to) - { - // Find portal vertices. - const int v0 = fromPoly->v[link->e]; - const int v1 = fromPoly->v[(link->e+1) % fromPoly->nv]; - vcopy(left, &fromHeader->verts[v0*3]); - vcopy(right, &fromHeader->verts[v1*3]); - // If the link is at tile boundary, clamp the vertices to - // the link width. - if (link->side == 0 || link->side == 2) - { - // Unpack portal limits. - const float smin = min(left[2],right[2]); - const float smax = max(left[2],right[2]); - const float s = (smax-smin) / 255.0f; - const float lmin = smin + link->bmin*s; - const float lmax = smin + link->bmax*s; - left[2] = max(left[2],lmin); - left[2] = min(left[2],lmax); - right[2] = max(right[2],lmin); - right[2] = min(right[2],lmax); - } - else if (link->side == 1 || link->side == 3) - { - // Unpack portal limits. - const float smin = min(left[0],right[0]); - const float smax = max(left[0],right[0]); - const float s = (smax-smin) / 255.0f; - const float lmin = smin + link->bmin*s; - const float lmax = smin + link->bmax*s; - left[0] = max(left[0],lmin); - left[0] = min(left[0],lmax); - right[0] = max(right[0],lmin); - right[0] = min(right[0],lmax); - } - return true; - } - } - return false; -} - -// Returns edge mid point between two polygons. -bool dtTiledNavMesh::getEdgeMidPoint(dtTilePolyRef from, dtTilePolyRef to, float* mid) const -{ - float left[3], right[3]; - if (!getPortalPoints(from, to, left,right)) return false; - mid[0] = (left[0]+right[0])*0.5f; - mid[1] = (left[1]+right[1])*0.5f; - mid[2] = (left[2]+right[2])*0.5f; - return true; -} - -int dtTiledNavMesh::raycast(dtTilePolyRef centerRef, const float* startPos, const float* endPos, - float& t, dtTilePolyRef* path, const int pathSize) -{ - t = 0; - - if (!centerRef || !getPolyByRef(centerRef)) - return 0; - - dtTilePolyRef curRef = centerRef; - float verts[DT_TILE_VERTS_PER_POLYGON*3]; - int n = 0; - - while (curRef) - { - // Cast ray against current polygon. - - // The API input has been cheked already, skip checking internal data. - unsigned int salt, it, ip; - dtDecodeTileId(curRef, salt, it, ip); - const dtTileHeader* header = m_tiles[it].header; - const dtTilePoly* poly = &header->polys[ip]; - - // Collect vertices. - int nv = 0; - for (int i = 0; i < (int)poly->nv; ++i) - { - vcopy(&verts[nv*3], &header->verts[poly->v[i]*3]); - nv++; - } - if (nv < 3) - { - // Hit bad polygon, report hit. - return n; - } - - float tmin, tmax; - int segMin, segMax; - if (!intersectSegmentPoly2D(startPos, endPos, verts, nv, tmin, tmax, segMin, segMax)) - { - // Could not hit the polygon, keep the old t and report hit. - return n; - } - // Keep track of furthest t so far. - if (tmax > t) - t = tmax; - - if (n < pathSize) - path[n++] = curRef; - - // Follow neighbours. - dtTilePolyRef nextRef = 0; - for (int i = 0; i < poly->nlinks; ++i) - { - const dtTileLink* link = &header->links[poly->links+i]; - if ((int)link->e == segMax) - { - // If the link is internal, just return the ref. - if (link->side == 0xff) - { - nextRef = link->ref; - break; - } - - // If the link is at tile boundary, - const int v0 = poly->v[link->e]; - const int v1 = poly->v[(link->e+1) % poly->nv]; - const float* left = &header->verts[v0*3]; - const float* right = &header->verts[v1*3]; - - // Check that the intersection lies inside the link portal. - if (link->side == 0 || link->side == 2) - { - // Calculate link size. - const float smin = min(left[2],right[2]); - const float smax = max(left[2],right[2]); - const float s = (smax-smin) / 255.0f; - const float lmin = smin + link->bmin*s; - const float lmax = smin + link->bmax*s; - // Find Z intersection. - float z = startPos[2] + (endPos[2]-startPos[2])*tmax; - if (z >= lmin && z <= lmax) - { - nextRef = link->ref; - break; - } - } - else if (link->side == 1 || link->side == 3) - { - // Calculate link size. - const float smin = min(left[0],right[0]); - const float smax = max(left[0],right[0]); - const float s = (smax-smin) / 255.0f; - const float lmin = smin + link->bmin*s; - const float lmax = smin + link->bmax*s; - // Find X intersection. - float x = startPos[0] + (endPos[0]-startPos[0])*tmax; - if (x >= lmin && x <= lmax) - { - nextRef = link->ref; - break; - } - } - } - } - - if (!nextRef) - { - // No neighbour, we hit a wall. - return n; - } - - // No hit, advance to neighbour polygon. - curRef = nextRef; - } - - return n; -} - -int dtTiledNavMesh::findPolysAround(dtTilePolyRef centerRef, const float* centerPos, float radius, - dtTilePolyRef* resultRef, dtTilePolyRef* resultParent, float* resultCost, - const int maxResult) -{ - if (!centerRef) return 0; - if (!getPolyByRef(centerRef)) return 0; - if (!m_nodePool || !m_openList) return 0; - - m_nodePool->clear(); - m_openList->clear(); - - dtNode* startNode = m_nodePool->getNode(centerRef); - startNode->pidx = 0; - startNode->cost = 0; - startNode->total = 0; - startNode->id = centerRef; - startNode->flags = DT_NODE_OPEN; - m_openList->push(startNode); - - int n = 0; - if (n < maxResult) - { - if (resultRef) - resultRef[n] = startNode->id; - if (resultParent) - resultParent[n] = 0; - if (resultCost) - resultCost[n] = 0; - ++n; - } - - const float radiusSqr = sqr(radius); - - while (!m_openList->empty()) - { - dtNode* bestNode = m_openList->pop(); - - // Get poly and tile. - unsigned int salt, it, ip; - dtDecodeTileId(bestNode->id, salt, it, ip); - // The API input has been cheked already, skip checking internal data. - const dtTileHeader* header = m_tiles[it].header; - const dtTilePoly* poly = &header->polys[ip]; - - for (int i = 0; i < poly->nlinks; ++i) - { - const dtTileLink* link = &header->links[poly->links+i]; - dtTilePolyRef neighbour = link->ref; - if (neighbour) - { - // Skip parent node. - if (bestNode->pidx && m_nodePool->getNodeAtIdx(bestNode->pidx)->id == neighbour) - continue; - - // Calc distance to the edge. - const float* va = &header->verts[poly->v[link->e]*3]; - const float* vb = &header->verts[poly->v[(link->e+1)%poly->nv]*3]; - float tseg; - float distSqr = distancePtSegSqr2D(centerPos, va, vb, tseg); - - // If the circle is not touching the next polygon, skip it. - if (distSqr > radiusSqr) - continue; - - dtNode* parent = bestNode; - dtNode newNode; - newNode.pidx = m_nodePool->getNodeIdx(parent); - newNode.id = neighbour; - - // Cost - float p0[3], p1[3]; - if (!parent->pidx) - vcopy(p0, centerPos); - else - getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); - getEdgeMidPoint(parent->id, newNode.id, p1); - newNode.total = parent->total + vdist(p0,p1); - - dtNode* actualNode = m_nodePool->getNode(newNode.id); - if (!actualNode) - continue; - - if (!((actualNode->flags & DT_NODE_OPEN) && newNode.total > actualNode->total) && - !((actualNode->flags & DT_NODE_CLOSED) && newNode.total > actualNode->total)) - { - actualNode->flags &= ~DT_NODE_CLOSED; - actualNode->pidx = newNode.pidx; - actualNode->total = newNode.total; - - if (actualNode->flags & DT_NODE_OPEN) - { - m_openList->modify(actualNode); - } - else - { - if (n < maxResult) - { - if (resultRef) - resultRef[n] = actualNode->id; - if (resultParent) - resultParent[n] = m_nodePool->getNodeAtIdx(actualNode->pidx)->id; - if (resultCost) - resultCost[n] = actualNode->total; - ++n; - } - actualNode->flags = DT_NODE_OPEN; - m_openList->push(actualNode); - } - } - } - } - } - - return n; -} - -float dtTiledNavMesh::findDistanceToWall(dtTilePolyRef centerRef, const float* centerPos, float maxRadius, - float* hitPos, float* hitNormal) -{ - if (!centerRef) return 0; - if (!getPolyByRef(centerRef)) return 0; - if (!m_nodePool || !m_openList) return 0; - - m_nodePool->clear(); - m_openList->clear(); - - dtNode* startNode = m_nodePool->getNode(centerRef); - startNode->pidx = 0; - startNode->cost = 0; - startNode->total = 0; - startNode->id = centerRef; - startNode->flags = DT_NODE_OPEN; - m_openList->push(startNode); - - float radiusSqr = sqr(maxRadius); - - while (!m_openList->empty()) - { - dtNode* bestNode = m_openList->pop(); - - // Get poly and tile. - unsigned int salt, it, ip; - dtDecodeTileId(bestNode->id, salt, it, ip); - // The API input has been cheked already, skip checking internal data. - const dtTileHeader* header = m_tiles[it].header; - const dtTilePoly* poly = &header->polys[ip]; - - // Hit test walls. - for (int i = 0, j = (int)poly->nv-1; i < (int)poly->nv; j = i++) - { - // Skip non-solid edges. - if (poly->n[j] & 0x8000) - { - // Tile border. - bool solid = true; - for (int i = 0; i < poly->nlinks; ++i) - { - const dtTileLink* link = &header->links[poly->links+i]; - if (link->e == j && link->ref != 0) - { - solid = false; - break; - } - } - if (!solid) continue; - } - else if (poly->n[j]) - { - // Internal edge - continue; - } - - // Calc distance to the edge. - const float* vj = &header->verts[poly->v[j]*3]; - const float* vi = &header->verts[poly->v[i]*3]; - float tseg; - float distSqr = distancePtSegSqr2D(centerPos, vj, vi, tseg); - - // Edge is too far, skip. - if (distSqr > radiusSqr) - continue; - - // Hit wall, update radius. - radiusSqr = distSqr; - // Calculate hit pos. - hitPos[0] = vj[0] + (vi[0] - vj[0])*tseg; - hitPos[1] = vj[1] + (vi[1] - vj[1])*tseg; - hitPos[2] = vj[2] + (vi[2] - vj[2])*tseg; - } - - for (int i = 0; i < poly->nlinks; ++i) - { - const dtTileLink* link = &header->links[poly->links+i]; - dtTilePolyRef neighbour = link->ref; - if (neighbour) - { - // Skip parent node. - if (bestNode->pidx && m_nodePool->getNodeAtIdx(bestNode->pidx)->id == neighbour) - continue; - - // Calc distance to the edge. - const float* va = &header->verts[poly->v[link->e]*3]; - const float* vb = &header->verts[poly->v[(link->e+1)%poly->nv]*3]; - float tseg; - float distSqr = distancePtSegSqr2D(centerPos, va, vb, tseg); - - // If the circle is not touching the next polygon, skip it. - if (distSqr > radiusSqr) - continue; - - dtNode* parent = bestNode; - dtNode newNode; - newNode.pidx = m_nodePool->getNodeIdx(parent); - newNode.id = neighbour; - - float p0[3], p1[3]; - if (!parent->pidx) - vcopy(p0, centerPos); - else - getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); - getEdgeMidPoint(parent->id, newNode.id, p1); - newNode.total = parent->total + vdist(p0,p1); - - dtNode* actualNode = m_nodePool->getNode(newNode.id); - if (!actualNode) - continue; - - if (!((actualNode->flags & DT_NODE_OPEN) && newNode.total > actualNode->total) && - !((actualNode->flags & DT_NODE_CLOSED) && newNode.total > actualNode->total)) - { - actualNode->flags &= ~DT_NODE_CLOSED; - actualNode->pidx = newNode.pidx; - actualNode->total = newNode.total; - - if (actualNode->flags & DT_NODE_OPEN) - { - m_openList->modify(actualNode); - } - else - { - actualNode->flags = DT_NODE_OPEN; - m_openList->push(actualNode); - } - } - } - } - } - - // Calc hit normal. - vsub(hitNormal, centerPos, hitPos); - vnormalize(hitNormal); - - return sqrtf(radiusSqr); -} - -const dtTilePoly* dtTiledNavMesh::getPolyByRef(dtTilePolyRef ref) const -{ - unsigned int salt, it, ip; - dtDecodeTileId(ref, salt, it, ip); - if (it >= DT_MAX_TILES) return 0; - if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return 0; - if (ip >= (unsigned int)m_tiles[it].header->npolys) return 0; - return &m_tiles[it].header->polys[ip]; -} - -const float* dtTiledNavMesh::getPolyVertsByRef(dtTilePolyRef ref) const -{ - unsigned int salt, it, ip; - dtDecodeTileId(ref, salt, it, ip); - if (it >= DT_MAX_TILES) return 0; - if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return 0; - if (ip >= (unsigned int)m_tiles[it].header->npolys) return 0; - return m_tiles[it].header->verts; -} - -const dtTileLink* dtTiledNavMesh::getPolyLinksByRef(dtTilePolyRef ref) const -{ - unsigned int salt, it, ip; - dtDecodeTileId(ref, salt, it, ip); - if (it >= DT_MAX_TILES) return 0; - if (m_tiles[it].salt != salt || m_tiles[it].header == 0) return 0; - if (ip >= (unsigned int)m_tiles[it].header->npolys) return 0; - return m_tiles[it].header->links; -} diff --git a/Detour/Source/DetourTileNavMeshBuilder.cpp b/Detour/Source/DetourTileNavMeshBuilder.cpp deleted file mode 100644 index 7010976c..00000000 --- a/Detour/Source/DetourTileNavMeshBuilder.cpp +++ /dev/null @@ -1,215 +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 -#include -#include -#include -#include "DetourTileNavMesh.h" -#include "DetourCommon.h" - -bool dtCreateNavMeshTileData(const unsigned short* verts, const int nverts, - const unsigned short* polys, const int npolys, const int nvp, - const unsigned short* dmeshes, const float* dverts, const int ndverts, - const unsigned char* dtris, const int ndtris, - const float* bmin, const float* bmax, float cs, float ch, int tileSize, int walkableClimb, - unsigned char** outData, int* outDataSize) -{ - if (nvp != DT_TILE_VERTS_PER_POLYGON) - return false; - if (nverts >= 0xffff) - return false; - if (npolys > DT_MAX_TILES) - return false; - - if (!nverts) - return false; - if (!npolys) - return false; - if (!dmeshes || !dverts || ! dtris) - return false; - - // Find portal edges which are at tile borders. - int nedges = 0; - int nportals = 0; - for (int i = 0; i < npolys; ++i) - { - const unsigned short* p = &polys[i*2*nvp]; - for (int j = 0; j < nvp; ++j) - { - if (p[j] == 0xffff) break; - int nj = j+1; - if (nj >= nvp || p[nj] == 0xffff) nj = 0; - const unsigned short* va = &verts[p[j]*3]; - const unsigned short* vb = &verts[p[nj]*3]; - - nedges++; - - if (va[0] == tileSize && vb[0] == tileSize) - nportals++; // x+ - else if (va[2] == tileSize && vb[2] == tileSize) - nportals++; // z+ - else if (va[0] == 0 && vb[0] == 0) - nportals++; // x- - else if (va[2] == 0 && vb[2] == 0) - nportals++; // z- - } - } - - const int maxLinks = nedges + nportals*2; - - - // Find unique detail vertices. - int uniqueDetailVerts = 0; - if (dmeshes) - { - for (int i = 0; i < npolys; ++i) - { - const unsigned short* p = &polys[i*nvp*2]; - int ndv = dmeshes[i*4+1]; - int nv = 0; - for (int j = 0; j < nvp; ++j) - { - if (p[j] == 0xffff) break; - nv++; - } - ndv -= nv; - uniqueDetailVerts += ndv; - } - } - - // Calculate data size - const int headerSize = align4(sizeof(dtTileHeader)); - const int vertsSize = align4(sizeof(float)*3*nverts); - const int polysSize = align4(sizeof(dtTilePoly)*npolys); - const int linksSize = align4(sizeof(dtTileLink)*maxLinks); - const int detailMeshesSize = align4(sizeof(dtTilePolyDetail)*npolys); - const int detailVertsSize = align4(sizeof(float)*3*uniqueDetailVerts); - const int detailTrisSize = align4(sizeof(unsigned char)*4*ndtris); - - const int dataSize = headerSize + vertsSize + polysSize + linksSize + - detailMeshesSize + detailVertsSize + detailTrisSize; - unsigned char* data = new unsigned char[dataSize]; - if (!data) - return false; - memset(data, 0, dataSize); - - unsigned char* d = data; - dtTileHeader* header = (dtTileHeader*)d; d += headerSize; - float* navVerts = (float*)d; d += vertsSize; - dtTilePoly* navPolys = (dtTilePoly*)d; d += polysSize; - d += linksSize; - dtTilePolyDetail* navDMeshes = (dtTilePolyDetail*)d; d += detailMeshesSize; - float* navDVerts = (float*)d; d += detailVertsSize; - unsigned char* navDTris = (unsigned char*)d; d += detailTrisSize; - - - // Store header - header->magic = DT_TILE_NAVMESH_MAGIC; - header->version = DT_TILE_NAVMESH_VERSION; - header->npolys = npolys; - header->nverts = nverts; - header->maxlinks = maxLinks; - header->bmin[0] = bmin[0]; - header->bmin[1] = bmin[1]; - header->bmin[2] = bmin[2]; - header->bmax[0] = bmax[0]; - header->bmax[1] = bmax[1]; - header->bmax[2] = bmax[2]; - header->ndmeshes = npolys; - header->ndverts = uniqueDetailVerts; - header->ndtris = ndtris; - - // Store vertices - for (int i = 0; i < nverts; ++i) - { - const unsigned short* iv = &verts[i*3]; - float* v = &navVerts[i*3]; - v[0] = bmin[0] + iv[0] * cs; - v[1] = bmin[1] + iv[1] * ch; - v[2] = bmin[2] + iv[2] * cs; - } - - // Store polygons - const unsigned short* src = polys; - for (int i = 0; i < npolys; ++i) - { - dtTilePoly* p = &navPolys[i]; - p->nv = 0; - for (int j = 0; j < nvp; ++j) - { - if (src[j] == 0xffff) break; - p->v[j] = src[j]; - p->n[j] = (src[nvp+j]+1) & 0xffff; - p->nv++; - } - src += nvp*2; - } - - // Store portal edges. - for (int i = 0; i < npolys; ++i) - { - dtTilePoly* poly = &navPolys[i]; - for (int j = 0; j < poly->nv; ++j) - { - int nj = j+1; - if (nj >= poly->nv) nj = 0; - - const unsigned short* va = &verts[poly->v[j]*3]; - const unsigned short* vb = &verts[poly->v[nj]*3]; - - if (va[0] == tileSize && vb[0] == tileSize) // x+ - poly->n[j] = 0x8000 | 0; - else if (va[2] == tileSize && vb[2] == tileSize) // z+ - poly->n[j] = 0x8000 | 1; - else if (va[0] == 0 && vb[0] == 0) // x- - poly->n[j] = 0x8000 | 2; - else if (va[2] == 0 && vb[2] == 0) // z- - poly->n[j] = 0x8000 | 3; - } - } - - // Store detail meshes and vertices. - // The nav polygon vertices are stored as the first vertices on each mesh. - // We compress the mesh data by skipping them and using the navmesh coordinates. - unsigned short vbase = 0; - for (int i = 0; i < npolys; ++i) - { - dtTilePolyDetail& dtl = navDMeshes[i]; - const int vb = dmeshes[i*4+0]; - const int ndv = dmeshes[i*4+1]; - const int nv = navPolys[i].nv; - dtl.vbase = vbase; - dtl.nverts = ndv-nv; - dtl.tbase = dmeshes[i*4+2]; - dtl.ntris = dmeshes[i*4+3]; - // Copy vertices except the first 'nv' verts which are equal to nav poly verts. - if (ndv-nv) - { - memcpy(&navDVerts[vbase*3], &dverts[(vb+nv)*3], sizeof(float)*3*(ndv-nv)); - vbase += ndv-nv; - } - } - // Store triangles. - memcpy(navDTris, dtris, sizeof(unsigned char)*4*ndtris); - - *outData = data; - *outDataSize = dataSize; - - return true; -} diff --git a/RecastDemo/Bin/Recast.app/Contents/Info.plist b/RecastDemo/Bin/Recast.app/Contents/Info.plist index ae9e84b5..a29bbdca 100644 --- a/RecastDemo/Bin/Recast.app/Contents/Info.plist +++ b/RecastDemo/Bin/Recast.app/Contents/Info.plist @@ -6,6 +6,8 @@ English CFBundleExecutable Recast + CFBundleIconFile + Icon.icns CFBundleIdentifier com.yourcompany.Recast CFBundleInfoDictionaryVersion diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast index 80cfcfe761a2496e22a8248136c2c90e5d1afb23..a94787b033cc5a3cf453d8d50e29839bc00f3416 100755 GIT binary patch literal 530796 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

T<#?$nzWZ)8t#Jb9`cFThcxd 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 K^D;bhoc|A!SnwJE literal 642700 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 z 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 diff --git a/RecastDemo/Bin/Recast.app/Contents/Resources/English.lproj/MainMenu.nib b/RecastDemo/Bin/Recast.app/Contents/Resources/English.lproj/MainMenu.nib index bc2fdd8b44e7eadcddffc0238951d6e9cbcf811a..7518524c9fd99ac541975c8515e1dc092e964969 100644 GIT binary patch literal 28213 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 literal 26602 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 diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser index 8633c87f..ec757e23 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser @@ -16,7 +16,7 @@ 8D1107260486CEB800E47090 /* Recast */, ); breakpoints = ( - 6B0249B11003783F00CF7107 /* Sample_TileMesh.cpp:48 */, + 6B0249B11003783F00CF7107 /* Sample_TileMesh.cpp:27 */, 6B0249ED10037C0A00CF7107 /* DetourTileNavMesh.cpp:1 */, 6B0249EF10037C0C00CF7107 /* DetourTileNavMesh.cpp:1 */, 6B024AC01004AB3900CF7107 /* DetourTileNavMesh.cpp:1 */, @@ -118,8 +118,8 @@ PBXFileDataSource_Target_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 281522779; - PBXWorkspaceStateSaveDate = 281522779; + PBXPerProjectTemplateStateSaveDate = 281602357; + PBXWorkspaceStateSaveDate = 281602357; }; perUserProjectItems = { 6B3BFADF107A80E1006284CD = 6B3BFADF107A80E1006284CD /* PBXTextBookmark */; @@ -212,300 +212,307 @@ 6BA1E66A10C50A35008007F6 = 6BA1E66A10C50A35008007F6 /* PBXTextBookmark */; 6BA1E66B10C50A35008007F6 = 6BA1E66B10C50A35008007F6 /* PBXTextBookmark */; 6BA1E66C10C50A35008007F6 = 6BA1E66C10C50A35008007F6 /* PBXTextBookmark */; - 6BA1E7F210C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7F210C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7F310C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7F310C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7F410C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7F410C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7F510C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7F510C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7F610C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7F610C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7F710C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7F710C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7F810C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7F810C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7F910C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7F910C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7FA10C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7FA10C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7FB10C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7FB10C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7FC10C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7FC10C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7FD10C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7FD10C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7FE10C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7FE10C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E7FF10C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E7FF10C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E80010C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E80010C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E80110C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E80110C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E80210C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E80210C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E80310C7B3FF008007F6 /* PBXTextBookmark */ = 6BA1E80310C7B3FF008007F6 /* PBXTextBookmark */; - 6BA1E81D10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E81D10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E81E10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E81E10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E81F10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E81F10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82010C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82010C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82110C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82110C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82210C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82210C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82310C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82310C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82410C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82410C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82510C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82510C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82610C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82610C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82710C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82710C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82810C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82810C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82910C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82910C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82A10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82A10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82B10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82B10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82C10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82C10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82D10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82D10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82E10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82E10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E82F10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E82F10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83010C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83010C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83110C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83110C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83210C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83210C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83310C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83310C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83410C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83410C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83510C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83510C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83610C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83610C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83710C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83710C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83810C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83810C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83910C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83910C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83A10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83A10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83B10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83B10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83C10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83C10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83D10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83D10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83E10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83E10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E83F10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E83F10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84010C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84010C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84110C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84110C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84210C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84210C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84310C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84310C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84410C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84410C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84510C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84510C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84610C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84610C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84710C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84710C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84810C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84810C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84910C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84910C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84A10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84A10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84B10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84B10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84C10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84C10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84D10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84D10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84E10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84E10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E84F10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E84F10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85010C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85010C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85110C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85110C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85210C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85210C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85310C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85310C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85410C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85410C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85510C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85510C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85610C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85610C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85710C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85710C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85810C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85810C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85910C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85910C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85A10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85A10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85B10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85B10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85C10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85C10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85D10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85D10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85E10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85E10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E85F10C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E85F10C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E86010C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E86010C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E86110C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E86110C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E86210C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E86210C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E86310C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E86310C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E86410C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E86410C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E86510C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E86510C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E86610C7BB85008007F6 /* PBXTextBookmark */ = 6BA1E86610C7BB85008007F6 /* PBXTextBookmark */; - 6BA1E86C10C7BCB8008007F6 /* PBXTextBookmark */ = 6BA1E86C10C7BCB8008007F6 /* PBXTextBookmark */; - 6BA1E86D10C7BCB8008007F6 /* PBXTextBookmark */ = 6BA1E86D10C7BCB8008007F6 /* PBXTextBookmark */; - 6BA1E86E10C7BCB8008007F6 /* PBXTextBookmark */ = 6BA1E86E10C7BCB8008007F6 /* PBXTextBookmark */; - 6BA1E86F10C7BCB8008007F6 /* PBXTextBookmark */ = 6BA1E86F10C7BCB8008007F6 /* PBXTextBookmark */; - 6BA1E87B10C7BD87008007F6 /* PBXTextBookmark */ = 6BA1E87B10C7BD87008007F6 /* PBXTextBookmark */; - 6BA1E87C10C7BD87008007F6 /* PBXTextBookmark */ = 6BA1E87C10C7BD87008007F6 /* PBXTextBookmark */; - 6BA1E87D10C7BD87008007F6 /* PBXTextBookmark */ = 6BA1E87D10C7BD87008007F6 /* PBXTextBookmark */; - 6BA1E87E10C7BD87008007F6 /* PBXTextBookmark */ = 6BA1E87E10C7BD87008007F6 /* PBXTextBookmark */; - 6BA1E87F10C7BD87008007F6 /* PBXTextBookmark */ = 6BA1E87F10C7BD87008007F6 /* PBXTextBookmark */; - 6BA1E88010C7BD87008007F6 /* PBXTextBookmark */ = 6BA1E88010C7BD87008007F6 /* PBXTextBookmark */; - 6BA1E88110C7BD87008007F6 /* PBXTextBookmark */ = 6BA1E88110C7BD87008007F6 /* PBXTextBookmark */; - 6BA1E88210C7BD87008007F6 /* PBXTextBookmark */ = 6BA1E88210C7BD87008007F6 /* PBXTextBookmark */; - 6BA1E88310C7BD87008007F6 /* PBXTextBookmark */ = 6BA1E88310C7BD87008007F6 /* PBXTextBookmark */; - 6BA1E89310C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89310C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89410C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89410C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89510C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89510C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89610C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89610C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89710C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89710C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89810C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89810C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89910C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89910C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89A10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89A10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89B10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89B10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89C10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89C10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89D10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89D10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89E10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89E10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E89F10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E89F10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8A010C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8A010C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8A110C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8A110C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8A210C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8A210C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8A310C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8A310C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8A410C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8A410C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8A510C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8A510C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8A610C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8A610C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8A710C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8A710C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8A810C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8A810C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8A910C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8A910C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8AA10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8AA10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8AB10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8AB10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8AC10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8AC10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8AD10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8AD10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8AE10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8AE10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8AF10C7C227008007F6 /* PBXTextBookmark */ = 6BA1E8AF10C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8B010C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8B010C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8B110C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8B110C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8B210C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8B210C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8B310C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8B310C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8B410C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8B410C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8B510C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8B510C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8B610C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8B610C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8B710C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8B710C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8B810C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8B810C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8B910C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8B910C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8BA10C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8BA10C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8BB10C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8BB10C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8BC10C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8BC10C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8BD10C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8BD10C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8BE10C7C5D1008007F6 /* PBXTextBookmark */ = 6BA1E8BE10C7C5D1008007F6 /* PBXTextBookmark */; - 6BA1E8BF10C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8BF10C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8C010C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8C010C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8C110C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8C110C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8C210C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8C210C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8C310C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8C310C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8C410C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8C410C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8C510C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8C510C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8C610C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8C610C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8C710C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8C710C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8C810C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8C810C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8C910C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8C910C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8CA10C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8CA10C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8CB10C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8CB10C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8CC10C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8CC10C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8CD10C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8CD10C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8CE10C7C700008007F6 /* PBXTextBookmark */ = 6BA1E8CE10C7C700008007F6 /* PBXTextBookmark */; - 6BA1E8CF10C7C9A8008007F6 /* PBXTextBookmark */ = 6BA1E8CF10C7C9A8008007F6 /* PBXTextBookmark */; - 6BA1E8D010C7C9A8008007F6 /* PBXTextBookmark */ = 6BA1E8D010C7C9A8008007F6 /* PBXTextBookmark */; - 6BA1E8D110C7C9A8008007F6 /* PBXTextBookmark */ = 6BA1E8D110C7C9A8008007F6 /* PBXTextBookmark */; - 6BA1E8D210C7C9A8008007F6 /* PBXTextBookmark */ = 6BA1E8D210C7C9A8008007F6 /* PBXTextBookmark */; - 6BA1E8D310C7CB2E008007F6 /* PBXTextBookmark */ = 6BA1E8D310C7CB2E008007F6 /* PBXTextBookmark */; - 6BA1E8D410C7CB2E008007F6 /* PBXTextBookmark */ = 6BA1E8D410C7CB2E008007F6 /* PBXTextBookmark */; - 6BA1E8D510C7CB2E008007F6 /* PBXTextBookmark */ = 6BA1E8D510C7CB2E008007F6 /* PBXTextBookmark */; - 6BA1E8D610C7CB2E008007F6 /* PBXTextBookmark */ = 6BA1E8D610C7CB2E008007F6 /* PBXTextBookmark */; - 6BA1E8D710C7CB2E008007F6 /* PBXTextBookmark */ = 6BA1E8D710C7CB2E008007F6 /* PBXTextBookmark */; - 6BA1E8D810C7CB2E008007F6 /* PBXTextBookmark */ = 6BA1E8D810C7CB2E008007F6 /* PBXTextBookmark */; - 6BA1E8D910C7CB2E008007F6 /* PBXTextBookmark */ = 6BA1E8D910C7CB2E008007F6 /* PBXTextBookmark */; - 6BA1E8DA10C7CB2E008007F6 /* PBXTextBookmark */ = 6BA1E8DA10C7CB2E008007F6 /* PBXTextBookmark */; - 6BA1E8DB10C7CB62008007F6 /* PBXTextBookmark */ = 6BA1E8DB10C7CB62008007F6 /* PBXTextBookmark */; - 6BA1E8DC10C7CB62008007F6 /* PBXTextBookmark */ = 6BA1E8DC10C7CB62008007F6 /* PBXTextBookmark */; - 6BA1E8DD10C7CB62008007F6 /* PBXTextBookmark */ = 6BA1E8DD10C7CB62008007F6 /* PBXTextBookmark */; - 6BA1E8DE10C7CB62008007F6 /* PBXTextBookmark */ = 6BA1E8DE10C7CB62008007F6 /* PBXTextBookmark */; - 6BA1E8E310C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8E310C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8E410C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8E410C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8E510C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8E510C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8E610C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8E610C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8E710C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8E710C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8E810C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8E810C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8E910C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8E910C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8EA10C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8EA10C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8EB10C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8EB10C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8EC10C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8EC10C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8ED10C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8ED10C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8EE10C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8EE10C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8EF10C7D2FA008007F6 /* PBXTextBookmark */ = 6BA1E8EF10C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8F010C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8F010C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E8F110C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8F110C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E8F210C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8F210C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E8F310C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8F310C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E8F410C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8F410C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E8F510C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8F510C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E8F610C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8F610C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E8F710C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8F710C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E8F810C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8F810C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E8F910C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8F910C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E8FA10C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8FA10C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E8FB10C7D4D9008007F6 /* PBXTextBookmark */ = 6BA1E8FB10C7D4D9008007F6 /* PBXTextBookmark */; - 6BA1E90210C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90210C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90310C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90310C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90410C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90410C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90510C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90510C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90610C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90610C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90710C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90710C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90810C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90810C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90910C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90910C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90A10C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90A10C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90B10C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90B10C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90C10C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90C10C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90D10C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90D10C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90E10C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90E10C7D850008007F6 /* PBXTextBookmark */; - 6BA1E90F10C7D850008007F6 /* PBXTextBookmark */ = 6BA1E90F10C7D850008007F6 /* PBXTextBookmark */; - 6BA1E91210C7D8A9008007F6 /* PBXTextBookmark */ = 6BA1E91210C7D8A9008007F6 /* PBXTextBookmark */; - 6BA1E91310C7D8A9008007F6 /* PBXTextBookmark */ = 6BA1E91310C7D8A9008007F6 /* PBXTextBookmark */; - 6BA1E91410C7D8A9008007F6 /* PBXTextBookmark */ = 6BA1E91410C7D8A9008007F6 /* PBXTextBookmark */; - 6BA1E91510C7D8A9008007F6 /* PBXTextBookmark */ = 6BA1E91510C7D8A9008007F6 /* PBXTextBookmark */; - 6BA1E91610C7D8A9008007F6 /* PBXTextBookmark */ = 6BA1E91610C7D8A9008007F6 /* PBXTextBookmark */; - 6BA1E91710C7D8A9008007F6 /* PBXTextBookmark */ = 6BA1E91710C7D8A9008007F6 /* PBXTextBookmark */; - 6BA1E91C10C7D966008007F6 /* PBXTextBookmark */ = 6BA1E91C10C7D966008007F6 /* PBXTextBookmark */; - 6BA1E91F10C7D999008007F6 /* PBXTextBookmark */ = 6BA1E91F10C7D999008007F6 /* PBXTextBookmark */; - 6BA1E92510C7D9E8008007F6 /* PBXTextBookmark */ = 6BA1E92510C7D9E8008007F6 /* PBXTextBookmark */; - 6BA1E92B10C7DAA1008007F6 /* PBXTextBookmark */ = 6BA1E92B10C7DAA1008007F6 /* PBXTextBookmark */; - 6BA1E92C10C7DAA1008007F6 /* PBXTextBookmark */ = 6BA1E92C10C7DAA1008007F6 /* PBXTextBookmark */; - 6BA1E92D10C7DAA1008007F6 /* PBXTextBookmark */ = 6BA1E92D10C7DAA1008007F6 /* PBXTextBookmark */; - 6BA1E92E10C7DAA1008007F6 /* PBXTextBookmark */ = 6BA1E92E10C7DAA1008007F6 /* PBXTextBookmark */; - 6BA1E92F10C7DAA1008007F6 /* PBXTextBookmark */ = 6BA1E92F10C7DAA1008007F6 /* PBXTextBookmark */; - 6BA1E93010C7DAA1008007F6 /* PBXTextBookmark */ = 6BA1E93010C7DAA1008007F6 /* PBXTextBookmark */; - 6BA1E93110C7DAA1008007F6 /* PBXTextBookmark */ = 6BA1E93110C7DAA1008007F6 /* PBXTextBookmark */; - 6BA1E93710C7DB10008007F6 /* PBXTextBookmark */ = 6BA1E93710C7DB10008007F6 /* PBXTextBookmark */; - 6BA1E93810C7DB10008007F6 /* PBXTextBookmark */ = 6BA1E93810C7DB10008007F6 /* PBXTextBookmark */; - 6BA1E93910C7DB10008007F6 /* PBXTextBookmark */ = 6BA1E93910C7DB10008007F6 /* PBXTextBookmark */; - 6BA1E93A10C7DB10008007F6 /* PBXTextBookmark */ = 6BA1E93A10C7DB10008007F6 /* PBXTextBookmark */; - 6BA1E93B10C7DB10008007F6 /* PBXTextBookmark */ = 6BA1E93B10C7DB10008007F6 /* PBXTextBookmark */; - 6BA1E93F10C7DB2F008007F6 /* PBXTextBookmark */ = 6BA1E93F10C7DB2F008007F6 /* PBXTextBookmark */; - 6BA1E94010C7DB2F008007F6 /* PBXTextBookmark */ = 6BA1E94010C7DB2F008007F6 /* PBXTextBookmark */; - 6BA1E94110C7DB2F008007F6 /* PBXTextBookmark */ = 6BA1E94110C7DB2F008007F6 /* PBXTextBookmark */; - 6BA1E94210C7DB2F008007F6 /* PBXTextBookmark */ = 6BA1E94210C7DB2F008007F6 /* PBXTextBookmark */; - 6BA1E94410C7DB45008007F6 /* PBXTextBookmark */ = 6BA1E94410C7DB45008007F6 /* PBXTextBookmark */; - 6BA1E94510C7DB45008007F6 /* PBXTextBookmark */ = 6BA1E94510C7DB45008007F6 /* PBXTextBookmark */; - 6BA1E94610C7DB45008007F6 /* PBXTextBookmark */ = 6BA1E94610C7DB45008007F6 /* PBXTextBookmark */; - 6BA1E94710C7DB45008007F6 /* PBXTextBookmark */ = 6BA1E94710C7DB45008007F6 /* PBXTextBookmark */; - 6BA1E94910C7DB51008007F6 /* PBXTextBookmark */ = 6BA1E94910C7DB51008007F6 /* PBXTextBookmark */; - 6BA1E94A10C7DB51008007F6 /* PBXTextBookmark */ = 6BA1E94A10C7DB51008007F6 /* PBXTextBookmark */; - 6BA1E94B10C7DB51008007F6 /* PBXTextBookmark */ = 6BA1E94B10C7DB51008007F6 /* PBXTextBookmark */; - 6BA1E94C10C7DB51008007F6 /* PBXTextBookmark */ = 6BA1E94C10C7DB51008007F6 /* PBXTextBookmark */; - 6BA1E94E10C7DB5C008007F6 /* PBXTextBookmark */ = 6BA1E94E10C7DB5C008007F6 /* PBXTextBookmark */; - 6BA1E95110C7DBC6008007F6 /* PBXTextBookmark */ = 6BA1E95110C7DBC6008007F6 /* PBXTextBookmark */; - 6BA1E95C10C7DBF9008007F6 /* PBXTextBookmark */ = 6BA1E95C10C7DBF9008007F6 /* PBXTextBookmark */; - 6BA1E96310C7DC15008007F6 /* PBXTextBookmark */ = 6BA1E96310C7DC15008007F6 /* PBXTextBookmark */; - 6BA1E96910C7DCD1008007F6 /* PBXTextBookmark */ = 6BA1E96910C7DCD1008007F6 /* PBXTextBookmark */; - 6BA1E96D10C7DDD6008007F6 /* PBXTextBookmark */ = 6BA1E96D10C7DDD6008007F6 /* PBXTextBookmark */; - 6BA1E96E10C7DDD6008007F6 /* PBXTextBookmark */ = 6BA1E96E10C7DDD6008007F6 /* PBXTextBookmark */; - 6BA1E96F10C7DDD6008007F6 /* PBXTextBookmark */ = 6BA1E96F10C7DDD6008007F6 /* PBXTextBookmark */; - 6BA1E97010C7DDD6008007F6 /* PBXTextBookmark */ = 6BA1E97010C7DDD6008007F6 /* PBXTextBookmark */; - 6BA1E97110C7DDD6008007F6 /* PBXTextBookmark */ = 6BA1E97110C7DDD6008007F6 /* PBXTextBookmark */; - 6BA1E97410C7DF1F008007F6 /* PBXTextBookmark */ = 6BA1E97410C7DF1F008007F6 /* PBXTextBookmark */; - 6BA1E97510C7DF1F008007F6 /* PBXTextBookmark */ = 6BA1E97510C7DF1F008007F6 /* PBXTextBookmark */; - 6BA1E97610C7DF1F008007F6 /* PBXTextBookmark */ = 6BA1E97610C7DF1F008007F6 /* PBXTextBookmark */; - 6BA1E97710C7DF1F008007F6 /* PBXTextBookmark */ = 6BA1E97710C7DF1F008007F6 /* PBXTextBookmark */; - 6BA1E97810C7DF1F008007F6 /* PBXTextBookmark */ = 6BA1E97810C7DF1F008007F6 /* PBXTextBookmark */; - 6BA1E97910C7DF1F008007F6 /* PBXTextBookmark */ = 6BA1E97910C7DF1F008007F6 /* PBXTextBookmark */; - 6BA1E97A10C7DF1F008007F6 /* PBXTextBookmark */ = 6BA1E97A10C7DF1F008007F6 /* PBXTextBookmark */; - 6BA1E97B10C7DF1F008007F6 /* PBXTextBookmark */ = 6BA1E97B10C7DF1F008007F6 /* PBXTextBookmark */; - 6BA1E97E10C7DF98008007F6 /* PBXTextBookmark */ = 6BA1E97E10C7DF98008007F6 /* PBXTextBookmark */; - 6BA1E98010C7DFEF008007F6 /* PBXTextBookmark */ = 6BA1E98010C7DFEF008007F6 /* PBXTextBookmark */; - 6BA1E98310C7E0B7008007F6 /* PBXTextBookmark */ = 6BA1E98310C7E0B7008007F6 /* PBXTextBookmark */; - 6BA1E98410C7E0BF008007F6 /* PBXTextBookmark */ = 6BA1E98410C7E0BF008007F6 /* PBXTextBookmark */; - 6BA1E98610C7E0E8008007F6 /* PBXTextBookmark */ = 6BA1E98610C7E0E8008007F6 /* PBXTextBookmark */; - 6BA1E98810C7E178008007F6 /* PBXTextBookmark */ = 6BA1E98810C7E178008007F6 /* PBXTextBookmark */; - 6BA1E98D10C7EAC3008007F6 /* PBXTextBookmark */ = 6BA1E98D10C7EAC3008007F6 /* PBXTextBookmark */; - 6BA1E98E10C7EAC3008007F6 /* PBXTextBookmark */ = 6BA1E98E10C7EAC3008007F6 /* PBXTextBookmark */; - 6BA1E98F10C7EAC3008007F6 /* PBXTextBookmark */ = 6BA1E98F10C7EAC3008007F6 /* PBXTextBookmark */; - 6BA1E99010C7EAC3008007F6 /* PBXTextBookmark */ = 6BA1E99010C7EAC3008007F6 /* PBXTextBookmark */; - 6BA1E99110C7EAC3008007F6 /* PBXTextBookmark */ = 6BA1E99110C7EAC3008007F6 /* PBXTextBookmark */; - 6BA1E99310C7EAEF008007F6 /* PBXTextBookmark */ = 6BA1E99310C7EAEF008007F6 /* PBXTextBookmark */; - 6BA1E99510C7EB05008007F6 /* PBXTextBookmark */ = 6BA1E99510C7EB05008007F6 /* PBXTextBookmark */; - 6BA1E99810C7EB71008007F6 /* PBXTextBookmark */ = 6BA1E99810C7EB71008007F6 /* PBXTextBookmark */; - 6BA1E99B10C7EBB0008007F6 /* PBXTextBookmark */ = 6BA1E99B10C7EBB0008007F6 /* PBXTextBookmark */; - 6BA1E99D10C7EC0F008007F6 /* PBXTextBookmark */ = 6BA1E99D10C7EC0F008007F6 /* PBXTextBookmark */; - 6BA1E99F10C7EC3F008007F6 /* PBXTextBookmark */ = 6BA1E99F10C7EC3F008007F6 /* PBXTextBookmark */; - 6BA1E9A110C7EC47008007F6 /* PBXTextBookmark */ = 6BA1E9A110C7EC47008007F6 /* PBXTextBookmark */; - 6BA1E9A310C7EC77008007F6 /* PBXTextBookmark */ = 6BA1E9A310C7EC77008007F6 /* PBXTextBookmark */; - 6BA1E9A510C7EC93008007F6 /* PBXTextBookmark */ = 6BA1E9A510C7EC93008007F6 /* PBXTextBookmark */; - 6BA1E9A710C7ECFF008007F6 /* PBXTextBookmark */ = 6BA1E9A710C7ECFF008007F6 /* PBXTextBookmark */; - 6BA1E9A910C7ED0B008007F6 /* PBXTextBookmark */ = 6BA1E9A910C7ED0B008007F6 /* PBXTextBookmark */; - 6BA1E9AB10C7F12E008007F6 /* PBXTextBookmark */ = 6BA1E9AB10C7F12E008007F6 /* PBXTextBookmark */; + 6BA1E7F210C7B3FF008007F6 = 6BA1E7F210C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7F310C7B3FF008007F6 = 6BA1E7F310C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7F410C7B3FF008007F6 = 6BA1E7F410C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7F510C7B3FF008007F6 = 6BA1E7F510C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7F610C7B3FF008007F6 = 6BA1E7F610C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7F710C7B3FF008007F6 = 6BA1E7F710C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7F810C7B3FF008007F6 = 6BA1E7F810C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7F910C7B3FF008007F6 = 6BA1E7F910C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7FA10C7B3FF008007F6 = 6BA1E7FA10C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7FB10C7B3FF008007F6 = 6BA1E7FB10C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7FC10C7B3FF008007F6 = 6BA1E7FC10C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7FD10C7B3FF008007F6 = 6BA1E7FD10C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7FE10C7B3FF008007F6 = 6BA1E7FE10C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E7FF10C7B3FF008007F6 = 6BA1E7FF10C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E80010C7B3FF008007F6 = 6BA1E80010C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E80110C7B3FF008007F6 = 6BA1E80110C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E80210C7B3FF008007F6 = 6BA1E80210C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E80310C7B3FF008007F6 = 6BA1E80310C7B3FF008007F6 /* PBXTextBookmark */; + 6BA1E81D10C7BB85008007F6 = 6BA1E81D10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E81E10C7BB85008007F6 = 6BA1E81E10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E81F10C7BB85008007F6 = 6BA1E81F10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82010C7BB85008007F6 = 6BA1E82010C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82110C7BB85008007F6 = 6BA1E82110C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82210C7BB85008007F6 = 6BA1E82210C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82310C7BB85008007F6 = 6BA1E82310C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82410C7BB85008007F6 = 6BA1E82410C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82510C7BB85008007F6 = 6BA1E82510C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82610C7BB85008007F6 = 6BA1E82610C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82710C7BB85008007F6 = 6BA1E82710C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82810C7BB85008007F6 = 6BA1E82810C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82910C7BB85008007F6 = 6BA1E82910C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82A10C7BB85008007F6 = 6BA1E82A10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82B10C7BB85008007F6 = 6BA1E82B10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82C10C7BB85008007F6 = 6BA1E82C10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82D10C7BB85008007F6 = 6BA1E82D10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82E10C7BB85008007F6 = 6BA1E82E10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E82F10C7BB85008007F6 = 6BA1E82F10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83010C7BB85008007F6 = 6BA1E83010C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83110C7BB85008007F6 = 6BA1E83110C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83210C7BB85008007F6 = 6BA1E83210C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83310C7BB85008007F6 = 6BA1E83310C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83410C7BB85008007F6 = 6BA1E83410C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83510C7BB85008007F6 = 6BA1E83510C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83610C7BB85008007F6 = 6BA1E83610C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83710C7BB85008007F6 = 6BA1E83710C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83810C7BB85008007F6 = 6BA1E83810C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83910C7BB85008007F6 = 6BA1E83910C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83A10C7BB85008007F6 = 6BA1E83A10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83B10C7BB85008007F6 = 6BA1E83B10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83C10C7BB85008007F6 = 6BA1E83C10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83D10C7BB85008007F6 = 6BA1E83D10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83E10C7BB85008007F6 = 6BA1E83E10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E83F10C7BB85008007F6 = 6BA1E83F10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84010C7BB85008007F6 = 6BA1E84010C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84110C7BB85008007F6 = 6BA1E84110C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84210C7BB85008007F6 = 6BA1E84210C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84310C7BB85008007F6 = 6BA1E84310C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84410C7BB85008007F6 = 6BA1E84410C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84510C7BB85008007F6 = 6BA1E84510C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84610C7BB85008007F6 = 6BA1E84610C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84710C7BB85008007F6 = 6BA1E84710C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84810C7BB85008007F6 = 6BA1E84810C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84910C7BB85008007F6 = 6BA1E84910C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84A10C7BB85008007F6 = 6BA1E84A10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84B10C7BB85008007F6 = 6BA1E84B10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84C10C7BB85008007F6 = 6BA1E84C10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84D10C7BB85008007F6 = 6BA1E84D10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84E10C7BB85008007F6 = 6BA1E84E10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E84F10C7BB85008007F6 = 6BA1E84F10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85010C7BB85008007F6 = 6BA1E85010C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85110C7BB85008007F6 = 6BA1E85110C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85210C7BB85008007F6 = 6BA1E85210C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85310C7BB85008007F6 = 6BA1E85310C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85410C7BB85008007F6 = 6BA1E85410C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85510C7BB85008007F6 = 6BA1E85510C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85610C7BB85008007F6 = 6BA1E85610C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85710C7BB85008007F6 = 6BA1E85710C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85810C7BB85008007F6 = 6BA1E85810C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85910C7BB85008007F6 = 6BA1E85910C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85A10C7BB85008007F6 = 6BA1E85A10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85B10C7BB85008007F6 = 6BA1E85B10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85C10C7BB85008007F6 = 6BA1E85C10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85D10C7BB85008007F6 = 6BA1E85D10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85E10C7BB85008007F6 = 6BA1E85E10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E85F10C7BB85008007F6 = 6BA1E85F10C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E86010C7BB85008007F6 = 6BA1E86010C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E86110C7BB85008007F6 = 6BA1E86110C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E86210C7BB85008007F6 = 6BA1E86210C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E86310C7BB85008007F6 = 6BA1E86310C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E86410C7BB85008007F6 = 6BA1E86410C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E86510C7BB85008007F6 = 6BA1E86510C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E86610C7BB85008007F6 = 6BA1E86610C7BB85008007F6 /* PBXTextBookmark */; + 6BA1E86C10C7BCB8008007F6 = 6BA1E86C10C7BCB8008007F6 /* PBXTextBookmark */; + 6BA1E86D10C7BCB8008007F6 = 6BA1E86D10C7BCB8008007F6 /* PBXTextBookmark */; + 6BA1E86E10C7BCB8008007F6 = 6BA1E86E10C7BCB8008007F6 /* PBXTextBookmark */; + 6BA1E86F10C7BCB8008007F6 = 6BA1E86F10C7BCB8008007F6 /* PBXTextBookmark */; + 6BA1E87B10C7BD87008007F6 = 6BA1E87B10C7BD87008007F6 /* PBXTextBookmark */; + 6BA1E87C10C7BD87008007F6 = 6BA1E87C10C7BD87008007F6 /* PBXTextBookmark */; + 6BA1E87D10C7BD87008007F6 = 6BA1E87D10C7BD87008007F6 /* PBXTextBookmark */; + 6BA1E87E10C7BD87008007F6 = 6BA1E87E10C7BD87008007F6 /* PBXTextBookmark */; + 6BA1E87F10C7BD87008007F6 = 6BA1E87F10C7BD87008007F6 /* PBXTextBookmark */; + 6BA1E88010C7BD87008007F6 = 6BA1E88010C7BD87008007F6 /* PBXTextBookmark */; + 6BA1E88110C7BD87008007F6 = 6BA1E88110C7BD87008007F6 /* PBXTextBookmark */; + 6BA1E88210C7BD87008007F6 = 6BA1E88210C7BD87008007F6 /* PBXTextBookmark */; + 6BA1E88310C7BD87008007F6 = 6BA1E88310C7BD87008007F6 /* PBXTextBookmark */; + 6BA1E89310C7C227008007F6 = 6BA1E89310C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89410C7C227008007F6 = 6BA1E89410C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89510C7C227008007F6 = 6BA1E89510C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89610C7C227008007F6 = 6BA1E89610C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89710C7C227008007F6 = 6BA1E89710C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89810C7C227008007F6 = 6BA1E89810C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89910C7C227008007F6 = 6BA1E89910C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89A10C7C227008007F6 = 6BA1E89A10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89B10C7C227008007F6 = 6BA1E89B10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89C10C7C227008007F6 = 6BA1E89C10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89D10C7C227008007F6 = 6BA1E89D10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89E10C7C227008007F6 = 6BA1E89E10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E89F10C7C227008007F6 = 6BA1E89F10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8A010C7C227008007F6 = 6BA1E8A010C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8A110C7C227008007F6 = 6BA1E8A110C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8A210C7C227008007F6 = 6BA1E8A210C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8A310C7C227008007F6 = 6BA1E8A310C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8A410C7C227008007F6 = 6BA1E8A410C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8A510C7C227008007F6 = 6BA1E8A510C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8A610C7C227008007F6 = 6BA1E8A610C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8A710C7C227008007F6 = 6BA1E8A710C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8A810C7C227008007F6 = 6BA1E8A810C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8A910C7C227008007F6 = 6BA1E8A910C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8AA10C7C227008007F6 = 6BA1E8AA10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8AB10C7C227008007F6 = 6BA1E8AB10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8AC10C7C227008007F6 = 6BA1E8AC10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8AD10C7C227008007F6 = 6BA1E8AD10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8AE10C7C227008007F6 = 6BA1E8AE10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8AF10C7C227008007F6 = 6BA1E8AF10C7C227008007F6 /* PBXTextBookmark */; + 6BA1E8B010C7C5D1008007F6 = 6BA1E8B010C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8B110C7C5D1008007F6 = 6BA1E8B110C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8B210C7C5D1008007F6 = 6BA1E8B210C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8B310C7C5D1008007F6 = 6BA1E8B310C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8B410C7C5D1008007F6 = 6BA1E8B410C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8B510C7C5D1008007F6 = 6BA1E8B510C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8B610C7C5D1008007F6 = 6BA1E8B610C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8B710C7C5D1008007F6 = 6BA1E8B710C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8B810C7C5D1008007F6 = 6BA1E8B810C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8B910C7C5D1008007F6 = 6BA1E8B910C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8BA10C7C5D1008007F6 = 6BA1E8BA10C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8BB10C7C5D1008007F6 = 6BA1E8BB10C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8BC10C7C5D1008007F6 = 6BA1E8BC10C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8BD10C7C5D1008007F6 = 6BA1E8BD10C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8BE10C7C5D1008007F6 = 6BA1E8BE10C7C5D1008007F6 /* PBXTextBookmark */; + 6BA1E8BF10C7C700008007F6 = 6BA1E8BF10C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8C010C7C700008007F6 = 6BA1E8C010C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8C110C7C700008007F6 = 6BA1E8C110C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8C210C7C700008007F6 = 6BA1E8C210C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8C310C7C700008007F6 = 6BA1E8C310C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8C410C7C700008007F6 = 6BA1E8C410C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8C510C7C700008007F6 = 6BA1E8C510C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8C610C7C700008007F6 = 6BA1E8C610C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8C710C7C700008007F6 = 6BA1E8C710C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8C810C7C700008007F6 = 6BA1E8C810C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8C910C7C700008007F6 = 6BA1E8C910C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8CA10C7C700008007F6 = 6BA1E8CA10C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8CB10C7C700008007F6 = 6BA1E8CB10C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8CC10C7C700008007F6 = 6BA1E8CC10C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8CD10C7C700008007F6 = 6BA1E8CD10C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8CE10C7C700008007F6 = 6BA1E8CE10C7C700008007F6 /* PBXTextBookmark */; + 6BA1E8CF10C7C9A8008007F6 = 6BA1E8CF10C7C9A8008007F6 /* PBXTextBookmark */; + 6BA1E8D010C7C9A8008007F6 = 6BA1E8D010C7C9A8008007F6 /* PBXTextBookmark */; + 6BA1E8D110C7C9A8008007F6 = 6BA1E8D110C7C9A8008007F6 /* PBXTextBookmark */; + 6BA1E8D210C7C9A8008007F6 = 6BA1E8D210C7C9A8008007F6 /* PBXTextBookmark */; + 6BA1E8D310C7CB2E008007F6 = 6BA1E8D310C7CB2E008007F6 /* PBXTextBookmark */; + 6BA1E8D410C7CB2E008007F6 = 6BA1E8D410C7CB2E008007F6 /* PBXTextBookmark */; + 6BA1E8D510C7CB2E008007F6 = 6BA1E8D510C7CB2E008007F6 /* PBXTextBookmark */; + 6BA1E8D610C7CB2E008007F6 = 6BA1E8D610C7CB2E008007F6 /* PBXTextBookmark */; + 6BA1E8D710C7CB2E008007F6 = 6BA1E8D710C7CB2E008007F6 /* PBXTextBookmark */; + 6BA1E8D810C7CB2E008007F6 = 6BA1E8D810C7CB2E008007F6 /* PBXTextBookmark */; + 6BA1E8D910C7CB2E008007F6 = 6BA1E8D910C7CB2E008007F6 /* PBXTextBookmark */; + 6BA1E8DA10C7CB2E008007F6 = 6BA1E8DA10C7CB2E008007F6 /* PBXTextBookmark */; + 6BA1E8DB10C7CB62008007F6 = 6BA1E8DB10C7CB62008007F6 /* PBXTextBookmark */; + 6BA1E8DC10C7CB62008007F6 = 6BA1E8DC10C7CB62008007F6 /* PBXTextBookmark */; + 6BA1E8DD10C7CB62008007F6 = 6BA1E8DD10C7CB62008007F6 /* PBXTextBookmark */; + 6BA1E8DE10C7CB62008007F6 = 6BA1E8DE10C7CB62008007F6 /* PBXTextBookmark */; + 6BA1E8E310C7D2FA008007F6 = 6BA1E8E310C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8E410C7D2FA008007F6 = 6BA1E8E410C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8E510C7D2FA008007F6 = 6BA1E8E510C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8E610C7D2FA008007F6 = 6BA1E8E610C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8E710C7D2FA008007F6 = 6BA1E8E710C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8E810C7D2FA008007F6 = 6BA1E8E810C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8E910C7D2FA008007F6 = 6BA1E8E910C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8EA10C7D2FA008007F6 = 6BA1E8EA10C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8EB10C7D2FA008007F6 = 6BA1E8EB10C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8EC10C7D2FA008007F6 = 6BA1E8EC10C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8ED10C7D2FA008007F6 = 6BA1E8ED10C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8EE10C7D2FA008007F6 = 6BA1E8EE10C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8EF10C7D2FA008007F6 = 6BA1E8EF10C7D2FA008007F6 /* PBXTextBookmark */; + 6BA1E8F010C7D4D9008007F6 = 6BA1E8F010C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E8F110C7D4D9008007F6 = 6BA1E8F110C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E8F210C7D4D9008007F6 = 6BA1E8F210C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E8F310C7D4D9008007F6 = 6BA1E8F310C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E8F410C7D4D9008007F6 = 6BA1E8F410C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E8F510C7D4D9008007F6 = 6BA1E8F510C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E8F610C7D4D9008007F6 = 6BA1E8F610C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E8F710C7D4D9008007F6 = 6BA1E8F710C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E8F810C7D4D9008007F6 = 6BA1E8F810C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E8F910C7D4D9008007F6 = 6BA1E8F910C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E8FA10C7D4D9008007F6 = 6BA1E8FA10C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E8FB10C7D4D9008007F6 = 6BA1E8FB10C7D4D9008007F6 /* PBXTextBookmark */; + 6BA1E90210C7D850008007F6 = 6BA1E90210C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90310C7D850008007F6 = 6BA1E90310C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90410C7D850008007F6 = 6BA1E90410C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90510C7D850008007F6 = 6BA1E90510C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90610C7D850008007F6 = 6BA1E90610C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90710C7D850008007F6 = 6BA1E90710C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90810C7D850008007F6 = 6BA1E90810C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90910C7D850008007F6 = 6BA1E90910C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90A10C7D850008007F6 = 6BA1E90A10C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90B10C7D850008007F6 = 6BA1E90B10C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90C10C7D850008007F6 = 6BA1E90C10C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90D10C7D850008007F6 = 6BA1E90D10C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90E10C7D850008007F6 = 6BA1E90E10C7D850008007F6 /* PBXTextBookmark */; + 6BA1E90F10C7D850008007F6 = 6BA1E90F10C7D850008007F6 /* PBXTextBookmark */; + 6BA1E91210C7D8A9008007F6 = 6BA1E91210C7D8A9008007F6 /* PBXTextBookmark */; + 6BA1E91310C7D8A9008007F6 = 6BA1E91310C7D8A9008007F6 /* PBXTextBookmark */; + 6BA1E91410C7D8A9008007F6 = 6BA1E91410C7D8A9008007F6 /* PBXTextBookmark */; + 6BA1E91510C7D8A9008007F6 = 6BA1E91510C7D8A9008007F6 /* PBXTextBookmark */; + 6BA1E91610C7D8A9008007F6 = 6BA1E91610C7D8A9008007F6 /* PBXTextBookmark */; + 6BA1E91710C7D8A9008007F6 = 6BA1E91710C7D8A9008007F6 /* PBXTextBookmark */; + 6BA1E91C10C7D966008007F6 = 6BA1E91C10C7D966008007F6 /* PBXTextBookmark */; + 6BA1E91F10C7D999008007F6 = 6BA1E91F10C7D999008007F6 /* PBXTextBookmark */; + 6BA1E92510C7D9E8008007F6 = 6BA1E92510C7D9E8008007F6 /* PBXTextBookmark */; + 6BA1E92B10C7DAA1008007F6 = 6BA1E92B10C7DAA1008007F6 /* PBXTextBookmark */; + 6BA1E92C10C7DAA1008007F6 = 6BA1E92C10C7DAA1008007F6 /* PBXTextBookmark */; + 6BA1E92D10C7DAA1008007F6 = 6BA1E92D10C7DAA1008007F6 /* PBXTextBookmark */; + 6BA1E92E10C7DAA1008007F6 = 6BA1E92E10C7DAA1008007F6 /* PBXTextBookmark */; + 6BA1E92F10C7DAA1008007F6 = 6BA1E92F10C7DAA1008007F6 /* PBXTextBookmark */; + 6BA1E93010C7DAA1008007F6 = 6BA1E93010C7DAA1008007F6 /* PBXTextBookmark */; + 6BA1E93110C7DAA1008007F6 = 6BA1E93110C7DAA1008007F6 /* PBXTextBookmark */; + 6BA1E93710C7DB10008007F6 = 6BA1E93710C7DB10008007F6 /* PBXTextBookmark */; + 6BA1E93810C7DB10008007F6 = 6BA1E93810C7DB10008007F6 /* PBXTextBookmark */; + 6BA1E93910C7DB10008007F6 = 6BA1E93910C7DB10008007F6 /* PBXTextBookmark */; + 6BA1E93A10C7DB10008007F6 = 6BA1E93A10C7DB10008007F6 /* PBXTextBookmark */; + 6BA1E93B10C7DB10008007F6 = 6BA1E93B10C7DB10008007F6 /* PBXTextBookmark */; + 6BA1E93F10C7DB2F008007F6 = 6BA1E93F10C7DB2F008007F6 /* PBXTextBookmark */; + 6BA1E94010C7DB2F008007F6 = 6BA1E94010C7DB2F008007F6 /* PBXTextBookmark */; + 6BA1E94110C7DB2F008007F6 = 6BA1E94110C7DB2F008007F6 /* PBXTextBookmark */; + 6BA1E94210C7DB2F008007F6 = 6BA1E94210C7DB2F008007F6 /* PBXTextBookmark */; + 6BA1E94410C7DB45008007F6 = 6BA1E94410C7DB45008007F6 /* PBXTextBookmark */; + 6BA1E94510C7DB45008007F6 = 6BA1E94510C7DB45008007F6 /* PBXTextBookmark */; + 6BA1E94610C7DB45008007F6 = 6BA1E94610C7DB45008007F6 /* PBXTextBookmark */; + 6BA1E94710C7DB45008007F6 = 6BA1E94710C7DB45008007F6 /* PBXTextBookmark */; + 6BA1E94910C7DB51008007F6 = 6BA1E94910C7DB51008007F6 /* PBXTextBookmark */; + 6BA1E94A10C7DB51008007F6 = 6BA1E94A10C7DB51008007F6 /* PBXTextBookmark */; + 6BA1E94B10C7DB51008007F6 = 6BA1E94B10C7DB51008007F6 /* PBXTextBookmark */; + 6BA1E94C10C7DB51008007F6 = 6BA1E94C10C7DB51008007F6 /* PBXTextBookmark */; + 6BA1E94E10C7DB5C008007F6 = 6BA1E94E10C7DB5C008007F6 /* PBXTextBookmark */; + 6BA1E95110C7DBC6008007F6 = 6BA1E95110C7DBC6008007F6 /* PBXTextBookmark */; + 6BA1E95C10C7DBF9008007F6 = 6BA1E95C10C7DBF9008007F6 /* PBXTextBookmark */; + 6BA1E96310C7DC15008007F6 = 6BA1E96310C7DC15008007F6 /* PBXTextBookmark */; + 6BA1E96910C7DCD1008007F6 = 6BA1E96910C7DCD1008007F6 /* PBXTextBookmark */; + 6BA1E96D10C7DDD6008007F6 = 6BA1E96D10C7DDD6008007F6 /* PBXTextBookmark */; + 6BA1E96E10C7DDD6008007F6 = 6BA1E96E10C7DDD6008007F6 /* PBXTextBookmark */; + 6BA1E96F10C7DDD6008007F6 = 6BA1E96F10C7DDD6008007F6 /* PBXTextBookmark */; + 6BA1E97010C7DDD6008007F6 = 6BA1E97010C7DDD6008007F6 /* PBXTextBookmark */; + 6BA1E97110C7DDD6008007F6 = 6BA1E97110C7DDD6008007F6 /* PBXTextBookmark */; + 6BA1E97410C7DF1F008007F6 = 6BA1E97410C7DF1F008007F6 /* PBXTextBookmark */; + 6BA1E97510C7DF1F008007F6 = 6BA1E97510C7DF1F008007F6 /* PBXTextBookmark */; + 6BA1E97610C7DF1F008007F6 = 6BA1E97610C7DF1F008007F6 /* PBXTextBookmark */; + 6BA1E97710C7DF1F008007F6 = 6BA1E97710C7DF1F008007F6 /* PBXTextBookmark */; + 6BA1E97810C7DF1F008007F6 = 6BA1E97810C7DF1F008007F6 /* PBXTextBookmark */; + 6BA1E97910C7DF1F008007F6 = 6BA1E97910C7DF1F008007F6 /* PBXTextBookmark */; + 6BA1E97A10C7DF1F008007F6 = 6BA1E97A10C7DF1F008007F6 /* PBXTextBookmark */; + 6BA1E97B10C7DF1F008007F6 = 6BA1E97B10C7DF1F008007F6 /* PBXTextBookmark */; + 6BA1E97E10C7DF98008007F6 = 6BA1E97E10C7DF98008007F6 /* PBXTextBookmark */; + 6BA1E98010C7DFEF008007F6 = 6BA1E98010C7DFEF008007F6 /* PBXTextBookmark */; + 6BA1E98310C7E0B7008007F6 = 6BA1E98310C7E0B7008007F6 /* PBXTextBookmark */; + 6BA1E98410C7E0BF008007F6 = 6BA1E98410C7E0BF008007F6 /* PBXTextBookmark */; + 6BA1E98610C7E0E8008007F6 = 6BA1E98610C7E0E8008007F6 /* PBXTextBookmark */; + 6BA1E98810C7E178008007F6 = 6BA1E98810C7E178008007F6 /* PBXTextBookmark */; + 6BA1E98D10C7EAC3008007F6 = 6BA1E98D10C7EAC3008007F6 /* PBXTextBookmark */; + 6BA1E98E10C7EAC3008007F6 = 6BA1E98E10C7EAC3008007F6 /* PBXTextBookmark */; + 6BA1E98F10C7EAC3008007F6 = 6BA1E98F10C7EAC3008007F6 /* PBXTextBookmark */; + 6BA1E99010C7EAC3008007F6 = 6BA1E99010C7EAC3008007F6 /* PBXTextBookmark */; + 6BA1E99110C7EAC3008007F6 = 6BA1E99110C7EAC3008007F6 /* PBXTextBookmark */; + 6BA1E99310C7EAEF008007F6 = 6BA1E99310C7EAEF008007F6 /* PBXTextBookmark */; + 6BA1E99510C7EB05008007F6 = 6BA1E99510C7EB05008007F6 /* PBXTextBookmark */; + 6BA1E99810C7EB71008007F6 = 6BA1E99810C7EB71008007F6 /* PBXTextBookmark */; + 6BA1E99B10C7EBB0008007F6 = 6BA1E99B10C7EBB0008007F6 /* PBXTextBookmark */; + 6BA1E99D10C7EC0F008007F6 = 6BA1E99D10C7EC0F008007F6 /* PBXTextBookmark */; + 6BA1E99F10C7EC3F008007F6 = 6BA1E99F10C7EC3F008007F6 /* PBXTextBookmark */; + 6BA1E9A110C7EC47008007F6 = 6BA1E9A110C7EC47008007F6 /* PBXTextBookmark */; + 6BA1E9A310C7EC77008007F6 = 6BA1E9A310C7EC77008007F6 /* PBXTextBookmark */; + 6BA1E9A510C7EC93008007F6 = 6BA1E9A510C7EC93008007F6 /* PBXTextBookmark */; + 6BA1E9A710C7ECFF008007F6 = 6BA1E9A710C7ECFF008007F6 /* PBXTextBookmark */; + 6BA1E9A910C7ED0B008007F6 = 6BA1E9A910C7ED0B008007F6 /* PBXTextBookmark */; + 6BA1E9AB10C7F12E008007F6 = 6BA1E9AB10C7F12E008007F6 /* PBXTextBookmark */; + 6BB4964410C8ECF300BC0805 /* PBXTextBookmark */ = 6BB4964410C8ECF300BC0805 /* PBXTextBookmark */; + 6BB4964510C8ECF300BC0805 /* PBXTextBookmark */ = 6BB4964510C8ECF300BC0805 /* PBXTextBookmark */; + 6BB4964610C8ECF300BC0805 /* PBXTextBookmark */ = 6BB4964610C8ECF300BC0805 /* PBXTextBookmark */; + 6BB4964710C8ECF300BC0805 /* PBXTextBookmark */ = 6BB4964710C8ECF300BC0805 /* PBXTextBookmark */; + 6BB4964810C8ECF300BC0805 /* PBXTextBookmark */ = 6BB4964810C8ECF300BC0805 /* PBXTextBookmark */; + 6BB4964910C8ECF300BC0805 /* PBXTextBookmark */ = 6BB4964910C8ECF300BC0805 /* PBXTextBookmark */; + 6BB4964A10C8ECF300BC0805 /* PBXTextBookmark */ = 6BB4964A10C8ECF300BC0805 /* PBXTextBookmark */; 6BF2589310BE6F220061DCC9 = 6BF2589310BE6F220061DCC9 /* PBXTextBookmark */; 6BF2589B10BEADD20061DCC9 = 6BF2589B10BEADD20061DCC9 /* PBXTextBookmark */; 6BF2589C10BEADD20061DCC9 = 6BF2589C10BEADD20061DCC9 /* PBXTextBookmark */; @@ -525,7 +532,7 @@ sepNavWindowFrame = "{{38, 57}, {1011, 695}}"; }; }; - 6B0249B11003783F00CF7107 /* Sample_TileMesh.cpp:48 */ = { + 6B0249B11003783F00CF7107 /* Sample_TileMesh.cpp:27 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -537,9 +544,10 @@ functionName = "BuilderTiledMesh::toolRecalc()"; hitCount = 0; ignoreCount = 0; - lineNumber = 48; + lineNumber = 27; location = Recast; modificationTime = 281534653.905802; + originalNumberOfMultipleMatches = 0; state = 1; }; 6B0249ED10037C0A00CF7107 /* DetourTileNavMesh.cpp:1 */ = { @@ -557,6 +565,7 @@ lineNumber = 1; location = Recast; modificationTime = 281534653.906114; + originalNumberOfMultipleMatches = 0; state = 1; }; 6B0249EF10037C0C00CF7107 /* DetourTileNavMesh.cpp:1 */ = { @@ -574,6 +583,7 @@ lineNumber = 1; location = Recast; modificationTime = 281534653.906272; + originalNumberOfMultipleMatches = 0; state = 1; }; 6B024AC01004AB3900CF7107 /* DetourTileNavMesh.cpp:1 */ = { @@ -590,10 +600,17 @@ ignoreCount = 0; lineNumber = 1; location = Recast; - modificationTime = 281534653.906436; + modificationTime = 281534653.9064361; + originalNumberOfMultipleMatches = 0; state = 1; }; 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.h; + name = DetourTileNavMeshBuilder.h; + path = /Users/memon/Code/recastnavigation/Detour/Include/DetourTileNavMeshBuilder.h; + sourceTree = ""; uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 489}}"; sepNavSelRange = "{1461, 0}"; @@ -601,10 +618,16 @@ }; }; 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.cpp; + name = DetourTileNavMeshBuilder.cpp; + path = /Users/memon/Code/recastnavigation/Detour/Source/DetourTileNavMeshBuilder.cpp; + sourceTree = ""; uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 3424}}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 3408}}"; sepNavSelRange = "{4890, 0}"; - sepNavVisRange = "{4647, 1090}"; + sepNavVisRange = "{4647, 399}"; }; }; 6B1185F41006895B0018F96F /* DetourNode.cpp */ = { @@ -623,9 +646,9 @@ }; 6B1185FC10068B040018F96F /* DetourCommon.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 3056}}"; - sepNavSelRange = "{4646, 0}"; - sepNavVisRange = "{1058, 1125}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 3328}}"; + sepNavSelRange = "{3544, 0}"; + sepNavVisRange = "{2658, 420}"; }; }; 6B1185FD10068B150018F96F /* DetourCommon.cpp */ = { @@ -679,9 +702,9 @@ }; 6B137C7E0F7FCBFE00459200 /* Recast.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 9440}}"; - sepNavSelRange = "{11412, 172}"; - sepNavVisRange = "{11371, 742}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 9520}}"; + sepNavSelRange = "{11550, 0}"; + sepNavVisRange = "{11371, 409}"; }; }; 6B137C7F0F7FCBFE00459200 /* RecastDebugDraw.h */ = { @@ -784,11 +807,6 @@ name = Sample_StatMesh.h; path = /Users/memon/Code/recastnavigation/RecastDemo/Include/Sample_StatMesh.h; sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1136}}"; - sepNavSelRange = "{1023, 0}"; - sepNavVisRange = "{539, 748}"; - }; }; 6B25B6120FFA62AD004F1BC4 /* Sample_StatMeshSimple.h */ = { isa = PBXFileReference; @@ -797,11 +815,6 @@ name = Sample_StatMeshSimple.h; path = /Users/memon/Code/recastnavigation/RecastDemo/Include/Sample_StatMeshSimple.h; sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1072}}"; - sepNavSelRange = "{960, 0}"; - sepNavVisRange = "{632, 741}"; - }; }; 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */ = { uiCtxt = { @@ -817,11 +830,6 @@ name = Sample_StatMesh.cpp; path = /Users/memon/Code/recastnavigation/RecastDemo/Source/Sample_StatMesh.cpp; sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 5600}}"; - sepNavSelRange = "{4243, 0}"; - sepNavVisRange = "{4135, 598}"; - }; }; 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */ = { isa = PBXFileReference; @@ -830,32 +838,27 @@ name = Sample_StatMeshSimple.cpp; path = /Users/memon/Code/recastnavigation/RecastDemo/Source/Sample_StatMeshSimple.cpp; sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1048, 9648}}"; - sepNavSelRange = "{15541, 0}"; - sepNavVisRange = "{15204, 584}"; - }; }; 6B25B6180FFA62BE004F1BC4 /* main.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 11888}}"; - sepNavSelRange = "{4154, 0}"; - sepNavVisRange = "{3912, 830}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 11824}}"; + sepNavSelRange = "{390, 0}"; + sepNavVisRange = "{0, 440}"; }; }; 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1840}}"; - sepNavSelRange = "{2447, 0}"; - sepNavVisRange = "{2084, 872}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1872}}"; + sepNavSelRange = "{1441, 41}"; + sepNavVisRange = "{1072, 548}"; sepNavWindowFrame = "{{15, 78}, {1011, 695}}"; }; }; 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1223, 15696}}"; - sepNavSelRange = "{5993, 0}"; - sepNavVisRange = "{5716, 593}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 15728}}"; + sepNavSelRange = "{3081, 0}"; + sepNavVisRange = "{2889, 731}"; }; }; 6B2AEC550FFB89E7005BE9CC /* Sample_StatMeshTiled.cpp */ = { @@ -865,11 +868,6 @@ name = Sample_StatMeshTiled.cpp; path = /Users/memon/Code/recastnavigation/RecastDemo/Source/Sample_StatMeshTiled.cpp; sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1328, 15904}}"; - sepNavSelRange = "{26709, 0}"; - sepNavVisRange = "{26491, 1084}"; - }; }; 6B2AEC570FFB89F4005BE9CC /* Sample_StatMeshTiled.h */ = { isa = PBXFileReference; @@ -878,13 +876,14 @@ name = Sample_StatMeshTiled.h; path = /Users/memon/Code/recastnavigation/RecastDemo/Include/Sample_StatMeshTiled.h; sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1520}}"; - sepNavSelRange = "{777, 0}"; - sepNavVisRange = "{270, 844}"; - }; }; 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.h; + name = DetourTileNavMesh.h; + path = /Users/memon/Code/recastnavigation/Detour/Include/DetourTileNavMesh.h; + sourceTree = ""; uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 4976}}"; sepNavSelRange = "{12743, 0}"; @@ -892,6 +891,12 @@ }; }; 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.cpp; + name = DetourTileNavMesh.cpp; + path = /Users/memon/Code/recastnavigation/Detour/Source/DetourTileNavMesh.cpp; + sourceTree = ""; uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 22304}}"; sepNavSelRange = "{9271, 0}"; @@ -953,6 +958,7 @@ lineNumber = 281; location = Recast; modificationTime = 281534653.90745; + originalNumberOfMultipleMatches = 0; state = 1; }; 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */ = { @@ -971,9 +977,9 @@ }; 6B555DF6100B273500247EA3 /* stb_truetype.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1216, 27456}}"; - sepNavSelRange = "{8102, 0}"; - sepNavVisRange = "{7326, 1107}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 27152}}"; + sepNavSelRange = "{27352, 0}"; + sepNavVisRange = "{26962, 857}"; }; }; 6B57D313108C609500DDD053 /* RecastMeshDetail.cpp:622 */ = { @@ -991,6 +997,7 @@ lineNumber = 622; location = Recast; modificationTime = 281534653.907625; + originalNumberOfMultipleMatches = 0; state = 1; }; 6B57D358108C66B200DDD053 /* PBXTextBookmark */ = { @@ -1037,7 +1044,8 @@ ignoreCount = 0; lineNumber = 252; location = Recast; - modificationTime = 281534653.907814; + modificationTime = 281534653.9078139; + originalNumberOfMultipleMatches = 0; state = 1; }; 6B57D38F108C69E400DDD053 /* PBXTextBookmark */ = { @@ -1087,7 +1095,7 @@ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; name = "main.cpp: 578"; rLen = 0; - rLoc = 13052; + rLoc = 12947; rType = 0; vrLen = 649; vrLoc = 12515; @@ -1163,6 +1171,9 @@ configStateDict = { }; customDataFormattersEnabled = 1; + dataTipCustomDataFormattersEnabled = 1; + dataTipShowTypeColumn = 1; + dataTipSortType = 0; debuggerPlugin = GDBDebugging; disassemblyDisplayState = 0; dylibVariantSuffix = ""; @@ -1175,6 +1186,7 @@ name = Recast; savedGlobals = { }; + showTypeColumn = 0; sourceDirectories = ( ); variableFormatDictionary = { @@ -1185,6 +1197,9 @@ fallbackIsa = XCSourceControlManager; isSCMEnabled = 0; scmConfiguration = { + repositoryNamesForRoots = { + "" = ""; + }; }; }; 6B8632AA0F78115100E2684A /* Code sense */ = { @@ -1370,8 +1385,8 @@ isa = PBXTextBookmark; fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 609"; - rLen = 7; - rLoc = 15843; + rLen = 0; + rLoc = 1099; rType = 0; vrLen = 1297; vrLoc = 15422; @@ -1470,8 +1485,8 @@ isa = PBXTextBookmark; fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; name = "DetourDebugDraw.cpp: 330"; - rLen = 28; - rLoc = 8370; + rLen = 0; + rLoc = 2957; rType = 0; vrLen = 566; vrLoc = 8078; @@ -1548,9 +1563,9 @@ }; 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 27056}}"; - sepNavSelRange = "{25230, 0}"; - sepNavVisRange = "{28068, 692}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 26896}}"; + sepNavSelRange = "{2907, 0}"; + sepNavVisRange = "{2859, 348}"; }; }; 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */ = { @@ -1562,9 +1577,9 @@ }; 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 5872}}"; - sepNavSelRange = "{9354, 21}"; - sepNavVisRange = "{9068, 1645}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 6192}}"; + sepNavSelRange = "{14682, 456}"; + sepNavVisRange = "{14774, 394}"; }; }; 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */ = { @@ -1608,7 +1623,7 @@ isa = PBXTextBookmark; fRef = 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */; name = "DetourDebugDraw.h: 22"; - rLen = 89; + rLen = 27; rLoc = 972; rType = 0; vrLen = 1110; @@ -1629,7 +1644,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 109"; rLen = 0; - rLoc = 2903; + rLoc = 3055; rType = 0; vrLen = 685; vrLoc = 2783; @@ -1669,7 +1684,7 @@ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; name = "Sample_TileMesh.h: 98"; rLen = 0; - rLoc = 2447; + rLoc = 939; rType = 0; vrLen = 872; vrLoc = 2084; @@ -1709,23 +1724,35 @@ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; name = "Sample_TileMesh.h: 98"; rLen = 0; - rLoc = 2447; + rLoc = 939; rType = 0; vrLen = 872; vrLoc = 2084; }; 6B8DE8F610B6B70100DF20FB /* Sample_DynMesh.h */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.h; + name = Sample_DynMesh.h; + path = /Users/memon/Code/recastnavigation/RecastDemo/Include/Sample_DynMesh.h; + sourceTree = ""; uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 1872}}"; - sepNavSelRange = "{2247, 0}"; - sepNavVisRange = "{1496, 631}"; + sepNavSelRange = "{0, 2946}"; + sepNavVisRange = "{1478, 651}"; }; }; 6B8DE8F710B6B70E00DF20FB /* Sample_DynMesh.cpp */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.cpp; + name = Sample_DynMesh.cpp; + path = /Users/memon/Code/recastnavigation/RecastDemo/Source/Sample_DynMesh.cpp; + sourceTree = ""; uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1223, 15056}}"; - sepNavSelRange = "{23786, 310}"; - sepNavVisRange = "{23187, 1142}"; + sepNavIntBoundsRect = "{{0, 0}, {1223, 14912}}"; + sepNavSelRange = "{0, 27828}"; + sepNavVisRange = "{23079, 1267}"; }; }; 6B8DE90210B6B76800DF20FB /* PBXTextBookmark */ = { @@ -1735,7 +1762,7 @@ rLen = 0; rLoc = 2945; rType = 0; - vrLen = 795; + vrLen = 792; vrLoc = 2154; }; 6B8DE90310B6B76800DF20FB /* PBXTextBookmark */ = { @@ -1843,7 +1870,7 @@ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; name = "main.cpp: 566"; rLen = 36; - rLoc = 12735; + rLoc = 12630; rType = 0; vrLen = 681; vrLoc = 12381; @@ -1873,7 +1900,7 @@ fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; name = "DetourDebugDraw.cpp: 33"; rLen = 0; - rLoc = 1316; + rLoc = 1017; rType = 0; vrLen = 812; vrLoc = 948; @@ -1963,6 +1990,7 @@ lineNumber = 281; location = Recast; modificationTime = 281534653.907283; + originalNumberOfMultipleMatches = 0; state = 1; }; 6B93FEFF1030443300F0C0DA /* Recast.cpp:281 */ = { @@ -1980,6 +2008,7 @@ lineNumber = 281; location = Recast; modificationTime = 281534653.90712; + originalNumberOfMultipleMatches = 0; state = 2; }; 6B9BE374107BC6A40036CC81 /* PBXTextBookmark */ = { @@ -2014,6 +2043,7 @@ ignoreCount = 0; lineNumber = 301; modificationTime = 281534654.306096; + originalNumberOfMultipleMatches = 0; state = 0; }; 6B9D09921028542A009B1A6C /* RecastDebugDraw.cpp:29 */ = { @@ -2031,6 +2061,7 @@ lineNumber = 29; location = Recast; modificationTime = 281534653.906959; + originalNumberOfMultipleMatches = 0; state = 2; }; 6BA1E63A10C1DB5B008007F6 /* PBXTextBookmark */ = { @@ -2118,7 +2149,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 761"; rLen = 0; - rLoc = 21671; + rLoc = 21823; rType = 0; vrLen = 592; vrLoc = 19593; @@ -2158,7 +2189,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 742"; rLen = 0; - rLoc = 21148; + rLoc = 21300; rType = 0; vrLen = 1054; vrLoc = 18832; @@ -2178,7 +2209,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 89"; rLen = 0; - rLoc = 2850; + rLoc = 2955; rType = 0; vrLen = 855; vrLoc = 2570; @@ -2198,7 +2229,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 89"; rLen = 0; - rLoc = 2850; + rLoc = 2955; rType = 0; vrLen = 855; vrLoc = 2570; @@ -2218,7 +2249,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 748"; rLen = 0; - rLoc = 21410; + rLoc = 21562; rType = 0; vrLen = 1050; vrLoc = 18781; @@ -2238,7 +2269,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 755"; rLen = 0; - rLoc = 21541; + rLoc = 21693; rType = 0; vrLen = 767; vrLoc = 18904; @@ -2258,7 +2289,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 761"; rLen = 0; - rLoc = 21671; + rLoc = 21823; rType = 0; vrLen = 592; vrLoc = 19593; @@ -2288,7 +2319,7 @@ fRef = 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */; name = "DetourDebugDraw.h: 33"; rLen = 0; - rLoc = 1465; + rLoc = 1000; rType = 0; vrLen = 1652; vrLoc = 3; @@ -2318,7 +2349,7 @@ fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; name = "DetourDebugDraw.cpp: 576"; rLen = 0; - rLoc = 14721; + rLoc = 4679; rType = 0; vrLen = 610; vrLoc = 14492; @@ -2328,7 +2359,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 241"; rLen = 0; - rLoc = 5993; + rLoc = 1099; rType = 0; vrLen = 593; vrLoc = 5716; @@ -2417,7 +2448,7 @@ isa = PBXTextBookmark; fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; rLen = 1; - rLoc = 337; + rLoc = 348; rType = 1; }; 6BA1E82C10C7BB85008007F6 /* PBXTextBookmark */ = { @@ -2455,7 +2486,7 @@ fRef = 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */; name = "DetourDebugDraw.h: 33"; rLen = 0; - rLoc = 1465; + rLoc = 1000; rType = 0; vrLen = 1652; vrLoc = 3; @@ -2465,7 +2496,7 @@ fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; name = "DetourDebugDraw.cpp: 577"; rLen = 0; - rLoc = 14769; + rLoc = 4727; rType = 0; vrLen = 826; vrLoc = 14158; @@ -2475,7 +2506,7 @@ fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; name = "DetourDebugDraw.cpp: 577"; rLen = 0; - rLoc = 14728; + rLoc = 4686; rType = 0; vrLen = 862; vrLoc = 14277; @@ -2515,7 +2546,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 688"; rLen = 26; - rLoc = 19999; + rLoc = 20151; rType = 0; vrLen = 940; vrLoc = 17412; @@ -2525,7 +2556,7 @@ fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; name = "DetourDebugDraw.cpp: 579"; rLen = 0; - rLoc = 14769; + rLoc = 4727; rType = 0; vrLen = 827; vrLoc = 14277; @@ -2535,7 +2566,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 678"; rLen = 36; - rLoc = 19740; + rLoc = 19892; rType = 0; vrLen = 940; vrLoc = 17412; @@ -2545,7 +2576,7 @@ fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; name = "DetourDebugDraw.cpp: 577"; rLen = 0; - rLoc = 14768; + rLoc = 4726; rType = 0; vrLen = 706; vrLoc = 14492; @@ -2565,7 +2596,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 643"; rLen = 0; - rLoc = 18409; + rLoc = 18561; rType = 0; vrLen = 844; vrLoc = 16159; @@ -2585,7 +2616,7 @@ fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; name = "DetourDebugDraw.cpp: 577"; rLen = 41; - rLoc = 14728; + rLoc = 4686; rType = 0; vrLen = 540; vrLoc = 14492; @@ -2595,7 +2626,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 643"; rLen = 0; - rLoc = 18409; + rLoc = 18561; rType = 0; vrLen = 641; vrLoc = 16159; @@ -2615,7 +2646,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 643"; rLen = 0; - rLoc = 18409; + rLoc = 18561; rType = 0; vrLen = 641; vrLoc = 16159; @@ -2625,7 +2656,7 @@ fRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; name = "DetourDebugDraw.cpp: 576"; rLen = 0; - rLoc = 14721; + rLoc = 4679; rType = 0; vrLen = 610; vrLoc = 14492; @@ -2645,7 +2676,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 641"; rLen = 0; - rLoc = 18407; + rLoc = 18559; rType = 0; vrLen = 574; vrLoc = 25228; @@ -2665,7 +2696,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 241"; rLen = 0; - rLoc = 5993; + rLoc = 1099; rType = 0; vrLen = 593; vrLoc = 5716; @@ -2885,7 +2916,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 176"; rLen = 0; - rLoc = 4880; + rLoc = 5032; rType = 0; vrLen = 670; vrLoc = 4467; @@ -2905,7 +2936,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 177"; rLen = 0; - rLoc = 4959; + rLoc = 5111; rType = 0; vrLen = 798; vrLoc = 4481; @@ -2925,7 +2956,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 177"; rLen = 0; - rLoc = 4959; + rLoc = 5111; rType = 0; vrLen = 798; vrLoc = 4481; @@ -2955,7 +2986,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 177"; rLen = 0; - rLoc = 4959; + rLoc = 5111; rType = 0; vrLen = 798; vrLoc = 4481; @@ -2975,7 +3006,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 175"; rLen = 0; - rLoc = 4867; + rLoc = 5019; rType = 0; vrLen = 868; vrLoc = 4481; @@ -3005,7 +3036,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 432"; rLen = 0; - rLoc = 12069; + rLoc = 12221; rType = 0; vrLen = 679; vrLoc = 11641; @@ -3025,6 +3056,7 @@ lineNumber = 516; location = Recast; modificationTime = 281534653.90798; + originalNumberOfMultipleMatches = 0; state = 1; }; 6BA1E86C10C7BCB8008007F6 /* PBXTextBookmark */ = { @@ -3032,7 +3064,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 429"; rLen = 0; - rLoc = 12012; + rLoc = 12164; rType = 0; vrLen = 679; vrLoc = 11641; @@ -3052,7 +3084,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 429"; rLen = 0; - rLoc = 12012; + rLoc = 12164; rType = 0; vrLen = 679; vrLoc = 11641; @@ -3092,7 +3124,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 376"; rLen = 0; - rLoc = 10222; + rLoc = 10374; rType = 0; vrLen = 669; vrLoc = 10118; @@ -3122,7 +3154,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 168"; rLen = 0; - rLoc = 4614; + rLoc = 4766; rType = 0; vrLen = 575; vrLoc = 3908; @@ -3142,7 +3174,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 376"; rLen = 0; - rLoc = 10222; + rLoc = 10374; rType = 0; vrLen = 669; vrLoc = 10118; @@ -3159,23 +3191,23 @@ }; 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 7408}}"; - sepNavSelRange = "{8158, 0}"; - sepNavVisRange = "{7547, 969}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 7120}}"; + sepNavSelRange = "{7058, 0}"; + sepNavVisRange = "{6604, 715}"; }; }; 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 9568}}"; - sepNavSelRange = "{242, 0}"; - sepNavVisRange = "{0, 655}"; + sepNavIntBoundsRect = "{{0, 0}, {1048, 9360}}"; + sepNavSelRange = "{14842, 0}"; + sepNavVisRange = "{14224, 975}"; }; }; 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 16000}}"; - sepNavSelRange = "{360, 0}"; - sepNavVisRange = "{0, 737}"; + sepNavIntBoundsRect = "{{0, 0}, {943, 16016}}"; + sepNavSelRange = "{25907, 20}"; + sepNavVisRange = "{25533, 785}"; }; }; 6BA1E88D10C7BFD3008007F6 /* Sample_SoloMesh.h */ = { @@ -3187,16 +3219,16 @@ }; 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1072}}"; - sepNavSelRange = "{1053, 0}"; - sepNavVisRange = "{632, 814}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1120}}"; + sepNavSelRange = "{129, 0}"; + sepNavVisRange = "{0, 539}"; }; }; 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1536}}"; - sepNavSelRange = "{2174, 0}"; - sepNavVisRange = "{1376, 810}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1504}}"; + sepNavSelRange = "{198, 0}"; + sepNavVisRange = "{0, 711}"; }; }; 6BA1E89310C7C227008007F6 /* PBXTextBookmark */ = { @@ -3234,7 +3266,7 @@ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; name = "Sample_SoloMeshSimple.h: 54"; rLen = 0; - rLoc = 1053; + rLoc = 1049; rType = 0; vrLen = 814; vrLoc = 632; @@ -3254,7 +3286,7 @@ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; name = "Sample_SoloMeshTiled.h: 95"; rLen = 0; - rLoc = 2174; + rLoc = 2170; rType = 0; vrLen = 810; vrLoc = 1376; @@ -3274,7 +3306,7 @@ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; name = "main.cpp: 201"; rLen = 0; - rLoc = 4154; + rLoc = 4116; rType = 0; vrLen = 830; vrLoc = 3912; @@ -3294,7 +3326,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 560"; rLen = 0; - rLoc = 14678; + rLoc = 14830; rType = 0; vrLen = 957; vrLoc = 14351; @@ -3314,7 +3346,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 387"; rLen = 0; - rLoc = 10534; + rLoc = 10686; rType = 0; vrLen = 668; vrLoc = 10118; @@ -3334,7 +3366,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 439"; rLen = 0; - rLoc = 12218; + rLoc = 12370; rType = 0; vrLen = 850; vrLoc = 11596; @@ -3374,7 +3406,7 @@ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; name = "Sample_SoloMeshSimple.h: 54"; rLen = 0; - rLoc = 1053; + rLoc = 1049; rType = 0; vrLen = 814; vrLoc = 632; @@ -3394,7 +3426,7 @@ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; name = "Sample_SoloMeshTiled.h: 95"; rLen = 0; - rLoc = 2174; + rLoc = 2170; rType = 0; vrLen = 810; vrLoc = 1376; @@ -3414,7 +3446,7 @@ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; name = "main.cpp: 201"; rLen = 0; - rLoc = 4154; + rLoc = 4116; rType = 0; vrLen = 830; vrLoc = 3912; @@ -3424,7 +3456,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 431"; rLen = 0; - rLoc = 12068; + rLoc = 12220; rType = 0; vrLen = 649; vrLoc = 11797; @@ -3444,7 +3476,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 431"; rLen = 0; - rLoc = 12068; + rLoc = 12220; rType = 0; vrLen = 649; vrLoc = 11797; @@ -3464,7 +3496,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 560"; rLen = 0; - rLoc = 14678; + rLoc = 14830; rType = 0; vrLen = 957; vrLoc = 14351; @@ -3484,7 +3516,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 607"; rLen = 0; - rLoc = 16092; + rLoc = 16244; rType = 0; vrLen = 867; vrLoc = 15069; @@ -3524,7 +3556,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 615"; rLen = 0; - rLoc = 15671; + rLoc = 15823; rType = 0; vrLen = 1020; vrLoc = 15652; @@ -3534,7 +3566,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 563"; rLen = 0; - rLoc = 14585; + rLoc = 14737; rType = 0; vrLen = 944; vrLoc = 14182; @@ -3554,7 +3586,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1554"; rLen = 9; - rLoc = 42378; + rLoc = 42530; rType = 0; vrLen = 864; vrLoc = 39825; @@ -3574,7 +3606,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 622"; rLen = 0; - rLoc = 15798; + rLoc = 15950; rType = 0; vrLen = 966; vrLoc = 15645; @@ -3594,7 +3626,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 605"; rLen = 0; - rLoc = 15671; + rLoc = 15823; rType = 0; vrLen = 1005; vrLoc = 15652; @@ -3614,7 +3646,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 615"; rLen = 0; - rLoc = 15671; + rLoc = 15823; rType = 0; vrLen = 1020; vrLoc = 15652; @@ -3634,7 +3666,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 604"; rLen = 0; - rLoc = 15671; + rLoc = 15823; rType = 0; vrLen = 956; vrLoc = 15652; @@ -3664,7 +3696,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 604"; rLen = 0; - rLoc = 15671; + rLoc = 15823; rType = 0; vrLen = 964; vrLoc = 15652; @@ -3674,7 +3706,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 604"; rLen = 0; - rLoc = 15671; + rLoc = 15823; rType = 0; vrLen = 964; vrLoc = 15652; @@ -3794,7 +3826,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 638"; rLen = 0; - rLoc = 16583; + rLoc = 16735; rType = 0; vrLen = 843; vrLoc = 16276; @@ -3804,7 +3836,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 622"; rLen = 0; - rLoc = 16336; + rLoc = 16488; rType = 0; vrLen = 895; vrLoc = 15670; @@ -3821,7 +3853,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 622"; rLen = 0; - rLoc = 16336; + rLoc = 16488; rType = 0; vrLen = 895; vrLoc = 15670; @@ -3841,7 +3873,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 625"; rLen = 0; - rLoc = 16351; + rLoc = 16503; rType = 0; vrLen = 809; vrLoc = 15799; @@ -3881,7 +3913,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 625"; rLen = 0; - rLoc = 16351; + rLoc = 16503; rType = 0; vrLen = 809; vrLoc = 15799; @@ -3931,7 +3963,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 625"; rLen = 0; - rLoc = 16351; + rLoc = 16503; rType = 0; vrLen = 809; vrLoc = 15799; @@ -3951,7 +3983,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 635"; rLen = 0; - rLoc = 16582; + rLoc = 16734; rType = 0; vrLen = 725; vrLoc = 16332; @@ -3991,7 +4023,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1188"; rLen = 0; - rLoc = 30462; + rLoc = 30614; rType = 0; vrLen = 567; vrLoc = 29809; @@ -4001,7 +4033,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 630"; rLen = 0; - rLoc = 16511; + rLoc = 16663; rType = 0; vrLen = 616; vrLoc = 16222; @@ -4041,7 +4073,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1188"; rLen = 0; - rLoc = 30462; + rLoc = 30614; rType = 0; vrLen = 567; vrLoc = 29809; @@ -4081,7 +4113,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1194"; rLen = 0; - rLoc = 30462; + rLoc = 30614; rType = 0; vrLen = 558; vrLoc = 29894; @@ -4091,7 +4123,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1141"; rLen = 0; - rLoc = 28972; + rLoc = 29124; rType = 0; vrLen = 1015; vrLoc = 28576; @@ -4121,7 +4153,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 129"; rLen = 0; - rLoc = 3256; + rLoc = 3252; rType = 0; vrLen = 962; vrLoc = 2045; @@ -4131,7 +4163,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1141"; rLen = 0; - rLoc = 28972; + rLoc = 29124; rType = 0; vrLen = 1015; vrLoc = 28576; @@ -4161,7 +4193,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 28"; rLen = 0; - rLoc = 820; + rLoc = 816; rType = 0; vrLen = 657; vrLoc = 63; @@ -4181,7 +4213,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 129"; rLen = 0; - rLoc = 3256; + rLoc = 3252; rType = 0; vrLen = 962; vrLoc = 2045; @@ -4201,7 +4233,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 128"; rLen = 0; - rLoc = 2874; + rLoc = 2870; rType = 0; vrLen = 991; vrLoc = 2045; @@ -4241,7 +4273,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 320"; rLen = 0; - rLoc = 8182; + rLoc = 8174; rType = 0; vrLen = 975; vrLoc = 7173; @@ -4251,7 +4283,7 @@ comments = "error: 'curRef' was not declared in this scope"; fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; rLen = 1; - rLoc = 1144; + rLoc = 1155; rType = 1; }; 6BA1E90710C7D850008007F6 /* PBXTextBookmark */ = { @@ -4259,7 +4291,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 155"; rLen = 0; - rLoc = 4452; + rLoc = 4448; rType = 0; vrLen = 808; vrLoc = 2731; @@ -4279,7 +4311,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 160"; rLen = 0; - rLoc = 3984; + rLoc = 3980; rType = 0; vrLen = 949; vrLoc = 2843; @@ -4309,7 +4341,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 168"; rLen = 0; - rLoc = 4452; + rLoc = 4448; rType = 0; vrLen = 953; vrLoc = 2976; @@ -4329,7 +4361,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 320"; rLen = 0; - rLoc = 8182; + rLoc = 8174; rType = 0; vrLen = 975; vrLoc = 7173; @@ -4339,7 +4371,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1145"; rLen = 0; - rLoc = 29089; + rLoc = 29241; rType = 0; vrLen = 830; vrLoc = 28675; @@ -4349,7 +4381,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1165"; rLen = 0; - rLoc = 29702; + rLoc = 29854; rType = 0; vrLen = 806; vrLoc = 29138; @@ -4369,7 +4401,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 320"; rLen = 0; - rLoc = 8182; + rLoc = 8174; rType = 0; vrLen = 993; vrLoc = 7160; @@ -4379,7 +4411,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1165"; rLen = 0; - rLoc = 29702; + rLoc = 29854; rType = 0; vrLen = 806; vrLoc = 29138; @@ -4399,7 +4431,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 187"; rLen = 0; - rLoc = 4666; + rLoc = 4662; rType = 0; vrLen = 665; vrLoc = 3810; @@ -4409,7 +4441,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 150"; rLen = 0; - rLoc = 3639; + rLoc = 3635; rType = 0; vrLen = 905; vrLoc = 2866; @@ -4419,7 +4451,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 141"; rLen = 0; - rLoc = 3310; + rLoc = 3306; rType = 0; vrLen = 907; vrLoc = 2866; @@ -4429,7 +4461,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 141"; rLen = 0; - rLoc = 3310; + rLoc = 3306; rType = 0; vrLen = 588; vrLoc = 4002; @@ -4439,7 +4471,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 180"; rLen = 0; - rLoc = 4481; + rLoc = 4477; rType = 0; vrLen = 790; vrLoc = 3750; @@ -4459,7 +4491,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 644"; rLen = 0; - rLoc = 16730; + rLoc = 16882; rType = 0; vrLen = 796; vrLoc = 16350; @@ -4469,7 +4501,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 180"; rLen = 0; - rLoc = 4481; + rLoc = 4477; rType = 0; vrLen = 790; vrLoc = 3750; @@ -4479,7 +4511,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 644"; rLen = 0; - rLoc = 16730; + rLoc = 16882; rType = 0; vrLen = 796; vrLoc = 16350; @@ -4499,7 +4531,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1182"; rLen = 0; - rLoc = 30065; + rLoc = 30217; rType = 0; vrLen = 838; vrLoc = 29661; @@ -4509,7 +4541,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 140"; rLen = 0; - rLoc = 3256; + rLoc = 3252; rType = 0; vrLen = 1036; vrLoc = 2484; @@ -4518,7 +4550,7 @@ isa = PBXTextBookmark; fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; rLen = 0; - rLoc = 1184; + rLoc = 1195; rType = 1; }; 6BA1E93910C7DB10008007F6 /* PBXTextBookmark */ = { @@ -4526,7 +4558,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1182"; rLen = 0; - rLoc = 30065; + rLoc = 30217; rType = 0; vrLen = 838; vrLoc = 29661; @@ -4536,7 +4568,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 140"; rLen = 0; - rLoc = 3256; + rLoc = 3252; rType = 0; vrLen = 1036; vrLoc = 2484; @@ -4546,7 +4578,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1189"; rLen = 0; - rLoc = 30275; + rLoc = 30427; rType = 0; vrLen = 759; vrLoc = 29759; @@ -4556,7 +4588,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1189"; rLen = 0; - rLoc = 30275; + rLoc = 30427; rType = 0; vrLen = 901; vrLoc = 29759; @@ -4566,7 +4598,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 140"; rLen = 0; - rLoc = 3256; + rLoc = 3252; rType = 0; vrLen = 1054; vrLoc = 2479; @@ -4576,7 +4608,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1189"; rLen = 0; - rLoc = 30275; + rLoc = 30427; rType = 0; vrLen = 901; vrLoc = 29759; @@ -4586,7 +4618,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 160"; rLen = 0; - rLoc = 3962; + rLoc = 3958; rType = 0; vrLen = 914; vrLoc = 2936; @@ -4596,7 +4628,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 160"; rLen = 0; - rLoc = 3962; + rLoc = 3958; rType = 0; vrLen = 1113; vrLoc = 2361; @@ -4605,7 +4637,7 @@ isa = PBXTextBookmark; fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; rLen = 0; - rLoc = 1195; + rLoc = 1206; rType = 1; }; 6BA1E94610C7DB45008007F6 /* PBXTextBookmark */ = { @@ -4613,7 +4645,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 160"; rLen = 0; - rLoc = 3962; + rLoc = 3958; rType = 0; vrLen = 1113; vrLoc = 2361; @@ -4623,7 +4655,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1196"; rLen = 0; - rLoc = 30492; + rLoc = 30644; rType = 0; vrLen = 841; vrLoc = 29819; @@ -4633,7 +4665,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1196"; rLen = 0; - rLoc = 30492; + rLoc = 30644; rType = 0; vrLen = 841; vrLoc = 29819; @@ -4650,7 +4682,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1196"; rLen = 0; - rLoc = 30492; + rLoc = 30644; rType = 0; vrLen = 841; vrLoc = 29819; @@ -4660,7 +4692,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 137"; rLen = 0; - rLoc = 3182; + rLoc = 3178; rType = 0; vrLen = 1113; vrLoc = 2361; @@ -4670,7 +4702,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 132"; rLen = 0; - rLoc = 3108; + rLoc = 3104; rType = 0; vrLen = 1112; vrLoc = 2361; @@ -4680,7 +4712,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 132"; rLen = 0; - rLoc = 3108; + rLoc = 3104; rType = 0; vrLen = 971; vrLoc = 2561; @@ -4690,7 +4722,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 147"; rLen = 0; - rLoc = 3537; + rLoc = 3533; rType = 0; vrLen = 854; vrLoc = 2902; @@ -4700,7 +4732,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 162"; rLen = 0; - rLoc = 3769; + rLoc = 3765; rType = 0; vrLen = 728; vrLoc = 3915; @@ -4710,7 +4742,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 201"; rLen = 0; - rLoc = 4452; + rLoc = 4448; rType = 0; vrLen = 640; vrLoc = 4046; @@ -4720,7 +4752,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1097"; rLen = 0; - rLoc = 28015; + rLoc = 28167; rType = 0; vrLen = 776; vrLoc = 25780; @@ -4730,7 +4762,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 203"; rLen = 0; - rLoc = 4452; + rLoc = 4448; rType = 0; vrLen = 677; vrLoc = 4046; @@ -4740,7 +4772,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 203"; rLen = 0; - rLoc = 4452; + rLoc = 4448; rType = 0; vrLen = 677; vrLoc = 4046; @@ -4750,7 +4782,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 1097"; rLen = 0; - rLoc = 28015; + rLoc = 28167; rType = 0; vrLen = 776; vrLoc = 25780; @@ -4760,7 +4792,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 205"; rLen = 0; - rLoc = 4470; + rLoc = 4466; rType = 0; vrLen = 640; vrLoc = 4046; @@ -4770,7 +4802,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 977"; rLen = 0; - rLoc = 25230; + rLoc = 25382; rType = 0; vrLen = 692; vrLoc = 28068; @@ -4790,7 +4822,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 156"; rLen = 0; - rLoc = 3639; + rLoc = 3635; rType = 0; vrLen = 769; vrLoc = 3008; @@ -4800,7 +4832,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 205"; rLen = 0; - rLoc = 4470; + rLoc = 4466; rType = 0; vrLen = 923; vrLoc = 2600; @@ -4810,7 +4842,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 977"; rLen = 0; - rLoc = 25230; + rLoc = 25382; rType = 0; vrLen = 692; vrLoc = 28068; @@ -4820,7 +4852,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 156"; rLen = 0; - rLoc = 3639; + rLoc = 3635; rType = 0; vrLen = 769; vrLoc = 3008; @@ -4840,7 +4872,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 162"; rLen = 0; - rLoc = 3734; + rLoc = 3730; rType = 0; vrLen = 775; vrLoc = 3008; @@ -4850,7 +4882,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 178"; rLen = 0; - rLoc = 4095; + rLoc = 4091; rType = 0; vrLen = 733; vrLoc = 3625; @@ -4860,7 +4892,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 175"; rLen = 0; - rLoc = 4066; + rLoc = 4062; rType = 0; vrLen = 740; vrLoc = 3625; @@ -4870,7 +4902,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 171"; rLen = 0; - rLoc = 4066; + rLoc = 4062; rType = 0; vrLen = 941; vrLoc = 3288; @@ -4880,7 +4912,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 171"; rLen = 0; - rLoc = 4066; + rLoc = 4062; rType = 0; vrLen = 566; vrLoc = 4247; @@ -4890,7 +4922,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 199"; rLen = 0; - rLoc = 4725; + rLoc = 4721; rType = 0; vrLen = 699; vrLoc = 4049; @@ -4900,7 +4932,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 139"; rLen = 0; - rLoc = 3255; + rLoc = 3251; rType = 0; vrLen = 1022; vrLoc = 2930; @@ -4948,7 +4980,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 343"; rLen = 0; - rLoc = 8067; + rLoc = 8059; rType = 0; vrLen = 874; vrLoc = 7781; @@ -4958,7 +4990,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 321"; rLen = 0; - rLoc = 7422; + rLoc = 7414; rType = 0; vrLen = 872; vrLoc = 7461; @@ -4968,7 +5000,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 322"; rLen = 0; - rLoc = 7422; + rLoc = 7414; rType = 0; vrLen = 874; vrLoc = 7461; @@ -4988,7 +5020,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 161"; rLen = 0; - rLoc = 3658; + rLoc = 3654; rType = 0; vrLen = 765; vrLoc = 3537; @@ -4998,7 +5030,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 320"; rLen = 0; - rLoc = 7719; + rLoc = 7711; rType = 0; vrLen = 1073; vrLoc = 7393; @@ -5008,7 +5040,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 333"; rLen = 0; - rLoc = 8122; + rLoc = 8114; rType = 0; vrLen = 1132; vrLoc = 7286; @@ -5018,7 +5050,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 323"; rLen = 0; - rLoc = 7856; + rLoc = 7848; rType = 0; vrLen = 1132; vrLoc = 7286; @@ -5028,7 +5060,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 331"; rLen = 0; - rLoc = 8021; + rLoc = 8013; rType = 0; vrLen = 1099; vrLoc = 7327; @@ -5038,7 +5070,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 329"; rLen = 0; - rLoc = 7969; + rLoc = 7961; rType = 0; vrLen = 1099; vrLoc = 7327; @@ -5048,7 +5080,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 320"; rLen = 0; - rLoc = 7698; + rLoc = 7690; rType = 0; vrLen = 1114; vrLoc = 7327; @@ -5058,7 +5090,7 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 319"; rLen = 0; - rLoc = 7671; + rLoc = 7663; rType = 0; vrLen = 1152; vrLoc = 7327; @@ -5068,11 +5100,81 @@ fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; name = "Sample_SoloMesh.cpp: 335"; rLen = 0; - rLoc = 8158; + rLoc = 8150; rType = 0; vrLen = 969; vrLoc = 7547; }; + 6BB4964410C8ECF300BC0805 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; + name = "Sample_SoloMesh.cpp: 335"; + rLen = 0; + rLoc = 8150; + rType = 0; + vrLen = 969; + vrLoc = 7547; + }; + 6BB4964510C8ECF300BC0805 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 45"; + rLen = 41; + rLoc = 1441; + rType = 0; + vrLen = 548; + vrLoc = 1072; + }; + 6BB4964610C8ECF300BC0805 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 20"; + rLen = 0; + rLoc = 410; + rType = 0; + vrLen = 668; + vrLoc = 83; + }; + 6BB4964710C8ECF300BC0805 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B1185FC10068B040018F96F /* DetourCommon.h */; + name = "DetourCommon.h: 135"; + rLen = 295; + rLoc = 3546; + rType = 0; + vrLen = 594; + vrLoc = 3382; + }; + 6BB4964810C8ECF300BC0805 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 28"; + rLen = 0; + rLoc = 1130; + rType = 0; + vrLen = 1123; + vrLoc = 202; + }; + 6BB4964910C8ECF300BC0805 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 201"; + rLen = 0; + rLoc = 4116; + rType = 0; + vrLen = 876; + vrLoc = 3910; + }; + 6BB4964A10C8ECF300BC0805 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 21"; + rLen = 0; + rLoc = 390; + rType = 0; + vrLen = 627; + vrLoc = 0; + }; 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 3680}}"; @@ -5089,12 +5191,18 @@ }; 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 576}}"; - sepNavSelRange = "{1465, 0}"; - sepNavVisRange = "{3, 1652}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 489}}"; + sepNavSelRange = "{1077, 54}"; + sepNavVisRange = "{0, 1244}"; }; }; 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.h; + name = DetourStatNavMesh.h; + path = /Users/memon/Code/recastnavigation/Detour/Include/DetourStatNavMesh.h; + sourceTree = ""; uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 3440}}"; sepNavSelRange = "{8514, 47}"; @@ -5102,6 +5210,12 @@ }; }; 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.h; + name = DetourStatNavMeshBuilder.h; + path = /Users/memon/Code/recastnavigation/Detour/Include/DetourStatNavMeshBuilder.h; + sourceTree = ""; uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 559}}"; sepNavSelRange = "{822, 0}"; @@ -5110,12 +5224,18 @@ }; 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 12192}}"; - sepNavSelRange = "{14721, 0}"; - sepNavVisRange = "{14492, 610}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 7744}}"; + sepNavSelRange = "{5797, 0}"; + sepNavVisRange = "{8947, 837}"; }; }; 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.cpp; + name = DetourStatNavMesh.cpp; + path = /Users/memon/Code/recastnavigation/Detour/Source/DetourStatNavMesh.cpp; + sourceTree = ""; uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 14928}}"; sepNavSelRange = "{23286, 0}"; @@ -5123,6 +5243,12 @@ }; }; 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.cpp; + name = DetourStatNavMeshBuilder.cpp; + path = /Users/memon/Code/recastnavigation/Detour/Source/DetourStatNavMeshBuilder.cpp; + sourceTree = ""; uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 5200}}"; sepNavSelRange = "{8381, 101}"; @@ -5145,7 +5271,7 @@ fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; name = "DetourNavMesh.cpp: 541"; rLen = 90; - rLoc = 14678; + rLoc = 14830; rType = 0; vrLen = 838; vrLoc = 13296; @@ -5175,7 +5301,7 @@ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; name = "Sample_TileMesh.cpp: 558"; rLen = 0; - rLoc = 14408; + rLoc = 1099; rType = 0; vrLen = 1067; vrLoc = 13902; diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj index 8b905cbf..0820b624 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj @@ -9,7 +9,6 @@ /* 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 /* 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 */; }; @@ -27,21 +26,17 @@ 6B25B6190FFA62BE004F1BC4 /* Sample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; }; 6B25B61D0FFA62BE004F1BC4 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; }; 6B2AEC530FFB8958005BE9CC /* Sample_TileMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; }; - 6B2AEC5A0FFB8A7A005BE9CC /* DetourTileNavMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; }; 6B555DB1100B212E00247EA3 /* imguiRenderGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; }; 6B62416A103434880002E346 /* RecastMeshDetail.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; }; 6B8632DA0F78122C00E2684A /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B8632D90F78122C00E2684A /* SDL.framework */; }; 6B8632DC0F78123E00E2684A /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B8632DB0F78123E00E2684A /* OpenGL.framework */; }; 6B8DE88910B69E3E00DF20FB /* DetourNavMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; }; 6B8DE88A10B69E3E00DF20FB /* DetourNavMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; }; - 6B8DE8F810B6B70E00DF20FB /* Sample_DynMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B8DE8F710B6B70E00DF20FB /* Sample_DynMesh.cpp */; }; 6BA1E88A10C7BFC9008007F6 /* Sample_SoloMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; }; 6BA1E88B10C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; }; 6BA1E88C10C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; }; 6BB788170FC0472B003C24DB /* ChunkyTriMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; }; 6BDD9E0A0F91113800904EEF /* DetourDebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */; }; - 6BDD9E0B0F91113800904EEF /* DetourStatNavMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */; }; - 6BDD9E0C0F91113800904EEF /* DetourStatNavMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; /* End PBXBuildFile section */ @@ -55,8 +50,6 @@ 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 /* 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; }; @@ -85,8 +78,6 @@ 6B25B6180FFA62BE004F1BC4 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = ../../Source/main.cpp; sourceTree = SOURCE_ROOT; }; 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_TileMesh.h; path = ../../Include/Sample_TileMesh.h; sourceTree = SOURCE_ROOT; }; 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_TileMesh.cpp; path = ../../Source/Sample_TileMesh.cpp; sourceTree = SOURCE_ROOT; }; - 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; }; @@ -97,8 +88,6 @@ 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourNavMeshBuilder.cpp; path = ../../../Detour/Source/DetourNavMeshBuilder.cpp; sourceTree = SOURCE_ROOT; }; 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourNavMesh.h; path = ../../../Detour/Include/DetourNavMesh.h; sourceTree = SOURCE_ROOT; }; 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourNavMeshBuilder.h; path = ../../../Detour/Include/DetourNavMeshBuilder.h; sourceTree = SOURCE_ROOT; }; - 6B8DE8F610B6B70100DF20FB /* Sample_DynMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_DynMesh.h; path = ../../Include/Sample_DynMesh.h; sourceTree = SOURCE_ROOT; }; - 6B8DE8F710B6B70E00DF20FB /* Sample_DynMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_DynMesh.cpp; path = ../../Source/Sample_DynMesh.cpp; sourceTree = SOURCE_ROOT; }; 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_SoloMesh.cpp; path = ../../Source/Sample_SoloMesh.cpp; sourceTree = SOURCE_ROOT; }; 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_SoloMeshSimple.cpp; path = ../../Source/Sample_SoloMeshSimple.cpp; sourceTree = SOURCE_ROOT; }; 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_SoloMeshTiled.cpp; path = ../../Source/Sample_SoloMeshTiled.cpp; sourceTree = SOURCE_ROOT; }; @@ -108,11 +97,7 @@ 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ChunkyTriMesh.cpp; path = ../../Source/ChunkyTriMesh.cpp; sourceTree = SOURCE_ROOT; }; 6BB788180FC04753003C24DB /* ChunkyTriMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChunkyTriMesh.h; path = ../../Include/ChunkyTriMesh.h; sourceTree = SOURCE_ROOT; }; 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourDebugDraw.h; path = ../../../Detour/Include/DetourDebugDraw.h; sourceTree = SOURCE_ROOT; }; - 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourStatNavMesh.h; path = ../../../Detour/Include/DetourStatNavMesh.h; sourceTree = SOURCE_ROOT; }; - 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourStatNavMeshBuilder.h; path = ../../../Detour/Include/DetourStatNavMeshBuilder.h; sourceTree = SOURCE_ROOT; }; 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourDebugDraw.cpp; path = ../../../Detour/Source/DetourDebugDraw.cpp; sourceTree = SOURCE_ROOT; }; - 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourStatNavMesh.cpp; path = ../../../Detour/Source/DetourStatNavMesh.cpp; sourceTree = SOURCE_ROOT; }; - 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourStatNavMeshBuilder.cpp; path = ../../../Detour/Source/DetourStatNavMeshBuilder.cpp; sourceTree = SOURCE_ROOT; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* Recast.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Recast.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -253,8 +238,6 @@ 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */, 6B25B6100FFA62AD004F1BC4 /* Sample.h */, 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */, - 6B8DE8F610B6B70100DF20FB /* Sample_DynMesh.h */, - 6B8DE8F710B6B70E00DF20FB /* Sample_DynMesh.cpp */, 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */, 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */, ); @@ -270,14 +253,6 @@ 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */, 6BDD9E040F91112200904EEF /* DetourDebugDraw.h */, 6BDD9E070F91113800904EEF /* DetourDebugDraw.cpp */, - 6BDD9E050F91112200904EEF /* DetourStatNavMesh.h */, - 6BDD9E080F91113800904EEF /* DetourStatNavMesh.cpp */, - 6BDD9E060F91112200904EEF /* DetourStatNavMeshBuilder.h */, - 6BDD9E090F91113800904EEF /* DetourStatNavMeshBuilder.cpp */, - 6B2AEC580FFB8A68005BE9CC /* DetourTileNavMesh.h */, - 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */, - 6B092B920FFCC2AC0088D3A5 /* DetourTileNavMeshBuilder.h */, - 6B092B930FFCC2BD0088D3A5 /* DetourTileNavMeshBuilder.cpp */, 6B1185F61006896B0018F96F /* DetourNode.h */, 6B1185F41006895B0018F96F /* DetourNode.cpp */, 6B1185FC10068B040018F96F /* DetourCommon.h */, @@ -355,21 +330,16 @@ 6B137C920F7FCC1100459200 /* RecastRegion.cpp in Sources */, 6B137C930F7FCC1100459200 /* RecastTimer.cpp in Sources */, 6BDD9E0A0F91113800904EEF /* DetourDebugDraw.cpp in Sources */, - 6BDD9E0B0F91113800904EEF /* DetourStatNavMesh.cpp in Sources */, - 6BDD9E0C0F91113800904EEF /* DetourStatNavMeshBuilder.cpp in Sources */, 6BB788170FC0472B003C24DB /* ChunkyTriMesh.cpp in Sources */, 6B25B6190FFA62BE004F1BC4 /* Sample.cpp in Sources */, 6B25B61D0FFA62BE004F1BC4 /* main.cpp in Sources */, 6B2AEC530FFB8958005BE9CC /* Sample_TileMesh.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 */, 6B62416A103434880002E346 /* RecastMeshDetail.cpp in Sources */, 6B8DE88910B69E3E00DF20FB /* DetourNavMesh.cpp in Sources */, 6B8DE88A10B69E3E00DF20FB /* DetourNavMeshBuilder.cpp in Sources */, - 6B8DE8F810B6B70E00DF20FB /* Sample_DynMesh.cpp in Sources */, 6BA1E88A10C7BFC9008007F6 /* Sample_SoloMesh.cpp in Sources */, 6BA1E88B10C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp in Sources */, 6BA1E88C10C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp in Sources */, diff --git a/RecastDemo/Include/Sample_DynMesh.h b/RecastDemo/Include/Sample_DynMesh.h deleted file mode 100644 index b49f619c..00000000 --- a/RecastDemo/Include/Sample_DynMesh.h +++ /dev/null @@ -1,114 +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 RECASTSAMPLEDYNMESH_H -#define RECASTSAMPLEDYNMESH_H - -#include "Sample.h" -#include "DetourNavMesh.h" -#include "Recast.h" -#include "RecastLog.h" -#include "ChunkyTriMesh.h" - -class Sample_DynMesh : public Sample -{ -protected: - - bool m_keepInterResults; - rcBuildTimes m_buildTimes; - - dtNavMesh* m_navMesh; - rcChunkyTriMesh* m_chunkyMesh; - unsigned char* m_triflags; - rcHeightfield* m_solid; - rcCompactHeightfield* m_chf; - rcContourSet* m_cset; - rcPolyMesh* m_pmesh; - rcPolyMeshDetail* m_dmesh; - 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, - }; - - dtPolyRef m_startRef; - dtPolyRef m_endRef; - float m_polyPickExt[3]; - - static const int MAX_POLYS = 256; - - dtPolyRef m_polys[MAX_POLYS]; - dtPolyRef 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(); - - void buildTile(const float* pos); - void removeTile(const float* pos); - - unsigned char* buildTileMesh(const float* bmin, const float* bmax, int& dataSize); - - void cleanup(); - -public: - Sample_DynMesh(); - virtual ~Sample_DynMesh(); - - 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(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 // RECASTSAMPLEDYNMESH_H diff --git a/RecastDemo/Include/Sample_SoloMeshSimple.h b/RecastDemo/Include/Sample_SoloMeshSimple.h index 466526ba..4dbf7bc4 100644 --- a/RecastDemo/Include/Sample_SoloMeshSimple.h +++ b/RecastDemo/Include/Sample_SoloMeshSimple.h @@ -2,7 +2,7 @@ #define RECASTSAMPLESOLOMESHSIMPLE_H #include "Sample_SoloMesh.h" -#include "DetourStatNavMesh.h" +#include "DetourNavMesh.h" #include "Recast.h" #include "RecastLog.h" diff --git a/RecastDemo/Include/Sample_SoloMeshTiled.h b/RecastDemo/Include/Sample_SoloMeshTiled.h index 255c3962..331a1b9d 100644 --- a/RecastDemo/Include/Sample_SoloMeshTiled.h +++ b/RecastDemo/Include/Sample_SoloMeshTiled.h @@ -2,7 +2,7 @@ #define RECASTSAMPLESOLOMESHTILED_H #include "Sample_SoloMesh.h" -#include "DetourStatNavMesh.h" +#include "DetourNavMesh.h" #include "Recast.h" #include "RecastLog.h" #include "ChunkyTriMesh.h" diff --git a/RecastDemo/Include/Sample_TileMesh.h b/RecastDemo/Include/Sample_TileMesh.h index 2cb8fcdc..9c462959 100644 --- a/RecastDemo/Include/Sample_TileMesh.h +++ b/RecastDemo/Include/Sample_TileMesh.h @@ -16,11 +16,11 @@ // 3. This notice may not be removed or altered from any source distribution. // -#ifndef RECASTSAMPLETILEDMESH_H -#define RECASTSAMPLETILEDMESH_H +#ifndef RECASTSAMPLETILEMESH_H +#define RECASTSAMPLETILEMESH_H #include "Sample.h" -#include "DetourTileNavMesh.h" +#include "DetourNavMesh.h" #include "Recast.h" #include "RecastLog.h" #include "ChunkyTriMesh.h" @@ -31,8 +31,8 @@ protected: bool m_keepInterResults; rcBuildTimes m_buildTimes; - - dtTiledNavMesh* m_navMesh; + + dtNavMesh* m_navMesh; rcChunkyTriMesh* m_chunkyMesh; unsigned char* m_triflags; rcHeightfield* m_solid; @@ -42,8 +42,11 @@ protected: rcPolyMeshDetail* m_dmesh; rcConfig m_cfg; + int m_maxTiles; + int m_maxPolysPerTile; + float m_tileSize; - + float m_spos[3]; float m_epos[3]; bool m_sposSet; @@ -65,14 +68,14 @@ protected: TOOLMODE_FIND_POLYS_AROUND, }; - dtTilePolyRef m_startRef; - dtTilePolyRef m_endRef; + dtPolyRef m_startRef; + dtPolyRef m_endRef; float m_polyPickExt[3]; - + static const int MAX_POLYS = 256; - dtTilePolyRef m_polys[MAX_POLYS]; - dtTilePolyRef m_parent[MAX_POLYS]; + dtPolyRef m_polys[MAX_POLYS]; + dtPolyRef m_parent[MAX_POLYS]; int m_npolys; float m_straightPath[MAX_POLYS*3]; int m_nstraightPath; @@ -88,7 +91,7 @@ protected: void removeTile(const float* pos); unsigned char* buildTileMesh(const float* bmin, const float* bmax, int& dataSize); - + void cleanup(); public: @@ -111,4 +114,4 @@ public: }; -#endif // RECASTBUILDERTILEDMESH_H +#endif // RECASTSAMPLETILEMESH_H diff --git a/RecastDemo/Source/Sample_DynMesh.cpp b/RecastDemo/Source/Sample_DynMesh.cpp deleted file mode 100644 index 7a605bb9..00000000 --- a/RecastDemo/Source/Sample_DynMesh.cpp +++ /dev/null @@ -1,931 +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 "Sample.h" -#include "Sample_DynMesh.h" -#include "Recast.h" -#include "RecastTimer.h" -#include "RecastDebugDraw.h" -#include "DetourNavMesh.h" -#include "DetourNavMeshBuilder.h" -#include "DetourDebugDraw.h" - -#ifdef WIN32 -# define snprintf _snprintf -#endif - - -Sample_DynMesh::Sample_DynMesh() : - m_keepInterResults(false), - m_navMesh(0), - m_chunkyMesh(0), - m_triflags(0), - m_solid(0), - m_chf(0), - m_cset(0), - m_pmesh(0), - m_dmesh(0), - m_tileSize(32), - m_sposSet(false), - m_eposSet(false), - m_tileBuildTime(0), - m_tileMemUsage(0), - m_tileTriCount(0), - m_startRef(0), - m_endRef(0), - m_npolys(0), - m_nstraightPath(0), - m_distanceToWall(0), - m_toolMode(TOOLMODE_CREATE_TILES) -{ - 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; -} - -Sample_DynMesh::~Sample_DynMesh() -{ - cleanup(); - delete m_navMesh; - delete m_chunkyMesh; -} - -void Sample_DynMesh::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_pmesh; - m_pmesh = 0; - delete m_dmesh; - m_dmesh = 0; -} - -void Sample_DynMesh::handleSettings() -{ - Sample::handleCommonSettings(); - - imguiLabel("Tiling"); - imguiSlider("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(text); -} - -void Sample_DynMesh::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_toolMode == TOOLMODE_PATHFIND) - { - if (m_sposSet && m_eposSet && m_startRef && m_endRef) - { - m_npolys = m_navMesh->findPath(m_startRef, m_endRef, m_spos, m_epos, 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, MAX_POLYS); - } - } - -} - -void Sample_DynMesh::handleTools() -{ - if (imguiCheck("Create Tiles", m_toolMode == TOOLMODE_CREATE_TILES)) - { - m_toolMode = TOOLMODE_CREATE_TILES; - toolRecalc(); - } - if (imguiCheck("Pathfind", m_toolMode == TOOLMODE_PATHFIND)) - { - m_toolMode = TOOLMODE_PATHFIND; - toolRecalc(); - } - if (imguiCheck("Distance to Wall", m_toolMode == TOOLMODE_DISTANCE_TO_WALL)) - { - m_toolMode = TOOLMODE_DISTANCE_TO_WALL; - toolRecalc(); - } - if (imguiCheck("Raycast", m_toolMode == TOOLMODE_RAYCAST)) - { - m_toolMode = TOOLMODE_RAYCAST; - toolRecalc(); - } - if (imguiCheck("Find Polys Around", m_toolMode == TOOLMODE_FIND_POLYS_AROUND)) - { - m_toolMode = TOOLMODE_FIND_POLYS_AROUND; - toolRecalc(); - } - if (imguiButton("Create All")) - { - 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; - const float tcs = m_tileSize*m_cellSize; - - for (int y = 0; y < th; ++y) - { - for (int x = 0; x < tw; ++x) - { - m_tileBmin[0] = m_bmin[0] + x*tcs; - m_tileBmin[1] = m_bmin[1]; - m_tileBmin[2] = m_bmin[2] + y*tcs; - - m_tileBmax[0] = m_bmin[0] + (x+1)*tcs; - m_tileBmax[1] = m_bmax[1]; - m_tileBmax[2] = m_bmin[2] + (y+1)*tcs; - - int dataSize = 0; - unsigned char* data = buildTileMesh(m_tileBmin, m_tileBmax, dataSize); - if (data) - { - // Remove any previous data (navmesh owns and deletes the data). - m_navMesh->removeTileAt(x,y,0,0); - // Let the navmesh own the data. - if (!m_navMesh->addTileAt(x,y,data,dataSize,true)) - delete [] data; - } - } - } - - toolRecalc(); - } -} - -void Sample_DynMesh::handleDebugMode() -{ - if (m_navMesh) - { - imguiValue("Navmesh ready."); - imguiValue("Use 'Create Tiles' tool to experiment."); - imguiValue("LMB: (Re)Create tiles."); - imguiValue("LMB+SHIFT: Remove tiles."); - } - -} - -static void getPolyCenter(dtNavMesh* navMesh, dtPolyRef ref, float* center) -{ - const dtPoly* 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 Sample_DynMesh::handleRender() -{ - if (!m_verts || !m_tris || !m_trinorms) - return; - - DebugDrawGL dd; - - // Draw mesh - if (m_navMesh) - rcDebugDrawMesh(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0); - else - rcDebugDrawMeshSlope(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, m_agentMaxSlope); - - glDepthMask(GL_FALSE); - - // Draw bounds - float col[4] = {1,1,1,0.5f}; - rcDebugDrawBoxWire(&dd, 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(&dd, m_tileBmin[0],m_tileBmin[1],m_tileBmin[2], m_tileBmax[0],m_tileBmax[1],m_tileBmax[2], m_tileCol); - - if (m_navMesh) - dtDebugDrawNavMesh(m_navMesh); - - if (m_sposSet) - { - const float s = 0.5f; - glColor4ub(64,16,0,255); - glLineWidth(3.0f); - glBegin(GL_LINES); - glVertex3f(m_spos[0]-s,m_spos[1]+m_cellHeight,m_spos[2]); - glVertex3f(m_spos[0]+s,m_spos[1]+m_cellHeight,m_spos[2]); - glVertex3f(m_spos[0],m_spos[1]-s+m_cellHeight,m_spos[2]); - glVertex3f(m_spos[0],m_spos[1]+s+m_cellHeight,m_spos[2]); - glVertex3f(m_spos[0],m_spos[1]+m_cellHeight,m_spos[2]-s); - glVertex3f(m_spos[0],m_spos[1]+m_cellHeight,m_spos[2]+s); - glEnd(); - glLineWidth(1.0f); - } - if (m_eposSet) - { - const float s = 0.5f; - glColor4ub(16,64,0,255); - glLineWidth(3.0f); - glBegin(GL_LINES); - glVertex3f(m_epos[0]-s,m_epos[1]+m_cellHeight,m_epos[2]); - glVertex3f(m_epos[0]+s,m_epos[1]+m_cellHeight,m_epos[2]); - glVertex3f(m_epos[0],m_epos[1]-s+m_cellHeight,m_epos[2]); - glVertex3f(m_epos[0],m_epos[1]+s+m_cellHeight,m_epos[2]); - glVertex3f(m_epos[0],m_epos[1]+m_cellHeight,m_epos[2]-s); - glVertex3f(m_epos[0],m_epos[1]+m_cellHeight,m_epos[2]+s); - glEnd(); - glLineWidth(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) - { - dtDebugDrawNavMeshPoly(m_navMesh, m_startRef, startCol); - dtDebugDrawNavMeshPoly(m_navMesh, m_endRef, endCol); - - if (m_npolys) - { - for (int i = 1; i < m_npolys-1; ++i) - dtDebugDrawNavMeshPoly(m_navMesh, m_polys[i], pathCol); - } - if (m_nstraightPath) - { - glColor4ub(64,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) - { - dtDebugDrawNavMeshPoly(m_navMesh, m_startRef, startCol); - - if (m_nstraightPath) - { - for (int i = 1; i < m_npolys; ++i) - dtDebugDrawNavMeshPoly(m_navMesh, m_polys[i], pathCol); - - glColor4ub(64,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) - { - dtDebugDrawNavMeshPoly(m_navMesh, m_startRef, startCol); - const float col[4] = {1,1,1,0.5f}; - rcDebugDrawCylinderWire(&dd, 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) - { - const float cola[4] = {0,0,0,0.5f}; - for (int i = 0; i < m_npolys; ++i) - { - dtDebugDrawNavMeshPoly(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(&dd, p0, p1, cola, 2.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(&dd, 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 Sample_DynMesh::handleRenderOverlay(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); - imguiDrawText((int)x, (int)y-25, IMGUI_ALIGN_CENTER, text, imguiRGBA(0,0,0,220)); - } -} - -void Sample_DynMesh::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 Sample_DynMesh::setToolStartPos(const float* p) -{ - m_sposSet = true; - vcopy(m_spos, p); - - if (m_toolMode == TOOLMODE_CREATE_TILES) - removeTile(m_spos); - else - toolRecalc(); -} - -void Sample_DynMesh::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 Sample_DynMesh::handleBuild() -{ - if (!m_verts || !m_tris) - { - printf("No verts or tris\n"); - return false; - } - - delete m_navMesh; - m_navMesh = new dtNavMesh; - if (!m_navMesh) - { - printf("Could not allocate navmehs\n"); - return false; - } - if (!m_navMesh->init(m_bmin, m_tileSize*m_cellSize, m_tileSize*m_cellSize, m_agentMaxClimb*m_cellHeight, 512, 512, 2048)) - { - 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 Sample_DynMesh::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.3f; m_tileCol[1] = 0.8f; m_tileCol[2] = 0; m_tileCol[3] = 1; - - int dataSize = 0; - unsigned char* data = buildTileMesh(m_tileBmin, m_tileBmax, dataSize); - - if (data) - { - // Remove any previous data (navmesh owns and deletes the data). - m_navMesh->removeTileAt(tx,ty,0,0); - - // Let the navmesh own the data. - if (!m_navMesh->addTileAt(tx,ty,data,dataSize,true)) - delete [] data; - } -} - -void Sample_DynMesh::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] = 0.8f; m_tileCol[1] = 0.1f; m_tileCol[2] = 0; m_tileCol[3] = 1; - - unsigned char* rdata = 0; - int rdataSize = 0; - if (m_navMesh->removeTileAt(tx,ty,&rdata,&rdataSize)) - delete [] rdata; -} - -unsigned char* Sample_DynMesh::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 + 3; // Reserve enough padding. - m_cfg.width = m_cfg.tileSize + m_cfg.borderSize*2; - m_cfg.height = m_cfg.tileSize + m_cfg.borderSize*2; - m_cfg.detailSampleDist = m_detailSampleDist < 0.9f ? 0 : m_cellSize * m_detailSampleDist; - m_cfg.detailSampleMaxError = m_cellHeight * m_detailSampleMaxError; - - 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_cset->nconts == 0) - { - return 0; - } - - // Build polygon navmesh from the contours. - m_pmesh = new rcPolyMesh; - if (!m_pmesh) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'pmesh'."); - return 0; - } - if (!rcBuildPolyMesh(*m_cset, m_cfg.maxVertsPerPoly, *m_pmesh)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not triangulate contours."); - return 0; - } - - // Build detail mesh. - m_dmesh = new rcPolyMeshDetail; - if (!m_dmesh) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'dmesh'."); - return 0; - } - - if (!rcBuildPolyMeshDetail(*m_pmesh, *m_chf, - m_cfg.detailSampleDist, m_cfg.detailSampleMaxError, - *m_dmesh)) - { - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could build polymesh detail."); - return 0; - } - - if (!m_keepInterResults) - { - delete m_chf; - m_chf = 0; - delete m_cset; - m_cset = 0; - } - - unsigned char* navData = 0; - int navDataSize = 0; - if (m_cfg.maxVertsPerPoly <= DT_VERTS_PER_POLYGON) - { - // Remove padding from the polymesh data. TODO: Remove this odditity. - for (int i = 0; i < m_pmesh->nverts; ++i) - { - unsigned short* v = &m_pmesh->verts[i*3]; - v[0] -= (unsigned short)m_cfg.borderSize; - v[2] -= (unsigned short)m_cfg.borderSize; - } - - if (m_pmesh->nverts >= 0xffff) - { - // The vertex indices are ushorts, and cannot point to more than 0xffff vertices. - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "Too many vertices per tile %d (max: %d).", m_pmesh->nverts, 0xffff); - return false; - } -/* if (m_pmesh->npolys > DT_MAX_TILES) - { - // If you hit this error, you have too many polygons per tile. - // You can trade off tile count to poly count by adjusting DT_TILE_REF_TILE_BITS and DT_TILE_REF_POLY_BITS. - // The current setup is optimized for large number of tiles and small number of polys per tile. - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "Too many polygons per tile %d (max: %d).", m_pmesh->npolys, DT_MAX_TILES); - return false; - }*/ - - if (!dtCreateNavMeshData(m_pmesh->verts, m_pmesh->nverts, - m_pmesh->polys, m_pmesh->npolys, m_pmesh->nvp, - m_dmesh->meshes, m_dmesh->verts, m_dmesh->nverts, m_dmesh->tris, m_dmesh->ntris, - 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, "Build Polymesh: %.1fms (%.1f%%)", m_buildTimes.buildPolymesh/1000.0f, m_buildTimes.buildPolymesh*pc); - rcGetLog()->log(RC_LOG_PROGRESS, "Build Polymesh Detail: %.1fms (%.1f%%)", m_buildTimes.buildDetailMesh/1000.0f, m_buildTimes.buildDetailMesh*pc); - rcGetLog()->log(RC_LOG_PROGRESS, "Merge Polymeshes: %.1fms (%.1f%%)", m_buildTimes.mergePolyMesh/1000.0f, m_buildTimes.mergePolyMesh*pc); - rcGetLog()->log(RC_LOG_PROGRESS, "Merge Polymesh Details: %.1fms (%.1f%%)", m_buildTimes.mergePolyMeshDetail/1000.0f, m_buildTimes.mergePolyMeshDetail*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_pmesh->nverts, m_pmesh->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/Sample_SoloMesh.cpp b/RecastDemo/Source/Sample_SoloMesh.cpp index 3c13f0c1..9dfce1d3 100644 --- a/RecastDemo/Source/Sample_SoloMesh.cpp +++ b/RecastDemo/Source/Sample_SoloMesh.cpp @@ -23,7 +23,7 @@ inline bool inRange(const float* v1, const float* v2, const float r, const float const float dx = v2[0] - v1[0]; const float dy = v2[1] - v1[1]; const float dz = v2[2] - v1[2]; - return (dx*dx + dz*dz) < r*r; // && fabsf(dy) < h; + return (dx*dx + dz*dz) < r*r && fabsf(dy) < h; } @@ -293,8 +293,8 @@ void Sample_SoloMesh::toolRender(int flags) if (flags & NAVMESH_POLYS) dtDebugDrawNavMesh(m_navMesh, m_toolMode == TOOLMODE_PATHFIND); -/* if (flags & NAVMESH_BVTREE) - dtDebugDrawNavMeshBVTree(m_navMesh);*/ + if (flags & NAVMESH_BVTREE) + dtDebugDrawNavMeshBVTree(m_navMesh); if (flags & NAVMESH_TOOLS) { diff --git a/RecastDemo/Source/Sample_SoloMeshSimple.cpp b/RecastDemo/Source/Sample_SoloMeshSimple.cpp index 1bad75fb..4682b27b 100644 --- a/RecastDemo/Source/Sample_SoloMeshSimple.cpp +++ b/RecastDemo/Source/Sample_SoloMeshSimple.cpp @@ -488,7 +488,7 @@ bool Sample_SoloMeshSimple::handleBuild() // The GUI may allow more max points per polygon than Detour can handle. // Only build the detour navmesh if we do not exceed the limit. - if (m_cfg.maxVertsPerPoly <= DT_STAT_VERTS_PER_POLYGON) + if (m_cfg.maxVertsPerPoly <= DT_VERTS_PER_POLYGON) { unsigned char* navData = 0; int navDataSize = 0; diff --git a/RecastDemo/Source/Sample_SoloMeshTiled.cpp b/RecastDemo/Source/Sample_SoloMeshTiled.cpp index 09f123cf..8f5f4dc8 100644 --- a/RecastDemo/Source/Sample_SoloMeshTiled.cpp +++ b/RecastDemo/Source/Sample_SoloMeshTiled.cpp @@ -905,7 +905,7 @@ bool Sample_SoloMeshTiled::handleBuild() } } - if (m_pmesh && m_cfg.maxVertsPerPoly <= DT_STAT_VERTS_PER_POLYGON) + if (m_pmesh && m_cfg.maxVertsPerPoly <= DT_VERTS_PER_POLYGON) { unsigned char* navData = 0; int navDataSize = 0; diff --git a/RecastDemo/Source/Sample_TileMesh.cpp b/RecastDemo/Source/Sample_TileMesh.cpp index 37ea3fd6..0099f14f 100644 --- a/RecastDemo/Source/Sample_TileMesh.cpp +++ b/RecastDemo/Source/Sample_TileMesh.cpp @@ -28,8 +28,8 @@ #include "Recast.h" #include "RecastTimer.h" #include "RecastDebugDraw.h" -#include "DetourTileNavMesh.h" -#include "DetourTileNavMeshBuilder.h" +#include "DetourNavMesh.h" +#include "DetourNavMeshBuilder.h" #include "DetourDebugDraw.h" #ifdef WIN32 @@ -37,6 +37,31 @@ #endif +inline unsigned int nextPow2(unsigned int v) +{ + v--; + v |= v >> 1; + v |= v >> 2; + v |= v >> 4; + v |= v >> 8; + v |= v >> 16; + v++; + return v; +} + +inline unsigned int ilog2(unsigned int v) +{ + unsigned int r; + unsigned int shift; + r = (v > 0xffff) << 4; v >>= r; + shift = (v > 0xff) << 3; v >>= shift; r |= shift; + shift = (v > 0xf) << 2; v >>= shift; r |= shift; + shift = (v > 0x3) << 1; v >>= shift; r |= shift; + r |= (v >> 1); + return r; +} + + Sample_TileMesh::Sample_TileMesh() : m_keepInterResults(false), m_navMesh(0), @@ -47,6 +72,8 @@ Sample_TileMesh::Sample_TileMesh() : m_cset(0), m_pmesh(0), m_dmesh(0), + m_maxTiles(0), + m_maxPolysPerTile(0), m_tileSize(32), m_sposSet(false), m_eposSet(false), @@ -94,7 +121,7 @@ void Sample_TileMesh::cleanup() void Sample_TileMesh::handleSettings() { Sample::handleCommonSettings(); - + imguiLabel("Tiling"); imguiSlider("TileSize", &m_tileSize, 16.0f, 1024.0f, 16.0f); @@ -106,6 +133,18 @@ void Sample_TileMesh::handleSettings() const int th = (gh + ts-1) / ts; snprintf(text, 64, "Tiles %d x %d", tw, th); imguiValue(text); + + // Max tiles and max polys affect how the tile IDs are caculated. + // There are 22 bits available for identifying a tile and a polygon. + int tileBits = rcMin((int)ilog2(nextPow2(tw*th)), 14); + if (tileBits > 14) tileBits = 14; + int polyBits = 22 - tileBits; + m_maxTiles = 1 << tileBits; + m_maxPolysPerTile = 1 << polyBits; + snprintf(text, 64, "Max Tiles %d", m_maxTiles); + imguiValue(text); + snprintf(text, 64, "Max Polys %d", m_maxPolysPerTile); + imguiValue(text); } void Sample_TileMesh::toolRecalc() @@ -113,7 +152,7 @@ void Sample_TileMesh::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); @@ -184,6 +223,49 @@ void Sample_TileMesh::handleTools() m_toolMode = TOOLMODE_CREATE_TILES; toolRecalc(); } + + imguiIndent(); + + if (imguiButton("Create All")) + { + 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; + const float tcs = m_tileSize*m_cellSize; + + for (int y = 0; y < th; ++y) + { + for (int x = 0; x < tw; ++x) + { + m_tileBmin[0] = m_bmin[0] + x*tcs; + m_tileBmin[1] = m_bmin[1]; + m_tileBmin[2] = m_bmin[2] + y*tcs; + + m_tileBmax[0] = m_bmin[0] + (x+1)*tcs; + m_tileBmax[1] = m_bmax[1]; + m_tileBmax[2] = m_bmin[2] + (y+1)*tcs; + + int dataSize = 0; + unsigned char* data = buildTileMesh(m_tileBmin, m_tileBmax, dataSize); + if (data) + { + // Remove any previous data (navmesh owns and deletes the data). + m_navMesh->removeTileAt(x,y,0,0); + // Let the navmesh own the data. + if (!m_navMesh->addTileAt(x,y,data,dataSize,true)) + delete [] data; + } + } + } + + toolRecalc(); + } + imguiUnindent(); + + imguiSeparator(); + if (imguiCheck("Pathfind", m_toolMode == TOOLMODE_PATHFIND)) { m_toolMode = TOOLMODE_PATHFIND; @@ -203,7 +285,7 @@ void Sample_TileMesh::handleTools() { m_toolMode = TOOLMODE_FIND_POLYS_AROUND; toolRecalc(); - } + } } void Sample_TileMesh::handleDebugMode() @@ -215,12 +297,16 @@ void Sample_TileMesh::handleDebugMode() imguiValue("LMB: (Re)Create tiles."); imguiValue("LMB+SHIFT: Remove tiles."); } - + else + { + imguiValue("Press [Build] to create tile mesh"); + imguiValue("with specified parameters."); + } } -static void getPolyCenter(dtTiledNavMesh* navMesh, dtTilePolyRef ref, float* center) +static void getPolyCenter(dtNavMesh* navMesh, dtPolyRef ref, float* center) { - const dtTilePoly* p = navMesh->getPolyByRef(ref); + const dtPoly* p = navMesh->getPolyByRef(ref); if (!p) return; const float* verts = navMesh->getPolyVertsByRef(ref); center[0] = 0; @@ -243,21 +329,21 @@ void Sample_TileMesh::handleRender() { if (!m_verts || !m_tris || !m_trinorms) return; - + DebugDrawGL dd; - + // Draw mesh if (m_navMesh) rcDebugDrawMesh(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0); else rcDebugDrawMeshSlope(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, m_agentMaxSlope); - + glDepthMask(GL_FALSE); // Draw bounds float col[4] = {1,1,1,0.5f}; rcDebugDrawBoxWire(&dd, 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; @@ -297,9 +383,9 @@ void Sample_TileMesh::handleRender() // Draw active tile rcDebugDrawBoxWire(&dd, m_tileBmin[0],m_tileBmin[1],m_tileBmin[2], m_tileBmax[0],m_tileBmax[1],m_tileBmax[2], m_tileCol); - + if (m_navMesh) - dtDebugDrawTiledNavMesh(m_navMesh); + dtDebugDrawNavMesh(m_navMesh); if (m_sposSet) { @@ -338,13 +424,13 @@ void Sample_TileMesh::handleRender() if (m_toolMode == TOOLMODE_PATHFIND) { - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_startRef, startCol); - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_endRef, endCol); + dtDebugDrawNavMeshPoly(m_navMesh, m_startRef, startCol); + dtDebugDrawNavMeshPoly(m_navMesh, m_endRef, endCol); if (m_npolys) { for (int i = 1; i < m_npolys-1; ++i) - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_polys[i], pathCol); + dtDebugDrawNavMeshPoly(m_navMesh, m_polys[i], pathCol); } if (m_nstraightPath) { @@ -365,12 +451,12 @@ void Sample_TileMesh::handleRender() } else if (m_toolMode == TOOLMODE_RAYCAST) { - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_startRef, startCol); + dtDebugDrawNavMeshPoly(m_navMesh, m_startRef, startCol); if (m_nstraightPath) { for (int i = 1; i < m_npolys; ++i) - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_polys[i], pathCol); + dtDebugDrawNavMeshPoly(m_navMesh, m_polys[i], pathCol); glColor4ub(64,16,0,220); glLineWidth(3.0f); @@ -389,7 +475,7 @@ void Sample_TileMesh::handleRender() } else if (m_toolMode == TOOLMODE_DISTANCE_TO_WALL) { - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_startRef, startCol); + dtDebugDrawNavMeshPoly(m_navMesh, m_startRef, startCol); const float col[4] = {1,1,1,0.5f}; rcDebugDrawCylinderWire(&dd, 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); @@ -406,7 +492,7 @@ void Sample_TileMesh::handleRender() const float cola[4] = {0,0,0,0.5f}; for (int i = 0; i < m_npolys; ++i) { - dtDebugDrawTiledNavMeshPoly(m_navMesh, m_polys[i], pathCol); + dtDebugDrawNavMeshPoly(m_navMesh, m_polys[i], pathCol); if (m_parent[i]) { float p0[3], p1[3]; @@ -435,7 +521,7 @@ void Sample_TileMesh::handleRenderOverlay(double* proj, double* model, int* view // 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)) + model, proj, view, &x, &y, &z)) { char text[32]; snprintf(text,32,"%.3fms / %dTris / %.1fkB", m_tileBuildTime, m_tileTriCount, m_tileMemUsage); @@ -444,8 +530,8 @@ void Sample_TileMesh::handleRenderOverlay(double* proj, double* model, int* view } void Sample_TileMesh::handleMeshChanged(const float* verts, int nverts, - const int* tris, const float* trinorms, int ntris, - const float* bmin, const float* bmax) + const int* tris, const float* trinorms, int ntris, + const float* bmin, const float* bmax) { m_verts = verts; m_nverts = nverts; @@ -454,7 +540,7 @@ void Sample_TileMesh::handleMeshChanged(const float* verts, int nverts, m_ntris = ntris; vcopy(m_bmin, bmin); vcopy(m_bmax, bmax); - + delete m_chunkyMesh; m_chunkyMesh = 0; delete m_navMesh; @@ -466,7 +552,7 @@ void Sample_TileMesh::setToolStartPos(const float* p) { m_sposSet = true; vcopy(m_spos, p); - + if (m_toolMode == TOOLMODE_CREATE_TILES) removeTile(m_spos); else @@ -477,7 +563,7 @@ void Sample_TileMesh::setToolEndPos(const float* p) { if (!m_navMesh) return; - + m_eposSet = true; vcopy(m_epos, p); @@ -491,23 +577,26 @@ bool Sample_TileMesh::handleBuild() { if (!m_verts || !m_tris) { - printf("No verts or tris\n"); + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: No vertices and triangles."); return false; } - + delete m_navMesh; - m_navMesh = new dtTiledNavMesh; + m_navMesh = new dtNavMesh; if (!m_navMesh) { - printf("Could not allocate navmehs\n"); + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not allocate navmesh."); return false; } - if (!m_navMesh->init(m_bmin, m_tileSize*m_cellSize, m_agentMaxClimb*m_cellHeight)) + if (!m_navMesh->init(m_bmin, m_tileSize*m_cellSize, m_tileSize*m_cellSize, m_agentMaxClimb*m_cellHeight, m_maxTiles, m_maxPolysPerTile, 2048)) { - printf("Could not init navmesh\n"); + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not init navmesh."); return false; } - + // Build chunky mesh. delete m_chunkyMesh; m_chunkyMesh = new rcChunkyTriMesh; @@ -523,7 +612,7 @@ bool Sample_TileMesh::handleBuild() rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not build chunky mesh."); return false; } - + return true; } @@ -531,17 +620,17 @@ void Sample_TileMesh::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; @@ -665,7 +754,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm return 0; } - + float tbmin[2], tbmax[2]; tbmin[0] = m_cfg.bmin[0]; tbmin[1] = m_cfg.bmin[2]; @@ -675,15 +764,15 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm 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)); @@ -759,6 +848,11 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm return 0; } + if (m_cset->nconts == 0) + { + return 0; + } + // Build polygon navmesh from the contours. m_pmesh = new rcPolyMesh; if (!m_pmesh) @@ -773,7 +867,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not triangulate contours."); return 0; } - + // Build detail mesh. m_dmesh = new rcPolyMeshDetail; if (!m_dmesh) @@ -802,7 +896,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm unsigned char* navData = 0; int navDataSize = 0; - if (m_cfg.maxVertsPerPoly == DT_TILE_VERTS_PER_POLYGON) + if (m_cfg.maxVertsPerPoly <= DT_VERTS_PER_POLYGON) { // Remove padding from the polymesh data. TODO: Remove this odditity. for (int i = 0; i < m_pmesh->nverts; ++i) @@ -819,20 +913,20 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm rcGetLog()->log(RC_LOG_ERROR, "Too many vertices per tile %d (max: %d).", m_pmesh->nverts, 0xffff); return false; } - if (m_pmesh->npolys > DT_MAX_TILES) - { - // If you hit this error, you have too many polygons per tile. - // You can trade off tile count to poly count by adjusting DT_TILE_REF_TILE_BITS and DT_TILE_REF_POLY_BITS. - // The current setup is optimized for large number of tiles and small number of polys per tile. - if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "Too many polygons per tile %d (max: %d).", m_pmesh->npolys, DT_MAX_TILES); - return false; - } - - if (!dtCreateNavMeshTileData(m_pmesh->verts, m_pmesh->nverts, - m_pmesh->polys, m_pmesh->npolys, m_pmesh->nvp, - m_dmesh->meshes, m_dmesh->verts, m_dmesh->nverts, m_dmesh->tris, m_dmesh->ntris, - bmin, bmax, m_cfg.cs, m_cfg.ch, m_cfg.tileSize, m_cfg.walkableClimb, &navData, &navDataSize)) + /* if (m_pmesh->npolys > DT_MAX_TILES) + { + // If you hit this error, you have too many polygons per tile. + // You can trade off tile count to poly count by adjusting DT_TILE_REF_TILE_BITS and DT_TILE_REF_POLY_BITS. + // The current setup is optimized for large number of tiles and small number of polys per tile. + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "Too many polygons per tile %d (max: %d).", m_pmesh->npolys, DT_MAX_TILES); + return false; + }*/ + + if (!dtCreateNavMeshData(m_pmesh->verts, m_pmesh->nverts, + m_pmesh->polys, m_pmesh->npolys, m_pmesh->nvp, + m_dmesh->meshes, m_dmesh->verts, m_dmesh->nverts, m_dmesh->tris, m_dmesh->ntris, + 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."); @@ -882,7 +976,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm rcGetLog()->log(RC_LOG_PROGRESS, "TOTAL: %.1fms", rcGetDeltaTimeUsec(totStartTime, totEndTime)/1000.0f); } - + m_tileBuildTime = rcGetDeltaTimeUsec(totStartTime, totEndTime)/1000.0f; dataSize = navDataSize; diff --git a/RecastDemo/Source/main.cpp b/RecastDemo/Source/main.cpp index 543d7d7b..9dffa28b 100644 --- a/RecastDemo/Source/main.cpp +++ b/RecastDemo/Source/main.cpp @@ -18,7 +18,6 @@ #include "Sample_SoloMeshSimple.h" #include "Sample_SoloMeshTiled.h" #include "Sample_TileMesh.h" -#include "Sample_DynMesh.h" #ifdef WIN32 # define snprintf _snprintf @@ -198,14 +197,12 @@ struct SampleItem Sample* createSoloSimple() { return new Sample_SoloMeshSimple(); } Sample* createSoloTiled() { return new Sample_SoloMeshTiled(); } Sample* createTile() { return new Sample_TileMesh(); } -Sample* createDyn() { return new Sample_DynMesh(); } static SampleItem g_samples[] = { -{ createSoloSimple, "Solo Mesh Simple" }, -{ createSoloTiled, "Solo Mesh Tiled" }, -{ createTile, "Tile Mesh" }, -{ createDyn, "Dyn Mesh" }, + { createSoloSimple, "Solo Mesh Simple" }, + { createSoloTiled, "Solo Mesh Tiled" }, + { createTile, "Tile Mesh" }, }; static const int g_nsamples = sizeof(g_samples)/sizeof(SampleItem);