#pragma once #include #include "AssetLoadingContext.h" #include "IAssetLoader.h" #include "IAssetLoadingManager.h" class AssetLoadingManager final : public IAssetLoadingManager { const std::unordered_map>& m_asset_loaders_by_type; AssetLoadingContext& m_context; XAssetInfoGeneric* m_last_dependency_loaded; XAssetInfoGeneric* LoadIgnoredDependency(asset_type_t assetType, const std::string& assetName, IAssetLoader* loader); XAssetInfoGeneric* LoadAssetDependency(asset_type_t assetType, const std::string& assetName, IAssetLoader* loader); XAssetInfoGeneric* AddAsset(asset_type_t assetType, const std::string& assetName, void* asset, std::vector dependencies, std::vector usedScriptStrings, Zone* zone); public: AssetLoadingManager(const std::unordered_map>& assetLoadersByType, AssetLoadingContext& context); bool LoadAssetFromLoader(asset_type_t assetType, const std::string& assetName); _NODISCARD AssetLoadingContext* GetAssetLoadingContext() const override; XAssetInfoGeneric* AddAsset(asset_type_t assetType, const std::string& assetName, void* asset, std::vector dependencies, std::vector usedScriptStrings) override; XAssetInfoGeneric* LoadDependency(asset_type_t assetType, const std::string& assetName) override; };