Skip to content

6.3 Dispatchers of the Subsystem

BDC_Patrick edited this page Dec 9, 2025 · 5 revisions

Subsystem Global Events

The BDC_DialogBackend_Subsystem acts as the central hub for the entire Dialog System.
Its Event Dispatchers (Delegates) are Global, meaning they fire for every dialog interaction in the game, regardless of who is speaking.
This makes them the perfect place for Game-Loop logic, UI management, and Analytics.

Event Description
OnDialogStartedGlobal Fired when any dialog begins.
OnDialogFinishedGlobal Fired when any dialog ends.
OnDialogUpdatedGlobal Fired every time the dialog advances to a new node (Message, Option, etc.).
OnReceivedEventGlobal Fired when an Event Node is processed. Handles custom game logic.
OnReceivedBeaconGlobal Fired when a Beacon Node is processed. Handles lightweight signaling.
OnMessageLinkClicked Fired when a player clicks a Rich Text <link>.
OnMessageLinkHovered Fired when a player hovers over a Rich Text <link>.
OnMessageLinkUnhovered Fired when a player stops hovering a Rich Text <link>.

Lifecycle Events

OnDialogStartedGlobal & OnDialogFinishedGlobal

These are parameterless events identical to the Manager Component's versions. They exist in the Subsystem for convenience, allowing you to bind logic directly in GameInstance or other Managers without needing a reference to the specific ManagerComponent in the level.

OnDialogUpdatedGlobal

This event fires continuously during a conversation, every time the content changes.

Arguments

Name Type Description
NewDialogData FStruct_DialogInterface Contains the full data of the current node: Speaker Name, Text, Avatar, Audio, Tags, etc.
Use Case: Updating a "Log / History" widget that records every line of dialogue spoken in the game.

Game Logic Events

OnReceivedEventGlobal

This is the global version of the Participant's Event. It is useful for events that affect the World rather than a specific Actor.

Arguments

Name Type Description
EventTag Tag The ID of the event (e.g., World.Weather.Storm).
EventValues Struct Parameter values (Integers, Floats, Bools, etc.).
MassTags Container Collection of flag tags.
Additionals Struct Object/Class references.

Use Cases

  • Weather Control: Changing the time of day or weather (Event.SetWeather + String "Rain").
  • Level Streaming: Loading a new level or sublevel.
  • Quest Updates: Updating a global quest tracker that isn't tied to a specific NPC.

OnReceivedBeaconGlobal

Beacons are lightweight signals usually used for tutorial hints or quick UI triggers. They carry less data than full Events.

Arguments

Name Type Description
BeaconName Name The ID of the beacon (e.g., Tutorial_Jump).
BeaconData Array A list of string data associated with the beacon.

Interactive Text Events

OnMessageLinkClicked, Hovered, Unhovered

These events fire when the player interacts with Rich Text that has the <link> tag applied.
Example Tag: <link name="Potion" id="ItemID_01">Health Potion</>

Arguments

Name Type Description
ObjectName Name The name attribute from the tag. (e.g., "Potion").
Identity Name The id attribute from the tag. (e.g., "ItemID_01").
ClickedOnViewport Vec2 The absolute pixel position of the Mouse when the click/hover occurred.
LinkPositionOnViewport Vec2 The absolute pixel position of the Link's top-left corner on the screen.
Crucial for Tooltips: Use this to spawn a tooltip widget right next to the text.

Use Cases

  • Tooltips: Show an Item Card when hovering over an Item Name in the text.
  • Hyperlinks: Open a Wiki page or Codex entry when clicking a keyword.
  • Map Markers: Ping a location on the minimap when hovering over a location name.

Documentation Index

I. What is the Dialog Backend?
II. Setting up
III. Binding UI
IV. The Subsystem
V. The Components
VI. Dispatchers
VII. Others

Demo available: Demo Page

Clone this wiki locally