mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 18:36:31 +01:00
Tools/MeshExtractor: Get rid of some memory leaks
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -10,6 +10,7 @@ class LiquidHandler
|
||||
{
|
||||
public:
|
||||
LiquidHandler(ADT* adt);
|
||||
|
||||
ADT* Source;
|
||||
std::vector<Vector3> Vertices;
|
||||
std::vector<Triangle<uint32> > Triangles;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ class WorldModelHandler : public ObjectDataHandler
|
||||
{
|
||||
public:
|
||||
WorldModelHandler(ADT* adt);
|
||||
~WorldModelHandler();
|
||||
|
||||
std::vector<Vector3> Vertices;
|
||||
std::vector<Triangle<uint32> > Triangles;
|
||||
|
||||
Reference in New Issue
Block a user