diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp index 3d912e5151..34a691c288 100644 --- a/src/tools/mmaps_generator/MapBuilder.cpp +++ b/src/tools/mmaps_generator/MapBuilder.cpp @@ -64,6 +64,8 @@ namespace MMAP m_skipBattlegrounds (skipBattlegrounds), m_maxWalkableAngle (maxWalkableAngle), m_bigBaseUnit (bigBaseUnit), + m_totalTiles (0u), + m_totalTilesProcessed(0u), m_rcContext (NULL), _cancelationToken (false) { @@ -71,10 +73,6 @@ namespace MMAP m_rcContext = new rcContext(false); - // percentageDone - Initializing - m_totalTiles = 0; - m_totalTilesBuilt = 0; - discoverTiles(); } @@ -155,8 +153,7 @@ namespace MMAP } printf("found %u.\n\n", count); - // percentageDone - total tiles to process - m_totalTiles = count; + m_totalTiles.store(count, std::memory_order_relaxed); } /**************************************************************************/ @@ -391,7 +388,8 @@ namespace MMAP // add all tiles within bounds to tile list. for (uint32 i = minX; i <= maxX; ++i) for (uint32 j = minY; j <= maxY; ++j) - tiles->insert(StaticMapTree::packTileID(i, j)); + if (tiles->insert(StaticMapTree::packTileID(i, j)).second) + ++m_totalTiles; } if (!tiles->empty()) @@ -402,6 +400,7 @@ namespace MMAP if (!navMesh) { printf("[Map %03i] Failed creating navmesh!\n", mapID); + m_totalTilesProcessed += tiles->size(); return; } @@ -414,6 +413,7 @@ namespace MMAP // unpack tile coords StaticMapTree::unpackTileID((*it), tileX, tileY); + ++m_totalTilesProcessed; if (shouldSkipTile(mapID, tileX, tileY)) continue; @@ -429,8 +429,7 @@ namespace MMAP /**************************************************************************/ void MapBuilder::buildTile(uint32 mapID, uint32 tileX, uint32 tileY, dtNavMesh* navMesh) { - // percentageDone - added, now it will show addional reference percentage done of the overall process - printf("%u%% [Map %03i] Building tile [%02u,%02u]\n", percentageDone(m_totalTiles, m_totalTilesBuilt), mapID, tileX, tileY); + printf("%u%% [Map %03i] Building tile [%02u,%02u]\n", percentageDone(m_totalTiles, m_totalTilesProcessed), mapID, tileX, tileY); MeshData meshData; @@ -464,9 +463,6 @@ namespace MMAP // build navmesh tile buildMoveMapTile(mapID, tileX, tileY, meshData, bmin, bmax, navMesh); - - // percentageDone - increment tiles built - m_totalTilesBuilt++; } /**************************************************************************/ diff --git a/src/tools/mmaps_generator/MapBuilder.h b/src/tools/mmaps_generator/MapBuilder.h index 1bd2cbbbfd..2f47fdd0ff 100644 --- a/src/tools/mmaps_generator/MapBuilder.h +++ b/src/tools/mmaps_generator/MapBuilder.h @@ -123,7 +123,7 @@ namespace MMAP bool shouldSkipMap(uint32 mapID); bool isTransportMap(uint32 mapID); bool shouldSkipTile(uint32 mapID, uint32 tileX, uint32 tileY); - // percentageDone - method to calculate percentage + uint32 percentageDone(uint32 totalTiles, uint32 totalTilesDone); TerrainBuilder* m_terrainBuilder; @@ -138,9 +138,9 @@ namespace MMAP float m_maxWalkableAngle; bool m_bigBaseUnit; - // percentageDone - variables to calculate percentage - uint32 m_totalTiles; - std::atomic m_totalTilesBuilt; + + std::atomic m_totalTiles; + std::atomic m_totalTilesProcessed; // build performance - not really used for now rcContext* m_rcContext;