#pragma once #include "ContentLoaderBase.h" #include "Pool/XAssetInfo.h" #include "Zone/ZoneTypes.h" #include class AssetMarker { public: [[nodiscard]] std::vector GetDependencies() const; [[nodiscard]] std::vector GetUsedScriptStrings() const; [[nodiscard]] std::vector GetIndirectAssetReferences() const; protected: AssetMarker(asset_type_t assetType, Zone& zone); void AddDependency(XAssetInfoGeneric* assetInfo); void Mark_ScriptString(scr_string_t scrString); void MarkArray_ScriptString(const scr_string_t* scrStringArray, size_t count); void Mark_IndirectAssetRef(asset_type_t type, const char* assetRefName); void MarkArray_IndirectAssetRef(asset_type_t type, const char** assetRefNames, size_t count); [[nodiscard]] XAssetInfoGeneric* GetAssetInfoByName(const std::string& name) const; Zone& m_zone; private: asset_type_t m_asset_type; std::unordered_set m_dependencies; std::unordered_set m_used_script_strings; std::unordered_set m_indirect_asset_references; };