---
title: Timeline
product: Advanced Framework Pro
version: 1.0
engine: Unreal Engine 5.8
updated: 2026-10-05
canonical: https://docs.human-codeable.com/plugins/timeline.html
---

System

# Timeline

#### What it gives you

—

#### Requires

None

#### Required by

None

6 assets45 API members

Note

Narrative documentation for this plugin is still being written. The API reference below is complete.

## API reference

Every blueprint asset in this plugin. Expand an asset to see its members.

### /

**WBP_Example_UI_Display_Timeline**0 members

extends `WBP_Base`

No editor-visible members; this asset configures defaults only.

**WBP_Timeline_Horizontal**3 members

extends `WBP_Timeline`

| Kind | Name | Signature | Description |
|---|---|---|---|
| fn | `PostAddDesign`Style | `()` | Trims the padding off the two ends of the group so it sits flush with its neighbours: the top of the first item and the bottom of the last in a column, the outer sides in a row, and a matching negative padding on the box itself for a wrap box. Run it after a batch of additions. |
| fn | `getProgressbar`Get Elements | `(out Progressbar: AFProgressbar)` | — |
| fn | `getPanelWidget`Style | `(out PanelWidget: PanelWidget)` | Returns the panel the items are placed in, which is what decides whether the group lays out as a column, a row or a wrapped grid. Empty here; each variant overrides it with the box from its own designer tree. |

**WBP_Timeline_Vertical**2 members

extends `WBP_Timeline`

| Kind | Name | Signature | Description |
|---|---|---|---|
| fn | `getProgressbar`Get Elements | `(out Progressbar: AFProgressbar)` | — |
| fn | `getPanelWidget`Style | `(out PanelWidget: PanelWidget)` | Returns the panel the items are placed in, which is what decides whether the group lays out as a column, a row or a wrapped grid. Empty here; each variant overrides it with the box from its own designer tree. |

### Helper

**WBP_Button_Timeline_Horizontal**17 members

extends `WBP_Button`

| Kind | Name | Signature | Description |
|---|---|---|---|
| fn | `getBlendableElements_Hover`Get Elements | `(out Blendable: BPI_Widget_Blend[])` | Returns the elements whose blend value follows the hover animation, typically the hover outline. Empty on the base class; each button design overrides it. |
| fn | `getBlendableElements_Custom`Get Elements | `(out Blendable: BPI_Widget_Blend[])` | Returns the elements whose blend value follows the custom state animation. Empty on the base class, and most designs leave it that way. |
| fn | `getBlendableElements_Action`Get Elements | `(out Blendable: BPI_Widget_Blend[])` | Returns the elements whose blend value follows the action animation, typically the background, icon and label that shift as the button is selected. Empty on the base class; each button design overrides it. |
| fn | `getButtonAnimation_Action`Get Animations | `(out ActionAnimation: WidgetAnimation)` | Returns the animation carrying the selected look, run forwards when the button becomes selected and reversed when the selection is cleared. Empty on the base class; each button design overrides it with its own. |
| fn | `getButtonAnimation_Deactivate`Get Animations | `(out DeactivateAnimation: WidgetAnimation)` | Returns the animation run forwards when the button is deactivated and reversed when it is activated again. Empty on the base class; each button design overrides it with its own. |
| fn | `getButtonAnimation_Hover`Get Animations | `(out HoverAnimation: WidgetAnimation)` | Returns the animation run forwards as the cursor enters and reversed as it leaves. Empty on the base class; each button design overrides it with its own. |
| fn | `getButtonAnimation_Custom`Get Animations | `(out CustomStateAnimation: WidgetAnimation)` | Returns the animation run forwards when the custom state is switched on and reversed when it is switched off. Empty on the base class; each button design overrides it with its own. |
| fn | `getButtonAnimation_Click`Get Animations | `(out ClickAnimation: WidgetAnimation)` | Returns the animation run forwards while the button is held down and reversed on release. Empty on the base class; each button design overrides it with its own. |
| fn | `getButtonText`Get Elements | `(out Button Text: AFText)` | Returns the text element the label is written into. Empty on the base class; designs override it, and Update Button Content stops before touching anything else when there is none. |
| fn | `getButtonImage`Get Elements | `(out Button Image: AFImage)` | Returns the image element the icon is written into. Empty on the base class; designs override it, and Update Button Content stops before forwarding content to the content widget when there is none. |
| fn | `getButtonFrame`Get Elements | `(out ButtonFrame: WBP_ButtonFrame)` | Returns the frame widget wrapping this button's content and holding its size box. Empty on the base class; each button design overrides it, and Style Button Frame needs it to apply the width and height overrides. |
| fn | `getSound_Pressed`Sound | `(out Sound: SoundBase)` | Returns the cue played when the button is pressed. Empty on the base class; designs override it, usually with a different cue per preset, and the Sound Press Override wins over it when set. |
| fn | `getSound_Hover`Sound | `(out Sound: SoundBase)` | Returns the cue played when the cursor first enters the button. Empty on the base class; designs override it, and the Sound Hover Override wins over it when set. |
| fn | `getSound_Deactivated`Sound | `(out Sound: SoundBase)` | Returns the cue played when a deactivated button is pressed. Empty on the base class; designs override it, and the Sound Blocked Override wins over it when set. |
| event | `SequenceEvent_Action` | `()` | — |
| event | `SequenceEvent_Custom` | `()` | — |
| event | `SequenceEvent_Hover` | `()` | — |

