FUIStylePanel migra de TMap<EUIPanelTexture, FSlateBrush> (enum legacy) para TMap<FName, FSlateBrush>. Permite adicionar/remover categorias diretamente no DT_UI_Styles via dropdown (meta=GetOptions) sem mexer no enum em C++. PanelBackground, PanelOutline e PanelOutlineEffect viraram *_DEPRECATED. Versoes novas: PanelBackgroundByName, PanelOutlineByName, PanelOutlineEffectByName. PostSerialize migra os legacy -> ByName no PostLoad de cada FUIStyleRow. Apos o primeiro re-save no editor os deprecated ficam vazios e o codigo vira no-op. PropertyRedirects em DefaultEngine.ini preservam a leitura do asset antigo (3 entries: PanelBackground, PanelOutline, PanelOutlineEffect). Atualiza UIPanel_Base pra ler ByName + DT_UI_Styles, UI_Panel_Master e UI_PlayerStatus_Window resalvos. Inclui nova textura T_Panel_Outline_Effect_Square_02. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
#include "UIStyleTokens.h"
|
|
|
|
#include "UObject/Class.h"
|
|
#include "UObject/UnrealType.h"
|
|
|
|
void FUIStylePanel::PostSerialize(const FArchive& Ar)
|
|
{
|
|
// Migração v1→v2: TMap<EUIPanelTexture, ...> (legacy) → TMap<FName, ...> (atual).
|
|
// Roda no PostLoad de cada FUIStyleRow; depois do primeiro re-save no editor
|
|
// os campos *_DEPRECATED ficam vazios e este código vira no-op.
|
|
if (!Ar.IsLoading())
|
|
{
|
|
return;
|
|
}
|
|
|
|
const UEnum* EnumPtr = StaticEnum<EUIPanelTexture>();
|
|
if (EnumPtr == nullptr)
|
|
{
|
|
return;
|
|
}
|
|
|
|
auto MigrateOne = [EnumPtr](
|
|
TMap<EUIPanelTexture, FSlateBrush>& Legacy,
|
|
TMap<FName, FSlateBrush>& ByName)
|
|
{
|
|
if (Legacy.IsEmpty())
|
|
{
|
|
return;
|
|
}
|
|
for (const TPair<EUIPanelTexture, FSlateBrush>& Pair : Legacy)
|
|
{
|
|
if (Pair.Key == EUIPanelTexture::None)
|
|
{
|
|
continue;
|
|
}
|
|
const FName KeyName(*EnumPtr->GetAuthoredNameStringByValue(static_cast<int64>(Pair.Key)));
|
|
if (!ByName.Contains(KeyName))
|
|
{
|
|
ByName.Add(KeyName, Pair.Value);
|
|
}
|
|
}
|
|
Legacy.Reset();
|
|
};
|
|
|
|
MigrateOne(PanelBackground_DEPRECATED, PanelBackgroundByName);
|
|
MigrateOne(PanelOutline_DEPRECATED, PanelOutlineByName);
|
|
MigrateOne(PanelOutlineEffect_DEPRECATED, PanelOutlineEffectByName);
|
|
}
|