Issue 61: take 2, missing files.
This commit is contained in:
parent
9bb95ef45b
commit
193f44a388
@ -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)
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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);
|
||||||
|
@ -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], ¶ms->detailVerts[(vb+nv)*3], sizeof(float)*3*(ndv-nv));
|
memcpy(&navDVerts[vbase*3], ¶ms->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 = ¶ms->offMeshConVerts[i*2*3];
|
const float* endPts = ¶ms->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;
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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];
|
||||||
|
@ -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
|
||||||
|
@ -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++;
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user