Detailed usage

Main subsystem: ADS Menu Subsystem

ADS Menu Subsystem is created automatically with the Game Instance. It creates and keeps the active menu logic. These Blueprint nodes map directly to their C++ signatures.

FunctionInput pinsOutput pinsUse
GetMenuSystemWorld Context Object: an object with a world.Return Value: ADS Menu Subsystem reference, or None when the Game Instance is unavailable.Gets the subsystem from a Blueprint.
Is InitializedTarget: subsystem reference.Return Value: Boolean; true after menu logic is created.Check it before using logic very early during startup.
Get Menu LogicTarget: subsystem reference.Return Value: ADS Menu Logic Base reference, or None.Gets the instance owned by the subsystem.
Get Menu Logic From WorldWorld Context Object: an object with a world.Return Value: logic reference, or None.Shortcut for getting the subsystem then its logic.
Get Menu Logic (Typed)Target: subsystem; Desired Class: expected logic class.Return Value: typed reference if it matches, otherwise None.Use when extended logic needs its specific members.
Create Widget BPTarget: subsystem; Widget Class: Widget Blueprint class.Return Value: created widget, or None when the class, world, or first local Player Controller is invalid.Creates but does not add a widget to the viewport.

Blueprint logic: BP_ADS_MenuSystem

The supplied asset is named BP_ADS_MenuSystem. It is the main Blueprint logic, built on the C++ class ADS_MenuLogicBase. The main subsystem instantiates this class and uses it as the active menu logic.

You can extend or modify its features: this logic was created in Blueprint specifically to let you do so. In that case, it is strongly recommended that you duplicate this asset before making any changes, as a safety measure.

Functions

The functions below form the API for opening and closing UI and menus. Execution pins are intentionally not listed.

FunctionDescription
ShowUI

Shows the supplied UI at the requested display order.

Inputs

PinDescription
UIUI to show.
ZOrderUI display order in the viewport.
Hide Others UIWhether other UI should be hidden when this UI is shown.
HideUI

Hides the supplied UI.

Inputs

PinDescription
UIUI to hide.
Remove from ParentWhether the UI should be removed from its parent.
Reshow UIWhether previously hidden UI should be shown again.
ShowMenu

Shows the supplied menu and prepares its interaction.

Inputs

PinDescription
MenuMenu to show.
Set FocusWhether focus should be assigned to the menu.
Z OrderMenu display order in the viewport.
Hide UIWhether UI should be hidden when the menu opens.
Pause GameWhether the game should be paused.
HideMenu

Hides the supplied menu and restores the requested elements.

Inputs

PinDescription
MenuMenu to hide.
Remove from ParentWhether the menu should be removed from its parent.
Reshow UIsWhether previously hidden UI should be shown again.
Pause GameWhether the game should remain paused or resume.

Event Dispatchers

Event DispatcherDescription
On Game Paused

Fires when the pause state changes.

PinDescription
bPausedtrue when the game is paused; false when it resumes.

Player subsystem: ADS Player Subsystem

ADS Player Subsystem belongs to the local player and detects the last input device, including while the game is paused.

Function / Event DispatcherInput pinsOutput pinsUse
Is Last Input GamepadTarget: ADS Player Subsystem reference.Return Value: Boolean; true when the last input is a gamepad.Selects keyboard/mouse or gamepad presentation.
Get Last Input TypeTarget: player-subsystem reference.Return Value: EADS_InputDeviceType (Unknown, KeyboardMouse, or Gamepad).Use when all three states must be distinguished.
On Last Input Type ChangedWhen binding: event to call.Event pin: bIsGamepad; true for gamepad and false for keyboard/mouse.Bind widgets to refresh input prompts immediately.

Actor Component: AC_MenuSystemConfig

Add AC_MenuSystemConfig to the local player's character or Player Controller Blueprint. It connects that player to the system input contexts.

SettingUse
MenuContextMappingS_Context used while the player interacts with a menu.
TravelContextMappingS_Context used during gameplay.
UI_NotificationsReference to the notification widget.
NotificationLinesMax / NotificationDurationMaximum lines and display duration.
DT_DynamicIconsData Table used for dynamic icons.

Use GetMenuSystem to retrieve logic, ShowUI to show a UI, and the mapping-context functions to switch input contexts.

UI

A UI is a Widget Blueprint used to display information or a non-interactive interface. The plugin provides UI_Parent as its base. Keep this asset intact and always create a child in your project content.

Create a UI

