Tools/mmaps_generator: Add optional file name suffix to tile files

This commit is contained in:
Shauren
2025-11-05 18:55:45 +01:00
parent d2fa7398a6
commit a61195beef
4 changed files with 22 additions and 16 deletions

View File

@@ -31,13 +31,13 @@ namespace MMAP
rcFreePolyMeshDetail(polyMeshDetail);
}
void IntermediateValues::writeIV(boost::filesystem::path const& outputDirectory, uint32 mapID, uint32 tileX, uint32 tileY)
void IntermediateValues::writeIV(boost::filesystem::path const& outputDirectory, std::string_view fileNameSuffix, uint32 mapID, uint32 tileX, uint32 tileY)
{
TC_LOG_INFO("maps.mmapgen.debug", "[Map {:04}] [{:02},{:02}]: Writing debug output intermediate values...", mapID, tileX, tileY);
auto debugWrite = [=, outputDirectory = outputDirectory.generic_string()](char const* extension, auto const* data)
{
std::string fileName = Trinity::StringFormat("{}/meshes/{:04}{:02}{:02}.{}", outputDirectory, mapID, tileX, tileY, extension);
std::string fileName = Trinity::StringFormat("{}/meshes/{:04}{:02}{:02}{}.{}", outputDirectory, mapID, tileX, tileY, fileNameSuffix, extension);
if (auto file = Trinity::make_unique_ptr_with_deleter<&::fclose>(fopen(fileName.c_str(), "wb")))
{
IntermediateValues::debugWrite(file.get(), data);
@@ -188,10 +188,10 @@ namespace MMAP
fwrite(mesh->meshes, sizeof(int), mesh->nmeshes*4, file);
}
void IntermediateValues::generateObjFile(boost::filesystem::path const& outputDirectory, uint32 mapID, uint32 tileX, uint32 tileY, MeshData const& meshData)
void IntermediateValues::generateObjFile(boost::filesystem::path const& outputDirectory, std::string_view fileNameSuffix, uint32 mapID, uint32 tileX, uint32 tileY, MeshData const& meshData)
{
std::string objFileName;
objFileName = Trinity::StringFormat("{}/meshes/map{:04}{:02}{:02}.obj", outputDirectory.generic_string(), mapID, tileX, tileY);
objFileName = Trinity::StringFormat("{}/meshes/map{:04}{:02}{:02}{}.obj", outputDirectory.generic_string(), mapID, tileX, tileY, fileNameSuffix);
auto objFile = Trinity::make_unique_ptr_with_deleter<&::fclose>(fopen(objFileName.c_str(), "wb"));
if (!objFile)
@@ -233,7 +233,7 @@ namespace MMAP
char b = '\0';
fwrite(&b, sizeof(char), 1, objFile.get());
objFileName = Trinity::StringFormat("{}/meshes/map{:04}{:02}{:02}.mesh", outputDirectory.generic_string(), mapID, tileX, tileY);
objFileName = Trinity::StringFormat("{}/meshes/map{:04}{:02}{:02}{}.mesh", outputDirectory.generic_string(), mapID, tileX, tileY, fileNameSuffix);
objFile.reset(fopen(objFileName.c_str(), "wb"));
if (!objFile)
{

View File

@@ -64,7 +64,7 @@ namespace MMAP
return *this;
}
void writeIV(boost::filesystem::path const& outputDirectory, uint32 mapID, uint32 tileX, uint32 tileY);
void writeIV(boost::filesystem::path const& outputDirectory, std::string_view fileNameSuffix, uint32 mapID, uint32 tileX, uint32 tileY);
static void debugWrite(FILE* file, rcHeightfield const* mesh);
static void debugWrite(FILE* file, rcCompactHeightfield const* chf);
@@ -72,7 +72,7 @@ namespace MMAP
static void debugWrite(FILE* file, rcPolyMesh const* mesh);
static void debugWrite(FILE* file, rcPolyMeshDetail const* mesh);
void generateObjFile(boost::filesystem::path const& outputDirectory, uint32 mapID, uint32 tileX, uint32 tileY, MeshData const& meshData);
void generateObjFile(boost::filesystem::path const& outputDirectory, std::string_view fileNameSuffix, uint32 mapID, uint32 tileX, uint32 tileY, MeshData const& meshData);
};
}
#endif

View File

@@ -147,7 +147,7 @@ namespace MMAP
/**************************************************************************/
TileBuilder::TileResult TileBuilder::buildMoveMapTile(uint32 mapID, uint32 tileX, uint32 tileY,
MeshData& meshData, float (&bmin)[3], float (&bmax)[3],
dtNavMeshParams const* navMeshParams)
dtNavMeshParams const* navMeshParams, std::string_view fileNameSuffix)
{
// console output
std::string tileString = Trinity::StringFormat("[Map {:04}] [{:02},{:02}]:", mapID, tileX, tileY);
@@ -377,7 +377,10 @@ namespace MMAP
// will hold final navmesh
unsigned char* navData = nullptr;
auto debugOutputWriter = Trinity::make_unique_ptr_with_deleter(m_debugOutput ? &iv : nullptr, [borderSize = static_cast<unsigned short>(config.borderSize), outputDir = &m_outputDirectory, mapID, tileX, tileY, &meshData](IntermediateValues* intermediate)
auto debugOutputWriter = Trinity::make_unique_ptr_with_deleter(m_debugOutput ? &iv : nullptr,
[borderSize = static_cast<unsigned short>(config.borderSize),
outputDir = &m_outputDirectory, fileNameSuffix,
mapID, tileX, tileY, &meshData](IntermediateValues* intermediate)
{
// restore padding so that the debug visualization is correct
for (std::ptrdiff_t i = 0; i < intermediate->polyMesh->nverts; ++i)
@@ -387,8 +390,8 @@ namespace MMAP
v[2] += borderSize;
}
intermediate->generateObjFile(*outputDir, mapID, tileX, tileY, meshData);
intermediate->writeIV(*outputDir, mapID, tileX, tileY);
intermediate->generateObjFile(*outputDir, fileNameSuffix, mapID, tileX, tileY, meshData);
intermediate->writeIV(*outputDir, fileNameSuffix, mapID, tileX, tileY);
});
// these values are checked within dtCreateNavMeshData - handle them here
@@ -440,7 +443,8 @@ namespace MMAP
return tileResult;
}
void TileBuilder::saveMoveMapTileToFile(uint32 mapID, uint32 tileX, uint32 tileY, dtNavMesh* navMesh, TileResult const& tileResult)
void TileBuilder::saveMoveMapTileToFile(uint32 mapID, uint32 tileX, uint32 tileY, dtNavMesh* navMesh,
TileResult const& tileResult, std::string_view fileNameSuffix)
{
dtTileRef tileRef = 0;
auto navMeshTile = Trinity::make_unique_ptr_with_deleter<dtTileRef*>(nullptr, [navMesh](dtTileRef const* ref)
@@ -464,7 +468,7 @@ namespace MMAP
}
// file output
std::string fileName = Trinity::StringFormat("{}/mmaps/{:04}{:02}{:02}.mmtile", m_outputDirectory.generic_string(), mapID, tileX, tileY);
std::string fileName = Trinity::StringFormat("{}/mmaps/{:04}{:02}{:02}{}.mmtile", m_outputDirectory.generic_string(), mapID, tileX, tileY, fileNameSuffix);
auto file = Trinity::make_unique_ptr_with_deleter<&::fclose>(fopen(fileName.c_str(), "wb"));
if (!file)
{

View File

@@ -18,7 +18,7 @@
#ifndef TRINITYCORE_TILE_BUILDER_H
#define TRINITYCORE_TILE_BUILDER_H
#include "Define.h"
#include "Common.h"
#include "Memory.h"
#include "StringFormat.h"
#include "TerrainBuilder.h"
@@ -65,9 +65,11 @@ public:
MeshData& meshData,
float (&bmin)[3],
float (&bmax)[3],
dtNavMeshParams const* navMeshParams);
dtNavMeshParams const* navMeshParams,
std::string_view fileNameSuffix = ""sv);
void saveMoveMapTileToFile(uint32 mapID, uint32 tileX, uint32 tileY, dtNavMesh* navMesh, TileResult const& tileResult);
void saveMoveMapTileToFile(uint32 mapID, uint32 tileX, uint32 tileY, dtNavMesh* navMesh,
TileResult const& tileResult, std::string_view fileNameSuffix = ""sv);
virtual bool shouldSkipTile(uint32 mapID, uint32 tileX, uint32 tileY) const;