Custom Dialogue Participant

A dialogue participant provides data on the avatar actor of the participant and other information like participant name, etc. It is possible to add custom participant types in C++ and blueprints.
To create a custom dialogue participant in C++, create a struct derived from FDialogueParticipant. To create a custom dialogue fragment in blueprints, create a class derived from UDialogueParticipantObjectBase.
Add necessary variables and override the following functions.
GetParticipantAvatar(const UDialogue*): used to get the avatar actor of the participant. The primary purpose of the participant struct is to provide the avatar in the world.
GetParticipantDisplayName(): used to get the name of the participant to diaplay on the dialogue widget.
When choosing participants for a dialogue, C++ participants will show up normally. Blueprint participants need to be wrapped inside a FUObjectDialogueParticipant struct. This is a proxy used to process a blueprint participant. Add a FUObjectDialogueParticipant as the participant to your dialogue and then select the UObject participant you want to add.