Add recursive function to modify widgets positions
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
#include "UETools.hpp"
|
#include "UETools.hpp"
|
||||||
#include "Engine_classes.hpp"
|
#include "Engine_classes.hpp"
|
||||||
|
#include "UMG_classes.hpp"
|
||||||
|
|
||||||
SDK::APawn* GetPawnFromWorld(SDK::UWorld* world) {
|
SDK::APawn* GetPawnFromWorld(SDK::UWorld* world) {
|
||||||
if (!world) world = SDK::UWorld::GetWorld();
|
if (!world) world = SDK::UWorld::GetWorld();
|
||||||
@@ -61,3 +62,23 @@ void ReactivateDevConsole(std::shared_ptr<spdlog::logger> logger) {
|
|||||||
}
|
}
|
||||||
}).detach();
|
}).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 UEngine;
|
||||||
class UObject;
|
class UObject;
|
||||||
class UWorld;
|
class UWorld;
|
||||||
|
class UWidget;
|
||||||
class APawn;
|
class APawn;
|
||||||
class UGameplayStatics;
|
class UGameplayStatics;
|
||||||
class UConsole;
|
class UConsole;
|
||||||
@@ -25,4 +26,16 @@ namespace SDK {
|
|||||||
*/
|
*/
|
||||||
SDK::APawn* GetPawnFromWorld(SDK::UWorld* world = nullptr);
|
SDK::APawn* GetPawnFromWorld(SDK::UWorld* world = nullptr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Reactivate the development console.
|
||||||
|
* @param logger spdlog.
|
||||||
|
*/
|
||||||
void ReactivateDevConsole(std::shared_ptr<spdlog::logger> logger);
|
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