Issue 61: take 2, missing files.

This commit is contained in:
Mikko Mononen 2010-04-13 10:58:18 +00:00
parent 9bb95ef45b
commit 193f44a388
12 changed files with 69 additions and 76 deletions

View File

@ -55,9 +55,9 @@ struct duDebugDraw
virtual void end() = 0; virtual void end() = 0;
}; };
inline unsigned int duRGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a) inline unsigned int duRGBA(int r, int g, int b, int a)
{ {
return (r) | (g << 8) | (b << 16) | (a << 24); return ((unsigned int)r) | ((unsigned int)g << 8) | ((unsigned int)b << 16) | ((unsigned int)a << 24);
} }
inline unsigned int duRGBAf(float fr, float fg, float fb, float fa) inline unsigned int duRGBAf(float fr, float fg, float fb, float fa)

View File

@ -327,7 +327,7 @@ void duDebugDrawNavMesh(duDebugDraw* dd, const dtNavMesh* mesh, unsigned char fl
} }
static void drawMeshTileBVTree(duDebugDraw* dd, const dtNavMesh* mesh, const dtMeshTile* tile) static void drawMeshTileBVTree(duDebugDraw* dd, const dtMeshTile* tile)
{ {
// Draw BV nodes. // Draw BV nodes.
const float cs = 1.0f / tile->header->bvQuantFactor; const float cs = 1.0f / tile->header->bvQuantFactor;
@ -437,7 +437,7 @@ void duDebugDrawNavMeshBVTree(duDebugDraw* dd, const dtNavMesh* mesh)
{ {
const dtMeshTile* tile = mesh->getTile(i); const dtMeshTile* tile = mesh->getTile(i);
if (!tile->header) continue; if (!tile->header) continue;
drawMeshTileBVTree(dd, mesh, tile); drawMeshTileBVTree(dd, tile);
} }
} }

View File

