C++ API, classes, and usage for Universal Floating Widget. Use this when extending or integrating the plugin in native code.

Module and include paths

Add UniversalFloatingWidget to your game module's Build.cs. Access subsystems via GetSubsystem from ULocalPlayer. See the API reference for full class details.

Common includes: Widgets/FloatingPanelWidget.h, Widgets/FloatingPanelTitleBarComponent.h, Widgets/FloatingPanelResizeHandleComponent.h, Subsystem/FloatingWidgetLayoutSubsystem.h, Subsystem/FloatingLayoutSaveGame.h, UI/FloatingLayoutSlotListView.h, UI/FloatingLayoutSlotObject.h, UI/LayoutSlotEntryWidget.h, Settings/UniversalFloatingWidgetSettings.h, Types/FloatingWidgetTypes.h.

UFloatingPanelWidget

Primary runtime widget. Properties: Title, Id, DragArea, ResizeHandleMode, bLocked, CollisionGroup, MinSize, MaxSize. Key functions: RegisterWithLayoutSubsystem, UnregisterFromLayoutSubsystem, SetPosition, GetPosition, SetNormalizedPosition, GetNormalizedPosition, SetSize, GetSize, CancelDrag, GetAnchorZone, SetAnchorZone, RestoreFromLayoutEntry.

UFloatingWidgetLayoutSubsystem

Per-local-player layout coordinator. Get via LocalPlayer->GetSubsystem<UFloatingWidgetLayoutSubsystem>(). Register/unregister panels, save/load layouts by name or slot, reset to designer defaults. Key functions: RegisterPanel, UnregisterPanel, SaveLayout, LoadLayout, GetSavedLayoutNames, DeleteLayout, EndAllActiveDrags, SetLastUsedLayout, SaveLayoutToSlot, LoadLayoutFromSlot, ResetToDesignerDefault, ClearAllSlots.

Slot UI classes

UFloatingLayoutSlotListView — List view for layout slots. Initialize, RefreshSlots, GetLayoutSubsystem, SaveSelectedSlot, SaveSelectedSlotWithDisplayName, LoadSelectedSlot, RenameSelectedSlot, GetSelectedSlotIndex, GetSelectedSlotIndexString.

UFloatingLayoutSlotObject — Data object for a slot entry. Properties: SlotIndex, LayoutName, bHasSavedLayout, DisplayNameText, SavedAt, SecondaryText. Helpers: Create, GetSavedAtString, GetSlotIndexString, GetSlotName.

ULayoutSlotEntryWidget — Entry widget for the slot list. Override OnEntryRefreshed, use GetDisplayNameText, GetSecondaryText.

Settings and save game

UUniversalFloatingWidgetSettings — Project Settings → Plugins → Universal Floating Widget. Static: Get(), GetMutable(), GetResizeHandleSize().

UFloatingLayoutSaveGame — Persistence container when PersistenceMode is SaveGame. Properties: Layouts (TMap), LastUsedLayoutName.

Components

UFloatingPanelTitleBarComponent — Mark the drag area (when Drag Area = Title Bar Component). UFloatingPanelResizeHandleComponent — Mark resize handles with Direction (when Resize Mode = Component). Both expose GetOwningFloatingPanel().

Enums and structs

Enums: EFloatingLayoutPersistenceMode , EFloatingBoundsBehavior , EFloatingSnapBackTrigger , EFloatingPanelDragArea , EFloatingResizeHandleMode, EFloatingResizeHandleMask , EFloatingResizeHandleVisibility , EFloatingResizeHandleType , EFloatingGridSnapMode , EResizeHandleAllowState.

Structs: FResizeHandleConfig, FFloatingPanelLayoutEntry , FFloatingLayout , FFloatingPanelState, FFloatingPanelInteractionState, FPanelCollisionDebugInfo, FPanelSnapDebugInfo, FPanelPresentationUpdate, FPanelContainerMetrics.

Usage example


// Get subsystem from LocalPlayer
UFloatingWidgetLayoutSubsystem* Sub = LocalPlayer->GetSubsystem<UFloatingWidgetLayoutSubsystem>();
Sub->SaveLayout(FName("Default"));
Sub->LoadLayout(FName("Default"));
Sub->ResetToDesignerDefault();
TArray<FName> Names = Sub->GetSavedLayoutNames();
Sub->DeleteLayout(FName("OldLayout"));
Sub->SetLastUsedLayout(FName("Default"));