#pragma once #include "../BSP.h" #include "../BSPCalculation.h" #include "Asset/IAssetCreator.h" #include "SearchPath/ISearchPath.h" #include "Utils/MemoryManager.h" namespace BSP { class ClipMapLinker { public: ClipMapLinker(MemoryManager& memory, ISearchPath& searchPath, AssetCreationContext& context); clipMap_t* linkClipMap(BSPData* bsp); private: MemoryManager& m_memory; ISearchPath& m_search_path; AssetCreationContext& m_context; void loadBoxData(clipMap_t* clipMap); void loadVisibility(clipMap_t* clipMap); void loadDynEnts(clipMap_t* clipMap); void loadRopesAndConstraints(clipMap_t* clipMap); void loadSubModelCollision(clipMap_t* clipMap, BSPData* bsp); void loadXModelCollision(clipMap_t* clipMap); std::vector planeVec; std::vector nodeVec; std::vector leafVec; std::vector AABBTreeVec; size_t highestLeafObjectCount = 0; std::vector partitionToMaterialMap; void addAABBTreeFromLeaf(clipMap_t* clipMap, BSPTree* tree, size_t* out_parentCount, size_t* out_parentStartIndex); int16_t loadBSPNode(clipMap_t* clipMap, BSPTree* tree); bool loadBSPTree(clipMap_t* clipMap, BSPData* bsp); bool loadPartitions(clipMap_t* clipMap, BSPData* bsp); bool loadWorldCollision(clipMap_t* clipMap, BSPData* bsp); bool loadMaterials(clipMap_t* clipMap, BSPData* bsp); }; } // namespace BSP