Added support for editing and resaving EGMC files + improved its preview rendering

This commit is contained in:
parax0
2016-01-16 01:13:27 -07:00
parent c0b74c9883
commit 5c3a37ca4a
20 changed files with 605 additions and 134 deletions

View File

@@ -0,0 +1,36 @@
#include "CPoiToWorldCooker.h"
void CPoiToWorldCooker::WriteEGMC(CPoiToWorld *pPoiToWorld, IOutputStream& rOut)
{
// Create mappings list
struct SPoiMapping
{
u32 MeshID;
u32 PoiID;
};
std::vector<SPoiMapping> Mappings;
for (u32 iPoi = 0; iPoi < pPoiToWorld->NumMappedPOIs(); iPoi++)
{
const CPoiToWorld::SPoiMap *kpMap = pPoiToWorld->MapByIndex(iPoi);
for (auto it = kpMap->ModelIDs.begin(); it != kpMap->ModelIDs.end(); it++)
{
SPoiMapping Mapping;
Mapping.MeshID = *it;
Mapping.PoiID = kpMap->PoiID;
Mappings.push_back(Mapping);
}
}
// Write EGMC
rOut.WriteLong(Mappings.size());
for (u32 iMap = 0; iMap < Mappings.size(); iMap++)
{
rOut.WriteLong(Mappings[iMap].MeshID);
rOut.WriteLong(Mappings[iMap].PoiID);
}
rOut.WriteToBoundary(32, -1);
}

View File

@@ -0,0 +1,14 @@
#ifndef CPOITOWORLDCOOKER_H
#define CPOITOWORLDCOOKER_H
#include "Core/Resource/CPoiToWorld.h"
#include <FileIO/FileIO.h>
class CPoiToWorldCooker
{
CPoiToWorldCooker() {}
public:
static void WriteEGMC(CPoiToWorld *pPoiToWorld, IOutputStream& rOut);
};
#endif // CPOITOWORLDCOOKER_H