diff --git a/Code/es_loader/ESLoader.cpp b/Code/es_loader/ESLoader.cpp index 6a44fdcaa..cc869b318 100644 --- a/Code/es_loader/ESLoader.cpp +++ b/Code/es_loader/ESLoader.cpp @@ -1,6 +1,9 @@ #include "ESLoader.h" #include + +#include + namespace fs = std::filesystem; ESLoader::ESLoader(String aDirectory) @@ -64,7 +67,20 @@ void ESLoader::LoadFiles() { for (const auto& filename : m_esmFilenames) { - m_standardPlugins.push_back(TESFile(filename)); + if (filename.filename().string() != "Skyrim.esm") + continue; + + //m_standardPlugins.push_back(TESFile(filename)); + TESFile skyrimEsm(filename); + + const Vector& refs = skyrimEsm.GetObjectReferences(); + + Vector refrData; + for (REFR* ref : refs) + { + refrData.push_back(ref->ParseChunks()); + } + spdlog::info("refrData count: {}", refrData.size()); } } diff --git a/Code/es_loader/TESFile.cpp b/Code/es_loader/TESFile.cpp index a2d45ad5b..5592b425a 100644 --- a/Code/es_loader/TESFile.cpp +++ b/Code/es_loader/TESFile.cpp @@ -4,6 +4,7 @@ #include #include "Records/Record.h" +#include "Records/REFR.h" TESFile::TESFile(const std::filesystem::path& acPath) { @@ -66,8 +67,9 @@ bool TESFile::ReadGroupOrRecord(Buffer::Reader& aReader) noexcept switch (record->GetType()) { case FormEnum::REFR: - case FormEnum::ACHR: - m_objectReferences.push_back(record); + //case FormEnum::ACHR: + REFR* recordREFR = reinterpret_cast(record); + m_objectReferences[record->GetFormId()] = recordREFR; break; case FormEnum::CELL: m_cells.push_back(record); diff --git a/Code/es_loader/TESFile.h b/Code/es_loader/TESFile.h index 4eb5b85be..4ae8c040e 100644 --- a/Code/es_loader/TESFile.h +++ b/Code/es_loader/TESFile.h @@ -3,6 +3,7 @@ #include class Record; +class REFR; class TESFile { @@ -25,6 +26,11 @@ class TESFile template Vector GetRecords() noexcept; + const Vector& GetObjectReferences() const noexcept + { + return m_objectReferences; + } + private: void BuildFormIdRecordMap() noexcept; bool ReadGroupOrRecord(Buffer::Reader& aReader) noexcept; @@ -40,6 +46,6 @@ class TESFile uint16_t m_liteId; }; - Vector m_objectReferences; + Map m_objectReferences; Vector m_cells; };