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"));