From cd3a351f4016de29c61cdfb77b097f1d9874ef7d Mon Sep 17 00:00:00 2001 From: Mikko Mononen Date: Fri, 9 Jul 2010 12:55:14 +0000 Subject: [PATCH] Custom allocator for Recast. --- Detour/Source/DetourAlloc.cpp | 3 +- Recast/Include/Recast.h | 89 +- Recast/Include/RecastAlloc.h | 67 + Recast/Source/Recast.cpp | 110 +- Recast/Source/RecastAlloc.cpp | 67 + Recast/Source/RecastArea.cpp | 5 +- Recast/Source/RecastContour.cpp | 33 +- Recast/Source/RecastMesh.cpp | 73 +- Recast/Source/RecastMeshDetail.cpp | 29 +- Recast/Source/RecastRasterization.cpp | 3 +- Recast/Source/RecastRegion.cpp | 50 +- .../Bin/Recast.app/Contents/MacOS/Recast | Bin 582700 -> 583880 bytes .../Xcode/Recast.xcodeproj/memon.pbxuser | 2107 +++++++++++++++-- .../Recast.xcodeproj/memon.perspectivev3 | 164 +- .../Xcode/Recast.xcodeproj/project.pbxproj | 6 + RecastDemo/Include/Sample_SoloMeshTiled.h | 9 +- RecastDemo/Source/Sample_Debug.cpp | 8 +- RecastDemo/Source/Sample_SoloMeshSimple.cpp | 27 +- RecastDemo/Source/Sample_SoloMeshTiled.cpp | 30 +- RecastDemo/Source/Sample_TileMesh.cpp | 26 +- 20 files changed, 2472 insertions(+), 434 deletions(-) create mode 100644 Recast/Include/RecastAlloc.h create mode 100644 Recast/Source/RecastAlloc.cpp diff --git a/Detour/Source/DetourAlloc.cpp b/Detour/Source/DetourAlloc.cpp index e96ab19e..5f671df5 100644 --- a/Detour/Source/DetourAlloc.cpp +++ b/Detour/Source/DetourAlloc.cpp @@ -45,5 +45,6 @@ void* dtAlloc(int size, dtAllocHint hint) void dtFree(void* ptr) { - sFreeFunc(ptr); + if (ptr) + sFreeFunc(ptr); } diff --git a/Recast/Include/Recast.h b/Recast/Include/Recast.h index 08861d58..040653ea 100644 --- a/Recast/Include/Recast.h +++ b/Recast/Include/Recast.h @@ -62,19 +62,6 @@ struct rcSpanPool // Dynamic span-heightfield. struct rcHeightfield { - inline rcHeightfield() : width(0), height(0), spans(0), pools(0), freelist(0) {} - inline ~rcHeightfield() - { - // Delete span array. - delete [] spans; - // Delete span pools. - while (pools) - { - rcSpanPool* next = pools->next; - delete [] reinterpret_cast(pools); - pools = next; - } - } int width, height; // Dimension of the heightfield. float bmin[3], bmax[3]; // Bounding box of the heightfield float cs, ch; // Cell size and height. @@ -100,16 +87,9 @@ struct rcCompactSpan // Compact static heightfield. struct rcCompactHeightfield { - inline rcCompactHeightfield() : - maxDistance(0), maxRegions(0), cells(0), - spans(0), dist(0), areas(0) {} - inline ~rcCompactHeightfield() - { - delete [] cells; - delete [] spans; - delete [] dist; - delete [] areas; - } + rcCompactHeightfield(); + ~rcCompactHeightfield(); + int width, height; // Width and height of the heighfield. int spanCount; // Number of spans in the heightfield. int walkableHeight, walkableClimb; // Agent properties. @@ -125,8 +105,6 @@ struct rcCompactHeightfield struct rcContour { - inline rcContour() : verts(0), nverts(0), rverts(0), nrverts(0) { } - inline ~rcContour() { delete [] verts; delete [] rverts; } int* verts; // Vertex coordinates, each vertex contains 4 components. int nverts; // Number of vertices. int* rverts; // Raw vertex coordinates, each vertex contains 4 components. @@ -137,8 +115,6 @@ struct rcContour struct rcContourSet { - inline rcContourSet() : conts(0), nconts(0) {} - inline ~rcContourSet() { delete [] conts; } rcContour* conts; // Pointer to all contours. int nconts; // Number of contours. float bmin[3], bmax[3]; // Bounding box of the heightfield. @@ -157,11 +133,7 @@ struct rcContourSet // y = bmin[1] + verts[i*3+1]*ch; // z = bmin[2] + verts[i*3+2]*cs; struct rcPolyMesh -{ - inline rcPolyMesh() : verts(0), polys(0), regs(0), flags(0), areas(0), nverts(0), npolys(0), maxpolys(0), nvp(3) {} - - inline ~rcPolyMesh() { delete [] verts; delete [] polys; delete [] regs; delete [] flags; delete [] areas; } - +{ unsigned short* verts; // Vertices of the mesh, 3 elements per vertex. unsigned short* polys; // Polygons of the mesh, nvp*2 elements per polygon. unsigned short* regs; // Region ID of the polygons. @@ -187,14 +159,6 @@ struct rcPolyMesh struct rcPolyMeshDetail { - inline rcPolyMeshDetail() : - meshes(0), verts(0), tris(0), - nmeshes(0), nverts(0), ntris(0) {} - inline ~rcPolyMeshDetail() - { - delete [] meshes; delete [] verts; delete [] tris; - } - unsigned short* meshes; // Pointer to all mesh data. float* verts; // Pointer to all vertex data. unsigned char* tris; // Pointer to all triangle data. @@ -203,35 +167,22 @@ struct rcPolyMeshDetail int ntris; // Number of triangles. }; +// Allocators and destructors for Recast objects. +rcHeightfield* rcAllocHeightfield(); +void rcFreeHeightField(rcHeightfield* hf); -// Simple dynamic array ints. -class rcIntArray -{ - int* m_data; - int m_size, m_cap; -public: - inline rcIntArray() : m_data(0), m_size(0), m_cap(0) {} - inline rcIntArray(int n) : m_data(0), m_size(0), m_cap(n) { m_data = new int[n]; } - inline ~rcIntArray() { delete [] m_data; } - void resize(int n); - inline void push(int item) { resize(m_size+1); m_data[m_size-1] = item; } - inline int pop() { if (m_size > 0) m_size--; return m_data[m_size]; } - inline const int& operator[](int i) const { return m_data[i]; } - inline int& operator[](int i) { return m_data[i]; } - inline int size() const { return m_size; } -}; +rcCompactHeightfield* rcAllocCompactHeightfield(); +void rcFreeCompactHeightfield(rcCompactHeightfield* chf); + +rcContourSet* rcAllocContourSet(); +void rcFreeContourSet(rcContourSet* cset); + +rcPolyMesh* rcAllocPolyMesh(); +void rcFreePolyMesh(rcPolyMesh* pmesh); + +rcPolyMeshDetail* rcAllocPolyMeshDetail(); +void rcFreePolyMeshDetail(rcPolyMeshDetail* dmesh); -// Simple helper class to delete array in scope -template class rcScopedDelete -{ - T* ptr; -public: - inline rcScopedDelete() : ptr(0) {} - inline rcScopedDelete(T* p) : ptr(p) {} - inline ~rcScopedDelete() { delete [] ptr; } - inline operator T*() { return ptr; } - inline T* operator=(T* p) { ptr = p; return ptr; } -}; enum rcSpanFlags { @@ -391,6 +342,10 @@ inline bool rcVequal(const float* p0, const float* p1) return d < thr; } +// Alloc helpers for different Recast objects. +rcHeightfield* rcAllocHeightfield(); +void rcFreeHeightField(rcHeightfield* hf); + // Calculated bounding box of array of vertices. // Params: diff --git a/Recast/Include/RecastAlloc.h b/Recast/Include/RecastAlloc.h new file mode 100644 index 00000000..20dfef19 --- /dev/null +++ b/Recast/Include/RecastAlloc.h @@ -0,0 +1,67 @@ +// +// Copyright (c) 2009-2010 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 RECASTALLOC_H +#define RECASTALLOC_H + +enum rcAllocHint +{ + RC_ALLOC_PERM, // Memory persist after a function call. + RC_ALLOC_TEMP // Memory used temporarily within a function. +}; + +typedef void* (rcAllocFunc)(int size, rcAllocHint hint); +typedef void (rcFreeFunc)(void* ptr); + +void rcAllocSetCustom(rcAllocFunc *allocFunc, rcFreeFunc *freeFunc); + +void* rcAlloc(int size, rcAllocHint hint); +void rcFree(void* ptr); + + + +// Simple dynamic array ints. +class rcIntArray +{ + int* m_data; + int m_size, m_cap; +public: + inline rcIntArray() : m_data(0), m_size(0), m_cap(0) {} + inline rcIntArray(int n) : m_data(0), m_size(0), m_cap(n) { m_data = new int[n]; } + inline ~rcIntArray() { delete [] m_data; } + void resize(int n); + inline void push(int item) { resize(m_size+1); m_data[m_size-1] = item; } + inline int pop() { if (m_size > 0) m_size--; return m_data[m_size]; } + inline const int& operator[](int i) const { return m_data[i]; } + inline int& operator[](int i) { return m_data[i]; } + inline int size() const { return m_size; } +}; + +// Simple internal helper class to delete array in scope +template class rcScopedDelete +{ + T* ptr; + inline T* operator=(T* p) { /*ptr = p; return ptr;*/ } +public: + inline rcScopedDelete() : ptr(0) {} + inline rcScopedDelete(T* p) : ptr(p) {} + inline ~rcScopedDelete() { rcFree(ptr); } + inline operator T*() { return ptr; } +}; + +#endif diff --git a/Recast/Source/Recast.cpp b/Recast/Source/Recast.cpp index a41db4a4..481ed356 100644 --- a/Recast/Source/Recast.cpp +++ b/Recast/Source/Recast.cpp @@ -25,26 +25,106 @@ #include "Recast.h" #include "RecastLog.h" #include "RecastTimer.h" +#include "RecastAlloc.h" float rcSqrt(float x) { return sqrtf(x); } -void rcIntArray::resize(int n) +rcHeightfield* rcAllocHeightfield() { - if (n > m_cap) - { - if (!m_cap) m_cap = 8; - while (m_cap < n) m_cap *= 2; - int* newData = new int[m_cap]; - if (m_size && newData) memcpy(newData, m_data, m_size*sizeof(int)); - delete [] m_data; - m_data = newData; - } - m_size = n; + rcHeightfield* hf = (rcHeightfield*)rcAlloc(sizeof(rcHeightfield), RC_ALLOC_PERM); + memset(hf, 0, sizeof(rcHeightfield)); + return hf; } +void rcFreeHeightField(rcHeightfield* hf) +{ + if (!hf) return; + // Delete span array. + rcFree(hf->spans); + // Delete span pools. + while (hf->pools) + { + rcSpanPool* next = hf->pools->next; + rcFree(hf->pools); + hf->pools = next; + } + rcFree(hf); +} + +rcCompactHeightfield* rcAllocCompactHeightfield() +{ + rcCompactHeightfield* chf = (rcCompactHeightfield*)rcAlloc(sizeof(rcCompactHeightfield), RC_ALLOC_PERM); + memset(chf, 0, sizeof(rcCompactHeightfield)); + return chf; +} + +void rcFreeCompactHeightfield(rcCompactHeightfield* chf) +{ + if (!chf) return; + rcFree(chf->cells); + rcFree(chf->spans); + rcFree(chf->dist); + rcFree(chf->areas); + rcFree(chf); +} + +rcContourSet* rcAllocContourSet() +{ + rcContourSet* cset = (rcContourSet*)rcAlloc(sizeof(rcContourSet), RC_ALLOC_PERM); + memset(cset, 0, sizeof(rcContourSet)); + return cset; +} + +void rcFreeContourSet(rcContourSet* cset) +{ + if (!cset) return; + for (int i = 0; i < cset->nconts; ++i) + { + rcFree(cset->conts[i].verts); + rcFree(cset->conts[i].rverts); + } + rcFree(cset->conts); + rcFree(cset); +} + +rcPolyMesh* rcAllocPolyMesh() +{ + rcPolyMesh* pmesh = (rcPolyMesh*)rcAlloc(sizeof(rcPolyMesh), RC_ALLOC_PERM); + memset(pmesh, 0, sizeof(rcPolyMesh)); + return pmesh; +} + +void rcFreePolyMesh(rcPolyMesh* pmesh) +{ + if (!pmesh) return; + rcFree(pmesh->verts); + rcFree(pmesh->polys); + rcFree(pmesh->regs); + rcFree(pmesh->flags); + rcFree(pmesh->areas); + rcFree(pmesh); +} + +rcPolyMeshDetail* rcAllocPolyMeshDetail() +{ + rcPolyMeshDetail* dmesh = (rcPolyMeshDetail*)rcAlloc(sizeof(rcPolyMeshDetail), RC_ALLOC_PERM); + memset(dmesh, 0, sizeof(rcPolyMeshDetail)); + return dmesh; +} + +void rcFreePolyMeshDetail(rcPolyMeshDetail* dmesh) +{ + if (!dmesh) return; + rcFree(dmesh->meshes); + rcFree(dmesh->verts); + rcFree(dmesh->tris); + rcFree(dmesh); +} + + void rcCalcBounds(const float* verts, int nv, float* bmin, float* bmax) { // Calculate bounding box. @@ -70,11 +150,11 @@ bool rcCreateHeightfield(rcHeightfield& hf, int width, int height, { hf.width = width; hf.height = height; - hf.spans = new rcSpan*[hf.width*hf.height]; rcVcopy(hf.bmin, bmin); rcVcopy(hf.bmax, bmax); hf.cs = cs; hf.ch = ch; + hf.spans = (rcSpan**)rcAlloc(sizeof(rcSpan*)*hf.width*hf.height, RC_ALLOC_PERM); if (!hf.spans) return false; memset(hf.spans, 0, sizeof(rcSpan*)*hf.width*hf.height); @@ -150,7 +230,7 @@ bool rcBuildCompactHeightfield(const int walkableHeight, const int walkableClimb chf.bmax[1] += walkableHeight*hf.ch; chf.cs = hf.cs; chf.ch = hf.ch; - chf.cells = new rcCompactCell[w*h]; + chf.cells = (rcCompactCell*)rcAlloc(sizeof(rcCompactCell)*w*h, RC_ALLOC_PERM); if (!chf.cells) { if (rcGetLog()) @@ -158,7 +238,7 @@ bool rcBuildCompactHeightfield(const int walkableHeight, const int walkableClimb return false; } memset(chf.cells, 0, sizeof(rcCompactCell)*w*h); - chf.spans = new rcCompactSpan[spanCount]; + chf.spans = (rcCompactSpan*)rcAlloc(sizeof(rcCompactSpan)*spanCount, RC_ALLOC_PERM); if (!chf.spans) { if (rcGetLog()) @@ -166,7 +246,7 @@ bool rcBuildCompactHeightfield(const int walkableHeight, const int walkableClimb return false; } memset(chf.spans, 0, sizeof(rcCompactSpan)*spanCount); - chf.areas = new unsigned char[spanCount]; + chf.areas = (unsigned char*)rcAlloc(sizeof(unsigned char)*spanCount, RC_ALLOC_PERM); if (!chf.areas) { if (rcGetLog()) diff --git a/Recast/Source/RecastAlloc.cpp b/Recast/Source/RecastAlloc.cpp new file mode 100644 index 00000000..71e347ae --- /dev/null +++ b/Recast/Source/RecastAlloc.cpp @@ -0,0 +1,67 @@ +// +// Copyright (c) 2009-2010 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 "RecastAlloc.h" + +static void *rcAllocDefault(int size, rcAllocHint) +{ + return malloc(size); +} + +static void rcFreeDefault(void *ptr) +{ + free(ptr); +} + +static rcAllocFunc* sRecastAllocFunc = rcAllocDefault; +static rcFreeFunc* sRecastFreeFunc = rcFreeDefault; + +void rcAllocSetCustom(rcAllocFunc *allocFunc, rcFreeFunc *freeFunc) +{ + sRecastAllocFunc = allocFunc ? allocFunc : rcAllocDefault; + sRecastFreeFunc = freeFunc ? freeFunc : rcFreeDefault; +} + +void* rcAlloc(int size, rcAllocHint hint) +{ + return sRecastAllocFunc(size, hint); +} + +void rcFree(void* ptr) +{ + if (ptr) + sRecastFreeFunc(ptr); +} + + +void rcIntArray::resize(int n) +{ + if (n > m_cap) + { + if (!m_cap) m_cap = 8; + while (m_cap < n) m_cap *= 2; + int* newData = (int*)rcAlloc(m_cap*sizeof(int), RC_ALLOC_TEMP); + if (m_size && newData) memcpy(newData, m_data, m_size*sizeof(int)); + rcFree(m_data); + m_data = newData; + } + m_size = n; +} + diff --git a/Recast/Source/RecastArea.cpp b/Recast/Source/RecastArea.cpp index a8b49e75..da994acb 100644 --- a/Recast/Source/RecastArea.cpp +++ b/Recast/Source/RecastArea.cpp @@ -25,6 +25,7 @@ #include "Recast.h" #include "RecastLog.h" #include "RecastTimer.h" +#include "RecastAlloc.h" bool rcErodeArea(unsigned char areaId, int radius, rcCompactHeightfield& chf) @@ -34,7 +35,7 @@ bool rcErodeArea(unsigned char areaId, int radius, rcCompactHeightfield& chf) rcTimeVal startTime = rcGetPerformanceTimer(); - unsigned char* dist = new unsigned char[chf.spanCount]; + unsigned char* dist = (unsigned char*)rcAlloc(sizeof(unsigned char)*chf.spanCount, RC_ALLOC_TEMP); if (!dist) return false; @@ -195,7 +196,7 @@ bool rcErodeArea(unsigned char areaId, int radius, rcCompactHeightfield& chf) if (dist[i] < thr) chf.areas[i] = 0; - delete [] dist; + rcFree(dist); rcTimeVal endTime = rcGetPerformanceTimer(); diff --git a/Recast/Source/RecastContour.cpp b/Recast/Source/RecastContour.cpp index 632c18f5..6a58f488 100644 --- a/Recast/Source/RecastContour.cpp +++ b/Recast/Source/RecastContour.cpp @@ -23,6 +23,7 @@ #include "Recast.h" #include "RecastLog.h" #include "RecastTimer.h" +#include "RecastAlloc.h" static int getCornerHeight(int x, int y, int i, int dir, @@ -551,7 +552,7 @@ static void getClosestIndices(const int* vertsa, const int nvertsa, static bool mergeContours(rcContour& ca, rcContour& cb, int ia, int ib) { const int maxVerts = ca.nverts + cb.nverts + 2; - int* verts = new int[maxVerts*4]; + int* verts = (int*)rcAlloc(sizeof(int)*maxVerts*4, RC_ALLOC_PERM); if (!verts) return false; @@ -581,11 +582,11 @@ static bool mergeContours(rcContour& ca, rcContour& cb, int ia, int ib) nv++; } - delete [] ca.verts; + rcFree(ca.verts); ca.verts = verts; ca.nverts = nv; - delete [] cb.verts; + rcFree(cb.verts); cb.verts = 0; cb.nverts = 0; @@ -607,16 +608,16 @@ bool rcBuildContours(rcCompactHeightfield& chf, cset.ch = chf.ch; int maxContours = rcMax((int)chf.maxRegions, 8); - cset.conts = new rcContour[maxContours]; + cset.conts = (rcContour*)rcAlloc(sizeof(rcContour)*maxContours, RC_ALLOC_PERM); if (!cset.conts) return false; cset.nconts = 0; - rcScopedDelete flags = new unsigned char[chf.spanCount]; + rcScopedDelete flags = (unsigned char*)rcAlloc(sizeof(unsigned char)*chf.spanCount, RC_ALLOC_TEMP); if (!flags) { if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "rcBuildContours: Out of memory 'flags'."); + rcGetLog()->log(RC_LOG_ERROR, "rcBuildContours: Out of memory 'flags' (%d).", chf.spanCount); return false; } @@ -696,7 +697,7 @@ bool rcBuildContours(rcCompactHeightfield& chf, // This can happen when there are tiny holes in the heighfield. const int oldMax = maxContours; maxContours *= 2; - rcContour* newConts = new rcContour[maxContours]; + rcContour* newConts = (rcContour*)rcAlloc(sizeof(rcContour)*maxContours, RC_ALLOC_PERM); for (int j = 0; j < cset.nconts; ++j) { newConts[j] = cset.conts[j]; @@ -704,7 +705,7 @@ bool rcBuildContours(rcCompactHeightfield& chf, cset.conts[j].verts = 0; cset.conts[j].rverts = 0; } - delete [] cset.conts; + rcFree(cset.conts); cset.conts = newConts; if (rcGetLog()) @@ -714,11 +715,23 @@ bool rcBuildContours(rcCompactHeightfield& chf, rcContour* cont = &cset.conts[cset.nconts++]; cont->nverts = simplified.size()/4; - cont->verts = new int[cont->nverts*4]; + cont->verts = (int*)rcAlloc(sizeof(int)*cont->nverts*4, RC_ALLOC_PERM); + if (!cont->verts) + { + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "rcBuildContours: Out of memory 'verts' (%d).", cont->nverts); + return false; + } memcpy(cont->verts, &simplified[0], sizeof(int)*cont->nverts*4); cont->nrverts = verts.size()/4; - cont->rverts = new int[cont->nrverts*4]; + cont->rverts = (int*)rcAlloc(sizeof(int)*cont->nrverts*4, RC_ALLOC_PERM); + if (!cont->rverts) + { + if (rcGetLog()) + rcGetLog()->log(RC_LOG_ERROR, "rcBuildContours: Out of memory 'rverts' (%d).", cont->nrverts); + return false; + } memcpy(cont->rverts, &verts[0], sizeof(int)*cont->nrverts*4); /* cont->cx = cont->cy = cont->cz = 0; diff --git a/Recast/Source/RecastMesh.cpp b/Recast/Source/RecastMesh.cpp index 6d3ee188..6c42b01b 100644 --- a/Recast/Source/RecastMesh.cpp +++ b/Recast/Source/RecastMesh.cpp @@ -23,7 +23,7 @@ #include "Recast.h" #include "RecastLog.h" #include "RecastTimer.h" - +#include "RecastAlloc.h" struct rcEdge { @@ -39,15 +39,18 @@ static bool buildMeshAdjacency(unsigned short* polys, const int npolys, // http://www.terathon.com/code/edges.php int maxEdgeCount = npolys*vertsPerPoly; - unsigned short* firstEdge = new unsigned short[nverts + maxEdgeCount]; + unsigned short* firstEdge = (unsigned short*)rcAlloc(sizeof(unsigned short)*(nverts + maxEdgeCount), RC_ALLOC_TEMP); if (!firstEdge) return false; unsigned short* nextEdge = firstEdge + nverts; int edgeCount = 0; - rcEdge* edges = new rcEdge[maxEdgeCount]; + rcEdge* edges = (rcEdge*)rcAlloc(sizeof(rcEdge)*maxEdgeCount, RC_ALLOC_TEMP); if (!edges) + { + rcFree(firstEdge); return false; + } for (int i = 0; i < nverts; i++) firstEdge[i] = RC_MESH_NULL_IDX; @@ -112,8 +115,8 @@ static bool buildMeshAdjacency(unsigned short* polys, const int npolys, } } - delete [] firstEdge; - delete [] edges; + rcFree(firstEdge); + rcFree(edges); return true; } @@ -518,7 +521,7 @@ static int removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int ma return -1; int nedges = 0; - rcScopedDelete edges = new int[numRemovedVerts*nvp*4]; + rcScopedDelete edges = (int*)rcAlloc(sizeof(int)*numRemovedVerts*nvp*4, RC_ALLOC_TEMP); if (!edges) { if (rcGetLog()) @@ -527,7 +530,7 @@ static int removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int ma } int nhole = 0; - rcScopedDelete hole = new int[numRemovedVerts*nvp]; + rcScopedDelete hole = (int*)rcAlloc(sizeof(int)*numRemovedVerts*nvp, RC_ALLOC_TEMP); if (!hole) { if (rcGetLog()) @@ -536,7 +539,7 @@ static int removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int ma } int nhreg = 0; - rcScopedDelete hreg = new int[numRemovedVerts*nvp]; + rcScopedDelete hreg = (int*)rcAlloc(sizeof(int)*numRemovedVerts*nvp, RC_ALLOC_TEMP); if (!hreg) { if (rcGetLog()) @@ -545,7 +548,7 @@ static int removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int ma } int nharea = 0; - rcScopedDelete harea = new int[numRemovedVerts*nvp]; + rcScopedDelete harea = (int*)rcAlloc(sizeof(int)*numRemovedVerts*nvp, RC_ALLOC_TEMP); if (!harea) { if (rcGetLog()) @@ -662,7 +665,7 @@ static int removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int ma break; } - rcScopedDelete tris = new int[nhole*3]; + rcScopedDelete tris = (int*)rcAlloc(sizeof(int)*nhole*3, RC_ALLOC_TEMP); if (!tris) { if (rcGetLog()) @@ -670,7 +673,7 @@ static int removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int ma return 0; } - rcScopedDelete tverts = new int[nhole*4]; + rcScopedDelete tverts = (int*)rcAlloc(sizeof(int)*nhole*4, RC_ALLOC_TEMP); if (!tverts) { if (rcGetLog()) @@ -678,7 +681,7 @@ static int removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int ma return 0; } - rcScopedDelete thole = new int[nhole]; + rcScopedDelete thole = (int*)rcAlloc(sizeof(int)*nhole, RC_ALLOC_TEMP); if (!tverts) { if (rcGetLog()) @@ -707,21 +710,21 @@ static int removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int ma } // Merge the hole triangles back to polygons. - rcScopedDelete polys = new unsigned short[(ntris+1)*nvp]; + rcScopedDelete polys = (unsigned short*)rcAlloc(sizeof(unsigned short)*(ntris+1)*nvp, RC_ALLOC_TEMP); if (!polys) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "removeVertex: Out of memory 'polys' (%d).", (ntris+1)*nvp); return 0; } - rcScopedDelete pregs = new unsigned short[ntris]; + rcScopedDelete pregs = (unsigned short*)rcAlloc(sizeof(unsigned short)*ntris, RC_ALLOC_TEMP); if (!pregs) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "removeVertex: Out of memory 'pregs' (%d).", ntris); return 0; } - rcScopedDelete pareas = new unsigned char[ntris]; + rcScopedDelete pareas = (unsigned char*)rcAlloc(sizeof(unsigned char)*ntris, RC_ALLOC_TEMP); if (!pregs) { if (rcGetLog()) @@ -848,7 +851,7 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) return false; } - rcScopedDelete vflags = new unsigned char[maxVertices]; + rcScopedDelete vflags = (unsigned char*)rcAlloc(sizeof(unsigned char)*maxVertices, RC_ALLOC_TEMP); if (!vflags) { if (rcGetLog()) @@ -857,28 +860,28 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) } memset(vflags, 0, maxVertices); - mesh.verts = new unsigned short[maxVertices*3]; + mesh.verts = (unsigned short*)rcAlloc(sizeof(unsigned short)*maxVertices*3, RC_ALLOC_PERM); if (!mesh.verts) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'mesh.verts' (%d).", maxVertices); return false; } - mesh.polys = new unsigned short[maxTris*nvp*2*2]; + mesh.polys = (unsigned short*)rcAlloc(sizeof(unsigned short)*maxTris*nvp*2*2, RC_ALLOC_PERM); if (!mesh.polys) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'mesh.polys' (%d).", maxTris*nvp*2); return false; } - mesh.regs = new unsigned short[maxTris]; + mesh.regs = (unsigned short*)rcAlloc(sizeof(unsigned short)*maxTris, RC_ALLOC_PERM); if (!mesh.regs) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'mesh.regs' (%d).", maxTris); return false; } - mesh.areas = new unsigned char[maxTris]; + mesh.areas = (unsigned char*)rcAlloc(sizeof(unsigned char)*maxTris, RC_ALLOC_PERM); if (!mesh.areas) { if (rcGetLog()) @@ -896,7 +899,7 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) memset(mesh.regs, 0, sizeof(unsigned short)*maxTris); memset(mesh.areas, 0, sizeof(unsigned char)*maxTris); - rcScopedDelete nextVert = new int[maxVertices]; + rcScopedDelete nextVert = (int*)rcAlloc(sizeof(int)*maxVertices, RC_ALLOC_TEMP); if (!nextVert) { if (rcGetLog()) @@ -905,7 +908,7 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) } memset(nextVert, 0, sizeof(int)*maxVertices); - rcScopedDelete firstVert = new int[VERTEX_BUCKET_COUNT]; + rcScopedDelete firstVert = (int*)rcAlloc(sizeof(int)*VERTEX_BUCKET_COUNT, RC_ALLOC_TEMP); if (!firstVert) { if (rcGetLog()) @@ -915,21 +918,21 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) for (int i = 0; i < VERTEX_BUCKET_COUNT; ++i) firstVert[i] = -1; - rcScopedDelete indices = new int[maxVertsPerCont]; + rcScopedDelete indices = (int*)rcAlloc(sizeof(int)*maxVertsPerCont, RC_ALLOC_TEMP); if (!indices) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'indices' (%d).", maxVertsPerCont); return false; } - rcScopedDelete tris = new int[maxVertsPerCont*3]; + rcScopedDelete tris = (int*)rcAlloc(sizeof(int)*maxVertsPerCont*3, RC_ALLOC_TEMP); if (!tris) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'tris' (%d).", maxVertsPerCont*3); return false; } - rcScopedDelete polys = new unsigned short[(maxVertsPerCont+1)*nvp]; + rcScopedDelete polys = (unsigned short*)rcAlloc(sizeof(unsigned short)*(maxVertsPerCont+1)*nvp, RC_ALLOC_TEMP); if (!polys) { if (rcGetLog()) @@ -964,6 +967,8 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) printf("\t\t%d,%d,%d,%d,\n", v[0], v[1], v[2], v[3]); } printf("\t};\n\tconst int nverts = sizeof(verts)/(sizeof(int)*4);\n");*/ + if (rcGetLog()) + rcGetLog()->log(RC_LOG_WARNING, "rcBuildPolyMesh: Bad triangulation Contour %d.", i); ntris = -ntris; } @@ -1100,7 +1105,7 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) } // Just allocate the mesh flags array. The user is resposible to fill it. - mesh.flags = new unsigned short[mesh.npolys]; + mesh.flags = (unsigned short*)rcAlloc(sizeof(unsigned short)*mesh.npolys, RC_ALLOC_PERM); if (!mesh.flags) { if (rcGetLog()) @@ -1145,7 +1150,7 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) } mesh.nverts = 0; - mesh.verts = new unsigned short[maxVerts*3]; + mesh.verts = (unsigned short*)rcAlloc(sizeof(unsigned short)*maxVerts*3, RC_ALLOC_PERM); if (!mesh.verts) { if (rcGetLog()) @@ -1154,7 +1159,7 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) } mesh.npolys = 0; - mesh.polys = new unsigned short[maxPolys*2*mesh.nvp]; + mesh.polys = (unsigned short*)rcAlloc(sizeof(unsigned short)*maxPolys*2*mesh.nvp, RC_ALLOC_PERM); if (!mesh.polys) { if (rcGetLog()) @@ -1163,7 +1168,7 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) } memset(mesh.polys, 0xff, sizeof(unsigned short)*maxPolys*2*mesh.nvp); - mesh.regs = new unsigned short[maxPolys]; + mesh.regs = (unsigned short*)rcAlloc(sizeof(unsigned short)*maxPolys, RC_ALLOC_PERM); if (!mesh.regs) { if (rcGetLog()) @@ -1172,7 +1177,7 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) } memset(mesh.regs, 0, sizeof(unsigned short)*maxPolys); - mesh.areas = new unsigned char[maxPolys]; + mesh.areas = (unsigned char*)rcAlloc(sizeof(unsigned char)*maxPolys, RC_ALLOC_PERM); if (!mesh.areas) { if (rcGetLog()) @@ -1181,7 +1186,7 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) } memset(mesh.areas, 0, sizeof(unsigned char)*maxPolys); - mesh.flags = new unsigned short[maxPolys]; + mesh.flags = (unsigned short*)rcAlloc(sizeof(unsigned short)*maxPolys, RC_ALLOC_PERM); if (!mesh.flags) { if (rcGetLog()) @@ -1190,7 +1195,7 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) } memset(mesh.flags, 0, sizeof(unsigned short)*maxPolys); - rcScopedDelete nextVert = new int[maxVerts]; + rcScopedDelete nextVert = (int*)rcAlloc(sizeof(int)*maxVerts, RC_ALLOC_TEMP); if (!nextVert) { if (rcGetLog()) @@ -1199,7 +1204,7 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) } memset(nextVert, 0, sizeof(int)*maxVerts); - rcScopedDelete firstVert = new int[VERTEX_BUCKET_COUNT]; + rcScopedDelete firstVert = (int*)rcAlloc(sizeof(int)*VERTEX_BUCKET_COUNT, RC_ALLOC_TEMP); if (!firstVert) { if (rcGetLog()) @@ -1209,7 +1214,7 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) for (int i = 0; i < VERTEX_BUCKET_COUNT; ++i) firstVert[i] = -1; - rcScopedDelete vremap = new unsigned short[maxVertsPerMesh]; + rcScopedDelete vremap = (unsigned short*)rcAlloc(sizeof(unsigned short)*maxVertsPerMesh, RC_ALLOC_PERM); if (!vremap) { if (rcGetLog()) diff --git a/Recast/Source/RecastMeshDetail.cpp b/Recast/Source/RecastMeshDetail.cpp index 85af89ca..c776f286 100644 --- a/Recast/Source/RecastMeshDetail.cpp +++ b/Recast/Source/RecastMeshDetail.cpp @@ -25,6 +25,7 @@ #include "Recast.h" #include "RecastLog.h" #include "RecastTimer.h" +#include "RecastAlloc.h" static const unsigned RC_UNSET_HEIGHT = 0xffff; @@ -32,7 +33,7 @@ static const unsigned RC_UNSET_HEIGHT = 0xffff; struct rcHeightPatch { inline rcHeightPatch() : data(0), xmin(0), ymin(0), width(0), height(0) {} - inline ~rcHeightPatch() { delete [] data; } + inline ~rcHeightPatch() { rcFree(data); } unsigned short* data; int xmin, ymin, width, height; }; @@ -940,14 +941,14 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c int nPolyVerts = 0; int maxhw = 0, maxhh = 0; - rcScopedDelete bounds = new int[mesh.npolys*4]; + rcScopedDelete bounds = (int*)rcAlloc(sizeof(int)*mesh.npolys*4, RC_ALLOC_TEMP); if (!bounds) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMeshDetail: Out of memory 'bounds' (%d).", mesh.npolys*4); return false; } - rcScopedDelete poly = new float[nvp*3]; + rcScopedDelete poly = (float*)rcAlloc(sizeof(float)*nvp*3, RC_ALLOC_TEMP); if (!poly) { if (rcGetLog()) @@ -986,7 +987,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c maxhh = rcMax(maxhh, ymax-ymin); } - hp.data = new unsigned short[maxhw*maxhh]; + hp.data = (unsigned short*)rcAlloc(sizeof(unsigned short)*maxhw*maxhh, RC_ALLOC_TEMP); if (!hp.data) { if (rcGetLog()) @@ -997,7 +998,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c dmesh.nmeshes = mesh.npolys; dmesh.nverts = 0; dmesh.ntris = 0; - dmesh.meshes = new unsigned short[dmesh.nmeshes*4]; + dmesh.meshes = (unsigned short*)rcAlloc(sizeof(unsigned short)*dmesh.nmeshes*4, RC_ALLOC_PERM); if (!dmesh.meshes) { if (rcGetLog()) @@ -1009,7 +1010,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c int tcap = vcap*2; dmesh.nverts = 0; - dmesh.verts = new float[vcap*3]; + dmesh.verts = (float*)rcAlloc(sizeof(float)*vcap*3, RC_ALLOC_PERM); if (!dmesh.verts) { if (rcGetLog()) @@ -1017,7 +1018,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c return false; } dmesh.ntris = 0; - dmesh.tris = new unsigned char[tcap*4]; + dmesh.tris = (unsigned char*)rcAlloc(sizeof(unsigned char*)*tcap*4, RC_ALLOC_PERM); if (!dmesh.tris) { if (rcGetLog()) @@ -1087,7 +1088,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c while (dmesh.nverts+nverts > vcap) vcap += 256; - float* newv = new float[vcap*3]; + float* newv = (float*)rcAlloc(vcap*3, RC_ALLOC_PERM); if (!newv) { if (rcGetLog()) @@ -1096,7 +1097,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c } if (dmesh.nverts) memcpy(newv, dmesh.verts, sizeof(float)*3*dmesh.nverts); - delete [] dmesh.verts; + rcFree(dmesh.verts); dmesh.verts = newv; } for (int j = 0; j < nverts; ++j) @@ -1112,7 +1113,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c { while (dmesh.ntris+ntris > tcap) tcap += 256; - unsigned char* newt = new unsigned char[tcap*4]; + unsigned char* newt = (unsigned char*)rcAlloc(sizeof(unsigned char)*tcap*4, RC_ALLOC_PERM); if (!newt) { if (rcGetLog()) @@ -1121,7 +1122,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c } if (dmesh.ntris) memcpy(newt, dmesh.tris, sizeof(unsigned char)*4*dmesh.ntris); - delete [] dmesh.tris; + rcFree(dmesh.tris); dmesh.tris = newt; } for (int j = 0; j < ntris; ++j) @@ -1160,7 +1161,7 @@ bool rcMergePolyMeshDetails(rcPolyMeshDetail** meshes, const int nmeshes, rcPoly } mesh.nmeshes = 0; - mesh.meshes = new unsigned short[maxMeshes*4]; + mesh.meshes = (unsigned short*)rcAlloc(sizeof(unsigned short)*maxMeshes*4, RC_ALLOC_PERM); if (!mesh.meshes) { if (rcGetLog()) @@ -1169,7 +1170,7 @@ bool rcMergePolyMeshDetails(rcPolyMeshDetail** meshes, const int nmeshes, rcPoly } mesh.ntris = 0; - mesh.tris = new unsigned char[maxTris*4]; + mesh.tris = (unsigned char*)rcAlloc(sizeof(unsigned char)*maxTris*4, RC_ALLOC_PERM); if (!mesh.tris) { if (rcGetLog()) @@ -1178,7 +1179,7 @@ bool rcMergePolyMeshDetails(rcPolyMeshDetail** meshes, const int nmeshes, rcPoly } mesh.nverts = 0; - mesh.verts = new float[maxVerts*3]; + mesh.verts = (float*)rcAlloc(sizeof(float)*maxVerts*3, RC_ALLOC_PERM); if (!mesh.verts) { if (rcGetLog()) diff --git a/Recast/Source/RecastRasterization.cpp b/Recast/Source/RecastRasterization.cpp index 05c131f1..8c1093db 100644 --- a/Recast/Source/RecastRasterization.cpp +++ b/Recast/Source/RecastRasterization.cpp @@ -22,6 +22,7 @@ #include "Recast.h" #include "RecastTimer.h" #include "RecastLog.h" +#include "RecastAlloc.h" inline bool overlapBounds(const float* amin, const float* amax, const float* bmin, const float* bmax) { @@ -49,7 +50,7 @@ static rcSpan* allocSpan(rcHeightfield& hf) // Create new page. // Allocate memory for the new pool. const int size = (sizeof(rcSpanPool)-sizeof(rcSpan)) + sizeof(rcSpan)*RC_SPANS_PER_POOL; - rcSpanPool* pool = reinterpret_cast(new unsigned char[size]); + rcSpanPool* pool = (rcSpanPool*)rcAlloc(size, RC_ALLOC_PERM); if (!pool) return 0; pool->next = 0; // Add the pool into the list of pools. diff --git a/Recast/Source/RecastRegion.cpp b/Recast/Source/RecastRegion.cpp index 8928dc83..a3a06449 100644 --- a/Recast/Source/RecastRegion.cpp +++ b/Recast/Source/RecastRegion.cpp @@ -25,6 +25,8 @@ #include "Recast.h" #include "RecastLog.h" #include "RecastTimer.h" +#include "RecastAlloc.h" +#include static void calculateDistanceField(rcCompactHeightfield& chf, unsigned short* src, unsigned short& maxDist) @@ -694,8 +696,8 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, const int w = chf.width; const int h = chf.height; - int nreg = maxRegionId+1; - rcRegion* regions = new rcRegion[nreg]; + const int nreg = maxRegionId+1; + rcRegion* regions = new(rcAlloc(sizeof(rcRegion)*nreg, RC_ALLOC_TEMP)) rcRegion[nreg]; if (!regions) { if (rcGetLog()) @@ -877,7 +879,9 @@ static bool filterSmallRegions(int minRegionSize, int mergeRegionSize, srcReg[i] = regions[srcReg[i]].id; } - delete [] regions; + for (int i = 0; i < nreg; ++i) + regions[i].~rcRegion(); + rcFree(regions); return true; } @@ -889,29 +893,26 @@ bool rcBuildDistanceField(rcCompactHeightfield& chf) if (chf.dist) { - delete [] chf.dist; + rcFree(chf.dist); chf.dist = 0; } - unsigned short* dist0 = new unsigned short[chf.spanCount]; - if (!dist0) + unsigned short* src = (unsigned short*)rcAlloc(sizeof(unsigned short)*chf.spanCount, RC_ALLOC_TEMP); + if (!src) { if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "rcBuildDistanceField: Out of memory 'dist0' (%d).", chf.spanCount); + rcGetLog()->log(RC_LOG_ERROR, "rcBuildDistanceField: Out of memory 'src' (%d).", chf.spanCount); return false; } - unsigned short* dist1 = new unsigned short[chf.spanCount]; - if (!dist1) + unsigned short* dst = (unsigned short*)rcAlloc(sizeof(unsigned short)*chf.spanCount, RC_ALLOC_TEMP); + if (!dst) { if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "rcBuildDistanceField: Out of memory 'dist1' (%d).", chf.spanCount); - delete [] dist0; + rcGetLog()->log(RC_LOG_ERROR, "rcBuildDistanceField: Out of memory 'dst' (%d).", chf.spanCount); + rcFree(src); return false; } - unsigned short* src = dist0; - unsigned short* dst = dist1; - unsigned short maxDist = 0; rcTimeVal distStartTime = rcGetPerformanceTimer(); @@ -932,7 +933,7 @@ bool rcBuildDistanceField(rcCompactHeightfield& chf) rcTimeVal blurEndTime = rcGetPerformanceTimer(); - delete [] dst; + rcFree(dst); rcTimeVal endTime = rcGetPerformanceTimer(); @@ -991,7 +992,7 @@ bool rcBuildRegionsMonotone(rcCompactHeightfield& chf, const int h = chf.height; unsigned short id = 1; - rcScopedDelete srcReg = new unsigned short[chf.spanCount]; + rcScopedDelete srcReg = (unsigned short*)rcAlloc(sizeof(unsigned short)*chf.spanCount, RC_ALLOC_TEMP); if (!srcReg) { if (rcGetLog()) @@ -1000,11 +1001,12 @@ bool rcBuildRegionsMonotone(rcCompactHeightfield& chf, } memset(srcReg,0,sizeof(unsigned short)*chf.spanCount); - rcScopedDelete sweeps = new rcSweepSpan[rcMax(chf.width,chf.height)]; + const int nsweeps = rcMax(chf.width,chf.height); + rcScopedDelete sweeps = (rcSweepSpan*)rcAlloc(sizeof(rcSweepSpan)*nsweeps, RC_ALLOC_TEMP); if (!sweeps) { if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "rcBuildRegionsMonotone: Out of memory 'sweeps' (%d).", chf.width); + rcGetLog()->log(RC_LOG_ERROR, "rcBuildRegionsMonotone: Out of memory 'sweeps' (%d).", nsweeps); return false; } @@ -1141,8 +1143,8 @@ bool rcBuildRegions(rcCompactHeightfield& chf, const int w = chf.width; const int h = chf.height; - rcScopedDelete tmp = new unsigned short[chf.spanCount*4]; - if (!tmp) + rcScopedDelete buf = (unsigned short*)rcAlloc(sizeof(unsigned short)*chf.spanCount*4, RC_ALLOC_TEMP); + if (!buf) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "rcBuildRegions: Out of memory 'tmp' (%d).", chf.spanCount*4); @@ -1154,10 +1156,10 @@ bool rcBuildRegions(rcCompactHeightfield& chf, rcIntArray stack(1024); rcIntArray visited(1024); - unsigned short* srcReg = tmp; - unsigned short* srcDist = tmp+chf.spanCount; - unsigned short* dstReg = tmp+chf.spanCount*2; - unsigned short* dstDist = tmp+chf.spanCount*3; + unsigned short* srcReg = buf; + unsigned short* srcDist = buf+chf.spanCount; + unsigned short* dstReg = buf+chf.spanCount*2; + unsigned short* dstDist = buf+chf.spanCount*3; memset(srcReg, 0, sizeof(unsigned short)*chf.spanCount); memset(srcDist, 0, sizeof(unsigned short)*chf.spanCount); diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast index 1b3b9f3abef3cbc88e824ed5574c653e7f545ffc..b5639f85ff42f8618fde9cc4dcdf3864b22a93d8 100755 GIT binary patch delta 146071 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

