chore: adjust asset creation process to use separated AssetCreators

This commit is contained in:
Jan
2024-12-13 23:28:28 +00:00
parent 63046f5681
commit 4f0a405bdc
46 changed files with 638 additions and 278 deletions

View File

@ -0,0 +1,32 @@
#pragma once
#include "AssetCreationContext.h"
#include "Game/IGame.h"
#include "IAssetCreator.h"
#include "IDefaultAssetCreator.h"
#include "Zone/ZoneTypes.h"
#include <memory>
class AssetCreationContext;
class IAssetCreator;
class AssetCreationResult;
class IDefaultAssetCreator;
class AssetCreatorCollection
{
public:
explicit AssetCreatorCollection(const Zone& zone);
void AddAssetCreator(std::unique_ptr<IAssetCreator> creator);
void AddDefaultAssetCreator(std::unique_ptr<IDefaultAssetCreator> defaultAssetCreator);
AssetCreationResult CreateAsset(asset_type_t assetType, const std::string& assetName, AssetCreationContext& context) const;
AssetCreationResult CreateDefaultAsset(asset_type_t assetType, const std::string& assetName, const AssetCreationContext& context) const;
void FinalizeZone(AssetCreationContext& context) const;
private:
std::vector<std::vector<IAssetCreator*>> m_asset_creators_by_type;
std::vector<std::unique_ptr<IDefaultAssetCreator>> m_default_asset_creators_by_type;
std::vector<std::unique_ptr<IAssetCreator>> m_asset_creators;
};