#ifndef _DNACOMMON_AROTBUILDER_HPP_ #define _DNACOMMON_AROTBUILDER_HPP_ #include "DNACommon.hpp" #include "zeus/CAABox.hpp" #include "CMDL.hpp" #include namespace DataSpec { struct AROTBuilder { struct BitmapPool { std::vector> m_pool; size_t addIndices(const std::set& indices); } bmpPool; struct Node { std::vector childNodes; std::set childIndices; size_t poolIdx = 0; uint8_t flags = 0; size_t nodeOff = 0; size_t nodeSz = 4; bool addChild(const zeus::CAABox& curAabb, const zeus::CAABox& childAabb, int idx); void nodeCount(size_t& sz, size_t& idxRefs, BitmapPool& bmpPool, size_t& curOff); void writeIndirectionTable(athena::io::MemoryWriter& w); void writeNodes(athena::io::MemoryWriter& w, int nodeIdx); void advanceIndex(int& nodeIdx); } rootNode; void build(std::vector>& secs, const zeus::CAABox& fullAabb, const std::vector& meshAabbs, const std::vector& meshes); }; } #endif // _DNACOMMON_AROTBUILDER_HPP_