dna/LODMapping.h dna/TypeDefs.h cstdint functional dna::LODMapping dna //CopyrightEpicGames,Inc.AllRightsReserved. #pragmaonce #include"dna/TypeDefs.h" #ifdef_MSC_VER #pragmawarning(push) #pragmawarning(disable:43654987) #endif #include<cstdint> #include<functional> #ifdef_MSC_VER #pragmawarning(pop) #endif namespacedna{ classLODConstraint; classLODMapping{ public: explicitLODMapping(MemoryResource*memRes_); std::uint16_tgetLODCount()const; voidresetIndices(); voidresetLODs(); voidreset(); voidsetLODCount(std::uint16_tlodCount); voiddiscardLODs(constLODConstraint&lodConstraint); ConstArrayView<std::uint16_t>getIndices(std::uint16_tlod)const; std::uint16_tgetIndexListCount()const; voidclearIndices(std::uint16_tindex); voidaddIndices(std::uint16_tindex,conststd::uint16_t*source,std::uint16_tcount); voidassociateLODWithIndices(std::uint16_tlod,std::uint16_tindex); voidmapIndices(std::function<std::uint16_t(std::uint16_t)>mapper); voidfilterIndices(std::function<bool(std::uint16_t)>filterer); UnorderedSet<std::uint16_t>getCombinedDistinctIndices(MemoryResource*memRes)const; private: voidcleanupIndices(); protected: //Mapindicestorowsofthebelowdefinedmatrix,e.g.: //lods:[0,0,1,1] //indices:{[10,15,12],[9,7,43,67]} //expandsinto: //0:[10,15,12] //1:[10,15,12] //2:[9,7,43,67] //3:[9,7,43,67] Vector<std::uint16_t>lods; Matrix<std::uint16_t>indices; }; }//namespacedna