Added lean heighfield to store minimal, easy to compress representation of the heightfield. Added temporary obstacle demo.

This commit is contained in:
Mikko Mononen
2011-01-14 10:55:37 +00:00
parent ebd5358010
commit 2f47c29336
34 changed files with 12011 additions and 35 deletions

View File

@@ -863,16 +863,27 @@ bool Sample_SoloMeshTiled::handleBuild()
for (int i = 0; i < m_geom->getConvexVolumeCount(); ++i)
rcMarkConvexPolyArea(m_ctx, vols[i].verts, vols[i].nverts, vols[i].hmin, vols[i].hmax, (unsigned char)vols[i].area, *tile.chf);
if (!rcBuildDistanceField(m_ctx, *tile.chf))
if (m_monotonePartitioning)
{
m_ctx->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build distance fields.", x, y);
continue;
if (!rcBuildRegionsMonotone(m_ctx, *tile.chf, tileCfg.borderSize, tileCfg.minRegionArea, tileCfg.mergeRegionArea))
{
m_ctx->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build regions.", x, y);
continue;
}
}
if (!rcBuildRegions(m_ctx, *tile.chf, tileCfg.borderSize, tileCfg.minRegionArea, tileCfg.mergeRegionArea))
else
{
m_ctx->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build regions.", x, y);
continue;
if (!rcBuildDistanceField(m_ctx, *tile.chf))
{
m_ctx->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build distance fields.", x, y);
continue;
}
if (!rcBuildRegions(m_ctx, *tile.chf, tileCfg.borderSize, tileCfg.minRegionArea, tileCfg.mergeRegionArea))
{
m_ctx->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build regions.", x, y);
continue;
}
}
tile.cset = rcAllocContourSet();