1
This commit is contained in:
parent
8f0a1bfc5a
commit
8229584cbe
@ -43,6 +43,9 @@ static const int EXPECTED_LAYERS_PER_TILE = 4;
|
|||||||
|
|
||||||
static const int MAX_LAYERS = 32;
|
static const int MAX_LAYERS = 32;
|
||||||
|
|
||||||
|
static const int kMaxTiles = 0;
|
||||||
|
static const int kMaxPolysPerTile = 0;
|
||||||
|
|
||||||
/// Mask of the ceil part of the area id (3 lower bits)
|
/// Mask of the ceil part of the area id (3 lower bits)
|
||||||
/// the 0 value (RC_NULL_AREA) is left unused
|
/// the 0 value (RC_NULL_AREA) is left unused
|
||||||
static const unsigned char SAMPLE_POLYAREA_TYPE_MASK = 0x07;
|
static const unsigned char SAMPLE_POLYAREA_TYPE_MASK = 0x07;
|
||||||
@ -92,6 +95,23 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const int MAX_CONVEXVOL_PTS = 12;
|
||||||
|
struct ConvexVolume
|
||||||
|
{
|
||||||
|
ConvexVolume(): areaMod(RC_AREA_FLAGS_MASK) {}
|
||||||
|
float verts[MAX_CONVEXVOL_PTS*3];
|
||||||
|
float hmin, hmax;
|
||||||
|
int nverts;
|
||||||
|
rcAreaModification areaMod;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int calcLayerBufferSize(const int gridWidth, const int gridHeight)
|
||||||
|
{
|
||||||
|
const int headerSize = dtAlign4(sizeof(dtTileCacheLayerHeader));
|
||||||
|
const int gridSize = gridWidth * gridHeight;
|
||||||
|
return headerSize + gridSize*4;
|
||||||
|
}
|
||||||
|
|
||||||
inline bool checkOverlapRect(const float amin[2], const float amax[2],
|
inline bool checkOverlapRect(const float amin[2], const float amax[2],
|
||||||
const float bmin[2], const float bmax[2])
|
const float bmin[2], const float bmax[2])
|
||||||
{
|
{
|
||||||
@ -313,10 +333,8 @@ dtNavMesh* NavMeshBuilder::Build(MapInstance* map_instance)
|
|||||||
rcVcopy(params.orig, builder_params.bmin);
|
rcVcopy(params.orig, builder_params.bmin);
|
||||||
params.tileWidth = kTileSize * builder_params.kCellSize;
|
params.tileWidth = kTileSize * builder_params.kCellSize;
|
||||||
params.tileHeight = kTileSize * builder_params.kCellSize;
|
params.tileHeight = kTileSize * builder_params.kCellSize;
|
||||||
#if 0
|
|
||||||
params.maxTiles = kMaxTiles;
|
params.maxTiles = kMaxTiles;
|
||||||
params.maxPolys = kMaxPolysPerTile;
|
params.maxPolys = kMaxPolysPerTile;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dtNavMesh* navmesh = dtAllocNavMesh();
|
dtNavMesh* navmesh = dtAllocNavMesh();
|
||||||
@ -351,9 +369,8 @@ dtNavMesh* NavMeshBuilder::Build(MapInstance* map_instance)
|
|||||||
|
|
||||||
m_cacheLayerCount++;
|
m_cacheLayerCount++;
|
||||||
m_cacheCompressedSize += tile->dataSize;
|
m_cacheCompressedSize += tile->dataSize;
|
||||||
#if 0
|
m_cacheRawSize += calcLayerBufferSize(builder_params.tcparams.width,
|
||||||
m_cacheRawSize += calcLayerBufferSize(tcparams.width, tcparams.height);
|
builder_params.tcparams.height);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -365,10 +382,10 @@ dtNavMesh* NavMeshBuilder::Build(MapInstance* map_instance)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
m_cacheBuildTimeMs = m_ctx->getAccumulatedTime(RC_TIMER_TOTAL)/1000.0f;
|
m_cacheBuildTimeMs = ctx->getAccumulatedTime(RC_TIMER_TOTAL)/1000.0f;
|
||||||
m_cacheBuildMemUsage = m_talloc->high;
|
m_cacheBuildMemUsage = builder_params.talloc->high;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const dtNavMesh* nav = navmesh;
|
const dtNavMesh* nav = navmesh;
|
||||||
int navmeshMemUsage = 0;
|
int navmeshMemUsage = 0;
|
||||||
@ -648,15 +665,18 @@ int NavMeshBuilder::RasterizeTileLayers(const int tx, const int ty,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
// (Optional) Mark areas.
|
// (Optional) Mark areas.
|
||||||
|
#if 1
|
||||||
|
const ConvexVolume* vols = nullptr;
|
||||||
|
int vol_count = 0;
|
||||||
|
#else
|
||||||
const ConvexVolume* vols = m_geom->getConvexVolumes();
|
const ConvexVolume* vols = m_geom->getConvexVolumes();
|
||||||
for (int i = 0; i < m_geom->getConvexVolumeCount(); ++i) {
|
#endif
|
||||||
rcMarkConvexPolyArea(m_ctx, vols[i].verts, vols[i].nverts,
|
for (int i = 0; i < vol_count; ++i) {
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
rc.lset = rcAllocHeightfieldLayerSet();
|
rc.lset = rcAllocHeightfieldLayerSet();
|
||||||
if (!rc.lset) {
|
if (!rc.lset) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user