1
This commit is contained in:
parent
72b2c19a55
commit
f53ce64d02
@ -97,11 +97,12 @@ void NavMeshBuilder::BuildTiles(BuilderParams& builder_params)
|
||||
rcVcopy(cfg.bmin, builder_params.gemo->GetMeshBoundsMin());
|
||||
rcVcopy(cfg.bmax, builder_params.gemo->GetMeshBoundsMax());
|
||||
}
|
||||
|
||||
for (int y = 0; y < builder_params.tile_height; ++y) {
|
||||
for (int x = 0; x < builder_params.tile_width; ++x) {
|
||||
TileCacheData tiles[MAX_LAYERS];
|
||||
memset(tiles, 0, sizeof(tiles));
|
||||
int ntiles = RasterizeTileLayers(x, y, cfg, tiles, MAX_LAYERS);
|
||||
int ntiles = RasterizeTileLayers(builder_params, x, y, cfg, tiles, MAX_LAYERS);
|
||||
|
||||
for (int i = 0; i < ntiles; ++i) {
|
||||
TileCacheData* tile = &tiles[i];
|
||||
@ -126,37 +127,24 @@ void NavMeshBuilder::BuildTiles(BuilderParams& builder_params)
|
||||
}
|
||||
}
|
||||
|
||||
int NavMeshBuilder::RasterizeTileLayers(const int tx,
|
||||
int NavMeshBuilder::RasterizeTileLayers(BuilderParams& builder_params,
|
||||
const int tx,
|
||||
const int ty,
|
||||
const rcConfig& cfg,
|
||||
TileCacheData* tiles,
|
||||
const int maxTiles)
|
||||
{
|
||||
#if 0
|
||||
if (!m_geom || !m_geom->getMesh() || !m_geom->getChunkyMesh())
|
||||
{
|
||||
m_ctx->log(RC_LOG_ERROR, "buildTile: Input mesh is not specified.");
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
rcContext* ctx = nullptr;
|
||||
rcAreaModification SAMPLE_AREAMOD_GROUND(SAMPLE_POLYAREA_TYPE_GROUND, SAMPLE_POLYAREA_TYPE_MASK);
|
||||
#endif
|
||||
|
||||
FastLZCompressor comp;
|
||||
RasterizationContext rc;
|
||||
|
||||
#if 1
|
||||
const float* verts = nullptr;
|
||||
const int nverts = 0;
|
||||
const rcChunkyTriMesh* chunkyMesh = nullptr;
|
||||
#else
|
||||
const float* verts = m_geom->getMesh()->getVerts();
|
||||
const int nverts = m_geom->getMesh()->getVertCount();
|
||||
const rcChunkyTriMesh* chunkyMesh = m_geom->getChunkyMesh();
|
||||
rcContext* ctx = nullptr;
|
||||
#endif
|
||||
const float* verts = builder_params.gemo->GetVerts();
|
||||
const int nverts = builder_params.gemo->GetVertCount();
|
||||
const rcChunkyTriMesh* chunkyMesh = builder_params.gemo->GetChunkyMesh();
|
||||
|
||||
// Tile bounds.
|
||||
const float tcs = cfg.tileSize * cfg.cs;
|
||||
@ -248,13 +236,8 @@ int NavMeshBuilder::RasterizeTileLayers(const int tx,
|
||||
}
|
||||
|
||||
// (Optional) Mark areas.
|
||||
#if 1
|
||||
const ConvexVolume* vols = nullptr;
|
||||
int vol_count = 0;
|
||||
#else
|
||||
const ConvexVolume* vols = m_geom->getConvexVolumes();
|
||||
#endif
|
||||
for (int i = 0; i < vol_count; ++i) {
|
||||
const ConvexVolume* vols = builder_params.gemo->GetConvexVolumes();
|
||||
for (int i = 0; i < builder_params.gemo->GetConvexVolumeCount(); ++i) {
|
||||
rcMarkConvexPolyArea(ctx, vols[i].verts, vols[i].nverts,
|
||||
vols[i].hmin, vols[i].hmax,
|
||||
vols[i].areaMod, *rc.chf);
|
||||
|
@ -24,7 +24,8 @@ public:
|
||||
void InitTileCacheParams(BuilderParams& builder_params, dtTileCacheParams& tcparams);
|
||||
void InitNavMeshParams(BuilderParams& builder_params, dtNavMeshParams& params);
|
||||
void BuildTiles(BuilderParams& builder_params);
|
||||
int RasterizeTileLayers(const int tx,
|
||||
int RasterizeTileLayers(BuilderParams& builder_params,
|
||||
const int tx,
|
||||
const int ty,
|
||||
const rcConfig& cfg,
|
||||
TileCacheData* tiles,
|
||||
|
@ -258,6 +258,11 @@ class InputGeom
|
||||
public:
|
||||
const float* GetMeshBoundsMin() const { return nullptr; }
|
||||
const float* GetMeshBoundsMax() const { return nullptr; }
|
||||
const float* GetVerts() const { return nullptr; }
|
||||
int GetVertCount() const { return 0; }
|
||||
const rcChunkyTriMesh* GetChunkyMesh() { return nullptr; }
|
||||
const ConvexVolume* GetConvexVolumes() { return nullptr; }
|
||||
int GetConvexVolumeCount() { return 0; }
|
||||
};
|
||||
|
||||
struct BuilderParams
|
||||
|
Loading…
x
Reference in New Issue
Block a user