mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-12-21 18:59:12 +00:00
Added support for editing and resaving EGMC files + improved its preview rendering
This commit is contained in:
36
src/Core/Resource/Cooker/CPoiToWorldCooker.cpp
Normal file
36
src/Core/Resource/Cooker/CPoiToWorldCooker.cpp
Normal 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);
|
||||
}
|
||||
14
src/Core/Resource/Cooker/CPoiToWorldCooker.h
Normal file
14
src/Core/Resource/Cooker/CPoiToWorldCooker.h
Normal 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
|
||||
Reference in New Issue
Block a user