assimp-fez/code/AssetLib/FEZ/FezLoader.h

41 lines
1008 B
C++

#ifndef AI_FEZLOADER_H_INC
#define AI_FEZLOADER_H_INC
#include <assimp/BaseImporter.h>
#include <assimp/XmlParser.h>
#include <assimp/mesh.h>
#include <map>
#include <filesystem>
namespace Assimp {
class FezLoader : public BaseImporter {
public:
FezLoader();
~FezLoader() override;
bool CanRead(const std::string &pFile, IOSystem *pIOHandler, bool checkSig) const override;
protected:
const aiImporterDesc *GetInfo() const override;
void InternReadFile(const std::string &pFile, aiScene *pScene, IOSystem *pIOHandler) override;
unsigned int GetTrileMeshFromId(const int trileId);
aiVector3D GetFezVec3(const XmlNode &t, bool direct = false);
aiVector2D GetFezVec2(const XmlNode &t, bool direct = false);
private:
std::filesystem::path mFezAssetDir;
std::string mFileName;
XmlParser mLevelParser;
XmlParser mTrileParser;
std::map<int, XmlNode> mTriles;
std::map<int, unsigned int> mTrileMap;
std::vector<aiMesh*> mTrileMeshes;
};
}
#endif