Create a Widget Blueprint child of UI_Parent in your project content.

Functions

Your UI child inherits functions from UI_Parent. Override the following functions when you need logic specific to the UI appearing or disappearing. In the overridden function graph, right-click the entry node and choose Add Call to Parent Function. Calling the parent is strongly recommended to keep the plugin behavior.

FunctionDescription
Show (override)

Shows the UI. This function is called by the system logic.

Inputs

PinDescription
ZOrderUI display order in the viewport.
Hide (override)

Hides the UI. This function is called by the system logic.

A menu is an interactive Widget Blueprint based on UI_Menu_Parent. This class provides the menu base and manages button groups and hover state. Create menus in your project content; do not modify the supplied asset.

Create a menu

Create a Widget Blueprint child of UI_Menu_Parent in your project content.

Functions

Your menu child inherits functions from UI_Menu_Parent. Override Show and Hide when the menu needs additional opening or closing logic. In the overridden function graph, right-click the entry node and choose Add Call to Parent Function. Calling it is strongly recommended to preserve the menu’s base behavior.

FunctionDescription
Show (override)

Shows the menu.

Inputs

PinDescription
ZOrderMenu display order in the viewport.
Hide (override)

Hides the menu.

FindButtonsFinds buttons present in the menu to prepare their management.
AddButton

Adds a button to a group.

Inputs

PinDescription
ButtonButton to add.
GroupOfButtonName of the group that receives the button.
RemoveButtonsOfGroup

Removes buttons from a group.

Inputs

PinDescription
GroupNameName of the group to clear.
RemoveButton

Removes one button from the menu management.

Inputs

PinDescription
ButtonButton to remove.
GetCurrentGroup

Gets the current group.

Outputs

PinDescription
Current GroupCurrent group name.
SetCurrentGroup

Sets the group used by the menu.

Inputs

PinDescription
NewGroupName of the new current group.
IsGroupValid

Checks whether a group can be used.

Inputs

PinDescription
GroupNameGroup name to check.

Outputs

PinDescription
Return Valuetrue if the group is valid.
GetAllButtons

Gets every button managed by the menu.

Outputs

PinDescription
ButtonsList of every button.
GetButtonsOfGroup

Gets buttons in one group.

Inputs

PinDescription
GroupNameRequested group name.

Outputs

PinDescription
ButtonsList of buttons in the group.
GetButtonAtIndex

Gets a button at a given index.

Inputs

PinDescription
IndexOfButtonIndex of the button to retrieve.

Outputs

PinDescription
ButtonButton at that index.
HoverByIndex

Moves hover to a button by index.

Inputs

PinDescription
IndexOfButtonIndex of the button to hover.
HoverByIncrement

Moves hover by an increment.

Inputs

PinDescription
IncrementValueMovement value in the current group.
GetHoveredButton

Gets the currently hovered button.

Outputs

PinDescription
ButtonCurrently hovered button.
bErrorIndicates that no valid button was found.
ClampIndex

Constrains an index to a value usable by the current group.

Inputs

PinDescription
IndexIndex to constrain.

Outputs

PinDescription
Return ValueUsable index.

Buttons

A menu’s buttons are based on BTN_Parent. This class provides the common foundation for the system’s buttons. Create child widgets in your project content to extend their appearance and functionality.

Provided classes and structures

ItemRole
BTN_ParentProvided base class for buttons managed by a menu. Project children can extend its appearance and functionality.
BPI_MenuButtonBlueprint interface used for communication between a menu and its buttons.
BTN_Text_DemoText-button example provided in the demo content.
BTN_Section_DemoSection-button example: it links the button to a Widget Switcher page and automatically activates that page.
S_ButtonInfosStructure associating a Button with its Index.
S_ButtonGroupNavigation structure containing Buttons and CurrentIndex.

Assets suffixed _Demo are examples. They are provided as references and are not plugin classes to modify.

Create a button

  1. Create a Widget Blueprint child of BTN_Parent in your project content.
  2. Build its appearance in the Designer: text, image, border, animation, or any required widget.
  3. Place the button in the Designer of a UI_Menu_Parent child menu.

Parameters exposed by the button

These parameters are exposed to the Widget Blueprint that contains the button. Set them from this container widget, not while creating the button child class.

ParameterUse
GroupOfButtonName of the group to which the button belongs.
IndexOfButtonButton index in that group.
ActionNameName of the action associated with the button.

Functions

