68 virtual void Initialize(FSubsystemCollectionBase &Collection)
override;
70 virtual void Deinitialize()
override;
82 bool Mount(
const FString &Path, FString &OutError,
const FCarlaContentPack **OutPack =
nullptr);
86 bool Unmount(
const FString &Name, FString &OutError);
88 const TArray<FCarlaContentPack> &
GetPacks()
const {
return Packs; }
93 FString FindMapPackage(
const FString &MapName)
const;
96 TArray<FString> GetPackMapNames()
const;
99 TArray<FString> GetPackContentDirs()
const;
103 static TArray<FString> FindPackCatalogFiles(
const FString &RelativeName);
107 template <
typename T,
typename KeyFn>
108 static void MergeCatalog(TArray<T> &Into,
const TArray<T> &From, KeyFn Key)
110 for (
const T &Entry : From)
112 const FString EntryKey = Key(Entry);
113 const int32 Existing = Into.IndexOfByPredicate([&](
const T &
Other)
115 return Key(
Other).Equals(EntryKey, ESearchCase::IgnoreCase);
117 if (Existing != INDEX_NONE)
119 Into[Existing] = Entry;
130 static FString GetBaseReleaseStamp();
155 TArray<FString> GetDiscoveryDirs()
const;
159 bool bDiscovered =
false;
DECLARE_MULTICAST_DELEGATE_OneParam(FCarlaContentPackEvent, const FCarlaContentPack &)
Mounts CARLA content packs (content-only Unreal plugins cooked as DLC against a base release,...
const TArray< FCarlaContentPack > & GetPacks() const
static void MergeCatalog(TArray< T > &Into, const TArray< T > &From, KeyFn Key)
Merge catalog entries: an entry whose key already exists replaces it in place (later files override b...
TArray< FCarlaContentPack > Packs
FCarlaContentPackEvent OnPackMounted
FCarlaContentPackEvent OnPackUnmounted
A content pack known to the manager (discovered or mounted explicitly).
FString ContentDir
Absolute path of the plugin content dir (<PackDir>/Content), the filesystem side of the "/<Name>/" mo...
FString PluginFile
Absolute path of <PackDir>/<Name>.uplugin.
const FString & GetName() const
FString PackDir
Absolute pack directory (contains carla-pack.json and <Name>.uplugin).
FCarlaContentPackManifest Manifest
TArray< FString > MountedPaks
Pak files mounted for this pack (cooked builds only).