Add recursive function to modify widgets positions
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "UETools.hpp"
|
||||
#include "Engine_classes.hpp"
|
||||
#include "UMG_classes.hpp"
|
||||
|
||||
SDK::APawn* GetPawnFromWorld(SDK::UWorld* world) {
|
||||
if (!world) world = SDK::UWorld::GetWorld();
|
||||
@@ -60,4 +61,24 @@ void ReactivateDevConsole(std::shared_ptr<spdlog::logger> logger) {
|
||||
return;
|
||||
}
|
||||
}).detach();
|
||||
}
|
||||
|
||||
void ApplyOffsetsRecursive(SDK::UWidget* widget, float left, float right) {
|
||||
if (widget && widget->Slot && widget->Slot->IsA(SDK::UCanvasPanelSlot::StaticClass())) {
|
||||
auto* slot = (SDK::UCanvasPanelSlot*)widget->Slot;
|
||||
if (!slot) return;
|
||||
SDK::FMargin offsets = slot->GetOffsets();
|
||||
|
||||
if (offsets.Left != left || offsets.Right != right) {
|
||||
offsets.Left = left;
|
||||
offsets.Right = right;
|
||||
slot->SetOffsets(offsets);
|
||||
}
|
||||
}
|
||||
// Go down if UPanelWidget
|
||||
if (widget && widget->IsA(SDK::UPanelWidget::StaticClass())) {
|
||||
if (auto* panel = (SDK::UPanelWidget*)widget)
|
||||
for (int i = 0; i < panel->GetChildrenCount(); ++i)
|
||||
ApplyOffsetsRecursive(panel->GetChildAt(i), left, right);
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ namespace SDK {
|
||||
class UEngine;
|
||||
class UObject;
|
||||
class UWorld;
|
||||
class UWidget;
|
||||
class APawn;
|
||||
class UGameplayStatics;
|
||||
class UConsole;
|
||||
@@ -25,4 +26,16 @@ namespace SDK {
|
||||
*/
|
||||
SDK::APawn* GetPawnFromWorld(SDK::UWorld* world = nullptr);
|
||||
|
||||
void ReactivateDevConsole(std::shared_ptr<spdlog::logger> logger);
|
||||
/**
|
||||
* @brief Reactivate the development console.
|
||||
* @param logger spdlog.
|
||||
*/
|
||||
void ReactivateDevConsole(std::shared_ptr<spdlog::logger> logger);
|
||||
|
||||
/**
|
||||
* @brief Apply offsets recursively to UVCanvasPanelSlot.
|
||||
* @param widget type of UUserWidget* (pointer).
|
||||
* @param left offset.
|
||||
* @param right offset.
|
||||
*/
|
||||
void ApplyOffsetsRecursive(SDK::UWidget* widget, float left, float right = 0);
|
||||
|
||||
Reference in New Issue
Block a user