Your button child inherits BTN_Parent behavior. When overriding a function supplied by this parent, right-click the function entry node and choose Add Call to Parent Function. Keeping that call is strongly recommended to preserve the parent logic.

Function / interfaceDescription
Hover (override)Applies the button hover state.
UnHover (override)Removes the button hover state.
Action (override)Extension point for behavior triggered by the button.
AddMenuButton (BPI_MenuButton interface)

Receives the owner menu when the button is registered.

Inputs

PinDescription
MenuOwnerReference to the owner menu.
ExecuteButtonAction (BPI_MenuButton interface)

Triggers the action associated with the button.

Inputs

PinDescription
ActionNameName of the action to execute.

Dynamic Icons

Dynamic Icons display the visual corresponding to the last input-device type used for the same action. For example, one prompt can show a keyboard key, Xbox button, PlayStation button, or Switch button.

Provided elements

ItemRole
UI_DynamicIconWidget to place in a UI or menu. It selects and displays the variant for the current device.
DT_ControllersIconsData Table associating each icon key with its device-specific variants.
S_ControllersIconsData Table row structure. It contains KeyboardMouse, XBox, PlayStation, and Switch variants.
S_ControllerIconA variant structure. It can use a Texture, or a Widget when bUseWidget is enabled.
E_ControllerTypesEnumeration of supported device types.
BPI_DynamicIconInterface used between a menu and its Dynamic Icons.
UI_Icon_DefaultIcon widget provided as a visual foundation.

Configure the icon data

  1. Duplicate DT_ControllersIcons into your project content if you need to change or add to the provided icons.
  2. In each row, fill in the required variants: KeyboardMouse, XBox, PlayStation, and Switch.
  3. For each variant, use a Texture, or enable bUseWidget and provide a Widget.
  4. In BP_ADS_MenuSystem, assign this Data Table to DT_DynamicIcons.

Each row name is its icon key. Keep it stable: widgets use it to find their variants.

Use a Dynamic Icon in a UI or menu

  1. Add UI_DynamicIcon to the Designer of the relevant UI or menu.
  2. In its Details panel, set RowName to the exact name of a DT_DynamicIcons row.
  3. Adjust its layout like any other UMG widget.

Once configured, the widget displays the current device variant and updates when the last input-device type changes.

Functions

The following functions are part of the UI_DynamicIcon provided logic. For ordinary use, configuring DT_DynamicIcons and RowName is sufficient; these functions are mainly useful for custom behavior.

Function / interfaceDescription
InitializeIconReads the row identified by RowName and prepares the icon display.
UpdateIconRefreshes the displayed icon for the current device.
BindUpdateIconManages subscription and unsubscription for device-change updates.
AddIcon (BPI_DynamicIcon interface)Lets the menu reference a Dynamic Icon.

Notifications

The notification system displays temporary on-screen messages. BP_ADS_MenuSystem provides the logic, while widgets in the Notification folder provide the rendering.

Provided elements

ItemRole
UI_NotificationsWidget that receives and organizes displayed notification lines.
UI_NotificationLineParentShared parent class for notification lines.
UI_NotificationLineTextLine for a text-only notification.
UI_NotificationLineTextIconLine for a notification containing text and an icon.
UI_NotificationLineTextTitleLine for a notification containing a title and text.
BPI_NotificationsInterface used between the notification manager and displayed lines.
S_UserWidgetArrayStructure used by notification logic to group widget references.

Configure notifications

  1. In BP_ADS_MenuSystem, make sure UI_Notifications references the notification widget to use.
  2. Use the provided line widgets as-is, or create child widgets in your project content to adapt their appearance.
  3. Set NotificationLinesMax to define the maximum number of lines displayed at once.
  4. Set NotificationDuration to define the default display duration.

Functions

Call these functions on the BP_ADS_MenuSystem instance to display a notification. Execution pins are not listed.

FunctionDescription
ShowNotificationText

Displays a text-only notification.

Inputs

PinDescription
TextText to display.
DurationHow long this notification is displayed.
PriorityPriority used to display the notification.
ShowNotificationTextIcon

Displays a notification containing text and an icon.

Inputs

PinDescription
TextText to display.
IconTextureIcon texture to display.
DurationHow long this notification is displayed.
PriorityPriority used to display the notification.
ShowNotificationTextTitle

Displays a notification containing a title and text.

Inputs

PinDescription
TitleTitle to display.
TextText to display.
DurationHow long this notification is displayed.
PriorityPriority used to display the notification.