From 457f58b1a20205d2256921a90a5652b30204e079 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 14 Jan 2017 15:16:04 +0100 Subject: Tools/mmaps_generator: Mak percentage progress slightly more accurate #18832 (cherry picked from commit 29937aaa750ae5485ab20de231399f83b999ca49) # Conflicts: # src/tools/mmaps_generator/MapBuilder.cpp --- src/tools/mmaps_generator/MapBuilder.cpp | 20 ++++++++------------ src/tools/mmaps_generator/MapBuilder.h | 8 ++++---- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp index b3f3d521d7c..b721162bfe2 100644 --- a/src/tools/mmaps_generator/MapBuilder.cpp +++ b/src/tools/mmaps_generator/MapBuilder.cpp @@ -66,6 +66,8 @@ namespace MMAP m_skipBattlegrounds (skipBattlegrounds), m_maxWalkableAngle (maxWalkableAngle), m_bigBaseUnit (bigBaseUnit), + m_totalTiles (0u), + m_totalTilesProcessed(0u), m_rcContext (NULL), _cancelationToken (false) { @@ -73,10 +75,6 @@ namespace MMAP m_rcContext = new rcContext(false); - // percentageDone - Initializing - m_totalTiles = 0; - m_totalTilesBuilt = 0; - discoverTiles(); } @@ -157,8 +155,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); } /**************************************************************************/ @@ -393,7 +390,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()) @@ -404,6 +402,7 @@ namespace MMAP if (!navMesh) { printf("[Map %04i] Failed creating navmesh!\n", mapID); + m_totalTilesProcessed += tiles->size(); return; } @@ -416,6 +415,7 @@ namespace MMAP // unpack tile coords StaticMapTree::unpackTileID((*it), tileX, tileY); + ++m_totalTilesProcessed; if (shouldSkipTile(mapID, tileX, tileY)) continue; @@ -431,8 +431,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 %04i] Building tile [%02u,%02u]\n", percentageDone(m_totalTiles, m_totalTilesBuilt), mapID, tileX, tileY); + printf("%u%% [Map %04i] Building tile [%02u,%02u]\n", percentageDone(m_totalTiles, m_totalTilesProcessed), mapID, tileX, tileY); MeshData meshData; @@ -466,9 +465,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 4d0d6444757..316217f8c2b 100644 --- a/src/tools/mmaps_generator/MapBuilder.h +++ b/src/tools/mmaps_generator/MapBuilder.h @@ -125,7 +125,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; @@ -140,9 +140,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; -- cgit v1.2.3