@ -22,7 +22,7 @@
#include "RecastDebugDraw.h" #include "RecastDebugDraw.h"
#include "Recast.h" #include "Recast.h"
void duDebugDrawTriMesh(duDebugDraw* dd, const float* verts, int nverts, void duDebugDrawTriMesh(duDebugDraw* dd, const float* verts, int /*nverts*/,
const int* tris, const float* normals, int ntris, const int* tris, const float* normals, int ntris,
const unsigned char* flags) const unsigned char* flags)
{ {
@ -43,7 +43,7 @@ void duDebugDrawTriMesh(duDebugDraw* dd, const float* verts, int nverts,
dd->end(); dd->end();
} }
void duDebugDrawTriMeshSlope(duDebugDraw* dd, const float* verts, int nverts, void duDebugDrawTriMeshSlope(duDebugDraw* dd, const float* verts, int /*nverts*/,
const int* tris, const float* normals, int ntris, const int* tris, const float* normals, int ntris,
const float walkableSlopeAngle) const float walkableSlopeAngle)
{ {

View File

@ -401,12 +401,12 @@ void dtNavMesh::connectExtOffMeshLinks(dtMeshTile* tile, dtMeshTile* target, int
unsigned int idx = allocLink(tile); unsigned int idx = allocLink(tile);
if (idx != DT_NULL_LINK) if (idx != DT_NULL_LINK)
{ {
unsigned short landPolyIdx = decodePolyIdPoly(ref); const unsigned short landPolyIdx = (unsigned short)decodePolyIdPoly(ref);
dtPoly* landPoly = &tile->polys[landPolyIdx]; dtPoly* landPoly = &tile->polys[landPolyIdx];
dtLink* link = &tile->links[idx]; dtLink* link = &tile->links[idx];
link->ref = getTilePolyRefBase(target) | (unsigned int)(targetCon->poly); link->ref = getTilePolyRefBase(target) | (unsigned int)(targetCon->poly);
link->edge = 0; link->edge = 0;
link->side = side; link->side = (unsigned char)side;
link->bmin = link->bmax = 0; link->bmin = link->bmax = 0;
// Add to linked list. // Add to linked list.
link->next = landPoly->firstLink; link->next = landPoly->firstLink;
@ -509,7 +509,7 @@ void dtNavMesh::connectIntOffMeshLinks(dtMeshTile* tile)
unsigned int idx = allocLink(tile); unsigned int idx = allocLink(tile);
if (idx != DT_NULL_LINK) if (idx != DT_NULL_LINK)
{ {
unsigned short landPolyIdx = decodePolyIdPoly(ref); const unsigned short landPolyIdx = (unsigned short)decodePolyIdPoly(ref);
dtPoly* landPoly = &tile->polys[landPolyIdx]; dtPoly* landPoly = &tile->polys[landPolyIdx];
dtLink* link = &tile->links[idx]; dtLink* link = &tile->links[idx];
link->ref = base | (unsigned int)(con->poly); link->ref = base | (unsigned int)(con->poly);

View File

@ -67,7 +67,7 @@ static int compareItemZ(const void* va, const void* vb)
return 0; return 0;
} }
static void calcExtends(BVItem* items, int nitems, int imin, int imax, static void calcExtends(BVItem* items, const int /*nitems*/, const int imin, const int imax,
unsigned short* bmin, unsigned short* bmax) unsigned short* bmin, unsigned short* bmax)
{ {
bmin[0] = items[imin].bmin[0]; bmin[0] = items[imin].bmin[0];
@ -166,10 +166,10 @@ static void subdivide(BVItem* items, int nitems, int imin, int imax, int& curNod
} }
} }
static int createBVTree(const unsigned short* verts, const int nverts, static int createBVTree(const unsigned short* verts, const int /*nverts*/,
const unsigned short* polys, const int npolys, const int nvp, const unsigned short* polys, const int npolys, const int nvp,
float cs, float ch, const float cs, const float ch,
int nnodes, dtBVNode* nodes) const int /*nnodes*/, dtBVNode* nodes)
{ {
// Build tree // Build tree
BVItem* items = new BVItem[npolys]; BVItem* items = new BVItem[npolys];
@ -490,14 +490,14 @@ bool dtCreateNavMeshData(dtNavMeshCreateParams* params, unsigned char** outData,
const int ndv = params->detailMeshes[i*4+1]; const int ndv = params->detailMeshes[i*4+1];
const int nv = navPolys[i].vertCount; const int nv = navPolys[i].vertCount;
dtl.vertBase = vbase; dtl.vertBase = vbase;
dtl.vertCount = ndv-nv; dtl.vertCount = (unsigned short)(ndv-nv);
dtl.triBase = params->detailMeshes[i*4+2]; dtl.triBase = params->detailMeshes[i*4+2];
dtl.triCount = params->detailMeshes[i*4+3]; dtl.triCount = params->detailMeshes[i*4+3];
// Copy vertices except the first 'nv' verts which are equal to nav poly verts. // Copy vertices except the first 'nv' verts which are equal to nav poly verts.
if (ndv-nv) if (ndv-nv)
{ {
memcpy(&navDVerts[vbase*3], &params->detailVerts[(vb+nv)*3], sizeof(float)*3*(ndv-nv)); memcpy(&navDVerts[vbase*3], &params->detailVerts[(vb+nv)*3], sizeof(float)*3*(ndv-nv));
vbase += ndv-nv; vbase += (unsigned short)(ndv-nv);
} }
} }
// Store triangles. // Store triangles.
@ -516,7 +516,7 @@ bool dtCreateNavMeshData(dtNavMeshCreateParams* params, unsigned char** outData,
if (offMeshConClass[i*2+0] == 0xff) if (offMeshConClass[i*2+0] == 0xff)
{ {
dtOffMeshConnection* con = &offMeshCons[n]; dtOffMeshConnection* con = &offMeshCons[n];
con->poly = offMeshPolyBase + n; con->poly = (unsigned short)(offMeshPolyBase + n);
// Copy connection end-points. // Copy connection end-points.
const float* endPts = &params->offMeshConVerts[i*2*3]; const float* endPts = &params->offMeshConVerts[i*2*3];
vcopy(&con->pos[0], &endPts[0]); vcopy(&con->pos[0], &endPts[0]);
@ -576,7 +576,7 @@ inline void swapEndian(float* v)
swapByte(x+0, x+3); swapByte(x+1, x+2); swapByte(x+0, x+3); swapByte(x+1, x+2);
} }
bool dtNavMeshHeaderSwapEndian(unsigned char* data, const int dataSize) bool dtNavMeshHeaderSwapEndian(unsigned char* data, const int /*dataSize*/)
{ {
dtMeshHeader* header = (dtMeshHeader*)data; dtMeshHeader* header = (dtMeshHeader*)data;
@ -621,7 +621,7 @@ bool dtNavMeshHeaderSwapEndian(unsigned char* data, const int dataSize)
return true; return true;
} }
bool dtNavMeshDataSwapEndian(unsigned char* data, const int dataSize) bool dtNavMeshDataSwapEndian(unsigned char* data, const int /*dataSize*/)
{ {
// Make sure the data is in right format. // Make sure the data is in right format.
dtMeshHeader* header = (dtMeshHeader*)data; dtMeshHeader* header = (dtMeshHeader*)data;

View File

@ -460,8 +460,8 @@ void rcRasterizeTriangle(const float* v0, const float* v1, const float* v2,
// nt - (in) triangle count // nt - (in) triangle count
// solid - (in) heighfield where the triangles are rasterized // solid - (in) heighfield where the triangles are rasterized
// flagMergeThr - (in) distance in voxel where walkable flag is favored over non-walkable. // flagMergeThr - (in) distance in voxel where walkable flag is favored over non-walkable.
void rcRasterizeTriangles(const float* verts, int nv, void rcRasterizeTriangles(const float* verts, const int nv,
const int* tris, const unsigned char* flags, int nt, const int* tris, const unsigned char* flags, const int nt,
rcHeightfield& solid, const int flagMergeThr = 1); rcHeightfield& solid, const int flagMergeThr = 1);
// Rasterizes indexed triangle mesh into heightfield spans. // Rasterizes indexed triangle mesh into heightfield spans.
@ -473,8 +473,8 @@ void rcRasterizeTriangles(const float* verts, int nv,
// nt - (in) triangle count // nt - (in) triangle count
// solid - (in) heighfield where the triangles are rasterized // solid - (in) heighfield where the triangles are rasterized
// flagMergeThr - (in) distance in voxel where walkable flag is favored over non-walkable. // flagMergeThr - (in) distance in voxel where walkable flag is favored over non-walkable.
void rcRasterizeTriangles(const float* verts, int nv, void rcRasterizeTriangles(const float* verts, const int nv,
const unsigned short* tris, const unsigned char* flags, int nt, const unsigned short* tris, const unsigned char* flags, const int nt,
rcHeightfield& solid, const int flagMergeThr = 1); rcHeightfield& solid, const int flagMergeThr = 1);
// Rasterizes the triangles into heightfield spans. // Rasterizes the triangles into heightfield spans.
@ -483,7 +483,7 @@ void rcRasterizeTriangles(const float* verts, int nv,
// flags - (in) array of triangle flags (uses WALKABLE) // flags - (in) array of triangle flags (uses WALKABLE)
// nt - (in) triangle count // nt - (in) triangle count
// solid - (in) heighfield where the triangles are rasterized // solid - (in) heighfield where the triangles are rasterized
void rcRasterizeTriangles(const float* verts, const unsigned char* flags, int nt, void rcRasterizeTriangles(const float* verts, const unsigned char* flags, const int nt,
rcHeightfield& solid, const int flagMergeThr = 1); rcHeightfield& solid, const int flagMergeThr = 1);
// Marks non-walkable low obstacles as walkable if they are closer than walkableClimb // Marks non-walkable low obstacles as walkable if they are closer than walkableClimb

View File

@ -87,7 +87,7 @@ static void calcTriNormal(const float* v0, const float* v1, const float* v2, flo
} }
void rcMarkWalkableTriangles(const float walkableSlopeAngle, void rcMarkWalkableTriangles(const float walkableSlopeAngle,
const float* verts, int nv, const float* verts, int /*nv*/,
const int* tris, int nt, const int* tris, int nt,
unsigned char* flags) unsigned char* flags)
{ {

View File

@ -183,9 +183,9 @@ static void walkContour(int x, int y, int i,
} }
} }
static float distancePtSeg(int x, int y, int z, static float distancePtSeg(const int x, const int z,
int px, int py, int pz, const int px, const int pz,
int qx, int qy, int qz) const int qx, const int qz)
{ {
/* float pqx = (float)(qx - px); /* float pqx = (float)(qx - px);
float pqy = (float)(qy - py); float pqy = (float)(qy - py);
@ -309,15 +309,13 @@ static void simplifyContour(rcIntArray& points, rcIntArray& simplified, float ma
{ {
int ii = (i+1) % (simplified.size()/4); int ii = (i+1) % (simplified.size()/4);
int ax = simplified[i*4+0]; const int ax = simplified[i*4+0];
int ay = simplified[i*4+1]; const int az = simplified[i*4+2];
int az = simplified[i*4+2]; const int ai = simplified[i*4+3];
int ai = simplified[i*4+3];
int bx = simplified[ii*4+0]; const int bx = simplified[ii*4+0];
int by = simplified[ii*4+1]; const int bz = simplified[ii*4+2];
int bz = simplified[ii*4+2]; const int bi = simplified[ii*4+3];
int bi = simplified[ii*4+3];
// Find maximum deviation from the segment. // Find maximum deviation from the segment.
float maxd = 0; float maxd = 0;
@ -346,8 +344,7 @@ static void simplifyContour(rcIntArray& points, rcIntArray& simplified, float ma
{ {
while (ci != endi) while (ci != endi)
{ {
float d = distancePtSeg(points[ci*4+0], points[ci*4+1]/4, points[ci*4+2], float d = distancePtSeg(points[ci*4+0], points[ci*4+2], ax, az, bx, bz);
ax, ay/4, az, bx, by/4, bz);
if (d > maxd) if (d > maxd)
{ {
maxd = d; maxd = d;
@ -364,7 +361,7 @@ static void simplifyContour(rcIntArray& points, rcIntArray& simplified, float ma
{ {
// Add space for the new point. // Add space for the new point.
simplified.resize(simplified.size()+4); simplified.resize(simplified.size()+4);
int n = simplified.size()/4; const int n = simplified.size()/4;
for (int j = n-1; j > i; --j) for (int j = n-1; j > i; --j)
{ {
simplified[j*4+0] = simplified[(j-1)*4+0]; simplified[j*4+0] = simplified[(j-1)*4+0];
@ -389,15 +386,15 @@ static void simplifyContour(rcIntArray& points, rcIntArray& simplified, float ma
{ {
for (int i = 0; i < simplified.size()/4; ) for (int i = 0; i < simplified.size()/4; )
{ {
int ii = (i+1) % (simplified.size()/4); const int ii = (i+1) % (simplified.size()/4);
int ax = simplified[i*4+0]; const int ax = simplified[i*4+0];
int az = simplified[i*4+2]; const int az = simplified[i*4+2];
int ai = simplified[i*4+3]; const int ai = simplified[i*4+3];
int bx = simplified[ii*4+0]; const int bx = simplified[ii*4+0];
int bz = simplified[ii*4+2]; const int bz = simplified[ii*4+2];
int bi = simplified[ii*4+3]; const int bi = simplified[ii*4+3];
// Find maximum deviation from the segment. // Find maximum deviation from the segment.
int maxi = -1; int maxi = -1;
@ -421,7 +418,7 @@ static void simplifyContour(rcIntArray& points, rcIntArray& simplified, float ma
{ {
// Add space for the new point. // Add space for the new point.
simplified.resize(simplified.size()+4); simplified.resize(simplified.size()+4);
int n = simplified.size()/4; const int n = simplified.size()/4;
for (int j = n-1; j > i; --j) for (int j = n-1; j > i; --j)
{ {
simplified[j*4+0] = simplified[(j-1)*4+0]; simplified[j*4+0] = simplified[(j-1)*4+0];

View File

@ -70,7 +70,7 @@ static bool buildMeshAdjacency(unsigned short* polys, const int npolys,
edge.polyEdge[1] = 0; edge.polyEdge[1] = 0;
// Insert edge // Insert edge
nextEdge[edgeCount] = firstEdge[v0]; nextEdge[edgeCount] = firstEdge[v0];
firstEdge[v0] = edgeCount; firstEdge[v0] = (unsigned short)edgeCount;
edgeCount++; edgeCount++;
} }
} }
@ -130,8 +130,8 @@ inline int computeVertexHash(int x, int y, int z)
return (int)(n & (VERTEX_BUCKET_COUNT-1)); return (int)(n & (VERTEX_BUCKET_COUNT-1));
} }
static int addVertex(unsigned short x, unsigned short y, unsigned short z, static unsigned short addVertex(unsigned short x, unsigned short y, unsigned short z,
unsigned short* verts, int* firstVert, int* nextVert, int& nv) unsigned short* verts, int* firstVert, int* nextVert, int& nv)
{ {
int bucket = computeVertexHash(x, 0, z); int bucket = computeVertexHash(x, 0, z);
int i = firstVert[bucket]; int i = firstVert[bucket];
@ -140,7 +140,7 @@ static int addVertex(unsigned short x, unsigned short y, unsigned short z,
{ {
const unsigned short* v = &verts[i*3]; const unsigned short* v = &verts[i*3];
if (v[0] == x && (rcAbs(v[1] - y) <= 2) && v[2] == z) if (v[0] == x && (rcAbs(v[1] - y) <= 2) && v[2] == z)
return i; return (unsigned short)i;
i = nextVert[i]; // next i = nextVert[i]; // next
} }
@ -153,7 +153,7 @@ static int addVertex(unsigned short x, unsigned short y, unsigned short z,
nextVert[i] = firstVert[bucket]; nextVert[i] = firstVert[bucket];
firstVert[bucket] = i; firstVert[bucket] = i;
return i; return (unsigned short)i;
} }
inline int prev(int i, int n) { return i-1 >= 0 ? i-1 : n-1; } inline int prev(int i, int n) { return i-1 >= 0 ? i-1 : n-1; }
@ -748,7 +748,7 @@ static int removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int ma
// Merge polygons. // Merge polygons.
if (nvp > 3) if (nvp > 3)
{ {
while (true) for (;;)
{ {
// Find best polygons to merge. // Find best polygons to merge.
int bestMergeVal = 0; int bestMergeVal = 0;
@ -996,7 +996,7 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh)
// Merge polygons. // Merge polygons.
if (nvp > 3) if (nvp > 3)
{ {
while (true) for(;;)
{ {
// Find best polygons to merge. // Find best polygons to merge.
int bestMergeVal = 0; int bestMergeVal = 0;
@ -1063,7 +1063,7 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh)
{ {
if (vflags[i]) if (vflags[i])
{ {
int res = removeVertex(mesh, i, maxTris); int res = removeVertex(mesh, (unsigned short)i, maxTris);
if (!res) if (!res)
{ {
// Failed to remove vertex // Failed to remove vertex

View File

@ -160,7 +160,7 @@ static float distancePtSeg2d(const float* pt, const float* p, const float* q)
return dx*dx + dz*dz; return dx*dx + dz*dz;
} }
static float distToTriMesh(const float* p, const float* verts, int nverts, const int* tris, int ntris) static float distToTriMesh(const float* p, const float* verts, const int /*nverts*/, const int* tris, const int ntris)
{ {
float dmin = FLT_MAX; float dmin = FLT_MAX;
for (int i = 0; i < ntris; ++i) for (int i = 0; i < ntris; ++i)
@ -194,7 +194,9 @@ static float distToPoly(int nvert, const float* verts, const float* p)
} }
static unsigned short getHeight(const float fx, const float fy, const float fz, const float cs, const float ics, const float ch, const rcHeightPatch& hp) static unsigned short getHeight(const float fx, const float fy, const float fz,
const float /*cs*/, const float ics, const float ch,
const rcHeightPatch& hp)
{ {
int ix = (int)floorf(fx*ics + 0.01f); int ix = (int)floorf(fx*ics + 0.01f);
int iz = (int)floorf(fz*ics + 0.01f); int iz = (int)floorf(fz*ics + 0.01f);
@ -1070,9 +1072,9 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c
// Store detail submesh. // Store detail submesh.
const int ntris = tris.size()/4; const int ntris = tris.size()/4;
dmesh.meshes[i*4+0] = dmesh.nverts; dmesh.meshes[i*4+0] = (unsigned short)dmesh.nverts;
dmesh.meshes[i*4+1] = (unsigned short)nverts; dmesh.meshes[i*4+1] = (unsigned short)nverts;
dmesh.meshes[i*4+2] = dmesh.ntris; dmesh.meshes[i*4+2] = (unsigned short)dmesh.ntris;
dmesh.meshes[i*4+3] = (unsigned short)ntris; dmesh.meshes[i*4+3] = (unsigned short)ntris;
// Store vertices, allocate more memory if necessary. // Store vertices, allocate more memory if necessary.
@ -1189,9 +1191,9 @@ bool rcMergePolyMeshDetails(rcPolyMeshDetail** meshes, const int nmeshes, rcPoly
{ {
unsigned short* dst = &mesh.meshes[mesh.nmeshes*4]; unsigned short* dst = &mesh.meshes[mesh.nmeshes*4];
unsigned short* src = &dm->meshes[j*4]; unsigned short* src = &dm->meshes[j*4];
dst[0] = mesh.nverts+src[0]; dst[0] = (unsigned short)mesh.nverts+src[0];
dst[1] = src[1]; dst[1] = src[1];
dst[2] = mesh.ntris+src[2]; dst[2] = (unsigned short)mesh.ntris+src[2];
dst[3] = src[3]; dst[3] = src[3];
mesh.nmeshes++; mesh.nmeshes++;
} }

View File

@ -284,8 +284,8 @@ void rcRasterizeTriangle(const float* v0, const float* v1, const float* v2,
rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime); rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime);
} }
void rcRasterizeTriangles(const float* verts, int nv, void rcRasterizeTriangles(const float* verts, const int /*nv*/,
const int* tris, const unsigned char* flags, int nt, const int* tris, const unsigned char* flags, const int nt,
rcHeightfield& solid, const int flagMergeThr) rcHeightfield& solid, const int flagMergeThr)
{ {
rcTimeVal startTime = rcGetPerformanceTimer(); rcTimeVal startTime = rcGetPerformanceTimer();
@ -308,8 +308,8 @@ void rcRasterizeTriangles(const float* verts, int nv,
rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime); rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime);
} }
void rcRasterizeTriangles(const float* verts, int nv, void rcRasterizeTriangles(const float* verts, const int /*nv*/,
const unsigned short* tris, const unsigned char* flags, int nt, const unsigned short* tris, const unsigned char* flags, const int nt,
rcHeightfield& solid, const int flagMergeThr) rcHeightfield& solid, const int flagMergeThr)
{ {
rcTimeVal startTime = rcGetPerformanceTimer(); rcTimeVal startTime = rcGetPerformanceTimer();
@ -332,7 +332,7 @@ void rcRasterizeTriangles(const float* verts, int nv,
rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime); rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime);
} }
void rcRasterizeTriangles(const float* verts, const unsigned char* flags, int nt, void rcRasterizeTriangles(const float* verts, const unsigned char* flags, const int nt,
rcHeightfield& solid, const int flagMergeThr) rcHeightfield& solid, const int flagMergeThr)
{ {
rcTimeVal startTime = rcGetPerformanceTimer(); rcTimeVal startTime = rcGetPerformanceTimer();

View File

@ -27,9 +27,7 @@
#include "RecastTimer.h" #include "RecastTimer.h"
static unsigned short* calculateDistanceField(rcCompactHeightfield& chf, static void calculateDistanceField(rcCompactHeightfield& chf, unsigned short* src, unsigned short& maxDist)
unsigned short* src, unsigned short* dst,
unsigned short& maxDist)
{ {
const int w = chf.width; const int w = chf.width;
const int h = chf.height; const int h = chf.height;
@ -180,8 +178,6 @@ static unsigned short* calculateDistanceField(rcCompactHeightfield& chf,
for (int i = 0; i < chf.spanCount; ++i) for (int i = 0; i < chf.spanCount; ++i)
maxDist = rcMax(src[i], maxDist); maxDist = rcMax(src[i], maxDist);
return src;
} }
static unsigned short* boxBlur(rcCompactHeightfield& chf, int thr, static unsigned short* boxBlur(rcCompactHeightfield& chf, int thr,
@ -200,14 +196,14 @@ static unsigned short* boxBlur(rcCompactHeightfield& chf, int thr,
for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i) for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i)
{ {
const rcCompactSpan& s = chf.spans[i]; const rcCompactSpan& s = chf.spans[i];
int cd = (int)src[i]; const unsigned short cd = src[i];
if (cd <= thr) if (cd <= thr)
{ {
dst[i] = cd; dst[i] = cd;
continue; continue;
} }
int d = cd; int d = (int)cd;
for (int dir = 0; dir < 4; ++dir) for (int dir = 0; dir < 4; ++dir)
{ {
if (rcGetCon(s, dir) != RC_NOT_CONNECTED) if (rcGetCon(s, dir) != RC_NOT_CONNECTED)
@ -508,7 +504,7 @@ static bool canMergeWithRegion(const rcRegion& rega, const rcRegion& regb)
return true; return true;
} }
static void addUniqueFloorRegion(rcRegion& reg, unsigned short n) static void addUniqueFloorRegion(rcRegion& reg, int n)
{ {
for (int i = 0; i < reg.floors.size(); ++i) for (int i = 0; i < reg.floors.size(); ++i)
if (reg.floors[i] == n) if (reg.floors[i] == n)
@ -920,9 +916,7 @@ bool rcBuildDistanceField(rcCompactHeightfield& chf)
rcTimeVal distStartTime = rcGetPerformanceTimer(); rcTimeVal distStartTime = rcGetPerformanceTimer();
if (calculateDistanceField(chf, src, dst, maxDist) != src) calculateDistanceField(chf, src, maxDist);
rcSwap(src, dst);
chf.maxDistance = maxDist; chf.maxDistance = maxDist;
rcTimeVal distEndTime = rcGetPerformanceTimer(); rcTimeVal distEndTime = rcGetPerformanceTimer();