aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tools/mmaps_generator/MapBuilder.cpp20
-rw-r--r--src/tools/mmaps_generator/MapBuilder.h8
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<uint32> m_totalTilesBuilt;
+
+ std::atomic<uint32> m_totalTiles;
+ std::atomic<uint32> m_totalTilesProcessed;
// build performance - not really used for now
rcContext* m_rcContext;