**WBP_Button_Timeline_Vertical**17 members

extends `WBP_Button`

| Kind | Name | Signature | Description |
|---|---|---|---|
| fn | `getBlendableElements_Custom`Get Elements | `(out Blendable: BPI_Widget_Blend[])` | Returns the elements whose blend value follows the custom state animation. Empty on the base class, and most designs leave it that way. |
| fn | `getButtonAnimation_Action`Get Animations | `(out ActionAnimation: WidgetAnimation)` | Returns the animation carrying the selected look, run forwards when the button becomes selected and reversed when the selection is cleared. Empty on the base class; each button design overrides it with its own. |
| fn | `getButtonAnimation_Hover`Get Animations | `(out HoverAnimation: WidgetAnimation)` | Returns the animation run forwards as the cursor enters and reversed as it leaves. Empty on the base class; each button design overrides it with its own. |
| fn | `getButtonAnimation_Deactivate`Get Animations | `(out DeactivateAnimation: WidgetAnimation)` | Returns the animation run forwards when the button is deactivated and reversed when it is activated again. Empty on the base class; each button design overrides it with its own. |
| fn | `getButtonAnimation_Custom`Get Animations | `(out CustomStateAnimation: WidgetAnimation)` | Returns the animation run forwards when the custom state is switched on and reversed when it is switched off. Empty on the base class; each button design overrides it with its own. |
| fn | `getBlendableElements_Hover`Get Elements | `(out Blendable: BPI_Widget_Blend[])` | Returns the elements whose blend value follows the hover animation, typically the hover outline. Empty on the base class; each button design overrides it. |
| fn | `getBlendableElements_Action`Get Elements | `(out Blendable: BPI_Widget_Blend[])` | Returns the elements whose blend value follows the action animation, typically the background, icon and label that shift as the button is selected. Empty on the base class; each button design overrides it. |
| fn | `getButtonImage`Get Elements | `(out Button Image: AFImage)` | Returns the image element the icon is written into. Empty on the base class; designs override it, and Update Button Content stops before forwarding content to the content widget when there is none. |
| fn | `getButtonText`Get Elements | `(out Button Text: AFText)` | Returns the text element the label is written into. Empty on the base class; designs override it, and Update Button Content stops before touching anything else when there is none. |
| fn | `getSound_Pressed`Sound | `(out Sound: SoundBase)` | Returns the cue played when the button is pressed. Empty on the base class; designs override it, usually with a different cue per preset, and the Sound Press Override wins over it when set. |
| fn | `getSound_Hover`Sound | `(out Sound: SoundBase)` | Returns the cue played when the cursor first enters the button. Empty on the base class; designs override it, and the Sound Hover Override wins over it when set. |
| fn | `getSound_Deactivated`Sound | `(out Sound: SoundBase)` | Returns the cue played when a deactivated button is pressed. Empty on the base class; designs override it, and the Sound Blocked Override wins over it when set. |
| fn | `getButtonFrame`Get Elements | `(out ButtonFrame: WBP_ButtonFrame)` | Returns the frame widget wrapping this button's content and holding its size box. Empty on the base class; each button design overrides it, and Style Button Frame needs it to apply the width and height overrides. |
| event | `SequenceEvent_Action` | `()` | — |
| event | `SequenceEvent_Hover` | `()` | — |
| event | `SequenceEvent_Custom` | `()` | — |
| event | `WidgetElement_UpdateTheme`Style | `(Theme: BP_PDA_Theme, Desktop: bool)` | Called on every element of a widget tree at start-up and again each time a new theme is applied, carrying the theme and the desktop flag. Implement it for anything that reads colours, fonts or metrics; it runs after Initiate, so content already exists by then. |

### Parents

**WBP_Timeline**6 members

extends `WBP_Group_Button`

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Progress`State | `int` | — |
| fn | `getPercentProgress`State | `() → float` | — |
| fn | `getProgressbar`Get Elements | `(out Progressbar: AFProgressbar)` | — |
| event | `UpdateProgress` | `(Progress: int)` | — |
| event | `WidgetElement_ExecuteReplication`Replication | `(ReplicationIdentifier: name, Content: string[])` | Called on the other clients when a replicated value arrives for this element, carrying the identifier and its content strings. Implement it to reflect a change another player made; it is skipped on the client that sent the value. |
| event | `WidgetElement_PostInitiate`Style | `()` | Called on every element once the entire tree has been initiated and themed. Implement it for set-up that needs the finished tree, such as measuring or reading the state of a sibling. |
