#pragma once #include "Utils/DistinctMapper.h" #include "XModel/Obj/ObjCommon.h" #include #include class ObjWriter { protected: struct ObjObjectData { DistinctMapper m_vertices; DistinctMapper m_normals; DistinctMapper m_uvs; std::vector m_faces; }; struct ObjObjectDataOffsets { size_t vertexOffset; size_t normalOffset; size_t uvOffset; }; std::string m_game_name; std::string m_zone_name; std::vector m_objects; std::vector m_object_data; std::vector m_materials; void GetObjObjectDataOffsets(std::vector& inputOffsets, std::vector& distinctOffsets); public: ObjWriter(std::string gameName, std::string zoneName); void AddObject(ObjObject object); void AddMaterial(MtlMaterial material); void AddVertex(int objectId, ObjVertex vertex); void AddNormal(int objectId, ObjNormal normal); void AddUv(int objectId, ObjUv uv); void AddFace(int objectId, ObjFace face); void WriteObj(std::ostream& stream); void WriteObj(std::ostream& stream, const std::string& mtlName); void WriteMtl(std::ostream& stream); };