This commit is contained in:
Rainer Leit
2026-09-25 17:02:24 +03:00
parent cc43ed8dc8
commit 9597629951
2149 changed files with 460234 additions and 1770 deletions
+42
View File
@@ -0,0 +1,42 @@
#include "World/WorldMapDefinition.h"
// Direct-initialised from an explicit FName: copy-initialising from a string literal would need two
// user-defined conversions (TCHAR* -> FName -> FPrimaryAssetType), which the language does not allow.
const FPrimaryAssetType UWorldMapDefinition::AssetType(FName("WorldMap"));
const FWorldMapLayer* UWorldMapDefinition::FindLayer(FName Id) const
{
return Layers.FindByPredicate([Id](const FWorldMapLayer& Layer) { return Layer.Id == Id; });
}
const FWorldMapLayer* UWorldMapDefinition::ResolveDefaultLayer() const
{
if (const FWorldMapLayer* Named = FindLayer(DefaultLayer))
{
return Named;
}
return Layers.Num() > 0 ? &Layers[0] : nullptr;
}
FName UWorldMapDefinition::NextLayerId(FName Id) const
{
if (Layers.Num() == 0)
{
return NAME_None;
}
const int32 Index = Layers.IndexOfByPredicate([Id](const FWorldMapLayer& Layer) { return Layer.Id == Id; });
// An unknown id lands on the first layer rather than on nothing, so a stale name in a saved setting
// recovers on the next press instead of leaving the map blank.
return Layers[Index == INDEX_NONE ? 0 : (Index + 1) % Layers.Num()].Id;
}
TArray<FName> UWorldMapDefinition::GetLayerIds() const
{
TArray<FName> Ids;
Ids.Reserve(Layers.Num());
for (const FWorldMapLayer& Layer : Layers)
{
Ids.Add(Layer.Id);
}
return Ids;
}