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