diff options
| author | Shauren <shauren.trinity@gmail.com> | 2013-06-18 21:04:31 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2013-06-18 21:04:31 +0200 |
| commit | f517467817207a75cbe395ec96de2dceb0cac5da (patch) | |
| tree | 80457050fd0d460565895aba21ba285cbf323f86 /src/tools | |
| parent | 3367dd5be93b8e63dce41fe6e303aa8ec41a43db (diff) | |
| parent | 89ec90753914ae89b2dbbc7a343cd8a667410af3 (diff) | |
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/mmaps_generator/Info/readme.txt | 4 | ||||
| -rw-r--r-- | src/tools/mmaps_generator/MapBuilder.cpp | 179 | ||||
| -rw-r--r-- | src/tools/mmaps_generator/MapBuilder.h | 2 | ||||
| -rw-r--r-- | src/tools/mmaps_generator/PathGenerator.cpp | 2 | ||||
| -rw-r--r-- | src/tools/mmaps_generator/TerrainBuilder.h | 2 |
5 files changed, 91 insertions, 98 deletions
diff --git a/src/tools/mmaps_generator/Info/readme.txt b/src/tools/mmaps_generator/Info/readme.txt index ff3f2f43526..bde8e61b080 100644 --- a/src/tools/mmaps_generator/Info/readme.txt +++ b/src/tools/mmaps_generator/Info/readme.txt @@ -8,7 +8,7 @@ Generator command line args "map_id tile_x,tile_y (start_x start_y start_z) (end_x end_y end_z) size //optional comments" Single mesh connection per line. ---silent Make us script friendly. Do not wait for user input +--silent [] Make us script friendly. Do not wait for user input on error or completion. --bigBaseUnit [true|false] Generate tile/map using bigger basic unit. @@ -20,7 +20,7 @@ Generator command line args float between 45 and 90 degrees (default 60) ---skipLiquid liquid data for maps +--skipLiquid [true|false] extract liquid data for maps false: include liquid data (default) diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp index cd85d926125..d4192571454 100644 --- a/src/tools/mmaps_generator/MapBuilder.cpp +++ b/src/tools/mmaps_generator/MapBuilder.cpp @@ -36,7 +36,7 @@ namespace DisableMgr } #define MMAP_MAGIC 0x4d4d4150 // 'MMAP' -#define MMAP_VERSION 3 +#define MMAP_VERSION 4 struct MmapTileHeader { @@ -332,12 +332,12 @@ namespace MMAP buildNavMesh(mapID, navMesh); if (!navMesh) { - printf("[Map %i] Failed creating navmesh!\n", mapID); + printf("[Map %03i] Failed creating navmesh!\n", mapID); return; } // now start building mmtiles for each tile - printf("[Map %i] We have %u tiles. \n", mapID, (unsigned int)tiles->size()); + printf("[Map %03i] We have %u tiles. \n", mapID, (unsigned int)tiles->size()); for (std::set<uint32>::iterator it = tiles->begin(); it != tiles->end(); ++it) { uint32 tileX, tileY; @@ -354,13 +354,13 @@ namespace MMAP dtFreeNavMesh(navMesh); } - printf("[Map %i] Complete!\n", mapID); + printf("[Map %03i] Complete!\n", mapID); } /**************************************************************************/ void MapBuilder::buildTile(uint32 mapID, uint32 tileX, uint32 tileY, dtNavMesh* navMesh) { - printf("[Map %i] Building tile [%02u,%02u]\n", mapID, tileX, tileY); + printf("[Map %03i] Building tile [%02u,%02u]\n", mapID, tileX, tileY); MeshData meshData; @@ -446,10 +446,10 @@ namespace MMAP navMeshParams.maxPolys = maxPolysPerTile; navMesh = dtAllocNavMesh(); - printf("[Map %i] Creating navMesh...\n", mapID); + printf("[Map %03i] Creating navMesh...\n", mapID); if (!navMesh->init(&navMeshParams)) { - printf("[Map %i] Failed creating navmesh! \n", mapID); + printf("[Map %03i] Failed creating navmesh! \n", mapID); return; } @@ -461,7 +461,7 @@ namespace MMAP { dtFreeNavMesh(navMesh); char message[1024]; - sprintf(message, "[Map %i] Failed to open %s for writing!\n", mapID, fileName); + sprintf(message, "[Map %03i] Failed to open %s for writing!\n", mapID, fileName); perror(message); return; } @@ -496,8 +496,8 @@ namespace MMAP // these are WORLD UNIT based metrics // this are basic unit dimentions - // value have to divide GRID_SIZE(533.33333f) ( aka: 0.5333, 0.2666, 0.3333, 0.1333, etc ) - const static float BASE_UNIT_DIM = m_bigBaseUnit ? 0.533333f : 0.266666f; + // value have to divide GRID_SIZE(533.3333f) ( aka: 0.5333, 0.2666, 0.3333, 0.1333, etc ) + const static float BASE_UNIT_DIM = m_bigBaseUnit ? 0.5333333f : 0.2666666f; // All are in UNIT metrics! const static int VERTEX_PER_MAP = int(GRID_SIZE/BASE_UNIT_DIM + 0.5f); @@ -517,12 +517,12 @@ namespace MMAP config.tileSize = VERTEX_PER_TILE; config.walkableRadius = m_bigBaseUnit ? 1 : 2; config.borderSize = config.walkableRadius + 3; - config.maxEdgeLen = VERTEX_PER_TILE + 1; //anything bigger than tileSize - config.walkableHeight = m_bigBaseUnit ? 3 : 6; - config.walkableClimb = m_bigBaseUnit ? 2 : 4; // keep less than walkableHeight + config.maxEdgeLen = VERTEX_PER_TILE + 1; // anything bigger than tileSize + config.walkableHeight = m_bigBaseUnit ? 2 : 4; + config.walkableClimb = m_bigBaseUnit ? 1 : 2; // keep less than walkableHeight config.minRegionArea = rcSqr(60); config.mergeRegionArea = rcSqr(50); - config.maxSimplificationError = 2.0f; // eliminates most jagged edges (tinny polygons) + config.maxSimplificationError = 1.8f; // eliminates most jagged edges (tiny polygons) config.detailSampleDist = config.cs * 64; config.detailSampleMaxError = config.ch * 2; @@ -677,14 +677,6 @@ namespace MMAP delete[] tiles; - // remove padding for extraction - for (int i = 0; i < iv.polyMesh->nverts; ++i) - { - unsigned short* v = &iv.polyMesh->verts[i*3]; - v[0] -= (unsigned short)config.borderSize; - v[2] -= (unsigned short)config.borderSize; - } - // set polygons as walkable // TODO: special flags for DYNAMIC polygons, ie surfaces that can be turned on and off for (int i = 0; i < iv.polyMesh->npolys; ++i) @@ -723,8 +715,9 @@ namespace MMAP rcVcopy(params.bmax, bmax); params.cs = config.cs; params.ch = config.ch; - params.tileSize = VERTEX_PER_MAP; - + params.tileLayer = 0; + params.buildBvTree = true; + // will hold final navmesh unsigned char* navData = NULL; int navDataSize = 0; @@ -792,7 +785,7 @@ namespace MMAP if (!file) { char message[1024]; - sprintf(message, "[Map %i] Failed to open %s for writing!\n", mapID, fileName); + sprintf(message, "[Map %03i] Failed to open %s for writing!\n", mapID, fileName); perror(message); navMesh->removeTile(tileRef, NULL, NULL); continue; @@ -854,50 +847,50 @@ namespace MMAP { if (m_skipContinents) switch (mapID) - { - case 0: - case 1: - case 530: - case 571: - return true; - default: - break; - } + { + case 0: + case 1: + case 530: + case 571: + return true; + default: + break; + } if (m_skipJunkMaps) switch (mapID) - { - case 13: // test.wdt - case 25: // ScottTest.wdt - case 29: // Test.wdt - case 42: // Colin.wdt - case 169: // EmeraldDream.wdt (unused, and very large) - case 451: // development.wdt - case 573: // ExteriorTest.wdt - case 597: // CraigTest.wdt - case 605: // development_nonweighted.wdt - case 606: // QA_DVD.wdt - return true; - default: - if (isTransportMap(mapID)) + { + case 13: // test.wdt + case 25: // ScottTest.wdt + case 29: // Test.wdt + case 42: // Colin.wdt + case 169: // EmeraldDream.wdt (unused, and very large) + case 451: // development.wdt + case 573: // ExteriorTest.wdt + case 597: // CraigTest.wdt + case 605: // development_nonweighted.wdt + case 606: // QA_DVD.wdt return true; - break; - } + default: + if (isTransportMap(mapID)) + return true; + break; + } if (m_skipBattlegrounds) switch (mapID) - { - case 30: // AV - case 37: // ? - case 489: // WSG - case 529: // AB - case 566: // EotS - case 607: // SotA - case 628: // IoC - return true; - default: - break; - } + { + case 30: // AV + case 37: // ? + case 489: // WSG + case 529: // AB + case 566: // EotS + case 607: // SotA + case 628: // IoC + return true; + default: + break; + } return false; } @@ -908,37 +901,37 @@ namespace MMAP switch (mapID) { // transport maps - case 582: - case 584: - case 586: - case 587: - case 588: - case 589: - case 590: - case 591: - case 592: - case 593: - case 594: - case 596: - case 610: - case 612: - case 613: - case 614: - case 620: - case 621: - case 622: - case 623: - case 641: - case 642: - case 647: - case 672: - case 673: - case 712: - case 713: - case 718: - return true; - default: - return false; + case 582: + case 584: + case 586: + case 587: + case 588: + case 589: + case 590: + case 591: + case 592: + case 593: + case 594: + case 596: + case 610: + case 612: + case 613: + case 614: + case 620: + case 621: + case 622: + case 623: + case 641: + case 642: + case 647: + case 672: + case 673: + case 712: + case 713: + case 718: + return true; + default: + return false; } } diff --git a/src/tools/mmaps_generator/MapBuilder.h b/src/tools/mmaps_generator/MapBuilder.h index 3ffaea0ab66..6ab0b312af8 100644 --- a/src/tools/mmaps_generator/MapBuilder.h +++ b/src/tools/mmaps_generator/MapBuilder.h @@ -61,7 +61,7 @@ namespace MMAP class MapBuilder { public: - MapBuilder(float maxWalkableAngle = 60.f, + MapBuilder(float maxWalkableAngle = 55.f, bool skipLiquid = false, bool skipContinents = false, bool skipJunkMaps = true, diff --git a/src/tools/mmaps_generator/PathGenerator.cpp b/src/tools/mmaps_generator/PathGenerator.cpp index 47d35b517d5..ed114491b27 100644 --- a/src/tools/mmaps_generator/PathGenerator.cpp +++ b/src/tools/mmaps_generator/PathGenerator.cpp @@ -242,7 +242,7 @@ int finish(const char* message, int returnValue) int main(int argc, char** argv) { int threads = 3, mapnum = -1; - float maxAngle = 60.0f; + float maxAngle = 55.0f; int tileX = -1, tileY = -1; bool skipLiquid = false, skipContinents = false, diff --git a/src/tools/mmaps_generator/TerrainBuilder.h b/src/tools/mmaps_generator/TerrainBuilder.h index 069a5a94c84..e9ff2a3c175 100644 --- a/src/tools/mmaps_generator/TerrainBuilder.h +++ b/src/tools/mmaps_generator/TerrainBuilder.h @@ -47,7 +47,7 @@ namespace MMAP static const int V9_SIZE_SQ = V9_SIZE*V9_SIZE; static const int V8_SIZE = 128; static const int V8_SIZE_SQ = V8_SIZE*V8_SIZE; - static const float GRID_SIZE = 533.33333f; + static const float GRID_SIZE = 533.3333f; static const float GRID_PART_SIZE = GRID_SIZE/V8_SIZE; // see contrib/extractor/system.cpp, CONF_use_minHeight |
