diff --git a/Recast/Include/Recast.h b/Recast/Include/Recast.h index cf6479e..bca9687 100644 --- a/Recast/Include/Recast.h +++ b/Recast/Include/Recast.h @@ -407,7 +407,6 @@ void rcRasterizeTriangle(const float* v0, const float* v1, const float* v2, // verts - (in) array of vertices // nv - (in) vertex count // tris - (in) array of triangle vertex indices -// norms - (in) array of triangle normals // flags - (in) array of triangle flags (uses WALKABLE) // nt - (in) triangle count // solid - (in) heighfield where the triangles are rasterized @@ -415,6 +414,27 @@ void rcRasterizeTriangles(const float* verts, int nv, const int* tris, const unsigned char* flags, int nt, rcHeightfield& solid); +// Rasterizes the triangles into heightfield spans. +// Params: +// verts - (in) array of vertices +// nv - (in) vertex count +// tris - (in) array of triangle vertex indices +// flags - (in) array of triangle flags (uses WALKABLE) +// nt - (in) triangle count +// solid - (in) heighfield where the triangles are rasterized +void rcRasterizeTriangles(const float* verts, int nv, + const unsigned short* tris, const unsigned char* flags, int nt, + rcHeightfield& solid); + +// Rasterizes the triangles into heightfield spans. +// Params: +// verts - (in) array of vertices +// flags - (in) array of triangle flags (uses WALKABLE) +// nt - (in) triangle count +// solid - (in) heighfield where the triangles are rasterized +void rcRasterizeTriangles(const float* verts, const unsigned char* flags, int nt, + rcHeightfield& solid); + // Removes WALKABLE flag from all spans that are at ledges. This filtering // removes possible overestimation of the conservative voxelization so that // the resulting mesh will not have regions hanging in air over ledges. diff --git a/Recast/Source/RecastRasterization.cpp b/Recast/Source/RecastRasterization.cpp index 7f63074..a845696 100644 --- a/Recast/Source/RecastRasterization.cpp +++ b/Recast/Source/RecastRasterization.cpp @@ -282,7 +282,7 @@ void rcRasterizeTriangle(const float* v0, const float* v1, const float* v2, if (rcGetBuildTimes()) rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime); } - + void rcRasterizeTriangles(const float* verts, int nv, const int* tris, const unsigned char* flags, int nt, rcHeightfield& solid) @@ -306,3 +306,50 @@ void rcRasterizeTriangles(const float* verts, int nv, if (rcGetBuildTimes()) rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime); } + +void rcRasterizeTriangles(const float* verts, int nv, + const unsigned short* tris, const unsigned char* flags, int nt, + rcHeightfield& solid) +{ + rcTimeVal startTime = rcGetPerformanceTimer(); + + const float ics = 1.0f/solid.cs; + const float ich = 1.0f/solid.ch; + // Rasterize triangles. + for (int i = 0; i < nt; ++i) + { + const float* v0 = &verts[tris[i*3+0]*3]; + const float* v1 = &verts[tris[i*3+1]*3]; + const float* v2 = &verts[tris[i*3+2]*3]; + // Rasterize. + rasterizeTri(v0, v1, v2, flags[i], solid, solid.bmin, solid.bmax, solid.cs, ics, ich); + } + + rcTimeVal endTime = rcGetPerformanceTimer(); + + if (rcGetBuildTimes()) + rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime); +} + +void rcRasterizeTriangles(const float* verts, const unsigned char* flags, int nt, + rcHeightfield& solid) +{ + rcTimeVal startTime = rcGetPerformanceTimer(); + + const float ics = 1.0f/solid.cs; + const float ich = 1.0f/solid.ch; + // Rasterize triangles. + for (int i = 0; i < nt; ++i) + { + const float* v0 = &verts[(i*3+0)*3]; + const float* v1 = &verts[(i*3+1)*3]; + const float* v2 = &verts[(i*3+2)*3]; + // Rasterize. + rasterizeTri(v0, v1, v2, flags[i], solid, solid.bmin, solid.bmax, solid.cs, ics, ich); + } + + rcTimeVal endTime = rcGetPerformanceTimer(); + + if (rcGetBuildTimes()) + rcGetBuildTimes()->rasterizeTriangles += rcGetDeltaTimeUsec(startTime, endTime); +} diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast index b594e44..1294592 100755 Binary files a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast and b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast differ