From 5d446471700964083836567e02ae3f0687e31c8d Mon Sep 17 00:00:00 2001 From: Mateus Rodrigues Date: Wed, 27 May 2026 19:30:48 -0300 Subject: [PATCH] refactor(ui/panel): TMap -> TMap com PostSerialize migration FUIStylePanel migra de TMap (enum legacy) para TMap. 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) --- Config/DefaultEngine.ini | 9 +++ Content/ZMMO/Data/UI/DT_UI_Styles.uasset | Bin 47465 -> 48916 bytes .../UI_PlayerStatus_Window.uasset | Bin 158399 -> 99989 bytes Content/ZMMO/UI/Shared/UI_Panel_Master.uasset | Bin 30990 -> 32571 bytes .../T_Panel_Outline_Effect_Square_01.uasset | Bin 21568 -> 21567 bytes .../T_Panel_Outline_Effect_Square_02.uasset | Bin 0 -> 19043 bytes Source/ZMMO/Data/UI/UIStyleTokens.cpp | 48 +++++++++++++ Source/ZMMO/Data/UI/UIStyleTokens.h | 49 +++++++++++-- Source/ZMMO/Game/UI/Widgets/UIPanel_Base.cpp | 68 ++++++++++++++++-- Source/ZMMO/Game/UI/Widgets/UIPanel_Base.h | 37 ++++++++-- 10 files changed, 191 insertions(+), 20 deletions(-) create mode 100644 Content/ZMMO/UI/Themes/Default/Panel/Outlines/Effects/T_Panel_Outline_Effect_Square_02.uasset create mode 100644 Source/ZMMO/Data/UI/UIStyleTokens.cpp diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 265a76e..d1553b6 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -86,6 +86,15 @@ GameViewportClientClassName=/Script/CommonUI.CommonGameViewportClient +ActiveClassRedirects=(OldClassName="TP_ThirdPersonCharacter",NewClassName="ZMMOPlayerCharacter") +ActiveClassRedirects=(OldClassName="ZMMOCharacter",NewClassName="ZMMOPlayerCharacter") +[CoreRedirects] +; Migração v1→v2 do FUIStylePanel: TMap (Enum) → TMap. +; Os campos *_DEPRECATED preservam a leitura do asset antigo; PostSerialize copia +; pros novos ByName e após re-save os legacy ficam vazios. Os redirects podem +; ser removidos quando todos os DTs do projeto tiverem sido re-salvos. ++PropertyRedirects=(OldName="/Script/ZMMO.UIStylePanel.PanelBackground",NewName="/Script/ZMMO.UIStylePanel.PanelBackground_DEPRECATED") ++PropertyRedirects=(OldName="/Script/ZMMO.UIStylePanel.PanelOutline",NewName="/Script/ZMMO.UIStylePanel.PanelOutline_DEPRECATED") ++PropertyRedirects=(OldName="/Script/ZMMO.UIStylePanel.PanelOutlineEffect",NewName="/Script/ZMMO.UIStylePanel.PanelOutlineEffect_DEPRECATED") + [/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] bEnablePlugin=True bAllowNetworkConnection=True diff --git a/Content/ZMMO/Data/UI/DT_UI_Styles.uasset b/Content/ZMMO/Data/UI/DT_UI_Styles.uasset index a85ab85ff1deee147588fea910bc8a15ce3fefb4..4db4ab40c16f7f3afb00b2220d5e7468920502ee 100644 GIT binary patch literal 48916 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 literal 47465 zcmeG_33yY*)*~Pwhyo7~7aj#3$l8{+l(s<99f~cKE{L*}G`VdfX%ezn3Zi9|=fb84 zC!Jd6;i-se8l z;r8@rzqGG3@l=_||<_CF?dePk!SWpbIo%P}h<=ba?5T8`W$~ zA)Pwqr*-R;BUvPaQ|i(!ygREW&LCBL!Xn3M#<_T|9VfckL_N`K}Hle zzOf;|oKDG=QEIn2Tp&(zWW|8IdK})5ikes+)?E*+lMTiZ#SWX>YH||O{Gw^MQdnV< z-EJxG?{-Vx>af{!OAIDknUmZtYVR$;o$VU)6LR-4mqFiIw}dE52(fFdRr zlk^)?cEOmFizCV1u9}CbJ1r_p>2jUwcKhbH5&~UOL?ZvV5043?$25dBQMM} z6iSwSyIpb^sr-n3qrT;}K+NKn$mw+zt^NT>S(KR$v%!+#%ymgtquD}M^?J(1+Gm+* zm1LrJ3c0uC52gNh(h*t*q}U=h})~H?TEZA)DtRSl;|Qzdbdtyo zUsZU?-Dx(tO32&8mTZ%Ibh&J$6z z=?9j{0~wWT9xaidmX;r3=nl8DgoOXl%*0rfE7=VW%BFO)#gb&Pml()_SBBPs5f^&7 zTj$KtM$H(=DJ4VuJcq$bCF-C|EhjCarS)u#ZaPLQ>3M7#VKZh$#>^Fif9}C%%s?4N zn^hiT=GuB=8Iu`2*X6K{kVwk`UD_}IoGNAf#$xgbE)kcU9|b6t!-AZVU)WhkE{>(>#`Xbno=SeM@ z190b8;GSEti@Cbvlg5g3UW@BiVSXx zi;TN$(*ZA1CA&j1QpvJW4Wu)*IigaDbZ){OFs)Rx(@9 z9~_O^u_W6+iCoZUH4Kzi*)4{0<|anZI-JbL*aImrzz8YjTG)2!}N4?_ohIzJKI zU>X|`Q=?Rho>y*{$beSKXTjyG)FmVU^XphUUId?`ijYxiD3-_vb;m3Z^M}%px+m=G z&5vETfqxN5F#>EL@ew`WR1oo0CM2Z0Ef$$S-|g%lO_wQEA_)ooZ1RvsF5L1I*p1Lt zmf7L3IaptDc{k`3eR*qvh+HDaF7Aj1^%bb(fRdT5#f;8J?!4rV{_7JG`WP%leI#>n zi3?Sz$?mt#D@2iJwn&Vc>6*QpZmUX-*TISB`rTA+hCO};1=9;<;>o* za#>qnctS!BH3Dih7O5b2q?6 zT?}W{-S`BoY8;S|K-c7)?A|0TWgl~S;6#(l85?s~^g9R+06oL*YXZIWw%E$Zg1Ux&tYEX4 z$m}<38o{u8(?TCJabD{+58s~?Y6ORxeQC`a=!zK@ThQ8cY59@|!g${3`e7S@pBYxW+ePks zXv#$JQyEq-$CvDk?F(&K^uTx;KK|k;7;vVc+~#&UiDOoF8O%OYqAPX8>lxUdwkqDU{;pFQEax7vzPLlK;Kzr zE3z+d)2Gqkiz!52?O$B+b+L>BP6GNmRBujm&~a}FC1W;hcc2XT3f|Y#;rKIk`@-1! z*{l*dTXSmz=)IrKQEIS|`{$=^2i=v60?WsAdA1+SQLe}~n82@)C5>-db|XODrG=8C ze^ItsGSc||Uxz>50AN|sJRK+PU3(1r>TiWmkaS+$rx#44zcttGD57y64Rz+e3d8k4 zQq85LGWTR6BgWCP+^`zIyr>0R&@iwhJ7Q-qWo>0mmihfe+s<==FNox^hU7cH`$T|y z)c(YCPiBF95T7Yf!(MqGh%kuFzTDh#G;o9C(U634Bl5!q-?yO9Y#IgAr6$v6G+4}| z4KB0I3IbrUEotm3p916%iLHyK)6wfeyEt28?s;IOT(*Epk=E_o=|N+e|0472?AZlu zWThywZspAePcfR*Tzg+_m>R3~#^WUH&Q@074}){2xf5G|25wCRrWF;zmSaxip&u}^ zG&HuE$c?+}jb%du*GJj^^!)wbGIDZRW_NbNO_gAm*)mX2pSM>v%myK1jc1~|nJa|` zf+4q9JfI0I-IOg)&9B=KM(lxP8(bx< zm$(j{S}8r?$SmuKDq&vBɢcVyy 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 Xg&j&yTSE$uQ-xo3D8b^zj_iK}2E}H% delta 6416 zcmd^DeNdFg8Q+%=;RNKvy8{9!9#Zc3I5-YX1X45x4v8Yj0R~Vw$jK4D1dcBej>I%6 z2U6q_Vn{L~*fO>?9VDp|Gm|=##2UngVbZk0B$H_|AKIvBlWNk?-MxK}Lr!5DY5wTW zy!-4vzu)uh?z6kk``(@Yo@<}tI=sXele=rzIz09M!vbx~7rV>RdqV%>^XUiV+$~bpSK6K1U zVFObxiChB2EDMLT%T^32T~!=haO>k5pu*jc+Y9cJ~H`4JOjFpi9es8h^}JZ(+lM7TObdR!Nk1RO31)n3v}4D z0Nz*F-$9uN zc>L`6ttH$196~1ZG_pVue>%Rv5Z_LN@m1kA=hI^r5NWpS{!j*$0j+MLE#rA zO4uoJUh2a(XUF4I?G&K0smr3xh5+jh4rEjKa)1(E37Byp*h$sdtCeDMWr$lc>`nZT zvO1T-BX@zl@+ce=Xx-XbL*d`t1xEQ4_W6lYY%~o=#~xnc@-(Phj|GSWSuoKNBpj{go6Bk@(0zV5+b2 zmQfz78ki(W*pm&~q=y5gE8v7QR=k(N4MovADvKKRyWBl4ubwJYCN zU3&AIi5o{hdimL|_eUQHi5WFqJ^7icXBvG{e&P9uTQDkr8cxgi8MMNSV?CYErEVGZ z?sZs%+ODtDm@hVN9$W7eA1FkxZcFV!Su$mUj?*3O>u@q)LP&C{hg}zi;o2?LiDI@5WF>C0ZtLrJ#jiTr_!#EK}+QD_NjWJ0| zX4Z@cmvTi?%SNZs0y1-GgNK%y4P?5bHmQ##NIB^*`g8Kv zuruCW)D zT0s-wNRcN*)Y`)@vfRu|jAKmp1A{Ix0*>VRc+gx<(4X?oU`tIzwubf8OcFugCYNz; z=fh$(a25tMpd^~4@gxJ(pwCWNm``kP5-m^(1igghPWh7_E^5%^3m5rNo9~l(Mr2Uf zT;TZNoCHC>@Aw7K3Eua-X=OH{Pxx|b@Yntbf$-P*s^w@)UA}@OhNvNRmr$~a^^%z+f)37q zM5n>3Vt-KxgTt95KODl~ja^bs4lfn26KrMrGWfXoEl~>VS)Z$~&W%fhFkKAyI9x9h zLZi+F_uVBz`&&2yxv;8C0d1w>U{@sNDhXp5amPKxoD!-RHsEQ0#I#2+Z5?$&kU?Dl z6h4_G`oS?+X&w^CATpKpHZVy9-MIH~<30w+{lth@?O$KJvGtA4$#dPePwz{Ezn9Dj z7G#v}UqE=o=m$rkimjKPgu6$f7pJ288HKaGr!QU94<~jBKDhL9^|dbgUjV$bTWa;# zRGH6%v0_2TCb?3|ZK3C{wX#K0&aaWlEBGX`rb*14x9%z_x1Jh~SN%?q$5`vwsU&Cb ztUlS>@}l6sWoaR~dI=bcePv3f+0Nv`*qIAq`|-X58Qby_HkuR0SiP5v<)}gMb-mPG z%4~9&tbp)6yQ62NF9U;AOp;7snLI3qGv%jidjh@re`f|&6Sm!j-zB{s@=Vn0tyf$# zK;Gaf(lcL{6Iu&d4bt)l8B)z;8Iwdfk;(x-$r^o8jTZ6$4$Mic9+3Pz{NVYg{ZH&%70W)#xVX`IK%B5u9%f!x+XOHGR~bz#wRpw37ASu`Hqi0q2v?0UH79v+DuC z1_ASvtO$1k{ydXW2^N!J2?Vo034kR5JF~zp@c{ucv$8N{0Rc9%88QzJ5Z!yBkSFVm RORkBv{9yeO#j`j-2o!Y_E=B+V delta 112 zcmV-$0FVE_r~$yJ0gxCJs$3=u@~o@ZUI3lRJ4%r4mlvqQu`Hqi0qB#@0UH7Av+DuC z1_AVwtO$1k|2&gX2^N!J2?Vo034kR5JhQ+q@c{ufv$8N{0Rk~GvlucD4iMTb+d5bN SFh+v|tmK25OW?CNKnN6Itt_Yj diff --git a/Content/ZMMO/UI/Themes/Default/Panel/Outlines/Effects/T_Panel_Outline_Effect_Square_02.uasset b/Content/ZMMO/UI/Themes/Default/Panel/Outlines/Effects/T_Panel_Outline_Effect_Square_02.uasset new file mode 100644 index 0000000000000000000000000000000000000000..307019263dcd54996b079d0381482cf14d6a50ca GIT binary patch literal 19043 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 LP|BvpmgD~e=eJxb literal 0 HcmV?d00001 diff --git a/Source/ZMMO/Data/UI/UIStyleTokens.cpp b/Source/ZMMO/Data/UI/UIStyleTokens.cpp new file mode 100644 index 0000000..4f0947b --- /dev/null +++ b/Source/ZMMO/Data/UI/UIStyleTokens.cpp @@ -0,0 +1,48 @@ +#include "UIStyleTokens.h" + +#include "UObject/Class.h" +#include "UObject/UnrealType.h" + +void FUIStylePanel::PostSerialize(const FArchive& Ar) +{ + // Migração v1→v2: TMap (legacy) → TMap (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(); + if (EnumPtr == nullptr) + { + return; + } + + auto MigrateOne = [EnumPtr]( + TMap& Legacy, + TMap& ByName) + { + if (Legacy.IsEmpty()) + { + return; + } + for (const TPair& Pair : Legacy) + { + if (Pair.Key == EUIPanelTexture::None) + { + continue; + } + const FName KeyName(*EnumPtr->GetAuthoredNameStringByValue(static_cast(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); +} diff --git a/Source/ZMMO/Data/UI/UIStyleTokens.h b/Source/ZMMO/Data/UI/UIStyleTokens.h index 07a9835..c048a58 100644 --- a/Source/ZMMO/Data/UI/UIStyleTokens.h +++ b/Source/ZMMO/Data/UI/UIStyleTokens.h @@ -290,23 +290,58 @@ struct ZMMO_API FUIPanelBrushSet }; /** - * Espelha 1:1 o Struct_UI_Style_Panels do Hyper, agora com 3 brushes por - * EUIPanelTexture: fundo, contorno e efeito sobre o contorno. Tudo - * data-driven via brush no DT_UI_Styles. + * Espelha 1:1 o Struct_UI_Style_Panels do Hyper. 3 brushes por categoria + * (FName livre): fundo, contorno e efeito sobre o contorno. Categorias são + * editadas direto no DT_UI_Styles — UUIPanel_Base resolve via dropdown + * dinâmico (meta=GetOptions). + * + * Migração: assets v1 tinham TMap; os campos + * *_DEPRECATED preservam essas keys via PropertyRedirect no DefaultEngine.ini. + * PostSerialize copia legacy→ByName no PostLoad — após re-save no editor, + * o legacy fica vazio e o asset só carrega o ByName. */ USTRUCT(BlueprintType) struct ZMMO_API FUIStylePanel { GENERATED_BODY() - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style|Panel|Texture") - TMap PanelBackground; + // ---- Novo (FName livre) ------------------------------------------- UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style|Panel|Texture") - TMap PanelOutline; + TMap PanelBackgroundByName; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style|Panel|Texture") - TMap PanelOutlineEffect; + TMap PanelOutlineByName; + + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style|Panel|Texture") + TMap PanelOutlineEffectByName; + + // ---- Legacy (carrega assets antigos via CoreRedirect) ------------- + // + // Não aparecem no Details (DeprecatedProperty); persistem só pra leitura + // do asset pré-migração. PostSerialize copia o conteúdo pros campos + // ByName e zera os legacy. + + UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Use PanelBackgroundByName (FName).")) + TMap PanelBackground_DEPRECATED; + + UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Use PanelOutlineByName (FName).")) + TMap PanelOutline_DEPRECATED; + + UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Use PanelOutlineEffectByName (FName).")) + TMap PanelOutlineEffect_DEPRECATED; + + /** Chamado automaticamente após Serialize. Migra dados legacy→ByName. */ + void PostSerialize(const FArchive& Ar); +}; + +template<> +struct TStructOpsTypeTraits : public TStructOpsTypeTraitsBase2 +{ + enum + { + WithPostSerialize = true, + }; }; USTRUCT(BlueprintType) diff --git a/Source/ZMMO/Game/UI/Widgets/UIPanel_Base.cpp b/Source/ZMMO/Game/UI/Widgets/UIPanel_Base.cpp index e840523..80e9bd9 100644 --- a/Source/ZMMO/Game/UI/Widgets/UIPanel_Base.cpp +++ b/Source/ZMMO/Game/UI/Widgets/UIPanel_Base.cpp @@ -62,21 +62,21 @@ void UUIPanel_Base::RefreshUIStyle() return B; }(); - auto ResolveFromTheme = [](EUIPanelTexture Key, - const TMap& Map) -> const FSlateBrush* + auto ResolveFromTheme = [](FName Key, + const TMap& Map) -> const FSlateBrush* { - return (Key == EUIPanelTexture::None) ? nullptr : Map.Find(Key); + return Key.IsNone() ? nullptr : Map.Find(Key); }; const FSlateBrush* BgTex = bUseTheme - ? ResolveFromTheme(BackgroundKey, P.PanelBackground) + ? ResolveFromTheme(BackgroundKey, P.PanelBackgroundByName) : &Panels.PanelBackground; Background->SetBrush(BgTex ? *BgTex : NoDrawBrush); if (Outline) { const FSlateBrush* OlTex = bUseTheme - ? ResolveFromTheme(OutlineKey, P.PanelOutline) + ? ResolveFromTheme(OutlineKey, P.PanelOutlineByName) : &Panels.PanelOutline; Outline->SetBrush(OlTex ? *OlTex : NoDrawBrush); } @@ -84,7 +84,7 @@ void UUIPanel_Base::RefreshUIStyle() if (OutlineEffect) { const FSlateBrush* OeTex = bUseTheme - ? ResolveFromTheme(OutlineEffectKey, P.PanelOutlineEffect) + ? ResolveFromTheme(OutlineEffectKey, P.PanelOutlineEffectByName) : &Panels.PanelOutlineEffect; OutlineEffect->SetBrush(OeTex ? *OeTex : NoDrawBrush); } @@ -136,3 +136,59 @@ void UUIPanel_Base::HandleThemeChanged(FName /*NewThemeId*/) { RefreshUIStyle(); } + +namespace +{ + enum class EPanelBrushSlot : uint8 { Background, Outline, OutlineEffect }; + + TArray CollectPanelOptions(EPanelBrushSlot Slot) + { + TArray Options; + Options.Add(FString()); // entry vazia = "sem brush" (NoDrawType) + + const UDataTable* DT = LoadObject(nullptr, + TEXT("/Game/ZMMO/Data/UI/DT_UI_Styles.DT_UI_Styles")); + if (!DT) + { + return Options; + } + const FUIStyleRow* Row = DT->FindRow( + FName(TEXT("Default")), TEXT("UIPanelGetOptions"), false); + if (!Row) + { + return Options; + } + + const TMap* Map = nullptr; + switch (Slot) + { + case EPanelBrushSlot::Background: Map = &Row->Style.Panel.PanelBackgroundByName; break; + case EPanelBrushSlot::Outline: Map = &Row->Style.Panel.PanelOutlineByName; break; + case EPanelBrushSlot::OutlineEffect: Map = &Row->Style.Panel.PanelOutlineEffectByName; break; + } + if (Map) + { + for (const TPair& Pair : *Map) + { + Options.Add(Pair.Key.ToString()); + } + Options.Sort(); + } + return Options; + } +} + +TArray UUIPanel_Base::GetPanelBackgroundOptions() const +{ + return CollectPanelOptions(EPanelBrushSlot::Background); +} + +TArray UUIPanel_Base::GetPanelOutlineOptions() const +{ + return CollectPanelOptions(EPanelBrushSlot::Outline); +} + +TArray UUIPanel_Base::GetPanelOutlineEffectOptions() const +{ + return CollectPanelOptions(EPanelBrushSlot::OutlineEffect); +} diff --git a/Source/ZMMO/Game/UI/Widgets/UIPanel_Base.h b/Source/ZMMO/Game/UI/Widgets/UIPanel_Base.h index 764218e..9387f19 100644 --- a/Source/ZMMO/Game/UI/Widgets/UIPanel_Base.h +++ b/Source/ZMMO/Game/UI/Widgets/UIPanel_Base.h @@ -30,19 +30,26 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Panel") bool bUseTheme = true; - // ---- Modo TEMA: escolhe a chave do mapa FUIStylePanel pra cada Border. ---- + // ---- Modo TEMA: chave FName do TMap FUIStylePanel pra cada Border. ---- + // + // GetOptions popula dropdown lendo DT_UI_Styles row "Default" — adicione + // uma entry em FUIStylePanel.PanelBackgroundByName no DT e a categoria + // aparece aqui sem recompilar C++. Vazio = sem brush (NoDrawType). UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Panel", - meta = (EditCondition = "bUseTheme", EditConditionHides)) - EUIPanelTexture BackgroundKey = EUIPanelTexture::None; + meta = (EditCondition = "bUseTheme", EditConditionHides, + GetOptions = "GetPanelBackgroundOptions")) + FName BackgroundKey; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Panel", - meta = (EditCondition = "bUseTheme", EditConditionHides)) - EUIPanelTexture OutlineKey = EUIPanelTexture::None; + meta = (EditCondition = "bUseTheme", EditConditionHides, + GetOptions = "GetPanelOutlineOptions")) + FName OutlineKey; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Panel", - meta = (EditCondition = "bUseTheme", EditConditionHides)) - EUIPanelTexture OutlineEffectKey = EUIPanelTexture::None; + meta = (EditCondition = "bUseTheme", EditConditionHides, + GetOptions = "GetPanelOutlineEffectOptions")) + FName OutlineEffectKey; // ---- Modo MANUAL: 3 brushes editáveis direto no Details. ---- @@ -54,6 +61,22 @@ public: UFUNCTION(BlueprintCallable, Category = "UI Style") void RefreshUIStyle(); + /** + * Populadores do dropdown (meta=GetOptions) das chaves de textura. + * Lêem DT_UI_Styles row "Default" e retornam as FName de cada sub-mapa + * do FUIStylePanel. Editar o DT no editor reflete aqui sem recompilar. + * São métodos de instância porque o UE precisa de UFUNCTION reflexável; + * o conteúdo não usa estado da instância (poderia ser estático). + */ + UFUNCTION() + TArray GetPanelBackgroundOptions() const; + + UFUNCTION() + TArray GetPanelOutlineOptions() const; + + UFUNCTION() + TArray GetPanelOutlineEffectOptions() const; + protected: virtual void NativePreConstruct() override; virtual void NativeConstruct() override;