axYBwB 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 delta 146983 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"; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {826, 1136}}"; + sepNavSelRange = "{922, 0}"; + sepNavVisRange = "{249, 928}"; + }; + }; + 6B98470911E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 304"; + rLen = 0; + rLoc = 6701; + rType = 0; + vrLen = 613; + vrLoc = 6434; + }; + 6B98470A11E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9846ED11E718F800FA177B /* DetourAlloc.h */; + name = "DetourAlloc.h: 1"; + rLen = 1361; + rLoc = 0; + rType = 0; + vrLen = 689; + vrLoc = 672; + }; + 6B98470B11E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9846EE11E718F800FA177B /* DetourAlloc.cpp */; + name = "DetourAlloc.cpp: 1"; + rLen = 1509; + rLoc = 0; + rType = 0; + vrLen = 1045; + vrLoc = 0; + }; + 6B98470C11E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470511E733B600FA177B /* RecastAlloc.h */; + name = "RecastAlloc.h: 33"; + rLen = 0; + rLoc = 1304; + rType = 0; + vrLen = 1031; + vrLoc = 322; + }; + 6B98470D11E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 41"; + rLen = 0; + rLoc = 1455; + rType = 0; + vrLen = 565; + vrLoc = 969; + }; + 6B98470E11E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 411"; + rLen = 0; + rLoc = 12001; + rType = 0; + vrLen = 1075; + vrLoc = 13086; + }; + 6B98470F11E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 304"; + rLen = 0; + rLoc = 6701; + rType = 0; + vrLen = 613; + vrLoc = 6434; + }; + 6B98471011E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470511E733B600FA177B /* RecastAlloc.h */; + name = "RecastAlloc.h: 1"; + rLen = 0; + rLoc = 2298; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 6B98471111E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 1"; + rLen = 0; + rLoc = 1869; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 6B98471211E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9846ED11E718F800FA177B /* DetourAlloc.h */; + name = "DetourAlloc.h: 1"; + rLen = 1361; + rLoc = 0; + rType = 0; + vrLen = 689; + vrLoc = 672; + }; + 6B98471311E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470511E733B600FA177B /* RecastAlloc.h */; + name = "RecastAlloc.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1054; + vrLoc = 0; + }; + 6B98471411E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9846EE11E718F800FA177B /* DetourAlloc.cpp */; + name = "DetourAlloc.cpp: 1"; + rLen = 1509; + rLoc = 0; + rType = 0; + vrLen = 1045; + vrLoc = 0; + }; + 6B98471511E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 22"; + rLen = 0; + rLoc = 1005; + rType = 0; + vrLen = 1134; + vrLoc = 64; + }; + 6B98471611E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470511E733B600FA177B /* RecastAlloc.h */; + name = "RecastAlloc.h: 33"; + rLen = 0; + rLoc = 1304; + rType = 0; + vrLen = 1031; + vrLoc = 322; + }; + 6B98471711E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 41"; + rLen = 0; + rLoc = 1455; + rType = 0; + vrLen = 565; + vrLoc = 969; + }; + 6B98471811E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 411"; + rLen = 0; + rLoc = 12001; + rType = 0; + vrLen = 1075; + vrLoc = 13086; + }; + 6B98471911E734A100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 68"; + rLen = 0; + rLoc = 3556; + rType = 0; + vrLen = 670; + vrLoc = 1685; + }; + 6B98471A11E734DF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 552"; + rLen = 14; + rLoc = 23131; + rType = 0; + vrLen = 1160; + vrLoc = 22056; + }; + 6B98471B11E734DF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 156"; + rLen = 66; + rLoc = 4326; + rType = 0; + vrLen = 682; + vrLoc = 3822; + }; + 6B98471C11E734DF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 41"; + rLen = 0; + rLoc = 1455; + rType = 0; + vrLen = 590; + vrLoc = 944; + }; + 6B98471D11E734DF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 69"; + rLen = 0; + rLoc = 3556; + rType = 0; + vrLen = 620; + vrLoc = 1685; + }; + 6B98471E11E734DF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 69"; + rLen = 0; + rLoc = 3556; + rType = 0; + vrLen = 636; + vrLoc = 1685; + }; + 6B98471F11E734DF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 224"; + rLen = 0; + rLoc = 5791; + rType = 0; + vrLen = 919; + vrLoc = 5296; + }; + 6B98472011E734DF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 552"; + rLen = 14; + rLoc = 23131; + rType = 0; + vrLen = 1160; + vrLoc = 22056; + }; + 6B98472111E734DF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 156"; + rLen = 66; + rLoc = 4326; + rType = 0; + vrLen = 682; + vrLoc = 3822; + }; + 6B98472211E734DF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 41"; + rLen = 0; + rLoc = 1455; + rType = 0; + vrLen = 590; + vrLoc = 944; + }; + 6B98472311E734DF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 68"; + rLen = 0; + rLoc = 3556; + rType = 0; + vrLen = 681; + vrLoc = 1685; + }; + 6B98472411E7356200FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 75"; + rLen = 0; + rLoc = 3556; + rType = 0; + vrLen = 681; + vrLoc = 1685; + }; + 6B98472511E7356200FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 75"; + rLen = 0; + rLoc = 3556; + rType = 0; + vrLen = 681; + vrLoc = 1685; + }; + 6B98472611E7356200FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 211"; + rLen = 0; + rLoc = 7304; + rType = 0; + vrLen = 878; + vrLoc = 7562; + }; + 6B98472711E735A300FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 64"; + rLen = 0; + rLoc = 2680; + rType = 0; + vrLen = 865; + vrLoc = 2453; + }; + 6B98472811E735A300FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 64"; + rLen = 0; + rLoc = 2680; + rType = 0; + vrLen = 865; + vrLoc = 2453; + }; + 6B98472911E735A300FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 65"; + rLen = 0; + rLoc = 1185; + rType = 0; + vrLen = 483; + vrLoc = 1428; + }; + 6B98472A11E7366600FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 91"; + rLen = 81; + rLoc = 3397; + rType = 0; + vrLen = 999; + vrLoc = 3193; + }; + 6B98472B11E7366600FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 71"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 403; + vrLoc = 1428; + }; + 6B98472C11E7366600FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 71"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 403; + vrLoc = 1428; + }; + 6B98472D11E7366600FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 91"; + rLen = 81; + rLoc = 3397; + rType = 0; + vrLen = 999; + vrLoc = 3193; + }; + 6B98472E11E7366600FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 84"; + rLen = 0; + rLoc = 1447; + rType = 0; + vrLen = 458; + vrLoc = 1713; + }; + 6B98472F11E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 49"; + rLen = 0; + rLoc = 1541; + rType = 0; + vrLen = 576; + vrLoc = 969; + }; + 6B98473011E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9846EE11E718F800FA177B /* DetourAlloc.cpp */; + name = "DetourAlloc.cpp: 49"; + rLen = 0; + rLoc = 1491; + rType = 0; + vrLen = 539; + vrLoc = 970; + }; + 6B98473111E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 116"; + rLen = 12; + rLoc = 4519; + rType = 0; + vrLen = 1183; + vrLoc = 4160; + }; + 6B98473211E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 91"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 743; + vrLoc = 1839; + }; + 6B98473311E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 88"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 458; + vrLoc = 1713; + }; + 6B98473411E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 103"; + rLen = 0; + rLoc = 3478; + rType = 0; + vrLen = 939; + vrLoc = 3193; + }; + 6B98473511E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 49"; + rLen = 0; + rLoc = 1541; + rType = 0; + vrLen = 576; + vrLoc = 969; + }; + 6B98473611E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9846EE11E718F800FA177B /* DetourAlloc.cpp */; + name = "DetourAlloc.cpp: 49"; + rLen = 0; + rLoc = 1491; + rType = 0; + vrLen = 539; + vrLoc = 970; + }; + 6B98473711E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 113"; + rLen = 0; + rLoc = 4180; + rType = 0; + vrLen = 1289; + vrLoc = 3698; + }; + 6B98473811E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 89"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 533; + vrLoc = 1713; + }; + 6B98473911E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 113"; + rLen = 0; + rLoc = 4180; + rType = 0; + vrLen = 1289; + vrLoc = 3698; + }; + 6B98473A11E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 86"; + rLen = 0; + rLoc = 1447; + rType = 0; + vrLen = 552; + vrLoc = 1714; + }; + 6B98473B11E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 65"; + rLen = 0; + rLoc = 2682; + rType = 0; + vrLen = 865; + vrLoc = 2500; + }; + 6B98473C11E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 88"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 710; + vrLoc = 1836; + }; + 6B98473D11E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 118"; + rLen = 0; + rLoc = 4534; + rType = 0; + vrLen = 1201; + vrLoc = 4160; + }; + 6B98473E11E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 91"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 743; + vrLoc = 1839; + }; + 6B98473F11E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 116"; + rLen = 12; + rLoc = 4519; + rType = 0; + vrLen = 1183; + vrLoc = 4160; + }; + 6B98474011E737D800FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 90"; + rLen = 0; + rLoc = 1447; + rType = 0; + vrLen = 721; + vrLoc = 2060; + }; + 6B98474111E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 169"; + rLen = 0; + rLoc = 7304; + rType = 0; + vrLen = 1047; + vrLoc = 6249; + }; + 6B98474211E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 55"; + rLen = 0; + rLoc = 1600; + rType = 0; + vrLen = 569; + vrLoc = 1280; + }; + 6B98474311E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9846ED11E718F800FA177B /* DetourAlloc.h */; + name = "DetourAlloc.h: 21"; + rLen = 1; + rLoc = 976; + rType = 0; + vrLen = 1039; + vrLoc = 322; + }; + 6B98474411E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470511E733B600FA177B /* RecastAlloc.h */; + name = "RecastAlloc.h: 37"; + rLen = 0; + rLoc = 1347; + rType = 0; + vrLen = 970; + vrLoc = 986; + }; + 6B98474511E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 34"; + rLen = 0; + rLoc = 1185; + rType = 0; + vrLen = 581; + vrLoc = 943; + }; + 6B98474611E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 104"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 626; + vrLoc = 2234; + }; + 6B98474711E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 136"; + rLen = 0; + rLoc = 5362; + rType = 0; + vrLen = 1335; + vrLoc = 4724; + }; + 6B98474811E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 105"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 768; + vrLoc = 2234; + }; + 6B98474911E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 136"; + rLen = 0; + rLoc = 5362; + rType = 0; + vrLen = 1335; + vrLoc = 4724; + }; + 6B98474A11E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 109"; + rLen = 0; + rLoc = 1447; + rType = 0; + vrLen = 839; + vrLoc = 2271; + }; + 6B98474B11E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 136"; + rLen = 0; + rLoc = 5362; + rType = 0; + vrLen = 1335; + vrLoc = 4724; + }; + 6B98474C11E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 123"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 555; + vrLoc = 2583; + }; + 6B98474D11E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 162"; + rLen = 0; + rLoc = 6534; + rType = 0; + vrLen = 1034; + vrLoc = 5893; + }; + 6B98474E11E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 131"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 630; + vrLoc = 2878; + }; + 6B98474F11E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 170"; + rLen = 0; + rLoc = 7304; + rType = 0; + vrLen = 1113; + vrLoc = 5935; + }; + 6B98475011E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 137"; + rLen = 0; + rLoc = 3124; + rType = 0; + vrLen = 666; + vrLoc = 2901; + }; + 6B98475111E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 169"; + rLen = 0; + rLoc = 7304; + rType = 0; + vrLen = 1047; + vrLoc = 6249; + }; + 6B98475211E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9846ED11E718F800FA177B /* DetourAlloc.h */; + name = "DetourAlloc.h: 53"; + rLen = 0; + rLoc = 1353; + rType = 0; + vrLen = 944; + vrLoc = 1353; + }; + 6B98475311E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 34"; + rLen = 0; + rLoc = 1185; + rType = 0; + vrLen = 581; + vrLoc = 943; + }; + 6B98475411E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 55"; + rLen = 0; + rLoc = 1600; + rType = 0; + vrLen = 569; + vrLoc = 1280; + }; + 6B98475511E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470511E733B600FA177B /* RecastAlloc.h */; + name = "RecastAlloc.h: 33"; + rLen = 0; + rLoc = 1304; + rType = 0; + vrLen = 1031; + vrLoc = 322; + }; + 6B98475611E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9846ED11E718F800FA177B /* DetourAlloc.h */; + name = "DetourAlloc.h: 21"; + rLen = 1; + rLoc = 976; + rType = 0; + vrLen = 1039; + vrLoc = 322; + }; + 6B98475711E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470511E733B600FA177B /* RecastAlloc.h */; + name = "RecastAlloc.h: 37"; + rLen = 0; + rLoc = 1347; + rType = 0; + vrLen = 970; + vrLoc = 986; + }; + 6B98475811E73ABF00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 240"; + rLen = 0; + rLoc = 6055; + rType = 0; + vrLen = 946; + vrLoc = 5296; + }; + 6B98475D11E73D0100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 358"; + rLen = 1; + rLoc = 9384; + rType = 0; + vrLen = 678; + vrLoc = 9116; + }; + 6B98475E11E73D0100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; + name = "RecastRasterization.cpp: 343"; + rLen = 1; + rLoc = 9492; + rType = 0; + vrLen = 878; + vrLoc = 9046; + }; + 6B98475F11E73D0100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C850F7FCC1100459200 /* RecastFilter.cpp */; + name = "RecastFilter.cpp: 19"; + rLen = 0; + rLoc = 949; + rType = 0; + vrLen = 852; + vrLoc = 4932; + }; + 6B98476011E73D0100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 199"; + rLen = 0; + rLoc = 5864; + rType = 0; + vrLen = 735; + vrLoc = 5416; + }; + 6B98476111E73D0100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 1172"; + rLen = 0; + rLoc = 29019; + rType = 0; + vrLen = 1195; + vrLoc = 27945; + }; + 6B98476211E73D0100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 358"; + rLen = 1; + rLoc = 9384; + rType = 0; + vrLen = 678; + vrLoc = 9116; + }; + 6B98476311E73D0100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C880F7FCC1100459200 /* RecastRasterization.cpp */; + name = "RecastRasterization.cpp: 343"; + rLen = 1; + rLoc = 9492; + rType = 0; + vrLen = 878; + vrLoc = 9046; + }; + 6B98476411E73D0100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C850F7FCC1100459200 /* RecastFilter.cpp */; + name = "RecastFilter.cpp: 19"; + rLen = 0; + rLoc = 949; + rType = 0; + vrLen = 852; + vrLoc = 4932; + }; + 6B98476511E73D0100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BF7C4531115C277002B3F46 /* RecastArea.cpp */; + name = "RecastArea.cpp: 199"; + rLen = 0; + rLoc = 5864; + rType = 0; + vrLen = 735; + vrLoc = 5416; + }; + 6B98476611E73D0100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 884"; + rLen = 0; + rLoc = 21104; + rType = 0; + vrLen = 556; + vrLoc = 20619; + }; + 6B98476B11E73EC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470511E733B600FA177B /* RecastAlloc.h */; + name = "RecastAlloc.h: 63"; + rLen = 0; + rLoc = 2236; + rType = 0; + vrLen = 944; + vrLoc = 1346; + }; + 6B98476C11E73EC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 898"; + rLen = 0; + rLoc = 21287; + rType = 0; + vrLen = 935; + vrLoc = 23518; + }; + 6B98476D11E73EC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470511E733B600FA177B /* RecastAlloc.h */; + name = "RecastAlloc.h: 63"; + rLen = 0; + rLoc = 2236; + rType = 0; + vrLen = 944; + vrLoc = 1346; + }; + 6B98476E11E73EC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 993"; + rLen = 0; + rLoc = 23933; + rType = 0; + vrLen = 935; + vrLoc = 23518; + }; + 6B98477211E7406900FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 995"; + rLen = 0; + rLoc = 23986; + rType = 0; + vrLen = 935; + vrLoc = 23518; + }; + 6B98477311E7406900FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: invalid conversion from 'int' to 'int*'"; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + rLen = 1; + rLoc = 717; + rType = 1; + }; + 6B98477411E7406900FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 998"; + rLen = 0; + rLoc = 24090; + rType = 0; + vrLen = 935; + vrLoc = 23518; + }; + 6B98477511E7406900FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 995"; + rLen = 0; + rLoc = 23986; + rType = 0; + vrLen = 935; + vrLoc = 23518; + }; + 6B98477611E7406900FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 716"; + rLen = 0; + rLoc = 18992; + rType = 0; + vrLen = 1104; + vrLoc = 18553; + }; + 6B98477711E7433F00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 716"; + rLen = 0; + rLoc = 18992; + rType = 0; + vrLen = 1104; + vrLoc = 18553; + }; + 6B98477811E7433F00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 125"; + rLen = 0; + rLoc = 3604; + rType = 0; + vrLen = 787; + vrLoc = 3208; + }; + 6B98477911E7433F00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 716"; + rLen = 0; + rLoc = 18992; + rType = 0; + vrLen = 1104; + vrLoc = 18553; + }; + 6B98477A11E7433F00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 119"; + rLen = 0; + rLoc = 3482; + rType = 0; + vrLen = 702; + vrLoc = 10039; + }; + 6B98477B11E7444F00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 863"; + rLen = 0; + rLoc = 22479; + rType = 0; + vrLen = 915; + vrLoc = 21757; + }; + 6B98477C11E745E500FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 1207"; + rLen = 0; + rLoc = 32496; + rType = 0; + vrLen = 1023; + vrLoc = 31666; + }; + 6B98478311E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 1156"; + rLen = 0; + rLoc = 30784; + rType = 0; + vrLen = 1001; + vrLoc = 30504; + }; + 6B98478411E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 40"; + rLen = 0; + rLoc = 1390; + rType = 0; + vrLen = 651; + vrLoc = 969; + }; + 6B98478511E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 35"; + rLen = 36; + rLoc = 1185; + rType = 0; + vrLen = 587; + vrLoc = 924; + }; + 6B98478611E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 170"; + rLen = 0; + rLoc = 6865; + rType = 0; + vrLen = 831; + vrLoc = 6532; + }; + 6B98478711E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 30"; + rLen = 0; + rLoc = 1172; + rType = 0; + vrLen = 681; + vrLoc = 789; + }; + 6B98478811E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 694"; + rLen = 12; + rLoc = 23249; + rType = 0; + vrLen = 2255; + vrLoc = 21083; + }; + 6B98478911E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98463111E6144400FA177B /* Sample_SoloMeshTiled.h */; + name = "Sample_SoloMeshTiled.h: 117"; + rLen = 0; + rLoc = 3122; + rType = 0; + vrLen = 707; + vrLoc = 2643; + }; + 6B98478A11E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 1172"; + rLen = 0; + rLoc = 37042; + rType = 0; + vrLen = 643; + vrLoc = 36667; + }; + 6B98478B11E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 41"; + rLen = 0; + rLoc = 1406; + rType = 0; + vrLen = 643; + vrLoc = 1143; + }; + 6B98478C11E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C870F7FCC1100459200 /* RecastMesh.cpp */; + name = "RecastMesh.cpp: 1156"; + rLen = 0; + rLoc = 30784; + rType = 0; + vrLen = 1001; + vrLoc = 30504; + }; + 6B98478D11E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 40"; + rLen = 0; + rLoc = 1390; + rType = 0; + vrLen = 651; + vrLoc = 969; + }; + 6B98478E11E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 35"; + rLen = 1940; + rLoc = 1185; + rType = 0; + vrLen = 639; + vrLoc = 2723; + }; + 6B98478F11E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 172"; + rLen = 1; + rLoc = 6902; + rType = 0; + vrLen = 912; + vrLoc = 6532; + }; + 6B98479011E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 35"; + rLen = 36; + rLoc = 1185; + rType = 0; + vrLen = 587; + vrLoc = 924; + }; + 6B98479111E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 170"; + rLen = 0; + rLoc = 6865; + rType = 0; + vrLen = 831; + vrLoc = 6532; + }; + 6B98479211E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 30"; + rLen = 0; + rLoc = 1172; + rType = 0; + vrLen = 681; + vrLoc = 789; + }; + 6B98479311E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 694"; + rLen = 12; + rLoc = 23249; + rType = 0; + vrLen = 2255; + vrLoc = 21083; + }; + 6B98479411E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98463111E6144400FA177B /* Sample_SoloMeshTiled.h */; + name = "Sample_SoloMeshTiled.h: 117"; + rLen = 0; + rLoc = 3122; + rType = 0; + vrLen = 707; + vrLoc = 2643; + }; + 6B98479511E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 1172"; + rLen = 0; + rLoc = 37042; + rType = 0; + vrLen = 643; + vrLoc = 36667; + }; + 6B98479611E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 41"; + rLen = 0; + rLoc = 1406; + rType = 0; + vrLen = 643; + vrLoc = 1143; + }; + 6B98479711E74AB100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 213"; + rLen = 0; + rLoc = 4854; + rType = 0; + vrLen = 736; + vrLoc = 6759; + }; + 6B98479911E74B4D00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 1060"; + rLen = 1; + rLoc = 30409; + rType = 0; + vrLen = 2229; + vrLoc = 28200; + }; + 6B9847A011E74BC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 1060"; + rLen = 1; + rLoc = 30409; + rType = 0; + vrLen = 2229; + vrLoc = 28200; + }; + 6B9847A111E74BC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 17"; + rLen = 0; + rLoc = 922; + rType = 0; + vrLen = 928; + vrLoc = 249; + }; + 6B9847A211E74BC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8036AC113BAABE005ED67B /* Sample_Debug.h */; + name = "Sample_Debug.h: 31"; + rLen = 5; + rLoc = 1180; + rType = 0; + vrLen = 640; + vrLoc = 1048; + }; + 6B9847A311E74BC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8036AD113BAABE005ED67B /* Sample_Debug.cpp */; + name = "Sample_Debug.cpp: 37"; + rLen = 0; + rLoc = 1297; + rType = 0; + vrLen = 548; + vrLoc = 1013; + }; + 6B9847A411E74BC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 1060"; + rLen = 1; + rLoc = 30409; + rType = 0; + vrLen = 2229; + vrLoc = 28200; + }; + 6B9847A511E74BC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470611E733CF00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 17"; + rLen = 0; + rLoc = 922; + rType = 0; + vrLen = 928; + vrLoc = 249; + }; + 6B9847A611E74BC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8036AC113BAABE005ED67B /* Sample_Debug.h */; + name = "Sample_Debug.h: 38"; + rLen = 0; + rLoc = 1296; + rType = 0; + vrLen = 640; + vrLoc = 1048; + }; + 6B9847A711E74BC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8036AD113BAABE005ED67B /* Sample_Debug.cpp */; + name = "Sample_Debug.cpp: 37"; + rLen = 0; + rLoc = 1297; + rType = 0; + vrLen = 548; + vrLoc = 1013; + }; + 6B9847A811E74BC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8036AC113BAABE005ED67B /* Sample_Debug.h */; + name = "Sample_Debug.h: 31"; + rLen = 5; + rLoc = 1180; + rType = 0; + vrLen = 640; + vrLoc = 1048; + }; + 6B9847A911E74BC100FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8036AD113BAABE005ED67B /* Sample_Debug.cpp */; + name = "Sample_Debug.cpp: 135"; + rLen = 0; + rLoc = 3400; + rType = 0; + vrLen = 358; + vrLoc = 3263; + }; + 6B9847AE11E74FAB00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8036AD113BAABE005ED67B /* Sample_Debug.cpp */; + name = "Sample_Debug.cpp: 147"; + rLen = 0; + rLoc = 3540; + rType = 0; + vrLen = 355; + vrLoc = 3263; + }; + 6B9847AF11E74FAB00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + rLen = 0; + rLoc = 66; + rType = 1; + }; + 6B9847B011E74FAB00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8036AD113BAABE005ED67B /* Sample_Debug.cpp */; + name = "Sample_Debug.cpp: 147"; + rLen = 0; + rLoc = 3540; + rType = 0; + vrLen = 355; + vrLoc = 3263; + }; + 6B9847B111E74FAB00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 106"; + rLen = 0; + rLoc = 2718; + rType = 0; + vrLen = 565; + vrLoc = 2381; + }; + 6B9847B311E74FC000FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 106"; + rLen = 0; + rLoc = 2718; + rType = 0; + vrLen = 612; + vrLoc = 2429; + }; + 6B9847B511E750E400FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 228"; + rLen = 0; + rLoc = 5616; + rType = 0; + vrLen = 515; + vrLoc = 5294; + }; + 6B9847B611E750E400FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 112"; + rLen = 0; + rLoc = 2804; + rType = 0; + vrLen = 319; + vrLoc = 2696; + }; + 6B9847B711E7519A00FA177B /* RecastAlloc.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {826, 1088}}"; + sepNavSelRange = "{1564, 0}"; + sepNavVisRange = "{1461, 408}"; + }; + }; + 6B9847B911E751AC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 102"; + rLen = 0; + rLoc = 2627; + rType = 0; + vrLen = 618; + vrLoc = 2399; + }; + 6B9847BA11E751AC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 28"; + rLen = 0; + rLoc = 1152; + rType = 0; + vrLen = 743; + vrLoc = 923; + }; + 6B9847BB11E751AC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470511E733B600FA177B /* RecastAlloc.h */; + name = "RecastAlloc.h: 48"; + rLen = 0; + rLoc = 1672; + rType = 0; + vrLen = 867; + vrLoc = 1431; + }; + 6B9847BC11E751AC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9847B711E7519A00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1067; + vrLoc = 0; + }; + 6B9847BD11E751AC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 102"; + rLen = 0; + rLoc = 2627; + rType = 0; + vrLen = 618; + vrLoc = 2399; + }; + 6B9847BE11E751AC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; + name = "Recast.cpp: 102"; + rLen = 0; + rLoc = 2627; + rType = 0; + vrLen = 618; + vrLoc = 2399; + }; + 6B9847BF11E751AC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 28"; + rLen = 0; + rLoc = 1152; + rType = 0; + vrLen = 743; + vrLoc = 923; + }; + 6B9847C011E751AC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B98470511E733B600FA177B /* RecastAlloc.h */; + name = "RecastAlloc.h: 48"; + rLen = 0; + rLoc = 1672; + rType = 0; + vrLen = 867; + vrLoc = 1431; + }; + 6B9847C111E751AC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9847B711E7519A00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 56"; + rLen = 0; + rLoc = 1615; + rType = 0; + vrLen = 408; + vrLoc = 1461; + }; + 6B9847C311E752CC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9847B711E7519A00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 51"; + rLen = 0; + rLoc = 1564; + rType = 0; + vrLen = 408; + vrLoc = 1461; + }; + 6B9847C411E752CC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 995"; + rLen = 0; + rLoc = 23986; + rType = 0; + vrLen = 831; + vrLoc = 23622; + }; + 6B9847C511E752CC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B9847B711E7519A00FA177B /* RecastAlloc.cpp */; + name = "RecastAlloc.cpp: 51"; + rLen = 0; + rLoc = 1564; + rType = 0; + vrLen = 408; + vrLoc = 1461; + }; + 6B9847C611E752CC00FA177B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C890F7FCC1100459200 /* RecastRegion.cpp */; + name = "RecastRegion.cpp: 702"; + rLen = 0; + rLoc = 16630; + rType = 0; + vrLen = 760; + vrLoc = 16253; + }; 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {887, 11536}}"; - sepNavSelRange = "{16035, 0}"; - sepNavVisRange = "{15651, 632}"; + sepNavIntBoundsRect = "{{0, 0}, {1160, 11648}}"; + sepNavSelRange = "{23249, 12}"; + sepNavVisRange = "{21083, 2255}"; }; }; 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */ = { @@ -5273,8 +7036,8 @@ 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {826, 1232}}"; - sepNavSelRange = "{1171, 0}"; - sepNavVisRange = "{789, 615}"; + sepNavSelRange = "{1172, 0}"; + sepNavVisRange = "{789, 681}"; }; }; 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */ = { @@ -5804,7 +7567,7 @@ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; name = "Sample_SoloMeshTiled.h: 92"; rLen = 0; - rLoc = 2605; + rLoc = 2690; rType = 0; vrLen = 442; vrLoc = 2379; @@ -5834,7 +7597,7 @@ fRef = 6B137C820F7FCC1100459200 /* Recast.cpp */; name = "Recast.cpp: 121"; rLen = 0; - rLoc = 3290; + rLoc = 5023; rType = 0; vrLen = 525; vrLoc = 3040; @@ -5893,7 +7656,7 @@ ignoreCount = 0; lineNumber = 582; location = Recast; - modificationTime = 300290792.873078; + modificationTime = 300371830.328957; state = 0; }; 6BBB4BBE115B64E600CF791D /* Sample_TileMesh.cpp:626 */ = { @@ -5910,7 +7673,7 @@ ignoreCount = 0; lineNumber = 626; location = Recast; - modificationTime = 300290792.873354; + modificationTime = 300371830.329693; state = 0; }; 6BBB4C34115B7A3D00CF791D /* PBXTextBookmark */ = { @@ -5961,7 +7724,7 @@ ignoreCount = 0; lineNumber = 276; location = Recast; - modificationTime = 300290792.873547; + modificationTime = 300371830.329897; state = 0; }; 6BC75E1811AF97CC00FF5E51 /* PBXTextBookmark */ = { @@ -5979,7 +7742,7 @@ fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; name = "RecastMeshDetail.cpp: 843"; rLen = 0; - rLoc = 20057; + rLoc = 20080; rType = 0; vrLen = 691; vrLoc = 19690; @@ -5989,7 +7752,7 @@ fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; name = "RecastMeshDetail.cpp: 843"; rLen = 0; - rLoc = 20057; + rLoc = 20080; rType = 0; vrLen = 691; vrLoc = 19690; @@ -6195,7 +7958,7 @@ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; name = "Sample_SoloMeshTiled.h: 58"; rLen = 18; - rLoc = 1824; + rLoc = 1909; rType = 0; vrLen = 647; vrLoc = 1710; @@ -6286,9 +8049,9 @@ }; 6BF7C4531115C277002B3F46 /* RecastArea.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {909, 5200}}"; - sepNavSelRange = "{8677, 0}"; - sepNavVisRange = "{8170, 720}"; + sepNavIntBoundsRect = "{{0, 0}, {826, 5248}}"; + sepNavSelRange = "{5864, 0}"; + sepNavVisRange = "{5416, 735}"; }; }; 8D1107260486CEB800E47090 /* Recast */ = { diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 index cd39ee66..ac47f07d 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 @@ -282,14 +282,14 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 40 - 36 + 32 + 22 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 225}, {264, 632}} + {{0, 270}, {264, 632}} PBXTopSmartGroupGIDs @@ -324,7 +324,7 @@ PBXProjectModuleGUID 6B8632A30F78115100E2684A PBXProjectModuleLabel - Sample_TileMesh.cpp + RecastRegion.cpp PBXSplitModuleInNavigatorKey Split0 @@ -332,11 +332,11 @@ PBXProjectModuleGUID 6B8632A40F78115100E2684A PBXProjectModuleLabel - Sample_TileMesh.cpp + RecastRegion.cpp _historyCapacity 0 bookmark - 6B98470311E7285500FA177B + 6B9847C611E752CC00FA177B history 6BBB4AA1115B4F3400CF791D @@ -346,9 +346,7 @@ 6BBB4AAB115B4F3400CF791D 6BBB4AB0115B4F3400CF791D 6BBB4AB2115B4F3400CF791D - 6BBB4ABB115B4F3400CF791D 6BBB4ABF115B4F3400CF791D - 6BBB4AC4115B4F3400CF791D 6BBB4B7F115B639200CF791D 6BBB4C34115B7A3D00CF791D 6BF5F27011747CFA000502A6 @@ -365,21 +363,15 @@ 6BF5F478117644A2000502A6 6BF5F5041176F5F8000502A6 6B4214D911803923006C347B - 6B555F451191AA4400843384 6B5562501193EF2F00843384 6B5562511193EF2F00843384 6B5562DF1193F2A300843384 6B5562E01193F2A300843384 6B2CDC911197F0720090FA4D - 6B2CDD23119804010090FA4D - 6B2CDD6111980E3D0090FA4D 6B2CDDC9119830560090FA4D 6B10000A11ACFFFB0098A59A 6B10011711AD19F90098A59A 6B10011911AD19F90098A59A - 6B10016C11AD1DE70098A59A - 6BC7619A11B63C7E00FF5E51 - 6B586E8211CF3E0000704B61 6B586E8311CF3E0000704B61 6B77655411E3A9490029917E 6B77655511E3A9490029917E @@ -387,24 +379,36 @@ 6B98453411E6013000FA177B 6B98462E11E6141900FA177B 6B98464311E6F9B400FA177B - 6B98464711E6F9B400FA177B - 6B98464811E6F9B400FA177B - 6B98468011E6FF2000FA177B - 6B98468911E6FFC300FA177B 6B9846A011E7140300FA177B 6B9846A111E7140300FA177B 6B9846B911E7145500FA177B - 6B9846C911E715C700FA177B - 6B9846D511E716A200FA177B - 6B9846DF11E7172B00FA177B - 6B9846F111E7282C00FA177B - 6B9846F211E7282C00FA177B 6B9846F311E7282C00FA177B - 6B9846F411E7282C00FA177B - 6B9846F511E7282C00FA177B 6B9846F611E7282C00FA177B 6B98470011E7285500FA177B - 6B98470111E7285500FA177B + 6B98471A11E734DF00FA177B + 6B98471B11E734DF00FA177B + 6B98473011E737D800FA177B + 6B98474311E73ABF00FA177B + 6B98475E11E73D0100FA177B + 6B98475F11E73D0100FA177B + 6B98476011E73D0100FA177B + 6B98477711E7433F00FA177B + 6B98478311E74AB100FA177B + 6B98478411E74AB100FA177B + 6B98478611E74AB100FA177B + 6B98478711E74AB100FA177B + 6B98478811E74AB100FA177B + 6B98478911E74AB100FA177B + 6B98478A11E74AB100FA177B + 6B98478B11E74AB100FA177B + 6B9847A011E74BC100FA177B + 6B9847A211E74BC100FA177B + 6B9847AE11E74FAB00FA177B + 6B9847B911E751AC00FA177B + 6B9847BA11E751AC00FA177B + 6B9847BB11E751AC00FA177B + 6B9847C311E752CC00FA177B + 6B9847C411E752CC00FA177B prevStack @@ -455,9 +459,7 @@ 6B5562681193EF2F00843384 6B5562FD1193F50A00843384 6B2CDD181197FE370090FA4D - 6B2CDD3511980B820090FA4D 6B2CDD71119810560090FA4D - 6B2CDD98119818F90090FA4D 6B57E94D11A7646800614060 6B10005C11AD08FA0098A59A 6B10011E11AD19F90098A59A @@ -567,14 +569,11 @@ 6B98465211E6F9B400FA177B 6B98465311E6F9B400FA177B 6B98465411E6F9B400FA177B - 6B98465511E6F9B400FA177B 6B98465611E6F9B400FA177B 6B98465711E6F9B400FA177B - 6B98465811E6F9B400FA177B 6B98465911E6F9B400FA177B 6B98465A11E6F9B400FA177B 6B98465B11E6F9B400FA177B - 6B98465C11E6F9B400FA177B 6B98465D11E6F9B400FA177B 6B98465E11E6F9B400FA177B 6B98465F11E6F9B400FA177B @@ -630,6 +629,77 @@ 6B9846FC11E7282C00FA177B 6B9846FD11E7282C00FA177B 6B98470211E7285500FA177B + 6B98470F11E734A100FA177B + 6B98471011E734A100FA177B + 6B98471211E734A100FA177B + 6B98471311E734A100FA177B + 6B98471411E734A100FA177B + 6B98471611E734A100FA177B + 6B98471811E734A100FA177B + 6B98471E11E734DF00FA177B + 6B98471F11E734DF00FA177B + 6B98472011E734DF00FA177B + 6B98472111E734DF00FA177B + 6B98472511E7356200FA177B + 6B98472811E735A300FA177B + 6B98472C11E7366600FA177B + 6B98472D11E7366600FA177B + 6B98473311E737D800FA177B + 6B98473411E737D800FA177B + 6B98473611E737D800FA177B + 6B98473711E737D800FA177B + 6B98473811E737D800FA177B + 6B98473911E737D800FA177B + 6B98473A11E737D800FA177B + 6B98473B11E737D800FA177B + 6B98473C11E737D800FA177B + 6B98473D11E737D800FA177B + 6B98473E11E737D800FA177B + 6B98473F11E737D800FA177B + 6B98474611E73ABF00FA177B + 6B98474711E73ABF00FA177B + 6B98474811E73ABF00FA177B + 6B98474911E73ABF00FA177B + 6B98474A11E73ABF00FA177B + 6B98474B11E73ABF00FA177B + 6B98474C11E73ABF00FA177B + 6B98474D11E73ABF00FA177B + 6B98474E11E73ABF00FA177B + 6B98474F11E73ABF00FA177B + 6B98475011E73ABF00FA177B + 6B98475111E73ABF00FA177B + 6B98475211E73ABF00FA177B + 6B98475311E73ABF00FA177B + 6B98475511E73ABF00FA177B + 6B98475611E73ABF00FA177B + 6B98475711E73ABF00FA177B + 6B98476211E73D0100FA177B + 6B98476311E73D0100FA177B + 6B98476411E73D0100FA177B + 6B98476511E73D0100FA177B + 6B98477411E7406900FA177B + 6B98477911E7433F00FA177B + 6B98478C11E74AB100FA177B + 6B98478D11E74AB100FA177B + 6B98478E11E74AB100FA177B + 6B98478F11E74AB100FA177B + 6B98479011E74AB100FA177B + 6B98479111E74AB100FA177B + 6B98479211E74AB100FA177B + 6B98479311E74AB100FA177B + 6B98479411E74AB100FA177B + 6B98479511E74AB100FA177B + 6B98479611E74AB100FA177B + 6B9847A411E74BC100FA177B + 6B9847A611E74BC100FA177B + 6B9847A711E74BC100FA177B + 6B9847A811E74BC100FA177B + 6B9847B011E74FAB00FA177B + 6B9847BD11E751AC00FA177B + 6B9847BE11E751AC00FA177B + 6B9847BF11E751AC00FA177B + 6B9847C011E751AC00FA177B + 6B9847C511E752CC00FA177B SplitCount @@ -643,18 +713,18 @@ GeometryConfiguration Frame - {{0, 0}, {887, 408}} + {{0, 0}, {887, 441}} RubberWindowFrame 33 87 1173 691 0 0 1280 778 Module PBXNavigatorGroup Proportion - 408pt + 441pt Proportion - 237pt + 204pt Tabs @@ -684,9 +754,7 @@ GeometryConfiguration Frame - {{10, 27}, {887, 210}} - RubberWindowFrame - 33 87 1173 691 0 0 1280 778 + {{10, 27}, {887, 110}} Module PBXProjectFindModule @@ -724,7 +792,9 @@ GeometryConfiguration Frame - {{10, 27}, {887, 83}} + {{10, 27}, {887, 177}} + RubberWindowFrame + 33 87 1173 691 0 0 1280 778 Module PBXBuildResultsModule @@ -807,12 +877,12 @@ GeometryConfiguration Frame - {{0, 0}, {1173, 157}} + {{0, 0}, {1173, 331}} Module PBXDebugCLIModule Proportion - 157pt + 331pt ContentConfiguration @@ -831,8 +901,8 @@ yes sizes - {{0, 0}, {537, 135}} - {{537, 0}, {636, 135}} + {{0, 0}, {537, 86}} + {{537, 0}, {636, 86}} VerticalSplitView @@ -847,8 +917,8 @@ yes sizes - {{0, 0}, {1173, 135}} - {{0, 135}, {1173, 360}} + {{0, 0}, {1173, 86}} + {{0, 86}, {1173, 228}} @@ -868,7 +938,7 @@ DebugSTDIOWindowFrame {{200, 200}, {500, 300}} Frame - {{0, 162}, {1173, 495}} + {{0, 336}, {1173, 314}} PBXDebugSessionStackFrameViewKey DebugVariablesTableConfiguration @@ -881,13 +951,13 @@ 343 Frame - {{537, 0}, {636, 135}} + {{537, 0}, {636, 86}} Module PBXDebugSessionModule Proportion - 495pt + 314pt Name diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj index 5de77bf0..1c73cf3f 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj @@ -35,6 +35,7 @@ 6B8DE88A10B69E3E00DF20FB /* DetourNavMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; }; 6B98463311E6144400FA177B /* Sample_SoloMeshTiled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */; }; 6B9846EF11E718F800FA177B /* DetourAlloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B9846EE11E718F800FA177B /* DetourAlloc.cpp */; }; + 6B9847B811E7519A00FA177B /* RecastAlloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B9847B711E7519A00FA177B /* RecastAlloc.cpp */; }; 6BA1E88B10C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; }; 6BB788170FC0472B003C24DB /* ChunkyTriMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; }; 6BB7FC0B10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; }; @@ -105,6 +106,8 @@ 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_SoloMeshTiled.cpp; path = ../../Source/Sample_SoloMeshTiled.cpp; sourceTree = SOURCE_ROOT; }; 6B9846ED11E718F800FA177B /* DetourAlloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourAlloc.h; path = ../../../Detour/Include/DetourAlloc.h; sourceTree = SOURCE_ROOT; }; 6B9846EE11E718F800FA177B /* DetourAlloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourAlloc.cpp; path = ../../../Detour/Source/DetourAlloc.cpp; sourceTree = SOURCE_ROOT; }; + 6B98470511E733B600FA177B /* RecastAlloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RecastAlloc.h; path = ../../../Recast/Include/RecastAlloc.h; sourceTree = SOURCE_ROOT; }; + 6B9847B711E7519A00FA177B /* RecastAlloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RecastAlloc.cpp; path = ../../../Recast/Source/RecastAlloc.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; }; 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_SoloMeshSimple.h; path = ../../Include/Sample_SoloMeshSimple.h; sourceTree = SOURCE_ROOT; }; 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ChunkyTriMesh.cpp; path = ../../Source/ChunkyTriMesh.cpp; sourceTree = SOURCE_ROOT; }; @@ -266,6 +269,8 @@ 6B137C830F7FCC1100459200 /* RecastContour.cpp */, 6B137C870F7FCC1100459200 /* RecastMesh.cpp */, 6B624169103434880002E346 /* RecastMeshDetail.cpp */, + 6B98470511E733B600FA177B /* RecastAlloc.h */, + 6B9847B711E7519A00FA177B /* RecastAlloc.cpp */, ); name = Recast; sourceTree = ""; @@ -425,6 +430,7 @@ 6BF5F2401174763B000502A6 /* SlideShow.cpp in Sources */, 6B98463311E6144400FA177B /* Sample_SoloMeshTiled.cpp in Sources */, 6B9846EF11E718F800FA177B /* DetourAlloc.cpp in Sources */, + 6B9847B811E7519A00FA177B /* RecastAlloc.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/RecastDemo/Include/Sample_SoloMeshTiled.h b/RecastDemo/Include/Sample_SoloMeshTiled.h index 3842df80..28a839c8 100644 --- a/RecastDemo/Include/Sample_SoloMeshTiled.h +++ b/RecastDemo/Include/Sample_SoloMeshTiled.h @@ -31,7 +31,14 @@ protected: struct Tile { inline Tile() : chf(0), solid(0), cset(0), pmesh(0), dmesh(0), buildTime(0) {} - inline ~Tile() { delete chf; delete cset; delete solid; delete pmesh; delete dmesh; } + inline ~Tile() + { + rcFreeCompactHeightfield(chf); + rcFreeContourSet(cset); + rcFreeHeightField(solid); + rcFreePolyMesh(pmesh); + rcFreePolyMeshDetail(dmesh); + } int x, y; rcCompactHeightfield* chf; rcHeightfield* solid; diff --git a/RecastDemo/Source/Sample_Debug.cpp b/RecastDemo/Source/Sample_Debug.cpp index 30401e85..b89be494 100644 --- a/RecastDemo/Source/Sample_Debug.cpp +++ b/RecastDemo/Source/Sample_Debug.cpp @@ -57,7 +57,7 @@ Sample_Debug::Sample_Debug() : resetCommonSettings(); // Test -/* m_chf = new rcCompactHeightfield; +/* m_chf = rcAllocCompactHeightfield(); FileIO io; if (!io.openForRead("test.chf")) { @@ -137,8 +137,8 @@ Sample_Debug::Sample_Debug() : Sample_Debug::~Sample_Debug() { - delete m_chf; - delete m_cset; + rcFreeCompactHeightfield(m_chf); + rcFreeContourSet(m_cset); } void Sample_Debug::handleSettings() @@ -320,7 +320,7 @@ bool Sample_Debug::handleBuild() m_cset = 0; // Create contours. - m_cset = new rcContourSet; + m_cset = rcAllocContourSet(); if (!m_cset) { if (rcGetLog()) diff --git a/RecastDemo/Source/Sample_SoloMeshSimple.cpp b/RecastDemo/Source/Sample_SoloMeshSimple.cpp index 14dcea71..7062e34d 100644 --- a/RecastDemo/Source/Sample_SoloMeshSimple.cpp +++ b/RecastDemo/Source/Sample_SoloMeshSimple.cpp @@ -65,17 +65,16 @@ void Sample_SoloMeshSimple::cleanup() { delete [] m_triflags; m_triflags = 0; - delete m_solid; + rcFreeHeightField(m_solid); m_solid = 0; - delete m_chf; + rcFreeCompactHeightfield(m_chf); m_chf = 0; - delete m_cset; + rcFreeContourSet(m_cset); m_cset = 0; - delete m_pmesh; + rcFreePolyMesh(m_pmesh); m_pmesh = 0; - delete m_dmesh; + rcFreePolyMeshDetail(m_dmesh); m_dmesh = 0; - dtFreeNavMesh(m_navMesh); m_navMesh = 0; } @@ -394,7 +393,7 @@ bool Sample_SoloMeshSimple::handleBuild() // // Allocate voxel heighfield where we rasterize our input data to. - m_solid = new rcHeightfield; + m_solid = rcAllocHeightfield(); if (!m_solid) { if (rcGetLog()) @@ -451,7 +450,7 @@ bool Sample_SoloMeshSimple::handleBuild() // 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; + m_chf = rcAllocCompactHeightfield(); if (!m_chf) { if (rcGetLog()) @@ -467,7 +466,7 @@ bool Sample_SoloMeshSimple::handleBuild() if (!m_keepInterResults) { - delete m_solid; + rcFreeHeightField(m_solid); m_solid = 0; } @@ -504,7 +503,7 @@ bool Sample_SoloMeshSimple::handleBuild() // // Create contours. - m_cset = new rcContourSet; + m_cset = rcAllocContourSet(); if (!m_cset) { if (rcGetLog()) @@ -523,7 +522,7 @@ bool Sample_SoloMeshSimple::handleBuild() // // Build polygon navmesh from the contours. - m_pmesh = new rcPolyMesh; + m_pmesh = rcAllocPolyMesh(); if (!m_pmesh) { if (rcGetLog()) @@ -541,7 +540,7 @@ bool Sample_SoloMeshSimple::handleBuild() // Step 7. Create detail mesh which allows to access approximate height on each polygon. // - m_dmesh = new rcPolyMeshDetail; + m_dmesh = rcAllocPolyMeshDetail(); if (!m_dmesh) { if (rcGetLog()) @@ -557,9 +556,9 @@ bool Sample_SoloMeshSimple::handleBuild() if (!m_keepInterResults) { - delete m_chf; + rcFreeCompactHeightfield(m_chf); m_chf = 0; - delete m_cset; + rcFreeContourSet(m_cset); m_cset = 0; } diff --git a/RecastDemo/Source/Sample_SoloMeshTiled.cpp b/RecastDemo/Source/Sample_SoloMeshTiled.cpp index 2282b069..07447424 100644 --- a/RecastDemo/Source/Sample_SoloMeshTiled.cpp +++ b/RecastDemo/Source/Sample_SoloMeshTiled.cpp @@ -153,9 +153,9 @@ void Sample_SoloMeshTiled::cleanup() { delete m_tileSet; m_tileSet = 0; - delete m_pmesh; + rcFreePolyMesh(m_pmesh); m_pmesh = 0; - delete m_dmesh; + rcFreePolyMeshDetail(m_dmesh); m_dmesh = 0; dtFreeNavMesh(m_navMesh); m_navMesh = 0; @@ -810,7 +810,7 @@ bool Sample_SoloMeshTiled::handleBuild() if (!ncid) continue; - tile.solid = new rcHeightfield; + tile.solid = rcAllocHeightfield(); if (!tile.solid) { if (rcGetLog()) @@ -841,7 +841,7 @@ bool Sample_SoloMeshTiled::handleBuild() rcFilterLedgeSpans(tileCfg.walkableHeight, tileCfg.walkableClimb, *tile.solid); rcFilterWalkableLowHeightSpans(tileCfg.walkableHeight, *tile.solid); - tile.chf = new rcCompactHeightfield; + tile.chf = rcAllocCompactHeightfield(); if (!tile.chf) { if (rcGetLog()) @@ -883,7 +883,7 @@ bool Sample_SoloMeshTiled::handleBuild() continue; } - tile.cset = new rcContourSet; + tile.cset = rcAllocContourSet(); if (!tile.cset) { if (rcGetLog()) @@ -897,7 +897,7 @@ bool Sample_SoloMeshTiled::handleBuild() continue; } - tile.pmesh = new rcPolyMesh; + tile.pmesh = rcAllocPolyMesh(); if (!tile.pmesh) { if (rcGetLog()) @@ -911,7 +911,7 @@ bool Sample_SoloMeshTiled::handleBuild() continue; } - tile.dmesh = new rcPolyMeshDetail; + tile.dmesh = rcAllocPolyMeshDetail(); if (!tile.dmesh) { if (rcGetLog()) @@ -928,11 +928,11 @@ bool Sample_SoloMeshTiled::handleBuild() if (!m_keepInterResults) { - delete tile.solid; + rcFreeHeightField(tile.solid); tile.solid = 0; - delete tile.chf; + rcFreeCompactHeightfield(tile.chf); tile.chf = 0; - delete tile.cset; + rcFreeContourSet(tile.cset); tile.cset = 0; } @@ -993,7 +993,7 @@ bool Sample_SoloMeshTiled::handleBuild() } } - m_pmesh = new rcPolyMesh; + m_pmesh = rcAllocPolyMesh(); if (!m_pmesh) { if (rcGetLog()) @@ -1002,7 +1002,7 @@ bool Sample_SoloMeshTiled::handleBuild() } rcMergePolyMeshes(pmmerge, nmerge, *m_pmesh); - m_dmesh = new rcPolyMeshDetail; + m_dmesh = rcAllocPolyMeshDetail(); if (!m_dmesh) { if (rcGetLog()) @@ -1021,11 +1021,11 @@ bool Sample_SoloMeshTiled::handleBuild() for (int x = 0; x < m_tileSet->width; ++x) { Tile& tile = m_tileSet->tiles[x + y*m_tileSet->width]; - delete tile.cset; + rcFreeContourSet(tile.cset); tile.cset = 0; - delete tile.pmesh; + rcFreePolyMesh(tile.pmesh); tile.pmesh = 0; - delete tile.dmesh; + rcFreePolyMeshDetail(tile.dmesh); tile.dmesh = 0; } } diff --git a/RecastDemo/Source/Sample_TileMesh.cpp b/RecastDemo/Source/Sample_TileMesh.cpp index 2ede88d5..5e88820e 100644 --- a/RecastDemo/Source/Sample_TileMesh.cpp +++ b/RecastDemo/Source/Sample_TileMesh.cpp @@ -202,15 +202,15 @@ void Sample_TileMesh::cleanup() { delete [] m_triflags; m_triflags = 0; - delete m_solid; + rcFreeHeightField(m_solid); m_solid = 0; - delete m_chf; + rcFreeCompactHeightfield(m_chf); m_chf = 0; - delete m_cset; + rcFreeContourSet(m_cset); m_cset = 0; - delete m_pmesh; + rcFreePolyMesh(m_pmesh); m_pmesh = 0; - delete m_dmesh; + rcFreePolyMeshDetail(m_dmesh); m_dmesh = 0; } @@ -750,7 +750,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const int tx, const int ty, const } // Allocate voxel heighfield where we rasterize our input data to. - m_solid = new rcHeightfield; + m_solid = rcAllocHeightfield(); if (!m_solid) { if (rcGetLog()) @@ -819,7 +819,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const int tx, const int ty, const // 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; + m_chf = rcAllocCompactHeightfield(); if (!m_chf) { if (rcGetLog()) @@ -835,7 +835,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const int tx, const int ty, const if (!m_keepInterResults) { - delete m_solid; + rcFreeHeightField(m_solid); m_solid = 0; } @@ -869,7 +869,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const int tx, const int ty, const } // Create contours. - m_cset = new rcContourSet; + m_cset = rcAllocContourSet(); if (!m_cset) { if (rcGetLog()) @@ -889,7 +889,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const int tx, const int ty, const } // Build polygon navmesh from the contours. - m_pmesh = new rcPolyMesh; + m_pmesh = rcAllocPolyMesh(); if (!m_pmesh) { if (rcGetLog()) @@ -904,7 +904,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const int tx, const int ty, const } // Build detail mesh. - m_dmesh = new rcPolyMeshDetail; + m_dmesh = rcAllocPolyMeshDetail(); if (!m_dmesh) { if (rcGetLog()) @@ -923,9 +923,9 @@ unsigned char* Sample_TileMesh::buildTileMesh(const int tx, const int ty, const if (!m_keepInterResults) { - delete m_chf; + rcFreeCompactHeightfield(m_chf); m_chf = 0; - delete m_cset; + rcFreeContourSet(m_cset); m_cset = 0; }