mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Tools/MeshExtractor: Store WorldModelGroup references in WorldModelRoot
This commit is contained in:
@@ -253,8 +253,9 @@ void ExtractGameobjectModels()
|
||||
fwrite(&model.Header.WmoId, sizeof(uint32), 1, output);
|
||||
|
||||
const char grp[] = { 'G' , 'R' , 'P', ' ' };
|
||||
for (std::vector<WorldModelGroup>::iterator itr2 = model.Groups.begin(); itr2 != model.Groups.end(); ++itr2)
|
||||
for (std::vector<WorldModelGroup*>::iterator groupItr = model.Groups.begin(); groupItr != model.Groups.end(); ++groupItr)
|
||||
{
|
||||
WorldModelGroup* itr2 = *groupItr;
|
||||
const WMOGroupHeader& header = itr2->Header;
|
||||
fwrite(&header.Flags, sizeof(uint32), 1, output);
|
||||
fwrite(&header.WmoId, sizeof(uint32), 1, output);
|
||||
|
||||
@@ -88,8 +88,9 @@ void WorldModelHandler::ProcessInternal( MapChunk* mcnk )
|
||||
|
||||
void WorldModelHandler::InsertModelGeometry( std::vector<Vector3>& verts, std::vector<Triangle<uint32> >& tris, const WorldModelDefinition& def, WorldModelRoot* root, bool translate )
|
||||
{
|
||||
for (std::vector<WorldModelGroup>::iterator group = root->Groups.begin(); group != root->Groups.end(); ++group)
|
||||
for (std::vector<WorldModelGroup*>::iterator groupItr = root->Groups.begin(); groupItr != root->Groups.end(); ++groupItr)
|
||||
{
|
||||
WorldModelGroup* group = *groupItr;
|
||||
uint32 vertOffset = verts.size();
|
||||
for (std::vector<Vector3>::iterator itr2 = group->Vertices.begin(); itr2 != group->Vertices.end(); ++itr2)
|
||||
{
|
||||
@@ -136,8 +137,9 @@ void WorldModelHandler::InsertModelGeometry( std::vector<Vector3>& verts, std::v
|
||||
tris.push_back(Triangle<uint32>(Constants::TRIANGLE_TYPE_WMO, itr2->V0 + vertOffset, itr2->V1 + vertOffset, itr2->V2 + vertOffset));
|
||||
}
|
||||
|
||||
for (std::vector<WorldModelGroup>::iterator group = root->Groups.begin(); group != root->Groups.end(); ++group)
|
||||
for (std::vector<WorldModelGroup*>::iterator groupItr = root->Groups.begin(); groupItr != root->Groups.end(); ++groupItr)
|
||||
{
|
||||
WorldModelGroup* group = *groupItr;
|
||||
if (!group->HasLiquidData)
|
||||
continue;
|
||||
|
||||
|
||||
@@ -33,6 +33,11 @@ WorldModelRoot::WorldModelRoot( std::string path )
|
||||
WorldModelRoot::~WorldModelRoot()
|
||||
{
|
||||
delete Data;
|
||||
/* @ToDo: uncomment this once the ~WorldModelGroup() doesn't cause a crash anymore
|
||||
for (std::vector<WorldModelGroup*>::iterator group = Groups.begin(); group != Groups.end(); ++group)
|
||||
delete *group;
|
||||
|
||||
Groups.clear();*/
|
||||
}
|
||||
|
||||
void WorldModelRoot::ReadGroups()
|
||||
@@ -46,7 +51,7 @@ void WorldModelRoot::ReadGroups()
|
||||
Stream* stream = MPQHandler->GetFile(name);
|
||||
if (!stream)
|
||||
continue;
|
||||
Groups.emplace_back(WorldModelGroup(stream, name, i)); // @ToDo: Use the real signature of emplace_back with variadic templates once we make the full switch to C++11 (At least Visual Studio 2012)
|
||||
Groups.push_back(new WorldModelGroup(stream, name, i));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ public:
|
||||
WorldModelHeader Header;
|
||||
std::vector<DoodadInstance> DoodadInstances;
|
||||
std::vector<DoodadSet> DoodadSets;
|
||||
std::vector<WorldModelGroup> Groups;
|
||||
std::vector<WorldModelGroup*> Groups;
|
||||
private:
|
||||
void ReadGroups();
|
||||
void ReadDoodadSets();
|
||||
|
||||
Reference in New Issue
Block a user