🧱ODK Base UI
ODK Base UI is a flexible UI framework designed for building reusable and dynamic widget controls. It simplifies logic binding, value syncing, and visibility control by pairing each control with an Executor.
Controls are placed into UI layouts like any other widgets, but their functionality is entirely data-driven via executors.
This keeps consistency thoughout the Otherside platform, allowing for devs to reuse existing designed controls.
🔁 How It Works
Each control can be paired with:
A Value Executor (handles functionality and state)
An optional Visibility Executor (handles when to show/hide the control)
An optional Registered Control Name (for simple runtime access via the UI system)

🎮 Control Executors
The Executor is a Blueprint class that drives the behaviour of a control. Every executor supports the following functions:
Initialise
Called on setup. Used for binding events or caching references, much like the Begin Play event.
GetCurrentValue
Returns the control’s current state (e.g. current volume or mouse sensitivity).
HandleValueUpdate
Called when the user changes the control through the UI. Developers should implement functionality here (e.g. setting the mouse sensitivity to the current slider value).
This system makes each control self-contained and keeps your UI logic clean and reusable.
👁️ Visibility Executors (Optional)
A Visibility Executor is a separate class that defines when a control should be visible.
It implements:
GetVisibility
→ Returns a visibility state (Visible
,Collapsed
, etc.)
Use cases include:
Hiding the player roles dropdown unless the user is an admin
Only showing Gamepad settings when a controller is connected.
🏷️ Registered Control Name
Every control has an optional RegisteredControlName
.
This name:
Registers the control with the
BP_WorldService_ODKUI
Allows it to be found or replaced dynamically at runtime (See function library below)
🧰 Runtime Editing
The Blueprint Function Library BPFL_ODKBaseUI
gives you helpers for modifying UI areas at runtime.
Notable functions:
ODKBaseUI_GetRegisteredAreaByName
Find a control or UI area by searching for the Registered Name
ODKBaseUI_ReplaceWidget
Replace a widget or control at runtime
ODKBaseUI_ReplaceWidgetByClass
Find a widget that matches the supplied class and replace it with a newly contructed widget.
ODKBaseUI_AddControlToRegisteredArea
Finds an area by name and adds a newly constructed widget to it.
ODKBaseUI_AddTabToNamedTabList
Add tabs dynamically to a tab group
This system is especially useful in:
Hot-swapping controls during a session
Extending shared base widgets without making duplicates
Examples
🧪 Example: Roles selector
Control Type: Dropdown
Executor:
BP_SettingsExecutor_PlayerRoles
GetCurrentValue
→ returns a string array of available rolesHandleValueUpdate
→ sets the players new role
Visibility Executor:
BP_ODK_UIControlVisibility_UserHasSpecificRole
Last updated