Custom dialogue fragments

Dialogue fragments are pieces of data and logic that can added to dialogue entities. These can be used to extend the functionality of the current list of dialogue entities.
An example is the duration fragment which is useful for adding a time limit to the player choice entity.
To create a custom dialogue fragment in C++, create a struct derived from FDialogueFragment. To create a custom dialogue fragment in blueprints, create a class derived from UDialogueFragmentObjectBase.
Add necessary variables and override the following functions.
Initialise(UDialogueComponent*, const UDialogueEntity*): called when the owning entity starts playing. Useful for setting up the fragment's data.
Tick(float, UDialogueComponent*, const UDialogueEntity*): called when the owning entity is being played.
Cleanup(UDialogueComponent*, const UDialogueEntity*): called when the owning entity has stopped playing. Useful for cleaning up fragment's data.
When choosing fragments for a dialogue entity, C++ fragments will show up normally. Blueprint fragments need to be wrapped inside a FUObjectDialogueEntityFragment fragment. This is a proxy fragment used to process a blueprint fragment. Add a FUObjectDialogueEntityFragment to your entity and then select the UObject fragment you want to add.