diff options
author | IntelligentQuantum <IntelligentQuantum@ProtonMail.Com> | 2022-04-17 06:21:55 +0430 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-17 03:51:55 +0200 |
commit | 7cb9a73ef9e0da108802d359aff4dab87838e31e (patch) | |
tree | 80da97f863a64ed7ce9a22249ac69562ab86ada6 /src/tools | |
parent | 659775548f771f81bd8ee31a25a679afc2166b94 (diff) |
feat(Tools/MMapsGenerator): percentage progress (#10948)
* cherry-pick commit (TrinityCore/TrinityCore@b9f276f)
* cherry-pick commit (TrinityCore/TrinityCore@29937aa)
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/mmaps_generator/MapBuilder.cpp | 37 | ||||
-rw-r--r-- | src/tools/mmaps_generator/MapBuilder.h | 8 | ||||
-rw-r--r-- | src/tools/mmaps_generator/PathGenerator.cpp | 2 |
3 files changed, 18 insertions, 29 deletions
diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp index 0a6d526f88..64bcaffc46 100644 --- a/src/tools/mmaps_generator/MapBuilder.cpp +++ b/src/tools/mmaps_generator/MapBuilder.cpp @@ -28,7 +28,7 @@ namespace MMAP { MapBuilder::MapBuilder(float maxWalkableAngle, bool skipLiquid, bool skipContinents, bool skipJunkMaps, bool skipBattlegrounds, - bool debugOutput, bool bigBaseUnit, const char* offMeshFilePath) : + bool debugOutput, bool bigBaseUnit, int mapid, const char* offMeshFilePath) : m_debugOutput (debugOutput), m_offMeshFilePath (offMeshFilePath), @@ -37,6 +37,9 @@ namespace MMAP m_skipBattlegrounds (skipBattlegrounds), m_maxWalkableAngle (maxWalkableAngle), m_bigBaseUnit (bigBaseUnit), + m_mapid (mapid), + m_totalTiles (0u), + m_totalTilesProcessed(0u), _cancelationToken (false) { @@ -44,10 +47,6 @@ namespace MMAP m_rcContext = new rcContext(false); - // percentageDone - Initializing - m_totalTiles = 0; - m_totalTilesBuilt = 0; - discoverTiles(); } @@ -376,19 +375,6 @@ namespace MMAP { std::set<uint32>* tiles = getTileList(mapID); - // make sure we process maps which don't have tiles - if (!tiles->size()) - { - // convert coord bounds to grid bounds - uint32 minX, minY, maxX, maxY; - getGridBounds(mapID, minX, minY, maxX, maxY); - - // 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->empty()) { // build navMesh @@ -397,6 +383,7 @@ namespace MMAP if (!navMesh) { printf("[Map %03i] Failed creating navmesh!\n", mapID); + m_totalTilesProcessed += tiles->size(); return; } @@ -404,17 +391,15 @@ namespace MMAP printf("[Map %03i] We have %u tiles. \n", mapID, (unsigned int)tiles->size()); for (unsigned int tile : *tiles) { - // percentageDone - increment tiles built - m_totalTilesBuilt++; uint32 tileX, tileY; // unpack tile coords StaticMapTree::unpackTileID(tile, tileX, tileY); - if (shouldSkipTile(mapID, tileX, tileY)) - continue; + if (!shouldSkipTile(mapID, tileX, tileY)) + buildTile(mapID, tileX, tileY, navMesh); - buildTile(mapID, tileX, tileY, navMesh); + ++m_totalTilesProcessed; } dtFreeNavMesh(navMesh); @@ -426,8 +411,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; @@ -902,6 +886,9 @@ namespace MMAP /**************************************************************************/ bool MapBuilder::shouldSkipMap(uint32 mapID) { + if (m_mapid >= 0) + return static_cast<uint32>(m_mapid) != mapID; + if (m_skipContinents) switch (mapID) { diff --git a/src/tools/mmaps_generator/MapBuilder.h b/src/tools/mmaps_generator/MapBuilder.h index 70f5cfe6fc..2d553dd983 100644 --- a/src/tools/mmaps_generator/MapBuilder.h +++ b/src/tools/mmaps_generator/MapBuilder.h @@ -82,6 +82,7 @@ namespace MMAP bool skipBattlegrounds = false, bool debugOutput = false, bool bigBaseUnit = false, + int mapid = -1, const char* offMeshFilePath = nullptr); ~MapBuilder(); @@ -124,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{nullptr}; @@ -139,9 +140,10 @@ namespace MMAP float m_maxWalkableAngle; bool m_bigBaseUnit; - // percentageDone - variables to calculate percentage + int32 m_mapid; + std::atomic<uint32> m_totalTiles; - std::atomic<uint32> m_totalTilesBuilt; + std::atomic<uint32> m_totalTilesProcessed; // build performance - not really used for now rcContext* m_rcContext{nullptr}; diff --git a/src/tools/mmaps_generator/PathGenerator.cpp b/src/tools/mmaps_generator/PathGenerator.cpp index 834ae794b3..62e10c13e6 100644 --- a/src/tools/mmaps_generator/PathGenerator.cpp +++ b/src/tools/mmaps_generator/PathGenerator.cpp @@ -278,7 +278,7 @@ int main(int argc, char** argv) return silent ? -3 : finish("Press ENTER to close...", -3); MapBuilder builder(maxAngle, skipLiquid, skipContinents, skipJunkMaps, - skipBattlegrounds, debugOutput, bigBaseUnit, offMeshInputPath); + skipBattlegrounds, debugOutput, bigBaseUnit, mapnum, offMeshInputPath); uint32 start = getMSTime(); if (file) |