#pragma once #include "ContentLoaderBase.h" #include "Pool/XAssetInfo.h" #include "Utils/ClassUtils.h" #include "Zone/ZoneTypes.h" #include class AssetMarker { 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; 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(std::string name) const; Zone* m_zone; public: _NODISCARD std::vector GetDependencies() const; _NODISCARD std::vector GetUsedScriptStrings() const; _NODISCARD std::vector GetIndirectAssetReferences() const; };