diff options
| -rw-r--r-- | src/tools/mesh_extractor/ChunkedData.cpp | 9 | ||||
| -rw-r--r-- | src/tools/mesh_extractor/ChunkedData.h | 1 | ||||
| -rw-r--r-- | src/tools/mesh_extractor/DoodadHandler.cpp | 6 | ||||
| -rw-r--r-- | src/tools/mesh_extractor/DoodadHandler.h | 2 | ||||
| -rw-r--r-- | src/tools/mesh_extractor/LiquidHandler.h | 1 | ||||
| -rw-r--r-- | src/tools/mesh_extractor/TileBuilder.cpp | 24 | ||||
| -rw-r--r-- | src/tools/mesh_extractor/TileBuilder.h | 2 | ||||
| -rw-r--r-- | src/tools/mesh_extractor/WorldModelHandler.cpp | 8 | ||||
| -rw-r--r-- | src/tools/mesh_extractor/WorldModelHandler.h | 1 |
9 files changed, 48 insertions, 6 deletions
diff --git a/src/tools/mesh_extractor/ChunkedData.cpp b/src/tools/mesh_extractor/ChunkedData.cpp index 470b8b94f39..35b1bcd5af0 100644 --- a/src/tools/mesh_extractor/ChunkedData.cpp +++ b/src/tools/mesh_extractor/ChunkedData.cpp @@ -61,3 +61,12 @@ Chunk* ChunkedData::GetChunkByName( std::string name ) return Chunks[i]; return NULL; } + +ChunkedData::~ChunkedData() +{ + for (std::vector<Chunk*>::iterator itr = Chunks.begin(); itr != Chunks.end(); ++itr) + delete *itr; + + Chunks.clear(); + fclose(Stream); +} diff --git a/src/tools/mesh_extractor/ChunkedData.h b/src/tools/mesh_extractor/ChunkedData.h index 6e102828222..d36d0868859 100644 --- a/src/tools/mesh_extractor/ChunkedData.h +++ b/src/tools/mesh_extractor/ChunkedData.h @@ -9,6 +9,7 @@ class ChunkedData public: ChunkedData(FILE* stream, uint32 maxLength, uint32 chunksHint = 300); ChunkedData(std::string file, uint32 chunksHint = 300); + ~ChunkedData(); int GetFirstIndex(std::string name); Chunk* GetChunkByName(std::string name); diff --git a/src/tools/mesh_extractor/DoodadHandler.cpp b/src/tools/mesh_extractor/DoodadHandler.cpp index 28bb9da5f21..6604aebe73a 100644 --- a/src/tools/mesh_extractor/DoodadHandler.cpp +++ b/src/tools/mesh_extractor/DoodadHandler.cpp @@ -99,3 +99,9 @@ void DoodadHandler::InsertModelGeometry(const DoodadDefinition& def, Model* mode for (std::vector<Triangle<uint16> >::iterator itr = model->Triangles.begin(); itr != model->Triangles.end(); ++itr) Triangles.push_back(Triangle<uint32>(Constants::TRIANGLE_TYPE_DOODAD, itr->V0 + vertOffset, itr->V1 + vertOffset, itr->V2 + vertOffset)); } + +DoodadHandler::~DoodadHandler() +{ + delete _definitions; + delete _paths; +} diff --git a/src/tools/mesh_extractor/DoodadHandler.h b/src/tools/mesh_extractor/DoodadHandler.h index aa7e3cac20d..2e00696f7e5 100644 --- a/src/tools/mesh_extractor/DoodadHandler.h +++ b/src/tools/mesh_extractor/DoodadHandler.h @@ -32,6 +32,8 @@ class DoodadHandler : public ObjectDataHandler { public: DoodadHandler(ADT* adt); + ~DoodadHandler(); + std::vector<Vector3> Vertices; std::vector<Triangle<uint32> > Triangles; bool IsSane() { return _definitions && _paths; } diff --git a/src/tools/mesh_extractor/LiquidHandler.h b/src/tools/mesh_extractor/LiquidHandler.h index 138b2da2ad9..6e8d0081adb 100644 --- a/src/tools/mesh_extractor/LiquidHandler.h +++ b/src/tools/mesh_extractor/LiquidHandler.h @@ -10,6 +10,7 @@ class LiquidHandler { public: LiquidHandler(ADT* adt); + ADT* Source; std::vector<Vector3> Vertices; std::vector<Triangle<uint32> > Triangles; diff --git a/src/tools/mesh_extractor/TileBuilder.cpp b/src/tools/mesh_extractor/TileBuilder.cpp index 926d2591f1a..5c2c4faab80 100644 --- a/src/tools/mesh_extractor/TileBuilder.cpp +++ b/src/tools/mesh_extractor/TileBuilder.cpp @@ -225,16 +225,30 @@ uint8* TileBuilder::Build() uint8* navData; printf("[%02i,%02i] Creating the navmesh!\n", X, Y); bool result = dtCreateNavMeshData(¶ms, &navData, &navDataSize); - if (result) + + // Free some memory + rcFreePolyMesh(pmesh); + rcFreePolyMeshDetail(dmesh); + delete tilebMax; + delete tilebMin; + delete areas; + delete triangles; + delete vertices; + delete bbMax; + delete bbMin; + + if (result) { printf("[%02i,%02i] NavMesh created, size %i!\n", X, Y, navDataSize); DataSize = navDataSize; - rcFreePolyMesh(pmesh); - rcFreePolyMeshDetail(dmesh); return navData; } - rcFreePolyMesh(pmesh); - rcFreePolyMeshDetail(dmesh); return NULL; } + +TileBuilder::~TileBuilder() +{ + delete Context; + delete _Geometry; +} diff --git a/src/tools/mesh_extractor/TileBuilder.h b/src/tools/mesh_extractor/TileBuilder.h index f91a732f70c..e56b926e5a5 100644 --- a/src/tools/mesh_extractor/TileBuilder.h +++ b/src/tools/mesh_extractor/TileBuilder.h @@ -11,6 +11,8 @@ class TileBuilder { public: TileBuilder(std::string world, int x, int y, uint32 mapId); + ~TileBuilder(); + void CalculateTileBounds(float*& bmin, float*& bmax); uint8* Build(); diff --git a/src/tools/mesh_extractor/WorldModelHandler.cpp b/src/tools/mesh_extractor/WorldModelHandler.cpp index 636b06f6f73..edad6d1b6d8 100644 --- a/src/tools/mesh_extractor/WorldModelHandler.cpp +++ b/src/tools/mesh_extractor/WorldModelHandler.cpp @@ -24,7 +24,7 @@ WorldModelDefinition WorldModelDefinition::Read( FILE* file ) } -WorldModelHandler::WorldModelHandler( ADT* adt ) : ObjectDataHandler(adt) +WorldModelHandler::WorldModelHandler( ADT* adt ) : ObjectDataHandler(adt), _definitions(NULL), _paths(NULL) { if (!adt->HasObjectData) return; @@ -190,3 +190,9 @@ void WorldModelHandler::ReadModelPaths() _paths->push_back(Utils::ReadString(dataStream)); } } + +WorldModelHandler::~WorldModelHandler() +{ + delete _definitions; + delete _paths; +} diff --git a/src/tools/mesh_extractor/WorldModelHandler.h b/src/tools/mesh_extractor/WorldModelHandler.h index daf0713ecd2..df5e3764eb5 100644 --- a/src/tools/mesh_extractor/WorldModelHandler.h +++ b/src/tools/mesh_extractor/WorldModelHandler.h @@ -29,6 +29,7 @@ class WorldModelHandler : public ObjectDataHandler { public: WorldModelHandler(ADT* adt); + ~WorldModelHandler(); std::vector<Vector3> Vertices; std::vector<Triangle<uint32> > Triangles; |
